openapi: 3.0.0
info:
title: Chariot API
version: "v1"
description: The Chariot REST API. Please see https://givechariot.readme.io/reference/overview for more details.
contact:
name: Chariot Development Team
url: https://www.givechariot.com/contact
email: partners@givechariot.com
termsOfService: https://www.givechariot.com/legal-nonprofit
servers:
- url: https://sandboxapi.givechariot.com
description: Sandbox
- url: https://api.givechariot.com
description: Production
paths:
/v1/nonprofit/{ein}:
get:
summary: Get nonprofit by EIN
description: |-
Retrieves a nonprofit organization by an [Employee Identification Number](https://www.irs.gov/charities-non-profits/employer-identification-number) (EIN).
The EIN is a unique number that identifies the organization to the Internal Revenue Service (IRS).
In the case that the organization does not exist within Chariot's system, you can create one by calling the [Create Nonprofit](/api/nonprofits/create) API endpoint.
operationId: get-nonprofit-by-ein
tags:
- Nonprofits
security:
- auth0:
- "read:nonprofits"
parameters:
- name: ein
in: path
description: |-
The unique federal employer identification number (EIN) of the nonprofit.
This value should be exactly 9 digits and should not contain any special characters such as dashes.
schema:
type: string
required: true
example: "530196605"
responses:
"200":
description: "OK"
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
content:
application/json:
schema:
$ref: "#/components/schemas/Nonprofit"
examples:
RedCross:
$ref: "#/components/examples/NonprofitRedCross"
"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"
/v1/nonprofits:
post:
summary: Create nonprofit
description: |-
Create a nonprofit organization.
This is useful for integration partners to use after a nonprofit consents to use the Chariot payment option on their donation forms.
If a nonprofit does not already exist for the EIN, this will return a `201 Created` status.
If a nonprofit already exists for the given EIN on the system, this will return a `200 OK` status.
Handling errors:
- If the nonprofit does not exist within Chariot's database, a `404 Not Found` status is returned.
- If the nonprofit exists but does not pass Chariot's compliance checks, a `412 Precondition Failed` status is returned with a reason.
operationId: create-nonprofit
tags:
- Nonprofits
security:
- auth0:
- "create:nonprofits"
requestBody:
$ref: "#/components/requestBodies/CreateNonprofitRequest"
responses:
"200":
description: "OK"
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
content:
application/json:
schema:
$ref: "#/components/schemas/Nonprofit"
"201":
description: "Created"
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
Location:
$ref: "#/components/headers/Location"
content:
application/json:
schema:
$ref: "#/components/schemas/Nonprofit"
"400":
$ref: "#/components/responses/BadRequestError"
"401":
$ref: "#/components/responses/AuthenticationError"
"403":
$ref: "#/components/responses/ForbiddenError"
"404":
$ref: "#/components/responses/NotFoundError"
"412":
$ref: "#/components/responses/PreconditionFailedError"
"500":
$ref: "#/components/responses/InternalServerError"
/v1/nonprofits/{id}:
get:
summary: Get nonprofit
description: |-
Retrieves the nonprofit organization with the given ID.
operationId: get-nonprofit-by-id
tags:
- Nonprofits
security:
- auth0:
- "read:nonprofits"
parameters:
- name: id
in: path
description: The unique identifier for the nonprofit
schema:
type: string
required: true
example: g33ee4ee-f881-42a0-85e3-1dde7118w9k2
responses:
"200":
description: "OK"
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
content:
application/json:
schema:
$ref: "#/components/schemas/Nonprofit"
examples:
RedCross:
$ref: "#/components/examples/NonprofitRedCross"
"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"
/v1/connects:
post:
summary: Create Connect
description: |-
Get an existing connect or create a new connect for an existing nonprofit organization.
The returned Connect can be used to integrate the client-side Chariot Connect component using the `id` property (CID) and also query for data generated from the Chariot Connect instance from the Chariot API using the `x-chariot-api-key` header parameter.
Only one Connect object can be created per Nonprofit.
If one already exists, this will return a `200 OK` status with the existing object.
operationId: create-connect
tags:
- Connects
security:
- auth0:
- "create:connects"
parameters:
- name: nonprofit
in: query
description: |-
The unique id of the nonprofit.
The format should be a v4 UUID according to RFC 4122.
schema:
type: string
format: uuid
required: true
example: 6af3f58e-7a80-4997-8259-770c033d7d3a
- name: suborganization
in: query
description: |-
The unique id for the suborganization within the nonprofit.
The format should be a v4 UUID according to RFC 4122.
schema:
type: string
format: uuid
required: false
example: c00d1aa2-09ab-4e76-8461-7ac34578a70c
requestBody:
$ref: "#/components/requestBodies/CreateConnectRequest"
responses:
"200":
description: OK
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
Location:
$ref: "#/components/headers/Location"
content:
application/json:
schema:
$ref: "#/components/schemas/Connect"
examples:
Simple:
$ref: "#/components/examples/ConnectOutput"
"201":
description: Created
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
Location:
$ref: "#/components/headers/Location"
content:
application/json:
schema:
$ref: "#/components/schemas/Connect"
examples:
Simple:
$ref: "#/components/examples/ConnectOutput"
"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"
/v1/connects/{id}:
get:
summary: Get Connect
description: |-
Retrieve a connect with the given ID.
operationId: get-connect
tags:
- Connects
security:
- auth0:
- "read:connects"
parameters:
- name: id
in: path
description: the unique id of the connect
schema:
type: string
required: true
example: live_xJd0lUrvpDkzeGBWZbuI2wbvEdM
responses:
"200":
description: "OK"
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
content:
application/json:
schema:
$ref: "#/components/schemas/Connect"
"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"
/v1/grants:
get:
summary: List Grants
description: |-
Returns a list of all grants for a given Connect. This API allows for paginating over many results.
operationId: list-grants
tags:
- Grants
security:
- auth0:
- "read:grants"
parameters:
- name: x-chariot-api-key
in: header
description: the `apiKey` of the Connect object
schema:
type: string
required: true
example: "live_xJd0lUrvpDkzeGBWZbuI2wbvEdM"
- name: pageLimit
in: query
description: the number of results to return; defaults to 10, max is 100
schema:
type: integer
default: 10
- name: pageToken
in: query
description: |-
A token to use to retrieve the next page of results. This is useful for paginating over many pages of results. If set, all other arguments are expected to be kept the same as previous calls and the value of this field should be from the nextPageToken in the previous response.
schema:
type: string
responses:
"200":
$ref: "#/components/responses/ListGrantsResponse"
"400":
$ref: "#/components/responses/BadRequestError"
"401":
$ref: "#/components/responses/AuthenticationError"
"403":
$ref: "#/components/responses/ForbiddenError"
"500":
$ref: "#/components/responses/InternalServerError"
post:
summary: Create Grant
description: |-
Create and submit a new grant. This should be used to capture a grant intent from an authorized DAFpay workflow session and submit the grant request to the DAF sponsor.
Error handling:
- The grant must be captured within 15 minutes of authorization otherwise the request will return status `410 Gone`.
- A grant can only be captured once from any given workflow session so any duplicate requests will return status `409 Conflict`.
- The amount must be in whole dollar increments (rounded to the nearest hundred) as currently DAFs only accept whole dollar grants otherwise the request will return status `400 Bad Request`.
- The amount must be greater than or equal to the minimum grant amount for the DAF otherwise the request will return status `400 Bad Request`.
- The amount must be less than or equal to the user's DAF account balance otherwise the request will return status `400 Bad Request`.
- Any inputs exceeding the maximum allowed length will be automatically truncated.
operationId: create-grant
tags:
- Grants
security:
- auth0:
- "create:grants"
requestBody:
$ref: "#/components/requestBodies/GrantCaptureRequest"
responses:
"201":
description: Created
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
Location:
description: The URI reference of the created grant object.
schema:
type: string
format: uri
content:
application/json:
schema:
$ref: "#/components/schemas/Grant"
examples:
Simple:
$ref: "#/components/examples/GrantOutput"
"400":
$ref: "#/components/responses/BadRequestError"
"401":
$ref: "#/components/responses/AuthenticationError"
"403":
$ref: "#/components/responses/ForbiddenError"
"404":
$ref: "#/components/responses/NotFoundError"
"409":
$ref: "#/components/responses/ConflictError"
"410":
$ref: "#/components/responses/GoneError"
"500":
$ref: "#/components/responses/InternalServerError"
/v1/grants/{id}:
get:
summary: Get Grant
description: |-
Retrieve a grant with the given ID.
operationId: get-grant
tags:
- Grants
security:
- auth0:
- "read:grants"
parameters:
- name: id
in: path
description: |-
The unique id of the grant.
The format should be a v4 UUID according to RFC 4122.
schema:
type: string
format: uuid
required: true
example: 10229488-08d2-4629-b70c-a2f4f4d25344
responses:
"200":
description: OK
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
content:
application/json:
schema:
$ref: "#/components/schemas/Grant"
examples:
Simple:
$ref: "#/components/examples/GrantOutput"
"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"
patch:
summary: Update Grant
description: |-
Update a grant object with the given ID.
This can be used to update the status or acknowledgement of the grant.
operationId: update-grant
tags:
- Grants
security:
- auth0:
- "update:grants"
parameters:
- name: id
in: path
description: |-
The unique id of the grant.
The format should be a v4 UUID according to RFC 4122.
schema:
type: string
format: uuid
required: true
example: 10229488-08d2-4629-b70c-a2f4f4d25344
requestBody:
$ref: "#/components/requestBodies/UpdateGrantRequest"
responses:
"200":
description: OK
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
content:
application/json:
schema:
$ref: "#/components/schemas/Grant"
examples:
Simple:
$ref: "#/components/examples/GrantOutput"
"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"
/v1/recurring_grants:
get:
summary: List Recurring Grants
description: |-
Returns a list of all recurring grants for a given Connect. This API allows for paginating over many results.
operationId: list-recurring-grants
tags:
- recurring_grants
security:
- auth0:
- "read:recurring_grants"
parameters:
- name: x-chariot-api-key
in: header
description: the `apiKey` of the Connect object
schema:
type: string
required: true
example: "live_xJd0lUrvpDkzeGBWZbuI2wbvEdM"
- name: pageLimit
in: query
description: the number of results to return; defaults to 10, max is 100
schema:
type: integer
default: 10
- name: pageToken
in: query
description: |-
A token to use to retrieve the next page of results. This is useful for paginating over many pages of results. If set, all other arguments are expected to be kept the same as previous calls and the value of this field should be from the nextPageToken in the previous response.
schema:
type: string
responses:
"200":
$ref: "#/components/responses/ListRecurringGrantsResponse"
"400":
$ref: "#/components/responses/BadRequestError"
"401":
$ref: "#/components/responses/AuthenticationError"
"403":
$ref: "#/components/responses/ForbiddenError"
"500":
$ref: "#/components/responses/InternalServerError"
post:
summary: Create Recurring Grant
description: |-
Create and submit a new recurring grant. This should be used to capture a recurring grant intent from an authorized DAFpay workflow session and submit the recurring grant request to the DAF sponsor.
Error handling:
- The recurring grant must be captured within 15 minutes of authorization otherwise the request will return status `410 Gone`.
- A recurring grant can only be captured once from any given workflow session so any duplicate requests will return status `409 Conflict`.
- The amount must be in whole dollar increments (rounded to the nearest hundred) as currently DAFs only accept whole dollar grants otherwise the request will return status `400 Bad Request`.
- The amount must be greater than or equal to the minimum grant amount for the DAF otherwise the request will return status `400 Bad Request`.
- The amount must be less than or equal to the user's DAF account balance otherwise the request will return status `400 Bad Request`.
- Any inputs exceeding the maximum allowed length will be automatically truncated unless otherwise stated.
operationId: create-recurring-grant
tags:
- recurring_grants
security:
- auth0:
- "create:recurring_grants"
requestBody:
$ref: "#/components/requestBodies/RecurringGrantCaptureRequest"
responses:
"201":
description: Created recurring grant
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
Location:
description: The URI reference of the created recurring grant object.
schema:
type: string
format: uri
content:
application/json:
schema:
$ref: "#/components/schemas/RecurringGrant"
examples:
Simple:
$ref: "#/components/examples/RecurringGrantOutput"
"400":
$ref: "#/components/responses/BadRequestError"
"401":
$ref: "#/components/responses/AuthenticationError"
"403":
$ref: "#/components/responses/ForbiddenError"
"404":
$ref: "#/components/responses/NotFoundError"
"409":
$ref: "#/components/responses/ConflictError"
"410":
$ref: "#/components/responses/GoneError"
"500":
$ref: "#/components/responses/InternalServerError"
/v1/recurring_grants/{id}:
get:
summary: Get Recurring Grant
description: |-
Retrieve a recurring grant with a given ID.
operationId: get-recurring-grant
tags:
- recurring_grants
security:
- auth0:
- "read:recurring_grants"
parameters:
- name: id
in: path
description: |-
The unique id of the recurring grant.
The format should be a v4 UUID according to RFC 4122.
schema:
type: string
format: uuid
required: true
example: 10229488-08d2-4629-b70c-a2f4f4d25344
responses:
"200":
description: OK
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
content:
application/json:
schema:
$ref: "#/components/schemas/RecurringGrant"
examples:
Simple:
$ref: "#/components/examples/RecurringGrantOutput"
"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"
/v1/unintegrated_grants:
get:
summary: List Unintegrated Grants
description: |-
Returns a list of all unintegrated grants for a given Connect. This API allows for paginating over many results.
operationId: list-unintegrated-grants
tags:
- unintegrated_grants
security:
- auth0:
- "read:grants"
parameters:
- name: x-chariot-api-key
in: header
description: the `apiKey` of the Connect object
schema:
type: string
required: true
example: "live_xJd0lUrvpDkzeGBWZbuI2wbvEdM"
- name: pageLimit
in: query
description: the number of results to return; defaults to 10, max is 100
schema:
type: integer
default: 10
- name: pageToken
in: query
description: |-
A token to use to retrieve the next page of results. This is useful for paginating over many pages of results. If set, all other arguments are expected to be kept the same as previous calls and the value of this field should be from the nextPageToken in the previous response.
schema:
type: string
responses:
"200":
$ref: "#/components/responses/ListUnintegratedGrantsResponse"
"400":
$ref: "#/components/responses/BadRequestError"
"401":
$ref: "#/components/responses/AuthenticationError"
"403":
$ref: "#/components/responses/ForbiddenError"
"500":
$ref: "#/components/responses/InternalServerError"
/v1/unintegrated_grants/{id}:
get:
summary: Get Unintegrated Grant
description: |-
Retrieve an unintegrated grant with a given ID.
operationId: get-unintegrated-grant
tags:
- unintegrated_grants
security:
- auth0:
- "read:grants"
parameters:
- name: id
in: path
description: |-
The unique id of the unintegrated grant.
The format should be a v4 UUID according to RFC 4122.
schema:
type: string
format: uuid
required: true
example: 10229488-08d2-4629-b70c-a2f4f4d25344
responses:
"200":
description: OK
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
content:
application/json:
schema:
$ref: "#/components/schemas/UnintegratedGrant"
examples:
Simple:
$ref: "#/components/examples/UnintegratedGrantOutput"
"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"
patch:
summary: Update Unintegrated Grant
description: |-
Update an unintegrated grant object with the given ID.
This can be used to update the status or acknowledgement of the unintegrated grant.
operationId: update-unintegrated-grant
tags:
- unintegrated_grants
security:
- auth0:
- "update:grants"
parameters:
- name: id
in: path
description: |-
The unique id of the unintegrated grant.
The format should be a v4 UUID according to RFC 4122.
schema:
type: string
format: uuid
required: true
example: 10229488-08d2-4629-b70c-a2f4f4d25344
requestBody:
$ref: "#/components/requestBodies/UpdateGrantRequest"
responses:
"200":
description: OK
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
content:
application/json:
schema:
$ref: "#/components/schemas/UnintegratedGrant"
examples:
Simple:
$ref: "#/components/examples/UnintegratedGrantOutput"
"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"
/v1/dafs:
get:
summary: List Donor Advised Funds
description: |-
Returns a list of all Donor Advised Funds within Chariot's system. This API allows for paginating over many results.
If there are DAFs missing from the list, please contact support at support@givechariot.com.
operationId: list-dafs
tags:
- Donor Advised Funds
parameters:
- name: supportedOnly
in: query
description: |-
If set to true, filters DAFs to only those that have a direct integration with Chariot.
schema:
type: boolean
default: false
- name: query
in: query
description: |-
If included, filters DAFs to only those that contain the query. This parameter is case insensitive.
schema:
type: string
- name: pageLimit
in: query
description: the number of results to return; defaults to 10, max is 100
schema:
type: integer
default: 10
- name: pageToken
in: query
description: |-
A token to use to retrieve the next page of results. This is useful for paginating over many pages of results. If set, all other arguments are expected to be kept the same as previous calls.
schema:
type: string
responses:
"200":
$ref: "#/components/responses/ListDafsResponse"
"400":
$ref: "#/components/responses/BadRequestError"
"500":
$ref: "#/components/responses/InternalServerError"
/v1/dafs/{id}:
get:
summary: Get Donor Advised Fund
description: |-
Retrieve a DAF with a given ID.
operationId: get-daf
tags:
- Donor Advised Funds
parameters:
- name: id
in: path
description: |-
The unique id of the DAF.
The format should be a v4 UUID according to RFC 4122.
schema:
type: string
format: uuid
required: true
example: f9e28217-e0f7-4a54-9764-d664ffb10722
responses:
"200":
description: "OK"
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
content:
application/json:
schema:
$ref: "#/components/schemas/Daf"
examples:
Npt:
$ref: "#/components/examples/DafOutput"
"400":
$ref: "#/components/responses/BadRequestError"
"404":
$ref: "#/components/responses/NotFoundError"
"500":
$ref: "#/components/responses/InternalServerError"
/v1/events:
get:
summary: List Events
description: |-
List all events corresponding to your Chariot account.
operationId: listEvents
tags:
- Events
security:
- auth0:
- "read:events"
parameters:
- name: limit
in: query
description: Limit the size of the list that is returned. The default (and maximum) is 100 objects.
required: false
schema:
type: integer
format: int32
- name: cursor
in: query
description: The cursor to use for pagination. If not set, the first page of results will be returned.
required: false
schema:
type: string
- name: category
in: query
description: |
Filter Events for those with the specified category.
required: false
schema:
$ref: "#/components/schemas/EventCategory"
responses:
"200":
$ref: "#/components/responses/ListEventsResponse"
"400":
$ref: "#/components/responses/BadRequestError"
"401":
$ref: "#/components/responses/AuthenticationError"
"403":
$ref: "#/components/responses/ForbiddenError"
"500":
$ref: "#/components/responses/InternalServerError"
/v1/events/{id}:
get:
summary: Get Event
description: |-
Retrieve an event with the given ID.
operationId: getEvent
tags:
- Events
security:
- auth0:
- "read:events"
parameters:
- name: id
in: path
description: The unique id for the event
required: true
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/Event"
"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"
/v1/event_subscriptions:
post:
summary: Create an Event Subscription
description: |-
Create an event subscription corresponding to your Chariot account.
operationId: createEventSubscription
tags:
- Event Subscriptions
security:
- auth0:
- "create:event_subscriptions"
requestBody:
$ref: "#/components/requestBodies/CreateEventSubscriptionRequest"
responses:
"201":
description: Created
headers:
Location:
$ref: "#/components/headers/Location"
content:
application/json:
schema:
$ref: "#/components/schemas/EventSubscription"
"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"
get:
summary: List Event Subscriptions
description: |-
List all event subscriptions corresponding to your Chariot account.
operationId: listEventSubscriptions
tags:
- Event Subscriptions
security:
- auth0:
- "read:event_subscriptions"
parameters:
- name: limit
in: query
description: Limit the size of the list that is returned. The default (and maximum) is 100 objects.
required: false
schema:
type: integer
format: int32
- name: cursor
in: query
description: The cursor to use for pagination. If not set, the first page of results will be returned.
required: false
schema:
type: string
responses:
"200":
$ref: "#/components/responses/ListEventSubscriptionsResponse"
"400":
$ref: "#/components/responses/BadRequestError"
"401":
$ref: "#/components/responses/AuthenticationError"
"403":
$ref: "#/components/responses/ForbiddenError"
"500":
$ref: "#/components/responses/InternalServerError"
/v1/event_subscriptions/{id}:
get:
summary: Get an Event Subscription
description: |-
Retrieve an event subscription with the given ID.
operationId: getEventSubscription
tags:
- Event Subscriptions
security:
- auth0:
- "read:event_subscriptions"
parameters:
- name: id
in: path
description: The unique identifier for the event subscription
required: true
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/EventSubscription"
"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"
patch:
summary: Update an Event Subscription
description: |-
Update an event subscription with the given ID.
operationId: updateEventSubscription
tags:
- Event Subscriptions
security:
- auth0:
- "update:event_subscriptions"
parameters:
- name: id
in: path
description: The unique identifier for the event subscription
required: true
schema:
type: string
requestBody:
$ref: "#/components/requestBodies/UpdateEventSubscriptionRequest"
responses:
"200":
description: Updated
content:
application/json:
schema:
$ref: "#/components/schemas/EventSubscription"
"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:
securitySchemes:
auth0:
type: oauth2
description: This API uses OAuth2 with the client credentials flow.
flows:
clientCredentials:
tokenUrl: https://login.givechariot.com/oauth/token
scopes:
"create:nonprofits": create a nonprofit and user
"read:nonprofits": read all nonprofits
"create:connects": create any connect, principle does not need to be associated with nonprofit
"read:connects": read all connects for a nonprofit
"create:grants": create a grant from a workflow session
"read:grants": "read grants"
"update:grants": "update grants"
"read:events": "read events"
"create:event_subscriptions": "create event subscriptions"
"read:event_subscriptions": "read event subscriptions"
"update:event_subscriptions": "update event subscriptions"
schemas:
Nonprofit:
type: object
description: |-
A Nonprofit represents a registered 501(c)(3) charitable organization in good standing with the IRS.
required:
- id
- name
- ein
properties:
id:
type: string
readOnly: true
description: The unique identifier for the object.
example: g33ee4ee-f881-42a0-85e3-1dde7118w9k2
name:
type: string
description: The IRS registered name of the nonprofit organization
example: Leading for Children
preferredName:
type: string
description: |-
The preferred name of the nonprofit organization. This is the name that shows up on the nonprofit's dashboard and Connect modal. This is useful for nonprofits that are known by a different name to donors and don't use their IRS registered name publicly.
example: LfC
ein:
type: string
description: The US federal employer identification number (Tax ID); unique on the system. This value should be exactly 9 digits and should not contain any special characters such as dashes.
example: "043567500"
suborganizations:
type: array
items:
$ref: "#/components/schemas/Suborganization"
description: |-
The list of suborganizations associated with this nonprofit.
Suborganizations are useful for nonprofits that have multiple chapters or locations.
address:
$ref: "#/components/schemas/Address"
picture:
type: string
description: The URI of the nonprofit's logo
website:
type: string
description: The URL of the nonprofit's website
createdAt:
type: string
readOnly: true
format: date-time
description: Time when this object was created. Expressed in RFC 3339 format.
example: "2020-01-31T23:00:00Z"
updatedAt:
type: string
readOnly: true
format: date-time
description: Time when this object was last updated. Expressed in RFC 3339 format.
example: "2020-01-31T23:59:59Z"
isDafPayNetwork:
type: boolean
readOnly: true
description: |-
A flag to indicate if the nonprofit will receive grants through the DAFPay Network.
Grants processing through the DAFPay Network will be sent to the DAFPay Network 501(c)(3) nonprofit organization (EIN: 93-1372175).
The DAFPay Network will then review and process the grant and send the funds to the nonprofit.
Grants processed outside the DAFPay Network will be sent directly to the nonprofit.
example: false
inGoodStanding:
type: boolean
readOnly: true
description: |-
A flag to indicate if the nonprofit is in good standing with the IRS.
If the nonprofit is a tax-exempt 501(c)(3) Public Charity in good standing with the IRS, this field should be true.
This status can change over time and is kept up-to-date by Chariot.
Regardless of the value of this field, Connects can still be created for the nonprofit,
however the nonprofit will not be able to receive grants through Chariot if this field is false.
If you believe the value of this field is incorrect for a Nonprofit, please contact the Chariot team.
example: true
claimed:
type: boolean
readOnly: true
description: |-
A flag to indicate if the nonprofit has been claimed by a user.
A nonprofit is claimed if a user signs up for a Chariot account with
this nonprofit and is verified by the Chariot team.
Suborganization:
type: object
description: |-
A suborganization represents an organization that is under the umbrella of a parent EIN.
This is common for nonprofits that have multiple chapters or locations or operate as a fiscal sponsor.
required:
- id
- name
- ein
properties:
id:
type: string
readOnly: true
description: The unique identifier for the object.
example: g33ee4ee-f881-42a0-85e3-1dde7118w9k2
name:
type: string
description: The registered name of the suborganization
example: Leading for Children
preferredName:
type: string
description: |-
The preferred name of the suborganization. This is the name that shows up on the nonprofit's dashboard and Connect modal. This is useful for nonprofits that are known by a different name to donors and don't use their IRS registered name publicly.
example: LfC
address:
$ref: "#/components/schemas/Address"
picture:
type: string
description: The URI of the nonprofit's logo
website:
type: string
description: The URL of the nonprofit's website
createdAt:
type: string
readOnly: true
format: date-time
description: Time when this object was created. Expressed in RFC 3339 format.
example: "2020-01-31T23:00:00Z"
updatedAt:
type: string
readOnly: true
format: date-time
description: Time when this object was last updated. Expressed in RFC 3339 format.
example: "2020-01-31T23:59:59Z"
Connect:
type: object
description: |-
A Connect represents an instance of Chariot Connect for a particular Nonprofit. A nonprofit organization will create Connect objects in order to integrate Chariot Connect into their websites or fundraising platforms to start accepting donations directly from Donor Advised Funds. Each Nonprofit can have multiple Connect objects where each one represents a logical separation for how the organization wants to organize their sources of donations. For example, they might have 2 Connect instances, one that they use to integrate Chariot Connect directly on their website and the other that they provide to a 3rd party fundraising platform. On the client side, Chariot Connect is instantiated with the `id` of the Connect object, also called the `cid`. A connect object also contains an `apiKey`. This is useful for nonprofits to provide to fundraising platforms on their behalf to programatically integrate Chariot Connect and access resources and information created from the Connect instance through various Chariot API endpoints. More information on integrating Chariot Connect into a client-side application can be found here: https://givechariot.readme.io
required:
- id
- apiKey
properties:
id:
type: string
readOnly: true
description: |-
The unique identifier for this object. This is also the 'publishable' cid to use for initializing Connect for client-side integration.
example: test_connect123
name:
type: string
description: A human readable name for the connect, optional.
example: website
apiKey:
type: string
readOnly: true
description: A secure token that can be used to make M2M API calls to read data generated by this object.
example: test_apiTokenABC
active:
type: boolean
description: |-
A flag to indicate if this connect is active. If true, then this Connect can process donations and grants, otherwise this Connect cannot process grants.
example: true
createdAt:
type: string
readOnly: true
format: date-time
description: Time when this object was created. Expressed in RFC 3339 format.
example: "2020-01-31T23:00:00Z"
updatedAt:
type: string
readOnly: true
format: date-time
description: Time when this object was last updated. Expressed in RFC 3339 format.
example: "2020-01-31T23:59:59Z"
createdBy:
type: string
readOnly: true
description: ID of the user who created this object.
example: auth0-user-id-123
archived:
type: boolean
readOnly: true
description: A flag to indicate if this object is marked for deletion.
example: false
metadata:
type: object
description: A map of arbitrary string keys and values to store information about the object.
additionalProperties:
type: string
Daf:
type: object
description: |-
A Donor-Advised Fund, or `DAF` for short, is a special-purpose, tax-advantaged charitable account.
For more information, please see the [IRS website](https://www.irs.gov/charities-non-profits/charitable-organizations/donor-advised-funds) for a full description.
In the case that a DAF is supported, a donor will be able to initiate a grant directly through DAFpay.
required:
- id
- orgName
- address
- address2
- city
- state
- zip
- supported
- minimumGrantAmount
- institutionDown
properties:
id:
type: string
readOnly: true
description: The unique identifier for this object.
example: 0bf40881-8ee2-47fb-98ca-f58c7999aa34
orgName:
type: string
readOnly: true
description: A human readable name for the DAF.
example: website
address:
type: string
readOnly: true
description: The first address line.
example: 123 Main St.
address2:
type: string
readOnly: true
description: The second address line.
example: Apt 100
city:
type: string
readOnly: true
description: The city name for the address.
example: New York City
state:
type: string
readOnly: true
description: The state name for the address.
example: New York
zip:
type: string
readOnly: true
description: The zipcode for the address.
example: "12345"
supported:
type: boolean
readOnly: true
description: A flag to indicate if this DAF is supported by DAFpay.
example: false
minimumGrantAmount:
type: number
readOnly: true
description: The minimum grant amount in cents allowed for this DAF.
example: 5000
institutionDown:
type: boolean
readOnly: true
description: A flag to indicate if the institution is down.
example: false
Grant:
type: object
description: |-
A Grant represents a successfully initiated grant request with a Donor Advised Fund. Grants are created when a person interacts with an instance of Chariot Connect and successfully submits a grant and completes the workflow. There can be many grants associated with a Connect object and therefore a Nonprofit.
required:
- id
- workflowSessionId
- fundId
- amount
properties:
id:
type: string
readOnly: true
description: The unique identifier for the object
format: uuid
example: cfe09e64-6a74-4dab-a565-361185a6f248
userFriendlyId:
type: string
readOnly: true
description: Often referred to as the "Chariot ID", this is the ID that will be included in the payment from the DAF provider.
example: chariot-1234455
deprecated: true
trackingId:
type: string
readOnly: true
description: The tracking ID for the grant
example: L9E182VBGP
workflowSessionId:
type: string
readOnly: true
description: ID of the Connect Workflow Session associated with this grant
format: uuid
example: 2d4b2a43-a5b4-4be1-ad1f-f932016ca4a6
fundId:
type: string
readOnly: true
description: ID of the donor advised fund
example: daf-id
externalGrantId:
type: string
description: ID of the grant associated with the donor advised fund
example: 897823sdjf8sfjs
createdAt:
type: string
readOnly: true
format: date-time
description: Time when this object was created; expressed in RFC 3339 format
example: "2020-01-31T23:00:00Z"
updatedAt:
type: string
readOnly: true
format: date-time
description: Time when this object was last updated; expressed in RFC 3339 format
example: "2020-01-31T23:59:59Z"
amount:
type: number
format: integer
description: The grant amount expressed in units of whole cents
example: 15000
status:
type: string
description: The status of the grant
example: Initiated
feeDetail:
type: object
readOnly: true
description: The fee detail of the grant
properties:
total:
type: number
format: integer
description: The total fee amount expressed in units of cents
example: 1500
contributions:
type: array
items:
$ref: "#/components/schemas/ContributionFeeDetail"
description: The list of fee contributions for this grant
metadata:
type: object
description: A map of arbitrary string keys and values to store information about the object
additionalProperties:
type: string
firstName:
type: string
description: The donor's first name
example: "Warren"
lastName:
type: string
description: The donor's last name
example: "Buffet"
phone:
type: string
description: The donor's phone number
example: "1237861020"
email:
type: string
description: The donor's email
example: "warrenBuffet@example.com"
note:
type: string
description: An note inputted by the user at submisson
example: "Please dedicate in memory of grandma"
statuses:
type: array
items:
$ref: "#/components/schemas/GrantStatus"
description: The list of grant statuses for this grant
paymentChannel:
type: string
readOnly: true
description: |-
The payment channel for the grant. This is useful to know how the grant will be sent.
The payment channel will be one of the following:
- dafpay_network: Grant will be sent to the DAFPay Network 501(c)(3) nonprofit organization (EIN: 93-1372175). The DAFPay Network will then review and process the grant and send the funds to the intended recipient.
- direct: Grant will be sent directly to the intended recipient.
enum:
- dafpay_network
- direct
example: direct
address:
$ref: "#/components/schemas/GrantAddress"
RecurringGrant:
type: object
description: |-
A RecurringGrant represents a successfully initiated recurring grant request with a Donor Advised Fund.
RecurringGrants are created when a person interacts with an instance of Chariot Connect and successfully submits a recurring grant and completes the workflow.
On creation, each RecurringGrant object will also have a Grant object created to represent the first grant of the recurring grant.
There can be many grants associated with the same recurring grant.
required:
- id
- workflowSessionId
- fundId
- amount
- frequency
properties:
id:
type: string
readOnly: true
description: The unique identifier for the object
format: uuid
example: cfe09e64-6a74-4dab-a565-361185a6f248
trackingId:
type: string
readOnly: true
description: The tracking ID for the grant
example: L9E182VBGP
workflowSessionId:
type: string
readOnly: true
description: ID of the Connect Workflow Session associated with this grant
format: uuid
example: 2d4b2a43-a5b4-4be1-ad1f-f932016ca4a6
fundId:
type: string
readOnly: true
description: ID of the donor advised fund
example: daf-id
frequency:
type: string
description: |-
How often the DAF provider will submit the recurring grant. At the moment, monthly is the only supported frequency.
enum:
- MONTHLY
example: MONTHLY
externalGrantId:
type: string
description: ID of the grant associated with the donor advised fund
example: 897823sdjf8sfjs
createdAt:
type: string
readOnly: true
format: date-time
description: Time when this object was created; expressed in RFC 3339 format
example: "2020-01-31T23:00:00Z"
updatedAt:
type: string
readOnly: true
format: date-time
description: Time when this object was last updated; expressed in RFC 3339 format
example: "2020-01-31T23:59:59Z"
amount:
type: number
format: integer
description: The grant amount expressed in units of whole cents
example: 15000
firstName:
type: string
description: The donor's first name
example: "Warren"
lastName:
type: string
description: The donor's last name
example: "Buffet"
phone:
type: string
description: The donor's phone number
example: "1237861020"
email:
type: string
description: The donor's email
example: "warrenBuffet@example.com"
note:
type: string
description: An note inputted by the user at submisson
example: "Please dedicate in memory of grandma"
address:
$ref: "#/components/schemas/GrantAddress"
ContributionFeeDetail:
type: object
required:
- name
- amount
properties:
name:
type: string
description: |
The name of the party charging the fee. This is an informational field.
If you need to differentiate between fees charged by different parties, you should use the `feeType` field.
example: "Chariot"
amount:
type: number
format: integer
description: The fee contribution amount expressed in units of cents
example: 1500
feeType:
type: string
description: |
This indicates the source of a fee contribution.
* chariot: Chariot's processing fee
* daf: The DAF's processing fee
* fundraising_application: The fundraising application's processing fee
example: "chariot"
enum:
- chariot
- daf
- fundraising_application
GrantStatus:
type: object
required:
- id
- createdAt
- status
properties:
id:
type: string
readOnly: true
description: The unique identifier for the object
format: uuid
example: cfe09e64-6a74-4dab-a565-361185a6f248
createdAt:
type: string
readOnly: true
format: date-time
description: Time when this object was created; expressed in RFC 3339 format
example: "2020-01-31T23:00:00Z"
status:
type: string
enum:
- Initiated
- Completed
- Canceled
description: |
The status of the grant. To see a description of each status, see the "Grant Statuses" section of the Chariot documentation.
example: Initiated
comment:
type: string
description: The user comment for the update
example: The grant has been received by the nonprofit
UnintegratedGrant:
type: object
description: |-
An Unintegrated Grant represents a grant requested through a provider that Chariot does not support.
Unintegrated grants should be treated as donation intents as Chariot can not guarantee that the grant was submitted or will be fulfilled.
Nonprofits should use the information provided in the unintegrated grant to follow up with the donor and/or the provider to check the status of the grant.
These are sometimes refered to as "Manual Grants".
required:
- id
- workflowSessionId
- fundId
- amount
properties:
id:
type: string
readOnly: true
description: The unique identifier for the object
format: uuid
example: cfe09e64-6a74-4dab-a565-361185a6f248
userFriendlyId:
type: string
readOnly: true
description: Often refered to as the "Chariot ID", this is the ID that will be included in the payment from the DAF provider.
example: "1234455"
deprecated: true
trackingId:
type: string
readOnly: true
description: The tracking ID for the unintegrated grant
example: L9E182VBGP
workflowSessionId:
type: string
readOnly: true
description: ID of the Connect Workflow Session associated with this grant
format: uuid
example: 2d4b2a43-a5b4-4be1-ad1f-f932016ca4a6
fundId:
type: string
readOnly: true
description: ID of the donor advised fund
example: daf-id
createdAt:
type: string
readOnly: true
format: date-time
description: Time when this object was created; expressed in RFC 3339 format
example: "2020-01-31T23:00:00Z"
updatedAt:
type: string
readOnly: true
format: date-time
description: Time when this object was last updated; expressed in RFC 3339 format
example: "2020-01-31T23:59:59Z"
amount:
type: number
format: integer
description: The grant amount expressed in units of whole cents
example: 15000
status:
type: string
description: |-
The status of the unintegrated grant.
To see a description of each status, see the "Unintegrated Grant Statuses" section of the Chariot documentation.
enum:
- Unknown
- Initiated
- Completed
- Canceled
example: Initiated
metadata:
type: object
description: A map of arbitrary string keys and values to store information about the object
additionalProperties:
type: string
firstName:
type: string
description: The donor's first name
example: "Warren"
lastName:
type: string
description: The donor's last name
example: "Buffet"
phone:
type: string
description: The donor's phone number
example: "1237861020"
email:
type: string
description: The donor's email
example: "warrenBuffet@example.com"
address:
$ref: "#/components/schemas/GrantAddress"
note:
type: string
description: An note inputted by the user at submisson
example: "Please dedicate in memory of grandma"
paymentChannel:
type: string
readOnly: true
description: |-
The payment channel for the unintegrated grant. This is useful to know how the grant will be sent.
The payment channel for unintegrated grants will always be:
- offline: Grant was initiated outside of Chariot so we're unable to confirm how the grant will be sent.
enum:
- offline
example: offline
Address:
type: object
required:
- city
- country
- line1
- postalCode
- state
properties:
city:
type: string
description: City, district, suburb, town, or village.
country:
type: string
description: Two-letter country code (https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
line1:
type: string
description: Address line 1 (e.g. street, PO Box, or company name)
line2:
type: string
description: Address line 2 (e.g. apartment, suite, unit, or building)
postalCode:
type: string
description: ZIP or postal code
state:
type: string
description: State, county, province, or region
GrantAddress:
type: object
properties:
line1:
type: string
description: "Address line 1 (e.g. street, PO Box, or company name). Maximum length: 255 characters."
line2:
type: string
description: "Address line 2 (e.g. apartment, suite, unit, or building). Maximum length: 255 characters."
city:
type: string
description: "City, district, suburb, town, or village.. Maximum length: 255 characters."
state:
type: string
description: "State, county, province, or region. Maximum length: 255 characters."
postalCode:
type: string
description: "ZIP or postal code. Maximum length: 255 characters."
EventCategory:
type: string
description: |
The category of the event. This is useful for filtering events.
enum:
- "grant.created"
- "grant.updated"
- "unintegrated_grant.created"
- "unintegrated_grant.updated"
Event:
type: object
description: |
Events are records of things that happened to objects at Chariot.
properties:
id:
type: string
description: The unique identifier for the event
example: "203c4e56-5c39-4a66-abcd-2ec8af99a1b9"
readOnly: true
category:
$ref: "#/components/schemas/EventCategory"
created_at:
type: string
format: date-time
description: The date and time the event was created
example: "2024-01-19T18:48:56.37Z"
readOnly: true
associated_object_id:
type: string
description: The unique identifier for the associated object
example: "4d06d393-1f14-46cf-b02d-8db17d7ed06a"
readOnly: true
associated_object_type:
type: string
description: The type of the associated object
example: "grant"
readOnly: true
EventSubscriptionStatus:
type: string
description: |-
The status of the event subscription.
This indicates if we'll send notifications to this subscription
* active: subscription is active and events will be delivered normally
* disabled: subscription is temporarily disabled and events will not be delivered
* deleted: subscription has been deleted and events will not be delivered
* requires_attention: subscription has been disabled due to delivery failures and events will not be delivered
enum:
- "active"
- "disabled"
- "deleted"
- "requires_attention"
EventSubscription:
type: object
description: |
Webhooks are event notifications we send to you by HTTPS POST requests.
Event Subscriptions are how you configure your application to listen for them.
required:
- url
properties:
id:
type: string
description: The unique identifier for the event subscription
example: "4d06d393-1f14-46cf-b02d-8db17d7ed06a"
readOnly: true
created_at:
type: string
format: date-time
description: The date and time the event subscription was created
example: "2024-01-14T12:48:56.37Z"
readOnly: true
status:
$ref: "#/components/schemas/EventSubscriptionStatus"
url:
type: string
description: The webhook url where we'll send notifications.
example: "https://example.com/webhook"
category:
$ref: "#/components/schemas/EventCategory"
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.
headers:
X-Request-Id:
description: The unique identifier for the request
schema:
type: string
Location:
description: The URI of the created object
schema:
type: string
requestBodies:
GrantCaptureRequest:
description: |-
The request to create and submit a grant. This is useful to capture a grant intent associated with DAFpay workflow session.
The request should specify the grant amount. This is the amount submitted for processing by the DAF.
required: true
content:
application/json:
schema:
type: object
required:
- workflowSessionId
- amount
properties:
workflowSessionId:
type: string
description: |-
The identifier of the donor's DAFpay Workflow Session.
See [Capturing Grant Intents](/guides/dafpay/integrating-dafpay/integration#capturing-grant-intents) for how to get this value from the DAFpay `CHARIOT_SUCCESS` event.
amount:
type: number
example: 15000
description: |-
The grant amount in cents that will be processed by Chariot and submitted to the DAF.
This amount must be in whole dollar increments (rounded to the nearest hundred) as currently
all DAFs only accept whole dollar grant amounts.
applicationFeeAmount:
type: number
example: 3000
description: |-
This parameter specifies the fee your platform plans to take from the grant in cents.
This is a fee in addition to Chariot's processing fee. With application fees,
Chariot collects the fee you determine from the nonprofit and passes it to your platform.
Please note that platform fees are only taken when the grant is successfully received by the Nonprofit.
The sum of Chariot's fee and the applicationFeeAmount cannot exceed 5% of the grant's amount.
If the fee limit is exceeded, a `400 Bad Request` error will be returned.
donor:
type: object
properties:
firstName:
type: string
description: "The first name of the donor. Maximum length: 255 characters."
lastName:
type: string
description: "The last name of the donor. Maximum length: 255 characters."
email:
type: string
description: "The email address of the donor. Maximum length: 255 characters."
phone:
type: string
description: "The phone number of the donor. Maximum length: 255 characters."
address:
$ref: "#/components/schemas/GrantAddress"
note:
type: string
description: |-
A note the donor wants to send to the nonprofit. Maximum length: 400 characters.
designation:
type: string
description: |-
The designation to include on the grant. If this is left blank, "Where needed most" will be used.
Note that including a custom designation may cause the grant approval process to take longer.
Maximum length: 100 characters.
UpdateGrantRequest:
description: |-
The request to update a grant. This is useful to update the status of a grant.
The request should specify the grant status.
required: true
content:
application/json:
schema:
type: object
required:
- status
properties:
status:
type: string
description: |-
The status of the grant:
* Initiated: The grant has been initiated and is ready to be processed
* Completed: The grant has been completed
enum:
- "Initiated"
- "Completed"
example: "Completed"
acknowledgedAt:
type: string
format: date-time
description: |-
The date and time the grant was acknowledged by the nonprofit.
This is useful for nonprofits to indicate when they have received and processed the grant.
Expressed in RFC 3339 format.
example: "2020-01-31T23:00:00Z"
RecurringGrantCaptureRequest:
description: |-
The request to create and submit a monthly recurring grant. This is useful to capture a recurring grant intent associated with Connect workflow session.
The request should specify the grant amount. The grant will re-occur according to the scheduled frequency or recurrence of the request.
The recurring grant will continue indefinitely until the donor runs out of funds or until the donor cancels the recurring grant with their DAF provider.
Some DAF providers require an end-date or number of payments in order to create a recurring grant.
In most cases, the recurring grant will continue indefinitely until the donor's account runs out of funds or until the donor cancels the recurring grant with their DAF provider.
Some DAF providers require an explicit bound to the time period or the number of payments in which case currently we opt for the longest recurring donation timeline possible.
For example, if the DAF provider allows recurring donations to continue for up to 10 years we will submit the request as such.
This is the amount submitted for processing by the DAF.
required: true
content:
application/json:
schema:
type: object
required:
- workflowSessionId
- amount
- frequency
properties:
workflowSessionId:
type: string
description: |-
The identifier of the donor's DAFpay Workflow Session.
See [Capturing Grant Intents](/guides/dafpay/integrating-dafpay/integration#capturing-grant-intents) for how to get this value from the DAFpay `CHARIOT_SUCCESS` event.
frequency:
type: string
description: |-
The recurrence interval schedule for the recurring grant. Currently, only `MONTHLY` is supported.
enum:
- MONTHLY
example: MONTHLY
amount:
type: number
example: 15000
description: |-
The final grant amount in cents that will be processed by Chariot and submitted to the DAF for recurring gifts.
This amount must be in whole dollar increments (rounded to the nearest hundred) as currently
all DAFs only accept whole dollar grants.
applicationFeeAmount:
type: number
example: 3000
description: |-
This parameter specifies the fee your platform plans to take from the first grant in cents.
This is a fee in addition to Chariot's processing fee. With application fees,
Chariot collects the fee you determine from the nonprofit and passes it to your platform.
Please note that platform fees are only taken when the grant is successfully received by the Nonprofit.
The sum of Chariot's fee and the applicationFeeAmount cannot exceed 5% of the grant's amount.
If the 5% limit is exceeded, a 400 error will be returned.
donor:
type: object
properties:
firstName:
type: string
description: "The first name of the donor. Maximum length: 255 characters."
lastName:
type: string
description: "The last name of the donor. Maximum length: 255 characters."
email:
type: string
description: "The email address of the donor. Maximum length: 255 characters."
phone:
type: string
description: "The phone number of the donor. Maximum length: 255 characters."
address:
$ref: "#/components/schemas/GrantAddress"
note:
type: string
description: |-
A note the donor wants to send to the nonprofit. Maximum length: 400 characters.
designation:
type: string
description: |-
The designation to include on the grant. If this is left blank, "Where needed most" will be used.
Note that including a custom designation may cause the grant approval process to take longer.
Designations over 100 characters will be truncated.
CreateConnectRequest:
description: |-
The request to create a new Connect object for a Nonprofit.
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: |-
A human readable name of the Connect, optional.
metadata:
type: object
description: A map of arbitrary string keys and values to store information about the object.
additionalProperties:
type: string
CreateNonprofitRequest:
description: |-
The request to create and register a nonprofit organization account.
The ein and user.email properties are required.
The user.email should be a valid contact email address for the nonprofit organization.
required: true
content:
application/json:
schema:
type: object
required:
- ein
- user
properties:
user:
type: object
required:
- email
properties:
email:
type: string
description: The email address for the nonprofit account contact
example: ben.give@co.com
phone:
type: string
description: The phone number for the nonprofit account contact
example: "9127772424"
firstName:
type: string
description: The first name of the nonprofit account contact
example: Ben
lastName:
type: string
description: The last name of the nonprofit account contact
example: Give
ein:
type: string
description: The US federal employer identification number (Tax ID); unique on the system
example: "043567500"
preferredName:
type: string
description: |-
The preferred name of the nonprofit organization. This is the name that shows up on the nonprofit's dashboard and Connect modal. This is useful for nonprofits that are known by a different name to donors and don't use their IRS registered name publicly.
picture:
type: string
description: The URI of the nonprofit's logo
website:
type: string
description: The URL of the nonprofit's website
CreateEventSubscriptionRequest:
description: The request body for creating an event subscription
required: true
content:
application/json:
schema:
type: object
required:
- url
- category
properties:
url:
type: string
description: The webhook url where we'll send notifications.
example: "https://example.com/webhook"
category:
$ref: "#/components/schemas/EventCategory"
signing_secret:
type: string
description: |-
The key that will be used to sign webhooks.
If no value is passed, a random string will be used as default.
This is necessary to verify that the webhook is coming from Chariot.
While this parameter is optional, it is highly recommended to pass a value
for the secret and implement webhook signature verification.
UpdateEventSubscriptionRequest:
description: The request body for creating an event subscription
required: true
content:
application/json:
schema:
type: object
properties:
status:
type: string
description: |-
The status of the event subscription:
* active: The event subscription is active and events will be delivered
* disabled: The event subscription is temporarily disabled and events will not be delivered
* deleted: The event subscription is permanently deleted and events will not be delivered
enum:
- "active"
- "disabled"
- "deleted"
responses:
ListDafsResponse:
description: The response for Dafs.list
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
content:
application/json:
schema:
type: object
properties:
results:
type: array
items:
$ref: "#/components/schemas/Daf"
nextPageToken:
type: string
description: |-
A cursor token to use to retrieve the next page of results by making another API call to the same endpoint with the same parameters (only substituting the pageToken with this value). If specified, then more results exist on the server that were not returned, otherwise no more results exist on the server.
example:
results:
- id: "0bf40881-8ee2-47fb-98ca-f58c7999aa34"
orgName: "National Philanthropic Trust"
address: "123 Main St."
address2: "Apt 100"
city: "New York"
state: "NY"
zip: "12345"
supported: true
minimumGrantAmount: 5000
institutionDown: false
nextPageToken: "c3f685f2-2dda-4956-815b-39867a5e5638"
ListGrantsResponse:
description: The response for Grants.list
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
content:
application/json:
schema:
type: object
properties:
results:
type: array
items:
$ref: "#/components/schemas/Grant"
nextPageToken:
type: string
nullable: true
description: |-
A cursor token to use to retrieve the next page of results by making another API call to the same endpoint with the same parameters (only changing the pageToken). If specified, then more results exist on the server that were not returned, otherwise no more results exist on the server.
example:
results:
- id: "1e60800e-849b-43d1-870e-57afc8d75473"
workflowSessionId: "cfe09e64-6a74-4dab-a565-361185a6f248"
fundId: "daf-id"
createdAt: "2021-08-10 15:00:00.000"
updatedAt: "2021-08-11 15:34:00.000"
amount: 15000
status: "Initiated"
nextPageToken: "c3f685f2-2dda-4956-815b-39867a5e5638"
ListRecurringGrantsResponse:
description: The response for RecurringGrants.list
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
content:
application/json:
schema:
type: object
properties:
results:
type: array
items:
$ref: "#/components/schemas/RecurringGrant"
nextPageToken:
type: string
description: |-
A cursor token to use to retrieve the next page of results by making another API call to the same endpoint with the same parameters (only changing the pageToken). If specified, then more results exist on the server that were not returned, otherwise no more results exist on the server.
example:
results:
- id: "29650c10-1eb3-4f97-a63e-f2e41c145b53"
workflowSessionId: "b76fa69f-c554-43b2-af9a-1d4bb9a02016"
fundId: "daf-id"
createdAt: "2021-08-10 15:00:00.000"
updatedAt: "2021-08-11 15:34:00.000"
amount: 15000
frequency: MONTHLY
nextPageToken: "c3f685f2-2dda-4956-815b-39867a5e5638"
ListUnintegratedGrantsResponse:
description: The response for UnintegratedGrants.list
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
content:
application/json:
schema:
type: object
properties:
results:
type: array
items:
$ref: "#/components/schemas/UnintegratedGrant"
nextPageToken:
type: string
description: |-
A cursor token to use to retrieve the next page of results by making another API call
to the same endpoint with the same parameters (only changing the pageToken). If
specified, then more results exist on the server that were not returned, otherwise
no more results exist on the server.
example:
results:
- id: "1e60800e-849b-43d1-870e-57afc8d75473"
workflowSessionId: "cfe09e64-6a74-4dab-a565-361185a6f248"
fundId: "daf-id"
createdAt: "2021-08-10 15:00:00.000"
updatedAt: "2021-08-11 15:34:00.000"
amount: 15000
nextPageToken: "c3f685f2-2dda-4956-815b-39867a5e5638"
ListEventsResponse:
description: The response for Events.list
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
content:
application/json:
schema:
type: object
properties:
results:
type: array
items:
$ref: "#/components/schemas/Event"
nextPageToken:
type: string
description: |-
A cursor token to use to retrieve the next page of results by making another API call
to the same endpoint with the same parameters (only changing the pageToken). If
specified, then more results exist on the server that were not returned, otherwise
no more results exist on the server.
ListEventSubscriptionsResponse:
description: The response for Events.list
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
content:
application/json:
schema:
type: object
properties:
results:
type: array
items:
$ref: "#/components/schemas/EventSubscription"
nextPageToken:
type: string
description: |-
A cursor token to use to retrieve the next page of results by making another API call
to the same endpoint with the same parameters (only changing the pageToken). If
specified, then more results exist on the server that were not returned, otherwise
no more results exist on the server.
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."
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."
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."
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."
ConflictError:
description: Resource Conflicts
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
content:
application/problem+json:
schema:
$ref: "#/components/schemas/ProblemDetails"
examples:
Conflict:
value:
type: about:blank
title: "API Error"
status: 409
detail: "The request conflicts with the current state of the resource."
GoneError:
description: Resource Gone or Expired
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
content:
application/problem+json:
schema:
$ref: "#/components/schemas/ProblemDetails"
examples:
Gone:
value:
type: about:blank
title: "API Error"
status: 410
detail: "The resource is no longer available."
PreconditionFailedError:
description: Precondition Failed
headers:
X-Request-Id:
$ref: "#/components/headers/X-Request-Id"
content:
application/problem+json:
schema:
$ref: "#/components/schemas/ProblemDetails"
examples:
PreconditionFailed:
value:
type: about:blank
title: "API Error"
status: 412
detail: "A precondition for the request was not met."
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."
examples:
NonprofitRedCross:
summary: American Red Cross
value:
id: "021cf6aa-cb91-4b92-ae03-82a211cc8328"
name: "American Red Cross"
ein: "530196605"
createdAt: "2021-07-10 15:00:00.000"
updatedAt: "2020-01-31T23:59:59Z"
isDafPayNetwork: false
inGoodStanding: true
ConnectOutput:
summary: Simple connect output
value:
id: "test_de5a2e7d-c960-4eaa-8bd2-e8d2cc5b1a55"
name: "website"
apiKey: "test_98235982835"
active: true
createdAt: "2021-07-10 15:00:00.000"
updatedAt: "2020-01-31T23:59:59Z"
createdBy: "user123"
metadata:
tag1: "value1"
GrantOutput:
summary: Simple grant output
value:
id: "1e60800e-849b-43d1-870e-57afc8d75473"
workflowSessionId: "cfe09e64-6a74-4dab-a565-361185a6f248"
fundId: "daf-id"
createdAt: "2021-08-10 15:00:00.000"
updatedAt: "2021-08-11 15:34:00.000"
amount: 15000
status: "Initiated"
RecurringGrantOutput:
summary: Simple recurring grant output.
value:
id: "1e60800e-849b-43d1-870e-57afc8d75473"
workflowSessionId: "cfe09e64-6a74-4dab-a565-361185a6f248"
fundId: "daf-id"
createdAt: "2021-08-10 15:00:00.000"
updatedAt: "2021-08-11 15:34:00.000"
amount: 15000
frequency: MONTHLY
UnintegratedGrantOutput:
summary: Simple unintegrated grant output
value:
id: "1e60800e-849b-43d1-870e-57afc8d75473"
workflowSessionId: "cfe09e64-6a74-4dab-a565-361185a6f248"
fundId: "daf-id"
createdAt: "2021-08-10 15:00:00.000"
updatedAt: "2021-08-11 15:34:00.000"
amount: 15000
DafOutput:
summary: NPT DAF
value:
id: "0bf40881-8ee2-47fb-98ca-f58c7999aa34"
orgName: "National Philanthropic Trust"
address: "123 Main St."
address2: "Apt 100"
city: "New York City"
state: "New York"
zip: "12345"
supported: true
minimumGrantAmount: 25000
institutionDown: false