‎ ‎ ‎ Enablement Services GraphQL API Reference

For AI agents: visit https://developers.bloomcredit.io/llms.txt for an index of all pages formatted in Markdown and endpoints in OpenAPI.

All topics

Bloom Enablement Services GraphQL API Reference

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

Standard GraphQL Responses

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).

{
    "errors": [\
      {\
        "message": "user is closed",\
        "path": ["openRentTradeline"],\
        "extensions": {\
          "code": "invalid"\
        }\
      }\
    ],
    "data": null
}

The enablement GraphQL API will return HTTP 422 (Unprocessable Entity) for invalid GraphQL requests or 500 (Internal Server Error) for unexpected errors, but will still follow the GraphQL error format:

{
    "errors": [\
      {\
        "message": "internal error",\
        "extensions": {\
          "code": "internal"\
        }\
      }\
    ],
    "data": null
}

Authentication Errors

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

{
    "error": {
      "code": "unauthorized",
      "message": "invalid session token"
    }
}

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.

API Endpoints
# Sandbox:
https://api.bloomplus.dev/v2/gql
# Production:
https://api.bloomplus.com/v2/gql
Headers
# See authorization guide for more details.
Authorization: Bearer <USER_TOKEN>
Version

1.314.0

Authorization

See Enablement Services Authorization

Getting Started

New here? Check out the Getting Started guide.

Last Updated

2026-07-07 16:27:29 UTC

Queries

me

Description

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 guide for reference.

Business logic errors (all return HTTP status 200):

Scenario errors.extensions.code
Internal business logic error internal
Response

Returns a User

Example

Query
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
      }
    }
  }
}
Response
{
  "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
    }
  }
}

Queries

tradeline

Description

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 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

Arguments
Name Description
id - ID! The unique identifier for the tradeline you are querying.

Example

Query
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
    }
    financialAccount {
      id
      name
      type
      mask
      institution {
        ...InstitutionFragment
      }
      connection {
        ...ConnectionFragment
      }
    }
    reportedConsumerAccountNumber
  }
}
Variables
{
  "id": "00000000-0000-0000-0000-000000000000"
}
Response
{
  "data": {
    "tradeline": {
      "id": "00000000-0000-0000-0000-000000000000",
      "user": User,
      "merchant": "Pollen Water Co",
      "category": "RENT",
      "status": "UNOPENED",
      "isEligible": false,
      "paymentFrequency": "MONTHLY",
      "lastTransactionDate": "2007-12-03",
      "transactionCount": 987,
      "details": RentTradelineDetails,
      "createdAt": "10:15:30Z",
      "updatedAt": "10:15:30Z",
      "transactions": TransactionsConnection,
      "furnishments": [Furnishment],
      "financialAccount": FinancialAccount,
      "reportedConsumerAccountNumber": "xyz789"
    }
  }
}

Queries

user

Description

Fetches a user by their ID or email address.

🔒 Authentication: Requires organization scoped authorization. See the Enablement Services Authorization 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

Arguments
Name Description
id - ID
email - String

Example

Query
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
      }
    }
  }
}
Variables
{
  "id": "00000000-0000-0000-0000-000000000000",
  "email": "xyz789"
}
Response
{
  "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
    }
  }
}

Queries

userExistsWithEmail

Description

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

🔒 Requires Organization scoped authorization. See the Enablement Services Authorization 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!

Arguments
Name Description
organizationSlug - String! Your organization's slug (url friendly name of your organization)
email - String! User's email address

Example

Query
query UserExistsWithEmail(
  $organizationSlug: String!,
  $email: String!
) {
  userExistsWithEmail(
    organizationSlug: $organizationSlug,
    email: $email
  )
}
Variables
{
  "organizationSlug": "xyz789",
  "email": "xyz789"
}
Response
{"data": {"userExistsWithEmail": false}}

Queries

validateDateOfBirth

Description

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

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!

Arguments
Name Description
dateOfBirth - DateInput! Birthdate to validate as user's recorded birthday. Must not be in the future, and can not be less than 18 years old.

Example

