Chariot Organizations API

The Organizations API from Chariot — 3 operation(s) for organizations.

OpenAPI Specification

chariot-organizations-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Chariot FDX Accounts Organizations 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: Organizations
paths:
  /v1/organizations/search:
    get:
      summary: Search organizations
      description: 'Search for organizations by name or EIN.

        This endpoint exists to support a typeahead search or quick lookup by nonprofit EIN or name.

        The Get Organization API should be used to retrieve detailed information about an organization.'
      operationId: searchOrganizations
      tags:
      - Organizations
      security:
      - bearerAuth: []
      parameters:
      - name: q
        in: query
        required: true
        description: The query string to search for. If this is in the format of an EIN, the search will be limited exclusively to the organization with that EIN. Otherwise, this will be a fuzzy search on organization name.
        schema:
          type: string
      - name: ein
        in: query
        description: The Employer Identification Number (EIN) or TaxID for the nonprofit entity. This is deprecated in favor of the `q` parameter.
        schema:
          type: string
        deprecated: true
      - name: name
        in: query
        description: The name of the organization. This is deprecated in favor of the `q` parameter.
        schema:
          type: string
        deprecated: true
      - name: limit
        in: query
        description: Limit the size of the list that is returned. The default (and maximum) is 20 objects.
        required: false
        schema:
          type: integer
          format: int32
      responses:
        '200':
          $ref: '#/components/responses/SearchOrganizationsResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/AuthenticationError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /v1/organizations/{id}:
    get:
      summary: Get organization
      description: Retrieves the organization with the given ID.
      operationId: getOrganization
      tags:
      - Organizations
      security:
      - bearerAuth: []
      parameters:
      - name: id
        in: path
        description: The unique identifier for the organization
        schema:
          type: string
        required: true
        example: org_1LaXpKGUcADgqoEMl0Cx0Ygg
      responses:
        '200':
          description: OK
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Organization'
        '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/simulations/organizations/onboard/{id}:
    post:
      summary: 'Sandbox: Onboard an organization'
      description: 'Creates a Chariot account for a sandbox recipient organization so that

        disbursements to it settle electronically instead of via a mailed check.


        By default a sandbox organization has no Chariot account, so disbursements

        to it are mailed as a physical check. Call this endpoint to provision an

        account for the organization and choose which electronic rail its

        disbursements should settle on.


        The `settlement` is fixed on the first successful call. Onboarding the same

        organization again with a different `settlement` returns an error.


        <Note title="Sandbox Only" icon="fa-light fa-atom-simple">

        This API is only available in the sandbox environment.

        </Note>

        '
      operationId: onboardOrganization
      tags:
      - Organizations
      security:
      - bearerAuth: []
      parameters:
      - name: id
        in: path
        description: The unique identifier for the organization to onboard.
        required: true
        schema:
          type: string
        example: org_1LaXpKGUcADgqoEMl0Cx0Ygg
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - settlement
              properties:
                settlement:
                  $ref: '#/components/schemas/SandboxSettlement'
      responses:
        '200':
          description: OK
          headers:
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Organization'
        '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:
  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.
    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.
    SearchOrganizationsResponse:
      description: The response for Organizations.search
      headers:
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
      content:
        application/json:
          schema:
            type: object
            properties:
              results:
                type: array
                items:
                  $ref: '#/components/schemas/OrganizationSummary'
    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.
    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.
  schemas:
    SandboxSettlement:
      type: string
      description: 'The electronic rail on which disbursements to an onboarded sandbox

        organization settle. `SANDBOX_SETTLEMENT_ACCOUNT_TRANSFER` settles as an

        in-network transfer between accounts on the same bank. `SANDBOX_SETTLEMENT_ACH`

        settles via ACH across banks.'
      enum:
      - SANDBOX_SETTLEMENT_ACCOUNT_TRANSFER
      - SANDBOX_SETTLEMENT_ACH
    Person:
      type: object
      description: A person is an individual who is an officer of a nonprofit.
      required:
      - name
      properties:
        name:
          type: string
          description: The full name of the person
        title:
          type: string
          description: The title or role of the person with respect to the nonprofit entity
          example: Executive Director
    NonprofitClassification:
      type: object
      description: A classification of the nonprofit entity as defined by the IRS.
      properties:
        group_exemption_number:
          type: string
          description: This is a four-digit internal IRS number assigned to central/parent entity holding group exemption letters.
        subsection_code:
          $ref: '#/components/schemas/TaxExemptCode'
        filing_requirement_code:
          $ref: '#/components/schemas/TaxExemptCode'
        foundation_code:
          $ref: '#/components/schemas/TaxExemptCode'
        affiliation_code:
          $ref: '#/components/schemas/TaxExemptCode'
        organization_code:
          $ref: '#/components/schemas/TaxExemptCode'
        exempt_status_code:
          $ref: '#/components/schemas/TaxExemptCode'
        deductibility_code:
          $ref: '#/components/schemas/TaxExemptCode'
        ntee_code:
          $ref: '#/components/schemas/NteeCode'
        naics_code:
          $ref: '#/components/schemas/NaicsCode'
    ComplianceRequirement:
      type: object
      description: A compliance requirement is a requirement that a nonprofit entity must meet in order to be eligible for Chariot services.
      properties:
        compliant:
          type: boolean
          description: Whether the entity is compliant with the requirement
          example: true
        reason:
          type: string
          description: The reason for the compliance requirement
        last_found_at:
          type: string
          format: date-time
          description: The date and time when the compliance requirement was last found
          example: '2020-01-31T23:00:00Z'
    NonprofitCompliance:
      type: object
      description: 'An object that contains legal information about the nonprofit entity and its tax-exemption status.

        This information is used to comply with regulations and ensure the legitimacy of the nonprofit for purposes of donations and disbursements.'
      properties:
        daf_eligible:
          type: boolean
          description: Whether the entity is eligible to receive donations from a Donor Advised Fund
          example: true
        irs_pub_78:
          $ref: '#/components/schemas/ComplianceRequirement'
        ofac:
          $ref: '#/components/schemas/ComplianceRequirement'
        foundation_code:
          $ref: '#/components/schemas/ComplianceRequirement'
        california_attorney_general_registry:
          $ref: '#/components/schemas/ComplianceRequirement'
        california_franchise_tax_board:
          $ref: '#/components/schemas/ComplianceRequirement'
    Incorporation:
      type: object
      description: Incorporation and IRS determination information for the nonprofit entity.
      properties:
        formation_year:
          type: string
          format: integer
          description: The year the organization was incorporated or formed.
          example: '2005'
        state:
          type: string
          description: The U.S. state where the organization is legally domiciled.
          example: AZ
        ruling_date:
          type: string
          description: 'The month and year on the IRS ruling or determination letter recognizing the organization''s exempt status.

            Formatted as an ISO 8601 year-month string.'
          example: 2020-07
    OrganizationSummary:
      type: object
      description: A summary of an organization.
      required:
      - id
      - ein
      - name
      properties:
        id:
          type: string
          description: The unique identifier for the organization.
          example: org_01jpjenf5q6cawy43yxfcrxhct
        ein:
          type: string
          description: The Employer Identification Number (EIN) or TaxID for the nonprofit entity.
          example: '123456789'
        name:
          type: string
          description: The name of the organization.
          example: American Red Cross
        daf_eligible:
          type: boolean
          description: Whether the organization is eligible to receive donations from a Donor Advised Fund.
          example: true
        city:
          type: string
          description: The city of the organization.
          example: New York
        state:
          type: string
          description: The state of the organization.
          example: NY
    NteeCode:
      type: object
      description: A code that is used to classify the nonprofit entity as defined by the IRS.
      required:
      - code
      - description
      properties:
        code:
          type: string
          description: The code of the NTEE code
          example: A
        description:
          type: string
          description: The description of the NTEE code
          example: Animal Welfare
        parent_code:
          type: string
          description: The parent code of the NTEE code
          example: A
        parent_description:
          type: string
          description: The description of the parent NTEE code
          example: Animal Welfare
    Brand:
      type: object
      description: Fair use brand assets that are associated with an organization and can be used for identification and informational purposes.
      properties:
        icon_url:
          type: string
          description: The URL of the organization's icon
        logo_url:
          type: string
          description: The URL of the organization's logo
    NaicsCode:
      type: object
      description: A code that is used to classify the nonprofit entity as defined by the NAICS.
      properties:
        naics2:
          type: string
          description: The code of the NAICS code
          example: '31'
        naics2_description:
          type: string
          description: The description of the NAICS code
          example: Manufacturing
        naics4:
          type: string
          description: The code of the NAICS code
          example: '3112'
        naics4_description:
          type: string
          description: The description of the NAICS code
          example: Grain and Oilseed Milling
        naics6:
          type: string
          description: The code of the NAICS code
          example: '311221'
        naics6_description:
          type: string
          description: The description of the NAICS code
          example: Wet Corn Milling and Starch Manufacturing
    Address:
      type: object
      required:
      - city
      - country
      - line1
      - postal_code
      - state
      properties:
        city:
          type: string
          description: 'City, district, suburb, town, or village. Maximum length: 255 characters.'
          example: New York
        country:
          type: string
          description: Two-letter country code (https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
          example: US
        line1:
          type: string
          description: 'Address line 1 (e.g. street, PO Box, or company name). Maximum length: 255 characters.'
          example: 123 Main St.
        line2:
          type: string
          description: 'Address line 2 (e.g. apartment, suite, unit, or building). Maximum length: 255 characters.'
        postal_code:
          type: string
          description: 'ZIP or postal code. Maximum length: 40 characters.'
          example: '12345'
        state:
          type: string
          description: State, county, province, or region
          example: NY
    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.
    Organization:
      type: object
      description: 'An `Organization` represents an operating nonprofit or an operating sub-organization of a parent or sponsoring nonprofit.

        The generally accepted identifier for an organization is its domain. This domain provides proof of identity, ownership and relationship to an entity.

        Organizations can receive payments from payers on the network.'
      required:
      - id
      - ein
      - name
      properties:
        id:
          type: string
          readOnly: true
          description: The unique identifier for the object.
          example: org_01jpjenf5q6cawy43yxfcrxhct
        ein:
          type: string
          description: The EIN of the organization.
          example: '123456789'
        name:
          type: string
          description: 'The name of the organization.

            For organizations that operate under a different name than the one tied to the legal entity,

            this name will differ from the name of the linked entity.

            This is also known as the "DBA" or "Doing Business As" name of the organization.'
          example: American Red Cross
        parent_organization_id:
          type: string
          description: 'The unique identifier of the parent organization, if this is a sponsored organization.

            This value is `null` or empty if the organization is not sponsored or not a child of a parent organization.'
          example: org_01j8rs605a4gctmbm58d87mvsk
        physical_address:
          $ref: '#/components/schemas/Address'
        classification:
          $ref: '#/components/schemas/NonprofitClassification'
        compliance:
          $ref: '#/components/schemas/NonprofitCompliance'
        mission_statement:
          type: string
          description: The mission statement of the organization
          example: To provide relief to those in need
        web:
          $ref: '#/components/schemas/WebDomain'
        brand:
          $ref: '#/components/schemas/Brand'
        officers:
          type: array
          description: The list of officers of the organization
          items:
            $ref: '#/components/schemas/Person'
        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.'
        incorporation:
          $ref: '#/components/schemas/Incorporation'
    WebDomain:
      type: object
      description: 'A web domain is a unique identifier for a website or web application that is associated with an organization.

        Domains are important identity constructs that underpin the web and online interactions.

        The domain can be used as an identifier and its validity can be asserted via DNS.'
      required:
      - domain
      properties:
        domain:
          type: string
          description: The DNS domain name
          example: redcross.org
    TaxExemptCode:
      type: object
      description: A tax exempt code is a code that is used to classify the tax-exempt status of a nonprofit entity.
      required:
      - name
      - code
      properties:
        code:
          type: integer
          description: The code of the tax exempt code
          example: 1
        name:
          type: string
          description: The name of the tax exempt code
          example: UNCONDITIONAL
        description:
          type: string
          description: The description of the tax exempt code
          example: Unconditional Exemption
  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