Overflow Donors API

The Donors API from Overflow — 2 operation(s) for donors.

OpenAPI Specification

overflow-donors-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Overflow Open Campaigns Donors API
  description: '

    The documentation for the Overflow Open APIs.


    To access the OpenAPI spec in JSON/YAML format, navigate to:


    * `/api/docs/openapi.json`

    * `/api/docs/openapi.yaml`

    '
  version: '3.0'
  contact: {}
servers:
- url: https://server.stage.overflow.co
  description: API server
tags:
- name: Donors
paths:
  /api/v3/donors:
    get:
      description: Returns donors for the nonprofit based on the provided filters.
      operationId: OpenApiDonorProfilesController_getDonorProfiles
      parameters:
      - name: limit
        required: false
        in: query
        description: The number of donors to return
        schema:
          minimum: 1
          maximum: 100
          default: 25
          type: number
      - name: locationIds
        required: false
        in: query
        description: Filter donors by location IDs
        schema:
          example:
          - 6710f34fd5061afeec3eab57
          type: array
          items:
            type: string
      - name: maximumUpdatedDate
        required: false
        in: query
        description: The maximum updated date of the donors to return.
        schema:
          format: date-time
          example: '2025-02-01'
          type: string
      - name: minimumUpdatedDate
        required: false
        in: query
        description: The minimum updated date of the donors to return.
        schema:
          format: date-time
          example: '2025-01-01'
          type: string
      - name: page
        required: false
        in: query
        description: The page number of the donors to return
        schema:
          minimum: 1
          default: 1
          type: number
      - name: sortBy
        required: false
        in: query
        description: The field to sort the donors by.
        schema:
          default: updatedAt
          example: createdAt
          enum:
          - createdAt
          - updatedAt
          - firstName
          - lastName
          - email
          - phone
          - id
          - totalContributionsCount
          type: string
      - name: sortDirection
        required: false
        in: query
        description: The direction to sort the donors by.
        schema:
          default: DESC
          example: DESC
          enum:
          - ASC
          - DESC
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetDonorsResponse'
      security:
      - ClientId: []
        ApiKey: []
      summary: Get Donors
      tags:
      - Donors
    post:
      description: Creates a new Donor Profile.
      operationId: OpenApiDonorProfilesController_createDonorProfile
      parameters: []
      requestBody:
        required: true
        description: Parameters to create a new Donor Profile
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDonorProfileParams'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateDonorProfileResponse'
      security:
      - ClientId: []
        ApiKey: []
      summary: Create Donor Profile
      tags:
      - Donors
  /api/v3/donors/{donorId}:
    get:
      description: Returns donor for given ID.
      operationId: OpenApiDonorProfilesController_getDonorProfile
      parameters:
      - name: donorId
        required: true
        in: path
        description: The ID of the donor to fetch.
        schema:
          example: 2ea1ae03ca521e437db76d76
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetDonorResponse'
        '400':
          description: Donor does not belong to the nonprofit
        '404':
          description: Donor profile does not exist
      security:
      - ClientId: []
        ApiKey: []
      summary: Get Donor
      tags:
      - Donors
    patch:
      description: Updates the Donor Profile for the given id
      operationId: OpenApiDonorProfilesController_updateDonorProfile
      parameters:
      - name: donorId
        required: true
        in: path
        description: The ID of the donor to update.
        schema:
          example: 2ea1ae03ca521e437db76d76
          type: string
      requestBody:
        required: true
        description: Parameters to update a Donor Profile
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDonorProfileParams'
      responses:
        '204':
          description: Successfully updated Donor Profile
        '400':
          description: Donor does not belong to the nonprofit
        '403':
          description: This Donor Profile is associated to a Donor and cannot be updated.
        '404':
          description: Donor profile does not exist
      security:
      - ClientId: []
        ApiKey: []
      summary: Update Donor
      tags:
      - Donors