Query
query ValidateDateOfBirth($dateOfBirth: DateInput!) {
  validateDateOfBirth(dateOfBirth: $dateOfBirth) {
    isValid
  }
}
Variables
{"dateOfBirth": DateInput}
Response
{"data": {"validateDateOfBirth": {"isValid": false}}}

Queries

webhookDashboardUrl

Description

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 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!

Example

Query
query WebhookDashboardUrl {
  webhookDashboardUrl
}
Response
{"data": {"webhookDashboardUrl": "xyz789"}}

Mutations

closeTradeline

Description

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.

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!

Arguments
Name Description
id - ID! Unique tradeline identifier.

Example

Query
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
      }
      financialAccount {
        ...FinancialAccountFragment
      }
      reportedConsumerAccountNumber
    }
  }
}
Variables
{
  "id": "00000000-0000-0000-0000-000000000000"
}
Response
{"data": {"closeTradeline": {"tradeline": Tradeline}}}

Mutations

deleteConnection

Description

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.

Response

Returns a DeleteConnectionOutput!

Arguments
Name Description
id - ID!

Example

Query
mutation DeleteConnection($id: ID!) {
  deleteConnection(id: $id) {
    connection {
      id
      status
      institution {
        ...InstitutionFragment
      }
      financialAccounts {
        ...FinancialAccountFragment
      }
      user {
        ...UserFragment
      }
    }
  }
}
Variables
{
  "id": "00000000-0000-0000-0000-000000000000"
}
Response
{"data": {"deleteConnection": {"connection": Connection}}}

Mutations

deleteMe

Description

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.

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!

Example

Query
mutation DeleteMe {
  deleteMe {
    user {
      id
      email
      phoneNumber
      name {
        ...NameFragment
      }
      address {
        ...AddressFragment
      }
      status
      notificationPreferences
      createdAt
      updatedAt
      syncedAt
      closedAt
      connections {
        ...ConnectionsConnectionFragment
      }
      tradelines {
        ...TradelinesConnectionFragment
      }
    }
  }
}
Response
{"data": {"deleteMe": {"user": User}}}

Mutations

deleteTradeline

Description

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!

Arguments
Name Description
input - DeleteTradelineInput! Identifies the tradeline to delete.

Example

Query
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
      }
      financialAccount {
        ...FinancialAccountFragment
      }
      reportedConsumerAccountNumber
    }
  }
}
Variables
{"input": DeleteTradelineInput}
Response
{"data": {"deleteTradeline": {"tradeline": Tradeline}}}

Mutations

importConnections

Description

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.

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!

Arguments
Name Description
input - ImportConnectionsInput!

Example

Query
mutation ImportConnections($input: ImportConnectionsInput!) {
  importConnections(input: $input) {
    connections {
      id
      status
      institution {
        ...InstitutionFragment
      }
      financialAccounts {
        ...FinancialAccountFragment
      }
      user {
        ...UserFragment
      }
    }
  }
}
Variables
{"input": ImportConnectionsInput}
Response
{
  "data": {
    "importConnections": {"connections": [Connection]}
  }
}

Mutations

importPlaidProcessorTokens

Description

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
Response

Returns an ImportPlaidProcessorTokensOutput!

Arguments
Name Description
input - ImportPlaidProcessorTokensInput!

Example

Query
mutation ImportPlaidProcessorTokens($input: ImportPlaidProcessorTokensInput!) {
  importPlaidProcessorTokens(input: $input) {
    successes {
      token
      connection {
        ...ConnectionFragment
      }
    }
    failures {
      token
      error
    }
  }
}
Variables
{"input": ImportPlaidProcessorTokensInput}
Response
{
  "data": {
    "importPlaidProcessorTokens": {
      "successes": [ProcessorTokenImportSuccess],
      "failures": [TokenError]
    }
  }
}

Mutations

importUser

Description

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.

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!

Arguments
Name Description
input - ImportUserInput!

Example

Query
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
      }
    }
  }
}
Variables
{"input": ImportUserInput}
Response
{"data": {"importUser": {"user": User}}}

Mutations

openRentTradeline

Description

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.

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!

Arguments
Name Description
id - ID!
details - RentTradelineInput!

Example

