Chariot properties API

The properties API from Chariot — 4 operation(s) for properties.

OpenAPI Specification

chariot-properties-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Chariot FDX Accounts properties 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: properties
paths:
  /v1/properties:
    get:
      summary: List Properties
      description: List properties for your account.
      operationId: listProperties
      tags:
      - properties
      security:
      - bearerAuth: []
      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: page_token
        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: resource_type
        in: query
        description: The type of the resource that the properties are associated with.
        required: false
        schema:
          $ref: '#/components/schemas/ResourceType'
      responses:
        '200':
          $ref: '#/components/responses/ListPropertiesResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/AuthenticationError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /v1/properties/{id}:
    get:
      summary: Get a Property
      description: Get a property by its unique identifier.
      operationId: getProperty
      tags:
      - properties
      security:
      - bearerAuth: []
      parameters:
      - name: id
        in: path
        description: The unique identifier for the property
        required: true
        schema:
          type: string
        example: prop_01j8rs605a4gctmbm58d87mvsj
      responses:
        '200':
          description: The property was retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Property'
        '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/properties/{id}/options:
    get:
      summary: List Property Options
      description: List all options for an enum or user property.
      operationId: listPropertyOptions
      tags:
      - properties
      security:
      - bearerAuth: []
      parameters:
      - name: id
        in: path
        description: The unique identifier for the property
        required: true
        schema:
          type: string
        example: prop_01j8rs605a4gctmbm58d87mvsj
      - 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: page_token
        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/ListPropertyOptionsResponse'
        '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/properties/{id}/assign:
    post:
      summary: Assign a Property
      description: 'Appends a Property to one or more Donations or Deposits.

        A maximum of 100 resources can be assigned to a property at a time.

        The resource identifiers must be of the same resource_type as the Property, otherwise a 400 Bad Request error will be returned.'
      operationId: assignProperty
      tags:
      - properties
      security:
      - bearerAuth: []
      parameters:
      - name: id
        in: path
        description: The unique identifier for the property
        required: true
        schema:
          type: string
        example: prop_01j8rs605a4gctmbm58d87mvsj
      requestBody:
        $ref: '#/components/requestBodies/AssignPropertyRequest'
      responses:
        '200':
          $ref: '#/components/responses/AssignPropertyResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/AuthenticationError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    Property:
      type: object
      description: A custom key-value pair that is associated with a donation.
      required:
      - id
      - name
      - resource_type
      - property_type
      properties:
        id:
          type: string
          readOnly: true
          description: The unique identifier for the property.
          example: prop_01j8rs605a4gctmbm58d87mvsj
        name:
          type: string
          description: The name of the property.
          example: Donation Purpose
        resource_type:
          $ref: '#/components/schemas/ResourceType'
        property_type:
          $ref: '#/components/schemas/PropertyType'
        options:
          type: array
          description: The first 25 options for enum and user properties. Use the [List Property Options](/api-reference/properties/list-options) endpoint to paginate through all options.
          items:
            $ref: '#/components/schemas/PropertyOptionValue'
        total_option_count:
          type: integer
          format: int32
          description: The total number of options for enum and user properties. When this is greater than the length of `options`, use the [List Property Options](/api-reference/properties/list-options) endpoint to paginate through all options.
    ResourceType:
      type: string
      description: The API resource that the property is associated with.
      enum:
      - donation
      - deposit
    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.
    PropertyOptionValue:
      type: object
      description: A value for an enum or user property.
      required:
      - id
      - name
      properties:
        id:
          type: string
          description: The unique identifier for the property value.
        name:
          type: string
          description: The human readable string for the property value.
        description:
          type: string
          description: A description of the property option.
    PropertyType:
      type: string
      description: The data type of a property.
      enum:
      - text
      - enum
      - user
      - boolean
      - date
      example: text
    PropertyValue:
      type: object
      required:
      - type
      properties:
        type:
          $ref: '#/components/schemas/PropertyType'
        text_value:
          type: string
          description: The text value of the property.
        enum_value_id:
          type: string
          description: The unique identifier for the enum value.
        user_value_id:
          type: string
          description: The unique identifier for the user.
        boolean_value:
          type: boolean
          description: The boolean value of the property.
        date_value:
          type: string
          format: date-time
          description: The date value of the property.
        empty:
          type: boolean
          description: 'Whether the property value is empty.

            Can use this to unset property values when assigning a property.'
  responses:
    ListPropertyOptionsResponse:
      description: The response for Properties.listOptions
      headers:
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
      content:
        application/json:
          schema:
            type: object
            properties:
              results:
                type: array
                items:
                  $ref: '#/components/schemas/PropertyOptionValue'
              next_page_token:
                type: string
                description: "A cursor token to use to retrieve the next page of results by making another API call\n to the same endpoint with the same parameters (only changing the pageToken). If\n specified, then more results exist on the server that were not returned, otherwise\n no more results exist on the server."
    AssignPropertyResponse:
      description: The response for Properties.assign
      headers:
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
      content:
        application/json:
          schema:
            type: object
            properties:
              num_updated:
                type: integer
                description: The number of resources that were updated.
    BadRequestError:
      description: The request is invalid or contains invalid parameters
      headers:
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
          examples:
            BadRequest:
              value:
                type: about:blank
                title: API Error
                status: 400
                detail: The request is invalid or contains invalid parameters.
    InternalServerError:
      description: Internal Server Error
      headers:
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
          examples:
            InternalServerError:
              value:
                type: about:blank
                title: API Error
                status: 500
                detail: The server encountered an error processing your request.
    ListPropertiesResponse:
      description: The response for Properties.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/Property'
              next_page_token:
                type: string
                description: "A cursor token to use to retrieve the next page of results by making another API call\n to the same endpoint with the same parameters (only changing the pageToken). If\n specified, then more results exist on the server that were not returned, otherwise\n no more results exist on the server."
    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.
  requestBodies:
    AssignPropertyRequest:
      description: The request to add a property value to a donation or deposit resource.
      required: true
      content:
        application/json:
          schema:
            type: object
            required:
            - value
            - resources
            properties:
              value:
                $ref: '#/components/schemas/PropertyValue'
              resources:
                type: object
                required:
                - ids
                properties:
                  ids:
                    type: array
                    items:
                      type: string
                      description: The unique identifier for the resource
                      example: donation_01j8rs605a4gctmbm58d87mvsj
  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