components:
  schemas:
    UpdateDonorProfileParams:
      type: object
      properties:
        email:
          type: string
          format: email
          description: The email address of the donor
          example: john.doe@example.com
        firstName:
          type: string
          description: The first name of the donor
          example: John
        lastName:
          type: string
          description: The last name of the donor
          example: Doe
        phone:
          type: string
          description: The phone number of the donor
          example: '+1234567890'
    GetDonorsResponse:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: Donor Id
                example: 6710f34fd5061afeec3eab57
              createdAt:
                type: string
                format: date-time
                description: Donor created at
                example: '2025-01-01T00:00:00.000Z'
              updatedAt:
                type: string
                format: date-time
                description: Donor updated at
                example: '2025-01-01T00:00:00.000Z'
              firstName:
                type: string
                description: Donor first name
                example: John
              lastName:
                type: string
                description: Donor last name
                example: Doe
              email:
                type: string
                format: email
                description: Donor email
                example: john.doe@example.com
              phone:
                type: string
                description: Donor phone number in E.164 format
                example: '+1234567890'
              address:
                type: object
                properties:
                  city:
                    type: string
                    minLength: 1
                  country:
                    type: string
                  line1:
                    type: string
                    minLength: 1
                  line2:
                    type: string
                  state:
                    type: string
                    minLength: 1
                  timezone:
                    type: string
                  zip:
                    type: string
                    pattern: ^\d{5}(-\d{4})?$
                required:
                - city
                - line1
                - state
                - zip
                nullable: true
                description: Donor address
                example:
                  line1: 123 Main St
                  line2: Apt 1
                  city: Anytown
                  state: CA
                  zip: '12345'
              activeRecurringCount:
                type: number
                description: The number of active recurring donations
                example: 1
              latestContributionDate:
                type: string
                format: date-time
                description: The date of the latest contribution
                example: '2025-01-01T00:00:00.000'
              locationIds:
                type: array
                items:
                  type: string
                description: The location IDs associated with the donor
                example:
                - 6710f34fd5061afeec3eab57
              totalContributionsCount:
                type: number
                description: Total number of contributions made by the donor
                example: 10
            required:
            - id
            - createdAt
            - updatedAt
            - firstName
            - lastName
            - email
            - phone
            - address
          description: List of donors
        totalCount:
          type: number
          description: Total number of donors matching the filters
          example: 100
      required:
      - data
      - totalCount
    GetDonorResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            id:
              type: string
              description: Donor Id
              example: 6710f34fd5061afeec3eab57
            createdAt:
              type: string
              format: date-time
              description: Donor created at
              example: '2025-01-01T00:00:00.000Z'
            updatedAt:
              type: string
              format: date-time
              description: Donor updated at
              example: '2025-01-01T00:00:00.000Z'
            firstName:
              type: string
              description: Donor first name
              example: John
            lastName:
              type: string
              description: Donor last name
              example: Doe
            email:
              type: string
              format: email
              description: Donor email
              example: john.doe@example.com
            phone:
              type: string
              description: Donor phone number in E.164 format
              example: '+1234567890'
            address:
              type: object
              properties:
                city:
                  type: string
                  minLength: 1
                country:
                  type: string
                line1:
                  type: string
                  minLength: 1
                line2:
                  type: string
                state:
                  type: string
                  minLength: 1
                timezone:
                  type: string
                zip:
                  type: string
                  pattern: ^\d{5}(-\d{4})?$
              required:
              - city
              - line1
              - state
              - zip
              nullable: true
              description: Donor address
              example:
                line1: 123 Main St
                line2: Apt 1
                city: Anytown
                state: CA
                zip: '12345'
            activeRecurringCount:
              type: number
              description: The number of active recurring donations
              example: 1
            latestContributionDate:
              type: string
              format: date-time
              description: The date of the latest contribution
              example: '2025-01-01T00:00:00.000'
            locationIds:
              type: array
              items:
                type: string
              description: The location IDs associated with the donor
              example:
              - 6710f34fd5061afeec3eab57
            totalContributionsCount:
              type: number
              description: Total number of contributions made by the donor
              example: 10
          required:
          - id
          - createdAt
          - updatedAt
          - firstName
          - lastName
          - email
          - phone
          - address
          description: The donor for the given ID
      required:
      - data
    CreateDonorProfileResponse:
      type: object
      properties:
        data:
          type: string
          description: The id of the new donor profile
      required:
      - data
    CreateDonorProfileParams:
      type: object
      properties:
        email:
          type: string
          format: email
          description: The email address of the donor
          example: john.doe@example.com
        firstName:
          type: string
          description: The first name of the donor
          example: John
        lastName:
          type: string
          description: The last name of the donor
          example: Doe
        mailingAddress:
          type: object
          properties:
            city:
              type: string
              minLength: 1
            country:
              type: string
            line1:
              type: string
              minLength: 1
            line2:
              type: string
            state:
              type: string
              minLength: 1
            timezone:
              type: string
            zip:
              type: string
              pattern: ^\d{5}(-\d{4})?$
          required:
          - city
          - line1
          - state
          - zip
          description: The mailing address of the donor
          example:
            city: Anytown
            line1: 123 Main St
            line2: Apt 1
            state: CA
            zip: '12345'
        phone:
          type: string
          description: The phone number of the donor
          example: '+1234567890'
      required:
      - firstName
      - lastName
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: API Key for API authentication
    ClientId:
      type: apiKey
      in: header
      name: x-client-id
      description: Client ID for API authentication