Query
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
      }
      financialAccount {
        ...FinancialAccountFragment
      }
      reportedConsumerAccountNumber
    }
  }
}
Variables
{
  "id": "00000000-0000-0000-0000-000000000000",
  "details": RentTradelineInput
}
Response
{"data": {"openRentTradeline": {"tradeline": Tradeline}}}

Mutations

openTelcoTradeline

Description

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.

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!

Arguments
Name Description
id - ID!
details - TelcoTradelineInput!

Example

Query
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
      }
      financialAccount {
        ...FinancialAccountFragment
      }
      reportedConsumerAccountNumber
    }
  }
}
Variables
{
  "id": "00000000-0000-0000-0000-000000000000",
  "details": TelcoTradelineInput
}
Response
{"data": {"openTelcoTradeline": {"tradeline": Tradeline}}}

Mutations

openUtilityTradeline

Description

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.

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!

Arguments
Name Description
id - ID!
details - UtilityTradelineInput!

Example

Query
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
      }
      financialAccount {
        ...FinancialAccountFragment
      }
      reportedConsumerAccountNumber
    }
  }
}
Variables
{
  "id": "00000000-0000-0000-0000-000000000000",
  "details": UtilityTradelineInput
}
Response
{
  "data": {
    "openUtilityTradeline": {"tradeline": Tradeline}
  }
}

Mutations

reOpenOrganizationUser

Description

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.

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!

Arguments
Name Description
input - ReOpenOrganizationUserInput! Input object

Example

Query
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
      }
    }
  }
}
Variables
{"input": ReOpenOrganizationUserInput}
Response
{"data": {"reOpenOrganizationUser": {"user": User}}}

Mutations

registerOrganizationUser

Description

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.

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!

Arguments
Name Description
input - RegisterOrganizationUserInput! Input object

Example

Query
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
      }
    }
  }
}
Variables
{"input": RegisterOrganizationUserInput}
Response
{"data": {"registerOrganizationUser": {"user": User}}}

Mutations

reopenTradeline

Description

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.

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!

Arguments
Name Description
input - ReopenTradelineInput! Identifies the tradeline to reopen.

Example

Query
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
      }
      financialAccount {
        ...FinancialAccountFragment
      }
      reportedConsumerAccountNumber
    }
  }
}
Variables
{"input": ReopenTradelineInput}
Response
{"data": {"reopenTradeline": {"tradeline": Tradeline}}}

Types

Address

Fields
Field Name Description
line1 - String! The first line of the address.
line2 - String The second line of the address (optional).
city - String! The city of the address.
state - String! The state or province of the address (2 letter state code).
country - String! The country of the address.
zipcode - String! The postal or ZIP code of the address (5 digit zipcode).
type - AddressType! The type of address.
Example
{
  "line1": "123 Main St",
  "line2": "Apt 101",
  "city": "Athens",
  "state": "FL",
  "country": "USA",
  "zipcode": "37745",
  "type": "PRIMARY"
}

Types

AddressInput

Description

The input for a user's address. Fields must not contain emojis.

Fields
Input Field Description
line1 - String! The first line of the address. Must be between 0 and 100 characters, not contain symbols or slashes, and have no leading spaces.
line2 - String The second line of the address (optional). Must not contain emojis. Must be between 0 and 100 characters, not contain symbols or slashes, and have no leading spaces.
city - 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! The state or province of the address. Must be a valid 2 letter US state code.
country - 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! The postal or ZIP code of the address. Must be a 5 digit number.
type - AddressType! The type of address.
Example
{
  "line1": "123 Main St",
  "line2": "Apt 101",
  "city": "Athens",
  "state": "FL",
  "country": "USA",
  "zipcode": "37745",
  "type": "PRIMARY"
}

Types

AddressType

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.
Example
"PRIMARY"

Types

Boolean

Description

The Boolean scalar type represents true or false.

Example
true

Types

CloseTradelineOutput

Fields
Field Name Description
tradeline - Tradeline! The tradeline that was closed.
Example
{"tradeline": Tradeline}

Types

Connection

