Breeze People API

List, retrieve, add, update, and delete people (members and contacts), read and write custom profile fields, and manage families. Supports paging, detailed field expansion, and filtering via filter_json.

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.