Breeze Giving and Contributions API

List, add, edit, and delete contributions (giving records), including splitting a single contribution across multiple funds, associating a payment, and matching gifts to a person and payment method.

OpenAPI Specification

breeze-chms-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Breeze ChMS API
  description: >-
    The Breeze ChMS API is a documented REST API for Breeze church management
    software. It is scoped to an individual church subdomain
    (https://{subdomain}.breezechms.com/api) and covers people, tags, events,
    check-in / attendance, giving (contributions), funds, pledge campaigns,
    custom forms, volunteers, and account administration. Every operation is an
    HTTP GET request whose inputs are supplied as query-string parameters;
    request bodies for create/update operations are passed as JSON-encoded
    strings in parameters such as fields_json and funds_json. Authentication is
    an account API key sent in the Api-Key HTTP header. The API is rate limited
    to roughly 20 requests per minute; wait about 3.5 seconds between calls. The
    API key is obtained by the Account Owner under Manage Account > API Key.
  version: '1.0'
  contact:
    name: Breeze ChMS
    url: https://www.breezechms.com
servers:
  - url: https://{subdomain}.breezechms.com/api
    description: Church-specific Breeze subdomain
    variables:
      subdomain:
        default: yourchurch
        description: Your church's Breeze subdomain.
security:
  - apiKeyAuth: []
tags:
  - name: People
    description: Members, contacts, custom profile fields, and families.
  - name: Tags
    description: Tags, tag folders, and tag assignment.
  - name: Events
    description: Events, calendars, and locations.
  - name: Attendance
    description: Check-in / check-out attendance and eligibility.
  - name: Giving
    description: Contributions (giving records).
  - name: Funds
    description: Contribution funds.
  - name: Pledges
    description: Pledge campaigns and pledges.
  - name: Forms
    description: Forms, form fields, and form entries.
  - name: Volunteers
    description: Volunteers and volunteer roles for events.
  - name: Account
    description: Account summary and activity log.
paths:
  /people:
    get:
      operationId: listPeople
      tags: [People]
      summary: List people
      description: Retrieves a paged list of people (members and contacts).
      parameters:
        - name: limit
          in: query
          schema: { type: integer }
          description: Number of people to return.
        - name: offset
          in: query
          schema: { type: integer }
          description: Number of people to skip for paging.
        - name: details
          in: query
          schema: { type: integer, enum: [0, 1] }
          description: Set to 1 to include full profile field details.
        - name: filter_json
          in: query
          schema: { type: string }
          description: JSON-encoded filter of profile field criteria.
      responses:
        '200':
          description: A list of people.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /people/{person_id}:
    get:
      operationId: getPerson
      tags: [People]
      summary: Retrieve a person
      description: Retrieves a single person by ID.
      parameters:
        - name: person_id
          in: path
          required: true
          schema: { type: string }
        - name: details
          in: query
          schema: { type: integer, enum: [0, 1] }
      responses:
        '200':
          description: The requested person.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /people/add:
    get:
      operationId: addPerson
      tags: [People]
      summary: Add a person
      parameters:
        - name: first
          in: query
          schema: { type: string }
        - name: last
          in: query
          schema: { type: string }
        - name: fields_json
          in: query
          schema: { type: string }
          description: JSON-encoded array of profile field values.
      responses:
        '200':
          description: The created person.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /people/update:
    get:
      operationId: updatePerson
      tags: [People]
      summary: Update a person
      parameters:
        - name: person_id
          in: query
          required: true
          schema: { type: string }
        - name: fields_json
          in: query
          schema: { type: string }
      responses:
        '200':
          description: The updated person.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /people/delete:
    get:
      operationId: deletePerson
      tags: [People]
      summary: Delete a person
      parameters:
        - name: person_id
          in: query
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Deletion result.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /profile:
    get:
      operationId: listProfileFields
      tags: [People]
      summary: List profile fields
      description: Lists the profile fields (and sections) configured for the church.
      responses:
        '200':
          description: A list of profile fields.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /families/create:
    get:
      operationId: createFamily
      tags: [People]
      summary: Create a family
      parameters:
        - name: people_ids_json
          in: query
          schema: { type: string }
      responses:
        '200':
          description: The created family.
  /families/add:
    get:
      operationId: addToFamily
      tags: [People]
      summary: Add people to a family
      parameters:
        - name: people_ids_json
          in: query
          schema: { type: string }
        - name: target_person_id
          in: query
          schema: { type: string }
      responses:
        '200':
          description: Result.
  /families/remove:
    get:
      operationId: removeFromFamily
      tags: [People]
      summary: Remove people from a family
      parameters:
        - name: people_ids_json
          in: query
          schema: { type: string }
      responses:
        '200':
          description: Result.
  /tags/list_tags:
    get:
      operationId: listTags
      tags: [Tags]
      summary: List tags
      parameters:
        - name: folder_id
          in: query
          schema: { type: string }
      responses:
        '200':
          description: A list of tags.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /tags/list_folders:
    get:
      operationId: listTagFolders
      tags: [Tags]
      summary: List tag folders
      responses:
        '200':
          description: A list of tag folders.
  /tags/add_tag:
    get:
      operationId: addTag
      tags: [Tags]
      summary: Add a tag
      parameters:
        - name: name
          in: query
          schema: { type: string }
        - name: folder_id
          in: query
          schema: { type: string }
      responses:
        '200':
          description: The created tag.
  /tags/add_tag_folder:
    get:
      operationId: addTagFolder
      tags: [Tags]
      summary: Add a tag folder
      parameters:
        - name: name
          in: query
          schema: { type: string }
        - name: parent_id
          in: query
          schema: { type: string }
      responses:
        '200':
          description: The created tag folder.
  /tags/delete_tag:
    get:
      operationId: deleteTag
      tags: [Tags]
      summary: Delete a tag
      parameters:
        - name: tag_id
          in: query
          schema: { type: string }
      responses:
        '200':
          description: Result.
  /tags/delete_tag_folder:
    get:
      operationId: deleteTagFolder
      tags: [Tags]
      summary: Delete a tag folder
      parameters:
        - name: folder_id
          in: query
          schema: { type: string }
      responses:
        '200':
          description: Result.
  /tags/assign:
    get:
      operationId: assignTag
      tags: [Tags]
      summary: Assign a tag to a person
      parameters:
        - name: person_id
          in: query
          schema: { type: string }
        - name: tag_id
          in: query
          schema: { type: string }
      responses:
        '200':
          description: Result.
  /tags/unassign:
    get:
      operationId: unassignTag
      tags: [Tags]
      summary: Unassign a tag from a person
      parameters:
        - name: person_id
          in: query
          schema: { type: string }
        - name: tag_id
          in: query
          schema: { type: string }
      responses:
        '200':
          description: Result.
  /events:
    get:
      operationId: listEvents
      tags: [Events]
      summary: List events
      parameters:
        - name: start
          in: query
          schema: { type: string }
          description: Start date (YYYY-MM-DD).
        - name: end
          in: query
          schema: { type: string }
          description: End date (YYYY-MM-DD).
        - name: category_id
          in: query
          schema: { type: string }
        - name: eligible
          in: query
          schema: { type: integer, enum: [0, 1] }
        - name: details
          in: query
          schema: { type: integer, enum: [0, 1] }
        - name: limit
          in: query
          schema: { type: integer }
      responses:
        '200':
          description: A list of events.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /events/list_event:
    get:
      operationId: getEvent
      tags: [Events]
      summary: Retrieve an event instance
      parameters:
        - name: instance_id
          in: query
          required: true
          schema: { type: string }
        - name: schedule
          in: query
          schema: { type: integer, enum: [0, 1] }
        - name: schedule_direction
          in: query
          schema: { type: string, enum: [before, after] }
        - name: schedule_limit
          in: query
          schema: { type: integer }
        - name: eligible
          in: query
          schema: { type: integer, enum: [0, 1] }
        - name: details
          in: query
          schema: { type: integer, enum: [0, 1] }
      responses:
        '200':
          description: The requested event instance.
  /events/calendars/list:
    get:
      operationId: listCalendars
      tags: [Events]
      summary: List calendars
      responses:
        '200':
          description: A list of calendars.
  /events/locations:
    get:
      operationId: listLocations
      tags: [Events]
      summary: List event locations
      responses:
        '200':
          description: A list of locations.
  /events/add:
    get:
      operationId: addEvent
      tags: [Events]
      summary: Add an event
      parameters:
        - name: name
          in: query
          schema: { type: string }
        - name: starts_on
          in: query
          schema: { type: string }
        - name: ends_on
          in: query
          schema: { type: string }
        - name: all_day
          in: query
          schema: { type: integer, enum: [0, 1] }
        - name: description
          in: query
          schema: { type: string }
        - name: category_id
          in: query
          schema: { type: string }
        - name: event_id
          in: query
          schema: { type: string }
      responses:
        '200':
          description: The created event.
  /events/delete:
    get:
      operationId: deleteEvent
      tags: [Events]
      summary: Delete an event instance
      parameters:
        - name: instance_id
          in: query
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Result.
  /events/attendance/add:
    get:
      operationId: addAttendance
      tags: [Attendance]
      summary: Add attendance (check in / out)
      parameters:
        - name: person_id
          in: query
          schema: { type: string }
        - name: instance_id
          in: query
          schema: { type: string }
        - name: direction
          in: query
          schema: { type: string, enum: [in, out] }
      responses:
        '200':
          description: Result.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /events/attendance/delete:
    get:
      operationId: deleteAttendance
      tags: [Attendance]
      summary: Delete attendance
      parameters:
        - name: person_id
          in: query
          schema: { type: string }
        - name: instance_id
          in: query
          schema: { type: string }
      responses:
        '200':
          description: Result.
  /events/attendance/list:
    get:
      operationId: listAttendance
      tags: [Attendance]
      summary: List attendance for an event
      parameters:
        - name: instance_id
          in: query
          required: true
          schema: { type: string }
        - name: details
          in: query
          schema: { type: boolean }
        - name: type
          in: query
          schema: { type: string, enum: [person, anonymous] }
      responses:
        '200':
          description: A list of attendance records.
  /events/attendance/eligible:
    get:
      operationId: listEligible
      tags: [Attendance]
      summary: List people eligible to check in
      parameters:
        - name: instance_id
          in: query
          required: true
          schema: { type: string }
      responses:
        '200':
          description: A list of eligible people.
  /giving/list:
    get:
      operationId: listContributions
      tags: [Giving]
      summary: List contributions
      parameters:
        - name: start
          in: query
          schema: { type: string }
        - name: end
          in: query
          schema: { type: string }
        - name: person_id
          in: query
          schema: { type: string }
        - name: fund_ids
          in: query
          schema: { type: string }
        - name: amount_min
          in: query
          schema: { type: string }
        - name: amount_max
          in: query
          schema: { type: string }
      responses:
        '200':
          description: A list of contributions.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /giving/add:
    get:
      operationId: addContribution
      tags: [Giving]
      summary: Add a contribution
      parameters:
        - name: date
          in: query
          schema: { type: string }
        - name: name
          in: query
          schema: { type: string }
        - name: person_id
          in: query
          schema: { type: string }
        - name: amount
          in: query
          schema: { type: string }
        - name: method
          in: query
          schema: { type: string }
        - name: funds_json
          in: query
          schema: { type: string }
          description: JSON-encoded array splitting the gift across funds.
        - name: payment_id
          in: query
          schema: { type: string }
      responses:
        '200':
          description: The created contribution.
  /giving/edit:
    get:
      operationId: editContribution
      tags: [Giving]
      summary: Edit a contribution
      parameters:
        - name: payment_id
          in: query
          required: true
          schema: { type: string }
        - name: amount
          in: query
          schema: { type: string }
        - name: funds_json
          in: query
          schema: { type: string }
      responses:
        '200':
          description: The updated contribution.
  /giving/delete:
    get:
      operationId: deleteContribution
      tags: [Giving]
      summary: Delete a contribution
      parameters:
        - name: payment_id
          in: query
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Result.
  /funds/list:
    get:
      operationId: listFunds
      tags: [Funds]
      summary: List funds
      parameters:
        - name: include_totals
          in: query
          schema: { type: integer, enum: [0, 1] }
      responses:
        '200':
          description: A list of funds.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /pledges/list_campaigns:
    get:
      operationId: listCampaigns
      tags: [Pledges]
      summary: List pledge campaigns
      responses:
        '200':
          description: A list of pledge campaigns.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /pledges/list_pledges:
    get:
      operationId: listPledges
      tags: [Pledges]
      summary: List pledges in a campaign
      parameters:
        - name: campaign_id
          in: query
          required: true
          schema: { type: string }
      responses:
        '200':
          description: A list of pledges.
  /forms/list_forms:
    get:
      operationId: listForms
      tags: [Forms]
      summary: List forms
      parameters:
        - name: is_archived
          in: query
          schema: { type: integer, enum: [0, 1] }
      responses:
        '200':
          description: A list of forms.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /forms/list_form_fields:
    get:
      operationId: listFormFields
      tags: [Forms]
      summary: List a form's fields
      parameters:
        - name: form_id
          in: query
          required: true
          schema: { type: string }
      responses:
        '200':
          description: A list of form fields.
  /forms/list_form_entries:
    get:
      operationId: listFormEntries
      tags: [Forms]
      summary: List form entries
      parameters:
        - name: form_id
          in: query
          required: true
          schema: { type: string }
        - name: details
          in: query
          schema: { type: integer, enum: [0, 1] }
      responses:
        '200':
          description: A list of form entries.
  /forms/remove_form_entry:
    get:
      operationId: removeFormEntry
      tags: [Forms]
      summary: Remove a form entry
      parameters:
        - name: entry_id
          in: query
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Result.
  /volunteers/list:
    get:
      operationId: listVolunteers
      tags: [Volunteers]
      summary: List volunteers for an event
      parameters:
        - name: instance_id
          in: query
          required: true
          schema: { type: string }
      responses:
        '200':
          description: A list of volunteers.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /volunteers/add:
    get:
      operationId: addVolunteer
      tags: [Volunteers]
      summary: Add a volunteer to an event
      parameters:
        - name: instance_id
          in: query
          schema: { type: string }
        - name: person_id
          in: query
          schema: { type: string }
      responses:
        '200':
          description: Result.
  /volunteers/remove:
    get:
      operationId: removeVolunteer
      tags: [Volunteers]
      summary: Remove a volunteer from an event
      parameters:
        - name: instance_id
          in: query
          schema: { type: string }
        - name: person_id
          in: query
          schema: { type: string }
      responses:
        '200':
          description: Result.
  /volunteers/update:
    get:
      operationId: updateVolunteer
      tags: [Volunteers]
      summary: Update a volunteer's roles
      parameters:
        - name: instance_id
          in: query
          schema: { type: string }
        - name: person_id
          in: query
          schema: { type: string }
        - name: role_ids_json
          in: query
          schema: { type: string }
      responses:
        '200':
          description: Result.
  /volunteers/list_roles:
    get:
      operationId: listVolunteerRoles
      tags: [Volunteers]
      summary: List volunteer roles
      parameters:
        - name: instance_id
          in: query
          schema: { type: string }
        - name: show_quantity
          in: query
          schema: { type: integer, enum: [0, 1] }
      responses:
        '200':
          description: A list of volunteer roles.
  /volunteers/add_role:
    get:
      operationId: addVolunteerRole
      tags: [Volunteers]
      summary: Add a volunteer role
      parameters:
        - name: instance_id
          in: query
          schema: { type: string }
        - name: name
          in: query
          schema: { type: string }
        - name: quantity
          in: query
          schema: { type: integer }
      responses:
        '200':
          description: The created role.
  /volunteers/remove_role:
    get:
      operationId: removeVolunteerRole
      tags: [Volunteers]
      summary: Remove a volunteer role
      parameters:
        - name: instance_id
          in: query
          schema: { type: string }
        - name: role_id
          in: query
          schema: { type: string }
      responses:
        '200':
          description: Result.
  /account/summary:
    get:
      operationId: accountSummary
      tags: [Account]
      summary: Retrieve account summary
      responses:
        '200':
          description: Account summary information.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /account/list_log:
    get:
      operationId: listAccountLog
      tags: [Account]
      summary: List account activity log
      parameters:
        - name: action
          in: query
          schema: { type: string }
        - name: start
          in: query
          schema: { type: string }
        - name: end
          in: query
          schema: { type: string }
        - name: user_id
          in: query
          schema: { type: string }
        - name: details
          in: query
          schema: { type: integer, enum: [0, 1] }
        - name: limit
          in: query
          schema: { type: integer }
      responses:
        '200':
          description: A list of account log entries.
components:
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Api-Key
      description: >-
        Account API key sent in the Api-Key header. The Account Owner generates
        it under Manage Account > API Key in the Breeze web app.
  responses:
    Unauthorized:
      description: Missing or invalid Api-Key header.