Chariot nonprofitContacts API
The nonprofitContacts API from Chariot — 1 operation(s) for nonprofitcontacts.
The nonprofitContacts API from Chariot — 1 operation(s) for nonprofitcontacts.
openapi: 3.0.0
info:
title: Chariot FDX Accounts nonprofitContacts 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: nonprofitContacts
paths:
/v1/nonprofit_contacts:
post:
summary: Create Nonprofit Contacts
description: 'Submit contact information for one or more nonprofits. Uploaded
contacts are used as suggestions for who to notify about disbursements.'
operationId: createNonprofitContactSuggestion
tags:
- nonprofitContacts
security:
- bearerAuth: []
requestBody:
$ref: '#/components/requestBodies/CreateNonprofitContactSuggestionRequest'
responses:
'200':
description: All suggestions were accepted.
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/AuthenticationError'
'403':
$ref: '#/components/responses/ForbiddenError'
'404':
$ref: '#/components/responses/NotFoundError'
'500':
$ref: '#/components/responses/InternalServerError'
components:
schemas:
NonprofitContactSuggestionEntry:
type: object
description: A contact uploaded for a nonprofit, identified by its EIN.
required:
- ein
- email
properties:
ein:
type: string
description: 'The EIN of the nonprofit this contact belongs to. Accepted as
either nine digits (`123456789`) or `XX-XXXXXXX`.'
example: 13-1635294
email:
type: string
maxLength: 255
description: Email of the contact person at the nonprofit.
example: claims@redcross.org
phone:
type: string
maxLength: 255
description: Optional phone number for the contact.
example: '2025551212'
first_name:
type: string
maxLength: 255
description: Optional first name of the contact.
example: Sarah
last_name:
type: string
maxLength: 255
description: Optional last name of the contact.
example: Johnson
ProblemDetails:
type: object
description: RFC 7807 problem-details error (media type application/problem+json). The `status` field is an integer HTTP status code.
required:
- type
- title
- status
- detail
properties:
type:
type: string
description: A URI reference identifying the problem type.
example: about:blank
title:
type: string
description: A short, human-readable summary of the problem type.
example: API Error
status:
type: integer
description: The HTTP status code for this error.
example: 400
detail:
type: string
description: A human-readable explanation specific to this occurrence.
example: The request is invalid or contains invalid parameters.
example:
type: about:blank
title: API Error
status: 400
detail: The request is invalid or contains invalid parameters.
responses:
BadRequestError:
description: The request is invalid or contains invalid parameters
headers:
X-Request-Id:
$ref: '#/components/headers/X-Request-Id'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
examples:
BadRequest:
value:
type: about:blank
title: API Error
status: 400
detail: The request is invalid or contains invalid parameters.
InternalServerError:
description: Internal Server Error
headers:
X-Request-Id:
$ref: '#/components/headers/X-Request-Id'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
examples:
InternalServerError:
value:
type: about:blank
title: API Error
status: 500
detail: The server encountered an error processing your request.
ForbiddenError:
description: Access denied
headers:
X-Request-Id:
$ref: '#/components/headers/X-Request-Id'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
examples:
Forbidden:
value:
type: about:blank
title: API Error
status: 403
detail: You do not have permission to access this resource.
AuthenticationError:
description: Unauthorized. The request is missing the security (OAuth2 Bearer token) requirements and the server is unable to verify the identify of the caller.
headers:
X-Request-Id:
$ref: '#/components/headers/X-Request-Id'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
examples:
Unauthorized:
value:
type: about:blank
title: API Error
status: 401
detail: Authentication credentials were missing or invalid.
NotFoundError:
description: Resource Not Found
headers:
X-Request-Id:
$ref: '#/components/headers/X-Request-Id'
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
examples:
NotFound:
value:
type: about:blank
title: API Error
status: 404
detail: The requested resource was not found.
requestBodies:
CreateNonprofitContactSuggestionRequest:
description: Contact entries to upload, each matched to a nonprofit by EIN.
required: true
content:
application/json:
schema:
type: object
required:
- entries
properties:
entries:
type: array
description: Contact entries to upload. Up to 500 per request.
minItems: 1
maxItems: 500
items:
$ref: '#/components/schemas/NonprofitContactSuggestionEntry'
example:
entries:
- ein: 13-1635294
email: claims@redcross.org
phone: '2025551212'
first_name: Sarah
last_name: Johnson
- ein: '530196605'
email: ap@worldwildlife.org
headers:
X-Request-Id:
description: The unique identifier for the request
schema:
type: string
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