Classy API Release Updates

Here are the latest updates to the Classy API. Feel free to reach out with any questions at api@classy.org.

For more information on the API and these release updates, visit the Classy API documentation.

Q2 2017 (Through July 31, 2017)

  • What's fixed:

    1) Fixed bug where UpdateTransaction would throw a 500 when a refund didn't have a refund_transaction_id

  • What's fixed:

    1) Fixed timezones in registration order confirmation emails

    2) Fixed the total_gross_amount, donation_gross_amount, and donation_net_amount on Pre Internationalization transactions that have been modified after its release.

  • What's fixed:

    1) Fixed issue where filtering a collection of transactions on the campaign_id attribute could produce a 500 error.

    2) Fixed issue where net donation amount for some fee-on-top transactions was incorrectly calculated.

  • What's fixed:

    1) Donation receipts now formatted properly.

    2) Fixed issue where logo_url would sometimes not be populated for fundraising team responses.

    3) Bug that could cause fundraising goals for fundraising pages to be zeroed-out.

    4) Bug that caused fundraising pages for Canadian orgs (CAD) to display in USD.

    5) Fixed bug that could show net donation for transactions with value of gross donation (ignoring fees).

    6) Fixed bug that could incorrectly show fees as zero.

    7) Fixed issue where Campaign overviews were missing metrics.

    8) Fixed issue where attendee records were missing unique identifiers.

    9) Fixed bug where friendly URLs (domain slugs) were not shown as available when its fundraising entity had been deleted/deactivated..

  • What's fixed:

    1) Fixed bug where some fundraising page goals could incorrectly get zeroed out.

    2) Fixed bug where some recurring donation plan metadata attributes could not be set.

  • What's new:

    1) Fixed issue where donation amount for transactions (not gross amount) was incorrectly flagged as 0.00 in some circumstances.

    2) Fixed issue incorrectly treating fundraising goals as USD for organizations whose currency is CAD.

  • What's new:

    1) Can now fetch all domain slugs for an organization.

    2) Added missing documentation for recurring donation plan history endpoints.

  • What's fixed:

    1) Fixed FRS Registration w/ Fundraising bug where fundraising credit was mis-assigned for extra donation.

    2) Fixed bug where some attendee records did not receive an attendee_id value. Back-filled existing records.

    3) Fixed issue where submitting array or object JSON where a scalar type was expected could produce an HTTP 500 error.

    4) Fixed bug where some transactions could not be updated because of broken member associations.

  • Bug Fix:

    1) Fixed error where invalid timezone identifiers would sometimes produce 500 errors.

    2) Fixed error where max_per_transaction value on ticket types was not being properly respected.

    3) Fixed error where sometimes attempting to filter on an "ended_at" field could produce a 500 error.

  • Enhancement:

    1) Updated campaign domain slugs endpoint to support fetching all domain slugs for any fundraising entity (team, page) that lives underneath that campaign. (GET /campaigns/1234/domain-slugs?scope=recursive)

    2) Add ability to fetch member thumbnail images in all places where member can be fetched as a "with" association:

    • Activity feeds, feed items, stories, updates and comments
    • Transactions
    • Credential sets
    • Fundraising teams and pages

  • Deprecation:

    1) Removed min_per_transaction value on ticket types. This rule is not enforced and the parameter will be ignored.

  • General Note:

    'Recurring_donation_plan_id' now has a value of 'none', not '0', for one-time donations. Using the value 'null' will take both 'none' and '0' into account for any filters.

  • Bug Fix:

    1) Fixed issue where team lead may be incorrectly set for registrations created using FRS RWF (Registration with Fundraising) cart.

    2) Fixed issue where custom questions whose answers have quotations marks (") could be unanswerable.

  • Enhancement:

    1) Exposed 'return_url' attribute of a campaign, used for redirecting receipt pages after checkout.

  • Bug Fix:

    1) Fixed mismatch between campaign and its fundraising page end dates - fundraising pages were sending back error when attempting to save/edit via API.