Fields
Field Name Description
id - ID! The unique identifier for the connection.
status - ConnectionStatus! The current status of the connection.
institution - Institution! The financial institution associated with the connection.
financialAccounts - [FinancialAccount!] The financial accounts associated with the connection.
user - User! The user associated with the connection.
Example
{
  "id": "00000000-0000-0000-0000-000000000000",
  "status": "ACTIVE",
  "institution": Institution,
  "financialAccounts": [FinancialAccount],
  "user": User
}

Types

ConnectionFilter

Fields
Input Field Description
status - ConnectionStatus Filter by connection status.
Example
{"status": "ACTIVE"}

Types

ConnectionStatus

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
Example
"ACTIVE"

Types

ConnectionsConnection

Fields
Field Name Description
edges - [ConnectionsEdge!]! An array of connection edges
pageInfo - PageInfo! PageInfo provides information about the paginated collection.
Example
{
  "edges": [ConnectionsEdge],
  "pageInfo": PageInfo
}

Types

ConnectionsEdge

Description

The connections returned for a given user.

Fields
Field Name Description
cursor - String! A unique identifier for a specific position in a paginated list. Used for fetching the next set of results in pagination.
node - Connection! The connection object.
Example
{
  "cursor": "MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw",
  "node": Connection
}

Types

ConnectionsInput

Description

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

Fields
Input Field Description
first - Int This is a pagination parameter. (I.e. get the first N records).
after - String This is a pagination parameter. (I.e. get the first N records AFTER this cursor).
filter - ConnectionFilter Filter by connection status.
Example
{
  "first": 5,
  "after": "MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw",
  "filter": ConnectionFilter
}

Types

CurrencyCode

Values
Enum Value Description
USD The currency code for USD.
Example
"USD"

Types

Date

Description

A date in the format YYYY-MM-DD.

Example
"2007-12-03"

Types

DateInput

Fields
Input Field Description
day - Int!
month - Int!
year - Int!
Example
{"day": "14", "month": "6", "year": "1986"}

Types

DeleteConnectionOutput

Fields
Field Name Description
connection - Connection! The deleted connection object.
Example
{"connection": Connection}

Types

DeleteMeOutput

Fields
Field Name Description
user - User! Returned user object
Example
{"user": User}

Types

DeleteTradelineInput

Description

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

Fields
Input Field Description
tradelineId - ID! Unique tradeline identifier.
Example
{
  "tradelineId": "00000000-0000-0000-0000-000000000000"
}

Types

DeleteTradelineOutput

Fields
Field Name Description
tradeline - Tradeline! The tradeline that was deleted (soft-deleted).
Example
{"tradeline": Tradeline}

Types

FinancialAccount

Fields
Field Name Description
id - ID! The unique identifier for the financial account.
name - String! The name of the financial account.
type - FinancialAccountType! The type of the financial account.
mask - String! The mask of the financial account (usually the last 4 digits of the account number).
institution - Institution! The institution associated with the financial account.
connection - Connection The current connection for this financial account.
Example
{
  "id": "00000000-0000-0000-0000-000000000000",
  "name": "xyz789",
  "type": "DEPOSITORY",
  "mask": "abc123",
  "institution": Institution,
  "connection": Connection
}

Types

FinancialAccountType

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.
Example
"DEPOSITORY"

Types

Furnishment

Description

The furnishment object.

Fields
Field Name Description
id - ID! The unique identifier for the furnishment.
furnishedAt - Time! The time the data was furnished.
Example
{
  "id": "00000000-0000-0000-0000-000000000000",
  "furnishedAt": "10:15:30Z"
}

Types

ID

Description

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.

Example
"00000000-0000-0000-0000-000000000000"

Types

ImportConnectionsInput

Fields
Input Field Description
tokens - [String!] The Plaid access tokens or Processor tokens.
tokensWithMetadata - [ProcessorTokenWithMetadata!]
Example
{
  "tokens": ["abc123"],
  "tokensWithMetadata": [ProcessorTokenWithMetadata]
}

Types

ImportConnectionsOutput

Fields
Field Name Description
connections - [Connection!]! The created connection objects.
Example
{"connections": [Connection]}

Types

ImportPlaidProcessorTokensInput

Fields
Example
{
  "tokens": ["xyz789"],
  "tokensWithMetadata": [ProcessorTokenWithMetadata]
}

