> For the complete documentation index, see [llms.txt](https://developers.bloomcredit.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.bloomcredit.io/enablement-services/enablement_gql_ref.md).

# Enablement Services GraphQL API Reference

## Introduction <a href="#introduction" id="introduction"></a>

Welcome to the Bloom Enablement Services GraphQL API Reference.

Authorization is required to access the API. Some queries require organization level access, while others require user level access (after a user has been created). See the links below for more details.

In these docs, there are a lot of links that allow you to enumerate through the Enablement Services GraphQL API schema. If you aren't familiar with a type, click on it to see its fields and descriptions. Light mode (upper right corner of this page) may make links more evident.

### API Response Codes & Error Formats <a href="#api-response-codes--error-formats" id="api-response-codes--error-formats"></a>

**Standard GraphQL Responses**

* **Success and most errors:** All valid GraphQL requests return HTTP status code **200**. If an error occurs, the response includes an `errors` array and a `data` field (which may be `null`).

  <pre class="language-json" data-title="JSON"><code class="lang-json">{
    "errors": [
      {
        "message": "user is closed",
        "path": ["openRentTradeline"],
        "extensions": {
          "code": "invalid"
        }
      }
    ],
    "data": null
  }
  </code></pre>
* **Query parse and validation errors:** A request whose document cannot be parsed, or which fails schema validation, is rejected before execution. These return HTTP **422** (Unprocessable Entity) with `extensions.code` set to `invalid`:

  <pre class="language-json" data-title="JSON"><code class="lang-json">{
    "errors": [
      {
        "message": "Cannot query field \"nope\" on type \"Query\".",
        "locations": [{ "line": 1, "column": 3 }],
        "extensions": {
          "code": "invalid"
        }
      }
    ],
    "data": null
  }
  </code></pre>
* **Internal errors:** Unexpected server-side failures are returned in the standard GraphQL error format with HTTP **200** and `extensions.code` set to `internal`. They do **not** return HTTP 500, so treat `extensions.code` rather than the HTTP status as the signal:

  <pre class="language-json" data-title="JSON"><code class="lang-json">{
    "errors": [
      {
        "message": "internal error",
        "extensions": {
          "code": "internal"
        }
      }
    ],
    "data": null
  }
  </code></pre>

**Authentication Errors**

* **Current behavior:** Authentication failures (e.g., invalid session) return HTTP **401** with a non-GraphQL error format:

  <pre class="language-json" data-title="JSON"><code class="lang-json">{
    "error": {
      "code": "unauthorized",
      "message": "invalid session token"
    }
  }
  </code></pre>
* **Planned change:** In the future, authentication errors will also return HTTP **200** with a standard GraphQL error response (as above), for consistency.

**Possible error codes:**\
Here are current possible error codes to appear in extensions.code. The `extensions.code` field provides a machine-readable error type. The scenarios producing these codes vary between the many queries and mutations, and are detailed in the descriptions for each.

* `conflict` : The request could not be completed due to a conflict with the current state.
* `duplicate` : The resource already exists (duplicate entry).
* `forbidden` : The caller is authenticated, but is not permitted to act on the requested resource.
* `internal` : An internal server error occurred.
* `invalid` : The request is invalid (e.g., bad input, user is closed, etc.).
* `not_found` : The requested resource was not found.
* `not_implemented` : The requested operation is not implemented.
* `rate_limit` : Too many requests. See **Rate limiting** below.
* `unauthorized` : The user is not authenticated or not authorized.

**Rate limiting**

A `rate_limit` error may carry a `retryAfter` extension: the whole number of seconds to wait before retrying the request.

{% code title="JSON" %}

```json
{
  "errors": [
    {
      "message": "too many verification code requests; please try again later",
      "extensions": {
        "code": "rate_limit",
        "retryAfter": 30
      }
    }
  ],
  "data": null
}
```

{% endcode %}

{% code title="API Endpoints" %}

```
# Sandbox:
https://api.bloomplus.dev/v2/gql
# Production:
https://api.bloomplus.com/v2/gql
```

{% endcode %}

{% code title="Headers" %}

```
# See authorization guide for more details.
Authorization: Bearer <USER_TOKEN>
```

{% endcode %}

**Version**: 1.391.1

### Authorization <a href="#introduction-item-0" id="introduction-item-0"></a>

See [Enablement Services Authorization](/enablement-services/enablement-services-getting-started/enablement-services-authentication.md)

### Getting Started <a href="#introduction-item-1" id="introduction-item-1"></a>

New here? Check out the [Getting Started](/enablement-services/enablement-services-getting-started.md) guide.

### Last Updated <a href="#introduction-item-2" id="introduction-item-2"></a>

2026-10-06 20:38:48 UTC

## Queries <a href="#group-operations-queries" id="group-operations-queries"></a>

### me <a href="#query-me" id="query-me"></a>

Fetches the currently authenticated user's details.

> 🔒 Authentication: Requires user scoped authorization via session token. See the 'Session Token Authentication' section in [Enablement Services Authorization](/enablement-services/enablement-services-getting-started/enablement-services-authentication.md) guide for reference.

Business logic errors (all return HTTP status 200):

| Scenario                      | errors.extensions.code |
| ----------------------------- | ---------------------- |
| Internal business logic error | internal               |

**Response**: Returns a [`User`](#definition-user)

{% tabs %}
{% tab title="Query" %}

```graphql
query Me {
  me {
    id
    email
    phoneNumber
    name {
      first
      middle
      last
    }
    address {
      line1
      line2
      city
      state
      country
      zipcode
      type
    }
    status
    notificationPreferences
    createdAt
    updatedAt
    syncedAt
    closedAt
    connections {
      edges {
        ...ConnectionsEdgeFragment
      }
      pageInfo {
        ...PageInfoFragment
      }
    }
    tradelines {
      edges {
        ...TradelinesEdgeFragment
      }
      pageInfo {
        ...PageInfoFragment
      }
    }
  }
}
```

{% endtab %}

{% tab title="Response" %}

```json
{
  "data": {
    "me": {
      "id": "00000000-0000-0000-0000-000000000000",
      "email": "buzz.inga@bloomcredit.io",
      "phoneNumber": "+12345678901",
      "name": {"first": "Buzz", "last": "Inga"},
      "address": {
        "line1": "123 Main St",
        "city": "Athens",
        "state": "FL",
        "country": "USA",
        "zipcode": "37745",
        "type": "PRIMARY"
      },
      "status": "VERIFIED",
      "notificationPreferences": "EMAIL",
      "createdAt": "2025-01-01T00:00:00Z",
      "updatedAt": "2025-01-02T00:00:00Z",
      "syncedAt": "10:15:30Z",
      "closedAt": "10:15:30Z",
      "connections": ConnectionsConnection,
      "tradelines": TradelinesConnection
    }
  }
}
```

{% endtab %}
{% endtabs %}

### tradeline <a href="#query-tradeline" id="query-tradeline"></a>

The `tradeline` query allows you to retrieve a specific tradeline by `ID`.

> 🔒 Authentication: Requires organization or user scoped authorization via session token. See the 'Session Token Authentication' section in [Enablement Services Authorization](/enablement-services/enablement-services-getting-started/enablement-services-authentication.md) guide for reference.

Business logic errors (all return HTTP status 200):

| Scenario                              | errors.extensions.code |
| ------------------------------------- | ---------------------- |
| User not authenticated                | unauthorized           |
| Tradeline not found or not accessible | not\_found             |
| Internal business logic error         | internal               |

**Response**: Returns a [`Tradeline`](#definition-tradeline)

**Arguments**

| Name                           | Description                                               |
| ------------------------------ | --------------------------------------------------------- |
| `id` - [`ID!`](#definition-id) | The unique identifier for the tradeline you are querying. |

{% tabs %}
{% tab title="Query" %}

```graphql
query Tradeline($id: ID!) {
  tradeline(id: $id) {
    id
    user {
      id
      email
      phoneNumber
      name {
        ...NameFragment
      }
      address {
        ...AddressFragment
      }
      status
      notificationPreferences
      createdAt
      updatedAt
      syncedAt
      closedAt
      connections {
        ...ConnectionsConnectionFragment
      }
      tradelines {
        ...TradelinesConnectionFragment
      }
    }
    merchant
    category
    status
    isEligible
    paymentFrequency
    lastTransactionDate
    transactionCount
    details {
      ... on RentTradelineDetails {
        ...RentTradelineDetailsFragment
      }
      ... on UtilityTradelineDetails {
        ...UtilityTradelineDetailsFragment
      }
      ... on TelcoTradelineDetails {
        ...TelcoTradelineDetailsFragment
      }
    }
    createdAt
    updatedAt
    transactions {
      edges {
        ...TransactionsEdgeFragment
      }
      pageInfo {
        ...PageInfoFragment
      }
    }
    furnishments {
      id
      furnishedAt
    }
    furnishingDetails {
      bureaus
      submissions {
        ...FurnishmentSubmissionFragment
      }
      lastSubmittedAt
    }
    financialAccount {
      id
      name
      type
      mask
      institution {
        ...InstitutionFragment
      }
      connection {
        ...ConnectionFragment
      }
      sourceId
    }
    reportedConsumerAccountNumber
  }
}
```

{% endtab %}

{% tab title="Variables" %}

```json
{
  "id": "00000000-0000-0000-0000-000000000000"
}
```

{% endtab %}

{% tab title="Response" %}

```json
{
  "data": {
    "tradeline": {
      "id": "00000000-0000-0000-0000-000000000000",
      "user": User,
      "merchant": "Pollen Water Co",
      "category": "RENT",
      "status": "UNOPENED",
      "isEligible": true,
      "paymentFrequency": "MONTHLY",
      "lastTransactionDate": "2007-12-03",
      "transactionCount": 987,
      "details": RentTradelineDetails,
      "createdAt": "10:15:30Z",
      "updatedAt": "10:15:30Z",
      "transactions": TransactionsConnection,
      "furnishments": [Furnishment],
      "furnishingDetails": TradelineFurnishingDetails,
      "financialAccount": FinancialAccount,
      "reportedConsumerAccountNumber": "xyz789"
    }
  }
}
```

{% endtab %}
{% endtabs %}

### user <a href="#query-user" id="query-user"></a>

Fetches a user by their ID or email address.

> 🔒 Authentication: Requires organization scoped authorization. See the [Enablement Services Authorization](/enablement-services/enablement-services-getting-started/enablement-services-authentication.md) guide for reference.

Business logic errors (all return HTTP status 200):

| Scenario                      | errors.extensions.code |
| ----------------------------- | ---------------------- |
| Internal business logic error | internal               |
| No identifier provided        | invalid                |
| Invalid ID format             | invalid                |

**Response**: Returns a [`User`](#definition-user)

**Arguments**

| Name                                     | Description |
| ---------------------------------------- | ----------- |
| `id` - [`ID`](#definition-id)            |             |
| `email` - [`String`](#definition-string) |             |

{% tabs %}
{% tab title="Query" %}

```graphql
query User(
  $id: ID,
  $email: String
) {
  user(
    id: $id,
    email: $email
  ) {
    id
    email
    phoneNumber
    name {
      first
      middle
      last
    }
    address {
      line1
      line2
      city
      state
      country
      zipcode
      type
    }
    status
    notificationPreferences
    createdAt
    updatedAt
    syncedAt
    closedAt
    connections {
      edges {
        ...ConnectionsEdgeFragment
      }
      pageInfo {
        ...PageInfoFragment
      }
    }
    tradelines {
      edges {
        ...TradelinesEdgeFragment
      }
      pageInfo {
        ...PageInfoFragment
      }
    }
  }
}
```

{% endtab %}

{% tab title="Variables" %}

```json
{
  "id": "00000000-0000-0000-0000-000000000000",
  "email": "xyz789"
}
```

{% endtab %}

{% tab title="Response" %}

```json
{
  "data": {
    "user": {
      "id": "00000000-0000-0000-0000-000000000000",
      "email": "buzz.inga@bloomcredit.io",
      "phoneNumber": "+12345678901",
      "name": {"first": "Buzz", "last": "Inga"},
      "address": {
        "line1": "123 Main St",
        "city": "Athens",
        "state": "FL",
        "country": "USA",
        "zipcode": "37745",
        "type": "PRIMARY"
      },
      "status": "VERIFIED",
      "notificationPreferences": "EMAIL",
      "createdAt": "2025-01-01T00:00:00Z",
      "updatedAt": "2025-01-02T00:00:00Z",
      "syncedAt": "10:15:30Z",
      "closedAt": "10:15:30Z",
      "connections": ConnectionsConnection,
      "tradelines": TradelinesConnection
    }
  }
}
```

{% endtab %}
{% endtabs %}

### userExistsWithEmail <a href="#query-userexistswithemail" id="query-userexistswithemail"></a>

Check if the user registering does not already exist in the database for your organization.

> 🔒 Requires Organization scoped authorization. See the [Enablement Services Authorization](/enablement-services/enablement-services-getting-started/enablement-services-authentication.md) guide for reference.

Business logic errors (all return HTTP status 200):

| Scenario                                 | errors.extensions.code |
| ---------------------------------------- | ---------------------- |
| User not found (returns false, no error) | -                      |
| Internal business logic error            | internal               |

**Response**: Returns a [`Boolean!`](#definition-boolean)

**Arguments**

| Name                                                 | Description                                                       |
| ---------------------------------------------------- | ----------------------------------------------------------------- |
| `organizationSlug` - [`String!`](#definition-string) | Your organization's slug (url friendly name of your organization) |
| `email` - [`String!`](#definition-string)            | User's email address                                              |

{% tabs %}
{% tab title="Query" %}

```graphql
query UserExistsWithEmail(
  $organizationSlug: String!,
  $email: String!
) {
  userExistsWithEmail(
    organizationSlug: $organizationSlug,
    email: $email
  )
}
```

{% endtab %}

{% tab title="Variables" %}

```json
{
  "organizationSlug": "xyz789",
  "email": "abc123"
}
```

{% endtab %}

{% tab title="Response" %}

```json
{"data": {"userExistsWithEmail": false}}
```

{% endtab %}
{% endtabs %}

### validateDateOfBirth <a href="#query-validatedateofbirth" id="query-validatedateofbirth"></a>

Validate user's stored date of birth with a passed in date of birth.

> 🔒 Authentication: Requires user scoped authorization via session token. See the 'Session Token Authentication' section in [Enablement Services Authorization](/enablement-services/enablement-services-getting-started/enablement-services-authentication.md) guide for reference.

Business logic errors (all return HTTP status 200):

| Scenario                                 | errors.extensions.code |
| ---------------------------------------- | ---------------------- |
| User not found (returns false, no error) | -                      |
| Internal business logic error            | internal               |

**Response**: Returns a [`ValidateDateOfBirthOutput!`](#definition-validatedateofbirthoutput)

**Arguments**

| Name                                                  | Description                                                                                                          |
| ----------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| `dateOfBirth` - [`DateInput!`](#definition-dateinput) | Birthdate to validate as user's recorded birthday. Must not be in the future, and can not be less than 18 years old. |

{% tabs %}
{% tab title="Query" %}

```graphql
query ValidateDateOfBirth($dateOfBirth: DateInput!) {
  validateDateOfBirth(dateOfBirth: $dateOfBirth) {
    isValid
  }
}
```

{% endtab %}

{% tab title="Variables" %}

```json
{"dateOfBirth": DateInput}
```

{% endtab %}

{% tab title="Response" %}

```json
{"data": {"validateDateOfBirth": {"isValid": true}}}
```

{% endtab %}
{% endtabs %}

### webhookDashboardUrl <a href="#query-webhookdashboardurl" id="query-webhookdashboardurl"></a>

The `webhookDashboardUrl` query allows you to get the URL for the webhook dashboard in order to view and manage webhooks.

> 🔒 Authentication: Requires organization scoped authorization via client credentials. See the 'Client Credentials Authentication' section in [Enablement Services Authorization](/enablement-services/enablement-services-getting-started/enablement-services-authentication.md) guide for reference.

Business logic errors (all return HTTP status 200):

| Scenario                             | errors.extensions.code |
| ------------------------------------ | ---------------------- |
| User not authorized for organization | forbidden              |
| Internal business logic error        | internal               |

**Response**: Returns a [`String!`](#definition-string)

{% tabs %}
{% tab title="Query" %}

```graphql
query WebhookDashboardUrl {
  webhookDashboardUrl
}
```

{% endtab %}

{% tab title="Response" %}

```json
{"data": {"webhookDashboardUrl": "xyz789"}}
```

{% endtab %}
{% endtabs %}

## Mutations <a href="#group-operations-mutations" id="group-operations-mutations"></a>

### closeTradeline <a href="#mutation-closetradeline" id="mutation-closetradeline"></a>

The `closeTradeline` mutation is used to confirm that a user has opted to stop having a recurring bill reported to the credit bureau(s). Upon successful execution, it returns the tradeline object.

> 🔒 Authentication: Requires user scoped authorization via session token. See the 'Session Token Authentication' section in [Enablement Services Authorization](/enablement-services/enablement-services-getting-started/enablement-services-authentication.md) guide for reference.

Business logic errors (all return HTTP status 200):

| Scenario                                      | errors.extensions.code |
| --------------------------------------------- | ---------------------- |
| Tradeline not found or not accessible by user | not\_found             |
| Tradeline is not open                         | invalid                |
| Internal business logic error                 | internal               |

**Response**: Returns a [`CloseTradelineOutput!`](#definition-closetradelineoutput)

**Arguments**

| Name                           | Description                  |
| ------------------------------ | ---------------------------- |
| `id` - [`ID!`](#definition-id) | Unique tradeline identifier. |

{% tabs %}
{% tab title="Query" %}

```graphql
mutation CloseTradeline($id: ID!) {
  closeTradeline(id: $id) {
    tradeline {
      id
      user {
        ...UserFragment
      }
      merchant
      category
      status
      isEligible
      paymentFrequency
      lastTransactionDate
      transactionCount
      details {
        ... on RentTradelineDetails {
          ...RentTradelineDetailsFragment
        }
        ... on UtilityTradelineDetails {
          ...UtilityTradelineDetailsFragment
        }
        ... on TelcoTradelineDetails {
          ...TelcoTradelineDetailsFragment
        }
      }
      createdAt
      updatedAt
      transactions {
        ...TransactionsConnectionFragment
      }
      furnishments {
        ...FurnishmentFragment
      }
      furnishingDetails {
        ...TradelineFurnishingDetailsFragment
      }
      financialAccount {
        ...FinancialAccountFragment
      }
      reportedConsumerAccountNumber
    }
  }
}
```

{% endtab %}

{% tab title="Variables" %}

```json
{
  "id": "00000000-0000-0000-0000-000000000000"
}
```

{% endtab %}

{% tab title="Response" %}

```json
{"data": {"closeTradeline": {"tradeline": Tradeline}}}
```

{% endtab %}
{% endtabs %}

### deleteConnection <a href="#mutation-deleteconnection" id="mutation-deleteconnection"></a>

The `deleteConnection` mutation soft deletes an aggregator connection from Bloom's system and emits the respective event to the aggregator. A webhook should be delivered once this asynchronous process completes.

> 🔒 Authentication: Requires user scoped authorization via session token. See the 'Session Token Authentication' section in [Enablement Services Authorization](/enablement-services/enablement-services-getting-started/enablement-services-authentication.md) guide for reference.

**Response**: Returns a [`DeleteConnectionOutput!`](#definition-deleteconnectionoutput)

**Arguments**

| Name                           | Description |
| ------------------------------ | ----------- |
| `id` - [`ID!`](#definition-id) |             |

{% tabs %}
{% tab title="Query" %}

```graphql
mutation DeleteConnection($id: ID!) {
  deleteConnection(id: $id) {
    connection {
      id
      status
      institution {
        ...InstitutionFragment
      }
      financialAccounts {
        ...FinancialAccountFragment
      }
      user {
        ...UserFragment
      }
    }
  }
}
```

{% endtab %}

{% tab title="Variables" %}

```json
{
  "id": "00000000-0000-0000-0000-000000000000"
}
```

{% endtab %}

{% tab title="Response" %}

```json
{"data": {"deleteConnection": {"connection": Connection}}}
```

{% endtab %}
{% endtabs %}

### deleteMe <a href="#mutation-deleteme" id="mutation-deleteme"></a>

The `deleteMe` mutation is used to when a user wants to completely close their account and no longer have tradelines reported to credit bureaus. This mutation disconnects the aggregator from Bloom's Enablement Services.

> 🔒 Authentication: Requires user scoped authorization via session token. See the 'Session Token Authentication' section in [Enablement Services Authorization](/enablement-services/enablement-services-getting-started/enablement-services-authentication.md) guide for reference.

Business logic errors (all return HTTP status 200):

| Scenario                      | errors.extensions.code |
| ----------------------------- | ---------------------- |
| User not found                | not\_found             |
| Internal business logic error | internal               |

**Response**: Returns a [`DeleteMeOutput!`](#definition-deletemeoutput)

{% tabs %}
{% tab title="Query" %}

```graphql
mutation DeleteMe {
  deleteMe {
    user {
      id
      email
      phoneNumber
      name {
        ...NameFragment
      }
      address {
        ...AddressFragment
      }
      status
      notificationPreferences
      createdAt
      updatedAt
      syncedAt
      closedAt
      connections {
        ...ConnectionsConnectionFragment
      }
      tradelines {
        ...TradelinesConnectionFragment
      }
    }
  }
}
```

{% endtab %}

{% tab title="Response" %}

```json
{"data": {"deleteMe": {"user": User}}}
```

{% endtab %}
{% endtabs %}

### deleteTradeline <a href="#mutation-deletetradeline" id="mutation-deletetradeline"></a>

The `deleteTradeline` mutation closes a tradeline due to fraud. This is a soft deletion, so it will be returned from the API as closed.

> 🔒 Authentication: Requires user scoped authorization via session token.

**Response**: Returns a [`DeleteTradelineOutput!`](#definition-deletetradelineoutput)

**Arguments**

| Name                                                                  | Description                         |
| --------------------------------------------------------------------- | ----------------------------------- |
| `input` - [`DeleteTradelineInput!`](#definition-deletetradelineinput) | Identifies the tradeline to delete. |

{% tabs %}
{% tab title="Query" %}

```graphql
mutation DeleteTradeline($input: DeleteTradelineInput!) {
  deleteTradeline(input: $input) {
    tradeline {
      id
      user {
        ...UserFragment
      }
      merchant
      category
      status
      isEligible
      paymentFrequency
      lastTransactionDate
      transactionCount
      details {
        ... on RentTradelineDetails {
          ...RentTradelineDetailsFragment
        }
        ... on UtilityTradelineDetails {
          ...UtilityTradelineDetailsFragment
        }
        ... on TelcoTradelineDetails {
          ...TelcoTradelineDetailsFragment
        }
      }
      createdAt
      updatedAt
      transactions {
        ...TransactionsConnectionFragment
      }
      furnishments {
        ...FurnishmentFragment
      }
      furnishingDetails {
        ...TradelineFurnishingDetailsFragment
      }
      financialAccount {
        ...FinancialAccountFragment
      }
      reportedConsumerAccountNumber
    }
  }
}
```

{% endtab %}

{% tab title="Variables" %}

```json
{"input": DeleteTradelineInput}
```

{% endtab %}

{% tab title="Response" %}

```json
{"data": {"deleteTradeline": {"tradeline": Tradeline}}}
```

{% endtab %}
{% endtabs %}

### importConnections <a href="#mutation-importconnections" id="mutation-importconnections"></a>

The `importConnections` mutation allows you to import multiple previously established aggregator connections, enabling our system to ingest and categorize transactions associated with those connections. This process facilitates transaction management and categorization for streamlined data handling within your application. Each connection can only be imported once. Only one of the `tokens` or `tokensWithMetadata` arrays should be provided. If the `tokens` array is provided, the `tokensWithMetadata` array will be ignored.

> 🔒 Authentication: Requires user scoped authorization via session token. See the 'Session Token Authentication' section in [Enablement Services Authorization](/enablement-services/enablement-services-getting-started/enablement-services-authentication.md) guide for reference.

Business logic errors (all return HTTP status 200):

| Scenario                                               | errors.extensions.code |
| ------------------------------------------------------ | ---------------------- |
| Invalid or missing token(s)                            | invalid                |
| One or more tokens already imported (duplicate entry)  | conflict               |
| Error parsing token(s) (malformed, not a valid string) | invalid                |
| Internal business logic error                          | internal               |

**Response**: Returns an [`ImportConnectionsOutput!`](#definition-importconnectionsoutput)

**Arguments**

| Name                                                                      | Description |
| ------------------------------------------------------------------------- | ----------- |
| `input` - [`ImportConnectionsInput!`](#definition-importconnectionsinput) |             |

{% tabs %}
{% tab title="Query" %}

```graphql
mutation ImportConnections($input: ImportConnectionsInput!) {
  importConnections(input: $input) {
    connections {
      id
      status
      institution {
        ...InstitutionFragment
      }
      financialAccounts {
        ...FinancialAccountFragment
      }
      user {
        ...UserFragment
      }
    }
  }
}
```

{% endtab %}

{% tab title="Variables" %}

```json
{"input": ImportConnectionsInput}
```

{% endtab %}

{% tab title="Response" %}

```json
{
  "data": {
    "importConnections": {"connections": [Connection]}
  }
}
```

{% endtab %}
{% endtabs %}

### importMastercardProcessorToken <a href="#mutation-importmastercardprocessortoken" id="mutation-importmastercardprocessortoken"></a>

The `importMastercardProcessorToken` mutation imports a single Mastercard token, creating the connection on the aggregator with `mastercard` as the aggregator and the supplied token as the connection reference.

The import is idempotent: re-importing a token that already has a connection returns the existing connection instead of creating a second one.

Business logic errors (all return HTTP status 200):

| Scenario                                      | errors.extensions.code |
| --------------------------------------------- | ---------------------- |
| Missing, empty, or whitespace-only token      | invalid                |
| Connection not eligible for this organization | invalid                |
| Internal or upstream failure                  | internal               |

> 🔒 Authentication: Requires user scoped authorization via session token. See the 'Session Token Authentication' section in [Enablement Services Authorization](/enablement-services/enablement-services-getting-started/enablement-services-authentication.md) guide for reference.

**Response**: Returns an [`ImportMastercardProcessorTokenOutput!`](#definition-importmastercardprocessortokenoutput)

**Arguments**

| Name                                                                                                | Description |
| --------------------------------------------------------------------------------------------------- | ----------- |
| `input` - [`ImportMastercardProcessorTokenInput!`](#definition-importmastercardprocessortokeninput) |             |

{% tabs %}
{% tab title="Query" %}

```graphql
mutation ImportMastercardProcessorToken($input: ImportMastercardProcessorTokenInput!) {
  importMastercardProcessorToken(input: $input) {
    connection {
      id
      status
      institution {
        ...InstitutionFragment
      }
      financialAccounts {
        ...FinancialAccountFragment
      }
      user {
        ...UserFragment
      }
    }
  }
}
```

{% endtab %}

{% tab title="Variables" %}

```json
{"input": ImportMastercardProcessorTokenInput}
```

{% endtab %}

{% tab title="Response" %}

```json
{
  "data": {
    "importMastercardProcessorToken": {
      "connection": Connection
    }
  }
}
```

{% endtab %}
{% endtabs %}

### importPlaidProcessorTokens <a href="#mutation-importplaidprocessortokens" id="mutation-importplaidprocessortokens"></a>

Similar to `importConnections`, but each token is imported independently. Per-token failures are returned in `failures` and do not stop other tokens from being imported. Successful imports appear in `successes` (token plus connection).

**Mutation-level errors** (GraphQL `errors` array; HTTP status 200; each error includes `extensions.code`):

| Scenario                                                                                                         | errors.extensions.code |
| ---------------------------------------------------------------------------------------------------------------- | ---------------------- |
| No non-empty tokens: both `tokens` and `tokensWithMetadata` missing, empty, or only empty strings after trimming | invalid                |

**Per-token failures** (mutation returns `data` with HTTP 200; no GraphQL `errors` entry for these—inspect `failures`): Each `TokenError` has `token` and `error` (message only; no `extensions` on the response for these rows). The **error class** below matches the same `errors.extensions.code` taxonomy used elsewhere, for logging and client-side grouping:

| Scenario                                                   | error class |
| ---------------------------------------------------------- | ----------- |
| User is closed                                             | invalid     |
| Organization does not support Plaid processor token import | invalid     |
| Connection not eligible for this organization              | invalid     |
| Duplicate connection / token already imported              | conflict    |
| Invalid or malformed token, aggregator validation failure  | invalid     |
| Internal or upstream failure                               | internal    |

> 🔒 Authentication: Requires user scoped authorization via session token. See the 'Session Token Authentication' section in [Enablement Services Authorization](/enablement-services/enablement-services-getting-started/enablement-services-authentication.md) guide for reference.

**Response**: Returns an [`ImportPlaidProcessorTokensOutput!`](#definition-importplaidprocessortokensoutput)

**Arguments**

| Name                                                                                        | Description |
| ------------------------------------------------------------------------------------------- | ----------- |
| `input` - [`ImportPlaidProcessorTokensInput!`](#definition-importplaidprocessortokensinput) |             |

{% tabs %}
{% tab title="Query" %}

```graphql
mutation ImportPlaidProcessorTokens($input: ImportPlaidProcessorTokensInput!) {
  importPlaidProcessorTokens(input: $input) {
    successes {
      token
      connection {
        ...ConnectionFragment
      }
    }
    failures {
      token
      error
    }
  }
}
```

{% endtab %}

{% tab title="Variables" %}

```json
{"input": ImportPlaidProcessorTokensInput}
```

{% endtab %}

{% tab title="Response" %}

```json
{
  "data": {
    "importPlaidProcessorTokens": {
      "successes": [ProcessorTokenImportSuccess],
      "failures": [TokenError]
    }
  }
}
```

{% endtab %}
{% endtabs %}

### importUser <a href="#mutation-importuser" id="mutation-importuser"></a>

The importUser mutation is used to import an existing Bloom consumer into the Enablement Services platform. The consumer must have an email and phone number set.

> 🔒 Requires Organization scoped authorization. See the [Enablement Services Authorization](/enablement-services/enablement-services-getting-started/enablement-services-authentication.md) guide for reference.

Business logic errors (all return HTTP status 200):

| Scenario                      | errors.extensions.code |
| ----------------------------- | ---------------------- |
| Invalid consumer ID format    | invalid                |
| Consumer not found            | not\_found             |
| Internal business logic error | internal               |

**Response**: Returns an [`ImportUserOutput!`](#definition-importuseroutput)

**Arguments**

| Name                                                        | Description |
| ----------------------------------------------------------- | ----------- |
| `input` - [`ImportUserInput!`](#definition-importuserinput) |             |

{% tabs %}
{% tab title="Query" %}

```graphql
mutation ImportUser($input: ImportUserInput!) {
  importUser(input: $input) {
    user {
      id
      email
      phoneNumber
      name {
        ...NameFragment
      }
      address {
        ...AddressFragment
      }
      status
      notificationPreferences
      createdAt
      updatedAt
      syncedAt
      closedAt
      connections {
        ...ConnectionsConnectionFragment
      }
      tradelines {
        ...TradelinesConnectionFragment
      }
    }
  }
}
```

{% endtab %}

{% tab title="Variables" %}

```json
{"input": ImportUserInput}
```

{% endtab %}

{% tab title="Response" %}

```json
{"data": {"importUser": {"user": User}}}
```

{% endtab %}
{% endtabs %}

### openRentTradeline <a href="#mutation-openrenttradeline" id="mutation-openrenttradeline"></a>

The `openRentTradeline` mutation is used to confirm that a user has opted to have a rent recurring bill reported to the credit bureau(s). Upon successful execution, it returns the tradeline that has been opened. This process ensures the tradeline is correctly configured for credit reporting.

This mutation is idempotent: if the tradeline is already open with the same details, it returns the existing tradeline without error. If the tradeline is already open with different details, it returns an error.

> 🔒 Authentication: Requires user scoped authorization via session token. See the 'Session Token Authentication' section in [Enablement Services Authorization](/enablement-services/enablement-services-getting-started/enablement-services-authentication.md) guide for reference.

Business logic errors (all return HTTP status 200):

| Scenario                                      | errors.extensions.code |
| --------------------------------------------- | ---------------------- |
| User is closed                                | invalid                |
| Tradeline not found or not accessible by user | not\_found             |
| Tradeline already open with different details | invalid                |
| Tradeline status is not unopened              | invalid                |
| Tradeline is not eligible                     | invalid                |
| Tradeline details missing                     | invalid                |
| Tradeline details type is invalid             | invalid                |
| Tradeline is not a rent tradeline             | invalid                |
| Internal business logic error                 | internal               |

Note: If tradeline is already open with the same details, the mutation succeeds and returns the existing tradeline (idempotent behavior).

**Response**: Returns an [`OpenRentTradelineOutput!`](#definition-openrenttradelineoutput)

**Arguments**

| Name                                                                | Description |
| ------------------------------------------------------------------- | ----------- |
| `id` - [`ID!`](#definition-id)                                      |             |
| `details` - [`RentTradelineInput!`](#definition-renttradelineinput) |             |

{% tabs %}
{% tab title="Query" %}

```graphql
mutation OpenRentTradeline(
  $id: ID!,
  $details: RentTradelineInput!
) {
  openRentTradeline(
    id: $id,
    details: $details
  ) {
    tradeline {
      id
      user {
        ...UserFragment
      }
      merchant
      category
      status
      isEligible
      paymentFrequency
      lastTransactionDate
      transactionCount
      details {
        ... on RentTradelineDetails {
          ...RentTradelineDetailsFragment
        }
        ... on UtilityTradelineDetails {
          ...UtilityTradelineDetailsFragment
        }
        ... on TelcoTradelineDetails {
          ...TelcoTradelineDetailsFragment
        }
      }
      createdAt
      updatedAt
      transactions {
        ...TransactionsConnectionFragment
      }
      furnishments {
        ...FurnishmentFragment
      }
      furnishingDetails {
        ...TradelineFurnishingDetailsFragment
      }
      financialAccount {
        ...FinancialAccountFragment
      }
      reportedConsumerAccountNumber
    }
  }
}
```

{% endtab %}

{% tab title="Variables" %}

```json
{
  "id": "00000000-0000-0000-0000-000000000000",
  "details": RentTradelineInput
}
```

{% endtab %}

{% tab title="Response" %}

```json
{"data": {"openRentTradeline": {"tradeline": Tradeline}}}
```

{% endtab %}
{% endtabs %}

### openTelcoTradeline <a href="#mutation-opentelcotradeline" id="mutation-opentelcotradeline"></a>

The `openTelcoTradeline` mutation is used to confirm that a user has opted to have a telco recurring bill reported to the credit bureau(s). Upon successful execution, it returns the tradeline that has been opened. This process ensures the tradeline is correctly configured for credit reporting.

This mutation is idempotent: if the tradeline is already open with the same details, it returns the existing tradeline without error. If the tradeline is already open with different details, it returns an error.

> 🔒 Authentication: Requires user scoped authorization via session token. See the 'Session Token Authentication' section in [Enablement Services Authorization](/enablement-services/enablement-services-getting-started/enablement-services-authentication.md) guide for reference.

Business logic errors (all return HTTP status 200):

| Scenario                                      | errors.extensions.code |
| --------------------------------------------- | ---------------------- |
| User is closed                                | invalid                |
| Tradeline not found or not accessible by user | not\_found             |
| Tradeline already open with different details | invalid                |
| Tradeline status is not unopened              | invalid                |
| Tradeline is not eligible                     | invalid                |
| Tradeline details missing                     | invalid                |
| Tradeline details type is invalid             | invalid                |
| Tradeline is not a telco tradeline            | invalid                |
| Internal business logic error                 | internal               |

Note: If tradeline is already open with the same details, the mutation succeeds and returns the existing tradeline (idempotent behavior).

**Response**: Returns an [`OpenTelcoTradelineOutput!`](#definition-opentelcotradelineoutput)

**Arguments**

| Name                                                                  | Description |
| --------------------------------------------------------------------- | ----------- |
| `id` - [`ID!`](#definition-id)                                        |             |
| `details` - [`TelcoTradelineInput!`](#definition-telcotradelineinput) |             |

{% tabs %}
{% tab title="Query" %}

```graphql
mutation OpenTelcoTradeline(
  $id: ID!,
  $details: TelcoTradelineInput!
) {
  openTelcoTradeline(
    id: $id,
    details: $details
  ) {
    tradeline {
      id
      user {
        ...UserFragment
      }
      merchant
      category
      status
      isEligible
      paymentFrequency
      lastTransactionDate
      transactionCount
      details {
        ... on RentTradelineDetails {
          ...RentTradelineDetailsFragment
        }
        ... on UtilityTradelineDetails {
          ...UtilityTradelineDetailsFragment
        }
        ... on TelcoTradelineDetails {
          ...TelcoTradelineDetailsFragment
        }
      }
      createdAt
      updatedAt
      transactions {
        ...TransactionsConnectionFragment
      }
      furnishments {
        ...FurnishmentFragment
      }
      furnishingDetails {
        ...TradelineFurnishingDetailsFragment
      }
      financialAccount {
        ...FinancialAccountFragment
      }
      reportedConsumerAccountNumber
    }
  }
}
```

{% endtab %}

{% tab title="Variables" %}

```json
{
  "id": "00000000-0000-0000-0000-000000000000",
  "details": TelcoTradelineInput
}
```

{% endtab %}

{% tab title="Response" %}

```json
{"data": {"openTelcoTradeline": {"tradeline": Tradeline}}}
```

{% endtab %}
{% endtabs %}

### openUtilityTradeline <a href="#mutation-openutilitytradeline" id="mutation-openutilitytradeline"></a>

The `openUtilityTradeline` mutation is used to confirm that a user has opted to have a utility recurring bill reported to the credit bureau(s). Upon successful execution, it returns the tradeline that has been opened. This process ensures the tradeline is correctly configured for credit reporting.

This mutation is idempotent: if the tradeline is already open with the same details, it returns the existing tradeline without error. If the tradeline is already open with different details, it returns an error.

> 🔒 Authentication: Requires user scoped authorization via session token. See the 'Session Token Authentication' section in [Enablement Services Authorization](/enablement-services/enablement-services-getting-started/enablement-services-authentication.md) guide for reference.

Business logic errors (all return HTTP status 200):

| Scenario                                      | errors.extensions.code |
| --------------------------------------------- | ---------------------- |
| User is closed                                | invalid                |
| Tradeline not found or not accessible by user | not\_found             |
| Tradeline already open with different details | invalid                |
| Tradeline status is not unopened              | invalid                |
| Tradeline is not eligible                     | invalid                |
| Tradeline details missing                     | invalid                |
| Tradeline details type is invalid             | invalid                |
| Tradeline is not a utility tradeline          | invalid                |
| Internal business logic error                 | internal               |

Note: If tradeline is already open with the same details, the mutation succeeds and returns the existing tradeline (idempotent behavior).

**Response**: Returns an [`OpenUtilityTradelineOutput!`](#definition-openutilitytradelineoutput)

**Arguments**

| Name                                                                      | Description |
| ------------------------------------------------------------------------- | ----------- |
| `id` - [`ID!`](#definition-id)                                            |             |
| `details` - [`UtilityTradelineInput!`](#definition-utilitytradelineinput) |             |

{% tabs %}
{% tab title="Query" %}

```graphql
mutation OpenUtilityTradeline(
  $id: ID!,
  $details: UtilityTradelineInput!
) {
  openUtilityTradeline(
    id: $id,
    details: $details
  ) {
    tradeline {
      id
      user {
        ...UserFragment
      }
      merchant
      category
      status
      isEligible
      paymentFrequency
      lastTransactionDate
      transactionCount
      details {
        ... on RentTradelineDetails {
          ...RentTradelineDetailsFragment
        }
        ... on UtilityTradelineDetails {
          ...UtilityTradelineDetailsFragment
        }
        ... on TelcoTradelineDetails {
          ...TelcoTradelineDetailsFragment
        }
      }
      createdAt
      updatedAt
      transactions {
        ...TransactionsConnectionFragment
      }
      furnishments {
        ...FurnishmentFragment
      }
      furnishingDetails {
        ...TradelineFurnishingDetailsFragment
      }
      financialAccount {
        ...FinancialAccountFragment
      }
      reportedConsumerAccountNumber
    }
  }
}
```

{% endtab %}

{% tab title="Variables" %}

```json
{
  "id": "00000000-0000-0000-0000-000000000000",
  "details": UtilityTradelineInput
}
```

{% endtab %}

{% tab title="Response" %}

```json
{
  "data": {
    "openUtilityTradeline": {"tradeline": Tradeline}
  }
}
```

{% endtab %}
{% endtabs %}

### reOpenOrganizationUser <a href="#mutation-reopenorganizationuser" id="mutation-reopenorganizationuser"></a>

The reOpenOrganizationUser mutation reopens a previously closed user, clearing its `closedAt` timestamp. The user must currently be closed and belong to the authenticated organization. Upon success it returns the user object. After reopening, the client may re-establish bank connections via `importConnection` or `importPlaidProcessorTokens`.

> 🔒 Requires Organization scoped authorization. See the [Enablement Services Authorization](/enablement-services/enablement-services-getting-started/enablement-services-authentication.md) guide for reference.

Business logic errors (all return HTTP status 200):

| Scenario                                | errors.extensions.code |
| --------------------------------------- | ---------------------- |
| Invalid input format (malformed userId) | invalid                |
| User not found in the organization      | not\_found             |
| User is not closed                      | invalid                |
| Internal business logic error           | internal               |

**Response**: Returns a [`ReOpenOrganizationUserOutput!`](#definition-reopenorganizationuseroutput)

**Arguments**

| Name                                                                                | Description  |
| ----------------------------------------------------------------------------------- | ------------ |
| `input` - [`ReOpenOrganizationUserInput!`](#definition-reopenorganizationuserinput) | Input object |

{% tabs %}
{% tab title="Query" %}

```graphql
mutation ReOpenOrganizationUser($input: ReOpenOrganizationUserInput!) {
  reOpenOrganizationUser(input: $input) {
    user {
      id
      email
      phoneNumber
      name {
        ...NameFragment
      }
      address {
        ...AddressFragment
      }
      status
      notificationPreferences
      createdAt
      updatedAt
      syncedAt
      closedAt
      connections {
        ...ConnectionsConnectionFragment
      }
      tradelines {
        ...TradelinesConnectionFragment
      }
    }
  }
}
```

{% endtab %}

{% tab title="Variables" %}

```json
{"input": ReOpenOrganizationUserInput}
```

{% endtab %}

{% tab title="Response" %}

```json
{"data": {"reOpenOrganizationUser": {"user": User}}}
```

{% endtab %}
{% endtabs %}

### registerOrganizationUser <a href="#mutation-registerorganizationuser" id="mutation-registerorganizationuser"></a>

The registerOrganizationUser mutation is used to create a new user in the database. Upon successful creation, the mutation will return the user's unique ID. You should store this ID in your database and associate it with your consumer record, as it will be required for accessing authenticated queries and mutations.

> 🔒 Requires Organization scoped authorization. See the [Enablement Services Authorization](/enablement-services/enablement-services-getting-started/enablement-services-authentication.md) guide for reference.

**Sandbox org size limit:** In the sandbox environment, registration is rejected if the organization already has **50 non-closed users** (users without a `closedAt` timestamp). Close existing users to add more. This does not apply to production.

Business logic errors (all return HTTP status 200):

| Scenario                                             | errors.extensions.code |
| ---------------------------------------------------- | ---------------------- |
| Input validation failed (invalid email, phone, etc.) | invalid                |
| Phone number parsing/formatting failed               | invalid                |
| User already exists with the given email             | invalid                |
| Organization at sandbox open-user limit (see above)  | invalid                |
| Internal business logic error                        | internal               |

**Response**: Returns a [`RegisterOrganizationUserOutput!`](#definition-registerorganizationuseroutput)

**Arguments**

| Name                                                                                    | Description  |
| --------------------------------------------------------------------------------------- | ------------ |
| `input` - [`RegisterOrganizationUserInput!`](#definition-registerorganizationuserinput) | Input object |

{% tabs %}
{% tab title="Query" %}

```graphql
mutation RegisterOrganizationUser($input: RegisterOrganizationUserInput!) {
  registerOrganizationUser(input: $input) {
    user {
      id
      email
      phoneNumber
      name {
        ...NameFragment
      }
      address {
        ...AddressFragment
      }
      status
      notificationPreferences
      createdAt
      updatedAt
      syncedAt
      closedAt
      connections {
        ...ConnectionsConnectionFragment
      }
      tradelines {
        ...TradelinesConnectionFragment
      }
    }
  }
}
```

{% endtab %}

{% tab title="Variables" %}

```json
{"input": RegisterOrganizationUserInput}
```

{% endtab %}

{% tab title="Response" %}

```json
{"data": {"registerOrganizationUser": {"user": User}}}
```

{% endtab %}
{% endtabs %}

### reopenTradeline <a href="#mutation-reopentradeline" id="mutation-reopentradeline"></a>

The `reopenTradeline` mutation reopens a tradeline that was previously closed by the consumer. The user must be open (not closed) and have at least one connection that is not closed and not disconnected. Upon success it returns the reopened tradeline object. Reopening then continues asynchronously; a `tradeline.reopened` webhook is delivered once this asynchronous process completes.

> 🔒 Authentication: Requires user scoped authorization via session token. See the 'Session Token Authentication' section in [Enablement Services Authorization](/enablement-services/enablement-services-getting-started/enablement-services-authentication.md) guide for reference.

Business logic errors (all return HTTP status 200):

| Scenario                                                      | errors.extensions.code |
| ------------------------------------------------------------- | ---------------------- |
| Invalid input format (malformed tradelineId)                  | invalid                |
| Tradeline not found or not accessible by user                 | not\_found             |
| User is closed                                                | invalid                |
| User has no connection that is open (not closed/disconnected) | invalid                |
| Tradeline is not closed, or was not closed by the consumer    | invalid                |
| Internal business logic error                                 | internal               |

**Response**: Returns a [`ReopenTradelineOutput!`](#definition-reopentradelineoutput)

**Arguments**

| Name                                                                  | Description                         |
| --------------------------------------------------------------------- | ----------------------------------- |
| `input` - [`ReopenTradelineInput!`](#definition-reopentradelineinput) | Identifies the tradeline to reopen. |

{% tabs %}
{% tab title="Query" %}

```graphql
mutation ReopenTradeline($input: ReopenTradelineInput!) {
  reopenTradeline(input: $input) {
    tradeline {
      id
      user {
        ...UserFragment
      }
      merchant
      category
      status
      isEligible
      paymentFrequency
      lastTransactionDate
      transactionCount
      details {
        ... on RentTradelineDetails {
          ...RentTradelineDetailsFragment
        }
        ... on UtilityTradelineDetails {
          ...UtilityTradelineDetailsFragment
        }
        ... on TelcoTradelineDetails {
          ...TelcoTradelineDetailsFragment
        }
      }
      createdAt
      updatedAt
      transactions {
        ...TransactionsConnectionFragment
      }
      furnishments {
        ...FurnishmentFragment
      }
      furnishingDetails {
        ...TradelineFurnishingDetailsFragment
      }
      financialAccount {
        ...FinancialAccountFragment
      }
      reportedConsumerAccountNumber
    }
  }
}
```

{% endtab %}

{% tab title="Variables" %}

```json
{"input": ReopenTradelineInput}
```

{% endtab %}

{% tab title="Response" %}

```json
{"data": {"reopenTradeline": {"tradeline": Tradeline}}}
```

{% endtab %}
{% endtabs %}

### reportTradelineMiscategorization <a href="#mutation-reporttradelinemiscategorization" id="mutation-reporttradelinemiscategorization"></a>

The `reportTradelineMiscategorization` mutation records that a user believes a tradeline was categorized incorrectly. The tradeline's category is set to `OTHER`, which makes it ineligible for furnishing to the credit bureaus.

This action cannot be undone by the user, and clients should confirm the user's intent before calling it.

Only tradelines that have not been opened can be reported. To stop furnishing a tradeline that is already `OPEN`, use `closeTradeline` (or `deleteTradeline` in the case of fraud).

This mutation is idempotent: reporting a tradeline whose category is already `OTHER` succeeds and returns the existing tradeline.

> 🔒 Authentication: Requires user scoped authorization via session token. See the 'Session Token Authentication' section in [Enablement Services Authorization](/enablement-services/enablement-services-getting-started/enablement-services-authentication.md) guide for reference.

Business logic errors (all return HTTP status 200):

| Scenario                                      | errors.extensions.code |
| --------------------------------------------- | ---------------------- |
| Invalid input format (malformed tradelineId)  | invalid                |
| Tradeline not found or not accessible by user | not\_found             |
| User is closed                                | invalid                |
| Tradeline status is OPEN                      | invalid                |
| Internal business logic error                 | internal               |

**Response**: Returns a [`ReportTradelineMiscategorizationOutput!`](#definition-reporttradelinemiscategorizationoutput)

**Arguments**

| Name                                                                                                    | Description                         |
| ------------------------------------------------------------------------------------------------------- | ----------------------------------- |
| `input` - [`ReportTradelineMiscategorizationInput!`](#definition-reporttradelinemiscategorizationinput) | Identifies the tradeline to report. |

{% tabs %}
{% tab title="Query" %}

```graphql
mutation ReportTradelineMiscategorization($input: ReportTradelineMiscategorizationInput!) {
  reportTradelineMiscategorization(input: $input) {
    tradeline {
      id
      user {
        ...UserFragment
      }
      merchant
      category
      status
      isEligible
      paymentFrequency
      lastTransactionDate
      transactionCount
      details {
        ... on RentTradelineDetails {
          ...RentTradelineDetailsFragment
        }
        ... on UtilityTradelineDetails {
          ...UtilityTradelineDetailsFragment
        }
        ... on TelcoTradelineDetails {
          ...TelcoTradelineDetailsFragment
        }
      }
      createdAt
      updatedAt
      transactions {
        ...TransactionsConnectionFragment
      }
      furnishments {
        ...FurnishmentFragment
      }
      furnishingDetails {
        ...TradelineFurnishingDetailsFragment
      }
      financialAccount {
        ...FinancialAccountFragment
      }
      reportedConsumerAccountNumber
    }
  }
}
```

{% endtab %}

{% tab title="Variables" %}

```json
{"input": ReportTradelineMiscategorizationInput}
```

{% endtab %}

{% tab title="Response" %}

```json
{
  "data": {
    "reportTradelineMiscategorization": {
      "tradeline": Tradeline
    }
  }
}
```

{% endtab %}
{% endtabs %}

### updateMe <a href="#mutation-updateme" id="mutation-updateme"></a>

The `updateMe` mutation updates the profile of the currently authenticated user. Every field on `UpdateMeInput` is optional: only the fields you send are changed, and any field you omit keeps its current value. Phone numbers are parsed as US numbers and stored in E.164 format, so `(555) 555-0123` and `+15555550123` are equivalent. Emails are stored lowercased and compared case-insensitively, and `name` is replaced as a whole rather than merged field by field, so an update that omits `middle` clears the stored middle name. Updating `phoneNumber`, `email`, `name`, or `address` also updates the Bloom consumer record backing the user, while `notificationPreferences` and `otpPreference` are stored on the user only. Upon success it returns the updated user object.

> 🔒 Authentication: Requires user scoped authorization via session token. See the 'Session Token Authentication' section in [Enablement Services Authorization](/enablement-services/enablement-services-getting-started/enablement-services-authentication.md) guide for reference.

Business logic errors (all return HTTP status 200):

| Scenario                                                       | errors.extensions.code |
| -------------------------------------------------------------- | ---------------------- |
| Phone number parsing/formatting failed                         | invalid                |
| `email` or `name` sent before your organization is enabled     | invalid                |
| Email blank or not a valid address                             | invalid                |
| First or last name blank                                       | invalid                |
| Email already belongs to another user in the same organization | duplicate              |
| Consumer record not found for the user                         | not\_found             |
| Internal business logic error                                  | internal               |

**Response**: Returns an [`UpdateMeOutput!`](#definition-updatemeoutput)

**Arguments**

| Name                                                    | Description  |
| ------------------------------------------------------- | ------------ |
| `input` - [`UpdateMeInput!`](#definition-updatemeinput) | Input object |

{% tabs %}
{% tab title="Query" %}

```graphql
mutation UpdateMe($input: UpdateMeInput!) {
  updateMe(input: $input) {
    user {
      id
      email
      phoneNumber
      name {
        ...NameFragment
      }
      address {
        ...AddressFragment
      }
      status
      notificationPreferences
      createdAt
      updatedAt
      syncedAt
      closedAt
      connections {
        ...ConnectionsConnectionFragment
      }
      tradelines {
        ...TradelinesConnectionFragment
      }
    }
  }
}
```

{% endtab %}

{% tab title="Variables" %}

```json
{"input": UpdateMeInput}
```

{% endtab %}

{% tab title="Response" %}

```json
{"data": {"updateMe": {"user": User}}}
```

{% endtab %}
{% endtabs %}

## Types <a href="#group-types" id="group-types"></a>

### Address <a href="#definition-address" id="definition-address"></a>

*Object*

**Fields**

| Field Name                                         | Description                                                 |
| -------------------------------------------------- | ----------------------------------------------------------- |
| `line1` - [`String!`](#definition-string)          | The first line of the address.                              |
| `line2` - [`String`](#definition-string)           | The second line of the address (optional).                  |
| `city` - [`String!`](#definition-string)           | The city of the address.                                    |
| `state` - [`String!`](#definition-string)          | The state or province of the address (2 letter state code). |
| `country` - [`String!`](#definition-string)        | The country of the address.                                 |
| `zipcode` - [`String!`](#definition-string)        | The postal or ZIP code of the address (5 digit zipcode).    |
| `type` - [`AddressType!`](#definition-addresstype) | The type of address.                                        |

{% code title="Example" %}

```json
{
  "line1": "123 Main St",
  "line2": "Apt 101",
  "city": "Athens",
  "state": "FL",
  "country": "USA",
  "zipcode": "37745",
  "type": "PRIMARY"
}
```

{% endcode %}

### AddressInput <a href="#definition-addressinput" id="definition-addressinput"></a>

*Input object*

The input for a user's address.

Address `line1` and `line2` are validated server-side (including downstream consumer identity storage). See each field for requirements.

**Fields**

| Input Field                                        | Description                                                                                                                                                                                                                                                                                                                                       |
| -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `line1` - [`String!`](#definition-string)          | The first line of the address (street address). Rule Requirement Required Yes; cannot be blank Max length 100 characters Emojis Not allowed Leading spaces or dashes Not allowed Symbols / slashes No special symbols (`!@$%&*<>?` and similar) or bare slashes; fractions like `1/2` are allowed Character set Latin characters only             |
| Rule                                               | Requirement                                                                                                                                                                                                                                                                                                                                       |
| Required                                           | Yes; cannot be blank                                                                                                                                                                                                                                                                                                                              |
| Max length                                         | 100 characters                                                                                                                                                                                                                                                                                                                                    |
| Emojis                                             | Not allowed                                                                                                                                                                                                                                                                                                                                       |
| Leading spaces or dashes                           | Not allowed                                                                                                                                                                                                                                                                                                                                       |
| Symbols / slashes                                  | No special symbols (`!@$%&*<>?` and similar) or bare slashes; fractions like `1/2` are allowed                                                                                                                                                                                                                                                    |
| Character set                                      | Latin characters only                                                                                                                                                                                                                                                                                                                             |
| `line2` - [`String`](#definition-string)           | The second line of the address (apartment, suite, unit, etc.). Optional. Rule Requirement Required No Max length 100 characters when provided Emojis Not allowed Leading spaces or dashes Not allowed Symbols / slashes Same as `line1`: no special symbols or bare slashes; fractions like `1/2` are allowed Character set Latin characters only |
| Rule                                               | Requirement                                                                                                                                                                                                                                                                                                                                       |
| Required                                           | No                                                                                                                                                                                                                                                                                                                                                |
| Max length                                         | 100 characters when provided                                                                                                                                                                                                                                                                                                                      |
| Emojis                                             | Not allowed                                                                                                                                                                                                                                                                                                                                       |
| Leading spaces or dashes                           | Not allowed                                                                                                                                                                                                                                                                                                                                       |
| Symbols / slashes                                  | Same as `line1`: no special symbols or bare slashes; fractions like `1/2` are allowed                                                                                                                                                                                                                                                             |
| Character set                                      | Latin characters only                                                                                                                                                                                                                                                                                                                             |
| `city` - [`String!`](#definition-string)           | The city of the address. Can not contain numbers or special characters. Must be between 0 and 100 characters, not contain symbols or slashes, and have no leading spaces.                                                                                                                                                                         |
| `state` - [`String!`](#definition-string)          | The state or province of the address. Must be a valid 2 letter US state code.                                                                                                                                                                                                                                                                     |
| `country` - [`String!`](#definition-string)        | The country of the address. Must be between 0 and 100 characters, not contain symbols or slashes, and have no leading spaces.                                                                                                                                                                                                                     |
| `zipcode` - [`String!`](#definition-string)        | The postal or ZIP code of the address. Must be a 5 digit number.                                                                                                                                                                                                                                                                                  |
| `type` - [`AddressType!`](#definition-addresstype) | The type of address.                                                                                                                                                                                                                                                                                                                              |

{% code title="Example" %}

```json
{
  "line1": "123 Main St",
  "line2": "Apt 101",
  "city": "Athens",
  "state": "FL",
  "country": "USA",
  "zipcode": "37745",
  "type": "PRIMARY"
}
```

{% endcode %}

### AddressType <a href="#definition-addresstype" id="definition-addresstype"></a>

*Enum*

**Values**

| Enum Value  | Description                      |
| ----------- | -------------------------------- |
| `PRIMARY`   | The primary address of the user. |
| `SECONDARY` | A secondary address of the user. |
| `BUSINESS`  | A business address of the user.  |
| `MILITARY`  | A military address of the user.  |

{% code title="Example" %}

```graphql
"PRIMARY"
```

{% endcode %}

### Boolean <a href="#definition-boolean" id="definition-boolean"></a>

*Scalar*

The `Boolean` scalar type represents `true` or `false`.

{% code title="Example" %}

```json
true
```

{% endcode %}

### CloseTradelineOutput <a href="#definition-closetradelineoutput" id="definition-closetradelineoutput"></a>

*Object*

**Fields**

| Field Name                                          | Description                    |
| --------------------------------------------------- | ------------------------------ |
| `tradeline` - [`Tradeline!`](#definition-tradeline) | The tradeline that was closed. |

{% code title="Example" %}

```json
{"tradeline": Tradeline}
```

{% endcode %}

### Connection <a href="#definition-connection" id="definition-connection"></a>

*Object*

**Fields**

| Field Name                                                                  | Description                                               |
| --------------------------------------------------------------------------- | --------------------------------------------------------- |
| `id` - [`ID!`](#definition-id)                                              | The unique identifier for the connection.                 |
| `status` - [`ConnectionStatus!`](#definition-connectionstatus)              | The current status of the connection.                     |
| `institution` - [`Institution!`](#definition-institution)                   | The financial institution associated with the connection. |
| `financialAccounts` - [`[FinancialAccount!]`](#definition-financialaccount) | The financial accounts associated with the connection.    |
| `user` - [`User!`](#definition-user)                                        | The user associated with the connection.                  |

{% code title="Example" %}

```json
{
  "id": "00000000-0000-0000-0000-000000000000",
  "status": "ACTIVE",
  "institution": Institution,
  "financialAccounts": [FinancialAccount],
  "user": User
}
```

{% endcode %}

### ConnectionFilter <a href="#definition-connectionfilter" id="definition-connectionfilter"></a>

*Input object*

**Fields**

| Input Field                                                   | Description                  |
| ------------------------------------------------------------- | ---------------------------- |
| `status` - [`ConnectionStatus`](#definition-connectionstatus) | Filter by connection status. |

{% code title="Example" %}

```json
{"status": "ACTIVE"}
```

{% endcode %}

### ConnectionStatus <a href="#definition-connectionstatus" id="definition-connectionstatus"></a>

*Enum*

**Values**

| Enum Value          | Description                                                                        |
| ------------------- | ---------------------------------------------------------------------------------- |
| `ACTIVE`            | The connection is active and functioning as expected.                              |
| `REFRESH_REQUIRED`  | The connection requires a refresh to retrieve updated data.                        |
| `CLOSED`            | The connection has been closed by the user and is no longer active.                |
| `DISCONNECTED`      | There was a problem with the connection, and it needs to be refreshed or repaired. |
| `ERROR_SERVICE`     | Unexpected error in gathering connections from aggregator                          |
| `ERROR_PROVIDER`    | The connection provider is returning and error                                     |
| `ERROR_INSTITUTION` | The connection provider is returning and error from the institution                |

{% code title="Example" %}

```graphql
"ACTIVE"
```

{% endcode %}

### ConnectionsConnection <a href="#definition-connectionsconnection" id="definition-connectionsconnection"></a>

*Object*

**Fields**

| Field Name                                                     | Description                                                   |
| -------------------------------------------------------------- | ------------------------------------------------------------- |
| `edges` - [`[ConnectionsEdge!]!`](#definition-connectionsedge) | An array of connection edges                                  |
| `pageInfo` - [`PageInfo!`](#definition-pageinfo)               | PageInfo provides information about the paginated collection. |

{% code title="Example" %}

```json
{
  "edges": [ConnectionsEdge],
  "pageInfo": PageInfo
}
```

{% endcode %}

### ConnectionsEdge <a href="#definition-connectionsedge" id="definition-connectionsedge"></a>

*Object*

The connections returned for a given user.

**Fields**

| Field Name                                       | Description                                                                                                               |
| ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- |
| `cursor` - [`String!`](#definition-string)       | A unique identifier for a specific position in a paginated list. Used for fetching the next set of results in pagination. |
| `node` - [`Connection!`](#definition-connection) | The connection object.                                                                                                    |

{% code title="Example" %}

```json
{
  "cursor": "MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw",
  "node": Connection
}
```

{% endcode %}

### ConnectionsInput <a href="#definition-connectionsinput" id="definition-connectionsinput"></a>

*Input object*

The input required to query the connections that exist for a given user.

**Fields**

| Input Field                                                   | Description                                                                       |
| ------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| `first` - [`Int`](#definition-int)                            | This is a pagination parameter. (I.e. get the first N records).                   |
| `after` - [`String`](#definition-string)                      | This is a pagination parameter. (I.e. get the first N records AFTER this cursor). |
| `filter` - [`ConnectionFilter`](#definition-connectionfilter) | Filter by connection status.                                                      |

{% code title="Example" %}

```json
{
  "first": 5,
  "after": "MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw",
  "filter": ConnectionFilter
}
```

{% endcode %}

### CreditBureau <a href="#definition-creditbureau" id="definition-creditbureau"></a>

*Enum*

A credit bureau a Metro 2 file was submitted to.

**Values**

| Enum Value   | Description |
| ------------ | ----------- |
| `EQUIFAX`    | Equifax.    |
| `EXPERIAN`   | Experian.   |
| `TRANSUNION` | TransUnion. |

{% code title="Example" %}

```graphql
"EQUIFAX"
```

{% endcode %}

### CurrencyCode <a href="#definition-currencycode" id="definition-currencycode"></a>

*Enum*

**Values**

| Enum Value | Description                |
| ---------- | -------------------------- |
| `USD`      | The currency code for USD. |

{% code title="Example" %}

```graphql
"USD"
```

{% endcode %}

### Date <a href="#definition-date" id="definition-date"></a>

*Scalar*

A date in the format YYYY-MM-DD.

{% code title="Example" %}

```graphql
"2007-12-03"
```

{% endcode %}

### DateInput <a href="#definition-dateinput" id="definition-dateinput"></a>

*Input object*

**Fields**

| Input Field                         | Description |
| ----------------------------------- | ----------- |
| `day` - [`Int!`](#definition-int)   |             |
| `month` - [`Int!`](#definition-int) |             |
| `year` - [`Int!`](#definition-int)  |             |

{% code title="Example" %}

```json
{"day": "14", "month": "6", "year": "1986"}
```

{% endcode %}

### DeleteConnectionOutput <a href="#definition-deleteconnectionoutput" id="definition-deleteconnectionoutput"></a>

*Object*

**Fields**

| Field Name                                             | Description                    |
| ------------------------------------------------------ | ------------------------------ |
| `connection` - [`Connection!`](#definition-connection) | The deleted connection object. |

{% code title="Example" %}

```json
{"connection": Connection}
```

{% endcode %}

### DeleteMeOutput <a href="#definition-deletemeoutput" id="definition-deletemeoutput"></a>

*Object*

**Fields**

| Field Name                           | Description          |
| ------------------------------------ | -------------------- |
| `user` - [`User!`](#definition-user) | Returned user object |

{% code title="Example" %}

```json
{"user": User}
```

{% endcode %}

### DeleteTradelineInput <a href="#definition-deletetradelineinput" id="definition-deletetradelineinput"></a>

*Input object*

Input for the deleteTradeline mutation (soft-delete due to fraud).

**Fields**

| Input Field                             | Description                  |
| --------------------------------------- | ---------------------------- |
| `tradelineId` - [`ID!`](#definition-id) | Unique tradeline identifier. |

{% code title="Example" %}

```json
{
  "tradelineId": "00000000-0000-0000-0000-000000000000"
}
```

{% endcode %}

### DeleteTradelineOutput <a href="#definition-deletetradelineoutput" id="definition-deletetradelineoutput"></a>

*Object*

**Fields**

| Field Name                                          | Description                                    |
| --------------------------------------------------- | ---------------------------------------------- |
| `tradeline` - [`Tradeline!`](#definition-tradeline) | The tradeline that was deleted (soft-deleted). |

{% code title="Example" %}

```json
{"tradeline": Tradeline}
```

{% endcode %}

### FinancialAccount <a href="#definition-financialaccount" id="definition-financialaccount"></a>

*Object*

**Fields**

| Field Name                                                           | Description                                                                                               |
| -------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| `id` - [`ID!`](#definition-id)                                       | The unique identifier for the financial account.                                                          |
| `name` - [`String!`](#definition-string)                             | The name of the financial account.                                                                        |
| `type` - [`FinancialAccountType!`](#definition-financialaccounttype) | The type of the financial account.                                                                        |
| `mask` - [`String!`](#definition-string)                             | The mask of the financial account (usually the last 4 digits of the account number).                      |
| `institution` - [`Institution!`](#definition-institution)            | The institution associated with the financial account.                                                    |
| `connection` - [`Connection`](#definition-connection)                | The current connection for this financial account.                                                        |
| `sourceId` - [`String`](#definition-string)                          | The account's identifier at the upstream data provider. Null when the provider's account id is not known. |

{% code title="Example" %}

```json
{
  "id": "00000000-0000-0000-0000-000000000000",
  "name": "xyz789",
  "type": "DEPOSITORY",
  "mask": "xyz789",
  "institution": Institution,
  "connection": Connection,
  "sourceId": "abc123"
}
```

{% endcode %}

### FinancialAccountType <a href="#definition-financialaccounttype" id="definition-financialaccounttype"></a>

*Enum*

**Values**

| Enum Value   | Description                                                                                                                                                                                                                                |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `DEPOSITORY` | Checking, Savings and cash management.                                                                                                                                                                                                     |
| `INVESTMENT` | Brokerage, retirement and other investments.                                                                                                                                                                                               |
| `CREDIT`     | Credit cards, and Lines of Credit.                                                                                                                                                                                                         |
| `LOAN`       | Mortgage, student and installment loans.                                                                                                                                                                                                   |
| `UNKNOWN`    | Reserved for historical records where the type can no longer be determined. This value is only used for financial accounts created before the type requirement was added and the type can no longer be retrieved from the external source. |

{% code title="Example" %}

```graphql
"DEPOSITORY"
```

{% endcode %}

### Furnishment <a href="#definition-furnishment" id="definition-furnishment"></a>

*Object*

The furnishment object.

**Fields**

| Field Name                                  | Description                                |
| ------------------------------------------- | ------------------------------------------ |
| `id` - [`ID!`](#definition-id)              | The unique identifier for the furnishment. |
| `furnishedAt` - [`Time!`](#definition-time) | The time the data was furnished.           |

{% code title="Example" %}

```json
{
  "id": "00000000-0000-0000-0000-000000000000",
  "furnishedAt": "10:15:30Z"
}
```

{% endcode %}

### FurnishmentSubmission <a href="#definition-furnishmentsubmission" id="definition-furnishmentsubmission"></a>

*Object*

A single Metro 2 file submission to one credit bureau.

**Fields**

| Field Name                                             | Description                                    |
| ------------------------------------------------------ | ---------------------------------------------- |
| `bureau` - [`CreditBureau!`](#definition-creditbureau) | The bureau the file was submitted to.          |
| `submittedAt` - [`Date!`](#definition-date)            | The date the file was submitted to the bureau. |

{% code title="Example" %}

```json
{"bureau": "EQUIFAX", "submittedAt": "2026-08-10"}
```

{% endcode %}

### ID <a href="#definition-id" id="definition-id"></a>

*Scalar*

The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"4"`) or integer (such as `4`) input value will be accepted as an ID.

{% code title="Example" %}

```graphql
"00000000-0000-0000-0000-000000000000"
```

{% endcode %}

### ImportConnectionsInput <a href="#definition-importconnectionsinput" id="definition-importconnectionsinput"></a>

*Input object*

**Fields**

| Input Field                                                                                      | Description                                  |
| ------------------------------------------------------------------------------------------------ | -------------------------------------------- |
| `tokens` - [`[String!]`](#definition-string)                                                     | The Plaid access tokens or Processor tokens. |
| `tokensWithMetadata` - [`[ProcessorTokenWithMetadata!]`](#definition-processortokenwithmetadata) |                                              |

{% code title="Example" %}

```json
{
  "tokens": ["abc123"],
  "tokensWithMetadata": [ProcessorTokenWithMetadata]
}
```

{% endcode %}

### ImportConnectionsOutput <a href="#definition-importconnectionsoutput" id="definition-importconnectionsoutput"></a>

*Object*

**Fields**

| Field Name                                                 | Description                     |
| ---------------------------------------------------------- | ------------------------------- |
| `connections` - [`[Connection!]!`](#definition-connection) | The created connection objects. |

{% code title="Example" %}

```json
{"connections": [Connection]}
```

{% endcode %}

### ImportMastercardProcessorTokenInput <a href="#definition-importmastercardprocessortokeninput" id="definition-importmastercardprocessortokeninput"></a>

*Input object*

**Fields**

| Input Field                               | Description                                                                         |
| ----------------------------------------- | ----------------------------------------------------------------------------------- |
| `token` - [`String!`](#definition-string) | The Mastercard token. It is passed to the aggregator as the connection `reference`. |

{% code title="Example" %}

```json
{"token": "abc123"}
```

{% endcode %}

### ImportMastercardProcessorTokenOutput <a href="#definition-importmastercardprocessortokenoutput" id="definition-importmastercardprocessortokenoutput"></a>

*Object*

**Fields**

| Field Name                                             | Description                    |
| ------------------------------------------------------ | ------------------------------ |
| `connection` - [`Connection!`](#definition-connection) | The created connection object. |

{% code title="Example" %}

```json
{"connection": Connection}
```

{% endcode %}

### ImportPlaidProcessorTokensInput <a href="#definition-importplaidprocessortokensinput" id="definition-importplaidprocessortokensinput"></a>

*Input object*

**Fields**

| Input Field                                                                                      | Description                                  |
| ------------------------------------------------------------------------------------------------ | -------------------------------------------- |
| `tokens` - [`[String!]`](#definition-string)                                                     | The Plaid access tokens or Processor tokens. |
| `tokensWithMetadata` - [`[ProcessorTokenWithMetadata!]`](#definition-processortokenwithmetadata) |                                              |

{% code title="Example" %}

```json
{
  "tokens": ["xyz789"],
  "tokensWithMetadata": [ProcessorTokenWithMetadata]
}
```

{% endcode %}

### ImportPlaidProcessorTokensOutput <a href="#definition-importplaidprocessortokensoutput" id="definition-importplaidprocessortokensoutput"></a>

*Object*

**Fields**

| Field Name                                                                                 | Description |
| ------------------------------------------------------------------------------------------ | ----------- |
| `successes` - [`[ProcessorTokenImportSuccess!]!`](#definition-processortokenimportsuccess) |             |
| `failures` - [`[TokenError!]!`](#definition-tokenerror)                                    |             |

{% code title="Example" %}

```json
{
  "successes": [ProcessorTokenImportSuccess],
  "failures": [TokenError]
}
```

{% endcode %}

### ImportUserInput <a href="#definition-importuserinput" id="definition-importuserinput"></a>

*Input object*

**Fields**

| Input Field                            | Description                                                                                                                                                                                                           |
| -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id` - [`String!`](#definition-string) | The ID of the consumer to import. This corresponds to the bloom consumer identifier used in [the core consumers endpoints](/reference/core/consumers/retrieve-an-existing-consumer-using-the-generated-identifier.md) |

{% code title="Example" %}

```json
{"id": "00000000-0000-0000-0000-000000000000"}
```

{% endcode %}

### ImportUserOutput <a href="#definition-importuseroutput" id="definition-importuseroutput"></a>

*Object*

**Fields**

| Field Name                           | Description                                                   |
| ------------------------------------ | ------------------------------------------------------------- |
| `user` - [`User!`](#definition-user) | The enablement user object created as a result of the import. |

{% code title="Example" %}

```json
{"user": User}
```

{% endcode %}

### Institution <a href="#definition-institution" id="definition-institution"></a>

*Object*

**Fields**

| Field Name                                  | Description                                |
| ------------------------------------------- | ------------------------------------------ |
| `name` - [`String!`](#definition-string)    | The name of the financial institution.     |
| `logoUrl` - [`String!`](#definition-string) | The logo URL of the financial institution. |

{% code title="Example" %}

```json
{"name": "bloom", "logoUrl": "https://example.com/logo.png"}
```

{% endcode %}

### Int <a href="#definition-int" id="definition-int"></a>

*Scalar*

The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

{% code title="Example" %}

```json
987
```

{% endcode %}

### Money <a href="#definition-money" id="definition-money"></a>

*Object*

The money object.

**Fields**

| Field Name                                               | Description                |
| -------------------------------------------------------- | -------------------------- |
| `amount` - [`Int!`](#definition-int)                     | The amount of money.       |
| `currency` - [`CurrencyCode!`](#definition-currencycode) | The currency of the money. |

{% code title="Example" %}

```json
{"amount": 987, "currency": "USD"}
```

{% endcode %}

### Name <a href="#definition-name" id="definition-name"></a>

*Object*

**Fields**

| Field Name                                | Description                                       |
| ----------------------------------------- | ------------------------------------------------- |
| `first` - [`String!`](#definition-string) | A user's legal first name.                        |
| `middle` - [`String`](#definition-string) | A user's legal middle name or initial. (optional) |
| `last` - [`String!`](#definition-string)  | A user's legal last name.                         |

{% code title="Example" %}

```json
{"first": "Buzz", "middle": "Z", "last": "Inga"}
```

{% endcode %}

### NameInput <a href="#definition-nameinput" id="definition-nameinput"></a>

*Input object*

**Fields**

| Input Field                               | Description                            |
| ----------------------------------------- | -------------------------------------- |
| `first` - [`String!`](#definition-string) | The users legal first name             |
| `middle` - [`String`](#definition-string) | The users legal middle name (optional) |
| `last` - [`String!`](#definition-string)  | The users legal last name              |

{% code title="Example" %}

```json
{"first": "Buzz", "middle": "Z", "last": "Inga"}
```

{% endcode %}

### Node <a href="#definition-node" id="definition-node"></a>

*Interface*

**Fields**

| Field Name                     | Description                         |
| ------------------------------ | ----------------------------------- |
| `id` - [`ID!`](#definition-id) | The unique identifier for the node. |

**Possible Types**

| Node Types                                         |
| -------------------------------------------------- |
| [`FinancialAccount`](#definition-financialaccount) |
| [`Connection`](#definition-connection)             |
| [`Transaction`](#definition-transaction)           |
| [`User`](#definition-user)                         |

{% code title="Example" %}

```json
{
  "id": "00000000-0000-0000-0000-000000000000"
}
```

{% endcode %}

### NotificationType <a href="#definition-notificationtype" id="definition-notificationtype"></a>

*Enum*

**Values**

| Enum Value | Description                                                                                                                  |
| ---------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `EMAIL`    | May be used in the future, but not at this time for enablement services customers.                                           |
| `SMS`      | May be used in the future, but not at this time for enablement services customers.                                           |
| `NONE`     | This should be the value used as we do not send notifications at this time to users tied to an enablement services customer. |

{% code title="Example" %}

```graphql
"EMAIL"
```

{% endcode %}

### OTPMethod <a href="#definition-otpmethod" id="definition-otpmethod"></a>

*Enum*

**Values**

| Enum Value | Description |
| ---------- | ----------- |
| `SMS`      |             |
| `EMAIL`    |             |

{% code title="Example" %}

```graphql
"SMS"
```

{% endcode %}

### OpenRentTradelineOutput <a href="#definition-openrenttradelineoutput" id="definition-openrenttradelineoutput"></a>

*Object*

**Fields**

| Field Name                                         | Description                    |
| -------------------------------------------------- | ------------------------------ |
| `tradeline` - [`Tradeline`](#definition-tradeline) | The tradeline that was opened. |

{% code title="Example" %}

```json
{"tradeline": Tradeline}
```

{% endcode %}

### OpenTelcoTradelineOutput <a href="#definition-opentelcotradelineoutput" id="definition-opentelcotradelineoutput"></a>

*Object*

**Fields**

| Field Name                                         | Description                    |
| -------------------------------------------------- | ------------------------------ |
| `tradeline` - [`Tradeline`](#definition-tradeline) | The tradeline that was opened. |

{% code title="Example" %}

```json
{"tradeline": Tradeline}
```

{% endcode %}

### OpenUtilityTradelineOutput <a href="#definition-openutilitytradelineoutput" id="definition-openutilitytradelineoutput"></a>

*Object*

**Fields**

| Field Name                                         | Description                    |
| -------------------------------------------------- | ------------------------------ |
| `tradeline` - [`Tradeline`](#definition-tradeline) | The tradeline that was opened. |

{% code title="Example" %}

```json
{"tradeline": Tradeline}
```

{% endcode %}

### PageInfo <a href="#definition-pageinfo" id="definition-pageinfo"></a>

*Object*

PageInfo provides information about the paginated collection.

**Fields**

| Field Name                                        | Description                                 |
| ------------------------------------------------- | ------------------------------------------- |
| `hasNextPage` - [`Boolean!`](#definition-boolean) | Indicates if there is a next page.          |
| `endCursor` - [`String`](#definition-string)      | The cursor for the end of the current page. |

{% code title="Example" %}

```json
{
  "hasNextPage": true,
  "endCursor": "MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw"
}
```

{% endcode %}

### PaymentFrequency <a href="#definition-paymentfrequency" id="definition-paymentfrequency"></a>

*Enum*

How often the tradeline is paid.

**Values**

| Enum Value    | Description                         |
| ------------- | ----------------------------------- |
| `UNKNOWN`     | The payment frequency is unknown.   |
| `DAILY`       | Payments are made daily.            |
| `WEEKLY`      | Payments are made weekly.           |
| `BIWEEKLY`    | Payments are made biweekly.         |
| `SEMIMONTHLY` | Payments are made semimonthly.      |
| `MONTHLY`     | Payments are made monthly.          |
| `BIMONTHLY`   | Payments are made every two months. |
| `QUARTERLY`   | Payments are made quarterly.        |
| `SEMI_ANNUAL` | Payments are made semi-annually.    |
| `ANNUAL`      | Payments are made annually.         |

{% code title="Example" %}

```graphql
"UNKNOWN"
```

{% endcode %}

### ProcessorTokenImportSuccess <a href="#definition-processortokenimportsuccess" id="definition-processortokenimportsuccess"></a>

*Object*

**Fields**

| Field Name                                             | Description |
| ------------------------------------------------------ | ----------- |
| `token` - [`String!`](#definition-string)              |             |
| `connection` - [`Connection!`](#definition-connection) |             |

{% code title="Example" %}

```json
{
  "token": "abc123",
  "connection": Connection
}
```

{% endcode %}

### ProcessorTokenWithMetadata <a href="#definition-processortokenwithmetadata" id="definition-processortokenwithmetadata"></a>

*Input object*

**Fields**

| Input Field                                                 | Description |
| ----------------------------------------------------------- | ----------- |
| `token` - [`String!`](#definition-string)                   |             |
| `historicalSyncComplete` - [`Boolean`](#definition-boolean) |             |

{% code title="Example" %}

```json
{
  "token": "abc123",
  "historicalSyncComplete": false
}
```

{% endcode %}

### ReOpenOrganizationUserInput <a href="#definition-reopenorganizationuserinput" id="definition-reopenorganizationuserinput"></a>

*Input object*

**Fields**

| Input Field                        | Description                                         |
| ---------------------------------- | --------------------------------------------------- |
| `userId` - [`ID!`](#definition-id) | The unique identifier of the closed user to reopen. |

{% code title="Example" %}

```json
{
  "userId": "00000000-0000-0000-0000-000000000000"
}
```

{% endcode %}

### ReOpenOrganizationUserOutput <a href="#definition-reopenorganizationuseroutput" id="definition-reopenorganizationuseroutput"></a>

*Object*

**Fields**

| Field Name                          | Description                 |
| ----------------------------------- | --------------------------- |
| `user` - [`User`](#definition-user) | The user that was reopened. |

{% code title="Example" %}

```json
{"user": User}
```

{% endcode %}

### RegisterOrganizationUserInput <a href="#definition-registerorganizationuserinput" id="definition-registerorganizationuserinput"></a>

*Input object*

**Fields**

| Input Field                                             | Description                                                                                      |
| ------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| `organizationSlug` - [`String!`](#definition-string)    | URL-friendly name of the organization.                                                           |
| `email` - [`String!`](#definition-string)               | The email address of the user.                                                                   |
| `phoneNumber` - [`String!`](#definition-string)         | The phone number of the user. Must be a US phone number.                                         |
| `name` - [`NameInput!`](#definition-nameinput)          | The name of the user.                                                                            |
| `address` - [`AddressInput!`](#definition-addressinput) | The address of the user.                                                                         |
| `dateOfBirth` - [`DateInput!`](#definition-dateinput)   | The date of birth of the user. Must not be in the future, and can not be less than 18 years old. |
| `nationalId` - [`String`](#definition-string)           | The national ID of the user (optional).                                                          |
| `visitorID` - [`String`](#definition-string)            | The visitor ID for tracking purposes (optional).                                                 |

{% code title="Example" %}

```json
{
  "organizationSlug": "bloom",
  "email": "buzz.inga@bloomcredit.io",
  "phoneNumber": "+12345678901",
  "name": NameInput,
  "address": AddressInput,
  "dateOfBirth": DateInput,
  "nationalId": "12345",
  "visitorID": "12345"
}
```

{% endcode %}

### RegisterOrganizationUserOutput <a href="#definition-registerorganizationuseroutput" id="definition-registerorganizationuseroutput"></a>

*Object*

**Fields**

| Field Name                          | Description                                              |
| ----------------------------------- | -------------------------------------------------------- |
| `user` - [`User`](#definition-user) | The user object created as a result of the registration. |

{% code title="Example" %}

```json
{"user": User}
```

{% endcode %}

### RentTradelineDetails <a href="#definition-renttradelinedetails" id="definition-renttradelinedetails"></a>

*Object*

The details associated with a rent tradeline.

**Fields**

| Field Name                                                       | Description                                                |
| ---------------------------------------------------------------- | ---------------------------------------------------------- |
| `serviceAddressString` - [`String`](#definition-string)          | Service address of the tradeline.                          |
| `serviceAddressType` - [`AddressType!`](#definition-addresstype) | Type of service address.                                   |
| `leaseStartDate` - [`Date!`](#definition-date)                   | The start date of the lease.                               |
| `isPrimaryAddress` - [`Boolean!`](#definition-boolean)           | Indicates if this is the primary address.                  |
| `hasOtherMortgageOrRent` - [`Boolean!`](#definition-boolean)     | Indicates if there are other mortgage or rent obligations. |

{% code title="Example" %}

```json
{
  "serviceAddressString": "xyz789",
  "serviceAddressType": "PRIMARY",
  "leaseStartDate": "2007-12-03",
  "isPrimaryAddress": true,
  "hasOtherMortgageOrRent": false
}
```

{% endcode %}

### RentTradelineInput <a href="#definition-renttradelineinput" id="definition-renttradelineinput"></a>

*Input object*

**Fields**

| Input Field                                                     | Description                                                |
| --------------------------------------------------------------- | ---------------------------------------------------------- |
| `serviceAddressString` - [`String`](#definition-string)         | The service address of the tradeline.                      |
| `serviceAddressType` - [`AddressType`](#definition-addresstype) | The type of service address.                               |
| `leaseStartDate` - [`Date`](#definition-date)                   | The start date of the lease.                               |
| `isPrimaryAddress` - [`Boolean!`](#definition-boolean)          | Indicates if this is the primary address.                  |
| `hasOtherMortgageOrRent` - [`Boolean!`](#definition-boolean)    | Indicates if there are other mortgage or rent obligations. |

{% code title="Example" %}

```json
{
  "serviceAddressString": "abc123",
  "serviceAddressType": "PRIMARY",
  "leaseStartDate": "2007-12-03",
  "isPrimaryAddress": true,
  "hasOtherMortgageOrRent": true
}
```

{% endcode %}

### ReopenTradelineInput <a href="#definition-reopentradelineinput" id="definition-reopentradelineinput"></a>

*Input object*

Input for the reopenTradeline mutation.

**Fields**

| Input Field                             | Description                                   |
| --------------------------------------- | --------------------------------------------- |
| `tradelineId` - [`ID!`](#definition-id) | Unique identifier of the tradeline to reopen. |

{% code title="Example" %}

```json
{
  "tradelineId": "00000000-0000-0000-0000-000000000000"
}
```

{% endcode %}

### ReopenTradelineOutput <a href="#definition-reopentradelineoutput" id="definition-reopentradelineoutput"></a>

*Object*

**Fields**

| Field Name                                          | Description                      |
| --------------------------------------------------- | -------------------------------- |
| `tradeline` - [`Tradeline!`](#definition-tradeline) | The tradeline that was reopened. |

{% code title="Example" %}

```json
{"tradeline": Tradeline}
```

{% endcode %}

### ReportTradelineMiscategorizationInput <a href="#definition-reporttradelinemiscategorizationinput" id="definition-reporttradelinemiscategorizationinput"></a>

*Input object*

Input for the reportTradelineMiscategorization mutation.

**Fields**

| Input Field                             | Description                                                                 |
| --------------------------------------- | --------------------------------------------------------------------------- |
| `tradelineId` - [`ID!`](#definition-id) | Unique identifier of the tradeline the user is reporting as miscategorized. |

{% code title="Example" %}

```json
{
  "tradelineId": "00000000-0000-0000-0000-000000000000"
}
```

{% endcode %}

### ReportTradelineMiscategorizationOutput <a href="#definition-reporttradelinemiscategorizationoutput" id="definition-reporttradelinemiscategorizationoutput"></a>

*Object*

**Fields**

| Field Name                                          | Description                                                                                      |
| --------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| `tradeline` - [`Tradeline!`](#definition-tradeline) | The tradeline after recategorization. Its `category` is now `OTHER` and `isEligible` is `false`. |

{% code title="Example" %}

```json
{"tradeline": Tradeline}
```

{% endcode %}

### String <a href="#definition-string" id="definition-string"></a>

*Scalar*

The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

{% code title="Example" %}

```graphql
"abc123"
```

{% endcode %}

### TelcoTradelineDetails <a href="#definition-telcotradelinedetails" id="definition-telcotradelinedetails"></a>

*Object*

The details associated with a telco tradeline.

**Fields**

| Field Name                                       | Description                            |
| ------------------------------------------------ | -------------------------------------- |
| `servicePhone` - [`String!`](#definition-string) | Service phone number of the tradeline. |

{% code title="Example" %}

```json
{"servicePhone": "xyz789"}
```

{% endcode %}

### TelcoTradelineInput <a href="#definition-telcotradelineinput" id="definition-telcotradelineinput"></a>

*Input object*

**Fields**

| Input Field                                      | Description                                |
| ------------------------------------------------ | ------------------------------------------ |
| `servicePhone` - [`String!`](#definition-string) | The service phone number of the tradeline. |

{% code title="Example" %}

```json
{"servicePhone": "abc123"}
```

{% endcode %}

### Time <a href="#definition-time" id="definition-time"></a>

*Scalar*

An RFC3339 formatted timestamp.

{% code title="Example" %}

```graphql
"10:15:30Z"
```

{% endcode %}

### TokenError <a href="#definition-tokenerror" id="definition-tokenerror"></a>

*Object*

**Fields**

| Field Name                                | Description |
| ----------------------------------------- | ----------- |
| `token` - [`String!`](#definition-string) |             |
| `error` - [`String!`](#definition-string) |             |

{% code title="Example" %}

```json
{
  "token": "abc123",
  "error": "xyz789"
}
```

{% endcode %}

### Tradeline <a href="#definition-tradeline" id="definition-tradeline"></a>

*Object*

**Fields**

| Field Name                                                                                   | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| -------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id` - [`ID!`](#definition-id)                                                               | The unique identifier for the tradeline.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `user` - [`User!`](#definition-user)                                                         | The user that owns the tradeline.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `merchant` - [`String!`](#definition-string)                                                 | The merchant associated with the tradeline.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `category` - [`TradelineCategory!`](#definition-tradelinecategory)                           | The category of the tradeline.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `status` - [`TradelineStatus!`](#definition-tradelinestatus)                                 | The status of the tradeline.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `isEligible` - [`Boolean!`](#definition-boolean)                                             | Whether or not the tradeline is eligible for reporting to the credit bureaus. A tradelines eligibility is not dependent on the tradeline status. A tradeline is eligible if the following conditions are met: The tradeline has a payment frequency of bi-weekly or less frequent. (NOT DAILY/WEEKLY) The tradeline is an eligible category. (RENT, UTILITY, TELCO, SUBSCRIPTION) The tradeline has a transaction within the last 90 days, and at least 3 transactions total. The tradeline merchant is not the unattributed placeholder "Rent", which names no landlord and therefore cannot be furnished.                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `paymentFrequency` - [`PaymentFrequency!`](#definition-paymentfrequency)                     | The payment frequency of the tradeline.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `lastTransactionDate` - [`Date!`](#definition-date)                                          | The last transaction date of the tradeline.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `transactionCount` - [`Int!`](#definition-int)                                               | The number of transactions associated with the tradeline.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `details` - [`TradelineDetails`](#definition-tradelinedetails)                               | The details associated with the tradeline.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `createdAt` - [`Time!`](#definition-time)                                                    | The time the tradeline was created.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `updatedAt` - [`Time!`](#definition-time)                                                    | The time the tradeline was last updated.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `transactions` - [`TransactionsConnection!`](#definition-transactionsconnection)             | The transactions associated with the tradeline.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Arguments `input` - [`TransactionsInput!`](#definition-transactionsinput)                    |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `furnishments` - [`[Furnishment]`](#definition-furnishment)                                  | Furnishment data associated to the tradeline                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `furnishingDetails` - [`TradelineFurnishingDetails`](#definition-tradelinefurnishingdetails) | Details of what has been furnished to the credit bureaus for this tradeline, aggregated across every reported Metro 2 cycle. `bureaus` is the union across every cycle. If one month went to two bureaus and the next went to one, both bureaus are listed here. Use the per-transaction `furnishingDetails` for cycle-by-cycle attribution. Reading the response correctly: `null` — the tradeline has never been furnished. Furnishing history is also reported for closed tradelines, so this does not simply mean the tradeline is closed. This field is being rolled out progressively, so `null` is also what you will see before it is enabled for your organization. non-null with an empty `bureaus` list — the tradeline has been furnished, but no bureau submission has been recorded yet. Do not read this as never furnished. `query MyBillsFurnishing { me { tradelines(input: { first: 10 }) { edges { node { merchant furnishingDetails { bureaus lastSubmittedAt submissions { bureau submittedAt } } } } } } }` |
| `financialAccount` - [`FinancialAccount`](#definition-financialaccount)                      | The most recent financial account associated with this tradeline, if any. A tradeline may be linked to different financial accounts over time; this returns only the current one.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `reportedConsumerAccountNumber` - [`String`](#definition-string)                             | The account number reported to credit bureaus for this tradeline.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |

{% code title="Example" %}

```json
{
  "id": "00000000-0000-0000-0000-000000000000",
  "user": User,
  "merchant": "Pollen Water Co",
  "category": "RENT",
  "status": "UNOPENED",
  "isEligible": true,
  "paymentFrequency": "MONTHLY",
  "lastTransactionDate": "2007-12-03",
  "transactionCount": 987,
  "details": RentTradelineDetails,
  "createdAt": "10:15:30Z",
  "updatedAt": "10:15:30Z",
  "transactions": TransactionsConnection,
  "furnishments": [Furnishment],
  "furnishingDetails": TradelineFurnishingDetails,
  "financialAccount": FinancialAccount,
  "reportedConsumerAccountNumber": "abc123"
}
```

{% endcode %}

### TradelineCategory <a href="#definition-tradelinecategory" id="definition-tradelinecategory"></a>

*Enum*

**Values**

| Enum Value     | Description                                        |
| -------------- | -------------------------------------------------- |
| `RENT`         | A tradeline associated with rent payments.         |
| `UTILITY`      | A tradeline associated with utility payments.      |
| `TELCO`        | A tradeline associated with telco payments.        |
| `SUBSCRIPTION` | A tradeline associated with subscription payments. |
| `OTHER`        | A tradeline associated with other payments.        |

{% code title="Example" %}

```graphql
"RENT"
```

{% endcode %}

### TradelineDetails <a href="#definition-tradelinedetails" id="definition-tradelinedetails"></a>

*Union*

The details associated with a tradeline. See individual types for more details.

**Types**

| Union Types                                                      |
| ---------------------------------------------------------------- |
| [`RentTradelineDetails`](#definition-renttradelinedetails)       |
| [`UtilityTradelineDetails`](#definition-utilitytradelinedetails) |
| [`TelcoTradelineDetails`](#definition-telcotradelinedetails)     |

{% code title="Example" %}

```graphql
RentTradelineDetails
```

{% endcode %}

### TradelineFurnishingDetails <a href="#definition-tradelinefurnishingdetails" id="definition-tradelinefurnishingdetails"></a>

*Object*

Furnishing details for a tradeline, aggregated across every Metro 2 cycle that has been reported for it.

**Fields**

| Field Name                                                                       | Description                                                                                                                                                                                                                                                                                             |
| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `bureaus` - [`[CreditBureau!]!`](#definition-creditbureau)                       | The distinct bureaus this tradeline has ever been furnished to. Empty until a bureau submission has been recorded; an empty list does not mean the tradeline has never been furnished.                                                                                                                  |
| `submissions` - [`[FurnishmentSubmission!]!`](#definition-furnishmentsubmission) | Every submission across every reported cycle, ordered newest cycle first. Cycles are ordered by the date the account information covers, which is not necessarily the order they were submitted to the bureaus in: a late catch-up file for an older cycle can be submitted after a newer cycle's file. |
| `lastSubmittedAt` - [`Date`](#definition-date)                                   | The most recent submission date across all bureaus and all cycles. Null until a bureau submission has been recorded. Because submissions are not ordered by submission date, this is the maximum across the whole list rather than the date of the first entry.                                         |

{% code title="Example" %}

```json
{
  "bureaus": ["EQUIFAX", "TRANSUNION"],
  "submissions": [FurnishmentSubmission],
  "lastSubmittedAt": "2026-08-10"
}
```

{% endcode %}

### TradelineStatus <a href="#definition-tradelinestatus" id="definition-tradelinestatus"></a>

*Enum*

**Values**

| Enum Value | Description                                         |
| ---------- | --------------------------------------------------- |
| `UNOPENED` | The tradeline has never been opened.                |
| `OPEN`     | The tradeline is currently open.                    |
| `CLOSED`   | The tradeline has been closed.                      |
| `DELETED`  | The tradeline has been deleted (e.g. due to fraud). |

{% code title="Example" %}

```graphql
"UNOPENED"
```

{% endcode %}

### TradelinesConnection <a href="#definition-tradelinesconnection" id="definition-tradelinesconnection"></a>

*Object*

**Fields**

| Field Name                                                   | Description                                               |
| ------------------------------------------------------------ | --------------------------------------------------------- |
| `edges` - [`[TradelinesEdge!]!`](#definition-tradelinesedge) | The edges of the tradelines connection.                   |
| `pageInfo` - [`PageInfo!`](#definition-pageinfo)             | The pagination information for the tradelines connection. |

{% code title="Example" %}

```json
{
  "edges": [TradelinesEdge],
  "pageInfo": PageInfo
}
```

{% endcode %}

### TradelinesEdge <a href="#definition-tradelinesedge" id="definition-tradelinesedge"></a>

*Object*

The tradelines returned for a given connection.

**Fields**

| Field Name                                     | Description                                                                                                               |
| ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| `cursor` - [`String!`](#definition-string)     | A unique identifier for a specific position in a paginated list. Used for fetching the next set of results in pagination. |
| `node` - [`Tradeline!`](#definition-tradeline) | The tradeline object.                                                                                                     |

{% code title="Example" %}

```json
{
  "cursor": "MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw",
  "node": Tradeline
}
```

{% endcode %}

### TradelinesInput <a href="#definition-tradelinesinput" id="definition-tradelinesinput"></a>

*Input object*

**Fields**

| Input Field                                                 | Description                                                                             |
| ----------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| `first` - [`Int`](#definition-int)                          | This is a pagination parameter. (I.e. get the first N records).                         |
| `after` - [`String`](#definition-string)                    | This is a pagination parameter. (I.e. get the first N records AFTER this cursor).       |
| `status` - [`TradelineStatus`](#definition-tradelinestatus) | Filter by the status of the tradeline.                                                  |
| `isEligible` - [`Boolean`](#definition-boolean)             | Filter by whether or not the tradeline is eligible for reporting to the credit bureaus. |

{% code title="Example" %}

```json
{"first": 5, "after": "3", "status": "UNOPENED", "isEligible": true}
```

{% endcode %}

### Transaction <a href="#definition-transaction" id="definition-transaction"></a>

*Object*

The transaction object.

**Fields**

| Field Name                                                                                       | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id` - [`ID!`](#definition-id)                                                                   | The unique identifier for the transaction.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `date` - [`Date!`](#definition-date)                                                             | The date of the transaction.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `value` - [`Money!`](#definition-money)                                                          | The value of the transaction.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `tradeline` - [`Tradeline!`](#definition-tradeline)                                              | The tradeline that the transaction is associated with.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `furnishingDetails` - [`TransactionFurnishingDetails`](#definition-transactionfurnishingdetails) | Details of what was furnished to the credit bureaus for the Metro 2 cycle this transaction was reported in. Reading the response correctly: `null` — this transaction has not been included in a furnishment. Either it is still queued for the next run, or the tradeline has never been furnished. This field is being rolled out progressively, so `null` is also what you will see before it is enabled for your organization. non-null with an empty `bureaus` list and a null `furnishedAt` — the cycle was furnished, but no bureau submission has been recorded for it yet. `query MyBillTransactionFurnishing { me { tradelines(input: { first: 1 }) { edges { node { transactions(input: { first: 24 }) { edges { node { date value { amount currency } furnishingDetails { bureaus furnishedAt dateOfAccountInformation } } } } } } } } }` |

{% code title="Example" %}

```json
{
  "id": "00000000-0000-0000-0000-000000000000",
  "date": "2007-12-03",
  "value": Money,
  "tradeline": Tradeline,
  "furnishingDetails": TransactionFurnishingDetails
}
```

{% endcode %}

### TransactionFurnishingDetails <a href="#definition-transactionfurnishingdetails" id="definition-transactionfurnishingdetails"></a>

*Object*

Furnishing details for the single Metro 2 cycle a transaction was reported in.

**Fields**

| Field Name                                                                       | Description                                                                                                                                            |
| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `bureaus` - [`[CreditBureau!]!`](#definition-creditbureau)                       | The bureaus this cycle was submitted to. Empty until a bureau submission has been recorded; an empty list does not mean the cycle was never furnished. |
| `submissions` - [`[FurnishmentSubmission!]!`](#definition-furnishmentsubmission) | The individual bureau submissions for this cycle.                                                                                                      |
| `furnishedAt` - [`Date`](#definition-date)                                       | The earliest bureau submission date for this cycle. Null until a bureau submission has been recorded.                                                  |
| `dateOfAccountInformation` - [`Date!`](#definition-date)                         | The Metro 2 date of account information reported for this cycle.                                                                                       |

{% code title="Example" %}

```json
{
  "bureaus": ["EQUIFAX", "TRANSUNION"],
  "submissions": [FurnishmentSubmission],
  "furnishedAt": "2026-08-10",
  "dateOfAccountInformation": "2026-08-08"
}
```

{% endcode %}

### TransactionsConnection <a href="#definition-transactionsconnection" id="definition-transactionsconnection"></a>

*Object*

**Fields**

| Field Name                                                     | Description                                                 |
| -------------------------------------------------------------- | ----------------------------------------------------------- |
| `edges` - [`[TransactionsEdge]`](#definition-transactionsedge) | The edges of the transactions connection.                   |
| `pageInfo` - [`PageInfo!`](#definition-pageinfo)               | The pagination information for the transactions connection. |

{% code title="Example" %}

```json
{
  "edges": [TransactionsEdge],
  "pageInfo": PageInfo
}
```

{% endcode %}

### TransactionsEdge <a href="#definition-transactionsedge" id="definition-transactionsedge"></a>

*Object*

The transactions returned for a given connection.

**Fields**

| Field Name                                         | Description                                                                                                               |
| -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| `cursor` - [`String!`](#definition-string)         | A unique identifier for a specific position in a paginated list. Used for fetching the next set of results in pagination. |
| `node` - [`Transaction!`](#definition-transaction) | The transaction object.                                                                                                   |

{% code title="Example" %}

```json
{
  "cursor": "MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw",
  "node": Transaction
}
```

{% endcode %}

### TransactionsInput <a href="#definition-transactionsinput" id="definition-transactionsinput"></a>

*Input object*

**Fields**

| Input Field                              | Description                                                                                                                                                           |
| ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `first` - [`Int`](#definition-int)       | This is a pagination parameter. (I.e. get the first N records). - Optional. Only required if you are wanting to query for the transactionsas well.                    |
| `after` - [`String`](#definition-string) | This is a pagination parameter. (I.e. get the first N records AFTER this cursor). - Optional. Only required if you are wanting to query for the transactions as well. |

{% code title="Example" %}

```json
{"first": 5, "after": "3"}
```

{% endcode %}

### UpdateMeInput <a href="#definition-updatemeinput" id="definition-updatemeinput"></a>

*Input object*

**Fields**

| Input Field                                                                    | Description                                                                                 |
| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------- |
| `notificationPreferences` - [`NotificationType`](#definition-notificationtype) |                                                                                             |
| `otpPreference` - [`OTPMethod`](#definition-otpmethod)                         |                                                                                             |
| `phoneNumber` - [`String`](#definition-string)                                 |                                                                                             |
| `email` - [`String`](#definition-string)                                       | The user's email address. Must not already belong to another user in the same organization. |
| `name` - [`NameInput`](#definition-nameinput)                                  | The user's name. Replaced as a whole, so omitting `middle` clears the stored middle name.   |
| `address` - [`AddressInput`](#definition-addressinput)                         |                                                                                             |

{% code title="Example" %}

```json
{
  "notificationPreferences": "EMAIL",
  "otpPreference": "SMS",
  "phoneNumber": "xyz789",
  "email": "abc123",
  "name": NameInput,
  "address": AddressInput
}
```

{% endcode %}

### UpdateMeOutput <a href="#definition-updatemeoutput" id="definition-updatemeoutput"></a>

*Object*

**Fields**

| Field Name                           | Description |
| ------------------------------------ | ----------- |
| `user` - [`User!`](#definition-user) |             |

{% code title="Example" %}

```json
{"user": User}
```

{% endcode %}

### User <a href="#definition-user" id="definition-user"></a>

*Object*

The user type

**Fields**

| Field Name                                                                      | Description                                                                                    |
| ------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| `id` - [`ID!`](#definition-id)                                                  | Global identifier for the user.                                                                |
| `email` - [`String!`](#definition-string)                                       | User's email address                                                                           |
| `phoneNumber` - [`String!`](#definition-string)                                 | User's phone number                                                                            |
| `name` - [`Name!`](#definition-name)                                            | User's name                                                                                    |
| `address` - [`Address!`](#definition-address)                                   | User's address                                                                                 |
| `status` - [`UserStatus!`](#definition-userstatus)                              | User's status                                                                                  |
| `notificationPreferences` - [`NotificationType!`](#definition-notificationtype) | Notifications are currently not sent for enablement Services.                                  |
| `createdAt` - [`Time!`](#definition-time)                                       | The time the user was created in the database.                                                 |
| `updatedAt` - [`Time!`](#definition-time)                                       | The last time the user was updated.                                                            |
| `syncedAt` - [`Time`](#definition-time)                                         | The last time this user's connections were synced.                                             |
| `closedAt` - [`Time`](#definition-time)                                         | The time this user profile was closed.                                                         |
| `connections` - [`ConnectionsConnection!`](#definition-connectionsconnection)   | The financial institution connections the user has created.                                    |
| Arguments `input` - [`ConnectionsInput!`](#definition-connectionsinput)         |                                                                                                |
| `tradelines` - [`TradelinesConnection!`](#definition-tradelinesconnection)      | The tradelines associated with the connected financial institution(s) this user has connected. |
| Arguments `input` - [`TradelinesInput!`](#definition-tradelinesinput)           |                                                                                                |

{% code title="Example" %}

```json
{
  "id": "00000000-0000-0000-0000-000000000000",
  "email": "buzz.inga@bloomcredit.io",
  "phoneNumber": "+12345678901",
  "name": {"first": "Buzz", "last": "Inga"},
  "address": {
    "line1": "123 Main St",
    "city": "Athens",
    "state": "FL",
    "country": "USA",
    "zipcode": "37745",
    "type": "PRIMARY"
  },
  "status": "VERIFIED",
  "notificationPreferences": "EMAIL",
  "createdAt": "2025-01-01T00:00:00Z",
  "updatedAt": "2025-01-02T00:00:00Z",
  "syncedAt": "10:15:30Z",
  "closedAt": "10:15:30Z",
  "connections": ConnectionsConnection,
  "tradelines": TradelinesConnection
}
```

{% endcode %}

### UserStatus <a href="#definition-userstatus" id="definition-userstatus"></a>

*Enum*

**Values**

| Enum Value | Description                                                                                     |
| ---------- | ----------------------------------------------------------------------------------------------- |
| `PENDING`  | Pending is to be used prior to verifying the user - whether that be through OTP or other means. |
| `VERIFIED` | Use this status once the user has been verified.                                                |

{% code title="Example" %}

```graphql
"PENDING"
```

{% endcode %}

### UtilityTradelineDetails <a href="#definition-utilitytradelinedetails" id="definition-utilitytradelinedetails"></a>

*Object*

The details associated with a utility tradeline.

**Fields**

| Field Name                                                       | Description                                      |
| ---------------------------------------------------------------- | ------------------------------------------------ |
| `serviceAddressString` - [`String`](#definition-string)          | Service address of the tradeline.                |
| `serviceAddressType` - [`AddressType!`](#definition-addresstype) | Type of service address.                         |
| `isPrimaryAddress` - [`Boolean!`](#definition-boolean)           | Indicates if this is the primary address.        |
| `utilityTypes` - [`[UtilityType!]!`](#definition-utilitytype)    | The utility types associated with the tradeline. |

{% code title="Example" %}

```json
{
  "serviceAddressString": "xyz789",
  "serviceAddressType": "PRIMARY",
  "isPrimaryAddress": true,
  "utilityTypes": ["WATER"]
}
```

{% endcode %}

### UtilityTradelineInput <a href="#definition-utilitytradelineinput" id="definition-utilitytradelineinput"></a>

*Input object*

**Fields**

| Input Field                                                     | Description                                                                                                                 |
| --------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| `serviceAddressString` - [`String`](#definition-string)         | The service address of the tradeline.                                                                                       |
| `serviceAddressType` - [`AddressType`](#definition-addresstype) | The type of service address.                                                                                                |
| `isPrimaryAddress` - [`Boolean!`](#definition-boolean)          | Indicates if this is the primary address.                                                                                   |
| `utilityTypes` - [`[UtilityType!]!`](#definition-utilitytype)   | The utility types associated with the tradeline. If the additional utility type is provided, another type must be included. |

{% code title="Example" %}

```json
{
  "serviceAddressString": "xyz789",
  "serviceAddressType": "PRIMARY",
  "isPrimaryAddress": false,
  "utilityTypes": ["WATER"]
}
```

{% endcode %}

### UtilityType <a href="#definition-utilitytype" id="definition-utilitytype"></a>

*Enum*

**Values**

| Enum Value   | Description                                                                                       |
| ------------ | ------------------------------------------------------------------------------------------------- |
| `WATER`      | A utility type for water services.                                                                |
| `ELECTRIC`   | A utility type for electric services.                                                             |
| `GAS`        | A utility type for gas services.                                                                  |
| `ADDITIONAL` | An additional utility type. Must be accompanied by another type when opening a utility tradeline. |

{% code title="Example" %}

```graphql
"WATER"
```

{% endcode %}

### ValidateDateOfBirthOutput <a href="#definition-validatedateofbirthoutput" id="definition-validatedateofbirthoutput"></a>

*Object*

**Fields**

| Field Name                                    | Description                            |
| --------------------------------------------- | -------------------------------------- |
| `isValid` - [`Boolean!`](#definition-boolean) | The result of the birthdate validation |

{% code title="Example" %}

```json
{"isValid": false}
```

{% endcode %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://developers.bloomcredit.io/enablement-services/enablement_gql_ref.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