Q1 2017 (Through April 30, 2017)

  • Bug Fix:

    1) For FRS RWF transactions using Classy Pay, now correctly recording both Classy Pay as payment method and underlying payment processor as payment gateway.

    2) For FRS RWF, now correctly applying registrant/attendee name to attendee records instead of purchaser.

    3) For FRS transactions, now correctly recording designation information.

    4) For Classy Pay transactions, now properly making call to Donate Double.

    5) More bug fixes to correctly handle dates in ISO8601 (and fail more gracefully for invalid dates and times).

  • Bug Fix:

    1) Fixed several bugs related to specifying dates and times in unexpected formats.

    2) RWF Beta: Fixed issue where a team designation could not be removed from cart during checkout.

    3) RWF Beta: Fundraising pages created from checkout did not always have correct default goal set.

  • Enhancement:

    1) Can now DELETE answer for custom question to nullify previous answer.

    2) RWF Beta: Ticket_pass_on_fees is now updatable for campaign settings.

  • Hotfix:

    1) '?with=supporter' parameter previously returned null values for all supporters.

  • Hotfix:

    1) Canceling offline donations previously threw validation errors.

  • This release aims at fixing slowness that provoked some SSO malfunctioning on March 15th ~ 09:00PST. It should not have any impact on the product.

  • For API users: app token generation is now cached for a limited amount of time. This means that the /oauth2/auth endpoint may return a previously generated app access token if a client app requests another new one within a short period of time.

  • Bug Fix:

    1) Return a proper 400 validation error when supplying invalid date/time formats in filters, instead of 500.

    2) Fixed issue preventing ClassyPay-only clients from publishing campaigns through API.

  • Enhancement:

    1) Expose "external_url" attribute of campaigns to allow for setting a blanket redirect from classy.org campaign page to another URL.

    2) Expose ACH-related fields for transactions. In advance of ClassyPay support.


    We recently cleaned up what we let in as valid datetimes to our API. This may affect live code on your app.

    1) Our API NO LONGER accepts accept the dot notation (2017-01-24T14:45:23.0000000Z is no longer valid).

    2) We now REQUIRE an offset to be applied to your datetime (2017-01-24T14:45:23 is no longer valid).

    3) Positive offsets require URL encoding (2017-01-24T14:45:23+02:00 is no longer valid).

    Correct format: 2017-01-24T14:45:23%2B02:00 (+2 offset), 2017-01-24T14:45:23-02:00 (-2 offset), 2017-01-24T14:45:23-00:00 (UTC)

  • Bug Fix:

    1) Fixed issue where the creation of a fundraising page was not creating the appropriate supporter record for the org.

    2) Make GET /registrations/#/answers endpoint available to public API users.

    3) Fixed issue in validation preventing deletion of some feed items.

    4) Fixed issue where creating feed items for fundraising pages could throw exceptions.

    5) Fixed issue where in recurring donor's report ClassyPay transactions appear to be Classy PayPal.

    6) Fixed issue where ClassyPay donations could be matched twice with Donate Double.

    7) Fixed issue where recurring donation plans created in ClassyApp, but transacting now via API were created with incorrect associations.

    8) Ensure that the 'location' attribute of a custom question is valid for the campaign type it is created for.

  • Enhancement:

    1) Add "member" and "transaction" as fetchable "with" associations on registration collection endpoints.

    2) Update campaign credential sets endpoints to correctly reflect product admin levels. Disallow ability to create campaign-level admins for only reporting or activity wall access.

    3) Expose payment card type in transaction endpoints.

    4) Added POST /regsitrations/#/answers.

    5) Add additional aggregate information to fundraising page/team overview endpoints.

    6) Add shares count to Post model, and ability to increment counts.

    7) Expose fundraising team cover photo through API.

  • Bug Fix:

    1) Prevent future duplicated campaigns from having emails with duplicated blocks and attachments

  • Enhancement:

    1) Expose ticket ID on custom questions endpoints.

    2) Expose quantity_sold and quantity_reserved on ticket-type endpoints.

  • Bug Fix:

    1) Prevent deadlock when attempting to save optional questions for donation page location.

    2) Allow ticket types to use null for quantity_available, to indicate unlimited availability.

    3) Fixed issue where multiple-choice type custom questions could not be answered if choice values contained commas.

    4) Supporters now correctly returned from GET /fundraising-pages endpoints when using with=supporter option

    5) Fixed bug where fetching transactions could generate an HTTP 500 error.

  • Enhancement:

    1) Improved campaign duplication endpoint, allows selection of related entities including FAQs, ecards, custom questions, etc. to be duplicated.

    2) First release of server-side shopping cart, allowing tickets to be reserved during checkout process. FRS only--no public API yet.

    3) Expose product_id on ticket-type endpoints to allow setting registration custom questions per ticket-type.

    4) Can now set host fees as either a percentage or flat amount of ticket-type price. This applies to FRS campaigns only.

    5) When a non-domain-masked organization adds domain masking, vanity URLs are automatically converted to apply to the new domain context.

    6) Clients with Mailchimp integration enabled can now export a supporters report at the organization level.

  • Bug Fix:

    1) Improve handling of team auto-allocation when team carries negative balance and new transaction exceeding that negative balance comes in. Auto-splits the balance above the negative.

    2) When fetching fundraising page collections, the "supporter" with association was not returning supporters.

  • Documentation:

    1) Updated documentation to reflect additional resources fetchable with transactions using "with" associations.

    • fundraising_team
    • fundraising_page
    • organization
    • receipt_serial
    • recurring_donation_plan
    • supporter