Types

ImportPlaidProcessorTokensOutput

Fields
Field Name Description
successes - [ProcessorTokenImportSuccess!]!
failures - [TokenError!]!
Example
{
  "successes": [ProcessorTokenImportSuccess],
  "failures": [TokenError]
}

Types

ImportUserInput

Fields
Input Field Description
id - String! The ID of the consumer to import. This corresponds to the bloom consumer identifier used in the core consumers endpoints
Example
{"id": "00000000-0000-0000-0000-000000000000"}

Types

ImportUserOutput

Fields
Field Name Description
user - User! The enablement user object created as a result of the import.
Example
{"user": User}

Types

Institution

Fields
Field Name Description
name - String! The name of the financial institution.
logoUrl - String! The logo URL of the financial institution.
Example
{"name": "bloom", "logoUrl": "https://example.com/logo.png"}

Types

Int

Description

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

Example
987

Types

Money

Description

The money object.

Fields
Field Name Description
amount - Int! The amount of money.
currency - CurrencyCode! The currency of the money.
Example
{"amount": 987, "currency": "USD"}

Types

Name

Fields
Field Name Description
first - String! A user's legal first name.
middle - String A user's legal middle name or initial. (optional)
last - String! A user's legal last name.
Example
{"first": "Buzz", "middle": "Z", "last": "Inga"}

Types

NameInput

Fields
Input Field Description
first - String! The users legal first name
middle - String The users legal middle name (optional)
last - String! The users legal last name
Example
{"first": "Buzz", "middle": "Z", "last": "Inga"}

Types

Node

Fields
Field Name Description
id - ID! The unique identifier for the node.
Possible Types
Node Types
FinancialAccount
Connection
Transaction
User
Example
{
  "id": "00000000-0000-0000-0000-000000000000"
}

Types

NotificationType

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.
Example
"EMAIL"

Types

OpenRentTradelineOutput

Fields
Field Name Description
tradeline - Tradeline The tradeline that was opened.
Example
{"tradeline": Tradeline}

Types

OpenTelcoTradelineOutput

Fields
Example
{"tradeline": Tradeline}

Types

OpenUtilityTradelineOutput

Fields
Example
{"tradeline": Tradeline}

Types

PageInfo

Description

PageInfo provides information about the paginated collection.

Fields
Field Name Description
hasNextPage - Boolean! Indicates if there is a next page.
endCursor - String The cursor for the end of the current page.
Example
{
  "hasNextPage": true,
  "endCursor": "MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw"
}

Types

PaymentFrequency

Description

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.
Example
"UNKNOWN"

Types

ProcessorTokenImportSuccess

Fields
Field Name Description
token - String!
connection - Connection!
Example
{
  "token": "xyz789",
  "connection": Connection
}

Types

ProcessorTokenWithMetadata

Fields
Input Field Description
token - String!
historicalSyncComplete - Boolean
Example
{
  "token": "xyz789",
  "historicalSyncComplete": true
}

Types

ReOpenOrganizationUserInput

Fields
Input Field Description
userId - ID! The unique identifier of the closed user to reopen.
Example
{
  "userId": "00000000-0000-0000-0000-000000000000"
}

Types

ReOpenOrganizationUserOutput

Fields
Field Name Description
user - User The user that was reopened.
Example
{"user": User}

Types

RegisterOrganizationUserInput

Fields
Input Field Description
organizationSlug - String! URL-friendly name of the organization.
email - String! The email address of the user.
phoneNumber - String! The phone number of the user. Must be a US phone number.
name - NameInput! The name of the user.
address - AddressInput! The address of the user.
dateOfBirth - 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 The national ID of the user (optional).
visitorID - String The visitor ID for tracking purposes (optional).
Example
{
  "organizationSlug": "bloom",
  "email": "buzz.inga@bloomcredit.io",
  "phoneNumber": "+12345678901",
  "name": NameInput,
  "address": AddressInput,
  "dateOfBirth": DateInput,
  "nationalId": "12345",
  "visitorID": "12345"
}

Types

RegisterOrganizationUserOutput

Fields
Field Name Description
user - User The user object created as a result of the registration.
Example
{"user": User}

