Bloomerang Interactions API

Logged touches between the organization and a constituent.

OpenAPI Specification

bloomerang-interactions-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Bloomerang REST API v2 Constituents Interactions API
  description: The Bloomerang REST API v2 is a private-key, server-to-server API for reading and writing data in a Bloomerang donor management CRM account - constituents, transactions (donations, pledges, recurring donations), interactions, notes, relationships, and webhook subscriptions. Requests are authenticated with either a private API key sent in the X-Api-Key header (generated by an Administrator user under User Settings) or an OAuth 2.0 access token for third-party applications. Bloomerang does not offer a sandbox environment - all requests operate against production data. Endpoints for Constituents, Transactions, and Interactions are directly confirmed in Bloomerang's public documentation and third-party integration guides; endpoints for Households, Notes, Relationships, Custom Fields, Webhooks, Users, Funds, Campaigns, and Appeals are modeled from Bloomerang's REST API v1 resource parity, community client libraries, and CRM feature documentation, since Bloomerang does not publish a complete, versioned OpenAPI/Swagger document for v2. See review.yml in this repository for the endpointsConfirmed vs endpointsModeled breakdown.
  version: '2.0'
  contact:
    name: Bloomerang
    url: https://bloomerang.com/api/rest-api
servers:
- url: https://api.bloomerang.co/v2
  description: Bloomerang REST API v2 (production - no sandbox is offered)
security:
- apiKeyAuth: []
- oauth2Bearer: []
tags:
- name: Interactions
  description: Logged touches between the organization and a constituent.
paths:
  /interactions:
    get:
      operationId: listInteractions
      tags:
      - Interactions
      summary: List interactions
      description: Lists interactions, paginated with skip/take parameters.
      parameters:
      - $ref: '#/components/parameters/Skip'
      - $ref: '#/components/parameters/Take'
      responses:
        '200':
          description: A page of interactions.
          content:
            application/json:
              schema:
                type: object
                properties:
                  Results:
                    type: array
                    items:
                      $ref: '#/components/schemas/Interaction'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createInteraction
      tags:
      - Interactions
      summary: Create an interaction
      description: Creates an interaction - a logged touch (call, meeting, letter, email) between the organization and a constituent.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InteractionInput'
      responses:
        '200':
          description: The created interaction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Interaction'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/ValidationError'
  /interactions/{id}:
    parameters:
    - name: id
      in: path
      required: true
      description: The ID of the interaction.
      schema:
        type: integer
    get:
      operationId: getInteraction
      tags:
      - Interactions
      summary: Retrieve an interaction
      description: Retrieves an interaction by ID.
      responses:
        '200':
          description: The requested interaction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Interaction'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  parameters:
    Skip:
      name: skip
      in: query
      required: false
      description: Number of records to skip, for pagination.
      schema:
        type: integer
        default: 0
    Take:
      name: take
      in: query
      required: false
      description: Number of records to return, for pagination.
      schema:
        type: integer
        default: 50
  responses:
    Unauthorized:
      description: Missing or invalid API key / access token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ValidationError:
      description: The request payload failed validation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    InteractionInput:
      type: object
      required:
      - AccountId
      - Date
      - Channel
      properties:
        AccountId:
          type: integer
        Date:
          type: string
          format: date
        Channel:
          type: string
          enum:
          - Call
          - Email
          - InPerson
          - Letter
          - Other
        Purpose:
          type: string
        Note:
          type: string
        UserId:
          type: integer
    Error:
      type: object
      properties:
        Message:
          type: string
        Errors:
          type: array
          items:
            type: string
    Interaction:
      allOf:
      - $ref: '#/components/schemas/InteractionInput'
      - type: object
        properties:
          Id:
            type: integer
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-Api-Key
      description: Private API key generated by an Administrator user in Bloomerang under User Settings > Edit My User. Grants full read/write access - keep it secret.
    oauth2Bearer:
      type: oauth2
      description: 'OAuth 2.0 access token for third-party applications, presented as `Authorization: Bearer {access_token}`.'
      flows:
        authorizationCode:
          authorizationUrl: https://crm.bloomerang.co/oauth/authorize
          tokenUrl: https://api.bloomerang.co/v2/oauth/token
          scopes:
            api: Full read/write access to account data.