---
title: "List ABF deals"
url: "https://console.9fin.com/apis/abf-service/versions/a79a8be2-dd41-4541-904d-592dc9ccf46e/operations/list_abf_deals_v0_abf_deals_get"
---

> Full API specification: https://console.9fin.com/apis/abf-service/versions/a79a8be2-dd41-4541-904d-592dc9ccf46e.md

# List ABF deals

`GET` `/v0/abf/deals`

Operation ID: `list_abf_deals_v0_abf_deals_get`

List ABF deals. Each deal appears once, most recently priced first by default. Deals are never removed, so a deal absent from a later response has not been deleted. **Paging.** Follow `next_cursor` rather than raising `limit`: pass it back as `cursor` with every other parameter unchanged, and stop when it is `null`. A single response is only a prefix of the full result, so deals past `limit` are unreachable without the cursor. **Syncing.** Pass your *stored* watermark as `since` and page to the end with `next_cursor`. Take the replacement from `/v0/abf/feed-summary`, read before you start paging, and store it only once you have reached the last page. Never advance to an `updated_at` from this response.

## Query parameters

- `since` (optional) - Only include results changed at or after this timestamp. A value with no offset is read as UTC. The bound is inclusive, so passing a watermark back re-includes the result it came from.
- `until` (optional) - Upper bound for the `since` window, inclusive. Ignored unless `since` is also supplied, and must not be earlier than it.
- `collateral_types__contains` (optional) - Only include deals where any collateral type name contains this value (case-insensitive).
- `collateral_jurisdictions__contains` (optional) - Only include deals where any collateral jurisdiction name contains this value (case-insensitive).
- `sellers__contains` (optional) - Only include deals where any seller name contains this value (case-insensitive).
- `originators__contains` (optional) - Only include deals where any originator name contains this value (case-insensitive).
- `servicers__contains` (optional) - Only include deals where any servicer name contains this value (case-insensitive).
- `arrangers__contains` (optional) - Only include deals where any arranger name contains this value (case-insensitive).
- `co_arrangers__contains` (optional) - Only include deals where any co-arranger name contains this value (case-insensitive).
- `lead_managers__contains` (optional) - Only include deals where any lead manager name contains this value (case-insensitive).
- `sponsor__contains` (optional) - Only include deals whose sponsor name contains this value (case-insensitive).
- `sponsor__isnull` (optional) - Only include deals that have (`false`) or lack (`true`) a sponsor.
- `sort_by` (string, optional) - Sort order, as `{field}__{asc|desc}`. One field only. Sortable fields: `deal_size`, `pricing_date`, `deal_name`. Tiebroken on `deal_code` in the same direction, so paging is stable.
- `limit` (optional) - Maximum deals to return. Use `next_cursor` to reach the rest rather than raising this.
- `cursor` (optional) - Opaque keyset-pagination cursor from a prior page.
- `deal_size__eq` (optional) - Filter deal_size where the value is equal to the given value.
- `deal_size__neq` (optional) - Filter deal_size where the value is not equal to the given value.
- `deal_size__gt` (optional) - Filter deal_size where the value is greater than the given value.
- `deal_size__gte` (optional) - Filter deal_size where the value is greater or equal to the given value.
- `deal_size__lt` (optional) - Filter deal_size where the value is less than the given value.
- `deal_size__lte` (optional) - Filter deal_size where the value is less or equal to the given value.
- `deal_size__in` (optional) - Comma-separated deal sizes to include. At most 50 values.
- `pool_size__eq` (optional) - Filter pool_size where the value is equal to the given value.
- `pool_size__neq` (optional) - Only include deals whose pool size differs from this value. Deals with no pool size are included, since a missing value differs from any value — use `pool_size__isnull` to partition on presence.
- `pool_size__gt` (optional) - Filter pool_size where the value is greater than the given value.
- `pool_size__gte` (optional) - Filter pool_size where the value is greater or equal to the given value.
- `pool_size__lt` (optional) - Filter pool_size where the value is less than the given value.
- `pool_size__lte` (optional) - Filter pool_size where the value is less or equal to the given value.
- `pool_size__in` (optional) - Comma-separated pool sizes to include. At most 50 values.
- `pool_size__isnull` (optional) - Filter pool_size to rows where the value is NULL (true) or is not NULL (false).
- `pricing_date__eq` (optional) - Filter pricing_date where the value is equal to the given value.
- `pricing_date__neq` (optional) - Filter pricing_date where the value is not equal to the given value.
- `pricing_date__gt` (optional) - Filter pricing_date where the value is greater than the given value.
- `pricing_date__gte` (optional) - Filter pricing_date where the value is greater or equal to the given value.
- `pricing_date__lt` (optional) - Filter pricing_date where the value is less than the given value.
- `pricing_date__lte` (optional) - Filter pricing_date where the value is less or equal to the given value.
- `pricing_date__in` (optional) - Comma-separated pricing dates to include. At most 50 values.
- `expected_maturity_date__eq` (optional) - Filter expected_maturity_date where the value is equal to the given value.
- `expected_maturity_date__neq` (optional) - Only include deals whose expected maturity date differs from this value. Deals with no expected maturity date are included, since a missing value differs from any value — use `expected_maturity_date__isnull` to partition on presence.
- `expected_maturity_date__gt` (optional) - Filter expected_maturity_date where the value is greater than the given value.
- `expected_maturity_date__gte` (optional) - Filter expected_maturity_date where the value is greater or equal to the given value.
- `expected_maturity_date__lt` (optional) - Filter expected_maturity_date where the value is less than the given value.
- `expected_maturity_date__lte` (optional) - Filter expected_maturity_date where the value is less or equal to the given value.
- `expected_maturity_date__in` (optional) - Comma-separated expected maturity dates to include. At most 50 values.
- `expected_maturity_date__isnull` (optional) - Filter expected_maturity_date to rows where the value is NULL (true) or is not NULL (false).
- `deal_name__eq` (optional) - Filter deal_name where the value is equal to the given value.
- `deal_name__neq` (optional) - Filter deal_name where the value is not equal to the given value.
- `deal_name__contains` (optional) - Filter deal_name where the value contains the given value.
- `deal_name__in` (optional) - Comma-separated deal names to include. At most 50 values.
- `deal_code__eq` (optional) - Filter deal_code where the value is equal to the given value.
- `deal_code__neq` (optional) - Filter deal_code where the value is not equal to the given value.
- `deal_code__contains` (optional) - Filter deal_code where the value contains the given value.
- `deal_code__in` (optional) - Comma-separated deal codes to include. At most 50 values.
- `deal_type__eq` (optional) - Filter deal_type where the value is equal to the given value.
- `deal_type__neq` (optional) - Filter deal_type where the value is not equal to the given value.
- `deal_type__contains` (optional) - Filter deal_type where the value contains the given value.
- `deal_type__in` (optional) - Comma-separated deal types to include. At most 50 values.
- `currency__eq` (optional) - Filter currency where the value is equal to the given value.
- `currency__neq` (optional) - Filter currency where the value is not equal to the given value.
- `currency__contains` (optional) - Filter currency where the value contains the given value.
- `currency__in` (optional) - Comma-separated currency codes to include. At most 50 values.