Types

RentTradelineDetails

Description

The details associated with a rent tradeline.

Fields
Field Name Description
serviceAddressString - String Service address of the tradeline.
serviceAddressType - AddressType! Type of service address.
leaseStartDate - Date! The start date of the lease.
isPrimaryAddress - Boolean! Indicates if this is the primary address.
hasOtherMortgageOrRent - Boolean! Indicates if there are other mortgage or rent obligations.
Example
{
  "serviceAddressString": "xyz789",
  "serviceAddressType": "PRIMARY",
  "leaseStartDate": "2007-12-03",
  "isPrimaryAddress": false,
  "hasOtherMortgageOrRent": true
}

Types

RentTradelineInput

Fields
Input Field Description
serviceAddressString - String The service address of the tradeline.
serviceAddressType - AddressType The type of service address.
leaseStartDate - Date The start date of the lease.
isPrimaryAddress - Boolean! Indicates if this is the primary address.
hasOtherMortgageOrRent - Boolean! Indicates if there are other mortgage or rent obligations.
Example
{
  "serviceAddressString": "xyz789",
  "serviceAddressType": "PRIMARY",
  "leaseStartDate": "2007-12-03",
  "isPrimaryAddress": false,
  "hasOtherMortgageOrRent": false
}

Types

ReopenTradelineInput

Description

Input for the reopenTradeline mutation.

Fields
Input Field Description
tradelineId - ID! Unique identifier of the tradeline to reopen.
Example
{
  "tradelineId": "00000000-0000-0000-0000-000000000000"
}

Types

ReopenTradelineOutput

Fields
Field Name Description
tradeline - Tradeline! The tradeline that was reopened.
Example
{"tradeline": Tradeline}

Types

String

Description

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.

Example
"xyz789"

Types

TelcoTradelineDetails

Description

The details associated with a telco tradeline.

Fields
Field Name Description
servicePhone - String! Service phone number of the tradeline.
Example
{"servicePhone": "abc123"}

Types

TelcoTradelineInput

Fields
Input Field Description
servicePhone - String! The service phone number of the tradeline.
Example
{"servicePhone": "abc123"}

Types

Time

Description

An RFC3339 formatted timestamp.

Example
"10:15:30Z"

Types

TokenError

Fields
Field Name Description
token - String!
error - String!
Example
{
  "token": "abc123",
  "error": "abc123"
}

Types

Tradeline

Fields
Field Name Description
id - ID! The unique identifier for the tradeline.
user - User! The user that owns the tradeline.
merchant - String! The merchant associated with the tradeline.
category - TradelineCategory! The category of the tradeline.
status - TradelineStatus! The status of the tradeline.
isEligible - 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.
paymentFrequency - PaymentFrequency! The payment frequency of the tradeline.
lastTransactionDate - Date! The last transaction date of the tradeline.
transactionCount - Int! The number of transactions associated with the tradeline.
details - TradelineDetails The details associated with the tradeline.
createdAt - Time! The time the tradeline was created.
updatedAt - Time! The time the tradeline was last updated.
transactions - TransactionsConnection! The transactions associated with the tradeline.
##### Arguments
###### input - TransactionsInput!
furnishments - [Furnishment] Furnishment data associated to the tradeline
financialAccount - 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 The account number reported to credit bureaus for this tradeline.
Example
{
  "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": 123,
  "details": RentTradelineDetails,
  "createdAt": "10:15:30Z",
  "updatedAt": "10:15:30Z",
  "transactions": TransactionsConnection,
  "furnishments": [Furnishment],
  "financialAccount": FinancialAccount,
  "reportedConsumerAccountNumber": "abc123"
}

Types

TradelineCategory

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.
Example
"RENT"

Types

TradelineDetails

Description

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

Types
Union Types
RentTradelineDetails
UtilityTradelineDetails
TelcoTradelineDetails
Example
RentTradelineDetails

Types

TradelineStatus

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).
Example
"UNOPENED"

Types

TradelinesConnection

Fields
Field Name Description
edges - [TradelinesEdge!]! The edges of the tradelines connection.
pageInfo - PageInfo! The pagination information for the tradelines connection.
Example
{
  "edges": [TradelinesEdge],
  "pageInfo": PageInfo
}