Q4 2016/17 (through jan. 31 2017)

  • Enhancement:

    1) Expose `app_id` and `status` on charity payment providers endpoint.

    2) Expose `is_started_at_hidden` property on campaigns.

    3) Record and persist the "from" creditable entity on a hard credit transfer.

    4) Separated model and endpoints for Story and Updates (formerly Posts)

    5) Change default value for FRS campaigns' `disable_fundraising` to false.

    6) Make comments (for Story/Update) soft-deletable.

    7) Get number of views on a Story/Update.

    8) Organization-level exporting on Mailchimp

    9) Single supporter exporting on Mailchimp

  • Bug Fix:

    1) Fixed issue with exposing fundraising page and team logo images.

    2) Some recurring donations (after initial) through Classy Pay were not being correctly credited to a fundraising page or fundraising team.

    3) FRS campaign duplication incorrectly cloned theme blocks into new campaign, preventing saving of new campaign.

    4) Could not update the "purchased_at" property of offline transactions.

    5) Back-filled missing supporters that should have been created on creation of fundraising page.

    6) Back-filled site activity that was missing from hard credit transfer operations.

    7) Anonymizing a transaction was deleting the comments on its corresponding feed items.

    8) Opt-in selection from checkout was not being correctly persisted on to all supporters.

    9) Fix docs that did not show all available with associations for transactions.

    10) Campaign-level subscribing was not always working on Mailchimp.

  • Security:

    1) Implemented SPAM prevention policies and updates to prevent spammers from utilizing email features in fundraising pages.

  • Enhancement:

    1) Segment added to supported analytics services.

  • Bug Fix:

    1) Allow creation of teams by admins even when "allow team fundraising" flag is set to false.

    2) Activity feeds now show updates when a fundraiser joins team (FRS).

    3) Exposed updated_at field for transactions in API.

  • Security:

    1) Implemented SPAM prevention policies and updates to prevent spammers from utilizing email features in fundraising pages.

  • Enhancement:

    1) Allow campaigns to enable/disable multiple fundraising pages for the same user.

  • Bug Fix:

    1) Fixed issue that caused new member and supporter records to be incorrectly assigned a country value of 'US'

    2) Fixed issue where a supporter record was occassionally not created when a new fundraising page is created for a campaign.

    3) Fixed several bugs with MailChimp integration API endpoints.

    4) Activity feed records fixed when moving a transaction (hard credit transfer) or joining a fundraising team.

  • Bug Fix:

    1) Fixed issue that caused incoming transactions to show up in activity feeds as anonymous.

    2) Added defensive check to agent association in TransactionUpdatedListener which was failing with a php fatal error.

    3) Fixed Fee on Top so that only Classy PayPal and WePay use all fees in the calculation. Every other payment processor is calculated with only Classy fees.

  • Enhancement:

    1) Offline donations can now be created on behalf of companies and organizations by providing a business name and no first/last names.

  • 2) When a fundraising page is deleted, historical feed items for it are removed as well.

    3) Make supporter opt_in attribute updatable.

    4) Make transaction items attribute updatable for offline transactions.

  • Bug Fix:

    1) "In honor of" information now available for feed items, where relevant.

    2) Fixed bug where fee estimation double-counted credit card fee percent in some cases.

    3) Removed errant record in APIv1 => APIv2 migration guide for ticket types.

    4) Prevent publishing of a campaign if organization does not have an active payment provider configuration.