## Responses

- `200` - Successful Response
- `400` - Malformed filter, sort or cursor parameter, or an inverted `since`/`until` window.
- `403` - Forbidden (the request did not arrive via the API gateway).
- `422` - Validation Error
- `500` - Unexpected server error.
- `503` - Service unavailable (e.g. database down).

## OpenAPI definition

```yaml
openapi: 3.1.0
info:
  title: 9fin ABF API
  version: 0.1.6
servers:
  - description: Production environment
    url: https://api.9fin.com
paths:
  /v0/abf/deals:
    get:
      description: >-
        List ABF deals.


        Each deal appears once, most recently priced first by default. Deals are

        never removed, so a deal absent from a later response has not been
        deleted.


        **Paging.** Follow `next_cursor` rather than raising `limit`: pass it
        back as

        `cursor` with every other parameter unchanged, and stop when it is
        `null`.

        A single response is only a prefix of the full result, so deals past
        `limit`

        are unreachable without the cursor.


        **Syncing.** Pass your *stored* watermark as `since` and page to the end

        with `next_cursor`. Take the replacement from `/v0/abf/feed-summary`,
        read

        before you start paging, and store it only once you have reached the
        last

        page. Never advance to an `updated_at` from this response.
      operationId: list_abf_deals_v0_abf_deals_get
      parameters:
        - description: Only include results changed at or after this timestamp. A value
            with no offset is read as UTC. The bound is inclusive, so passing a
            watermark back re-includes the result it came from.
          in: query
          name: since
          required: false
          schema:
            anyOf:
              - format: date-time
                type: string
              - type: "null"
            default: null
            description: Only include results changed at or after this timestamp. A value
              with no offset is read as UTC. The bound is inclusive, so passing
              a watermark back re-includes the result it came from.
            examples:
              - 2026-08-21T09:14:02Z
            title: Since
        - description: Upper bound for the `since` window, inclusive. Ignored unless
            `since` is also supplied, and must not be earlier than it.
          in: query
          name: until
          required: false
          schema:
            anyOf:
              - format: date-time
                type: string
              - type: "null"
            default: null
            description: Upper bound for the `since` window, inclusive. Ignored unless
              `since` is also supplied, and must not be earlier than it.
            title: Until
        - description: Only include deals where any collateral type name contains this
            value (case-insensitive).
          in: query
          name: collateral_types__contains
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Only include deals where any collateral type name contains this
              value (case-insensitive).
            title: Collateral Types  Contains
        - description: Only include deals where any collateral jurisdiction name contains
            this value (case-insensitive).
          in: query
          name: collateral_jurisdictions__contains
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Only include deals where any collateral jurisdiction name contains
              this value (case-insensitive).
            title: Collateral Jurisdictions  Contains
        - description: Only include deals where any seller name contains this value
            (case-insensitive).
          in: query
          name: sellers__contains
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Only include deals where any seller name contains this value
              (case-insensitive).
            title: Sellers  Contains
        - description: Only include deals where any originator name contains this value
            (case-insensitive).
          in: query
          name: originators__contains
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Only include deals where any originator name contains this value
              (case-insensitive).
            title: Originators  Contains
        - description: Only include deals where any servicer name contains this value
            (case-insensitive).
          in: query
          name: servicers__contains
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Only include deals where any servicer name contains this value
              (case-insensitive).
            title: Servicers  Contains
        - description: Only include deals where any arranger name contains this value
            (case-insensitive).
          in: query
          name: arrangers__contains
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Only include deals where any arranger name contains this value
              (case-insensitive).
            title: Arrangers  Contains
        - description: Only include deals where any co-arranger name contains this value
            (case-insensitive).
          in: query
          name: co_arrangers__contains
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Only include deals where any co-arranger name contains this value
              (case-insensitive).
            title: Co Arrangers  Contains
        - description: Only include deals where any lead manager name contains this value
            (case-insensitive).
          in: query
          name: lead_managers__contains
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Only include deals where any lead manager name contains this value
              (case-insensitive).
            title: Lead Managers  Contains
        - description: Only include deals whose sponsor name contains this value
            (case-insensitive).
          in: query
          name: sponsor__contains
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Only include deals whose sponsor name contains this value
              (case-insensitive).
            title: Sponsor  Contains
        - description: Only include deals that have (`false`) or lack (`true`) a sponsor.
          in: query
          name: sponsor__isnull
          required: false
          schema:
            anyOf:
              - type: boolean
              - type: "null"
            default: null
            description: Only include deals that have (`false`) or lack (`true`) a sponsor.
            title: Sponsor  Isnull
        - description: "Sort order, as `{field}__{asc|desc}`. One field only. Sortable
            fields: `deal_size`, `pricing_date`, `deal_name`. Tiebroken on
            `deal_code` in the same direction, so paging is stable."
          in: query
          name: sort_by
          required: false
          schema:
            default: pricing_date__desc
            description: "Sort order, as `{field}__{asc|desc}`. One field only. Sortable
              fields: `deal_size`, `pricing_date`, `deal_name`. Tiebroken on
              `deal_code` in the same direction, so paging is stable."
            title: Sort By
            type: string
        - description: Maximum deals to return. Use `next_cursor` to reach the rest rather
            than raising this.
          in: query
          name: limit
          required: false
          schema:
            anyOf:
              - maximum: 200
                minimum: 1
                type: integer
              - type: "null"
            default: 50
            description: Maximum deals to return. Use `next_cursor` to reach the rest rather
              than raising this.
            title: Limit
        - description: Opaque keyset-pagination cursor from a prior page.
          in: query
          name: cursor
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Opaque keyset-pagination cursor from a prior page.
            title: Cursor
        - description: Filter deal_size where the value is equal to the given value.
          in: query
          name: deal_size__eq
          required: false
          schema:
            anyOf:
              - type: number
              - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
                type: string
              - type: "null"
            default: null
            description: Filter deal_size where the value is equal to the given value.
            title: Deal Size  Eq
        - description: Filter deal_size where the value is not equal to the given value.
          in: query
          name: deal_size__neq
          required: false
          schema:
            anyOf:
              - type: number
              - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
                type: string
              - type: "null"
            default: null
            description: Filter deal_size where the value is not equal to the given value.
            title: Deal Size  Neq
        - description: Filter deal_size where the value is greater than the given value.
          in: query
          name: deal_size__gt
          required: false
          schema:
            anyOf:
              - type: number
              - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
                type: string
              - type: "null"
            default: null
            description: Filter deal_size where the value is greater than the given value.
            title: Deal Size  Gt
        - description: Filter deal_size where the value is greater or equal to the given
            value.
          in: query
          name: deal_size__gte
          required: false
          schema:
            anyOf:
              - type: number
              - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
                type: string
              - type: "null"
            default: null
            description: Filter deal_size where the value is greater or equal to the given
              value.
            title: Deal Size  Gte
        - description: Filter deal_size where the value is less than the given value.
          in: query
          name: deal_size__lt
          required: false
          schema:
            anyOf:
              - type: number
              - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
                type: string
              - type: "null"
            default: null
            description: Filter deal_size where the value is less than the given value.
            title: Deal Size  Lt
        - description: Filter deal_size where the value is less or equal to the given value.
          in: query
          name: deal_size__lte
          required: false
          schema:
            anyOf:
              - type: number
              - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
                type: string
              - type: "null"
            default: null
            description: Filter deal_size where the value is less or equal to the given
              value.
            title: Deal Size  Lte
        - description: Comma-separated deal sizes to include. At most 50 values.
          in: query
          name: deal_size__in
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Comma-separated deal sizes to include. At most 50 values.
            title: Deal Size  In
        - description: Filter pool_size where the value is equal to the given value.
          in: query
          name: pool_size__eq
          required: false
          schema:
            anyOf:
              - type: number
              - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
                type: string
              - type: "null"
            default: null
            description: Filter pool_size where the value is equal to the given value.
            title: Pool Size  Eq
        - description: Only include deals whose pool size differs from this value. Deals
            with no pool size are included, since a missing value differs from
            any value — use `pool_size__isnull` to partition on presence.
          in: query
          name: pool_size__neq
          required: false
          schema:
            anyOf:
              - type: number
              - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
                type: string
              - type: "null"
            default: null
            description: Only include deals whose pool size differs from this value. Deals
              with no pool size are included, since a missing value differs from
              any value — use `pool_size__isnull` to partition on presence.
            title: Pool Size  Neq
        - description: Filter pool_size where the value is greater than the given value.
          in: query
          name: pool_size__gt
          required: false
          schema:
            anyOf:
              - type: number
              - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
                type: string
              - type: "null"
            default: null
            description: Filter pool_size where the value is greater than the given value.
            title: Pool Size  Gt
        - description: Filter pool_size where the value is greater or equal to the given
            value.
          in: query
          name: pool_size__gte
          required: false
          schema:
            anyOf:
              - type: number
              - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
                type: string
              - type: "null"
            default: null
            description: Filter pool_size where the value is greater or equal to the given
              value.
            title: Pool Size  Gte
        - description: Filter pool_size where the value is less than the given value.
          in: query
          name: pool_size__lt
          required: false
          schema:
            anyOf:
              - type: number
              - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
                type: string
              - type: "null"
            default: null
            description: Filter pool_size where the value is less than the given value.
            title: Pool Size  Lt
        - description: Filter pool_size where the value is less or equal to the given value.
          in: query
          name: pool_size__lte
          required: false
          schema:
            anyOf:
              - type: number
              - pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
                type: string
              - type: "null"
            default: null
            description: Filter pool_size where the value is less or equal to the given
              value.
            title: Pool Size  Lte
        - description: Comma-separated pool sizes to include. At most 50 values.
          in: query
          name: pool_size__in
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Comma-separated pool sizes to include. At most 50 values.
            title: Pool Size  In
        - description: Filter pool_size to rows where the value is NULL (true) or is not
            NULL (false).
          in: query
          name: pool_size__isnull
          required: false
          schema:
            anyOf:
              - type: boolean
              - type: "null"
            default: null
            description: Filter pool_size to rows where the value is NULL (true) or is not
              NULL (false).
            title: Pool Size  Isnull
        - description: Filter pricing_date where the value is equal to the given value.
          in: query
          name: pricing_date__eq
          required: false
          schema:
            anyOf:
              - format: date
                type: string
              - type: "null"
            default: null
            description: Filter pricing_date where the value is equal to the given value.
            title: Pricing Date  Eq
        - description: Filter pricing_date where the value is not equal to the given value.
          in: query
          name: pricing_date__neq
          required: false
          schema:
            anyOf:
              - format: date
                type: string
              - type: "null"
            default: null
            description: Filter pricing_date where the value is not equal to the given
              value.
            title: Pricing Date  Neq
        - description: Filter pricing_date where the value is greater than the given value.
          in: query
          name: pricing_date__gt
          required: false
          schema:
            anyOf:
              - format: date
                type: string
              - type: "null"
            default: null
            description: Filter pricing_date where the value is greater than the given
              value.
            title: Pricing Date  Gt
        - description: Filter pricing_date where the value is greater or equal to the
            given value.
          in: query
          name: pricing_date__gte
          required: false
          schema:
            anyOf:
              - format: date
                type: string
              - type: "null"
            default: null
            description: Filter pricing_date where the value is greater or equal to the
              given value.
            title: Pricing Date  Gte
        - description: Filter pricing_date where the value is less than the given value.
          in: query
          name: pricing_date__lt
          required: false
          schema:
            anyOf:
              - format: date
                type: string
              - type: "null"
            default: null
            description: Filter pricing_date where the value is less than the given value.
            title: Pricing Date  Lt
        - description: Filter pricing_date where the value is less or equal to the given
            value.
          in: query
          name: pricing_date__lte
          required: false
          schema:
            anyOf:
              - format: date
                type: string
              - type: "null"
            default: null
            description: Filter pricing_date where the value is less or equal to the given
              value.
            title: Pricing Date  Lte
        - description: Comma-separated pricing dates to include. At most 50 values.
          in: query
          name: pricing_date__in
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Comma-separated pricing dates to include. At most 50 values.
            title: Pricing Date  In
        - description: Filter expected_maturity_date where the value is equal to the given
            value.
          in: query
          name: expected_maturity_date__eq
          required: false
          schema:
            anyOf:
              - format: date
                type: string
              - type: "null"
            default: null
            description: Filter expected_maturity_date where the value is equal to the given
              value.
            title: Expected Maturity Date  Eq
        - description: Only include deals whose expected maturity date differs from this
            value. Deals with no expected maturity date are included, since a
            missing value differs from any value — use
            `expected_maturity_date__isnull` to partition on presence.
          in: query
          name: expected_maturity_date__neq
          required: false
          schema:
            anyOf:
              - format: date
                type: string
              - type: "null"
            default: null
            description: Only include deals whose expected maturity date differs from this
              value. Deals with no expected maturity date are included, since a
              missing value differs from any value — use
              `expected_maturity_date__isnull` to partition on presence.
            title: Expected Maturity Date  Neq
        - description: Filter expected_maturity_date where the value is greater than the
            given value.
          in: query
          name: expected_maturity_date__gt
          required: false
          schema:
            anyOf:
              - format: date
                type: string
              - type: "null"
            default: null
            description: Filter expected_maturity_date where the value is greater than the
              given value.
            title: Expected Maturity Date  Gt
        - description: Filter expected_maturity_date where the value is greater or equal
            to the given value.
          in: query
          name: expected_maturity_date__gte
          required: false
          schema:
            anyOf:
              - format: date
                type: string
              - type: "null"
            default: null
            description: Filter expected_maturity_date where the value is greater or equal
              to the given value.
            title: Expected Maturity Date  Gte
        - description: Filter expected_maturity_date where the value is less than the
            given value.
          in: query
          name: expected_maturity_date__lt
          required: false
          schema:
            anyOf:
              - format: date
                type: string
              - type: "null"
            default: null
            description: Filter expected_maturity_date where the value is less than the
              given value.
            title: Expected Maturity Date  Lt
        - description: Filter expected_maturity_date where the value is less or equal to
            the given value.
          in: query
          name: expected_maturity_date__lte
          required: false
          schema:
            anyOf:
              - format: date
                type: string
              - type: "null"
            default: null
            description: Filter expected_maturity_date where the value is less or equal to
              the given value.
            title: Expected Maturity Date  Lte
        - description: Comma-separated expected maturity dates to include. At most 50
            values.
          in: query
          name: expected_maturity_date__in
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Comma-separated expected maturity dates to include. At most 50
              values.
            title: Expected Maturity Date  In
        - description: Filter expected_maturity_date to rows where the value is NULL
            (true) or is not NULL (false).
          in: query
          name: expected_maturity_date__isnull
          required: false
          schema:
            anyOf:
              - type: boolean
              - type: "null"
            default: null
            description: Filter expected_maturity_date to rows where the value is NULL
              (true) or is not NULL (false).
            title: Expected Maturity Date  Isnull
        - description: Filter deal_name where the value is equal to the given value.
          in: query
          name: deal_name__eq
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Filter deal_name where the value is equal to the given value.
            title: Deal Name  Eq
        - description: Filter deal_name where the value is not equal to the given value.
          in: query
          name: deal_name__neq
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Filter deal_name where the value is not equal to the given value.
            title: Deal Name  Neq
        - description: Filter deal_name where the value contains the given value.
          in: query
          name: deal_name__contains
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Filter deal_name where the value contains the given value.
            title: Deal Name  Contains
        - description: Comma-separated deal names to include. At most 50 values.
          in: query
          name: deal_name__in
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Comma-separated deal names to include. At most 50 values.
            title: Deal Name  In
        - description: Filter deal_code where the value is equal to the given value.
          in: query
          name: deal_code__eq
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Filter deal_code where the value is equal to the given value.
            title: Deal Code  Eq
        - description: Filter deal_code where the value is not equal to the given value.
          in: query
          name: deal_code__neq
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Filter deal_code where the value is not equal to the given value.
            title: Deal Code  Neq
        - description: Filter deal_code where the value contains the given value.
          in: query
          name: deal_code__contains
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Filter deal_code where the value contains the given value.
            title: Deal Code  Contains
        - description: Comma-separated deal codes to include. At most 50 values.
          in: query
          name: deal_code__in
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Comma-separated deal codes to include. At most 50 values.
            title: Deal Code  In
        - description: Filter deal_type where the value is equal to the given value.
          in: query
          name: deal_type__eq
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Filter deal_type where the value is equal to the given value.
            title: Deal Type  Eq
        - description: Filter deal_type where the value is not equal to the given value.
          in: query
          name: deal_type__neq
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Filter deal_type where the value is not equal to the given value.
            title: Deal Type  Neq
        - description: Filter deal_type where the value contains the given value.
          in: query
          name: deal_type__contains
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Filter deal_type where the value contains the given value.
            title: Deal Type  Contains
        - description: Comma-separated deal types to include. At most 50 values.
          in: query
          name: deal_type__in
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Comma-separated deal types to include. At most 50 values.
            title: Deal Type  In
        - description: Filter currency where the value is equal to the given value.
          in: query
          name: currency__eq
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Filter currency where the value is equal to the given value.
            title: Currency  Eq
        - description: Filter currency where the value is not equal to the given value.
          in: query
          name: currency__neq
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Filter currency where the value is not equal to the given value.
            title: Currency  Neq
        - description: Filter currency where the value contains the given value.
          in: query
          name: currency__contains
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Filter currency where the value contains the given value.
            title: Currency  Contains
        - description: Comma-separated currency codes to include. At most 50 values.
          in: query
          name: currency__in
          required: false
          schema:
            anyOf:
              - type: string
              - type: "null"
            default: null
            description: Comma-separated currency codes to include. At most 50 values.
            title: Currency  In
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AbfDeals"
          description: Successful Response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Malformed filter, sort or cursor parameter, or an inverted
            `since`/`until` window.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Forbidden (the request did not arrive via the API gateway).
        "422":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
          description: Validation Error
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/InternalServerErrorResponse"
          description: Unexpected server error.
        "503":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Service unavailable (e.g. database down).
      security:
        - HTTPBearer: []
      summary: List ABF deals
      tags:
        - Deals
security:
  - HTTPBearer: []
components:
  schemas:
    AbfDeals:
      description: A page of ABF deals.
      properties:
        items:
          description: Deals matching the request, in the requested `sort_by` order.
          items:
            $ref: "#/components/schemas/AbfDeal"
          title: Items
          type: array
        next_cursor:
          anyOf:
            - type: string
            - type: "null"
          description: Pass as `cursor` to fetch the page after this one, keeping every
            other parameter the same — a cursor is only valid for the filters
            and sort that produced it. `null` means this is the last page.
          title: Next Cursor
      required:
        - items
        - next_cursor
      title: AbfDeals
      type: object
    ErrorResponse:
      description: Standard error body returned when a request cannot be served.
      examples:
        - error_code: forbidden
          message: The request did not arrive via the API gateway.
          trace_id: 202bde256c7d446f9623efdc96286c5d
        - error_code: service_unavailable
          message: Database is not available
          trace_id: c2416d52c6d14c8e831aad792407442c
      properties:
        error_code:
          title: Error Code
          type: string
        message:
          title: Message
          type: string
        trace_id:
          anyOf:
            - type: string
            - type: "null"
          title: Trace Id
      required:
        - error_code
        - message
      title: ErrorResponse
      type: object
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: "#/components/schemas/ValidationError"
          title: Detail
          type: array
      title: HTTPValidationError
      type: object
    InternalServerErrorResponse:
      properties:
        error_code:
          examples:
            - internal_server_error
          title: Error Code
          type: string
        message:
          examples:
            - An unexpected error occurred.
          title: Message
          type: string
        trace_id:
          anyOf:
            - type: string
            - type: "null"
          examples:
            - e7dfd20231374d308f04655eb0538be4
          title: Trace Id
      required:
        - error_code
        - message
        - trace_id
      title: InternalServerErrorResponse
      type: object
    AbfDeal:
      description: An ABF deal, reflecting its most recent version.
      examples:
        - arrangers:
            - Example Securities
          co_arrangers: []
          collateral_jurisdictions:
            - Germany
          collateral_types:
            - Auto loans
          currency: EUR
          deal_code: ABCD1234
          deal_name: Example Auto ABS 2026-1
          deal_size: 500000000
          deal_type: Auto ABS
          entity_nf_id: nf_ent_3f2504e04f8941d39a0c0305e82c3301
          expected_maturity_date: 2031-07-14
          lead_managers:
            - Example Securities
          originators:
            - Example Auto Finance GmbH
          pool_size: 525000000
          pricing_date: 2026-07-14
          sellers:
            - Example Auto Finance GmbH
          servicers:
            - Example Servicing GmbH
          sponsor: Example Bank AG
          updated_at: 2026-08-21T09:14:02.117Z
      properties:
        arrangers:
          description: Arranger names. Empty list when none are recorded — never null.
          items:
            type: string
          title: Arrangers
          type: array
        co_arrangers:
          description: Co-arranger names. Empty list when none are recorded — never null.
          items:
            type: string
          title: Co Arrangers
          type: array
        collateral_jurisdictions:
          description: Jurisdictions of the collateral. Empty list when none are recorded
            — never null.
          items:
            type: string
          title: Collateral Jurisdictions
          type: array
        collateral_types:
          description: Collateral types backing the deal. Empty list when none are
            recorded — never null.
          items:
            type: string
          title: Collateral Types
          type: array
        currency:
          description: ISO currency code of the deal.
          title: Currency
          type: string
        deal_code:
          description: Stable, human-readable deal identifier (e.g. `ABCD1234`). Unique
            and safe to use as your own key for the deal.
          title: Deal Code
          type: string
        deal_name:
          description: Deal name as published by 9fin.
          title: Deal Name
          type: string
        deal_size:
          description: Size of the deal. Amount in full currency units (not millions).
          title: Deal Size
          type: number
        deal_type:
          description: ABF deal type, e.g. `Auto ABS`, `RMBS`.
          title: Deal Type
          type: string
        entity_nf_id:
          anyOf:
            - type: string
            - type: "null"
          description: Permanent opaque organisation id for the deal's issuer entity
            (`nf_ent_<hex>`). Null when the deal has no linked entity or the id
            has not been synced yet.
          title: Entity Nf Id
        expected_maturity_date:
          anyOf:
            - format: date
              type: string
            - type: "null"
          description: Expected repayment date. Null when no date exists.
          title: Expected Maturity Date
        lead_managers:
          description: Lead manager names. Empty list when none are recorded — never null.
          items:
            type: string
          title: Lead Managers
          type: array
        originators:
          description: Originator names. Empty list when none are recorded — never null.
          items:
            type: string
          title: Originators
          type: array
        pool_size:
          anyOf:
            - type: number
            - type: "null"
          description: Size of the collateral pool. Amount in full currency units (not
            millions). Null when no pool size exists for the deal.
          title: Pool Size
        pricing_date:
          description: Date the deal priced.
          format: date
          title: Pricing Date
          type: string
        sellers:
          description: Seller names. Empty list when none are recorded — never null.
          items:
            type: string
          title: Sellers
          type: array
        servicers:
          description: Servicer names. Empty list when none are recorded — never null.
          items:
            type: string
          title: Servicers
          type: array
        sponsor:
          anyOf:
            - type: string
            - type: "null"
          description: Deal sponsor name. Null when the deal has no sponsor.
          title: Sponsor
        updated_at:
          description: >-
            When this deal was last edited, including anything nested in it such
            as its tranches.


            Not a sync cursor — not even the maximum across every page. Take the
            watermark you pass to `since` from `/v0/abf/feed-summary`.
          format: date-time
          title: Updated At
          type: string
      required:
        - deal_code
        - entity_nf_id
        - deal_name
        - deal_type
        - currency
        - deal_size
        - pricing_date
        - updated_at
      title: AbfDeal
      type: object
    ValidationError:
      properties:
        ctx:
          title: Context
          type: object
        input:
          title: Input
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          title: Location
          type: array
        msg:
          title: Message
          type: string
        type:
          title: Error Type
          type: string
      required:
        - loc
        - msg
        - type
      title: ValidationError
      type: object
  securitySchemes:
    HTTPBearer:
      bearerFormat: JWT
      scheme: bearer
      type: http
```