Types

TradelinesEdge

Description

The tradelines returned for a given connection.

Fields
Field Name Description
cursor - String! A unique identifier for a specific position in a paginated list. Used for fetching the next set of results in pagination.
node - Tradeline! The tradeline object.
Example
{
  "cursor": "MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw",
  "node": Tradeline
}

Types

TradelinesInput

Fields
Input Field Description
first - Int This is a pagination parameter. (I.e. get the first N records).
after - String This is a pagination parameter. (I.e. get the first N records AFTER this cursor).
status - TradelineStatus Filter by the status of the tradeline.
isEligible - Boolean Filter by whether or not the tradeline is eligible for reporting to the credit bureaus.
Example
{"first": 5, "after": "3", "status": "UNOPENED", "isEligible": true}

Types

Transaction

Description

The transaction object.

Fields
Field Name Description
id - ID! The unique identifier for the transaction.
date - Date! The date of the transaction.
value - Money! The value of the transaction.
tradeline - Tradeline! The tradeline that the transaction is associated with.
Example
{
  "id": "00000000-0000-0000-0000-000000000000",
  "date": "2007-12-03",
  "value": Money,
  "tradeline": Tradeline
}

Types

TransactionsConnection

Fields
Field Name Description
edges - [TransactionsEdge] The edges of the transactions connection.
pageInfo - PageInfo! The pagination information for the transactions connection.
Example
{
  "edges": [TransactionsEdge],
  "pageInfo": PageInfo
}

Types

TransactionsEdge

Description

The transactions returned for a given connection.

Fields
Field Name Description
cursor - String! A unique identifier for a specific position in a paginated list. Used for fetching the next set of results in pagination.
node - Transaction! The transaction object.
Example
{
  "cursor": "MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw",
  "node": Transaction
}

Types

TransactionsInput

Fields
Input Field Description
first - 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 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.
Example
{"first": 5, "after": "3"}

Types

User

Description

The user type

Fields
Field Name Description
id - ID! Global identifier for the user.
email - String! User's email address
phoneNumber - String! User's phone number
name - Name! User's name
address - Address! User's address
status - UserStatus! User's status
notificationPreferences - NotificationType! Notifications are currently not sent for enablement Services.
createdAt - Time! The time the user was created in the database.
updatedAt - Time! The last time the user was updated.
syncedAt - Time The last time this user's connections were synced.
closedAt - Time The time this user profile was closed.
connections - ConnectionsConnection! The financial institution connections the user has created.
##### Arguments
###### input - ConnectionsInput!
tradelines - TradelinesConnection! The tradelines associated with the connected financial institution(s) this user has connected.
##### Arguments
###### input - TradelinesInput!
Example
{
  "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
}

Types

UserStatus

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.
Example
"PENDING"

Types

UtilityTradelineDetails

Description

The details associated with a utility tradeline.

Fields
Field Name Description
serviceAddressString - String Service address of the tradeline.
serviceAddressType - AddressType! Type of service address.
isPrimaryAddress - Boolean! Indicates if this is the primary address.
utilityTypes - [UtilityType!]! The utility types associated with the tradeline.
Example
{
  "serviceAddressString": "xyz789",
  "serviceAddressType": "PRIMARY",
  "isPrimaryAddress": true,
  "utilityTypes": ["WATER"]
}

Types

UtilityTradelineInput

Fields
Input Field Description
serviceAddressString - String The service address of the tradeline.
serviceAddressType - AddressType The type of service address.
isPrimaryAddress - Boolean! Indicates if this is the primary address.
utilityTypes - [UtilityType!]! The utility types associated with the tradeline. If the additional utility type is provided, another type must be included.
Example
{
  "serviceAddressString": "abc123",
  "serviceAddressType": "PRIMARY",
  "isPrimaryAddress": false,
  "utilityTypes": ["WATER"]
}

Types

UtilityType

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.
Example
"WATER"

Types

ValidateDateOfBirthOutput

Fields
Field Name Description
isValid - Boolean! The result of the birthdate validation
Example
{"isValid": true}

Documentation by Anvil SpectaQL