OpenAPI Specification
openapi: 3.0.0
info:
title: Chariot FDX Accounts Contact API
version: '6.0'
description: Financial Data Exchange (FDX) v6 compatible API for read-only access to Chariot bank account data. Implements the FDX v6 standard for account information, transactions, and statements.
contact:
name: Chariot Development Team
url: https://givechariot.com/contact
email: developers@givechariot.com
servers:
- url: https://api.givechariot.com/fdx/v6
description: Production
- url: https://devapi.givechariot.com/fdx/v6
description: Staging
security:
- oauth2: []
tags:
- name: Contact
description: Account contact and holder information
paths:
/accounts/{id}/contact:
get:
summary: Get account contact
description: Get contact information associated with an account, including holders, emails, addresses, and phone numbers.
operationId: getAccountContact
tags:
- Contact
parameters:
- $ref: '#/components/parameters/AccountId'
responses:
'200':
description: Account contact information
content:
application/json:
schema:
$ref: '#/components/schemas/GetAccountContactResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'412':
$ref: '#/components/responses/PreconditionFailed'
'500':
$ref: '#/components/responses/InternalServerError'
components:
responses:
PreconditionFailed:
description: A precondition for the request was not met
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
Forbidden:
description: Insufficient permissions or IP not whitelisted
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
Unauthorized:
description: Missing or invalid OAuth 2.0 Bearer token
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
InternalServerError:
description: Unexpected server error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
NotFound:
description: Resource not found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
parameters:
AccountId:
name: id
in: path
required: true
description: Unique identifier for the account
schema:
type: string
format: uuid
schemas:
AccountPhone:
type: object
description: A phone number.
required:
- type
- number
properties:
type:
$ref: '#/components/schemas/PhoneNumberType'
country:
type: string
description: Country calling code (e.g., "+1")
number:
type: string
description: Phone number
AccountHolderType:
type: string
description: Type of account holder
enum:
- BUSINESS
- CONSUMER
PhoneNumberType:
type: string
description: Type of phone number
enum:
- HOME
- BUSINESS
- CELL
- FAX
AccountAddress:
type: object
description: A postal address.
required:
- line1
- city
- region
- postalCode
- country
properties:
line1:
type: string
line2:
type: string
line3:
type: string
city:
type: string
region:
type: string
description: State or region code
postalCode:
type: string
country:
type: string
description: ISO 3166-1 alpha-2 country code
PersonName:
type: object
description: A person's name.
properties:
first:
type: string
middle:
type: string
last:
type: string
suffix:
type: string
prefix:
type: string
company:
type: string
ProblemDetails:
type: object
description: Error response following RFC 7807 Problem Details for HTTP APIs.
required:
- type
- title
- status
properties:
type:
type: string
description: A URI reference that identifies the problem type
example: about:blank
title:
type: string
description: A short human-readable summary of the problem type
example: Bad Request
status:
type: integer
description: The HTTP status code
example: 400
detail:
type: string
description: A human-readable explanation specific to this occurrence of the problem
example: The startTime parameter must be before endTime
instance:
type: string
description: A URI reference that identifies the specific occurrence of the problem
GetAccountContactResponse:
type: object
description: Contact information associated with an account.
properties:
holders:
type: array
items:
$ref: '#/components/schemas/AccountHolder'
emails:
type: array
items:
type: string
addresses:
type: array
items:
$ref: '#/components/schemas/AccountAddress'
telephones:
type: array
items:
$ref: '#/components/schemas/AccountPhone'
AccountHolder:
type: object
description: An account holder with their contact details.
required:
- name
- relationship
- type
properties:
name:
$ref: '#/components/schemas/PersonName'
relationship:
$ref: '#/components/schemas/CustomerRelationship'
type:
$ref: '#/components/schemas/AccountHolderType'
businessCustomer:
$ref: '#/components/schemas/BusinessCustomer'
emails:
type: array
items:
type: string
addresses:
type: array
items:
$ref: '#/components/schemas/AccountAddress'
telephones:
type: array
items:
$ref: '#/components/schemas/AccountPhone'
CustomerRelationship:
type: string
description: Relationship of the holder to the account
enum:
- AUTHORIZED_USER
- BUSINESS
- PRIMARY
BusinessCustomer:
type: object
description: Business customer information.
required:
- name
properties:
name:
type: string
description: Legal business name
registeredId:
type: string
description: Registered identifier (e.g., EIN)
securitySchemes:
oauth2:
type: oauth2
description: OAuth 2.0 Bearer token. A client may hold both scopes, but each FDX authorization must contain exactly one — they are mutually exclusive per authorization. An authorization containing both will be rejected. See the Authentication page for token exchange details.
flows:
authorizationCode:
authorizationUrl: https://dashboard.givechariot.com/oauth/authorize
tokenUrl: https://api.givechariot.com/auth/oauth/token
scopes:
read:bank_accounts: Read access to bank account data
sync:connected_accounts: Sync access to connected account data