openapi: 3.1.0 info: title: Givebutter Contact Activities API version: 1.0.0 description: The Contact Activities surface of the Givebutter Public API — 5 operation(s). Split by tag from Givebutter's own published OpenAPI at https://givebutter.com/docs/api.json (harvested 2026-09-12). Operations, schemas and responses are verbatim from the provider's spec. contact: name: Givebutter API Documentation url: https://docs.givebutter.com/api-reference/authentication servers: - url: https://api.givebutter.com/ security: - http: [] tags: - name: Contact Activities paths: /v1/contacts/{contact}/activities: get: operationId: contacts.activities.index summary: List all contact activities tags: - Contact Activities parameters: - name: contact in: path required: true description: The contact ID schema: type: integer - name: type in: query schema: $ref: '#/components/schemas/ContactActivityTypeEnum' responses: '200': description: Paginated set of `ContactActivityResource` content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/ContactActivityResource' links: type: object properties: first: type: - string - 'null' last: type: - string - 'null' prev: type: - string - 'null' next: type: - string - 'null' required: - first - last - prev - next meta: type: object properties: current_page: type: integer minimum: 1 from: type: - integer - 'null' minimum: 1 last_page: type: integer minimum: 1 links: type: array description: Generated paginator links. items: type: object properties: url: type: - string - 'null' label: type: string active: type: boolean required: - url - label - active path: type: - string - 'null' description: Base path for paginator generated URLs. per_page: type: integer description: Number of items shown per page. minimum: 0 to: type: - integer - 'null' description: Number of the last item in the slice. minimum: 1 total: type: integer description: Total number of items being paginated. minimum: 0 required: - current_page - from - last_page - links - path - per_page - to - total required: - data - links - meta '422': $ref: '#/components/responses/ValidationException' '403': $ref: '#/components/responses/AuthorizationException' '404': $ref: '#/components/responses/ModelNotFoundException' post: operationId: contacts.activities.store summary: Create a contact activity tags: - Contact Activities parameters: - name: contact in: path required: true description: The contact ID schema: type: integer requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/StoreContactActivityRequest' responses: '200': description: '`ContactActivityResource`' content: application/json: schema: $ref: '#/components/schemas/ContactActivityResource' '403': $ref: '#/components/responses/AuthorizationException' '422': $ref: '#/components/responses/ValidationException' '404': $ref: '#/components/responses/ModelNotFoundException' /v1/contacts/{contact}/activities/{activity}: get: operationId: contacts.activities.show summary: Get a contact activity tags: - Contact Activities parameters: - name: contact in: path required: true description: The contact ID schema: type: integer - name: activity in: path required: true description: The activity ID schema: type: integer responses: '200': description: '`ContactActivityResource`' content: application/json: schema: $ref: '#/components/schemas/ContactActivityResource' '403': $ref: '#/components/responses/AuthorizationException' '404': $ref: '#/components/responses/ModelNotFoundException' put: operationId: contacts.activities.update summary: Update a contact activity tags: - Contact Activities parameters: - name: contact in: path required: true description: The contact ID schema: type: integer - name: activity in: path required: true description: The activity ID schema: type: integer responses: '200': description: '`ContactActivityResource`' content: application/json: schema: $ref: '#/components/schemas/ContactActivityResource' '403': $ref: '#/components/responses/AuthorizationException' '422': $ref: '#/components/responses/ValidationException' '404': $ref: '#/components/responses/ModelNotFoundException' delete: operationId: contacts.activities.destroy summary: Delete a contact activity tags: - Contact Activities parameters: - name: contact in: path required: true description: The contact ID schema: type: integer - name: activity in: path required: true description: The activity ID schema: type: integer responses: '204': description: No content '403': $ref: '#/components/responses/AuthorizationException' '422': $ref: '#/components/responses/ValidationException' '404': $ref: '#/components/responses/ModelNotFoundException' components: schemas: PublicUserResource: type: object properties: id: type: string first_name: type: string last_name: type: string email: type: string required: - id - first_name - last_name - email title: PublicUserResource GivingSpaceResource: type: object properties: id: type: string name: type: string amount: type: number message: type: string created_at: type: string updated_at: type: string required: - id - name - amount - message - created_at - updated_at title: GivingSpaceResource TicketResource: type: object properties: id: type: string id_suffix: type: string transaction_id: type: string name: type: string first_name: type: string last_name: type: string email: type: string phone: type: string title: type: string description: type: string price: type: number pdf: type: string checked_in_at: type: string custom_fields: type: array items: $ref: '#/components/schemas/CustomFieldResponseResource' created_at: type: string updated_at: type: string retail_price: type: - string - 'null' required: - id - id_suffix - transaction_id - name - first_name - last_name - email - phone - title - description - price - pdf - checked_in_at - custom_fields - created_at - updated_at - retail_price title: TicketResource RecurringPlanResource: type: object properties: id: type: string contact_id: type: string first_name: type: string last_name: type: string email: type: string phone: type: string frequency: type: string status: type: string method: type: string amount: type: string fee_covered: type: string created_at: type: string updated_at: type: string start_at: type: string canceled_at: type: string next_bill_date: type: string required: - id - contact_id - first_name - last_name - email - phone - frequency - status - method - amount - fee_covered - created_at - updated_at - start_at - canceled_at - next_bill_date title: RecurringPlanResource ExternalIdResource: type: object properties: id: type: integer label: type: string external_id: type: string created_at: type: string updated_at: type: string required: - id - label - external_id - created_at - updated_at title: ExternalIdResource StoreContactActivityRequest: type: object properties: type: type: string enum: - email - meeting - note - phone_call - sms - completed_task - volunteer_activity note: type: - string - 'null' subject: type: - string - 'null' maxLength: 255 occurred_at: type: - string - 'null' format: date-time timezone: type: - string - 'null' maxLength: 255 required: - type title: StoreContactActivityRequest MessageResource: type: object properties: id: type: string status: type: string channel: type: string internal_name: type: string subject: type: string preheader: type: string body: type: string recipient_filters: type: string recipient_count: type: string sent_at: type: string sending_at: type: string created_at: type: string updated_at: type: string required: - id - status - channel - internal_name - body - recipient_filters - recipient_count - sent_at - sending_at - created_at - updated_at title: MessageResource TransactionResource: anyOf: - type: object properties: id: type: string plan_id: type: string pledge_id: type: string amount: type: number fee: type: number fee_covered: type: number donated: type: number payout: type: number captured: type: string captured_at: type: string timezone: type: string refunded: type: string refunded_at: type: string line_items: type: array items: $ref: '#/components/schemas/TransactionLineItemResource' fair_market_value_amount: type: - string - 'null' tax_deductible_amount: type: - string - 'null' is_recurring: type: string required: - id - plan_id - pledge_id - amount - fee - fee_covered - donated - payout - captured - captured_at - timezone - refunded - refunded_at - line_items - fair_market_value_amount - tax_deductible_amount - is_recurring - type: object properties: id: type: string number: type: string campaign_id: type: string campaign_code: type: string campaign_title: type: string plan_id: type: string pledge_id: type: string team_id: type: string team_name: type: string member_id: type: string member_name: type: string fund_id: type: string fund_code: type: string contact_id: type: string first_name: type: string last_name: type: string company_name: type: string company: type: string email: type: string phone: type: string address: type: string status: type: string payment_method: type: string method: type: string is_offline: type: string check_number: anyOf: - type: string - type: object check_deposited_at: anyOf: - type: string - type: object internal_note: type: string amount: type: number fee: type: number fee_covered: type: number donated: type: number payout: type: number currency: type: string transacted_at: type: string created_at: type: string updated_at: type: string timezone: type: string giving_space: anyOf: - $ref: '#/components/schemas/GivingSpaceResource' - type: 'null' dedication: anyOf: - $ref: '#/components/schemas/DedicationResource' - type: 'null' transactions: type: array prefixItems: - $ref: '#/components/schemas/TransactionResource' minItems: 1 maxItems: 1 additionalItems: false custom_fields: type: array items: $ref: '#/components/schemas/CustomFieldResponseResource' utm_parameters: type: string external_id: anyOf: - $ref: '#/components/schemas/ExternalIdResource' - type: 'null' communication_opt_in: type: string session_id: type: string attribution_data: type: string fair_market_value_amount: type: - string - 'null' tax_deductible_amount: type: - string - 'null' is_recurring: type: string payout_id: anyOf: - type: string - type: object required: - id - number - campaign_id - campaign_code - campaign_title - plan_id - pledge_id - team_id - team_name - member_id - member_name - fund_id - fund_code - contact_id - first_name - last_name - company_name - company - email - phone - address - status - payment_method - method - is_offline - check_number - check_deposited_at - internal_note - amount - fee - fee_covered - donated - payout - currency - transacted_at - created_at - updated_at - timezone - giving_space - dedication - transactions - custom_fields - utm_parameters - external_id - communication_opt_in - session_id - attribution_data - fair_market_value_amount - tax_deductible_amount - is_recurring - payout_id title: TransactionResource CustomFieldResponseResource: type: object properties: id: type: integer field_id: type: integer title: type: string description: type: - string - 'null' type: type: string value: type: string created_at: type: string updated_at: type: string required: - id - field_id - title - description - type - value - created_at - updated_at title: CustomFieldResponseResource ContactActivityTypeEnum: type: string enum: - archived - campaign.joined - email - email.subscribed - email.unsubscribed - letter - meeting - note - phone_call - recurring_plan.canceled - recurring_plan.created - recurring_plan.activated - signup_form.submitted - sms - sms.subscribed - sms.unsubscribed - subscription_form.submitted - completed_task - created_task - ticket.issued - transaction.recieved - transaction.succeeded - transaction.acknowledged - transaction.unacknowledged - unarchived - volunteer_activity - soft_credited - tagged - untagged - custom_field.updated - video_message.sent - video_message.deleted title: ContactActivityTypeEnum DedicationResource: type: object properties: type: type: string name: type: string recipient: type: object properties: name: type: - string - 'null' email: type: - string - 'null' required: - name - email created_at: type: string updated_at: type: string required: - type - name - recipient - created_at - updated_at title: DedicationResource TransactionLineItemResource: type: object properties: type: type: string subtype: type: string description: type: string quantity: type: integer price: type: number discount: type: number total: type: number created_at: type: string updated_at: type: string required: - type - subtype - description - quantity - price - discount - total - created_at - updated_at title: TransactionLineItemResource ContactActivityResource: type: object properties: id: type: string type: type: string source: type: string data: type: string resource: anyOf: - $ref: '#/components/schemas/TransactionResource' - type: object properties: id: type: string required: - id - type: 'null' - $ref: '#/components/schemas/RecurringPlanResource' - $ref: '#/components/schemas/TicketResource' - $ref: '#/components/schemas/MessageResource' resource_type: type: - string - 'null' enum: - transaction - plan - ticket - message - mail_piece - soft_credit - subscription_log - null created_by: $ref: '#/components/schemas/PublicUserResource' occurred_at: type: string created_at: type: string updated_at: type: string required: - id - type - source - data - resource - resource_type - occurred_at - created_at - updated_at title: ContactActivityResource responses: AuthorizationException: description: Authorization error content: application/json: schema: type: object properties: message: type: string description: Error overview. required: - message ValidationException: description: Validation error content: application/json: schema: type: object properties: message: type: string description: Errors overview. errors: type: object description: A detailed description of each field that failed validation. additionalProperties: type: array items: type: string required: - message - errors ModelNotFoundException: description: Not found content: application/json: schema: type: object properties: message: type: string description: Error overview. required: - message securitySchemes: http: type: http scheme: bearer x-source: https://givebutter.com/docs/api.json x-harvested: '2026-09-12'