Q3 2016

  • Enhancement:

    1) Allow members to delete their own comments from activity feeds.

    2) New attribute to set policy for allowing/disallowing fundraising page creation on campaigns.

  • Bug Fix:

    Fixed bug where some campaigns could not be successfully saved.

  • Enhancement:

    1) Short URL's are now set at the organization level, instead of platform wide.

    2) Expanded Google analytics endpoint.

  • Bug Fix:

    Fixed compatibility issues with Activity Feeds.

  • Bug Fix:

    Allow organization security settings to be set throught the API's. Specifically, this is the setting to allow/disallow fundraisers to send customized emails through their fundraising pages.

  • Enhancement:

    Added "created_at" attribute to responses for fundraising page resources.

  • Bug Fix:

    1) Fixed bug where international addresses would fail validation incorrectly on transactions.

    2) Relaxed validation of entities that have a state/province attribute that was previously too strict.

  • Deprecated:

  • "started_at" attribute of fundraising pages has been removed.

  • Enhancement:

    Overview endpoints (fundraising team, campaign) will break out amount raised by registrations/tickets vs donations.

  • Bug Fix:

    1) Fixed issue where some authorized members could not delete feed items that they should be able to.

  • 2) Generated transactions from Credit Adjustments are now properly dissociated from any member.

    3) Fixed issue causing some newly-created fundraising pages to associate to the incorrect member

  • Activity feed item will be hidden when transaction is voided, refunded, or chargebacked.

  • 403 Error messages have been updated to provide more information to the user

  • Bug Fix: Filtering on multiple attributes and nested elements no longer fail

  • Bug Fix: Creating a team without a team lead no longer associates team with virtual admin user

  • Bug Fix: Fixed issue where some offline transactions were syncing to Salesforce when "do not sync" was selected.

  • Bug Fix: Images no longer losing transparency when cropped in the designer tool.

  • Bug Fix: DonateDouble transaction matches are no longer repeating on the activity feed.

  • Bug Fix: DonateDouble matches no longer creating $0 transactions on the activity feed after match limit has been met.

  • For Crowdfunding and new Peer-to-Peer, activity feed will update when underlying data is changed. Example: when donor name is edited or when a transaction is moved from one fundraising entity to another (aka hard credit transfer)

  • GET /campaigns/ID/registrations added to documentation

  • Bug Fix: Can now update thank_you_text attribute on POST/PUT /fundraising-teams endpoints.

  • Bug Fix: Using filters on GET /campaigns/ID/questions endpoints no longer generates 500 errors.

  • Bug Fix: Campaign admins are no longer accounted in total number of global admins

  • Bug Fix: Error messages were updated to provide more useful error messages specific to the workflow

  • POST /organizations/#/supporters allows organizations to create new supporters directly through the API.

  • POST /organizations/#/security-settings
    GET /organizations/#/security-settings
    Organization attribute allow_custom_email_content now surfaced and updatable through API. If set to FALSE, a fundraiser can only send "canned" emails from their fundraising page to potential donors/supporters.

  • Created offline transactions can now suppress synching to third party services (e.g. Salesforce) by providing the parameter "sync_third_party" with the value FALSE.

  • Bug Fix: Updated validations and responses for Dedications

  • Bug Fix: Overview endpoints now correctly account for soft credits.

  • Fixed bug that caused some incomplete transactions to create activity feed entries.

  • New Fields for Default Appeal Email Text on Campaign Resources

    • default_team_thank_you_email

    • default_team_appeal_email

    • default_page_thank_you_email

    • default_page_appeal_email

  • Fixed bug so that all offline transactions automatically default to "success" status.

  • Overhead/Host fees now appear in transaction resource requests

  • Missing address fields on PDF receipts added back into donation receipts

  • Bug Fix: Fundraising team results no longer omitting teams with some inactive statuses

  • GET /organizations/{org_id}/supporters?filter=member_d%3D{member_id} fetches supporter information with member ID

  • Fixed bug that prevented certain fundraising pages from joining teams

  • Fixed bug that prevented some suppression of activity feed items to be ignored

    New Endpoints for Aggregate Data

    1. GET /fundraising-teams/#/overview

    2. GET /fundraising-pages/#/overview

    New Endpoints for Fetching the Pages and Teams a Member is Associated With

    1. GET /members/#/fundraising-pages

    2. GET /members/#/fundraising-teams

    • Fix released to prevent error when fetching transactions with answers for some custom questions

    • Users can fetch supporter information when fetching a fundraising page or transaction (using with=supporter)

    • Users can post comments in response to feedItems on a fundraising entity's feed

    • Team member count added to fundraising team responses

    • Team captain can set default acknowledgement text

    • Count of acknowledgements added to transaction responses

    • Organization administrators can reorganize team hierarchies

    • Statistics added to /campaigns/#/overview endpoint: total number of donors and fundraisers, as well as total number of fundraisers joined over time

    • Fundraising page endpoints support joining/leaving/changing teams

    • New endpoint added for thank you/acknowledgement of transactions

    Q2 2016

    • Fundraising team endpoints can store/fetch a logo and cover photo to be displayed on leaderboards

    • with=supporters returns contact/supporter information for transaction and fundraising page endpoints

    • PUT fundraising pages endpoint can change status of fundraising page

    • Endpoint added to find member record by email address

    • New endpoint added to create, update, and delete comments on activity feeds and activity

    Q1 2016

    This marks the public launch of the new Classy API (v2). Built with RESTful methodologies, we think you will love its power and flexibility.

    We will regularly add new functionalities and endpoints to the API based on your feedback and the latest features of the Classy platform. Use this page to keep up with new functionalities and get a heads up on what to expect in the documentation.

    For a behind-the-scenes look at what went into creating the new API and what where we hope you take it in the future, read this interview with lead API engineer, Chris Beck.



    Email us at api@classy.org