Classy API

Welcome to the Classy API, a powerful toolset that empowers innovative and creative minds to engineer the world for good. This documentation walks through the API’s latest endpoints. Bookmark this page, as the Classy API team will regularly add new endpoints and functionalities for your organization’s benefit.

Classy APIs are crafted around REST and the REST architectural style to provide developers with a stateless and language­agnostic interface. The Classy API leverages HTTP verbs and response codes, OAuth2 authentication, and resource­oriented URLs.

Currently, the Classy API only supports JSON. All POST/PUT requests required a valid JSON object for the request body.

Errors

The Classy API leverages standard HTTP response status codes for it’s error responses. Error codes are:

Error Code Meaning
400 Bad Request: The request was malformed or provided incorrect/incomplete/conflicting parameters. Check the response for more detailed messaging about why the request was incorrect. Do not repeat request.
401 Unauthorized: The API does not recognize the request as authorized. API access token may be missing or invalid.
403 Forbidden: The API recognizes the authorized API user, but the API user does not have correct permissions to satisfy the request.
404 Not Found: The resource requested does not exist or was not found.
405 Method Not Allowed: Some REST endpoints only accept a subset of valid REST HTTP verbs. This error is sent when an unsupported verb is requested.
500 Error: The request was valid, but something failed on the server. Additional messages may be available.
503 Error: The service is unavailable or the consumer’s rate limit has been exceeded. To examine rate limiting details, check HTTP headers in the response prefixed with “X-RateLimit-”

Requests

Authenticating Requests

Most API requests will need to be signed with an Access Token.

Refer to the Resource Documentation for the specific call you are making to see if an access token is required for your request.

Fetching Resources

Fetching a Single Resource

The following request:

GET /2.0/resource/{id} HTTP/1.1
     Host: api.classy.org

will return something of the following form:

{
    "attribute_name": "attribute_value",
    "...": "..."
}

Using its unique resource ID, most resources can be retrieved with an HTTP GET request to the appropriate endpoint.

Modifying the Request

We are able to modify a request to expand embedded or nested resources. For example, if we are fetching a Campaign resource, we can fetch the associated Organization and Member resources by modifying the query parameters.

Fetch a Campaign resource and expand nested Organization and Member resources:

GET /2.0/campaign/{id}?with=organization,member HTTP/1.1
    Host: api.classy.org
Parameter Type Default Description
with string NULL This allows you to include nested related resource. For example, you could request a campaign along with the organization it belongs to and the designation it was allocated to. In this case, with=organization,designation.

Refer to the sample documentation for the specific call you are making to see which related resource can be fetched.

Note: You may only fetch the entire object when retrieving a single resource. For example, you cannot only fetch the id of a resource using the ?filter=id flag.

Fetching a Collection of Resources

The following type of request will return a Collection of resources. For filtering and pagination options, please read: “Modifying the Request” in the section below…

  • GET /resource - Get a collection of all existing resources.

  • GET /parent_resource/{id}/resource - Get a collection of resources that belong to the parent resource.

A collection object is described as follow:

Attribute Type Description
total integer Total number of resources in the collection.
per_page integer Represents the limit of the number of resources returned by the API in each call.
current_page integer Just the current page number.
last_page integer Number of the last page.
next_page_url url Url of the API call to get the resources of the next page.
previous_page_url url Url of the previous API call to get the resources of the previous page.
from integer No. of the first resource on the current page.
to integer No. of the last resource on the current page.
data array The actual list of resources. Each resource is the JSON object you would get with GET /resource/{id}

Collection request examples:

GET /2.0/resource HTTP/1.1
     Host: api.classy.org

GET /2.0/parent_resource/{id}/resource HTTP/1.1
     Host: api.classy.org

Example Responses:

{
    "total": 3,
    "per_page": 2,
    "current_page": 1,
    "last_page": 2,
    "next_page_url": "https://api.classy.org/2.0/parent_resource/{id}/resource?page=2",
    "prev_page_url": null,
    "from": 1,
    "to": 2,
    "data": [
        {
            "attribute_name": "attribute_value",
            "...": "..."
        },
        {
            "attribute_name": "attribute_value",
            "...": "..."
        },
    ]

Modifying the Request

We can filter a collection based on a set of input parameters. To do so, we can modify the query string using the parameters listed below.

Parameter Type Default Description
page integer 1 No. of pages to display.
per_page integer 20 Set the total number of resources returned per page (Maximum: 100).
sort string Depends on endpoint Order the resources depending upon their attributes. Examples:
- created_at : oldest resource will come first.
- created_at:desc : newest resource will come first.
- last_name:asc,first_name:asc : order resources by last_name in alphabetical order. If same last_name, order by first_name in alphabetical order.
fields string Depends on endpoint List of resources attributes separated with comma. Narrow the list of attributes returned for each resource.
filter string NULL Allow to filter the list of resources returned. Format is: {association}.{attribute1}{operand}{value} where:


- association is the association if this is a nested filter (optional)
- attribute is one of the resource attributes,
- operand is one of the following: <=, >=, <>, !=, =, <, or >. Operand must be url encoded. (Note: if you are filtering on a boolean value, true can be expressed with true or 1. Additionally, false can be expressed with false or 0).
If filtering on an association, ensure you include the nested resource using the ‘with’ parameter. with | string | NULL | This allows you to include a nested related resource. For example, you could request a collection of campaigns along with the organization they belong to and the designation they were allocated to. In this case, with=organization,designation.

Refer to the sample documentation for the specific call you are making to see which related resource can be fetched.

Getting a collection of designations:

  • of organization #34,
  • with their id and name,
  • whose goal is over $1000.
GET /2.0/organizations/34/designations?fields=id,name&filter=goal%3E1000 HTTP/1.1
    Host: api.classy.org

Getting a collection of campaigns with the organization they belong to and the member who created them:

GET /2.0/campaigns?with=organization,member HTTP/1.1
    Host: api.classy.org

Fetching a collection of Fundraising Teams that have a Team Policy that allows subteams:

GET /2.0/campaigns/123/fundraising-teams?with=team_policy&filter=team_policy.allow_subteams%3D1
    Host: api.classy.org

Updating Resources

Editing a campaign name:

PUT /2.0/campaign/{id}
    Host: api.classy.org

    {
        "name": "New name",
    }

Updating existing resources is performed using the HTTP Action PUT. The parameters to be updated must be passed as valid JSON in the payload of the request.

Refer to the Reference section for Endpoint/Resource specific calls and attribute options.

Dates And Times

Unless otherwise noted, all Datetime attributes in API responses will be returned in an ISO8601 compliant format:

2016-01-01T12:00:00+0000

When modifying a Datetime field, you can specify a Datetime with a timezone offset. Since all Datetimes are stored in UTC time, if you specify a timezone offset, the API will apply the offset and the response will be in UTC. For example, “2016-01-01T12:00:00+0800” will be stored and returned as “2016-01-01T04:00:00+0000”.

Activity

Activity

An activity is a record of an interaction with the Classy platform. Activity types include creating a new donation, creating a new fundraising page or team, adding a new team member, and more. Activities are not created directly via the API, but are generated as a side-effect of user interaction with other parts of the Classy system.

Activities are not listed or accessed directly, but are instead referenced through a higher-level resource.

List Organization Activity
GET/organizations/{id}/activity

Retrieves the Activity for the specified Organization.

Permissions

To request this endpoint you will need a valid member access token of a member who is allowed to manage the organization activity feed.

URI Parameters
HideShow
id
number (required) 

The ID of the Organization.

Response Body Parameters
NameTypeDescription
dataarrayAn array of Activities
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "comments": [
        {
          "activity_id": 111,
          "content": "This is a comment",
          "created_at": "2016-01-01T12:00:00+0000",
          "id": 111,
          "member": {
            "created_at": "2016-01-01T12:00:00+0000",
            "email_address": "[email protected]",
            "first_name": "Classy",
            "id": 111,
            "last_name": "Member",
            "profile_image_id": 432,
            "thumbnail_large": "null",
            "thumbnail_medium": "null",
            "thumbnail_small": "null"
          },
          "member_id": 111
        }
      ],
      "created_at": "2016-01-01T12:00:00+0000",
      "id": 111,
      "link_text": "$12.00",
      "member_id": 111,
      "organization_id": 111,
      "transaction_id": 111,
      "type": "donation_created"
    }
  ]
}

List Campaign Activity
GET/campaigns/{id}/activity

Retrieves the Activity for the specified Campaign.

Permissions

To request this endpoint you will need a valid member access token of a member who is allowed to manage the campaign activity feed.

URI Parameters
HideShow
id
number (required) 

The ID of the Campaign.

Response Body Parameters
NameTypeDescription
dataarrayAn array of Activities
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "comments": [
        {
          "activity_id": 111,
          "content": "This is a comment",
          "created_at": "2016-01-01T12:00:00+0000",
          "id": 111,
          "member": {
            "created_at": "2016-01-01T12:00:00+0000",
            "email_address": "[email protected]",
            "first_name": "Classy",
            "id": 111,
            "last_name": "Member",
            "profile_image_id": 432,
            "thumbnail_large": "null",
            "thumbnail_medium": "null",
            "thumbnail_small": "null"
          },
          "member_id": 111
        }
      ],
      "created_at": "2016-01-01T12:00:00+0000",
      "id": 111,
      "link_text": "$12.00",
      "member_id": 111,
      "organization_id": 111,
      "transaction_id": 111,
      "type": "donation_created"
    }
  ]
}

List Fundraising Page Activity
GET/fundraising-pages/{id}/activity

Retrieves the Activity for the specified Fundraising Page.

URI Parameters
HideShow
id
number (required) 

The ID of the Fundraising Page.

Response Body Parameters
NameTypeDescription
dataarrayAn array of Activities
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "comments": [
        {
          "activity_id": 111,
          "content": "This is a comment",
          "created_at": "2016-01-01T12:00:00+0000",
          "id": 111,
          "member": {
            "created_at": "2016-01-01T12:00:00+0000",
            "email_address": "[email protected]",
            "first_name": "Classy",
            "id": 111,
            "last_name": "Member",
            "profile_image_id": 432,
            "thumbnail_large": "null",
            "thumbnail_medium": "null",
            "thumbnail_small": "null"
          },
          "member_id": 111
        }
      ],
      "created_at": "2016-01-01T12:00:00+0000",
      "id": 111,
      "link_text": "$12.00",
      "member_id": 111,
      "organization_id": 111,
      "transaction_id": 111,
      "type": "donation_created"
    }
  ]
}

List Fundraising Team Activity
GET/fundraising-teams/{id}/activity

Retrieves the Activity for the specified Fundraising Team.

URI Parameters
HideShow
id
number (required) 

The ID of the Fundraising Team.

Response Body Parameters
NameTypeDescription
dataarrayAn array of Activities
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "comments": [
        {
          "activity_id": 111,
          "content": "This is a comment",
          "created_at": "2016-01-01T12:00:00+0000",
          "id": 111,
          "member": {
            "created_at": "2016-01-01T12:00:00+0000",
            "email_address": "[email protected]",
            "first_name": "Classy",
            "id": 111,
            "last_name": "Member",
            "profile_image_id": 432,
            "thumbnail_large": "null",
            "thumbnail_medium": "null",
            "thumbnail_small": "null"
          },
          "member_id": 111
        }
      ],
      "created_at": "2016-01-01T12:00:00+0000",
      "id": 111,
      "link_text": "$12.00",
      "member_id": 111,
      "organization_id": 111,
      "transaction_id": 111,
      "type": "donation_created"
    }
  ]
}

Answers

Answers

Answer objects represent an answer to a Question that is associated with a Fundraising Entity (such as Fundraising Team or Page), or a Transaction. Please note that Questions will have an organization context.

View Question Answers
GET/questions/{id}/answers

View all Answer objects associated with a Question.

Permissions

To request this endpoint you must use a valid access token with reporting access to the question’s campaign.

URI Parameters
HideShow
id
string (required) 

Question ID

Response Body Parameters
NameTypeDescription
dataarrayAn array of Answers
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "id": 1,
      "member_id": 100,
      "question_id": 1000,
      "created_at": "2016-01-01T12:00:00+0000",
      "campaign_id": 432,
      "answer": "example answer text",
      "answerable_id": 123,
      "answerable_type": "fundraising_team"
    }
  ]
}

View Team Answers
GET/fundraising-teams/{id}/answers

View all Answer objects associated with a Fundraising Team.

URI Parameters
HideShow
id
string (required) 

Fundraising Team ID

Response Body Parameters
NameTypeDescription
dataarrayAn array of Answers
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "id": 1,
      "member_id": 100,
      "question_id": 1000,
      "created_at": "2016-01-01T12:00:00+0000",
      "campaign_id": 432,
      "answer": "example answer text",
      "answerable_id": 123,
      "answerable_type": "fundraising_team"
    }
  ]
}

Create/Update Team Answer
POST/fundraising-teams/{id}/answers

Answer a Team-Creation question for a team. If the question does exist, the previous Answer will be updated. If the Team still has outstanding questions that have not yet been answered, and that are required, the Team will remain in a “pending-questions” state. Once the final question has been answered, the state will be updated.

Team questions can also be answered on Team creation.

Permissions

To request this endpoint you must use a valid access token with permissions to manage the campaign this fundraising page is related to. Alternatively you may use an access token of the member who owns this fundraising page.

URI Parameters
HideShow
id
string (required) 

Fundraising Team ID

Request Body Parameters
NameTypeRequiredDescription
question_idnumberRequiredID for the Question to answer.
answerstringRequiredAnswer body.
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "question_id": 2,
  "answer": "example answer test"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1,
  "member_id": 100,
  "question_id": 1000,
  "created_at": "2016-01-01T12:00:00+0000",
  "campaign_id": 432,
  "answer": "example answer text",
  "answerable_id": 123,
  "answerable_type": "fundraising_team"
}

View Page Answers
GET/fundraising-pages/{id}/answers

View all Answer objects associated with a Fundraising Page.

Permissions

To request this endpoint you must use a valid access token with permissions to manage the campaign this fundraising page is related to. Alternatively you may use an access token of the member who owns this fundraising page.

URI Parameters
HideShow
id
string (required) 

Fundraising Page ID

Response Body Parameters
NameTypeDescription
dataarrayAn array of Answers
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "id": 1,
      "member_id": 100,
      "question_id": 1000,
      "created_at": "2016-01-01T12:00:00+0000",
      "campaign_id": 432,
      "answer": "example answer text",
      "answerable_id": 123,
      "answerable_type": "fundraising_team"
    }
  ]
}

Create/Update Page Answer
POST/fundraising-pages/{id}/answers

Answer a Campaign-Registration question for a Page. If the question does exist, the previous Answer will be updated. If the Fundraising Page still has outstanding questions that have not yet been answered, and that are required, the Fundraising Page will remain in a “pending-questions” state. Once the final question has been answered, the state will be updated.

Fundraising Page questions can also be answered on Fundraising Page creation.

Permissions

To request this endpoint you must use a valid access token with permissions to manage the campaign this fundraising page is related to. Alternatively you may use an access token of the member who owns this fundraising page.

URI Parameters
HideShow
id
string (required) 

Fundraising Page ID

Request Body Parameters
NameTypeRequiredDescription
question_idnumberRequiredID for the Question to answer.
answerstringRequiredAnswer body.
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "question_id": 2,
  "answer": "example answer test"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1,
  "member_id": 100,
  "question_id": 1000,
  "created_at": "2016-01-01T12:00:00+0000",
  "campaign_id": 432,
  "answer": "example answer text",
  "answerable_id": 123,
  "answerable_type": "fundraising_team"
}

Create/Update Registration Answer
POST/registrations/{id}/answers

Answer a Question asked during a registration. If there is already an Answer for the question, the previous Answer will be updated.

Permissions

To request this endpoint you must use a valid access token with permissions to manage the registration.

URI Parameters
HideShow
id
string (required) 

Registration ID

Request Body Parameters
NameTypeRequiredDescription
question_idnumberRequiredID for the Question to answer.
answerstringRequiredAnswer body.
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "question_id": 2,
  "answer": "example answer test"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1,
  "member_id": 100,
  "question_id": 1000,
  "created_at": "2016-01-01T12:00:00+0000",
  "campaign_id": 432,
  "answer": "example answer text",
  "answerable_id": 123,
  "answerable_type": "fundraising_team"
}

View Transaction Answers
GET/transactions/{id}/answers

View all Answer objects associated with a transaction.

Permissions

To request this endpoint you must use a valid access token with permissions to fetch the transaction, meaning you are the member associated with the transaction or a manager for the campaign associated with the transaction.

URI Parameters
HideShow
id
string (required) 

Transaction ID

Response Body Parameters
NameTypeDescription
dataarrayAn array of Answers
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "id": 1,
      "member_id": 100,
      "question_id": 1000,
      "created_at": "2016-01-01T12:00:00+0000",
      "campaign_id": 432,
      "answer": "example answer text",
      "answerable_id": 123,
      "answerable_type": "fundraising_team"
    }
  ]
}

View Registration Answers
GET/registrations/{id}/answers

View all Answer objects associated with a registration.

Permissions

To request this endpoint you must use a valid access token with permissions to fetch the registration.

URI Parameters
HideShow
id
string (required) 

Registration ID

Example response  200
HideShow
Headers
Content-Type: application/json
Body
- data (array[Answer])

Appeal Set

Appeal Set

An appeal set is a group of campaign specific appeals for social media. The current appeals that are supported include Facebook, Twitter, SMS, and Email. There is one set of appeals per campaign, and a campaign does not necessarily have an associated appeal set.

Fetch an Appeal Set
GET/appeal-set/{id}

Retrieve an Appeal Set by its ID.

URI Parameters
HideShow
id
string (required) 

Appeal Set ID

Response Body Parameters
NameTypeDescription
idnumberAppeal Set resource ID
campaign_idnumberCampaign resource ID
email_bodystringEmail body text
email_subjectstringEmail subject line text
facebook_asset_idnumberFacebook thumbnail asset ID
facebook_video_urlstringFacebook video URL
facebook_image_urlstringFacebook image URL
twitter_textstringTwitter body text. Max size is 280 characters.
sms_textstringSMS body text
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 12,
  "campaign_id": 51098,
  "email_body": "Please donate to our campaign.",
  "email_subject": "Check out this campaign!",
  "facebook_asset_id": 252,
  "facebook_video_url": "https://www.youtube.com/watch?v=LpInp3kEzdk",
  "facebook_image_url": "https://cdn.classy.org/asset.jpg",
  "twitter_text": "Tweet this campaign to your friends!",
  "sms_text": "Hello World!"
}

Fetch Campaign Appeal Set
GET/campaigns/{id}/appeal-set

Fetch an Appeal Set for the specified campaign. If no Appeal Set has been explicitly created for a Campaign, this endpoint will return a valid response (HTTP 200) without values specified.

URI Parameters
HideShow
id
string (required) 

Campaign ID

Response Body Parameters
NameTypeDescription
idnumberAppeal Set resource ID
campaign_idnumberCampaign resource ID
email_bodystringEmail body text
email_subjectstringEmail subject line text
facebook_asset_idnumberFacebook thumbnail asset ID
facebook_video_urlstringFacebook video URL
facebook_image_urlstringFacebook image URL
twitter_textstringTwitter body text. Max size is 280 characters.
sms_textstringSMS body text
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 12,
  "campaign_id": 51098,
  "email_body": "Please donate to our campaign.",
  "email_subject": "Check out this campaign!",
  "facebook_asset_id": 252,
  "facebook_video_url": "https://www.youtube.com/watch?v=LpInp3kEzdk",
  "facebook_image_url": "https://cdn.classy.org/asset.jpg",
  "twitter_text": "Tweet this campaign to your friends!",
  "sms_text": "Hello World!"
}

Create an Appeal Set
POST/campaigns/{id}/appeal-set

Create an Appeal Set.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign.

NOTE: If a valid facebook_asset_id is provided when creating/updating an appeal set, the facebook_image_url attribute in future fetches of the appeal set will reflect the static URL for the asset. If the appeal set does not have an associated asset but facebook_video_url is set, facebook_image_url will instead reflect the thumbnail image associated with the indicated video (Youtube or Vimeo only).

NOTE: If a facebook_video_url is specified, it must be a valid link to a YouTube or Vimeo video.

URI Parameters
HideShow
id
string (required) 

Campaign ID

Request Body Parameters
NameTypeRequiredDescription
email_bodystringOptionalEmail body text
email_subjectstringOptionalEmail subject line text
facebook_asset_idnumberOptionalFacebook thumbnail asset ID
facebook_video_urlstringOptionalFacebook video URL
twitter_textstringOptionalTwitter body text
sms_textstringOptionalSMS body text
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "email_body": "Please donate to our campaign.",
  "email_subject": "Check out this campaign!",
  "facebook_asset_id": 252,
  "facebook_video_url": "https://www.youtube.com/watch?v=LpInp3kEzdk",
  "twitter_text": "Tweet this campaign to your friends!",
  "sms_text": "Hello World!"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 12,
  "campaign_id": 51098,
  "email_body": "Please donate to our campaign.",
  "email_subject": "Check out this campaign!",
  "facebook_asset_id": 252,
  "facebook_video_url": "https://www.youtube.com/watch?v=LpInp3kEzdk",
  "facebook_image_url": "https://cdn.classy.org/asset.jpg",
  "twitter_text": "Tweet this campaign to your friends!",
  "sms_text": "Hello World!"
}

Update an Appeal Set
PUT/appeal-set/{id}

Update an existing Appeal Set.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign the appeal set belongs to.

URI Parameters
HideShow
id
string (required) 

Appeal Set ID

Request Body Parameters
NameTypeRequiredDescription
email_bodystringOptionalEmail body text
email_subjectstringOptionalEmail subject line text
facebook_asset_idnumberOptionalFacebook thumbnail asset ID
facebook_video_urlstringOptionalFacebook video URL
twitter_textstringOptionalTwitter body text
sms_textstringOptionalSMS body text
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "email_body": "Please donate to our campaign.",
  "email_subject": "Check out this campaign!",
  "facebook_asset_id": 252,
  "facebook_video_url": "https://www.youtube.com/watch?v=LpInp3kEzdk",
  "twitter_text": "Tweet this campaign to your friends!",
  "sms_text": "Hello World!"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 12,
  "campaign_id": 51098,
  "email_body": "Please donate to our campaign.",
  "email_subject": "Check out this campaign!",
  "facebook_asset_id": 252,
  "facebook_video_url": "https://www.youtube.com/watch?v=LpInp3kEzdk",
  "facebook_image_url": "https://cdn.classy.org/asset.jpg",
  "twitter_text": "Tweet this campaign to your friends!",
  "sms_text": "Hello World!"
}

Assets

Asset

** Internal Use Only **

Currently only image assets (gif, png or jpg) are supported.

Steps to upload an asset:

  1. Generate a Pre-signed URL
  2. Upload object directly to S3 using AWS Pre-signed URL - This is not a ClassyAPI request.
  3. On successful upload, update the state of the asset from ‘pending’ to ‘uploaded’ using the ‘Update Asset’ endpoint.

Allowable actions on existing Assets:

  • Fetch Record

  • Process Asset

  • Fetch Children

Generate Pre-Signed URL
POST/assets/url

Generate a presigned URL that can be used for image upload. With a Presigned URL, required information (bucket, authorization information, etc) is passed as a query string parameter in the PUT request to the AWS S3 API.

Once a Pre-Signed URL is generated, a new Classy Asset record is created in a ‘pending’ state.

Pre-Signed URLs are valid for 15min.

For more information on uploading objects using Amazon S3 Pre-Signed URLs, see: http://docs.aws.amazon.com/AmazonS3/latest/dev/PresignedUrlUploadObject.html

Permissions

You will need a valid access token for a trusted app to access this endpoint.

Request Body Parameters
NameTypeRequiredDescription
member_idnumberRequiredMember ID for content creator.
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "member_id": 1
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1,
  "presigned_put_url": "Hello, world!"
}

Update an Asset Record
PUT/assets/{id}

Once an asset has been uploaded via the Pre-Signed URL, an additional request must be made to the Classy API to update the asset state from ‘pending’ to ‘uploaded’. Once an asset is in an ‘uploaded’ state, the asset can be processed (optional).

Permissions

You will need a valid access token for a trusted app to access this endpoint.

URI Parameters
HideShow
id
string (required) 

Asset ID

Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "state": "uploaded"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 29487,
  "parent_id": null,
  "created_by": 387943,
  "state": "uploaded",
  "cdn_url": "https://cdn.classy.org/PECVc2gPjYdF.jpg",
  "content_type": "image/jpeg",
  "size": 278923,
  "created_at": "2016-03-31T22:49:18+0000"
}

Fetch an Asset Record
GET/assets/{id}

Fetches an individual asset record.

Permissions

You will need a valid access token for a trusted app to access this endpoint.

URI Parameters
HideShow
id
string (required) 

Asset ID

Response Body Parameters
NameTypeDescription
idnumberID of the Asset
parent_idnumberID of the Asset the current asset was generated from, if any.
created_bynumberID of the member who uploaded the Asset.
statestringIndicates whether or not the Asset is ready to be used.
cdn_urlstringURL of the resource (image or video).
content_typestringImage content type.
sizenumberImage weight in bytes.
created_atstringA timestamp reflecting the creation time of the comment.
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 29487,
  "parent_id": 29486,
  "created_by": 387943,
  "state": "pending",
  "cdn_url": "https://cdn.classy.org/PECVc2gPjYdF.jpg",
  "content_type": "image/jpeg",
  "size": 278923,
  "created_at": "2016-03-31T22:49:18+0000"
}

Fetch Asset Children
GET/assets/{id}/children

Return all children for a parent asset. The parent asset denotes the original asset on which a processing action has been performed.

Permissions

You will need a valid access token for a trusted app to access this endpoint.

URI Parameters
HideShow
id
number (required) Example: 1

Asset ID

Example response  200
HideShow
Headers
Content-Type: application/json
Body
[
  {
    "id": 123460,
    "parent_id": 1,
    "created_by": 387943,
    "state": "processed",
    "cdn_url": "https://cdn.classy.org/rando_hash.jpg",
    "content_type": "image/jpeg",
    "type": "rotated_180",
    "size": 43123,
    "created_at": "2016-03-31T22:49:18+0000"
  },
  {
    "id": 123459,
    "parent_id": 1,
    "created_by": 387943,
    "state": "processed",
    "cdn_url": "https://cdn.classy.org/rando_hash.jpg",
    "content_type": "image/jpeg",
    "type": "scaled_100_100",
    "size": 43123,
    "created_at": "2016-03-31T22:49:18+0000"
  },
  {
    "id": 123458,
    "parent_id": 1,
    "created_by": 387943,
    "state": "processed",
    "cdn_url": "https://cdn.classy.org/rando_hash.jpg",
    "content_type": "image/jpeg",
    "type": "cropped",
    "size": 43123,
    "created_at": "2016-03-31T22:49:18+0000"
  }
]

Process

Process an existing (uploaded) asset.

To process an Asset:

  1. Upload asset (see above). Asset must be in an ‘uploaded’ state.
  2. Process asset using one of the process actions (see below)

Processing an asset will not alter the original asset, instead, a ‘child’ asset will be created. The ‘parent_id’ pointer of the child asset will point to the original asset.

All process endpoint requests are comprised of the following parameters: + action - Processing action (thumbnails, crop, scale or rotate) + arguments - Process specific parameters.

Permissions

You will need a valid access token for a trusted app to access this endpoint.

Thumbnails
POST/assets/{id}/process

Generate thumbnails from an image asset.

Permissions

You will need a valid access token for a trusted app to access this endpoint.

URI Parameters
HideShow
id
number (required) Example: 1

Asset ID

Example request
HideShow
Headers
Content-Type: application/json
Body
{
    "action": "thumbnails",
    "arguments": [
        {"width": 100, "height": 100},
        {"width": 150, "height": 150},
    ]
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
[
  {
    "id": 123456,
    "parent_id": 1,
    "created_by": 387943,
    "state": "processed",
    "cdn_url": "https://cdn.classy.org/rando_hash.jpg",
    "content_type": "image/jpeg",
    "type": "thumbnail_100_100",
    "size": 43123,
    "created_at": "2016-03-31T22:49:18+0000"
  },
  {
    "id": 123457,
    "parent_id": 1,
    "created_by": 387943,
    "state": "processed",
    "cdn_url": "https://cdn.classy.org/rando_hash.jpg",
    "content_type": "image/jpeg",
    "type": "thumbnail_150_150",
    "size": 61232,
    "created_at": "2016-03-31T22:49:18+0000"
  }
]

Crop
POST/assets/{id}/process

Crop an image asset.

Permissions

You will need a valid access token for a trusted app to access this endpoint.

URI Parameters
HideShow
id
number (required) Example: 1

Asset ID

Example request
HideShow
Headers
Content-Type: application/json
Body
{
    "action": "crop",
    "arguments": {
        "x": 10, // Cropbox start x pixel coordinate
        "y": 10, // Cropbox start y pixel coordinate
        "width": 100, // Cropbox width in pixels
        "height": 100 // Cropybox height in pixels
    }
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 123458,
  "parent_id": 1,
  "created_by": 387943,
  "state": "processed",
  "cdn_url": "https://cdn.classy.org/rando_hash.jpg",
  "content_type": "image/jpeg",
  "type": "cropped",
  "size": 43123,
  "created_at": "2016-03-31T22:49:18+0000"
}

Scale
POST/assets/{id}/process

Scale an image asset.

Permissions

You will need a valid access token for a trusted app to access this endpoint.

URI Parameters
HideShow
id
number (required) Example: 1

Asset ID

Example request
HideShow
Headers
Content-Type: application/json
Body
{
    "action": "scale",
    "arguments": {
        "width": 100, // Scale width in pixels
        "height": 100 // Scale height in pixels
    }
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 123459,
  "parent_id": 1,
  "created_by": 387943,
  "state": "processed",
  "cdn_url": "https://cdn.classy.org/rando_hash.jpg",
  "content_type": "image/jpeg",
  "type": "scaled_100_100",
  "size": 43123,
  "created_at": "2016-03-31T22:49:18+0000"
}

Rotate
POST/assets/{id}/process

Rotate an image asset.

Permissions

You will need a valid access token for a trusted app to access this endpoint.

URI Parameters
HideShow
id
number (required) 

Asset ID

Example request
HideShow
Headers
Content-Type: application/json
Body
{
    "action": "rotate",
    "arguments": {
        "angle": 180, // Rotate angle in degrees.
    }
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 123460,
  "parent_id": 1,
  "created_by": 387943,
  "state": "processed",
  "cdn_url": "https://cdn.classy.org/rando_hash.jpg",
  "content_type": "image/jpeg",
  "type": "rotated_180",
  "size": 43123,
  "created_at": "2016-03-31T22:49:18+0000"
}

Campaign

Campaign

The fundraising aspect of Classy takes place within Campaigns and Events. Use the campaign endpoint to retrieve information about a campaign by its unique ID.

Campaigns have four attributes that relate to Passport functionality: goal, currency_code, raw_goal, and raw_currency_code.

The raw_goal of a campaign indicates the amount in the currency specified by raw_currency_code that the campaign is hoping to raise. The camapaign’s page will display progress in terms of the raw_currency_code. A campaign’s raw_currency_code can be set independently from that of the campaign’s associated fundraising teams or fundraising pages.

The goal of a campaign indicates the amount of the raw_goal when normalized into the organization-level currency code (specified by currency_code). Normalization occurs whenever a campaign’s raw_goal is updated and will use the conversion rate from raw_currency_code to currency_code at the time the update occurs. If the raw_currency_code and currency_code of a campaign differ through previous or pending updates, the campaign’s goal cannot be set manually - raw_goal must be specified instead.

The currency_code attribute is directly inherited from the campaign’s organization and cannot be changed. All of an organization’s fundraising entities (e.g. campaigns, fundraising teams, and fundraising pages) share the same inherited currency_code, allowing their relative amounts to be compared on a standardized basis.

Fetch a Campaign
GET/campaigns/{id}

Retrieve a Campaign by its ID.

Permissions

You will need a valid access token to request this endpoint.

URI Parameters
HideShow
id
string (required) 

Campaign ID

Response Body Parameters
NameTypeDescription
address1stringEx "533 F street".
allow_duplicate_fundraisersbooleanIndicates whether a campaign allows a single user to own several fundraising pages.
allow_ecardsbooleanWhether eCard dedications are available for this campaign
allow_fundraising_pagesbooleanSpecifies whether a campaign allows for the creation of new fundraising pages. Only relevant for campaigns with types that allow for fundraising pages in general.
canonical_urlstringThe canonical url of the campaign.
category_idnumberCategory designation for campaign.
channel_idnumberChannel designation for campaign.
channel_keywords: `some_keyword`string(Comma-separated) list of keywords campaign is tagged with.
citystringCity name.
classy_mode_appealstring"Classy mode" appeal text.
classy_mode_checked_by_defaultbooleanIf true, and if the "classy_mode_enabled" option is true, this will check the "Classy Mode" selection by default on donation forms.
classy_mode_enabledbooleanIf true, give the donor the option to cover the transaction fee.
collect_shipping_addressbooleanIf true, collect shipping information during checkout
contact_emailstringEmail address for the campaign contact. Set to the Organization Email by default if none is specified.
contact_phonestringPhone number for the campaign contact.
countrystringCountry name.
created_atstringIndicates when this resource was created.
created_withstringIndicates which application created the campaign. Possible values include `api` or `classyapp`.
currency_codestringISO code of the currency against which this campaign is normalized. Inherited from organization's currency code.
default_page_appealstringDefault appeal text displayed on fundraising pages.
default_page_appeal_emailstringDefault appeal email text for fundraising pages.
default_page_goalnumberDefault goal for the campaign's fundraising pages. Presented in units of the campaign's currency_code.
default_page_post_asset_idnumberDefault asset id of page story post.
default_page_post_bodystringDefault body of page story post.
default_page_post_titlestringDefault title of page story post.
default_team_appealstringDefault appeal text displayed on fundraising teams.
default_team_appeal_emailstringDefault appeal email text for fundraising teams.
default_team_goalnumberDefault goal for the campaign's fundraising teams. Presented in units of the campaign's currency_code.
default_team_post_asset_idnumberDefault asset id of team story post.
default_team_post_bodystringDefault body of team story post.
default_team_post_titlestringDefault title of team story post.
default_thank_you_textstringDefault thank you text on the thank you page.
designation_idnumberID of designation the campaign transactions will be allocated to.
disable_donation_attributionbooleanFlag to allow/disallow donors to select a Fundraising Page or Team to attribute their donation to. If true, donation attribution is disable. Set to false to enable donation attribution.
external_urlstringWhen set on a campaign, classy.org will push all requests for this campaign to the specified URL via HTTP redirect. Commonly used to redirect traffic from ended campaigns to another site/campaign.
goalnumberFundraising goal for this campaign normalized against 'currency_code'
hide_anonymous_donationsbooleanIf true, donation forms will not display the "anonymous donation" field.
hide_contact_opt_inbooleanIf true, donation forms will not display the "contact opt in" field.
hide_dedicationsbooleanIf true, donation dedications will not be offered
hide_donation_commentsbooleanIf true, donation forms will not display the "donation comments" field.
host_member_idnumberID of member who created this campaign.
is_billing_address_requiredbooleanIf true, a billing address must be provided when creating transactions against the campaign.
is_ended_at_hiddenbooleanIf true, campaign end date is not shown
is_fees_freebooleanIf the campaign has fees associated with it or not.
is_started_at_hiddenbooleanIf true, campaign start date is not shown
location_detailsstringAdditional information about the location of the event (e.g. directions, clarifications)
logo_idnumberID of asset used as the main campaign logo. Interpreted from associated campaign theme.
logo_urlstringURL for logo image. Either hardcoded URL for legacy campaigns or interpreted from logo asset specified by logo ID.
namestringCampaign name.
offer_dedication_postal_notificationsbooleanIf true, offer to collect mailing information for postal notifications for dedications.
opt_in_checked_by_defaultbooleanIf true, and if the "hide_contact_opt_in" option is false, this will check the "opt-in" selection by default on donation forms.
organization_idstringID for the organization to whom this Campaign belongs.
postal_codestringZip code.
raw_currency_codestringISO code of the currency in which this campaign should be presented. Defaults to 'currency_code' if not specified.
raw_goalnumberRaw fundraising goal for this campaign
send_dedication_emailsbooleanIf true, send dedication email for donation
started_atstringStarting date and time for this campaign.
statestringState/province name.
statusstringStatus of campaign. Possible values include `active`, `deactivated`, `draft` & `unpublished`.
team_cover_photo_idnumberID of the associated asset that serves as the default cover photo for this Campaign's teams (inherited from associated theme)
team_cover_photo_urlstringURL for Campaign's default team cover photo image. Interpreted from team cover photo asset specified by team cover photo ID.
team_membership_policystringConfiguration indicating whether team membership for this Campaign's fundraising pages is optional, required, or prohibited. Possible values include `optional`, `prohibited` & `required`.
ticket_pass_on_feesbooleanIndicates whether a campaign passes fees from tickets to the user or not (fee on top for tickets).
timezone_identifier: `America/Los_Angeles`stringTimezone Identifier
typestringCampaign Type. Possible values include `ticketed`, `registration`, `fund_for_entry`, `peer_to_peer`, `donation`, `reg_w_fund` & `crowdfunding`.
updated_atstringIndicates when this resource was last updated.
venuestringFree text representing a location. Ex "City townhall".
fixed_fot_percentnumberPercentage campaign elects to be added to fee on top (aka Classy Mode) transactions to cover fees.
effective_fixed_fot_percentnumberPercentage to be added to fee on top (aka Classy Mode) transactions for the campaign to cover fees. If fixed fot percent is null falls back on the organization's fixed fot percent.
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "address1": "533 F Street",
  "allow_duplicate_fundraisers": false,
  "allow_ecards": false,
  "allow_fundraising_pages": true,
  "canonical_url": "/campaign/c0",
  "category_id": 1,
  "channel_id": 2,
  "channel_keywords: `some_keyword`": "Hello, world!",
  "city": "San Diego",
  "classy_mode_appeal": "false",
  "classy_mode_checked_by_default": false,
  "classy_mode_enabled": false,
  "collect_shipping_address": false,
  "contact_email": "[email protected]",
  "contact_phone": "619-555-1212",
  "country": "US",
  "created_at": "2016-01-01T12:00:00+0000",
  "created_with": "api",
  "currency_code": "USD",
  "default_page_appeal": "Please donate to my fundraising page",
  "default_page_appeal_email": "Please donate to my fundraising page",
  "default_page_goal": 500,
  "default_page_post_asset_id": 1,
  "default_page_post_body": "Lorem ipsum",
  "default_page_post_title": "Welcome to our team page!",
  "default_team_appeal": "Please donate to my fundraising team",
  "default_team_appeal_email": "Please donate to my fundraising team",
  "default_team_goal": 500,
  "default_team_post_asset_id": 1,
  "default_team_post_body": "Lorem ipsum",
  "default_team_post_title": "Welcome to our team page!",
  "default_thank_you_text": "Thank you so much!",
  "designation_id": 10,
  "disable_donation_attribution": false,
  "external_url": "https://classy.org",
  "goal": 108.23,
  "hide_anonymous_donations": false,
  "hide_contact_opt_in": false,
  "hide_dedications": false,
  "hide_donation_comments": false,
  "host_member_id": 1001,
  "is_billing_address_required": false,
  "is_ended_at_hidden": true,
  "is_fees_free": false,
  "is_started_at_hidden": true,
  "location_details": "Heading north on I-5...",
  "logo_id": 1002,
  "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
  "name": "My Campaign",
  "offer_dedication_postal_notifications": false,
  "opt_in_checked_by_default": false,
  "organization_id": "101",
  "postal_code": "92101",
  "raw_currency_code": "EUR",
  "raw_goal": 100,
  "send_dedication_emails": false,
  "started_at": "2016-01-01T12:00:00+0000",
  "state": "CA",
  "status": "active",
  "team_cover_photo_id": 2345,
  "team_cover_photo_url": "https://www.classy-cdn-url.com/your-team-cover-photo.png",
  "team_membership_policy": "optional",
  "ticket_pass_on_fees": false,
  "timezone_identifier: `America/Los_Angeles`": "Hello, world!",
  "type": "crowdfunding",
  "updated_at": "2016-01-01T12:00:00+0000",
  "venue": "City Townhall",
  "fixed_fot_percent": 4,
  "effective_fixed_fot_percent": 4
}

Update a Campaign
PUT/campaigns/{id}

Update an existing Campaign.

NOTE: If setting fundraising goal, specify the “goal” attribute. Do not specify “raw_goal” and “raw_currency_code”. These are new attributes that are not yet active.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign.

URI Parameters
HideShow
id
string (required) 

Campaign ID

Request Body Parameters
NameTypeRequiredDescription
address1stringOptionalEx "533 F street".
allow_duplicate_fundraisersbooleanOptionalIndicates whether a campaign allows a single user to own several fundraising pages.
allow_ecardsbooleanOptionalWhether eard dedications are available for this campaign
category_idnumberOptionalCategory designation for campaign.
channel_idnumberOptionalChannel designation for campaign.
channel_keywords: `some_keyword`stringOptional(Comma-separated) list of keywords campaign is tagged with.
citystringOptionalCity name.
classy_mode_appealstringOptional"Classy mode" appeal text.
classy_mode_checked_by_defaultbooleanOptionalIf true, and if the "classy_mode_enabled" option is true, this will check the "Classy Mode" selection by default on donation forms.
classy_mode_enabledbooleanOptionalIf true, give the donor the option to cover the transaction fee.
collect_shipping_addressbooleanOptionalIf true, collect shipping information during checkout
contact_emailstringOptionalEmail address for the campaign contact. Set to the Organization Email by default if none is specified.
contact_phonestringOptionalPhone number for the campaign contact.
countrystringOptionalCountry name.
default_page_goalnumberOptionalDefault goal for the campaign's fundraising pages.
default_team_goalnumberOptionalDefault goal for the campaign's fundraising teams.
designation_idnumberOptionalID of designation the campaign transactions will be allocated to.
disable_donation_attributionbooleanOptionalFlag to allow/disallow donors to select a Fundraising Page or Team to attribute their donation to. If true, donation attribution is disable. Set to false to enable donation attribution.
external_urlstringOptionalWhen set on a campaign, classy.org will push all requests for this campaign to the specified URL via HTTP redirect. Commonly used to redirect traffic from ended campaigns to another site/campaign.
hide_anonymous_donationsbooleanOptionalIf true, donation forms will not display the "anonymous donation" field.
hide_contact_opt_inbooleanOptionalIf true, donation forms will not display the "contact opt in" field.
hide_dedicationsbooleanOptionalIf true, donation dedications will not be offered
hide_donation_commentsbooleanOptionalIf true, donation forms will not display the "donation comments" field.
host_member_idnumberOptionalID of member who created this campaign.
is_billing_address_requiredbooleanOptionalIf true, a billing address must be provided when creating transactions against the campaign.
is_ended_at_hiddenbooleanOptionalIf true, campaign end date is not shown
is_started_at_hiddenbooleanOptionalIf true, campaign start date is not shown
location_detailsstringOptionalAdditional information about the location of the event (e.g. directions, clarifications)
namestringOptionalCampaign name.
offer_dedication_postal_notificationsbooleanOptionalIf true, offer to collect mailing information for postal notifications for dedications.
opt_in_checked_by_defaultbooleanOptionalIf true, and if the "hide_contact_opt_in" option is false, this will check the "opt-in" selection by default on donation forms.
organization_idstringOptionalID for the organization to whom this Campaign belongs.
postal_codestringOptionalZip code.
raw_currency_codestringOptionalISO code of the currency in which this campaign should be presented. Defaults to 'currency_code' if not specified.
raw_goalnumberOptionalRaw fundraising goal for this campaign
send_dedication_emailsbooleanOptionalC If true, send dedication email for donation
started_atstringOptionalStarting date and time for this campaign.
statestringOptionalState/province name. If country is "US" and a value for state is provided, state must be a valid US region.
team_membership_policystringOptionalConfiguration indicating whether team membership for this Campaign's fundraising pages is optional, required, or prohibited.
ticket_pass_on_feesbooleanOptionalIndicates whether a campaign passes fees from tickets to the user or not (fee on top for tickets).
timezone_identifier: `America/Los_Angeles`stringOptionalTimezone Identifier
typestringOptionalCampaign Type
venuestringOptionalFree text representing a location. Ex "City townhall".
fixed_fot_percentnumberOptionalPercentage campaign elects to be added to fee on top (aka Classy Mode) transactions to cover fees. Can be left null. If not null then will override the organization's fixed_fot_percent as the campaign's effective_fixed_fot_percent. Only organization level admins with campaign management permissions can edit this field.
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "address1": "533 F Street",
  "allow_duplicate_fundraisers": false,
  "allow_ecards": false,
  "category_id": 1,
  "channel_id": 2,
  "channel_keywords: `some_keyword`": "Hello, world!",
  "city": "San Diego",
  "classy_mode_appeal": "false",
  "classy_mode_checked_by_default": false,
  "classy_mode_enabled": false,
  "collect_shipping_address": false,
  "contact_email": "[email protected]",
  "contact_phone": "619-555-1212",
  "country": "US",
  "default_page_goal": 500,
  "default_team_goal": 500,
  "designation_id": 10,
  "disable_donation_attribution": false,
  "external_url": "https://classy.org",
  "hide_anonymous_donations": false,
  "hide_contact_opt_in": false,
  "hide_dedications": false,
  "hide_donation_comments": false,
  "host_member_id": 1001,
  "is_billing_address_required": false,
  "is_ended_at_hidden": true,
  "is_started_at_hidden": true,
  "location_details": "Heading north on I-5...",
  "name": "My Campaign",
  "offer_dedication_postal_notifications": false,
  "opt_in_checked_by_default": false,
  "organization_id": "101",
  "postal_code": "92101",
  "raw_currency_code": "EUR",
  "raw_goal": 100,
  "send_dedication_emails": false,
  "started_at": "2016-01-01T12:00:00+0000",
  "state": "CA",
  "team_membership_policy": "optional",
  "ticket_pass_on_fees": false,
  "timezone_identifier: `America/Los_Angeles`": "Hello, world!",
  "type": "crowdfunding",
  "venue": "City Townhall",
  "fixed_fot_percent": 4
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "address1": "533 F Street",
  "allow_duplicate_fundraisers": false,
  "allow_ecards": false,
  "allow_fundraising_pages": true,
  "canonical_url": "/campaign/c0",
  "category_id": 1,
  "channel_id": 2,
  "channel_keywords: `some_keyword`": "Hello, world!",
  "city": "San Diego",
  "classy_mode_appeal": "false",
  "classy_mode_checked_by_default": false,
  "classy_mode_enabled": false,
  "collect_shipping_address": false,
  "contact_email": "[email protected]",
  "contact_phone": "619-555-1212",
  "country": "US",
  "created_at": "2016-01-01T12:00:00+0000",
  "created_with": "api",
  "currency_code": "USD",
  "default_page_appeal": "Please donate to my fundraising page",
  "default_page_appeal_email": "Please donate to my fundraising page",
  "default_page_goal": 500,
  "default_page_post_asset_id": 1,
  "default_page_post_body": "Lorem ipsum",
  "default_page_post_title": "Welcome to our team page!",
  "default_team_appeal": "Please donate to my fundraising team",
  "default_team_appeal_email": "Please donate to my fundraising team",
  "default_team_goal": 500,
  "default_team_post_asset_id": 1,
  "default_team_post_body": "Lorem ipsum",
  "default_team_post_title": "Welcome to our team page!",
  "default_thank_you_text": "Thank you so much!",
  "designation_id": 10,
  "disable_donation_attribution": false,
  "external_url": "https://classy.org",
  "goal": 108.23,
  "hide_anonymous_donations": false,
  "hide_contact_opt_in": false,
  "hide_dedications": false,
  "hide_donation_comments": false,
  "host_member_id": 1001,
  "is_billing_address_required": false,
  "is_ended_at_hidden": true,
  "is_fees_free": false,
  "is_started_at_hidden": true,
  "location_details": "Heading north on I-5...",
  "logo_id": 1002,
  "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
  "name": "My Campaign",
  "offer_dedication_postal_notifications": false,
  "opt_in_checked_by_default": false,
  "organization_id": "101",
  "postal_code": "92101",
  "raw_currency_code": "EUR",
  "raw_goal": 100,
  "send_dedication_emails": false,
  "started_at": "2016-01-01T12:00:00+0000",
  "state": "CA",
  "status": "active",
  "team_cover_photo_id": 2345,
  "team_cover_photo_url": "https://www.classy-cdn-url.com/your-team-cover-photo.png",
  "team_membership_policy": "optional",
  "ticket_pass_on_fees": false,
  "timezone_identifier: `America/Los_Angeles`": "Hello, world!",
  "type": "crowdfunding",
  "updated_at": "2016-01-01T12:00:00+0000",
  "venue": "City Townhall",
  "fixed_fot_percent": 4,
  "effective_fixed_fot_percent": 4
}

Fetch Organization Campaigns
GET/organizations/{id}/campaigns{?with}

Fetch all Campaigns associated with this Organization.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the organization’s campaigns.

URI Parameters
HideShow
id
string (required) 

Organization ID

with
string (optional) 
  • organization - Organization this to whom this Campaign belongs.

  • appeal_set - Appeal Set associated with this Campaign.

  • logo - Asset representing the Campaign’s logo

Response Body Parameters
NameTypeDescription
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "address1": "533 F Street",
      "allow_duplicate_fundraisers": false,
      "allow_ecards": false,
      "allow_fundraising_pages": true,
      "canonical_url": "/campaign/c0",
      "category_id": 1,
      "channel_id": 2,
      "channel_keywords: `some_keyword`": "Hello, world!",
      "city": "San Diego",
      "classy_mode_appeal": "false",
      "classy_mode_checked_by_default": false,
      "classy_mode_enabled": false,
      "collect_shipping_address": false,
      "contact_email": "[email protected]",
      "contact_phone": "619-555-1212",
      "country": "US",
      "created_at": "2016-01-01T12:00:00+0000",
      "created_with": "api",
      "currency_code": "USD",
      "default_page_appeal": "Please donate to my fundraising page",
      "default_page_appeal_email": "Please donate to my fundraising page",
      "default_page_goal": 500,
      "default_page_post_asset_id": 1,
      "default_page_post_body": "Lorem ipsum",
      "default_page_post_title": "Welcome to our team page!",
      "default_team_appeal": "Please donate to my fundraising team",
      "default_team_appeal_email": "Please donate to my fundraising team",
      "default_team_goal": 500,
      "default_team_post_asset_id": 1,
      "default_team_post_body": "Lorem ipsum",
      "default_team_post_title": "Welcome to our team page!",
      "default_thank_you_text": "Thank you so much!",
      "designation_id": 10,
      "disable_donation_attribution": false,
      "external_url": "https://classy.org",
      "goal": 108.23,
      "hide_anonymous_donations": false,
      "hide_contact_opt_in": false,
      "hide_dedications": false,
      "hide_donation_comments": false,
      "host_member_id": 1001,
      "is_billing_address_required": false,
      "is_ended_at_hidden": true,
      "is_fees_free": false,
      "is_started_at_hidden": true,
      "location_details": "Heading north on I-5...",
      "logo_id": 1002,
      "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
      "name": "My Campaign",
      "offer_dedication_postal_notifications": false,
      "opt_in_checked_by_default": false,
      "organization_id": "101",
      "postal_code": "92101",
      "raw_currency_code": "EUR",
      "raw_goal": 100,
      "send_dedication_emails": false,
      "started_at": "2016-01-01T12:00:00+0000",
      "state": "CA",
      "status": "active",
      "team_cover_photo_id": 2345,
      "team_cover_photo_url": "https://www.classy-cdn-url.com/your-team-cover-photo.png",
      "team_membership_policy": "optional",
      "ticket_pass_on_fees": false,
      "timezone_identifier: `America/Los_Angeles`": "Hello, world!",
      "type": "crowdfunding",
      "updated_at": "2016-01-01T12:00:00+0000",
      "venue": "City Townhall",
      "fixed_fot_percent": 4,
      "effective_fixed_fot_percent": 4
    }
  ]
}

Publish a Campaign
POST/campaigns/{id}/publish

Publish a campaign that is currently in an unpublish or draft status. New campaign status will be ‘active’ and will now count towards an Organization’s max campaign limit. Legacy campaigns (created_with = classyapp) cannot be published.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign.

URI Parameters
HideShow
id
string (required) 

Campaign ID

Example response  200
HideShow
Headers
Content-Type: application/json

Unpublish a Campaign
POST/campaigns/{id}/unpublish

Unpublish a campaign that is currently in an active status. New campaign status will be ‘unpublished’.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign.

URI Parameters
HideShow
id
string (required) 

Campaign ID

Example response  200
HideShow
Headers
Content-Type: application/json

Deactivate a Campaign
POST/campaigns/{id}/deactivate

Deactivate a campaign that is currently in a non-deactivated state. New campaign status is ‘deactivated’.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign.

URI Parameters
HideShow
id
string (required) 

Campaign ID

Example response  200
HideShow
Headers
Content-Type: application/json

Reactivate a Campaign
POST/campaigns/{id}/reactivate

Reactivate a campaign that has been deactivated. The campaign will return in ‘unpublished’ state.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign.

URI Parameters
HideShow
id
string (required) 

Campaign ID

Example response  200
HideShow
Headers
Content-Type: application/json

Duplicate a Campaign
POST/campaigns/{id}/duplicate

Create a copy of the specified source campaign.

The “overrides” attribute in the body of the request can be used to overwrite any attribute from the source campaign that is settable in the campaign creation endpoint.

Other related objects attached to the source campaign (tickets, ecards, permissions, …) are not duplicated by default. The “duplicates” attribute in the body of the request can be used to detail which related object(s) shall also be duplicated.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the organization’s campaigns the source campaign belongs to.

URI Parameters
HideShow
id
string (required) 

ID of campaign that is being duplicated

Request Body Parameters
NameTypeRequiredDescription
duplicatesarrayOptionalList of related object to duplicates
overridesobjectOptional
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "duplicates": [
    "questions",
    "theme",
    "products",
    "faqs",
    "ecards",
    "appeal_set",
    "permissions"
  ],
  "overrides": {
    "address1": "533 F Street",
    "city": "San Diego",
    "country": "US",
    "currency_code": "USD",
    "designation_id": 243,
    "goal": 123.45,
    "location_details": "Heading north on I-5...",
    "name": "My Campaign",
    "postal_code": "92101",
    "timezone_identifier: `America/Los_Angeles`": "Hello, world!",
    "started_at": "2015-12-12 07:59:59",
    "state": "CA",
    "status": "active",
    "team_membership_policy": "required",
    "type": "crowdfunding",
    "venue": "City Townhall",
    "fixed_fot_percent": 4
  }
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "name": "My Other Campaign",
  "type": "crowdfunding",
  "created_at": "2016-01-01T12:00:00+0000",
  "updated_at": "2016-01-01T12:00:00+0000",
  "started_at": "2016-01-01T12:00:00+0000",
  "timezone_identifier": "America/Los_Angeles",
  "organization_id": "101",
  "designation_id": 10,
  "host_member_id": 1001,
  "currency_code": "USD",
  "goal": 123.45,
  "venue": "City Townhall",
  "address1": "533 F Street",
  "city": "San Diego",
  "postal_code": "92101",
  "state": "CA",
  "country": "US",
  "status": "active",
  "hide_dedications": false,
  "location_details": "Heading north on I-5...",
  "collect_shipping_address": false,
  "offer_dedication_postal_notifications": false,
  "send_dedication_emails": false,
  "allow_ecards": false,
  "classy_mode_enabled": false,
  "classy_mode_appeal": "false",
  "hide_anonymous_donations": false,
  "hide_contact_opt_in": false,
  "hide_donation_comments": false,
  "opt_in_checked_by_default": false,
  "classy_mode_checked_by_default": false,
  "created_with": "classyapp",
  "category_id": 1,
  "channel_id": 2,
  "channel_keywords: `some_keyword`": "Hello, world!",
  "contact_email": "[email protected]",
  "contact_phone": "619-555-1212"
}

Credential Set

A Credential Set is fundamentally a record that dictates what a user can do or access within a Campaign or Organization context in the API.

Campaign Credential Set

Campaign Level Credential Sets.

Fetch Campaign Credential Sets
GET/campaigns/{campaign_id}/credential-sets

Retrieve Credential Sets for a specified Campaign.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign.

URI Parameters
HideShow
campaign_id
string (required) 

The ID of the Campaign.

Response Body Parameters
NameTypeDescription
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "id": 1001,
      "member_id": 1001,
      "organization_id": 1001,
      "campaign_id": 1001
    }
  ]
}

Create Campaign Credential Set
POST/campaigns/{id}/credential-sets

Create a Credential Set for the specified Campaign.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign.

URI Parameters
HideShow
id
string (required) 

The ID of the Campaign for which the Credential Set is being created.

Request Body Parameters
NameTypeRequiredDescription
member_idnumberRequiredThe ID of the Member associated with the Campaign Credential Set
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "member_id": 1001
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1001,
  "member_id": 1001,
  "organization_id": 1001,
  "campaign_id": 1001
}

Fetch Campaign Credential Set
GET/campaign-credential-sets/{id}

Retrieve a Campaign Credential Set by its ID.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign the credential set belongs to.

URI Parameters
HideShow
id
string (required) 

Campaign Credential Set ID

Response Body Parameters
NameTypeDescription
idnumberThe ID of the Campaign Credential Set
member_idnumberThe ID of the Member associated with the Campaign Credential Set
organization_idnumberThe ID of the Organization associated with the Campaign Credential Set's Campaign
campaign_idnumberThe ID of the Campaign Credential Set's Campaign
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1001,
  "member_id": 1001,
  "organization_id": 1001,
  "campaign_id": 1001
}

Delete Campaign Credential Set
DELETE/campaign-credential-sets/{id}

Delete a Campaign Credential Set.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign the credential set belongs to.

URI Parameters
HideShow
id
string (required) 

Campaign Credential Set ID

Example response  200
HideShow
Headers
Content-Type: application/json

Organization Credential Set

Organization Level Credential Sets.

List Organization Credential Sets
GET/organizations/{id}/credential-sets

Retrieve all the Credential Sets for a specified Organization.

Permissions

To request this endpoint you will need a valid access token for a member who is a global admin for the organization.

URI Parameters
HideShow
id
string (required) 

The ID of the Organization.

Response Body Parameters
NameTypeDescription
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "id": 1001,
      "member_id": 1001,
      "organization_id": 1001,
      "global_admin: `true` (boolean) - Flag whether or not the member has global_admin access": "Hello, world!",
      "campaign_manager: `true` (boolean) - Flag whether or not the member has campaign_manager access": "Hello, world!",
      "activity_wall: `true` (boolean) - Flag whether or not the member has activity_wall access": "Hello, world!",
      "reporting_access: `true` (boolean) - Flag whether or not the member has reporting_access": "Hello, world!"
    }
  ]
}

Create Organization Credential Set
POST/organizations/{id}/credential-sets

Create a Credential Set for the specified Organization.

Permissions

To request this endpoint you will need a valid access token for a member who is a global admin for the organization.

URI Parameters
HideShow
id
string (required) 

The ID of the Organization for which the Credential Set is being created.

Request Body Parameters
NameTypeRequiredDescription
member_idnumberRequiredThe ID of the Member associated with the Campaign Credential Set
global_admin: `true` (boolean) - Flag whether or not the member has global_admin accessstringOptional
campaign_manager: `true` (boolean) - Flag whether or not the member has campaign_manager accessstringOptional
activity_wall: `true` (boolean) - Flag whether or not the member has activity_wall accessstringOptional
reporting_access: `true` (boolean) - Flag whether or not the member has reporting_accessstringOptional
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "member_id": 1001,
  "global_admin: `true` (boolean) - Flag whether or not the member has global_admin access": "Hello, world!",
  "campaign_manager: `true` (boolean) - Flag whether or not the member has campaign_manager access": "Hello, world!",
  "activity_wall: `true` (boolean) - Flag whether or not the member has activity_wall access": "Hello, world!",
  "reporting_access: `true` (boolean) - Flag whether or not the member has reporting_access": "Hello, world!"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1001,
  "member_id": 1001,
  "organization_id": 1001,
  "global_admin: `true` (boolean) - Flag whether or not the member has global_admin access": "Hello, world!",
  "campaign_manager: `true` (boolean) - Flag whether or not the member has campaign_manager access": "Hello, world!",
  "activity_wall: `true` (boolean) - Flag whether or not the member has activity_wall access": "Hello, world!",
  "reporting_access: `true` (boolean) - Flag whether or not the member has reporting_access": "Hello, world!"
}

Fetch Organization Credential Set
GET/organization-credential-sets/{id}

Retrieve an Organization Credential Set by its ID.

Permissions

To request this endpoint you will need a valid access token for a member who is a global admin for the organization.

URI Parameters
HideShow
id
string (required) 

Organization Credential Set ID

with
string (optional) 
  • member - Embed associated member object

  • organization - Embed parent organization object

Response Body Parameters
NameTypeDescription
idnumberThe ID of the Campaign Credential Set
member_idnumberThe ID of the Member associated with the Campaign Credential Set
organization_idnumberThe ID of the Organization associated with the Campaign Credential Set's Campaign
global_admin: `true` (boolean) - Flag whether or not the member has global_admin accessstring
campaign_manager: `true` (boolean) - Flag whether or not the member has campaign_manager accessstring
activity_wall: `true` (boolean) - Flag whether or not the member has activity_wall accessstring
reporting_access: `true` (boolean) - Flag whether or not the member has reporting_accessstring
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1001,
  "member_id": 1001,
  "organization_id": 1001,
  "global_admin: `true` (boolean) - Flag whether or not the member has global_admin access": "Hello, world!",
  "campaign_manager: `true` (boolean) - Flag whether or not the member has campaign_manager access": "Hello, world!",
  "activity_wall: `true` (boolean) - Flag whether or not the member has activity_wall access": "Hello, world!",
  "reporting_access: `true` (boolean) - Flag whether or not the member has reporting_access": "Hello, world!"
}

Fetch Organization Credential Set
PUT/organization-credential-sets/{id}

Update an Organization Credential Set by its ID.

Permissions

To request this endpoint you will need a valid access token for a member who is a global admin for the organization.

URI Parameters
HideShow
id
string (required) 

Organization Credential Set ID

Request Body Parameters
NameTypeRequiredDescription
global_admin: `true` (boolean) - Flag whether or not the member has global_admin accessstringOptional
campaign_manager: `true` (boolean) - Flag whether or not the member has campaign_manager accessstringOptional
activity_wall: `true` (boolean) - Flag whether or not the member has activity_wall accessstringOptional
reporting_access: `true` (boolean) - Flag whether or not the member has reporting_accessstringOptional
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "global_admin: `true` (boolean) - Flag whether or not the member has global_admin access": "Hello, world!",
  "campaign_manager: `true` (boolean) - Flag whether or not the member has campaign_manager access": "Hello, world!",
  "activity_wall: `true` (boolean) - Flag whether or not the member has activity_wall access": "Hello, world!",
  "reporting_access: `true` (boolean) - Flag whether or not the member has reporting_access": "Hello, world!"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1001,
  "member_id": 1001,
  "organization_id": 1001,
  "global_admin: `true` (boolean) - Flag whether or not the member has global_admin access": "Hello, world!",
  "campaign_manager: `true` (boolean) - Flag whether or not the member has campaign_manager access": "Hello, world!",
  "activity_wall: `true` (boolean) - Flag whether or not the member has activity_wall access": "Hello, world!",
  "reporting_access: `true` (boolean) - Flag whether or not the member has reporting_access": "Hello, world!"
}

Delete Campaign Credential Set
DELETE/organization-credential-sets/{id}

Delete an Organization Credential Set.

Permissions

To request this endpoint you will need a valid access token for a member who is a global admin for the organization.

URI Parameters
HideShow
id
string (required) 

Organization Credential Set ID

Example response  200
HideShow
Headers
Content-Type: application/json

Member Credential Set

Member Credential Sets.

List a Member's Organization Credential Sets
GET/members/{id}/organization-credential-sets

Retrieve all the Organization Credential Sets a specific Member has.

Permissions

To request this endpoint you will need a valid internal app token or a valid access token for the member requested.

URI Parameters
HideShow
id
string (required) 

The ID of the Member.

Response Body Parameters
NameTypeDescription
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "id": 1001,
      "member_id": 1001,
      "organization_id": 1001,
      "global_admin: `true` (boolean) - Flag whether or not the member has global_admin access": "Hello, world!",
      "campaign_manager: `true` (boolean) - Flag whether or not the member has campaign_manager access": "Hello, world!",
      "activity_wall: `true` (boolean) - Flag whether or not the member has activity_wall access": "Hello, world!",
      "reporting_access: `true` (boolean) - Flag whether or not the member has reporting_access": "Hello, world!"
    }
  ]
}

List a Member's Campaign Credential Sets
GET/members/{id}/campaign-credential-sets

Retrieve all the Campaign Credential Sets a specific Member has.

Permissions

To request this endpoint you will need a valid internal app token or a valid access token for the member requested.

URI Parameters
HideShow
id
string (required) 

The ID of the Member.

Response Body Parameters
NameTypeDescription
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "id": 1001,
      "member_id": 1001,
      "organization_id": 1001,
      "campaign_id": 1001
    }
  ]
}

Donation Dedication

Dedication

When a donation is dedicated to a specific individual, it can trigger a series of actions. An email message, crafted by the donor, is sent to the dedicatee. Use the dedication endpoint to create, retrieve, and update donor dedications.

Fetch a Dedication
GET/dedications/{id}

Retrieve a Dedication by its ID.

Permissions

To request this endpoint you will need a valid access token with permissions to access the reporting of the campaign owning the transaction of this dedication. An access token of the member at the origin of the transaction can also be used.

URI Parameters
HideShow
id
string (required) 

Dedication ID

Response Body Parameters
NameTypeDescription
dataobject
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "id": 12,
    "address": "533 F St",
    "city": "San Diego",
    "country": "US",
    "state": "CA",
    "honoree_name": "Honoree Name",
    "honoree_first_name": "Honoree",
    "honoree_last_name": "Name",
    "ecard_id": 123,
    "ecard_message": "Message added to eCard",
    "is_gift_amount_msg_included": true,
    "name": "John Doe",
    "first_name": "John",
    "last_name": "Doe",
    "postal_code": "92101",
    "transaction_id": 1234,
    "type": "honor"
  }
}

Update a Dedication
PUT/dedications/{id}

Update an existing Dedication.

Permissions

To request this endpoint you will need a valid access token with permissions to access the reporting of the campaign owning the transaction of this dedication. An access token of the member at the origin of the transaction can also be used.

URI Parameters
HideShow
id
string (required) 

Dedication ID

Request Body Parameters
NameTypeRequiredDescription
addressstringOptionalDedication contact address
citystringOptionalDedication contact city
countrystringOptionalDedication contact country (e.g. "US", "CA", "MX", etc.)
statestringOptionalBilling state/province. Required if country is US
honoree_namestringOptionalHonoree's full name
honoree_first_namestringOptionalHonoree's first name. If specified will overwrite honoree_name.
honoree_last_namestringOptionalHonoree's last name. If specified will overwrite honoree_name.
ecard_idnumberOptionalID of eCard assigned to dedication
ecard_messagestringOptionalMessage added to eCard
is_gift_amount_msg_includedbooleanOptionalWhether the gift amount is to be displayed in communication
namestringOptionalDedication contact full name
first_namestringOptionalDedication contact first name. If specified will overwrite name.
last_namestringOptionalDedication contact last name. If specified will overwrite name.
postal_codestringOptionalDedication contact postal code
transaction_idnumberOptionalTransaction that is being dedicated
typestringRequiredDescription of Dedication's purpose (either 'honor' or 'memory').
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "address": "533 F St",
  "city": "San Diego",
  "country": "US",
  "state": "CA",
  "honoree_name": "Honoree Name",
  "honoree_first_name": "Honoree",
  "honoree_last_name": "Name",
  "ecard_id": 123,
  "ecard_message": "Message added to eCard",
  "is_gift_amount_msg_included": true,
  "name": "John Doe",
  "first_name": "John",
  "last_name": "Doe",
  "postal_code": "92101",
  "transaction_id": 1234,
  "type": "honor"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 12,
  "address": "533 F St",
  "city": "San Diego",
  "country": "US",
  "state": "CA",
  "honoree_name": "Honoree Name",
  "honoree_first_name": "Honoree",
  "honoree_last_name": "Name",
  "ecard_id": 123,
  "ecard_message": "Message added to eCard",
  "is_gift_amount_msg_included": true,
  "name": "John Doe",
  "first_name": "John",
  "last_name": "Doe",
  "postal_code": "92101",
  "transaction_id": 1234,
  "type": "honor"
}

Create a Dedication
POST/transactions/{id}/dedications

Create a Dedication.

Add a dedication to a transaction. A transaction may only have one dedication, so this will fail if one exists.

Permissions

To request this endpoint you will need a valid access token with permissions to access the reporting of the campaign owning the transaction of this dedication. An access token of the member at the origin of the transaction can also be used.

URI Parameters
HideShow
id
string (required) 

Transaction ID

Request Body Parameters
NameTypeRequiredDescription
addressstringOptionalDedication contact address
citystringOptionalDedication contact city
countrystringOptionalDedication contact country (e.g. "US", "CA", "MX", etc.)
statestringOptionalBilling state/province. Required if country is US
honoree_namestringOptionalHonoree's full name
honoree_first_namestringOptionalHonoree's first name. If specified will overwrite honoree_name.
honoree_last_namestringOptionalHonoree's last name. If specified will overwrite honoree_name.
ecard_idnumberOptionalID of eCard assigned to dedication
ecard_messagestringOptionalMessage added to eCard
is_gift_amount_msg_includedbooleanOptionalWhether the gift amount is to be displayed in communication
namestringOptionalDedication contact full name
first_namestringOptionalDedication contact first name. If specified will overwrite name.
last_namestringOptionalDedication contact last name. If specified will overwrite name.
postal_codestringOptionalDedication contact postal code
transaction_idnumberOptionalTransaction that is being dedicated
typestringRequiredDescription of Dedication's purpose (either 'honor' or 'memory').
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "address": "533 F St",
  "city": "San Diego",
  "country": "US",
  "state": "CA",
  "honoree_name": "Honoree Name",
  "honoree_first_name": "Honoree",
  "honoree_last_name": "Name",
  "ecard_id": 123,
  "ecard_message": "Message added to eCard",
  "is_gift_amount_msg_included": true,
  "name": "John Doe",
  "first_name": "John",
  "last_name": "Doe",
  "postal_code": "92101",
  "transaction_id": 1234,
  "type": "honor"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 12,
  "address": "533 F St",
  "city": "San Diego",
  "country": "US",
  "state": "CA",
  "honoree_name": "Honoree Name",
  "honoree_first_name": "Honoree",
  "honoree_last_name": "Name",
  "ecard_id": 123,
  "ecard_message": "Message added to eCard",
  "is_gift_amount_msg_included": true,
  "name": "John Doe",
  "first_name": "John",
  "last_name": "Doe",
  "postal_code": "92101",
  "transaction_id": 1234,
  "type": "honor"
}

Designation

Designation

In Classy, a Designation refers to a specific cause the organization campaigns under. Multiple campaigns can benefit the designated project. For example, as a Campaign Manager, I run several Campaigns that champion the same cause. Designations allow me to assign these Campaigns to one Designation. Classy can also retrieve donation metrics for Designations as an aggregation of all Campaigns within a Designation.

A designation’s goal is presented in terms of its organization’s currency code, meaning it can be compared against all normalized values on the organization’s fundraising entities, transactions, recurring donation plans, etc.

All Organizations must have one, and only one, default Designation. The default Designation can’t be deleted. Creating a new Designation, or updating an existing Designation, and setting is_default to true, will unset the is_default property on the Organization’s current default.

Fetch Organization Designations
GET/organizations/{id}/designations

Return a collection of designations belonging to an organization.

URI Parameters
HideShow
id
string (required) 

Organization ID

Response Body Parameters
NameTypeDescription
dataobject
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": {
    "city": "San Diego",
    "created_at": "2016-01-01T12:00:00+0000",
    "description": "My Designation Description",
    "end_time": "2016-01-02T12:00:00+0000",
    "external_reference_id": "my_unique_identifier",
    "goal": 10000,
    "id": 12345,
    "is_active": true,
    "is_complete": false,
    "is_default": true,
    "name": "My Designation Name",
    "organization_id": 123,
    "postal_code": "92101",
    "start_time": "2016-01-01T12:00:00+0000",
    "state": "CA",
    "updated_at": "2016-01-01T12:00:00+0000"
  }
}

Fetch Designation
GET/designations/{id}

Return a specific designation.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the organization settings.

URI Parameters
HideShow
id
string (required) 

Designation ID

Response Body Parameters
NameTypeDescription
citystringThe name of the city associated with the designation.
created_atstringDate designation record was created
descriptionstringA brief description of the designation.
end_timestringThe date/time that the designation ends.
external_reference_idstring
goalnumberThe fundraising goal for the designation.
idnumber
is_activeboolean
is_completeboolean
is_defaultboolean
namestringThe name of the designation, unique to this organization.
organization_idnumberThe ID of the organization the designation belongs to
postal_codestringThe postal code associated with the designation.
start_timestringThe date/time that the designation starts.
statestringA two-letter abbreviation of the state associated with the designation.
updated_atstringDate and time of last update
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "city": "San Diego",
  "created_at": "2016-01-01T12:00:00+0000",
  "description": "My Designation Description",
  "end_time": "2016-01-02T12:00:00+0000",
  "external_reference_id": "my_unique_identifier",
  "goal": 10000,
  "id": 12345,
  "is_active": true,
  "is_complete": false,
  "is_default": true,
  "name": "My Designation Name",
  "organization_id": 123,
  "postal_code": "92101",
  "start_time": "2016-01-01T12:00:00+0000",
  "state": "CA",
  "updated_at": "2016-01-01T12:00:00+0000"
}

Create a Designation
POST/organizations/{id}/designations

Create a new Designation within an Organization.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the organization settings.

NOTE: There can only be one designation per organization where is_default is true - this is the designation associated with the general funds campaign for the organization.

NOTE: Either ‘start_date’ or ‘start_time’ can be used to specify a start time for the designation. If ‘start_date’ is used, the ‘start_time’ in the response will be set to the beginning of the date specified. This also applies for ‘end_date’ and ‘end_time’ - if ‘end_date’ is used, the resulting ‘end_time’ will be the end of the date specified.

URI Parameters
HideShow
id
string (required) 

ID for the Organization to whom this Designation will belong.

Request Body Parameters
NameTypeRequiredDescription
citystringOptionalThe name of the city associated with the designation.
descriptionstringOptionalA brief description of the designation.
end_time: `2016-01-02T12:00:00+0000` (string) - The date/time that the designation ends. Required unless 'is_default' is true.stringOptional
goalnumberOptionalThe fundraising goal for this designation. Required unless 'is_default' is true.
is_active: `true` (boolean) - Can't be set to false if 'is_default' is true for this designation.stringOptional
is_completebooleanOptional
is_defaultbooleanOptionalSpecifies if this is the default designation for this organization. Only one designation per organization can have this be true.
namestringRequiredThe name of the designation, unique to this organization.
postal_codestringOptionalThe postal code associated with the designation.
start_time: `2016-01-01T12:00:00+0000` (string) - The date/time that the designation starts. Required unless 'is_default' is true.stringOptional
statestringOptionalA two-letter abbreviation of the state associated with the designation.
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "city": "San Diego",
  "description": "My Designation Description",
  "end_time: `2016-01-02T12:00:00+0000` (string) - The date/time that the designation ends. Required unless 'is_default' is true.": "Hello, world!",
  "goal": 10000,
  "is_active: `true` (boolean) - Can't be set to false if 'is_default' is true for this designation.": "Hello, world!",
  "is_complete": false,
  "is_default": true,
  "name": "My Designation Name",
  "postal_code": "92101",
  "start_time: `2016-01-01T12:00:00+0000` (string) - The date/time that the designation starts. Required unless 'is_default' is true.": "Hello, world!",
  "state": "CA"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "city": "San Diego",
  "created_at": "2016-01-01T12:00:00+0000",
  "description": "My Designation Description",
  "end_time": "2016-01-02T12:00:00+0000",
  "external_reference_id": "my_unique_identifier",
  "goal": 10000,
  "id": 12345,
  "is_active": true,
  "is_complete": false,
  "is_default": true,
  "name": "My Designation Name",
  "organization_id": 123,
  "postal_code": "92101",
  "start_time": "2016-01-01T12:00:00+0000",
  "state": "CA",
  "updated_at": "2016-01-01T12:00:00+0000"
}

Update a Designation
PUT/designations/{id}

Update an existing Designation.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the organization settings the designation belongs to.

URI Parameters
HideShow
id
string (required) 

Designation ID

Request Body Parameters
NameTypeRequiredDescription
citystringOptionalThe name of the city associated with the designation.
descriptionstringOptionalA brief description of the designation.
end_time: `2016-01-02T12:00:00+0000` (string) - The date/time that the designation ends. Required unless 'is_default' is true.stringOptional
goalnumberOptionalThe fundraising goal for this designation. Required unless 'is_default' is true.
is_active: `true` (boolean) - Can't be set to false if 'is_default' is true for this designation.stringOptional
is_completebooleanOptional
is_defaultbooleanOptionalSpecifies if this is the default designation for this organization. Only one designation per organization can have this be true.
namestringRequiredThe name of the designation, unique to this organization.
postal_codestringOptionalThe postal code associated with the designation.
start_time: `2016-01-01T12:00:00+0000` (string) - The date/time that the designation starts. Required unless 'is_default' is true.stringOptional
statestringOptionalA two-letter abbreviation of the state associated with the designation.
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "city": "San Diego",
  "description": "My Designation Description",
  "end_time: `2016-01-02T12:00:00+0000` (string) - The date/time that the designation ends. Required unless 'is_default' is true.": "Hello, world!",
  "goal": 10000,
  "is_active: `true` (boolean) - Can't be set to false if 'is_default' is true for this designation.": "Hello, world!",
  "is_complete": false,
  "is_default": true,
  "name": "My Designation Name",
  "postal_code": "92101",
  "start_time: `2016-01-01T12:00:00+0000` (string) - The date/time that the designation starts. Required unless 'is_default' is true.": "Hello, world!",
  "state": "CA"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "city": "San Diego",
  "created_at": "2016-01-01T12:00:00+0000",
  "description": "My Designation Description",
  "end_time": "2016-01-02T12:00:00+0000",
  "external_reference_id": "my_unique_identifier",
  "goal": 10000,
  "id": 12345,
  "is_active": true,
  "is_complete": false,
  "is_default": true,
  "name": "My Designation Name",
  "organization_id": 123,
  "postal_code": "92101",
  "start_time": "2016-01-01T12:00:00+0000",
  "state": "CA",
  "updated_at": "2016-01-01T12:00:00+0000"
}

Delete Designation
DELETE/designations/{id}

Delete an existing Designation. You cannot delete the designation if it is the default designation for an organization or a campaign.

Permissions

To request this endpoint you will need to be an Organization Admin for the organization which the designation belongs to.

URI Parameters
HideShow
id
string (required) 

Designation ID

Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "city": "San Diego",
  "created_at": "2016-01-01T12:00:00+0000",
  "description": "My Designation Description",
  "end_time": "2016-01-02T12:00:00+0000",
  "external_reference_id": "my_unique_identifier",
  "goal": 10000,
  "id": 12345,
  "is_active": true,
  "is_complete": false,
  "is_default": true,
  "name": "My Designation Name",
  "organization_id": 123,
  "postal_code": "92101",
  "start_time": "2016-01-01T12:00:00+0000",
  "state": "CA",
  "updated_at": "2016-01-01T12:00:00+0000"
}

DomainSlug

DomainSlug

A DomainSlug is a value used to shorten a URL by referencing a domain and a fundraising entity.

Create Organization DomainSlug
POST/organizations/{id}/domain-slugs

Create a domain slug that reference an organization.

Permissions

You will need a valid access token to request this endpoint. The caller must be an admin for the organization.

URI Parameters
HideShow
id
string (required) 

Organization ID

Request Body Parameters
NameTypeRequiredDescription
valuestringRequiredThe value of the slug.
links_to_donation_pagebooleanOptionalAn indicator whether the slug links directly to the fundraising entity's page or the fundraising entity's donation page
domain_idnumberOptionalThe ID of the domain that the slug will belong to. The domain must be associated with the same organization referenced in the endpoint
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "value": "general",
  "links_to_donation_page": true,
  "domain_id": 332
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1,
  "domain_id": 332,
  "fundraising_entity_id": 24736,
  "fundraising_entity_type": "campaign",
  "value": "turkeytrot",
  "links_to_donation_page": "false",
  "created_at": "2016-03-31T15:24:06+0000",
  "updated_at": "2016-03-31T15:24:06+0000",
  "deleted_at": "null"
}

List Organization DomainSlugs
GET/organizations/{id}/domain-slugs{?scope}

Retrieve a list of all domain slugs that reference an organization.

Permissions

You will need a valid access token to request this endpoint. The caller must be allowed to manage the Organization.

URI Parameters
HideShow
id
string (required) 

Organization ID

scope
string (optional) Example: recursive

If unset, only slugs directly referencing the Organization will be returned.

When scope value is “recursive”, this endpoint will not only return the Organization slugs, but also all the slugs belonging to a fundraising entity (Fundraising Page, Fundraising Team, Campaign) of the Organization.

Response Body Parameters
NameTypeDescription
totalnumberNumber of DomainSlugs associated with the Organization.
per_pagenumberNumber of DomainSlugs returned per page.
current_pagenumberCurrent page number.
last_pagenumberNumber of the last page.
next_page_urlstringendpoint to request to get the content of the next page.
prev_page_urlstringendpoint to request to get the content of the previous page.
fromnumbernumber of the first record of the current page.
tonumbernumber of the last record of the current page.
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "total": 31,
  "per_page": 10,
  "current_page": 2,
  "last_page": 3,
  "next_page_url": "https://api.classy.org/2.0/organizations/1234/domain-slugs?page=3",
  "prev_page_url": "https://api.classy.org/2.0/organizations/1234/domain-slugs?page=1",
  "from": 10,
  "to": 19,
  "data": [
    {
      "id": 1,
      "domain_id": 332,
      "fundraising_entity_id": 24736,
      "fundraising_entity_type": "campaign",
      "value": "turkeytrot",
      "links_to_donation_page": "false",
      "created_at": "2016-03-31T15:24:06+0000",
      "updated_at": "2016-03-31T15:24:06+0000",
      "deleted_at": "null"
    }
  ]
}

List Campaign DomainSlugs
GET/campaigns/{id}/domain-slugs{?scope}

Retrieve a list of all domain slugs that reference a campaign.

Permissions

You will need a valid access token to request this endpoint. The caller must be an admin for the campaign.

URI Parameters
HideShow
id
string (required) 

Campaign ID

scope
string (optional) Example: recursive

If unset, only slugs directly referencing the Campaign will be returned.

When scope value is “recursive”, this endpoint will not only return the Campaign slugs, but also all the slugs belonging to a fundraising entity (Fundraising Page, Fundraising Team) of the Campaign.

Response Body Parameters
NameTypeDescription
totalnumberNumber of DomainSlugs associated with the Campaign.
per_pagenumberNumber of DomainSlugs returned per page.
current_pagenumberCurrent page number.
last_pagenumberNumber of the last page.
next_page_urlstringendpoint to request to get the content of the next page.
prev_page_urlstringendpoint to request to get the content of the previous page.
fromnumbernumber of the first record of the current page.
tonumbernumber of the last record of the current page.
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "total": 31,
  "per_page": 10,
  "current_page": 2,
  "last_page": 3,
  "next_page_url": "https://api.classy.org/2.0/campaigns/1234/domain-slugs?page=3",
  "prev_page_url": "https://api.classy.org/2.0/campaigns/1234/domain-slugs?page=1",
  "from": 10,
  "to": 19,
  "data": [
    {
      "id": 1,
      "domain_id": 332,
      "fundraising_entity_id": 24736,
      "fundraising_entity_type": "campaign",
      "value": "turkeytrot",
      "links_to_donation_page": "false",
      "created_at": "2016-03-31T15:24:06+0000",
      "updated_at": "2016-03-31T15:24:06+0000",
      "deleted_at": "null"
    }
  ]
}

Create Campaign DomainSlug
POST/campaigns/{id}/domain-slugs

Create a domain slug that references the specified campaign.

Permissions

You will need a valid access token to request this endpoint. The caller must be an admin for the campaign.

URI Parameters
HideShow
id
string (required) 

Campaign ID

Request Body Parameters
NameTypeRequiredDescription
valuestringRequiredThe value of the slug.
links_to_donation_pagebooleanOptionalAn indicator whether the slug links directly to the fundraising entity's page or the fundraising entity's donation page
domain_idnumberOptionalThe ID of the domain that the slug will belong to. The domain must be associated with the same organization referenced in the endpoint
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "value": "general",
  "links_to_donation_page": true,
  "domain_id": 332
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1,
  "domain_id": 332,
  "fundraising_entity_id": 24736,
  "fundraising_entity_type": "campaign",
  "value": "turkeytrot",
  "links_to_donation_page": "false",
  "created_at": "2016-03-31T15:24:06+0000",
  "updated_at": "2016-03-31T15:24:06+0000",
  "deleted_at": "null"
}

List FundraisingTeam DomainSlugs
GET/fundraising-teams/{id}/domain-slugs

Retrieve a list of all domain slugs that reference a fundraising team.

Permissions

You will need a valid access token to request this endpoint. The caller must be an admin for the fundraising team.

URI Parameters
HideShow
id
string (required) 

FundraisingTeam ID

Response Body Parameters
NameTypeDescription
totalnumberNumber of DomainSlugs associated with the Fundraising Team.
per_pagenumberNumber of DomainSlugs returned per page.
current_pagenumberCurrent page number.
last_pagenumberNumber of the last page.
next_page_urlstringendpoint to request to get the content of the next page.
prev_page_urlstringendpoint to request to get the content of the previous page.
fromnumbernumber of the first record of the current page.
tonumbernumber of the last record of the current page.
dataarray
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "value": "general",
  "links_to_donation_page": true,
  "domain_id": 332
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "total": 31,
  "per_page": 10,
  "current_page": 2,
  "last_page": 3,
  "next_page_url": "https://api.classy.org/2.0/fundraising-teams/1234/domain-slugs?page=3",
  "prev_page_url": "https://api.classy.org/2.0/fundraising-teams/1234/domain-slugs?page=1",
  "from": 10,
  "to": 19,
  "data": [
    {
      "id": 1,
      "domain_id": 332,
      "fundraising_entity_id": 24736,
      "fundraising_entity_type": "campaign",
      "value": "turkeytrot",
      "links_to_donation_page": "false",
      "created_at": "2016-03-31T15:24:06+0000",
      "updated_at": "2016-03-31T15:24:06+0000",
      "deleted_at": "null"
    }
  ]
}

Create FundraisingTeam DomainSlug
POST/fundraising-teams/{id}/domain-slugs

Create a domain slug that references the specified fundraising team.

Permissions

You will need a valid access token to request this endpoint. The caller must be an admin for the fundraising team.

URI Parameters
HideShow
id
string (required) 

FundraisingTeam ID

Request Body Parameters
NameTypeRequiredDescription
valuestringRequiredThe value of the slug.
links_to_donation_pagebooleanOptionalAn indicator whether the slug links directly to the fundraising entity's page or the fundraising entity's donation page
domain_idnumberOptionalThe ID of the domain that the slug will belong to. The domain must be associated with the same organization referenced in the endpoint
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "value": "general",
  "links_to_donation_page": true,
  "domain_id": 332
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1,
  "domain_id": 332,
  "fundraising_entity_id": 24736,
  "fundraising_entity_type": "campaign",
  "value": "turkeytrot",
  "links_to_donation_page": "false",
  "created_at": "2016-03-31T15:24:06+0000",
  "updated_at": "2016-03-31T15:24:06+0000",
  "deleted_at": "null"
}

List FundraisingPage DomainSlugs
GET/fundraising-pages/{id}/domain-slugs

Retrieve a list of all domain slugs that reference a fundraising page.

Permissions

You will need a valid access token to request this endpoint. The caller must be an admin for the fundraising page.

URI Parameters
HideShow
id
string (required) 

FundraisingPage ID

Response Body Parameters
NameTypeDescription
totalnumberNumber of DomainSlugs associated with the Fundraising Page.
per_pagenumberNumber of DomainSlugs returned per page.
current_pagenumberCurrent page number.
last_pagenumberNumber of the last page.
next_page_urlstringendpoint to request to get the content of the next page.
prev_page_urlstringendpoint to request to get the content of the previous page.
fromnumbernumber of the first record of the current page.
tonumbernumber of the last record of the current page.
dataarray
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "value": "general",
  "links_to_donation_page": true,
  "domain_id": 332
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "total": 31,
  "per_page": 10,
  "current_page": 2,
  "last_page": 3,
  "next_page_url": "https://api.classy.org/2.0/fundraising-pages/1234/domain-slugs?page=3",
  "prev_page_url": "https://api.classy.org/2.0/fundraising-pages/1234/domain-slugs?page=1",
  "from": 10,
  "to": 19,
  "data": [
    {
      "id": 1,
      "domain_id": 332,
      "fundraising_entity_id": 24736,
      "fundraising_entity_type": "campaign",
      "value": "turkeytrot",
      "links_to_donation_page": "false",
      "created_at": "2016-03-31T15:24:06+0000",
      "updated_at": "2016-03-31T15:24:06+0000",
      "deleted_at": "null"
    }
  ]
}

Create FundraisingPage DomainSlug
POST/fundraising-pages/{id}/domain-slugs

Create a domain slug that references the specified fundraising page.

Permissions

You will need a valid access token to request this endpoint. The caller must be an admin for the fundraising page.

URI Parameters
HideShow
id
string (required) 

FundraisingPage ID

Request Body Parameters
NameTypeRequiredDescription
valuestringRequiredThe value of the slug.
links_to_donation_pagebooleanOptionalAn indicator whether the slug links directly to the fundraising entity's page or the fundraising entity's donation page
domain_idnumberOptionalThe ID of the domain that the slug will belong to. The domain must be associated with the same organization referenced in the endpoint
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "value": "general",
  "links_to_donation_page": true,
  "domain_id": 332
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1,
  "domain_id": 332,
  "fundraising_entity_id": 24736,
  "fundraising_entity_type": "campaign",
  "value": "turkeytrot",
  "links_to_donation_page": "false",
  "created_at": "2016-03-31T15:24:06+0000",
  "updated_at": "2016-03-31T15:24:06+0000",
  "deleted_at": "null"
}

Show DomainSlug
GET/domain-slugs/{id}

Show an existing domain slug.

Permissions

You will need a valid access token to request this endpoint. The caller must be an admin for the domain slug’s associated fundraising entity.

URI Parameters
HideShow
id
string (required) 

DomainSlug ID

Response Body Parameters
NameTypeDescription
idnumberThe ID of the DomainSlug
domain_idnumberThe ID of the Domain associated with the DomainSlug
fundraising_entity_idnumberThe ID of the fundraising entity associated with the DomainSlug
fundraising_entity_typestringThe morph string associated with the class of the DomainSlug's fundraising entity
valuestringThe value of the domain slug
links_to_donation_pagestringA boolean indicating if the slug should reference the donation page for the DomainSlug's fundraising entity
created_atstringThe timestamp of the time the DomainSlug was created
updated_atstringThe timestamp of the last time the DomainSlug was updated
deleted_atstringThe timestamp of the time the DomainSlug was deleted (null in most cases)
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1,
  "domain_id": 332,
  "fundraising_entity_id": 24736,
  "fundraising_entity_type": "campaign",
  "value": "turkeytrot",
  "links_to_donation_page": "false",
  "created_at": "2016-03-31T15:24:06+0000",
  "updated_at": "2016-03-31T15:24:06+0000",
  "deleted_at": "null"
}

Update DomainSlug
PUT/domain-slugs/{id}

Update an existing domain slug.

Permissions

You will need a valid access token to request this endpoint. The caller must be an admin for the domain slug’s associated fundraising entity.

URI Parameters
HideShow
id
string (required) 

DomainSlug ID

Request Body Parameters
NameTypeRequiredDescription
valuestringRequiredThe value of the slug.
links_to_donation_pagebooleanOptionalAn indicator whether the slug links directly to the fundraising entity's page or the fundraising entity's donation page
fundraising_entity_idnumberOptionalThe ID of the fundraising entity associated with the DomainSlug
fundraising_entity_typestringOptionalThe morph string associated with the class of the DomainSlug's fundraising entity
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "value": "general",
  "links_to_donation_page": true,
  "fundraising_entity_id": 24736,
  "fundraising_entity_type": "campaign"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1,
  "domain_id": 332,
  "fundraising_entity_id": 24736,
  "fundraising_entity_type": "campaign",
  "value": "turkeytrot",
  "links_to_donation_page": "false",
  "created_at": "2016-03-31T15:24:06+0000",
  "updated_at": "2016-03-31T15:24:06+0000",
  "deleted_at": "null"
}

Delete DomainSlug
DELETE/domain-slugs/{id}

Delete an existing domain slug.

Permissions

You will need a valid access token to request this endpoint. The caller must be an admin for the domain slug’s associated fundraising entity.

URI Parameters
HideShow
id
string (required) 

DomainSlug ID

Example response  200
HideShow
Headers
Content-Type: application/json

Check DomainSlug
GET/domain-slugs/availability-check/{slug_value}

Check if a domain slug exists with the specified value (optionally for the specified domain).

Permissions

You will need a valid access token to request this endpoint. The caller must be an admin for the domain slug’s associated fundraising entity.

URI Parameters
HideShow
slug_value
string (required) 

The value of the slug.

Response Body Parameters
NameTypeDescription
resultbooleanThe answer to the specified query.
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "domain_id": 332
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "result": true
}

Donation Matcher

Donation Matcher

Donation Matchers are external organizations who match donations made through the Classy platform. When a user makes a donation, they can indicate a Donation Matcher as their employer in order to specify who will match their donation.

Fetch Donation Matchers
GET/donation-matchers

Retrieves an array of Donation Matcher names.

Permissions

You will need a valid access token to request this endpoint.

Response Body Parameters
NameTypeDescription
data
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": []
}

Donation Matching Plan

Donation Matching Plan

Donation matching occurs when a Sponsor - company or individual - agrees to match your campaign donations for a specific time period and/or up to a certain limit.

A sponsor commitment to match your campaign donations is represented by a DonationMatchingPlan object.

When a donation comes in and several Donation Matching Plans can match it, one plan is randomly selected.

Create a Donation Matching Plan

Create a Donation Matching Plan
POST/campaigns/{id}/donation-matching-plans

Create a new Donation Matching Plan.

Permissions

You will need a valid access token to request this endpoint with permissions to manage the Campaign the Plan is attached to.

URI Parameters
HideShow
id
string (required) 

Campaign ID the plan will be attached to.

Request Body Parameters
NameTypeRequiredDescription
asset_idnumberOptionalSponsor thumbnail asset ID. Will be displayed in feed items.
business_namestringRequiredName of the sponsor. Will be displayed in feed items when matching donations.
currency_codestringOptionalCurrency in which the Donation Matching Plan matches donations. If unset, will default to the Campaign currency this plan is for.
ended_atstringOptionalDatetime before which donations are matched by this plan.
matching_limit_amountstringRequiredTotal amount in the Donation Matching Plan currency the sponsor is willing to match. 0 means unlimited.
started_atstringRequiredDatetime after which donations are matched by this plan.
timezone_identifierstringRequiredSponsor timezone.
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "asset_id": 203987,
  "business_name": "A generous Sponsor",
  "currency_code": "USD",
  "ended_at": "2017-12-01T12:00:00+0000",
  "matching_limit_amount": "5000",
  "started_at": "2017-01-01T12:00:00+0000",
  "timezone_identifier": "Europe/Paris"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 123,
  "asset_id": 203987,
  "business_name": "A generous Sponsor",
  "campaign_id": "456",
  "created_at": "2017-12-01T12:00:00+0000",
  "currency_code": "USD",
  "ended_at": "2017-12-01T12:00:00+0000",
  "matched_amount": "4200",
  "matching_limit_amount": "5000",
  "started_at": "2017-01-01T12:00:00+0000",
  "timezone_identifier": "Europe/Paris",
  "updated_at": "2017-12-01T12:00:00+0000"
}

List a Campaign Donation Matching Plans

List a Campaign Donation Matching Plans
GET/campaigns/{id}/donation-matching-plans

List Donation Matching Plans attached to a given campaign.

Permissions

You will need a valid access token to request this endpoint with permissions to manage the Campaign.

URI Parameters
HideShow
id
string (required) 

Campaign ID.

Response Body Parameters
NameTypeDescription
totalnumbernumber records.
per_pagenumbernumber of records returned per page.
current_pagenumbercurrent page number.
last_pagenumbernumber of the last page.
next_page_urlstringendpoint to request to get the content of the next page.
prev_page_urlstringendpoint to request to get the content of the previous page.
fromnumbernumber of the first record of the current page.
tonumbernumber of the last record of the current page.
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "total": 31,
  "per_page": 10,
  "current_page": 2,
  "last_page": 3,
  "next_page_url": "https://api.classy.org/2.0/endpoint?page=3",
  "prev_page_url": "https://api.classy.org/2.0/endpoint?page=1",
  "from": 10,
  "to": 19,
  "data": [
    {
      "id": 123,
      "asset_id": 203987,
      "business_name": "A generous Sponsor",
      "campaign_id": "456",
      "created_at": "2017-12-01T12:00:00+0000",
      "currency_code": "USD",
      "ended_at": "2017-12-01T12:00:00+0000",
      "matched_amount": "4200",
      "matching_limit_amount": "5000",
      "started_at": "2017-01-01T12:00:00+0000",
      "timezone_identifier": "Europe/Paris",
      "updated_at": "2017-12-01T12:00:00+0000"
    }
  ]
}

Fetch a Donation Matching Plan

Fetch a Donation Matching Plan
GET/donation-matching-plans/{id}

Retrieve a Donation Matching Plan by its ID.

Permissions

You will need a valid access token to request this endpoint with permissions to manage the Campaign the Plan is attached to.

URI Parameters
HideShow
id
string (required) 

Donation Matching Plan ID

Response Body Parameters
NameTypeDescription
idnumberID of the Donation Matching Plan.
asset_idnumberSponsor thumbnail asset ID. Will be displayed in feed items.
business_namestringName of the sponsor. Will be displayed in feed items when matching donations.
campaign_idstringID of the Campaign the plan is configured for.
created_atstringPlan creation date.
currency_codestringCurrency in which the Donation Matching Plan matches donations.
ended_atstringDatetime before which donations are matched by this plan.
matched_amountstringTotal amount the sponsor has currently matched, in the currency of the Donation Matching Plan.
matching_limit_amountstringTotal amount in the Donation Matching Plan currency the sponsor is willing to match. 0 means unlimited.
started_atstringDatetime after which donations are matched by this plan.
timezone_identifierstringSponsor timezone.
updated_atstringPlan last update date.
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 123,
  "asset_id": 203987,
  "business_name": "A generous Sponsor",
  "campaign_id": "456",
  "created_at": "2017-12-01T12:00:00+0000",
  "currency_code": "USD",
  "ended_at": "2017-12-01T12:00:00+0000",
  "matched_amount": "4200",
  "matching_limit_amount": "5000",
  "started_at": "2017-01-01T12:00:00+0000",
  "timezone_identifier": "Europe/Paris",
  "updated_at": "2017-12-01T12:00:00+0000"
}

Update a Donation Matching Plan

Update a Donation Matching Plan
PUT/donation-matching-plans/{id}

Update an existing Donation Matching Plan.

Permissions

You will need a valid access token to request this endpoint with permissions to manage the Campaign the Plan is attached to.

URI Parameters
HideShow
id
string (required) 

Donation Matching Plan ID

Request Body Parameters
NameTypeRequiredDescription
asset_idnumberOptionalSponsor thumbnail asset ID. Will be displayed in feed items.
business_namestringRequiredName of the sponsor. Will be displayed in feed items when matching donations.
ended_atstringOptionalDatetime before which donations are matched by this plan.
matching_limit_amountstringRequiredTotal amount in the Donation Matching Plan currency the sponsor is willing to match. 0 means unlimited.
started_atstringRequiredDatetime after which donations are matched by this plan.
timezone_identifierstringRequiredSponsor timezone.
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "asset_id": 203987,
  "business_name": "A generous Sponsor",
  "ended_at": "2017-12-01T12:00:00+0000",
  "matching_limit_amount": "5000",
  "started_at": "2017-01-01T12:00:00+0000",
  "timezone_identifier": "Europe/Paris"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 123,
  "asset_id": 203987,
  "business_name": "A generous Sponsor",
  "campaign_id": "456",
  "created_at": "2017-12-01T12:00:00+0000",
  "currency_code": "USD",
  "ended_at": "2017-12-01T12:00:00+0000",
  "matched_amount": "4200",
  "matching_limit_amount": "5000",
  "started_at": "2017-01-01T12:00:00+0000",
  "timezone_identifier": "Europe/Paris",
  "updated_at": "2017-12-01T12:00:00+0000"
}

eCard

eCard

Donors can send an eCard dedication along with their donation. Currently, a single campaign can support a maximum of 4 eCards. eCards are 600 pixels wide by 400 pixels tall and uploaded by the organization.

Create Campaign eCard
POST/campaigns/{id}/ecards

Create an eCard for the specified campaign.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign.

NOTE: Either asset_id or image_url must be set.

URI Parameters
HideShow
id
string (required) 

The ID of the desired Campaign.

Request Body Parameters
NameTypeRequiredDescription
asset_idnumberOptionalThe ID of the image file asset associated with this eCard.
image_urlstringOptionalPublic URL for the eCard image.
ordernumberOptionalDisplay order for listings. Impacts display in Classy.org.
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "asset_id": 101,
  "image_url": "https://classy-assets.classy.org/1-54asdfa34.png",
  "order": 1
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "asset_id": 101,
  "campaign_id": 1001,
  "image_url": "https://classy-assets.classy.org/1-54asdfa34.png",
  "order": 1
}

Fetch Campaign eCards
GET/campaigns/{id}/ecards

Permissions

You will need a valid access token to request this endpoint.

URI Parameters
HideShow
id
string (required) 

The ID of the desired Campaign.

Response Body Parameters
NameTypeDescription
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "asset_id": 101,
      "campaign_id": 1001,
      "image_url": "https://classy-assets.classy.org/1-54asdfa34.png",
      "order": 1
    }
  ]
}

Retrieve an eCard
GET/eCards/{id}

Retrieves the eCard with the given ID.

Permissions

You will need a valid access token to request this endpoint.

URI Parameters
HideShow
id
string (required) 

The ID of the desired coupon.

Response Body Parameters
NameTypeDescription
asset_idnumberThe ID of the image file asset associated with this eCard.
campaign_idnumberThe ID of the Campaign to which this eCard belongs.
image_urlstringPublic URL for the eCard image.
ordernumberDisplay order for listings. Impacts display in Classy.org.
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "asset_id": 101,
  "campaign_id": 1001,
  "image_url": "https://classy-assets.classy.org/1-54asdfa34.png",
  "order": 1
}

Update an eCard
PUT/eCards/{id}

Update an existing eCard.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign the ecard belongs to.

NOTE: Either asset_id or image_url must be set.

URI Parameters
HideShow
id
string (required) 

The ID of the desired eCard.

Request Body Parameters
NameTypeRequiredDescription
asset_idnumberOptionalThe ID of the image file asset associated with this eCard.
image_urlstringOptionalPublic URL for the eCard image.
ordernumberOptionalDisplay order for listings. Impacts display in Classy.org.
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "asset_id": 101,
  "image_url": "https://classy-assets.classy.org/1-54asdfa34.png",
  "order": 1
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "asset_id": 101,
  "campaign_id": 1001,
  "image_url": "https://classy-assets.classy.org/1-54asdfa34.png",
  "order": 1
}

Delete an eCard
DELETE/eCards/{id}

Deletes the eCard with the given ID.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign the ecard belongs to.

URI Parameters
HideShow
id
string (required) 

The ID of the desired coupon.

Example response  200
HideShow
Headers
Content-Type: application/json

FAQ

FAQ

Organizations can add custom FAQs to their campaign’s donation page. There is only one FAQ by default: the Tax Deduction status of the transaction. Organizations have the ability to create as many additional FAQs as they want.

Create Campaign FAQ
POST/campaigns/{id}/faqs

Create an FAQ for the specified campaign.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign.

URI Parameters
HideShow
id
string (required) 

The ID of the desired Campaign.

Request Body Parameters
NameTypeRequiredDescription
questionstringOptionalThe text of the FAQ question
answerstringOptionalThe text of the FAQ answer
tagstringOptional
weightnumberOptionalPriority for sorting
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "question": "FAQ Body",
  "answer": "FAQ Answer Body",
  "tag": "other",
  "weight": 1
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1,
  "campaign_id": 101,
  "organization_id": 1001,
  "question": "FAQ Body",
  "answer": "FAQ Answer Body",
  "tag": "other",
  "weight": 1
}

Fetch Campaign FAQs
GET/campaigns/{id}/faqs

Permissions

You will need a valid access token to request this endpoint.

URI Parameters
HideShow
id
string (required) 

The ID of the desired Campaign.

Response Body Parameters
NameTypeDescription
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "id": 1,
      "campaign_id": 101,
      "organization_id": 1001,
      "question": "FAQ Body",
      "answer": "FAQ Answer Body",
      "tag": "other",
      "weight": 1
    }
  ]
}

Retrieve an FAQ
GET/faqs/{id}

Retrieves the FAQ with the given ID.

Permissions

You will need a valid access token to request this endpoint.

URI Parameters
HideShow
id
string (required) 

The ID of the desired FAQ.

Response Body Parameters
NameTypeDescription
idnumberUnique ID
campaign_idnumberID of campaign the FAQ belongs to
organization_idnumberID of the organization the FAQ belongs to
questionstringThe text of the FAQ question
answerstringThe text of the FAQ answer
tagstring
weightnumberPriority for sorting
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1,
  "campaign_id": 101,
  "organization_id": 1001,
  "question": "FAQ Body",
  "answer": "FAQ Answer Body",
  "tag": "other",
  "weight": 1
}

Update an FAQ
PUT/faqs/{id}

Update an existing FAQ.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign the FAQ belongs to.

URI Parameters
HideShow
id
string (required) 

The ID of the desired FAQ.

Request Body Parameters
NameTypeRequiredDescription
questionstringOptionalThe text of the FAQ question
answerstringOptionalThe text of the FAQ answer
tagstringOptional
weightnumberOptionalPriority for sorting
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "question": "FAQ Body",
  "answer": "FAQ Answer Body",
  "tag": "other",
  "weight": 1
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1,
  "campaign_id": 101,
  "organization_id": 1001,
  "question": "FAQ Body",
  "answer": "FAQ Answer Body",
  "tag": "other",
  "weight": 1
}

Delete an FAQ
DELETE/faqs/{id}

Delete an existing FAQ.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign the FAQ belongs to.

URI Parameters
HideShow
id
string (required) 

The ID of the desired FAQ.

Example response  200
HideShow
Headers
Content-Type: application/json

Fundraising Pages

Fundraising Pages

Fundraising pages have four attributes that relate to Passport functionality: goal, currency_code, raw_goal, and raw_currency_code.

The raw_goal of a fundraising page indicates the amount in the currency specified by raw_currency_code that the fundraising page is hoping to raise. The fundraising page’s page will display progress in terms of the raw_currency_code. A fundraising page’s raw_currency_code can be set independently from that of the fundraising page’s associated campaign or fundraising team.

The goal of a fundraising page indicates the amount of the raw_goal when normalized into the organization-level currency code (specified by currency_code). Normalization occurs whenever a fundraising page’s raw_goal is updated and will use the conversion rate from raw_currency_code to currency_code at the time the update occurs. If the raw_currency_code and currency_code of a fundraising page differ through previous or pending updates, the fundraising page’s goal cannot be set manually - raw_goal must be specified instead.

The currency_code attribute is directly inherited from the fundraising page’s organization and cannot be changed. All of an organization’s fundraising entities (e.g. campaigns, fundraising teams, and fundraising pages) share the same inherited currency_code, allowing their relative amounts to be compared on a standardized basis.

List Campaign Fundraising Pages
GET/campaigns/{id}/fundraising-pages{?with}

Retrieves the Fundraising Pages associated with the specified Campaign.

Permissions

You will need a valid access token to request this endpoint. The caller must be an admin for the specified campaign.

URI Parameters
HideShow
id
number (required) 

The ID of the desired Campaign.

with
string (optional) 
  • fundraising_team

  • member

  • supporter

  • logo

  • cover_photo

Response Body Parameters
NameTypeDescription
totalnumberNumber of Fundraising Pages associated with the Fundraising Team.
per_pagenumberNumber of Fundraising Pages returned per page.
current_pagenumberCurrent page number.
last_pagenumberNumber of the last page.
next_page_urlstringendpoint to request to get the content of the next page.
prev_page_urlstringendpoint to request to get the content of the previous page.
fromnumbernumber of the first record of the current page.
tonumbernumber of the last record of the current page.
dataarray
Example request
HideShow
Headers
Authorization: Bearer some-member-or-app-access-token
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "total": 31,
  "per_page": 10,
  "current_page": 2,
  "last_page": 3,
  "next_page_url": "https://api.classy.org/2.0/fundraising-teams/1234/fundraising-pages?page=3",
  "prev_page_url": "https://api.classy.org/2.0/fundraising-teams/1234/fundraising-pages?page=1",
  "from": 10,
  "to": 19,
  "data": [
    {
      "alias": "My Super Awesome page",
      "answers": [
        {
          "id": 1,
          "member_id": 100,
          "question_id": 1000,
          "created_at": "2016-01-01T12:00:00+0000",
          "campaign_id": 432,
          "answer": "example answer text",
          "answerable_id": 123,
          "answerable_type": "fundraising_team"
        }
      ],
      "campaign_id": 101,
      "commitment": 100,
      "canonical_url": "/fundraiser/24",
      "cover_photo": {
        "id": 29487,
        "parent_id": 29486,
        "created_by": 387943,
        "state": "pending",
        "cdn_url": "https://cdn.classy.org/PECVc2gPjYdF.jpg",
        "content_type": "image/jpeg",
        "size": 278923,
        "created_at": "2016-03-31T22:49:18+0000"
      },
      "created_at": "2016-01-01T12:00:00+0000",
      "currency_code": "USD",
      "designation_id": 1001,
      "ended_at": "2016-01-02T12:00:00+0000",
      "fundraising_team_id": 10001,
      "goal": 108.23,
      "id": 1,
      "intro_text": "Thanks for visiting my fundraising page!<br>",
      "is_primary": true,
      "logo_id": 1002,
      "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
      "member_email_text": "<p>My email body</p>",
      "member_id": 100001,
      "organization_id": 10,
      "parent_id": 1,
      "raw_currency_code": "EUR",
      "raw_goal": 100,
      "started_at": "2016-01-01T12:00:00+0000",
      "status": "active",
      "supporter_id": 100001,
      "thankyou_email_text": "<p>My email body</p>",
      "thank_you_text": "Thank You!",
      "title": "My Page Title",
      "total_donors": 0,
      "total_donations": 0,
      "total_raised": 0,
      "average_donation": 0,
      "largest_donation": 0,
      "percent_to_goal": 0
    }
  ]
}

List Fundraising Team Fundraising Pages
GET/fundraising-teams/{id}/fundraising-pages{?with}

Retrieves the Fundraising Pages associated with the specified Fundraising Team.

Permissions

You will need a valid access token to request this endpoint. The caller must be an admin for the campaign associated with the specified fundraising team.

URI Parameters
HideShow
id
number (required) 

The ID of the desired Fundraising Team.

with
string (optional) 
  • fundraising_team

  • member

  • supporter

  • logo

  • cover_photo

Response Body Parameters
NameTypeDescription
totalnumberNumber of Fundraising Pages associated with the Fundraising Team.
per_pagenumberNumber of Fundraising Pages returned per page.
current_pagenumberCurrent page number.
last_pagenumberNumber of the last page.
next_page_urlstringendpoint to request to get the content of the next page.
prev_page_urlstringendpoint to request to get the content of the previous page.
fromnumbernumber of the first record of the current page.
tonumbernumber of the last record of the current page.
dataarray
Example request
HideShow
Headers
Authorization: Bearer some-member-or-app-access-token
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "total": 31,
  "per_page": 10,
  "current_page": 2,
  "last_page": 3,
  "next_page_url": "https://api.classy.org/2.0/fundraising-teams/1234/fundraising-pages?page=3",
  "prev_page_url": "https://api.classy.org/2.0/fundraising-teams/1234/fundraising-pages?page=1",
  "from": 10,
  "to": 19,
  "data": [
    {
      "alias": "My Super Awesome page",
      "answers": [
        {
          "id": 1,
          "member_id": 100,
          "question_id": 1000,
          "created_at": "2016-01-01T12:00:00+0000",
          "campaign_id": 432,
          "answer": "example answer text",
          "answerable_id": 123,
          "answerable_type": "fundraising_team"
        }
      ],
      "campaign_id": 101,
      "commitment": 100,
      "canonical_url": "/fundraiser/24",
      "cover_photo": {
        "id": 29487,
        "parent_id": 29486,
        "created_by": 387943,
        "state": "pending",
        "cdn_url": "https://cdn.classy.org/PECVc2gPjYdF.jpg",
        "content_type": "image/jpeg",
        "size": 278923,
        "created_at": "2016-03-31T22:49:18+0000"
      },
      "created_at": "2016-01-01T12:00:00+0000",
      "currency_code": "USD",
      "designation_id": 1001,
      "ended_at": "2016-01-02T12:00:00+0000",
      "fundraising_team_id": 10001,
      "goal": 108.23,
      "id": 1,
      "intro_text": "Thanks for visiting my fundraising page!<br>",
      "is_primary": true,
      "logo_id": 1002,
      "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
      "member_email_text": "<p>My email body</p>",
      "member_id": 100001,
      "organization_id": 10,
      "parent_id": 1,
      "raw_currency_code": "EUR",
      "raw_goal": 100,
      "started_at": "2016-01-01T12:00:00+0000",
      "status": "active",
      "supporter_id": 100001,
      "thankyou_email_text": "<p>My email body</p>",
      "thank_you_text": "Thank You!",
      "title": "My Page Title",
      "total_donors": 0,
      "total_donations": 0,
      "total_raised": 0,
      "average_donation": 0,
      "largest_donation": 0,
      "percent_to_goal": 0
    }
  ]
}

List Member Fundraising Pages
GET/members/{id}/fundraising-pages{?with}

Fetch all Fundraising Pages associated with this Member.

Permissions

You will need a valid access token to request this endpoint. The caller must be an admin or the specified Member.

URI Parameters
HideShow
id
number (required) 

The ID of the desired Member

with
string (optional) 
  • fundraising_team

  • member

  • supporter

  • logo

  • cover_photo

Response Body Parameters
NameTypeDescription
totalnumberNumber of Fundraising Pages associated with the Fundraising Team.
per_pagenumberNumber of Fundraising Pages returned per page.
current_pagenumberCurrent page number.
last_pagenumberNumber of the last page.
next_page_urlstringendpoint to request to get the content of the next page.
prev_page_urlstringendpoint to request to get the content of the previous page.
fromnumbernumber of the first record of the current page.
tonumbernumber of the last record of the current page.
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "total": 31,
  "per_page": 10,
  "current_page": 2,
  "last_page": 3,
  "next_page_url": "https://api.classy.org/2.0/fundraising-teams/1234/fundraising-pages?page=3",
  "prev_page_url": "https://api.classy.org/2.0/fundraising-teams/1234/fundraising-pages?page=1",
  "from": 10,
  "to": 19,
  "data": [
    {
      "alias": "My Super Awesome page",
      "answers": [
        {
          "id": 1,
          "member_id": 100,
          "question_id": 1000,
          "created_at": "2016-01-01T12:00:00+0000",
          "campaign_id": 432,
          "answer": "example answer text",
          "answerable_id": 123,
          "answerable_type": "fundraising_team"
        }
      ],
      "campaign_id": 101,
      "commitment": 100,
      "canonical_url": "/fundraiser/24",
      "cover_photo": {
        "id": 29487,
        "parent_id": 29486,
        "created_by": 387943,
        "state": "pending",
        "cdn_url": "https://cdn.classy.org/PECVc2gPjYdF.jpg",
        "content_type": "image/jpeg",
        "size": 278923,
        "created_at": "2016-03-31T22:49:18+0000"
      },
      "created_at": "2016-01-01T12:00:00+0000",
      "currency_code": "USD",
      "designation_id": 1001,
      "ended_at": "2016-01-02T12:00:00+0000",
      "fundraising_team_id": 10001,
      "goal": 108.23,
      "id": 1,
      "intro_text": "Thanks for visiting my fundraising page!<br>",
      "is_primary": true,
      "logo_id": 1002,
      "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
      "member_email_text": "<p>My email body</p>",
      "member_id": 100001,
      "organization_id": 10,
      "parent_id": 1,
      "raw_currency_code": "EUR",
      "raw_goal": 100,
      "started_at": "2016-01-01T12:00:00+0000",
      "status": "active",
      "supporter_id": 100001,
      "thankyou_email_text": "<p>My email body</p>",
      "thank_you_text": "Thank You!",
      "title": "My Page Title",
      "total_donors": 0,
      "total_donations": 0,
      "total_raised": 0,
      "average_donation": 0,
      "largest_donation": 0,
      "percent_to_goal": 0
    }
  ]
}

List Organization Fundraising Pages
GET/organizations/{id}/fundraising-pages{?with}

Retrieves the Fundraising Pages associated with the specified Organization.

Permissions

You will need a valid access token to request this endpoint. The caller must be an admin for the specified organization.

URI Parameters
HideShow
id
number (required) 

The ID of the desired Fundraising Team.

with
string (optional) 
  • fundraising_team

  • member

  • supporter

  • logo

  • cover_photo

Response Body Parameters
NameTypeDescription
totalnumberNumber of Fundraising Pages associated with the Fundraising Team.
per_pagenumberNumber of Fundraising Pages returned per page.
current_pagenumberCurrent page number.
last_pagenumberNumber of the last page.
next_page_urlstringendpoint to request to get the content of the next page.
prev_page_urlstringendpoint to request to get the content of the previous page.
fromnumbernumber of the first record of the current page.
tonumbernumber of the last record of the current page.
dataarray
Example request
HideShow
Headers
Authorization: Bearer some-member-or-app-access-token
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "total": 31,
  "per_page": 10,
  "current_page": 2,
  "last_page": 3,
  "next_page_url": "https://api.classy.org/2.0/fundraising-teams/1234/fundraising-pages?page=3",
  "prev_page_url": "https://api.classy.org/2.0/fundraising-teams/1234/fundraising-pages?page=1",
  "from": 10,
  "to": 19,
  "data": [
    {
      "alias": "My Super Awesome page",
      "answers": [
        {
          "id": 1,
          "member_id": 100,
          "question_id": 1000,
          "created_at": "2016-01-01T12:00:00+0000",
          "campaign_id": 432,
          "answer": "example answer text",
          "answerable_id": 123,
          "answerable_type": "fundraising_team"
        }
      ],
      "campaign_id": 101,
      "commitment": 100,
      "canonical_url": "/fundraiser/24",
      "cover_photo": {
        "id": 29487,
        "parent_id": 29486,
        "created_by": 387943,
        "state": "pending",
        "cdn_url": "https://cdn.classy.org/PECVc2gPjYdF.jpg",
        "content_type": "image/jpeg",
        "size": 278923,
        "created_at": "2016-03-31T22:49:18+0000"
      },
      "created_at": "2016-01-01T12:00:00+0000",
      "currency_code": "USD",
      "designation_id": 1001,
      "ended_at": "2016-01-02T12:00:00+0000",
      "fundraising_team_id": 10001,
      "goal": 108.23,
      "id": 1,
      "intro_text": "Thanks for visiting my fundraising page!<br>",
      "is_primary": true,
      "logo_id": 1002,
      "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
      "member_email_text": "<p>My email body</p>",
      "member_id": 100001,
      "organization_id": 10,
      "parent_id": 1,
      "raw_currency_code": "EUR",
      "raw_goal": 100,
      "started_at": "2016-01-01T12:00:00+0000",
      "status": "active",
      "supporter_id": 100001,
      "thankyou_email_text": "<p>My email body</p>",
      "thank_you_text": "Thank You!",
      "title": "My Page Title",
      "total_donors": 0,
      "total_donations": 0,
      "total_raised": 0,
      "average_donation": 0,
      "largest_donation": 0,
      "percent_to_goal": 0
    }
  ]
}

Fetch a Fundraising Page
GET/fundraising-pages/{id}{?with}

Retrieves the Fundraising Page with the given ID.

Permissions

You will need a valid access token to request this endpoint.

URI Parameters
HideShow
id
number (required) 

The ID of the desired Fundraising Page.

with
string (optional) 
  • answers - Fetch answers associated with this fundraising page

  • fundraising_team

  • supporter

  • logo

  • cover_photo

Response Body Parameters
NameTypeDescription
aliasstring
answersarray
campaign_idnumberParent Campaign ID
commitmentnumberCommitment level for this fundraising page. This is the level this Fundraiser is committed to raising.
canonical_urlstringThe canonical url of the Fundraising Page.
cover_photoobjectAsset representing the fundraising page cover photo.
created_atstringDatetime at which the fundraising page was created
currency_codestringISO code of the currency against which this fundraising page is normalized.
designation_idnumberDesignation ID for this campaign (optional)
ended_atstringPage end date (optional). An end date can only be set if the campaign has no end date.
fundraising_team_idnumberFundraising Team ID to whom this page is associated (optional)
goalnumberFundraising goal for this page normalized against 'currency_code'
idnumberFundraising Page ID
intro_textstringHTML Formated string for intro text
is_primarybooleanFlag denoting primary fundraiser for child fundraising pages
logo_idnumberID of asset used as the fundraising team logo.
logo_urlstringURL for logo image. Either hardcoded URL for legacy fundraising pages or interpreted from logo asset specified by logo_id.
member_email_textstringHTML formatted string for member email body
member_idnumberMember ID associated with this page
organization_idnumberOrganization ID
parent_idnumberParent Fundraising Page ID
raw_currency_codestringISO code of the default currency in which this fundraising page should be presented. Defaults to 'currency_code' if not specified.
raw_goalnumberRaw fundraising goal for this page
started_atstringDeprecated
statusstringStatus for this fundraising page
supporter_idnumberSupporter ID associated with the page.
thankyou_email_textstringHTML formatted string for thank you email body
thank_you_textstringDefault thank you text on the thank you page.
titlestringPage title
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "alias": "My Super Awesome page",
  "answers": [
    {
      "id": 1,
      "member_id": 100,
      "question_id": 1000,
      "created_at": "2016-01-01T12:00:00+0000",
      "campaign_id": 432,
      "answer": "example answer text",
      "answerable_id": 123,
      "answerable_type": "fundraising_team"
    }
  ],
  "campaign_id": 101,
  "commitment": 100,
  "canonical_url": "/fundraiser/24",
  "cover_photo": {
    "id": 29487,
    "parent_id": 29486,
    "created_by": 387943,
    "state": "pending",
    "cdn_url": "https://cdn.classy.org/PECVc2gPjYdF.jpg",
    "content_type": "image/jpeg",
    "size": 278923,
    "created_at": "2016-03-31T22:49:18+0000"
  },
  "created_at": "2016-01-01T12:00:00+0000",
  "currency_code": "USD",
  "designation_id": 1001,
  "ended_at": "2016-01-02T12:00:00+0000",
  "fundraising_team_id": 10001,
  "goal": 108.23,
  "id": 1,
  "intro_text": "Thanks for visiting my fundraising page!<br>",
  "is_primary": true,
  "logo_id": 1002,
  "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
  "member_email_text": "<p>My email body</p>",
  "member_id": 100001,
  "organization_id": 10,
  "parent_id": 1,
  "raw_currency_code": "EUR",
  "raw_goal": 100,
  "started_at": "2016-01-01T12:00:00+0000",
  "status": "active",
  "supporter_id": 100001,
  "thankyou_email_text": "<p>My email body</p>",
  "thank_you_text": "Thank You!",
  "title": "My Page Title"
}
Example request  Pages with Aggregates
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "alias": "My Super Awesome page",
  "answers": [
    {
      "id": 1,
      "member_id": 100,
      "question_id": 1000,
      "created_at": "2016-01-01T12:00:00+0000",
      "campaign_id": 432,
      "answer": "example answer text",
      "answerable_id": 123,
      "answerable_type": "fundraising_team"
    }
  ],
  "campaign_id": 101,
  "commitment": 100,
  "canonical_url": "/fundraiser/24",
  "cover_photo": {
    "id": 29487,
    "parent_id": 29486,
    "created_by": 387943,
    "state": "pending",
    "cdn_url": "https://cdn.classy.org/PECVc2gPjYdF.jpg",
    "content_type": "image/jpeg",
    "size": 278923,
    "created_at": "2016-03-31T22:49:18+0000"
  },
  "created_at": "2016-01-01T12:00:00+0000",
  "currency_code": "USD",
  "designation_id": 1001,
  "ended_at": "2016-01-02T12:00:00+0000",
  "fundraising_team_id": 10001,
  "goal": 108.23,
  "id": 1,
  "intro_text": "Thanks for visiting my fundraising page!<br>",
  "is_primary": true,
  "logo_id": 1002,
  "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
  "member_email_text": "<p>My email body</p>",
  "member_id": 100001,
  "organization_id": 10,
  "parent_id": 1,
  "raw_currency_code": "EUR",
  "raw_goal": 100,
  "started_at": "2016-01-01T12:00:00+0000",
  "status": "active",
  "supporter_id": 100001,
  "thankyou_email_text": "<p>My email body</p>",
  "thank_you_text": "Thank You!",
  "title": "My Page Title",
  "total_donors": 0,
  "total_donations": 0,
  "total_raised": 0,
  "average_donation": 0,
  "largest_donation": 0,
  "percent_to_goal": 0
}

Fetch Fundraising Page Overview
GET/fundraising-pages/{id}/overview{?interval}{?start_date}{?end_date}

Retrieves aggregate records for the fundraising page’s transactions. Results can be filtered to within a specified date range by providing a start_date and/or end_date - if provided, results will be filtered between the beginning of the start_date through the end of the end_date. A timezone attribute can be specified with the request to establish the thresholds for dates. If no timezone is specified, the timezone will default to the timezone specified for the fundraising page’s campaign.

Additionally, an interval may be specified to provide daily or weekly aggregates by providing an “interval” attribute of ‘daily’ or ‘weekly’, respectively. If this attribute is provided, each node in the resulting ‘metrics’ array will contain a ‘start_date’ attribute. This is used to indicate either the date or start of the week for each interval. Is no ‘start_date’ is specified, results will begin with the earliest transaction. When a ‘start_date’ is included and interval is set to “weekly” then the results will group the transaction into seven-day chunks beginning on the specified start day.

All attributes that reflect amounts associated with a currency will use the fundraising page’s normalized currency code (i.e. the currency code of the fundraising page’s organization) to provide a standard basis for summation and comparison.

Permissions

Any request with a valid access token may request this endpoint. However, requests from members without update access to the fundraising page (either the fundraising page owner themselves or admins for the page’s associated team/campaign/organization) will receive a filtered view without ‘fees_amount’ or ‘net_amount’ included in aggregations.

URI Parameters
HideShow
id
number (required) 

The ID of the desired Fundraising Page.

interval
string (optional) 
  • daily

  • weekly

start_date
string (optional) 

The date from which aggregation results will start. This is translated into a start_time, which is the beginning of the date presented in the timezone of the page’s campaign. If the fundraising page’s campaign has no associated timezone, this timezone will default to UTC.

end_date
string (optional) 

The date at which aggregation results will end. This is translated into a end_time, which is the end of the date presented in the timezone of the page’s campaign. If the fundraising page’s campaign has no associated timezone, this timezone will default to UTC.

Response Body Parameters
NameTypeDescription
end_timestringThe end time used to filter results represented in aggregation
metricsarray
start_timestringThe start time used to filter results represented in aggregation
timezonestringThe timezone used to establish date ranges and start/end times for aggregation
Example request
HideShow
Headers
Authorization: Bearer some-member-or-app-access-token
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "end_time": "2016-02-11T08:00:00+0000",
  "metrics": [
    {
      "donors_count": 18,
      "fees_amount": "5.40",
      "gross_amount": "65.00",
      "net_amount: `59.60` (string, required) - The net amount transacted for the fundraising page (gross_amount": "Hello, world!",
      "transactions_count": "20",
      "registrations_amount": "560.20",
      "donations_amount": "1439.20",
      "percent_to_goal": 1
    }
  ],
  "start_time": "null",
  "timezone": "America/Los_Angeles"
}

Update a Fundraising Page
PUT/fundraising-pages

Update an existing Fundraising Page

NOTE: If setting fundraising goal, specify the “goal” attribute. Do not specify “raw_goal” and “raw_currency_code”. These are new attributes that are not yet active.

Permissions

You will need a valid access token to request this endpoint. The caller must be the owner of the fundraising page or must be an admin of the campaign.

Request Body Parameters
NameTypeRequiredDescription
titlestringRequiredPage title
goalnumberOptionalFundraising goal for this page
currency_codestringOptionalISO code of the default currency in which this fundraising page should be presented
commitmentnumberOptionalCommitment level for this page. Only Campaign Managers can update a commitment level.
aliasstringOptional
logo_idnumberOptionalID of the Asset to be used as a logo.
cover_photo_idnumberOptionalID of the Asset to be used as a cover photo.
thankyou_email_textstringOptionalHTML formatted string for thank you email body
thank_you_textstringOptionalDefault thank you text on the thank you page.
member_email_textstringOptionalHTML formatted string for member email body
intro_textstringOptionalHTML Formated string for intro text
started_atstringRequiredPage start date
ended_atstringOptionalPage end date. An end date can only be set if the campaign has no end date.
designation_idnumberOptionalId of the default designation donations to this page will be allocated to.
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "title": "My Page Title",
  "goal": 123.45,
  "currency_code": "USD",
  "commitment": 100,
  "alias": "My Super Awesome page",
  "logo_id": 29340,
  "cover_photo_id": 20937,
  "thankyou_email_text": "<p>My email body</p>",
  "thank_you_text": "Thank You!",
  "member_email_text": "<p>My email body</p>",
  "intro_text": "Thanks for visiting my fundraising page!<br>",
  "started_at": "2016-01-01T12:00:00+0000",
  "ended_at": "2016-01-02T12:00:00+0000",
  "designation_id": 456
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "alias": "My Super Awesome page",
  "answers": [
    {
      "id": 1,
      "member_id": 100,
      "question_id": 1000,
      "created_at": "2016-01-01T12:00:00+0000",
      "campaign_id": 432,
      "answer": "example answer text",
      "answerable_id": 123,
      "answerable_type": "fundraising_team"
    }
  ],
  "campaign_id": 101,
  "commitment": 100,
  "canonical_url": "/fundraiser/24",
  "cover_photo": {
    "id": 29487,
    "parent_id": 29486,
    "created_by": 387943,
    "state": "pending",
    "cdn_url": "https://cdn.classy.org/PECVc2gPjYdF.jpg",
    "content_type": "image/jpeg",
    "size": 278923,
    "created_at": "2016-03-31T22:49:18+0000"
  },
  "created_at": "2016-01-01T12:00:00+0000",
  "currency_code": "USD",
  "designation_id": 1001,
  "ended_at": "2016-01-02T12:00:00+0000",
  "fundraising_team_id": 10001,
  "goal": 108.23,
  "id": 1,
  "intro_text": "Thanks for visiting my fundraising page!<br>",
  "is_primary": true,
  "logo_id": 1002,
  "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
  "member_email_text": "<p>My email body</p>",
  "member_id": 100001,
  "organization_id": 10,
  "parent_id": 1,
  "raw_currency_code": "EUR",
  "raw_goal": 100,
  "started_at": "2016-01-01T12:00:00+0000",
  "status": "active",
  "supporter_id": 100001,
  "thankyou_email_text": "<p>My email body</p>",
  "thank_you_text": "Thank You!",
  "title": "My Page Title"
}

Transfer a Fundraising Page
POST/fundraising-pages/{id}/transfers

Transfer a Fundraising Page from one Fundraising Team to another or one Member to another. This endpoint can be used to add a fundraising page to a team, remove a fundraising page from its current team, or transfer the fundraising page from one team to another. It can additionally be used to transfer a fundraising page between members.

The object being returned references the affected fundraising page and the members and/or fundraising teams involved in the transfer. These teams are referenced as the source_fundraising_team and destination_fundraising_team. Either one of these team references can be null - this indicates that the fundraising page was added to or removed from a team entirely. Additionally, the involved members are referenced as the source_member and destination member. Either both of these attributes will be null or both will be set to reference valid members.

Permissions

You will need a valid access token to request this endpoint. The caller must be either the owner of the fundraising page, an admin of the campaign if a fundraising_team_id is specified, and a Classy admin if a member_id is specified.

URI Parameters
HideShow
id
number (required) 

Fundraising Page ID

Request Body Parameters
NameTypeRequiredDescription
fundraising_team_idnumberOptionalThe ID of the fundraising team to transfer the fundraising page into. If this is left null, the fundraising page will be removed from its current team.
member_idnumberOptionalThe ID of the member to transfer the fundraising page to.
Example request
HideShow
Headers
Content-Type: application/json
Authorization: Bearer some-member-or-app-access-token
Body
{
  "fundraising_team_id": 444,
  "member_id": 555
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 111,
  "fundraising_page_id": 1,
  "source_fundraising_team_id": 1,
  "destination_fundraising_team_id": 1,
  "source_member_id": 1,
  "destination_member_id": 1,
  "created_at": "2016-03-31T15:24:06+0000",
  "updated_at": "2016-03-31T15:24:06+0000"
}

Delete a Fundraising Page
DELETE/fundraising-pages/{id}

Delete an existing Fundraising Page

Permissions

You will need a valid access token to request this endpoint. If the page does not include a commitment then the caller must be the owner of the fundraising page or must be an admin of the campaign. Otherwise if a commitment is present then the caller must be an admin of the campaign.

URI Parameters
HideShow
id
number (required) 

Fundraising Page ID

Example response  200
HideShow
Headers
Content-Type: application/json

Fundraising Teams

Fundraising Team

Fundraising teams have four attributes that relate to Passport functionality: goal, currency_code, raw_goal, and raw_currency_code.

The raw_goal of a fundraising team indicates the amount in the currency specified by raw_currency_code that the fundraising team is hoping to raise. The fundraising team’s page will display progress in terms of the raw_currency_code. A fundraising team’s raw_currency_code can be set independently from that of the fundraising team’s associated campaign or fundraising pages.

The goal of a fundraising team indicates the amount of the raw_goal when normalized into the organization-level currency code (specified by currency_code). Normalization occurs whenever a fundraising team’s raw_goal is updated and will use the conversion rate from raw_currency_code to currency_code at the time the update occurs. If the raw_currency_code and currency_code of a fundraising team differ through previous or pending updates, the fundraising team’s goal cannot be set manually - raw_goal must be specified instead.

The currency_code attribute is directly inherited from the fundraising team’s organization and cannot be changed. All of an organization’s fundraising entities (e.g. campaigns, fundraising teams, and fundraising pages) share the same inherited currency_code, allowing their relative amounts to be compared on a standardized basis.

Fetch a Fundraising Team
GET/fundraising-teams/{id}{?with}

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign this team belongs to.

URI Parameters
HideShow
id
number (required) 

Fundraising Team ID

with
string (optional) 
  • campaign - Embed parent campaign object

  • team_lead - Embed team lead member object

  • team_policy - Embed the Fundraising Team Policy object

  • logo

  • cover_photo

Response Body Parameters
NameTypeDescription
campaignobjectCampaign object for parent campaign
campaign_idnumber
canonical_urlstringThe canonical url of the Fundraising Team.
citystring
countrystring
cover_photo_idnumberID of asset used as the fundraising team cover photo.
cover_photo_urlstringURL for cover photo image. Interpreted from cover_photo asset specified by cover_photo_id.
created_atstringTeam Creation date.
currency_codestringISO code of the currency against which this fundraising team is normalized.
descriptionstringTeam description.
designation_idnumberID of the default designation donations will be allocated.
goalnumberFundraising goal for this team normalized against 'currency_code'
idnumberTeam identifier.
logo_idnumberID of asset used as the fundraising team logo.
logo_url: `https://www.classy-cdn-url.com/your-logo.png` (string) - URL for logo image. Either hardcoded URL for legacy fundraising teams or interpreted from logo asset specified by logo_id.string
namestringTeam name
organization_idnumberOrganization ID.
parent_idnumberParent Team ID. Used for creating a team hierarchy. Fundraising Team Policy must support SubTeam creation if a Parent Team ID is supplied.
postal_codestring
raw_currency_codestringISO code of the default currency in which this fundraising team should be presented. Defaults to 'currency_code' if not specified.
raw_goalnumberRaw fundraising goal for this team
statestringState/province name
statusstringTeam status
team_leadobjectMember object for team lead
team_lead_idnumber
team_lead_supporter_idnumberSupporter ID for the team lead.
team_policy_idnumberFundraising Team Policy ID associated with this Fundraising Team.
thank_you_textstringDefault thank you text on the thank you page.
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "campaign": {
    "address1": "533 F Street",
    "allow_duplicate_fundraisers": false,
    "allow_ecards": false,
    "allow_fundraising_pages": true,
    "canonical_url": "/campaign/c0",
    "category_id": 1,
    "channel_id": 2,
    "channel_keywords: `some_keyword`": "Hello, world!",
    "city": "San Diego",
    "classy_mode_appeal": "false",
    "classy_mode_checked_by_default": false,
    "classy_mode_enabled": false,
    "collect_shipping_address": false,
    "contact_email": "[email protected]",
    "contact_phone": "619-555-1212",
    "country": "US",
    "created_at": "2016-01-01T12:00:00+0000",
    "created_with": "api",
    "currency_code": "USD",
    "default_page_appeal": "Please donate to my fundraising page",
    "default_page_appeal_email": "Please donate to my fundraising page",
    "default_page_goal": 500,
    "default_page_post_asset_id": 1,
    "default_page_post_body": "Lorem ipsum",
    "default_page_post_title": "Welcome to our team page!",
    "default_team_appeal": "Please donate to my fundraising team",
    "default_team_appeal_email": "Please donate to my fundraising team",
    "default_team_goal": 500,
    "default_team_post_asset_id": 1,
    "default_team_post_body": "Lorem ipsum",
    "default_team_post_title": "Welcome to our team page!",
    "default_thank_you_text": "Thank you so much!",
    "designation_id": 10,
    "disable_donation_attribution": false,
    "external_url": "https://classy.org",
    "goal": 108.23,
    "hide_anonymous_donations": false,
    "hide_contact_opt_in": false,
    "hide_dedications": false,
    "hide_donation_comments": false,
    "host_member_id": 1001,
    "is_billing_address_required": false,
    "is_ended_at_hidden": true,
    "is_fees_free": false,
    "is_started_at_hidden": true,
    "location_details": "Heading north on I-5...",
    "logo_id": 1002,
    "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
    "name": "My Campaign",
    "offer_dedication_postal_notifications": false,
    "opt_in_checked_by_default": false,
    "organization_id": "101",
    "postal_code": "92101",
    "raw_currency_code": "EUR",
    "raw_goal": 100,
    "send_dedication_emails": false,
    "started_at": "2016-01-01T12:00:00+0000",
    "state": "CA",
    "status": "active",
    "team_cover_photo_id": 2345,
    "team_cover_photo_url": "https://www.classy-cdn-url.com/your-team-cover-photo.png",
    "team_membership_policy": "optional",
    "ticket_pass_on_fees": false,
    "timezone_identifier: `America/Los_Angeles`": "Hello, world!",
    "type": "crowdfunding",
    "updated_at": "2016-01-01T12:00:00+0000",
    "venue": "City Townhall",
    "fixed_fot_percent": 4,
    "effective_fixed_fot_percent": 4
  },
  "campaign_id": 101,
  "canonical_url": "/team/10",
  "city": "San Diego",
  "country": "US",
  "cover_photo_id": 1111,
  "cover_photo_url": "https://www.classy-cdn-url.com/your-cover-photo.png",
  "created_at": "2016-01-01T12:00:00+0000",
  "currency_code": "USD",
  "description": "My team description",
  "designation_id": 0,
  "goal": 108.23,
  "id": 1,
  "logo_id": 1002,
  "logo_url: `https://www.classy-cdn-url.com/your-logo.png` (string) - URL for logo image. Either hardcoded URL for legacy fundraising teams or interpreted from logo asset specified by logo_id.": "Hello, world!",
  "name": "My Team",
  "organization_id": 10,
  "parent_id": 1000001,
  "postal_code": "92101",
  "raw_currency_code": "EUR",
  "raw_goal": 100,
  "state": "CA",
  "status": "active",
  "team_lead": {
    "created_at": "2016-01-01T12:00:00+0000",
    "email_address": "[email protected]",
    "first_name": "Classy",
    "id": 111,
    "last_name": "Member",
    "profile_image_id": 432,
    "thumbnail_large": "null",
    "thumbnail_medium": "null",
    "thumbnail_small": "null"
  },
  "team_lead_id": 10001,
  "team_lead_supporter_id": 10002,
  "team_policy_id": 100001,
  "thank_you_text": "Thank You!"
}
Example request
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "campaign": {
    "address1": "533 F Street",
    "allow_duplicate_fundraisers": false,
    "allow_ecards": false,
    "allow_fundraising_pages": true,
    "canonical_url": "/campaign/c0",
    "category_id": 1,
    "channel_id": 2,
    "channel_keywords: `some_keyword`": "Hello, world!",
    "city": "San Diego",
    "classy_mode_appeal": "false",
    "classy_mode_checked_by_default": false,
    "classy_mode_enabled": false,
    "collect_shipping_address": false,
    "contact_email": "[email protected]",
    "contact_phone": "619-555-1212",
    "country": "US",
    "created_at": "2016-01-01T12:00:00+0000",
    "created_with": "api",
    "currency_code": "USD",
    "default_page_appeal": "Please donate to my fundraising page",
    "default_page_appeal_email": "Please donate to my fundraising page",
    "default_page_goal": 500,
    "default_page_post_asset_id": 1,
    "default_page_post_body": "Lorem ipsum",
    "default_page_post_title": "Welcome to our team page!",
    "default_team_appeal": "Please donate to my fundraising team",
    "default_team_appeal_email": "Please donate to my fundraising team",
    "default_team_goal": 500,
    "default_team_post_asset_id": 1,
    "default_team_post_body": "Lorem ipsum",
    "default_team_post_title": "Welcome to our team page!",
    "default_thank_you_text": "Thank you so much!",
    "designation_id": 10,
    "disable_donation_attribution": false,
    "external_url": "https://classy.org",
    "goal": 108.23,
    "hide_anonymous_donations": false,
    "hide_contact_opt_in": false,
    "hide_dedications": false,
    "hide_donation_comments": false,
    "host_member_id": 1001,
    "is_billing_address_required": false,
    "is_ended_at_hidden": true,
    "is_fees_free": false,
    "is_started_at_hidden": true,
    "location_details": "Heading north on I-5...",
    "logo_id": 1002,
    "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
    "name": "My Campaign",
    "offer_dedication_postal_notifications": false,
    "opt_in_checked_by_default": false,
    "organization_id": "101",
    "postal_code": "92101",
    "raw_currency_code": "EUR",
    "raw_goal": 100,
    "send_dedication_emails": false,
    "started_at": "2016-01-01T12:00:00+0000",
    "state": "CA",
    "status": "active",
    "team_cover_photo_id": 2345,
    "team_cover_photo_url": "https://www.classy-cdn-url.com/your-team-cover-photo.png",
    "team_membership_policy": "optional",
    "ticket_pass_on_fees": false,
    "timezone_identifier: `America/Los_Angeles`": "Hello, world!",
    "type": "crowdfunding",
    "updated_at": "2016-01-01T12:00:00+0000",
    "venue": "City Townhall",
    "fixed_fot_percent": 4,
    "effective_fixed_fot_percent": 4
  },
  "campaign_id": 101,
  "canonical_url": "/team/10",
  "city": "San Diego",
  "country": "US",
  "cover_photo_id": 1111,
  "cover_photo_url": "https://www.classy-cdn-url.com/your-cover-photo.png",
  "created_at": "2016-01-01T12:00:00+0000",
  "currency_code": "USD",
  "description": "My team description",
  "designation_id": 0,
  "goal": 108.23,
  "id": 1,
  "logo_id": 1002,
  "logo_url: `https://www.classy-cdn-url.com/your-logo.png` (string) - URL for logo image. Either hardcoded URL for legacy fundraising teams or interpreted from logo asset specified by logo_id.": "Hello, world!",
  "name": "My Team",
  "organization_id": 10,
  "parent_id": 1000001,
  "postal_code": "92101",
  "raw_currency_code": "EUR",
  "raw_goal": 100,
  "state": "CA",
  "status": "active",
  "team_lead": {
    "created_at": "2016-01-01T12:00:00+0000",
    "email_address": "[email protected]",
    "first_name": "Classy",
    "id": 111,
    "last_name": "Member",
    "profile_image_id": 432,
    "thumbnail_large": "null",
    "thumbnail_medium": "null",
    "thumbnail_small": "null"
  },
  "team_lead_id": 10001,
  "team_lead_supporter_id": 10002,
  "team_policy_id": 100001,
  "thank_you_text": "Thank You!",
  "total_fundraisers": 0,
  "total_donors": 0,
  "total_donations": 0,
  "total_raised": 0,
  "average_donation": 0,
  "largest_donation": 0,
  "percent_to_goal": 0
}

Fetch Fundraising Sub Teams
GET/fundraising-teams/{id}/subteams

Fetch a list of subteams for this Fundraising Team.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign this team belongs to.

URI Parameters
HideShow
id
number (required) 

Fundraising Team ID

Response Body Parameters
NameTypeDescription
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "campaign": {
        "address1": "533 F Street",
        "allow_duplicate_fundraisers": false,
        "allow_ecards": false,
        "allow_fundraising_pages": true,
        "canonical_url": "/campaign/c0",
        "category_id": 1,
        "channel_id": 2,
        "channel_keywords: `some_keyword`": "Hello, world!",
        "city": "San Diego",
        "classy_mode_appeal": "false",
        "classy_mode_checked_by_default": false,
        "classy_mode_enabled": false,
        "collect_shipping_address": false,
        "contact_email": "[email protected]",
        "contact_phone": "619-555-1212",
        "country": "US",
        "created_at": "2016-01-01T12:00:00+0000",
        "created_with": "api",
        "currency_code": "USD",
        "default_page_appeal": "Please donate to my fundraising page",
        "default_page_appeal_email": "Please donate to my fundraising page",
        "default_page_goal": 500,
        "default_page_post_asset_id": 1,
        "default_page_post_body": "Lorem ipsum",
        "default_page_post_title": "Welcome to our team page!",
        "default_team_appeal": "Please donate to my fundraising team",
        "default_team_appeal_email": "Please donate to my fundraising team",
        "default_team_goal": 500,
        "default_team_post_asset_id": 1,
        "default_team_post_body": "Lorem ipsum",
        "default_team_post_title": "Welcome to our team page!",
        "default_thank_you_text": "Thank you so much!",
        "designation_id": 10,
        "disable_donation_attribution": false,
        "external_url": "https://classy.org",
        "goal": 108.23,
        "hide_anonymous_donations": false,
        "hide_contact_opt_in": false,
        "hide_dedications": false,
        "hide_donation_comments": false,
        "host_member_id": 1001,
        "is_billing_address_required": false,
        "is_ended_at_hidden": true,
        "is_fees_free": false,
        "is_started_at_hidden": true,
        "location_details": "Heading north on I-5...",
        "logo_id": 1002,
        "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
        "name": "My Campaign",
        "offer_dedication_postal_notifications": false,
        "opt_in_checked_by_default": false,
        "organization_id": "101",
        "postal_code": "92101",
        "raw_currency_code": "EUR",
        "raw_goal": 100,
        "send_dedication_emails": false,
        "started_at": "2016-01-01T12:00:00+0000",
        "state": "CA",
        "status": "active",
        "team_cover_photo_id": 2345,
        "team_cover_photo_url": "https://www.classy-cdn-url.com/your-team-cover-photo.png",
        "team_membership_policy": "optional",
        "ticket_pass_on_fees": false,
        "timezone_identifier: `America/Los_Angeles`": "Hello, world!",
        "type": "crowdfunding",
        "updated_at": "2016-01-01T12:00:00+0000",
        "venue": "City Townhall",
        "fixed_fot_percent": 4,
        "effective_fixed_fot_percent": 4
      },
      "campaign_id": 101,
      "canonical_url": "/team/10",
      "city": "San Diego",
      "country": "US",
      "cover_photo_id": 1111,
      "cover_photo_url": "https://www.classy-cdn-url.com/your-cover-photo.png",
      "created_at": "2016-01-01T12:00:00+0000",
      "currency_code": "USD",
      "description": "My team description",
      "designation_id": 0,
      "goal": 108.23,
      "id": 1,
      "logo_id": 1002,
      "logo_url: `https://www.classy-cdn-url.com/your-logo.png` (string) - URL for logo image. Either hardcoded URL for legacy fundraising teams or interpreted from logo asset specified by logo_id.": "Hello, world!",
      "name": "My Team",
      "organization_id": 10,
      "parent_id": 1000001,
      "postal_code": "92101",
      "raw_currency_code": "EUR",
      "raw_goal": 100,
      "state": "CA",
      "status": "active",
      "team_lead": {
        "created_at": "2016-01-01T12:00:00+0000",
        "email_address": "[email protected]",
        "first_name": "Classy",
        "id": 111,
        "last_name": "Member",
        "profile_image_id": 432,
        "thumbnail_large": "null",
        "thumbnail_medium": "null",
        "thumbnail_small": "null"
      },
      "team_lead_id": 10001,
      "team_lead_supporter_id": 10002,
      "team_policy_id": 100001,
      "thank_you_text": "Thank You!"
    }
  ]
}

Fetch Fundraising Team Overview
GET/fundraising-teams/{id}/overview{?interval}

Retrieves aggregate records for the fundraising team’s transactions. Results can be filtered to within a specified date range by providing a start_date and/or end_date - if provided, results will be filtered between the beginning of the start_date through the end of the end_date. A timezone attribute can be specified with the request to establish the thresholds for dates. If no timezone is specified, the timezone will default to the timezone specified for the fundraising team’s campaign.

Additionally, an interval may be specified to provide daily or weekly aggregates by providing an “interval” attribute of ‘daily’ or ‘weekly’, respectively. If this attribute is provided, each node in the resulting ‘metrics’ array will contain a ‘start_date’ attribute. This is used to indicate either the date or start of the week for each interval.

All attributes that reflect amounts associated with a currency will use the fundraising team’s normalized currency code (i.e. the currency code of the fundraising team’s organization) to provide a standard basis for summation and comparison.

Permissions

Any request with a valid access token may request this endpoint. However, requests from members without update access to the fundraising team (either the fundraising team captains or admins for the team’s associated campaign/organization) will receive a filtered view without ‘fees_amount’ or ‘net_amount’ included in aggregations.

URI Parameters
HideShow
id
number (required) 

The ID of the desired Fundraising Page.

start_date (string, optional) - The date from which aggregation results will start. This is translated into a start_time, which is the beginning of the date presented in the timezone of the team's campaign. If the fundraising team's campaign has no associated timezone, this timezone will default to UTC.
string (required) 
end_date (string, optional) - The date at which aggregation results will end. This is translated into a end_time, which is the end of the date presented in the timezone of the team's campaign. If the fundraising team's campaign has no associated timezone, this timezone will default to UTC.
string (required) 
interval
string (optional) 
  • daily

  • weekly

Response Body Parameters
NameTypeDescription
end_timestringThe end time used to filter results represented in aggregation
metricsarray
start_timestringThe start time used to filter results represented in aggregation
timezonestringThe timezone used to establish date ranges and start/end times for aggregation
Example request
HideShow
Headers
Authorization: Bearer some-member-or-app-access-token
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "end_time": "2016-02-11T08:00:00+0000",
  "metrics": [
    {
      "donors_count": 18,
      "fees_amount": "5.40",
      "gross_amount": "65.00",
      "net_amount: `59.60` (string, required) - The net amount transacted for the fundraising page (gross_amount": "Hello, world!",
      "transactions_count": "20",
      "registrations_amount": "560.20",
      "donations_amount": "1439.20",
      "percent_to_goal": 1
    }
  ],
  "start_time": "null",
  "timezone": "America/Los_Angeles"
}

Update a Fundraising Team
PUT/fundraising-teams/{id}

Update an existing Fundraising Team.

NOTE: If setting fundraising goal, specify the “goal” attribute. Do not specify “raw_goal” and “raw_currency_code”. These are new attributes that are not yet active.

Permissions

You will need a valid access token to request this endpoint. The caller must be the one of the following: Team Lead, Primary Captain or Campaign Manager.

URI Parameters
HideShow
id
number (required) 

Fundraising Team ID

Request Body Parameters
NameTypeRequiredDescription
citystringOptional
countrystringOptional
cover_photo_idnumberOptionalID of the Asset to be used as a cover photo.
currency_codestringOptionalISO code of the default currency in which this fundraising team should be presented.
descriptionstringOptionalTeam description
designation_idnumberOptionalID of the default designation donations will be allocated.
logo_idnumberOptionalID of the Asset to be used as a logo.
namestringOptionalTeam name
postal_codestringOptional
raw_currency_codestringOptionalISO code of the default currency in which this fundraising team should be presented. Defaults to 'currency_code' if not specified.
raw_goalnumberOptionalRaw fundraising goal for this team
statestringOptionalState/province in which this Fundraising Team is located. If country is "US" and a value for state is provided, state must be a valid US region.
thank_you_textstringOptionalDefault thank you text on the thank you page.
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "city": "San Diego",
  "country": "US",
  "cover_photo_id": 20937,
  "currency_code": "USD",
  "description": "My team description",
  "designation_id": 0,
  "logo_id": 29340,
  "name": "My Team",
  "postal_code": "92101",
  "raw_currency_code": "EUR",
  "raw_goal": 100,
  "state": "CA",
  "thank_you_text": "Thank You!"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "campaign": {
    "address1": "533 F Street",
    "allow_duplicate_fundraisers": false,
    "allow_ecards": false,
    "allow_fundraising_pages": true,
    "canonical_url": "/campaign/c0",
    "category_id": 1,
    "channel_id": 2,
    "channel_keywords: `some_keyword`": "Hello, world!",
    "city": "San Diego",
    "classy_mode_appeal": "false",
    "classy_mode_checked_by_default": false,
    "classy_mode_enabled": false,
    "collect_shipping_address": false,
    "contact_email": "[email protected]",
    "contact_phone": "619-555-1212",
    "country": "US",
    "created_at": "2016-01-01T12:00:00+0000",
    "created_with": "api",
    "currency_code": "USD",
    "default_page_appeal": "Please donate to my fundraising page",
    "default_page_appeal_email": "Please donate to my fundraising page",
    "default_page_goal": 500,
    "default_page_post_asset_id": 1,
    "default_page_post_body": "Lorem ipsum",
    "default_page_post_title": "Welcome to our team page!",
    "default_team_appeal": "Please donate to my fundraising team",
    "default_team_appeal_email": "Please donate to my fundraising team",
    "default_team_goal": 500,
    "default_team_post_asset_id": 1,
    "default_team_post_body": "Lorem ipsum",
    "default_team_post_title": "Welcome to our team page!",
    "default_thank_you_text": "Thank you so much!",
    "designation_id": 10,
    "disable_donation_attribution": false,
    "external_url": "https://classy.org",
    "goal": 108.23,
    "hide_anonymous_donations": false,
    "hide_contact_opt_in": false,
    "hide_dedications": false,
    "hide_donation_comments": false,
    "host_member_id": 1001,
    "is_billing_address_required": false,
    "is_ended_at_hidden": true,
    "is_fees_free": false,
    "is_started_at_hidden": true,
    "location_details": "Heading north on I-5...",
    "logo_id": 1002,
    "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
    "name": "My Campaign",
    "offer_dedication_postal_notifications": false,
    "opt_in_checked_by_default": false,
    "organization_id": "101",
    "postal_code": "92101",
    "raw_currency_code": "EUR",
    "raw_goal": 100,
    "send_dedication_emails": false,
    "started_at": "2016-01-01T12:00:00+0000",
    "state": "CA",
    "status": "active",
    "team_cover_photo_id": 2345,
    "team_cover_photo_url": "https://www.classy-cdn-url.com/your-team-cover-photo.png",
    "team_membership_policy": "optional",
    "ticket_pass_on_fees": false,
    "timezone_identifier: `America/Los_Angeles`": "Hello, world!",
    "type": "crowdfunding",
    "updated_at": "2016-01-01T12:00:00+0000",
    "venue": "City Townhall",
    "fixed_fot_percent": 4,
    "effective_fixed_fot_percent": 4
  },
  "campaign_id": 101,
  "canonical_url": "/team/10",
  "city": "San Diego",
  "country": "US",
  "cover_photo_id": 1111,
  "cover_photo_url": "https://www.classy-cdn-url.com/your-cover-photo.png",
  "created_at": "2016-01-01T12:00:00+0000",
  "currency_code": "USD",
  "description": "My team description",
  "designation_id": 0,
  "goal": 108.23,
  "id": 1,
  "logo_id": 1002,
  "logo_url: `https://www.classy-cdn-url.com/your-logo.png` (string) - URL for logo image. Either hardcoded URL for legacy fundraising teams or interpreted from logo asset specified by logo_id.": "Hello, world!",
  "name": "My Team",
  "organization_id": 10,
  "parent_id": 1000001,
  "postal_code": "92101",
  "raw_currency_code": "EUR",
  "raw_goal": 100,
  "state": "CA",
  "status": "active",
  "team_lead": {
    "created_at": "2016-01-01T12:00:00+0000",
    "email_address": "[email protected]",
    "first_name": "Classy",
    "id": 111,
    "last_name": "Member",
    "profile_image_id": 432,
    "thumbnail_large": "null",
    "thumbnail_medium": "null",
    "thumbnail_small": "null"
  },
  "team_lead_id": 10001,
  "team_lead_supporter_id": 10002,
  "team_policy_id": 100001,
  "thank_you_text": "Thank You!"
}

Delete a Fundraising Team
DELETE/fundraising-teams/{id}

Soft-Delete a Fundraising Team. Fundraising Team status is set to ‘deleted’.

Permissions

To request this endpoint you will need a valid access token with permissions as one of the following: Team Lead or Campaign Manager.

URI Parameters
HideShow
id
number (required) 

Fundraising Team ID

Example response  200
HideShow
Headers
Content-Type: application/json

List Member Teams
GET/members/{id}/fundraising-teams{?with}

Fetch all Fundraising Teams associated with Fundraising Pages belonging to this Member.

Permissions

You will need a valid access token to request this endpoint. The caller must be an admin or the specified Member.

URI Parameters
HideShow
id
number (required) 

Member ID

with
string (optional) 
  • campaign - Embed parent campaign object

  • team_policy - Embed the Fundraising Team Policy object

  • logo

  • cover_photo

Response Body Parameters
NameTypeDescription
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "campaign": {
        "address1": "533 F Street",
        "allow_duplicate_fundraisers": false,
        "allow_ecards": false,
        "allow_fundraising_pages": true,
        "canonical_url": "/campaign/c0",
        "category_id": 1,
        "channel_id": 2,
        "channel_keywords: `some_keyword`": "Hello, world!",
        "city": "San Diego",
        "classy_mode_appeal": "false",
        "classy_mode_checked_by_default": false,
        "classy_mode_enabled": false,
        "collect_shipping_address": false,
        "contact_email": "[email protected]",
        "contact_phone": "619-555-1212",
        "country": "US",
        "created_at": "2016-01-01T12:00:00+0000",
        "created_with": "api",
        "currency_code": "USD",
        "default_page_appeal": "Please donate to my fundraising page",
        "default_page_appeal_email": "Please donate to my fundraising page",
        "default_page_goal": 500,
        "default_page_post_asset_id": 1,
        "default_page_post_body": "Lorem ipsum",
        "default_page_post_title": "Welcome to our team page!",
        "default_team_appeal": "Please donate to my fundraising team",
        "default_team_appeal_email": "Please donate to my fundraising team",
        "default_team_goal": 500,
        "default_team_post_asset_id": 1,
        "default_team_post_body": "Lorem ipsum",
        "default_team_post_title": "Welcome to our team page!",
        "default_thank_you_text": "Thank you so much!",
        "designation_id": 10,
        "disable_donation_attribution": false,
        "external_url": "https://classy.org",
        "goal": 108.23,
        "hide_anonymous_donations": false,
        "hide_contact_opt_in": false,
        "hide_dedications": false,
        "hide_donation_comments": false,
        "host_member_id": 1001,
        "is_billing_address_required": false,
        "is_ended_at_hidden": true,
        "is_fees_free": false,
        "is_started_at_hidden": true,
        "location_details": "Heading north on I-5...",
        "logo_id": 1002,
        "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
        "name": "My Campaign",
        "offer_dedication_postal_notifications": false,
        "opt_in_checked_by_default": false,
        "organization_id": "101",
        "postal_code": "92101",
        "raw_currency_code": "EUR",
        "raw_goal": 100,
        "send_dedication_emails": false,
        "started_at": "2016-01-01T12:00:00+0000",
        "state": "CA",
        "status": "active",
        "team_cover_photo_id": 2345,
        "team_cover_photo_url": "https://www.classy-cdn-url.com/your-team-cover-photo.png",
        "team_membership_policy": "optional",
        "ticket_pass_on_fees": false,
        "timezone_identifier: `America/Los_Angeles`": "Hello, world!",
        "type": "crowdfunding",
        "updated_at": "2016-01-01T12:00:00+0000",
        "venue": "City Townhall",
        "fixed_fot_percent": 4,
        "effective_fixed_fot_percent": 4
      },
      "campaign_id": 101,
      "canonical_url": "/team/10",
      "city": "San Diego",
      "country": "US",
      "cover_photo_id": 1111,
      "cover_photo_url": "https://www.classy-cdn-url.com/your-cover-photo.png",
      "created_at": "2016-01-01T12:00:00+0000",
      "currency_code": "USD",
      "description": "My team description",
      "designation_id": 0,
      "goal": 108.23,
      "id": 1,
      "logo_id": 1002,
      "logo_url: `https://www.classy-cdn-url.com/your-logo.png` (string) - URL for logo image. Either hardcoded URL for legacy fundraising teams or interpreted from logo asset specified by logo_id.": "Hello, world!",
      "name": "My Team",
      "organization_id": 10,
      "parent_id": 1000001,
      "postal_code": "92101",
      "raw_currency_code": "EUR",
      "raw_goal": 100,
      "state": "CA",
      "status": "active",
      "team_lead": {
        "created_at": "2016-01-01T12:00:00+0000",
        "email_address": "[email protected]",
        "first_name": "Classy",
        "id": 111,
        "last_name": "Member",
        "profile_image_id": 432,
        "thumbnail_large": "null",
        "thumbnail_medium": "null",
        "thumbnail_small": "null"
      },
      "team_lead_id": 10001,
      "team_lead_supporter_id": 10002,
      "team_policy_id": 100001,
      "thank_you_text": "Thank You!"
    }
  ]
}

Fetch Campaign Fundraising Teams
GET/campaigns/{id}/fundraising-teams{?with}

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign.

URI Parameters
HideShow
id
number (required) 

Campaign ID

with
string (optional) 
  • campaign - Embed parent campaign object

  • team_lead - Embed team lead member object

  • team_policy - Embed the Fundraising Team Policy object

  • logo

  • cover_photo

Example response  200
HideShow
Headers
Content-Type: application/json
Body
[
  {
    "campaign": {
      "address1": "533 F Street",
      "allow_duplicate_fundraisers": false,
      "allow_ecards": false,
      "allow_fundraising_pages": true,
      "canonical_url": "/campaign/c0",
      "category_id": 1,
      "channel_id": 2,
      "channel_keywords: `some_keyword`": "Hello, world!",
      "city": "San Diego",
      "classy_mode_appeal": "false",
      "classy_mode_checked_by_default": false,
      "classy_mode_enabled": false,
      "collect_shipping_address": false,
      "contact_email": "[email protected]",
      "contact_phone": "619-555-1212",
      "country": "US",
      "created_at": "2016-01-01T12:00:00+0000",
      "created_with": "api",
      "currency_code": "USD",
      "default_page_appeal": "Please donate to my fundraising page",
      "default_page_appeal_email": "Please donate to my fundraising page",
      "default_page_goal": 500,
      "default_page_post_asset_id": 1,
      "default_page_post_body": "Lorem ipsum",
      "default_page_post_title": "Welcome to our team page!",
      "default_team_appeal": "Please donate to my fundraising team",
      "default_team_appeal_email": "Please donate to my fundraising team",
      "default_team_goal": 500,
      "default_team_post_asset_id": 1,
      "default_team_post_body": "Lorem ipsum",
      "default_team_post_title": "Welcome to our team page!",
      "default_thank_you_text": "Thank you so much!",
      "designation_id": 10,
      "disable_donation_attribution": false,
      "external_url": "https://classy.org",
      "goal": 108.23,
      "hide_anonymous_donations": false,
      "hide_contact_opt_in": false,
      "hide_dedications": false,
      "hide_donation_comments": false,
      "host_member_id": 1001,
      "is_billing_address_required": false,
      "is_ended_at_hidden": true,
      "is_fees_free": false,
      "is_started_at_hidden": true,
      "location_details": "Heading north on I-5...",
      "logo_id": 1002,
      "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
      "name": "My Campaign",
      "offer_dedication_postal_notifications": false,
      "opt_in_checked_by_default": false,
      "organization_id": "101",
      "postal_code": "92101",
      "raw_currency_code": "EUR",
      "raw_goal": 100,
      "send_dedication_emails": false,
      "started_at": "2016-01-01T12:00:00+0000",
      "state": "CA",
      "status": "active",
      "team_cover_photo_id": 2345,
      "team_cover_photo_url": "https://www.classy-cdn-url.com/your-team-cover-photo.png",
      "team_membership_policy": "optional",
      "ticket_pass_on_fees": false,
      "timezone_identifier: `America/Los_Angeles`": "Hello, world!",
      "type": "crowdfunding",
      "updated_at": "2016-01-01T12:00:00+0000",
      "venue": "City Townhall",
      "fixed_fot_percent": 4,
      "effective_fixed_fot_percent": 4
    },
    "campaign_id": 101,
    "canonical_url": "/team/10",
    "city": "San Diego",
    "country": "US",
    "cover_photo_id": 1111,
    "cover_photo_url": "https://www.classy-cdn-url.com/your-cover-photo.png",
    "created_at": "2016-01-01T12:00:00+0000",
    "currency_code": "USD",
    "description": "My team description",
    "designation_id": 0,
    "goal": 108.23,
    "id": 1,
    "logo_id": 1002,
    "logo_url: `https://www.classy-cdn-url.com/your-logo.png` (string) - URL for logo image. Either hardcoded URL for legacy fundraising teams or interpreted from logo asset specified by logo_id.": "Hello, world!",
    "name": "My Team",
    "organization_id": 10,
    "parent_id": 1000001,
    "postal_code": "92101",
    "raw_currency_code": "EUR",
    "raw_goal": 100,
    "state": "CA",
    "status": "active",
    "team_lead": {
      "created_at": "2016-01-01T12:00:00+0000",
      "email_address": "[email protected]",
      "first_name": "Classy",
      "id": 111,
      "last_name": "Member",
      "profile_image_id": 432,
      "thumbnail_large": "null",
      "thumbnail_medium": "null",
      "thumbnail_small": "null"
    },
    "team_lead_id": 10001,
    "team_lead_supporter_id": 10002,
    "team_policy_id": 100001,
    "thank_you_text": "Thank You!"
  }
]
Example request
Example response  200
HideShow
Headers
Content-Type: application/json
Body
[
  {
    "campaign": {
      "address1": "533 F Street",
      "allow_duplicate_fundraisers": false,
      "allow_ecards": false,
      "allow_fundraising_pages": true,
      "canonical_url": "/campaign/c0",
      "category_id": 1,
      "channel_id": 2,
      "channel_keywords: `some_keyword`": "Hello, world!",
      "city": "San Diego",
      "classy_mode_appeal": "false",
      "classy_mode_checked_by_default": false,
      "classy_mode_enabled": false,
      "collect_shipping_address": false,
      "contact_email": "[email protected]",
      "contact_phone": "619-555-1212",
      "country": "US",
      "created_at": "2016-01-01T12:00:00+0000",
      "created_with": "api",
      "currency_code": "USD",
      "default_page_appeal": "Please donate to my fundraising page",
      "default_page_appeal_email": "Please donate to my fundraising page",
      "default_page_goal": 500,
      "default_page_post_asset_id": 1,
      "default_page_post_body": "Lorem ipsum",
      "default_page_post_title": "Welcome to our team page!",
      "default_team_appeal": "Please donate to my fundraising team",
      "default_team_appeal_email": "Please donate to my fundraising team",
      "default_team_goal": 500,
      "default_team_post_asset_id": 1,
      "default_team_post_body": "Lorem ipsum",
      "default_team_post_title": "Welcome to our team page!",
      "default_thank_you_text": "Thank you so much!",
      "designation_id": 10,
      "disable_donation_attribution": false,
      "external_url": "https://classy.org",
      "goal": 108.23,
      "hide_anonymous_donations": false,
      "hide_contact_opt_in": false,
      "hide_dedications": false,
      "hide_donation_comments": false,
      "host_member_id": 1001,
      "is_billing_address_required": false,
      "is_ended_at_hidden": true,
      "is_fees_free": false,
      "is_started_at_hidden": true,
      "location_details": "Heading north on I-5...",
      "logo_id": 1002,
      "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
      "name": "My Campaign",
      "offer_dedication_postal_notifications": false,
      "opt_in_checked_by_default": false,
      "organization_id": "101",
      "postal_code": "92101",
      "raw_currency_code": "EUR",
      "raw_goal": 100,
      "send_dedication_emails": false,
      "started_at": "2016-01-01T12:00:00+0000",
      "state": "CA",
      "status": "active",
      "team_cover_photo_id": 2345,
      "team_cover_photo_url": "https://www.classy-cdn-url.com/your-team-cover-photo.png",
      "team_membership_policy": "optional",
      "ticket_pass_on_fees": false,
      "timezone_identifier: `America/Los_Angeles`": "Hello, world!",
      "type": "crowdfunding",
      "updated_at": "2016-01-01T12:00:00+0000",
      "venue": "City Townhall",
      "fixed_fot_percent": 4,
      "effective_fixed_fot_percent": 4
    },
    "campaign_id": 101,
    "canonical_url": "/team/10",
    "city": "San Diego",
    "country": "US",
    "cover_photo_id": 1111,
    "cover_photo_url": "https://www.classy-cdn-url.com/your-cover-photo.png",
    "created_at": "2016-01-01T12:00:00+0000",
    "currency_code": "USD",
    "description": "My team description",
    "designation_id": 0,
    "goal": 108.23,
    "id": 1,
    "logo_id": 1002,
    "logo_url: `https://www.classy-cdn-url.com/your-logo.png` (string) - URL for logo image. Either hardcoded URL for legacy fundraising teams or interpreted from logo asset specified by logo_id.": "Hello, world!",
    "name": "My Team",
    "organization_id": 10,
    "parent_id": 1000001,
    "postal_code": "92101",
    "raw_currency_code": "EUR",
    "raw_goal": 100,
    "state": "CA",
    "status": "active",
    "team_lead": {
      "created_at": "2016-01-01T12:00:00+0000",
      "email_address": "[email protected]",
      "first_name": "Classy",
      "id": 111,
      "last_name": "Member",
      "profile_image_id": 432,
      "thumbnail_large": "null",
      "thumbnail_medium": "null",
      "thumbnail_small": "null"
    },
    "team_lead_id": 10001,
    "team_lead_supporter_id": 10002,
    "team_policy_id": 100001,
    "thank_you_text": "Thank You!",
    "total_fundraisers": 0,
    "total_donors": 0,
    "total_donations": 0,
    "total_raised": 0,
    "average_donation": 0,
    "largest_donation": 0,
    "percent_to_goal": 0
  }
]

Create a Campaign Fundraising Team
POST/campaigns/{id}/fundraising-teams

Create a Fundraising Team within the specified Campaign.

NOTE: If setting fundraising goal, specify the “goal” attribute. Do not specify “raw_goal” and “raw_currency_code”. These are new attributes that are not yet active.

Permissions

You will need a valid access token to request this endpoint. The caller must be the one of the following: Team Lead or Campaign Manager.

URI Parameters
HideShow
id
number (required) 

Campaign ID

Request Body Parameters
NameTypeRequiredDescription
citystringOptionalCity in which this Fundraising Team is located.
countrystringOptionalFundraising Team's country.
cover_photo_idnumberOptionalID of the Asset to be used as a cover photo.
currency_codestringOptionalISO code of the default currency in which this fundraising team should be presented.
descriptionstringOptionalFundraising Team description.
designation_idnumberOptionalID of the default designation donations will be allocated.
logo_idnumberOptionalID of the Asset to be used as a logo.
namestringRequiredTeam name
parent_idnumberOptionalParent Team ID. Used for creating a team hierarchy. Team Policy must support SubTeam creation if a Parent Team ID is supplied.
postal_codestringOptionalFundraising Team's postal code.
raw_currency_codestringOptionalISO code of the default currency in which this fundraising team should be presented. Defaults to 'currency_code' if not specified.
raw_goalnumberOptionalRaw fundraising goal for this team
statestringOptionalState/province in which this Fundraising Team is located. If country is "US" and a value for state is provided, state must be a valid US region.
team_lead_idnumberOptionalMember ID for the Fundraising Team Lead. If unspecified, the team lead will be the requester. If set to null, the team won't have any lead.
team_policyobjectOptionalFundraising team policy attributes. If a policy attribute is left blank, a default value will be used.
thank_you_textstringOptionalDefault thank you text on the thank you page.
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "city": "San Diego",
  "country": "US",
  "cover_photo_id": 20937,
  "currency_code": "USD",
  "description": "My team description",
  "designation_id": 0,
  "logo_id": 29340,
  "name": "My Team",
  "parent_id": 1000001,
  "postal_code": "92101",
  "raw_currency_code": "EUR",
  "raw_goal": 100,
  "state": "CA",
  "team_lead_id": 10001,
  "team_policy": {
    "allow_subteams": false,
    "allow_fundraising_pages": true,
    "allow_transactions": true,
    "allow_cross_campaign_fundraisers": false,
    "min_members": 1,
    "max_members": 1024,
    "fundraiser_registration_policy": "'public'",
    "allocation_method": "'manual'"
  },
  "thank_you_text": "Thank You!"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "campaign": {
    "address1": "533 F Street",
    "allow_duplicate_fundraisers": false,
    "allow_ecards": false,
    "allow_fundraising_pages": true,
    "canonical_url": "/campaign/c0",
    "category_id": 1,
    "channel_id": 2,
    "channel_keywords: `some_keyword`": "Hello, world!",
    "city": "San Diego",
    "classy_mode_appeal": "false",
    "classy_mode_checked_by_default": false,
    "classy_mode_enabled": false,
    "collect_shipping_address": false,
    "contact_email": "[email protected]",
    "contact_phone": "619-555-1212",
    "country": "US",
    "created_at": "2016-01-01T12:00:00+0000",
    "created_with": "api",
    "currency_code": "USD",
    "default_page_appeal": "Please donate to my fundraising page",
    "default_page_appeal_email": "Please donate to my fundraising page",
    "default_page_goal": 500,
    "default_page_post_asset_id": 1,
    "default_page_post_body": "Lorem ipsum",
    "default_page_post_title": "Welcome to our team page!",
    "default_team_appeal": "Please donate to my fundraising team",
    "default_team_appeal_email": "Please donate to my fundraising team",
    "default_team_goal": 500,
    "default_team_post_asset_id": 1,
    "default_team_post_body": "Lorem ipsum",
    "default_team_post_title": "Welcome to our team page!",
    "default_thank_you_text": "Thank you so much!",
    "designation_id": 10,
    "disable_donation_attribution": false,
    "external_url": "https://classy.org",
    "goal": 108.23,
    "hide_anonymous_donations": false,
    "hide_contact_opt_in": false,
    "hide_dedications": false,
    "hide_donation_comments": false,
    "host_member_id": 1001,
    "is_billing_address_required": false,
    "is_ended_at_hidden": true,
    "is_fees_free": false,
    "is_started_at_hidden": true,
    "location_details": "Heading north on I-5...",
    "logo_id": 1002,
    "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
    "name": "My Campaign",
    "offer_dedication_postal_notifications": false,
    "opt_in_checked_by_default": false,
    "organization_id": "101",
    "postal_code": "92101",
    "raw_currency_code": "EUR",
    "raw_goal": 100,
    "send_dedication_emails": false,
    "started_at": "2016-01-01T12:00:00+0000",
    "state": "CA",
    "status": "active",
    "team_cover_photo_id": 2345,
    "team_cover_photo_url": "https://www.classy-cdn-url.com/your-team-cover-photo.png",
    "team_membership_policy": "optional",
    "ticket_pass_on_fees": false,
    "timezone_identifier: `America/Los_Angeles`": "Hello, world!",
    "type": "crowdfunding",
    "updated_at": "2016-01-01T12:00:00+0000",
    "venue": "City Townhall",
    "fixed_fot_percent": 4,
    "effective_fixed_fot_percent": 4
  },
  "campaign_id": 101,
  "canonical_url": "/team/10",
  "city": "San Diego",
  "country": "US",
  "cover_photo_id": 1111,
  "cover_photo_url": "https://www.classy-cdn-url.com/your-cover-photo.png",
  "created_at": "2016-01-01T12:00:00+0000",
  "currency_code": "USD",
  "description": "My team description",
  "designation_id": 0,
  "goal": 108.23,
  "id": 1,
  "logo_id": 1002,
  "logo_url: `https://www.classy-cdn-url.com/your-logo.png` (string) - URL for logo image. Either hardcoded URL for legacy fundraising teams or interpreted from logo asset specified by logo_id.": "Hello, world!",
  "name": "My Team",
  "organization_id": 10,
  "parent_id": 1000001,
  "postal_code": "92101",
  "raw_currency_code": "EUR",
  "raw_goal": 100,
  "state": "CA",
  "status": "active",
  "team_lead": {
    "created_at": "2016-01-01T12:00:00+0000",
    "email_address": "[email protected]",
    "first_name": "Classy",
    "id": 111,
    "last_name": "Member",
    "profile_image_id": 432,
    "thumbnail_large": "null",
    "thumbnail_medium": "null",
    "thumbnail_small": "null"
  },
  "team_lead_id": 10001,
  "team_lead_supporter_id": 10002,
  "team_policy_id": 100001,
  "thank_you_text": "Thank You!"
}

Transfer a FundraisingTeam
POST/fundraising-teams/{id}/transfers

Transfer a fundraising team within its campaign/subteam infrastructure. This is done by specifying the team’s direct parent, making it either a direct team for its campaign or a subteam for another team for its campaign.

The endpoint requires two parameters within its post body: new_parent_id and new_parent_type. These parameters are used to specify the new direct parent of the fundraising team. At the moment, this can either be the fundraising team’s campaign itself (making it a direct team for the campaign) or another fundraising team associated with the fundraising team’s campaign (making it a subteam of the specified team).

NOTE: An error will be returned if the new parent for a fundraising team is currently a subteam of the fundraising team.

Permissions

You will need a valid access token to request this endpoint. The caller must be a team lead or campaign manager for the specified fundraising team and a team lead/campaign manager for the new parent.

URI Parameters
HideShow
id
number (required) 

Fundraising Team ID

Request Body Parameters
NameTypeRequiredDescription
new_parent_idnumberRequiredThe ID of the new parent. This must reference a fundraising team associated with the campaign of the fundraising team being moved or the fundraising team's campaign itself.
new_parent_typestringRequiredThey type of the new parent. This can either be `fundraising_team` or `campaign`.
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "new_parent_id": 1000001,
  "new_parent_type": "fundraising_team"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "campaign": {
    "address1": "533 F Street",
    "allow_duplicate_fundraisers": false,
    "allow_ecards": false,
    "allow_fundraising_pages": true,
    "canonical_url": "/campaign/c0",
    "category_id": 1,
    "channel_id": 2,
    "channel_keywords: `some_keyword`": "Hello, world!",
    "city": "San Diego",
    "classy_mode_appeal": "false",
    "classy_mode_checked_by_default": false,
    "classy_mode_enabled": false,
    "collect_shipping_address": false,
    "contact_email": "[email protected]",
    "contact_phone": "619-555-1212",
    "country": "US",
    "created_at": "2016-01-01T12:00:00+0000",
    "created_with": "api",
    "currency_code": "USD",
    "default_page_appeal": "Please donate to my fundraising page",
    "default_page_appeal_email": "Please donate to my fundraising page",
    "default_page_goal": 500,
    "default_page_post_asset_id": 1,
    "default_page_post_body": "Lorem ipsum",
    "default_page_post_title": "Welcome to our team page!",
    "default_team_appeal": "Please donate to my fundraising team",
    "default_team_appeal_email": "Please donate to my fundraising team",
    "default_team_goal": 500,
    "default_team_post_asset_id": 1,
    "default_team_post_body": "Lorem ipsum",
    "default_team_post_title": "Welcome to our team page!",
    "default_thank_you_text": "Thank you so much!",
    "designation_id": 10,
    "disable_donation_attribution": false,
    "external_url": "https://classy.org",
    "goal": 108.23,
    "hide_anonymous_donations": false,
    "hide_contact_opt_in": false,
    "hide_dedications": false,
    "hide_donation_comments": false,
    "host_member_id": 1001,
    "is_billing_address_required": false,
    "is_ended_at_hidden": true,
    "is_fees_free": false,
    "is_started_at_hidden": true,
    "location_details": "Heading north on I-5...",
    "logo_id": 1002,
    "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
    "name": "My Campaign",
    "offer_dedication_postal_notifications": false,
    "opt_in_checked_by_default": false,
    "organization_id": "101",
    "postal_code": "92101",
    "raw_currency_code": "EUR",
    "raw_goal": 100,
    "send_dedication_emails": false,
    "started_at": "2016-01-01T12:00:00+0000",
    "state": "CA",
    "status": "active",
    "team_cover_photo_id": 2345,
    "team_cover_photo_url": "https://www.classy-cdn-url.com/your-team-cover-photo.png",
    "team_membership_policy": "optional",
    "ticket_pass_on_fees": false,
    "timezone_identifier: `America/Los_Angeles`": "Hello, world!",
    "type": "crowdfunding",
    "updated_at": "2016-01-01T12:00:00+0000",
    "venue": "City Townhall",
    "fixed_fot_percent": 4,
    "effective_fixed_fot_percent": 4
  },
  "campaign_id": 101,
  "canonical_url": "/team/10",
  "city": "San Diego",
  "country": "US",
  "cover_photo_id": 1111,
  "cover_photo_url": "https://www.classy-cdn-url.com/your-cover-photo.png",
  "created_at": "2016-01-01T12:00:00+0000",
  "currency_code": "USD",
  "description": "My team description",
  "designation_id": 0,
  "goal": 108.23,
  "id": 1,
  "logo_id": 1002,
  "logo_url: `https://www.classy-cdn-url.com/your-logo.png` (string) - URL for logo image. Either hardcoded URL for legacy fundraising teams or interpreted from logo asset specified by logo_id.": "Hello, world!",
  "name": "My Team",
  "organization_id": 10,
  "parent_id": 1000001,
  "postal_code": "92101",
  "raw_currency_code": "EUR",
  "raw_goal": 100,
  "state": "CA",
  "status": "active",
  "team_lead": {
    "created_at": "2016-01-01T12:00:00+0000",
    "email_address": "[email protected]",
    "first_name": "Classy",
    "id": 111,
    "last_name": "Member",
    "profile_image_id": 432,
    "thumbnail_large": "null",
    "thumbnail_medium": "null",
    "thumbnail_small": "null"
  },
  "team_lead_id": 10001,
  "team_lead_supporter_id": 10002,
  "team_policy_id": 100001,
  "thank_you_text": "Thank You!"
}

Fundraising Team Policies

Fundraising Team Policy

The Fundraising Team Policy represents a settings policy that can be applied to a Fundraising Team (parent, or sub-team). Fundraising Team Policy attributes will effect the behavior of the Team and allow or restrict certain actions such as sub-team or Fundraising Page creation. Fundraising Teams and Fundraising Team Policies share a 1:1 relationship and Fundraising Team Policy attributes are set when creating a Fundraising Team.

Fundraising Policy Defaults:

Team Policy attributes are set when creating a Fundraising Team. Any attribute that is not specified will be set to its respective default value.

Attribute Default Value
allow_subteams false
allow_fundraising_pages true
allow_transactions true
allow_cross_campaign_fundraisers false
min_members 1
max_members 1024
fundraiser_registration_policy ‘public’
allocation_method ‘manual’

Fetch a Fundraising Team Policy
GET/fundraising-team-policies/{id}

Fetch a Fundraising Team Policy using the Fundraising Team Policy ID. A Fundraising Team Policy can also be fetched with the Fundraising Team resource.

Permissions

You will need a valid access token to request this endpoint.

URI Parameters
HideShow
id
number (required) 

Fundraising Team Policy ID

Response Body Parameters
NameTypeDescription
idnumberFundraising Team Policy identifier.
organization_idnumberOrganization ID.
allow_subteamsbooleanSetting to allow sub-team creation under this team.
allow_fundraising_pagesbooleanSetting to allow fundraising pages to be created within his team.
allow_transactionsbooleanSetting to allow transactions, such as donations) directly to this team.
allow_cross_campaign_fundraisersbooleanSetting to allow Fundraisers from other Campaigns to join this team.
allocation_methodstringSetting to select the allocation method for this team. Options include 'manual' and 'automatic-split'.
min_membersnumberMinimum members required before the Team is considered active.
max_membersnumberMaximum members allowed for this Team.
fundraiser_registration_policystringFundraiser and Sub-team registration policy for this Team.
created_atstringDate team was created.
updated_atstringDate policy was last updated.
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1,
  "organization_id": 10,
  "allow_subteams": false,
  "allow_fundraising_pages": true,
  "allow_transactions": false,
  "allow_cross_campaign_fundraisers": false,
  "allocation_method": "'manual'",
  "min_members": 1,
  "max_members": 2,
  "fundraiser_registration_policy": "'public'",
  "created_at": "2016-01-01T12:00:00+0000",
  "updated_at": "2016-01-01T12:00:00+0000"
}

Update a Fundraising Team Policy
PUT/fundraising-team-policies/{id}

Update an existing Fundraising Team Policy. Please note that only a limited number of Fundraising Team Policy attributes can be updated.

Permissions

You will need a valid access token to request this endpoint. The caller must be a Campaign Manager with the Organization or a Primary Captain of the corresponding Fundraising Team to be able to edit a Fundraising Team Policy.

URI Parameters
HideShow
id
number (required) 

Fundraising Team Policy ID

Request Body Parameters
NameTypeRequiredDescription
allow_subteamsbooleanOptionalSetting to allow sub-team creation under this team.
allow_fundraising_pagesbooleanOptionalSetting to allow fundraising pages to be created within his team.
allow_transactionsbooleanOptionalSetting to allow transactions, such as donations) directly to this team.
fundraiser_registration_policystringOptionalFundraiser and Sub-team registration policy for this Team.
allocation_methodstringOptionalSetting to select the allocation method for this team. Options include 'manual' and 'automatic-split'.
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "allow_subteams": false,
  "allow_fundraising_pages": true,
  "allow_transactions": false,
  "fundraiser_registration_policy": "'public'",
  "allocation_method": "'manual'"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1,
  "organization_id": 10,
  "allow_subteams": false,
  "allow_fundraising_pages": true,
  "allow_transactions": false,
  "allow_cross_campaign_fundraisers": false,
  "allocation_method": "'manual'",
  "min_members": 1,
  "max_members": 2,
  "fundraiser_registration_policy": "'public'",
  "created_at": "2016-01-01T12:00:00+0000",
  "updated_at": "2016-01-01T12:00:00+0000"
}

Member

Member

Fetch a Member
GET/members/{idOrEmail}

Retrieve a member by his ID or his email address.

Permissions

You will need a valid access token to request this endpoint. Depending on the requester authorizations, the output of this endpoint will be a full member profile or only the member ID.

URI Parameters
HideShow
idOrEmail
string (required) 

Member ID or member email address.

Response Body Parameters
NameTypeDescription
created_atstringDate/Time member was created
date_of_birthstringDate of birth
email_addressstringEmail address
first_namestringFirst name
genderGender.
idnumberUnique ID
last_namestringLast name
profile_image_idnumberID of associated Asset representing the current profile image
thumbnail_largestringThumbnail, large
thumbnail_mediumstringThumbnail, medium
thumbnail_smallstringThumbnail, small
Example request
HideShow
Headers
Content-Type: application/json
Authorization: Bearer some-access-token
Example response  200
HideShow
Body
{
  "created_at": "2016-01-01T12:00:00+0000",
  "date_of_birth": "1984-03-01",
  "email_address": "[email protected]",
  "first_name": "Classy",
  "gender": "m",
  "id": 111,
  "last_name": "Member",
  "profile_image_id": 432,
  "thumbnail_large": "null",
  "thumbnail_medium": "null",
  "thumbnail_small": "null"
}
Example response  200
HideShow
Body
{
  "id": 111
}

Create an unclaimed account
POST/organizations/{id}/members

This call creates an unclaimed Member account for a given organization. The created member will be sent an email asking him to claim his account.

Permissions

To request this endpoint, you will need a valid access token with permissions to manage the organization or to manage one of its campaigns.

URI Parameters
HideShow
id
integer (required) 

ID of the Organization.

Request Body Parameters
NameTypeRequiredDescription
first_namestringRequiredFirst name
last_namestringRequiredLast name
email_addressstringRequiredEmail address
genderOptionalGender.
date_of_birthstringOptionalDate of birth
profile_image_idnumberOptionalID of associated Asset representing the current profile image
Example request
HideShow
Headers
Authorization: Bearer some-access-token
Body
{
  "first_name": "Classy",
  "last_name": "Member",
  "email_address": "[email protected]",
  "gender": "m",
  "date_of_birth": "1984-03-01",
  "profile_image_id": 432
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "created_at": "2016-01-01T12:00:00+0000",
  "date_of_birth": "1984-03-01",
  "email_address": "[email protected]",
  "first_name": "Classy",
  "gender": "m",
  "id": 111,
  "last_name": "Member",
  "profile_image_id": 432,
  "thumbnail_large": "null",
  "thumbnail_medium": "null",
  "thumbnail_small": "null"
}

Organization

Organization

Represents an organization account.

Organizations have two attributes that relate to Passport functionality: currency_code and currency. These two attributes are equivalent and dictate the currency code that is used to normalize all of the organization’s fundraising entities (e.g. campaigns, fundraising teams, and fundraising pages).

Retrieve a Member Organizations
GET/members/{id}/organizations

Fetches a collection of Organizations to which this Member has administration access.

Permissions

You will need a valid access token to request this endpoint. The caller must be an admin or the specified Member.

URI Parameters
HideShow
id
number (required) 

Member ID

Response Body Parameters
NameTypeDescription
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "address": "454 F street",
      "are_activity_feeds_disabled": false,
      "city": "San Diego",
      "classy_fee_percent": 5,
      "classy_subscription_plan_id": 4,
      "contact_first_name": "Contact First Name",
      "contact_last_name": "Contact Last Name",
      "contact_phone": "619-555-1212",
      "country": "US",
      "created_at": "2016-01-01T12:00:00+0000",
      "currency": "USD",
      "currency_code": "USD",
      "custom_plan_features_id": 2,
      "description": "Organization Description",
      "ein": "12345",
      "email_address": "[email protected]",
      "facebook": "my.awesome.charity",
      "fixed_fot_percent": 4,
      "has_employer_match": false,
      "id": 1,
      "is_gift_aid_available": false,
      "logo_id": 345,
      "mission": "Organization Mission",
      "name": "My Charity",
      "opt_in_wording": "I wish to receive email updates",
      "postal_code": "92101",
      "payment_provider_id": 23,
      "payment_provider_name": "Classy Pay",
      "plan_name": "My Plan",
      "signature_id": 123,
      "signature_name": "Signature Name",
      "signature_title": "Title CEO",
      "signature_url": "'http://classy.com/1.png'",
      "state": "CA",
      "status": "trial",
      "subscription_plan": 0,
      "tax_identifier": "12345",
      "thumbnail": "null",
      "timezone_identifier": "America/Chicago",
      "type": "npo",
      "twitter": "@my.awesome.charity",
      "updated_at": "2016-01-01T13:00:00+0000",
      "url": "www.myawesomecharity.org"
    }
  ]
}

Engagement Settings

Fetch Engagement Settings
GET/organizations/{id}/engagement-settings

Retrieves the Engagement Settings for an Organization.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the organization’ settings.

URI Parameters
HideShow
id
number (required) Example: 34

Organization ID

Response Body Parameters
NameTypeDescription
idnumber
emailobject
smsobject
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1,
  "email": {
    "enabled": true,
    "custom_domain": true,
    "domain_prefix": "email",
    "email_domain": "some-charity.org",
    "throttling": {
      "emails_per_day": 10000,
      "emails_per_month": 1000000
    },
    "dns": {
      "is_valid": true,
      "spf": {
        "txt_record": "v=spf1 include:classy.org ~all",
        "valid": true
      },
      "dkim": {
        "txt_record": "k=rsa; p=MIGfMA0GCSqGSIb3DQ...",
        "valid": true
      },
      "tracking": {
        "cname": "email.domain.com",
        "value": "mailgun.org",
        "valid": true
      },
      "incoming": {
        "mx_records": [
          {
            "priority": 10,
            "value": "mxa.mailgun.org"
          }
        ],
        "valid": true
      }
    }
  },
  "sms": {
    "enabled": true,
    "phone_numbers": [
      "1-555-555-5555"
    ],
    "custom_caller_id": "null"
  }
}

Engagement Settings

Update Engagement Settings
PUT/engagement-settings/{id}

Allows Email Settings to be updated to enable or disable emailing and to set a custom email domain.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the organization’ settings.

URI Parameters
HideShow
id
string (required) Example: abc123

Settings ID

Request Body Parameters
NameTypeRequiredDescription
emailobjectOptional
Example request
HideShow
Body
{
  "email": {
    "enabled": true,
    "domain_prefix": "email",
    "email_domain": "some-charity.org"
  }
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1,
  "email": {
    "enabled": true,
    "custom_domain": true,
    "domain_prefix": "email",
    "email_domain": "some-charity.org",
    "throttling": {
      "emails_per_day": 10000,
      "emails_per_month": 1000000
    },
    "dns": {
      "is_valid": true,
      "spf": {
        "txt_record": "v=spf1 include:classy.org ~all",
        "valid": true
      },
      "dkim": {
        "txt_record": "k=rsa; p=MIGfMA0GCSqGSIb3DQ...",
        "valid": true
      },
      "tracking": {
        "cname": "email.domain.com",
        "value": "mailgun.org",
        "valid": true
      },
      "incoming": {
        "mx_records": [
          {
            "priority": 10,
            "value": "mxa.mailgun.org"
          }
        ],
        "valid": true
      }
    }
  },
  "sms": {
    "enabled": true,
    "phone_numbers": [
      "1-555-555-5555"
    ],
    "custom_caller_id": "null"
  }
}

PromoCode

PromoCode

A promo code record represents a shareable string that can be used to apply a discount to the purchase one or more configured ticket types for a specified campaign. The code can specifiy either a percentage of the base price or flat amount of one or more tickets. A promo code can be configured to optionally restrict the number of times and/or a time frame during which the promo code can be used. A code can also be given a “general” designation, meaning it has no direct configurations against one or more ticket types and instead applies to all ticket types for its campaign.

List Campaign PromoCodes
GET/campaigns/{id}/promo-codes

List all promo codes associated with a campaign.

Permissions

You will need a valid member token to request this endpoint. The caller must be a campaign admin with management permissions.

URI Parameters
HideShow
id
string (required) 

Campaign ID

Response Body Parameters
NameTypeDescription
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "adjustment_amount: `10` (number) - Value to configure price adjustment when applied against an item. Can reflect either a percentage or flat amount based on associated 'adjustment_type'.": "Hello, world!",
      "adjustment_type: `percentage` (string) - Specification of how 'adjustment_amount' is applied. Either 'amount' or 'percentage'.": "Hello, world!",
      "applications_count": 22,
      "campaign_id": 234,
      "code": "TENPERCENTOFF",
      "created_at": "2018-01-15T13:15:16Z",
      "ends_at": "2018-02-17T08:00:00Z",
      "id": 123,
      "is_active": true,
      "is_general": false,
      "quantity": 100,
      "starts_at": "2018-02-11T08:00:00Z",
      "updated_at": "2018-01-17T15:35:48Z"
    }
  ]
}

List Available Campaign PromoCodes
GET/campaigns/{id}/promo-codes/available

List all available promo codes associated with a campaign. A promo code is available if it has not expired and hasn’t been used more times than its quantity attribute.

Permissions

You will need a valid member token to request this endpoint. The caller must be a campaign admin.

URI Parameters
HideShow
id
string (required) 

Campaign ID

Response Body Parameters
NameTypeDescription
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "adjustment_amount: `10` (number) - Value to configure price adjustment when applied against an item. Can reflect either a percentage or flat amount based on associated 'adjustment_type'.": "Hello, world!",
      "adjustment_type: `percentage` (string) - Specification of how 'adjustment_amount' is applied. Either 'amount' or 'percentage'.": "Hello, world!",
      "applications_count": 22,
      "campaign_id": 234,
      "code": "TENPERCENTOFF",
      "created_at": "2018-01-15T13:15:16Z",
      "ends_at": "2018-02-17T08:00:00Z",
      "id": 123,
      "is_active": true,
      "is_general": false,
      "quantity": 100,
      "starts_at": "2018-02-11T08:00:00Z",
      "updated_at": "2018-01-17T15:35:48Z"
    }
  ]
}

List Unavailable Campaign PromoCodes
GET/campaigns/{id}/promo-codes/unavailable

List all unavailable promo codes associated with a campaign. A promo code is unavailable if it has expired or has been used as many times as its quantity attribute.

Permissions

You will need a valid member token to request this endpoint. The caller must be a campaign admin.

URI Parameters
HideShow
id
string (required) 

Campaign ID

Response Body Parameters
NameTypeDescription
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "adjustment_amount: `10` (number) - Value to configure price adjustment when applied against an item. Can reflect either a percentage or flat amount based on associated 'adjustment_type'.": "Hello, world!",
      "adjustment_type: `percentage` (string) - Specification of how 'adjustment_amount' is applied. Either 'amount' or 'percentage'.": "Hello, world!",
      "applications_count": 22,
      "campaign_id": 234,
      "code": "TENPERCENTOFF",
      "created_at": "2018-01-15T13:15:16Z",
      "ends_at": "2018-02-17T08:00:00Z",
      "id": 123,
      "is_active": true,
      "is_general": false,
      "quantity": 100,
      "starts_at": "2018-02-11T08:00:00Z",
      "updated_at": "2018-01-17T15:35:48Z"
    }
  ]
}

List TicketType PromoCodes
GET/ticket-types/{id}/promo-codes

List all promo codes configured to work with the specified ticket type

Permissions

You will need a valid member token to request this endpoint. The caller must be a campaign admin.

URI Parameters
HideShow
id
string (required) 

Ticket type ID

Response Body Parameters
NameTypeDescription
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "adjustment_amount: `10` (number) - Value to configure price adjustment when applied against an item. Can reflect either a percentage or flat amount based on associated 'adjustment_type'.": "Hello, world!",
      "adjustment_type: `percentage` (string) - Specification of how 'adjustment_amount' is applied. Either 'amount' or 'percentage'.": "Hello, world!",
      "applications_count": 22,
      "campaign_id": 234,
      "code": "TENPERCENTOFF",
      "created_at": "2018-01-15T13:15:16Z",
      "ends_at": "2018-02-17T08:00:00Z",
      "id": 123,
      "is_active": true,
      "is_general": false,
      "quantity": 100,
      "starts_at": "2018-02-11T08:00:00Z",
      "updated_at": "2018-01-17T15:35:48Z"
    }
  ]
}

Create Campaign PromoCode
POST/campaigns/{id}/promo-codes

Create a promo code for the specified campaign.

Permissions

You will need a valid member token to request this endpoint. The caller must be a campaign admin.

URI Parameters
HideShow
id
string (required) 

Campaign ID

Request Body Parameters
NameTypeRequiredDescription
adjustment_amount: `10` (number) - Value to configure price adjustment when applied against an item. Can reflect either a percentage or flat amount based on associated 'adjustment_type'.stringOptional
adjustment_type: `percentage` (string) - Specification of how 'adjustment_amount' is applied. Either 'amount' or 'percentage'.stringOptional
codestringOptionalValue of the PromoCode to entered on checkout. Length is limited to 25 characters, and no whitespace is allowed. Characters will be all set to uppercase, effectively making the field case-insensitive. After the PromoCode has been applied at least once, this field cannot be changed.
ends_atstringOptionalDate and time when the PromoCode can no longer be applied to purchases.
is_activebooleanOptionalBoolean used to activate or deactivate the PromoCode regardless of availability or date range.
is_generalbooleanOptionalBoolean dictating if PromoCode has a general designation, meaning it applies to all TicketTypes for its Campaign
quantitynumberOptionalTotal number of items against which the PromoCode can be applied (null implies unlimited applications)
starts_atstringOptionalDate and time when the PromoCode can start being applied to purchases.
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "adjustment_amount: `10` (number) - Value to configure price adjustment when applied against an item. Can reflect either a percentage or flat amount based on associated 'adjustment_type'.": "Hello, world!",
  "adjustment_type: `percentage` (string) - Specification of how 'adjustment_amount' is applied. Either 'amount' or 'percentage'.": "Hello, world!",
  "code": "TENPERCENTOFF",
  "ends_at": "2018-02-17T08:00:00Z",
  "is_active": true,
  "is_general": false,
  "quantity": 100,
  "starts_at": "2018-02-11T08:00:00Z"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "adjustment_amount: `10` (number) - Value to configure price adjustment when applied against an item. Can reflect either a percentage or flat amount based on associated 'adjustment_type'.": "Hello, world!",
  "adjustment_type: `percentage` (string) - Specification of how 'adjustment_amount' is applied. Either 'amount' or 'percentage'.": "Hello, world!",
  "applications_count": 22,
  "campaign_id": 234,
  "code": "TENPERCENTOFF",
  "created_at": "2018-01-15T13:15:16Z",
  "ends_at": "2018-02-17T08:00:00Z",
  "id": 123,
  "is_active": true,
  "is_general": false,
  "quantity": 100,
  "starts_at": "2018-02-11T08:00:00Z",
  "updated_at": "2018-01-17T15:35:48Z"
}

Fetch PromoCode
GET/promo-codes/{id}

Retrieve a promo code by its ID.

Permissions

You will need a valid member token to request this endpoint. The caller must be a campaign admin.

URI Parameters
HideShow
id
string (required) 

PromoCode ID

Response Body Parameters
NameTypeDescription
adjustment_amount: `10` (number) - Value to configure price adjustment when applied against an item. Can reflect either a percentage or flat amount based on associated 'adjustment_type'.string
adjustment_type: `percentage` (string) - Specification of how 'adjustment_amount' is applied. Either 'amount' or 'percentage'.string
applications_countnumberCount of the number of times the promo code has been applied to items still in a Cart or successfully transacted against.
campaign_idnumberID of the PromoCode's campaign.
codestringValue of the PromoCode to entered on checkout. Length is limited to 25 characters, and no whitespace is allowed. Characters will be all set to uppercase, effectively making the field case-insensitive. After the PromoCode has been applied at least once, this field cannot be changed.
created_atstringTimestamp of PromoCode record's creation.
ends_atstringDate and time when the PromoCode can no longer be applied to purchases.
idnumberID of the PromoCode.
is_activebooleanBoolean used to activate or deactivate the PromoCode regardless of availability or date range.
is_generalbooleanBoolean dictating if PromoCode has a general designation, meaning it applies to all TicketTypes for its Campaign
quantitynumberTotal number of items against which the PromoCode can be applied (null implies unlimited applications)
starts_atstringDate and time when the PromoCode can start being applied to purchases.
updated_atstringTimestamp of last time the PromoCode record has been updated.
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "adjustment_amount: `10` (number) - Value to configure price adjustment when applied against an item. Can reflect either a percentage or flat amount based on associated 'adjustment_type'.": "Hello, world!",
  "adjustment_type: `percentage` (string) - Specification of how 'adjustment_amount' is applied. Either 'amount' or 'percentage'.": "Hello, world!",
  "applications_count": 22,
  "campaign_id": 234,
  "code": "TENPERCENTOFF",
  "created_at": "2018-01-15T13:15:16Z",
  "ends_at": "2018-02-17T08:00:00Z",
  "id": 123,
  "is_active": true,
  "is_general": false,
  "quantity": 100,
  "starts_at": "2018-02-11T08:00:00Z",
  "updated_at": "2018-01-17T15:35:48Z"
}

Update PromoCode
PUT/promo-codes/{id}

Update promo code with specified ID.

Permissions

You will need a valid member token to request this endpoint. The caller must be a campaign admin.

URI Parameters
HideShow
id
string (required) 

PromoCode ID

Request Body Parameters
NameTypeRequiredDescription
adjustment_amount: `10` (number) - Value to configure price adjustment when applied against an item. Can reflect either a percentage or flat amount based on associated 'adjustment_type'.stringOptional
adjustment_type: `percentage` (string) - Specification of how 'adjustment_amount' is applied. Either 'amount' or 'percentage'.stringOptional
codestringOptionalValue of the PromoCode to entered on checkout. Length is limited to 25 characters, and no whitespace is allowed. Characters will be all set to uppercase, effectively making the field case-insensitive. After the PromoCode has been applied at least once, this field cannot be changed.
ends_atstringOptionalDate and time when the PromoCode can no longer be applied to purchases.
is_activebooleanOptionalBoolean used to activate or deactivate the PromoCode regardless of availability or date range.
is_generalbooleanOptionalBoolean dictating if PromoCode has a general designation, meaning it applies to all TicketTypes for its Campaign
quantitynumberOptionalTotal number of items against which the PromoCode can be applied (null implies unlimited applications)
starts_atstringOptionalDate and time when the PromoCode can start being applied to purchases.
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "adjustment_amount: `10` (number) - Value to configure price adjustment when applied against an item. Can reflect either a percentage or flat amount based on associated 'adjustment_type'.": "Hello, world!",
  "adjustment_type: `percentage` (string) - Specification of how 'adjustment_amount' is applied. Either 'amount' or 'percentage'.": "Hello, world!",
  "code": "TENPERCENTOFF",
  "ends_at": "2018-02-17T08:00:00Z",
  "is_active": true,
  "is_general": false,
  "quantity": 100,
  "starts_at": "2018-02-11T08:00:00Z"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "adjustment_amount: `10` (number) - Value to configure price adjustment when applied against an item. Can reflect either a percentage or flat amount based on associated 'adjustment_type'.": "Hello, world!",
  "adjustment_type: `percentage` (string) - Specification of how 'adjustment_amount' is applied. Either 'amount' or 'percentage'.": "Hello, world!",
  "applications_count": 22,
  "campaign_id": 234,
  "code": "TENPERCENTOFF",
  "created_at": "2018-01-15T13:15:16Z",
  "ends_at": "2018-02-17T08:00:00Z",
  "id": 123,
  "is_active": true,
  "is_general": false,
  "quantity": 100,
  "starts_at": "2018-02-11T08:00:00Z",
  "updated_at": "2018-01-17T15:35:48Z"
}

PromoCodeConfiguration

PromoCodeConfiguration

A promo code configuration record indicates that its associated promo code can be applied to purchases of the associated ticket type.

List PromoCode PromoCodeConfigurations
GET/promo-codes/{id}/promo-code-configurations

List all configuration records associated with a promo code.

Permissions

You will need a valid member token to request this endpoint. The caller must be a campaign admin with management permissions.

URI Parameters
HideShow
id
string (required) 

PromoCode ID

Response Body Parameters
NameTypeDescription
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "id": 123,
      "promo_code_id": 234,
      "ticket_type_id": 345,
      "created_at": "2018-01-15T13:15:16Z",
      "updated_at": "2018-01-17T15:35:48Z"
    }
  ]
}

List TicketType PromoCodeConfigurations
GET/ticket-types/{id}/promo-code-configurations

List all promo code configuration records for the associated ticket type.

Permissions

You will need a valid member token to request this endpoint. The caller must be a campaign admin with management permissions.

URI Parameters
HideShow
id
string (required) 

TicketType ID

Response Body Parameters
NameTypeDescription
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "id": 123,
      "promo_code_id": 234,
      "ticket_type_id": 345,
      "created_at": "2018-01-15T13:15:16Z",
      "updated_at": "2018-01-17T15:35:48Z"
    }
  ]
}

Create PromoCodeConfiguration
POST/promo-code-configurations

Create a configuration to associate a promo code with a ticket type. Both ticket type and promo code must belong to the same campaign, and only one configuration record can exist per ticket type and promo code.

Permissions

You will need a valid member token to request this endpoint. The caller must be a campaign admin with management permissions.

Request Body Parameters
NameTypeRequiredDescription
promo_code_idnumberOptionalID of the promo code configuration's promo code.
ticket_type_idnumberOptionalID of the promo code configuration's ticket type.
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "promo_code_id": 234,
  "ticket_type_id": 345
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 123,
  "promo_code_id": 234,
  "ticket_type_id": 345,
  "created_at": "2018-01-15T13:15:16Z",
  "updated_at": "2018-01-17T15:35:48Z"
}

Delete PromoCodeConfiguration
DELETE/promo-code-configurations/{id}

Remove the configuration association between a ticket type and promo code.

Permissions

You will need a valid member token to request this endpoint. The caller must be a campaign admin with management permissions.

URI Parameters
HideShow
id
string (required) 

The ID of the PromoCodeConfiguration

Example response  204
HideShow
Headers
Content-Type: application/json

Question

Question

Questions are set up by organizations learn more about their supporters and fundraisers. These questions appear as a supporter signs up to fundraise or when making a donation.

Fetch Campaign Questions
GET/campaigns/{id}/questions

Retrieves the Question with the given ID.

Permissions

You will need a valid access token to request this endpoint.

URI Parameters
HideShow
id
string (required) 

The ID of the Campaign.

Response Body Parameters
NameTypeDescription
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "id": 1,
      "is_required": false,
      "location": "donation_page",
      "tag": "first_name",
      "created_at": "2016-01-01T12:00:00+0000",
      "updated_at": "2016-01-01T12:00:00+0000",
      "deleted_at": "2016-01-01T12:00:00+0000",
      "is_deleted": true,
      "campaign_id": 1,
      "label": "What is your favorite question?",
      "type": "string",
      "weight": 1,
      "enum_options": [
        {
          "label": "blue"
        }
      ],
      "product_id": 345
    }
  ]
}

Create Campaign Question
POST/campaigns/{id}/questions

Create a Question for the specified campaign.

Note: A Ticket from the same campaign can be associated with a Question that has a location of ‘campaign_registration’. However once a ticket is associated with question it cannot be changed as this would invalidate previously answered questions.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign.

URI Parameters
HideShow
id
string (required) 

The ID of the Campaign.

Request Body Parameters
NameTypeRequiredDescription
labelstringOptionalQuestion label
typestringOptional
enum_optionsarrayOptionalFor an enum type Question, list the possible answers.
tagstringOptionalOptional but must be unique.
is_requiredbooleanOptionalIs the user required to answer this question?
locationstringOptionalLocation where this question is asked. Can be "donation_page", "campaign_registration" or "team_creation"
weightnumberOptionalCan be used to order questions
product_id: `345` (number) - Id of ticket question is linked to. Ticket must belong to same campaign as question and question has to be of location "campaign_registration".stringOptional
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "label": "What is your favorite question?",
  "type": "string",
  "enum_options": [
    {
      "label": "blue"
    }
  ],
  "tag": "first_name",
  "is_required": false,
  "location": "donation_page",
  "weight": 1,
  "product_id: `345` (number) - Id of ticket question is linked to. Ticket must belong to same campaign as question and question has to be of location \"campaign_registration\".": "Hello, world!"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1,
  "is_required": false,
  "location": "donation_page",
  "tag": "first_name",
  "created_at": "2016-01-01T12:00:00+0000",
  "updated_at": "2016-01-01T12:00:00+0000",
  "deleted_at": "2016-01-01T12:00:00+0000",
  "is_deleted": true,
  "campaign_id": 1,
  "label": "What is your favorite question?",
  "type": "string",
  "weight": 1,
  "enum_options": [
    {
      "label": "blue"
    }
  ],
  "product_id": 345
}

Update a Question
PUT/questions/{id}

Update an existing Question.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign the question belongs to.

URI Parameters
HideShow
id
string (required) 

The ID of the desired Question.

Request Body Parameters
NameTypeRequiredDescription
labelstringOptionalQuestion label
enum_optionsarrayOptionalFor an enum type Question, list the possible answers.
weightnumberOptionalCan be used to order questions
locationstringOptionalLocation where this question is asked. Can be "donation_page", "campaign_registration" or "team_creation"
is_requiredbooleanOptionalIs the user required to answer this question?
tagstringOptionalOptional but must be unique.
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "label": "What is your favorite question?",
  "enum_options": [
    {
      "label": "blue"
    }
  ],
  "weight": 1,
  "location": "donation_page",
  "is_required": false,
  "tag": "first_name"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1,
  "is_required": false,
  "location": "donation_page",
  "tag": "first_name",
  "created_at": "2016-01-01T12:00:00+0000",
  "updated_at": "2016-01-01T12:00:00+0000",
  "deleted_at": "2016-01-01T12:00:00+0000",
  "is_deleted": true,
  "campaign_id": 1,
  "label": "What is your favorite question?",
  "type": "string",
  "weight": 1,
  "enum_options": [
    {
      "label": "blue"
    }
  ],
  "product_id": 345
}

Fetch a Question
GET/questions/{id}

Fetch an existing Question.

Permissions

To request this endpoint you will need a valid access token with reporting permission for the campaign the question belongs to.

URI Parameters
HideShow
id
string (required) 

The ID of the desired Question.

Response Body Parameters
NameTypeDescription
is_requiredbooleanIs the user required to answer this question?
locationstringLocation where this question is asked. Can be "donation_page", "campaign_registration" or "team_creation"
tagstringOptional but must be unique.
created_atstringTimestamp of creation.
updated_atstringTimestamp of last update.
deleted_atstringTimestamp of deletion.
is_deletedbooleanDEPRECATED - Indicates whether or not the question was deleted.
idnumber
campaign_idnumberID of associated Campaign.
labelstringQuestion label
typestringQuestion format
weightnumberCan be used to order questions
enum_optionsarrayFor an enum type Question, list the possible answers.
product_idnumberId of ticket question is linked to.
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 1,
  "is_required": false,
  "location": "donation_page",
  "tag": "first_name",
  "created_at": "2016-01-01T12:00:00+0000",
  "updated_at": "2016-01-01T12:00:00+0000",
  "deleted_at": "2016-01-01T12:00:00+0000",
  "is_deleted": true,
  "campaign_id": 1,
  "label": "What is your favorite question?",
  "type": "string",
  "weight": 1,
  "enum_options": [
    {
      "label": "blue"
    }
  ],
  "product_id": 345
}

Recurring Donation Plan

Recurring Donation Plan

A Recurring Donation Plan is a record of a user’s intent to provide recurring donations towards a campaign or fundraising page. The record itself contains the provided billing address and identifying credit card information for the plan. Every plan has an associated status - valid statuses include:

  • active - The plan is creating new transactions on a set interval

  • canceled - The plan no longer creates new transactions

  • attempted

  • failed - The plan’s most recent new transaction failed

It should be noted that even when a Recurring Donation Plan has an active status, it may still be failing for various reasons. The status should be used in conjunction with the failed_at timestamp to verify successful recent donations.

There are four attributes on recurring donation plans relevant to Passport functionality: raw_donation_amount, raw_currency_code, donation_amount, and currency_code.

The raw_donation_amount of a recurring donation plan indicates the amount in the currency specified by raw_currency_code that will be donated on a periodic basis. A recurring donation plan’s raw_currency_code can be set independently from that of its fundraising entity.

The donation_amount of a recurring donation plan indicates the amount of the raw_donation_amount when normalized into the organization-level currency code (specified by currency_code). Normalization occurs whenever a recurring donation plan’s raw_donation_amount is updated and will use the conversion rate from raw_currency_code to currency_code at the time the update occurs. If the raw_currency_code and currency_code of a recurring donation plan differ through previous or pending updates, the recurring donation plan’s donation_amount cannot be set manually - raw_donation_amount must be specified instead.

The currency_code attribute is directly inherited from the recurring donation plan’s organization and cannot be changed. All of an organization’s fundraising entities (e.g. campaigns, fundraising teams, and fundraising pages), transactions, and recurring donation plans share the same inherited currency_code, allowing their relative amounts to be compared on a standardized basis.

List Organization Recurring Donation Plans
GET/organizations/{id}/recurring-donation-plans

Retrieves the Recurring Donation Plans for the specified Organization.

Permissions

To request this endpoint you will need a valid access token with reporting access to the organization this plan is for.

URI Parameters
HideShow
id
number (required) 

The ID of the Organization.

Response Body Parameters
NameTypeDescription
dataarrayAn array of Recurring Donation Plans
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "address": "533 F Street",
      "applied_fot_percent": 4,
      "campaign_id": 111,
      "canceled_at": "null",
      "cc_card_exp": "201401",
      "cc_last_four": "1212",
      "cc_type": "Visa",
      "city": "San Diego",
      "country": "US",
      "created_at": "2016-01-01T12:00:00+0000",
      "designation_id": 111,
      "donation_amount": "1.00",
      "donation_is_gift_aid": false,
      "failed_at": "null",
      "fee_on_top": true,
      "first_name": "John",
      "frequency": "monthly",
      "fundraising_team_id": 0,
      "id": 111,
      "is_anonymous": true,
      "last_name": "Doe",
      "organization_id": 1111,
      "postal_code": "92101",
      "payment_provider_configuration_name": "Classy Pay",
      "raw_currency_code": "JPY",
      "raw_donation_amount": 50,
      "started_at": "2016-01-01T12:00:00+0000",
      "state": "CA",
      "status": "active",
      "supporter_id": 1234,
      "timezone_identifier": "UTC",
      "updated_at": "2016-01-01T13:00:00+0000"
    }
  ]
}

List Transactions from a Recurring Donation Plan
GET/recurring-donation-plans/{id}/transactions{?with}

Permissions

To request this endpoint you will need a valid access token with reporting access to the campaign this plan is for.

URI Parameters
HideShow
id
number (required) 

The ID of the recurring donation plan

with
string (optional) 
  • member

  • offline_payment_info

  • dedication

  • recurring_donation_plan

  • receipt_serial

  • supporter

Response Body Parameters
NameTypeDescription
dataarrayAn array of Transactions
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "account_number": "1234",
      "account_type": "savings",
      "acknowledgements_count": 3,
      "adjustment_amount: `0.50` (number) - The total value the transaction's total_gross_amount has been adjusted.": "Hello, world!",
      "applied_fot_percent": 4,
      "billing_address1": "533 F Street",
      "billing_address2": "533 F Street",
      "billing_city": "San Diego",
      "billing_country": "US",
      "billing_first_name": "Classy",
      "billing_last_name": "Member",
      "billing_postal_code": "92101",
      "billing_state": "CA",
      "browser_info": "information",
      "campaign": {
        "address1": "533 F Street",
        "allow_duplicate_fundraisers": false,
        "allow_ecards": false,
        "allow_fundraising_pages": true,
        "canonical_url": "/campaign/c0",
        "category_id": 1,
        "channel_id": 2,
        "channel_keywords: `some_keyword`": "Hello, world!",
        "city": "San Diego",
        "classy_mode_appeal": "false",
        "classy_mode_checked_by_default": false,
        "classy_mode_enabled": false,
        "collect_shipping_address": false,
        "contact_email": "[email protected]",
        "contact_phone": "619-555-1212",
        "country": "US",
        "created_at": "2016-01-01T12:00:00+0000",
        "created_with": "api",
        "currency_code": "USD",
        "default_page_appeal": "Please donate to my fundraising page",
        "default_page_appeal_email": "Please donate to my fundraising page",
        "default_page_goal": 500,
        "default_page_post_asset_id": 1,
        "default_page_post_body": "Lorem ipsum",
        "default_page_post_title": "Welcome to our team page!",
        "default_team_appeal": "Please donate to my fundraising team",
        "default_team_appeal_email": "Please donate to my fundraising team",
        "default_team_goal": 500,
        "default_team_post_asset_id": 1,
        "default_team_post_body": "Lorem ipsum",
        "default_team_post_title": "Welcome to our team page!",
        "default_thank_you_text": "Thank you so much!",
        "designation_id": 10,
        "disable_donation_attribution": false,
        "external_url": "https://classy.org",
        "goal": 108.23,
        "hide_anonymous_donations": false,
        "hide_contact_opt_in": false,
        "hide_dedications": false,
        "hide_donation_comments": false,
        "host_member_id": 1001,
        "is_billing_address_required": false,
        "is_ended_at_hidden": true,
        "is_fees_free": false,
        "is_started_at_hidden": true,
        "location_details": "Heading north on I-5...",
        "logo_id": 1002,
        "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
        "name": "My Campaign",
        "offer_dedication_postal_notifications": false,
        "opt_in_checked_by_default": false,
        "organization_id": "101",
        "postal_code": "92101",
        "raw_currency_code": "EUR",
        "raw_goal": 100,
        "send_dedication_emails": false,
        "started_at": "2016-01-01T12:00:00+0000",
        "state": "CA",
        "status": "active",
        "team_cover_photo_id": 2345,
        "team_cover_photo_url": "https://www.classy-cdn-url.com/your-team-cover-photo.png",
        "team_membership_policy": "optional",
        "ticket_pass_on_fees": false,
        "timezone_identifier: `America/Los_Angeles`": "Hello, world!",
        "type": "crowdfunding",
        "updated_at": "2016-01-01T12:00:00+0000",
        "venue": "City Townhall",
        "fixed_fot_percent": 4,
        "effective_fixed_fot_percent": 4
      },
      "campaign_id": 333,
      "card_expiration": "1017",
      "card_last_four": 1234,
      "card_type": "Visa",
      "charged_at": "2017-01-01T12:02:01+0000",
      "charged_classy_fees_amount": "0.20",
      "charged_currency_code": "USD",
      "charged_fees_amount": "0.35",
      "charged_pp_fees_amount": "0.15",
      "charged_total_gross_amount": "1.00",
      "classy_fees_amount": 0.34,
      "comment": "This is a comment",
      "company_name": "Classy",
      "context": {
        "is_passport": "false",
        "source_campaign_id": "123",
        "source_campaign_type": "peer_to_peer"
      },
      "created_at": "-2016-01-01T12:00:00+0000",
      "designation_id": 928379,
      "fees_amount": "0.35",
      "fee_on_top": false,
      "frequency": "one-time",
      "fundraising_page_id": 0,
      "fundraising_team_id": 0,
      "gross_amount": "1.00",
      "gross_donation_amount": "1.00",
      "id": 111,
      "institution": "ABC Bank",
      "in_honor_of": "Classy Relation",
      "is_anonymous": false,
      "is_gift_aid": false,
      "member_country": "US",
      "member_email_address": "[email protected]",
      "member_id": 123,
      "member_name": "Classy Member",
      "member_phone": "555-555-5555",
      "metadata": {
        "foo": "bar"
      },
      "net_donation_amount": "0.65",
      "organization_id": 222,
      "overhead_net_amount": "25.00",
      "parent_transaction_id": 0,
      "payment_gateway": "Braintree",
      "payment_method": "WPP",
      "pp_reference_id": "12345",
      "pp_transaction_id": "ABC123",
      "processor_fees_amount": 1.45,
      "promo_code_code": "PROMO",
      "purchased_at": "2016-01-01T12:00:00+0000",
      "raw_currency_code": "JPY",
      "raw_donation_gross_amount `1.25`": 1,
      "raw_overhead_net_amount `.25`": 1,
      "raw_total_gross_amount `1.00`": 1,
      "recurring_donation_plan_id": 123,
      "refunded_at": "null",
      "status": "complete",
      "supporter_id": 1123,
      "tax_entity_id": "123",
      "updated_at": "2016-01-01T12:00:00+0000"
    }
  ]
}

List Campaign Recurring Donation Plans
GET/campaigns/{id}/recurring-donation-plans

Retrieves the Recurring Donation Plans for the specified Campaign.

Permissions

To request this endpoint you will need a valid access token with reporting access to the campaign this plan is for.

URI Parameters
HideShow
id
number (required) 

The ID of the Campaign.

Response Body Parameters
NameTypeDescription
dataarrayAn array of Recurring Donation Plans
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "address": "533 F Street",
      "applied_fot_percent": 4,
      "campaign_id": 111,
      "canceled_at": "null",
      "cc_card_exp": "201401",
      "cc_last_four": "1212",
      "cc_type": "Visa",
      "city": "San Diego",
      "country": "US",
      "created_at": "2016-01-01T12:00:00+0000",
      "designation_id": 111,
      "donation_amount": "1.00",
      "donation_is_gift_aid": false,
      "failed_at": "null",
      "fee_on_top": true,
      "first_name": "John",
      "frequency": "monthly",
      "fundraising_team_id": 0,
      "id": 111,
      "is_anonymous": true,
      "last_name": "Doe",
      "organization_id": 1111,
      "postal_code": "92101",
      "payment_provider_configuration_name": "Classy Pay",
      "raw_currency_code": "JPY",
      "raw_donation_amount": 50,
      "started_at": "2016-01-01T12:00:00+0000",
      "state": "CA",
      "status": "active",
      "supporter_id": 1234,
      "timezone_identifier": "UTC",
      "updated_at": "2016-01-01T13:00:00+0000"
    }
  ]
}

List Member Recurring Donation Plans
GET/members/{id}/recurring-donation-plans

Retrieves the Recurring Donation Plans for the specified Member.

Permissions

To request this endpoint you will need a valid access token for the member requested. Note: Some fields will be be omitted if the requester is not a Classy Global Admin.

URI Parameters
HideShow
id
number (required) 

The ID of the Member.

Response Body Parameters
NameTypeDescription
dataarrayAn array of Recurring Donation Plans
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "address": "533 F Street",
      "applied_fot_percent": 4,
      "campaign_id": 111,
      "canceled_at": "null",
      "cc_card_exp": "201401",
      "cc_last_four": "1212",
      "cc_type": "Visa",
      "city": "San Diego",
      "country": "US",
      "created_at": "2016-01-01T12:00:00+0000",
      "designation_id": 111,
      "donation_amount": "1.00",
      "donation_is_gift_aid": false,
      "failed_at": "null",
      "fee_on_top": true,
      "first_name": "John",
      "frequency": "monthly",
      "fundraising_team_id": 0,
      "id": 111,
      "is_anonymous": true,
      "last_name": "Doe",
      "organization_id": 1111,
      "postal_code": "92101",
      "payment_provider_configuration_name": "Classy Pay",
      "raw_currency_code": "JPY",
      "raw_donation_amount": 50,
      "started_at": "2016-01-01T12:00:00+0000",
      "state": "CA",
      "status": "active",
      "supporter_id": 1234,
      "timezone_identifier": "UTC",
      "updated_at": "2016-01-01T13:00:00+0000"
    }
  ]
}

Fetch a Recurring Donation Plan
GET/recurring-donation-plans/{id}

Retrieves a specified Recurring Donation Plan.

Permissions

To request this endpoint you will need a valid access token with reporting access. You may also use an access token representing the member who initiated this plan.

URI Parameters
HideShow
id
number (required) 

The ID of the Recurring Donation Plan

with
string (optional) 
  • member

  • fundraising_team

  • fundraising_page

  • campaign

  • designation

  • supporter

Response Body Parameters
NameTypeDescription
addressstringBilling address
applied_fot_percentnumberThe percentage to be added to all fee on top (aka Classy Mode) transactions created for this plan.
campaign_idnumberID for Recurring Donation Plan's Campaign
canceled_atstringDatetime representing cancellation time(can be null)
cc_card_expstringExpiration date for the credit card used
cc_last_fourstringLast four digits of the credit card used
cc_typestringType of credit card used
citystringBilling city
countrystringBilling country
created_atstringRecurring Donation Plan created date
designation_idnumberID for the designation the transactions created from the recurring donation plan will be allocated.
donation_amountstringRecurring donation amount in the organization's currency.
donation_is_gift_aidbooleanFlag whether the donor opts into gift aid used by the UK or not. Can only be set if the organization allows it.
failed_atstringDatetime representing the last time the recurring donation failed
fee_on_topbooleanFlag describing if the recurring donation covers fees.
first_namestringFirst name of recurring donator
frequencystringRate at which a recurring transaction against this plan is made
fundraising_team_idnumberID of Fundraising Team receiving the recurring donation
idnumberID of Recurring Donation Plan
is_anonymousbooleanFlag determining if the transactions should be anonymized.
last_namestringLast name of recurring donator
metadataobjectArbitrary JSON metadata
organization_idnumberID for the Recurring Donation Plan's Organization
postal_codestringBilling postal code
payment_provider_configuration_namestringThe Recurring Donation Plan Payment Provider.
raw_currency_codestringThe currency code of the plan's transactions. Cannot be updated after being set.
raw_donation_amountnumberThe value donated, in the raw currency.
scheduleobjectJSON information specifying schedule for recurring transaction creation.
started_atstringStart time for recurring donations
statestringBilling state
statusstringStatus of Recurring Donation Plan
supporter_idnumberID of the supporter that associates the member and the organization.
timezone_identifierstringIdentifier of timezone against which recurring charges will be made.
updated_atstringLast modification date
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "address": "533 F Street",
  "applied_fot_percent": 4,
  "campaign_id": 111,
  "canceled_at": "null",
  "cc_card_exp": "201401",
  "cc_last_four": "1212",
  "cc_type": "Visa",
  "city": "San Diego",
  "country": "US",
  "created_at": "2016-01-01T12:00:00+0000",
  "designation_id": 111,
  "donation_amount": "1.00",
  "donation_is_gift_aid": false,
  "failed_at": "null",
  "fee_on_top": true,
  "first_name": "John",
  "frequency": "monthly",
  "fundraising_team_id": 0,
  "id": 111,
  "is_anonymous": true,
  "last_name": "Doe",
  "organization_id": 1111,
  "postal_code": "92101",
  "payment_provider_configuration_name": "Classy Pay",
  "raw_currency_code": "JPY",
  "raw_donation_amount": 50,
  "started_at": "2016-01-01T12:00:00+0000",
  "state": "CA",
  "status": "active",
  "supporter_id": 1234,
  "timezone_identifier": "UTC",
  "updated_at": "2016-01-01T13:00:00+0000"
}

List Recurring Donation Plan History
GET/recurring-donation-plans/{id}/history

List the history for a recurring donation plan

Permissions

To request this endpoint you will need a valid access token with reporting access. You may also use an access token representing the member who initiated this plan.

URI Parameters
HideShow
id
number (required) 

The ID of the Recurring Donation Plan

Example response  200
HideShow
Headers
Content-Type: application/json
Body
[
  {
    "created_at": "2016-01-01T12:00:00+0000",
    "donation_amount": 100,
    "error_msg": "There was an error",
    "id": 533,
    "recurring_id": 234,
    "transaction_id": 234,
    "type": "created"
  }
]

Registration

Registration

Registration records show information pertaining to event attendance, either through a ticket purchase or basic registration.

Fetch Transaction Registrations
GET/transactions/{id}/registrations{?with}

Retrieves the Registration records associated with the specified Transaction

Permissions

To request this endpoint you will need a valid access token with permissions to access the reporting of the related campaign. Alternatively you may use an access token representing the member who initiated the transaction.

URI Parameters
HideShow
id
string (required) 

The ID of the Transaction.

with
string (optional) 

Related resources that can be appended to the response.

  • campaign

  • registering_member

  • transaction

  • transaction_item

  • fundraising_page

Response Body Parameters
NameTypeDescription
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "address1": "123 Example Street",
      "address2": "Apt C",
      "attendee_id": 1234,
      "blog": "http://www.blog.com",
      "campaign_id": 111,
      "cell": "(123) 456-7890",
      "city": "San Diego",
      "company": "My Company Inc.",
      "country": "US",
      "created_at": "2017-01-03 12:00:00",
      "updated_at": "2016-01-03 13:00:00",
      "date_of_birth": "1982-01-12 00:00:00",
      "email": "[email protected]",
      "first_name": "Test",
      "fundraising_page_id": 222,
      "gender": "F",
      "id": 333,
      "last_name": "Registrant",
      "member_id": 444,
      "phone": "(555) 123-4567",
      "postal_code": "92101",
      "state": "CA",
      "status": "attending",
      "transaction_id": 555,
      "transaction_item_id": 666,
      "tshirt_size": "WM",
      "website": "http://www.website.com"
    }
  ]
}

Get Registration
GET/registrations/{id}

Retrieves the Registration with the given ID.

Permissions

To request this endpoint the requester must have reporting access to the Campaign this Registration belongs to.

URI Parameters
HideShow
id
string (required) 

The ID of the Registration.

Response Body Parameters
NameTypeDescription
address1stringAddress1
address2stringAddress2
attendee_idnumberUnique ID for attendee for an organization. Not to be confused with the id attribute which is a unique ID for the registration record. This is the attendee ID field that is displayed in Classy attendee reports.
blogstringBlog URL
campaign_idnumberID of campaign registered for
cellstringCell phone
citystringCity
companystringCompany
countrystringCountry
created_atstringDate registration was created
updated_atstringLast modification date
date_of_birthstringDate of birth
emailstringEmail address
first_namestringFirst name
fundraising_page_idnumberID of fundraising page registered through
genderstringGender
idnumberUnique ID
last_namestringLast name
member_idnumberID of member registered
phonestringPhone number
postal_codestringZip/Postal code
statestringState/Province
statusstringStatus of this registrations Indicates whether or not the registrant is planning on attending the event. Possible values: 'attending' & 'not_attending'.
transaction_idnumberID of transaction registration belongs to
transaction_item_idnumberID of transaction item of registration
tshirt_sizestringT-Shirt size
websitestringWebsite URL
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "address1": "123 Example Street",
  "address2": "Apt C",
  "attendee_id": 1234,
  "blog": "http://www.blog.com",
  "campaign_id": 111,
  "cell": "(123) 456-7890",
  "city": "San Diego",
  "company": "My Company Inc.",
  "country": "US",
  "created_at": "2017-01-03 12:00:00",
  "updated_at": "2016-01-03 13:00:00",
  "date_of_birth": "1982-01-12 00:00:00",
  "email": "[email protected]",
  "first_name": "Test",
  "fundraising_page_id": 222,
  "gender": "F",
  "id": 333,
  "last_name": "Registrant",
  "member_id": 444,
  "phone": "(555) 123-4567",
  "postal_code": "92101",
  "state": "CA",
  "status": "attending",
  "transaction_id": 555,
  "transaction_item_id": 666,
  "tshirt_size": "WM",
  "website": "http://www.website.com"
}

Update a Registration
PUT/registrations/{id}

Update an existing Registration.

Permissions

To request this endpoint the requester must have reporting access to the Campaign this Registration belongs to.

URI Parameters
HideShow
id
string (required) 

The ID of the desired Registration.

Request Body Parameters
NameTypeRequiredDescription
address1stringOptionalAddress1
address2stringOptionalAddress2 (optional)
blogstringOptionalBlog URL (optional)
cellstringOptionalCell phone (optional)
citystringOptionalCity (optional)
companystringOptionalCompany
countrystringOptionalCountry (optional)
date_of_birthstringOptionalDate of birth
emailstringOptionalEmail address
first_namestringOptionalFirst name
genderstringOptionalGender
last_namestringOptionalLast name
phonestringOptionalPhone number
postal_codestringOptionalZip/Postal code (optional)
statestringOptionalState/Province (optional)
statusstringOptionalStatus of this registrations. Indicates whether or not the registrant is planning on attending the event. Possible values: 'attending' & 'not_attending'.
tshirt_sizestringOptionalT-Shirt size (optional)
websitestringOptionalWebsite URL (optional)
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "address1": "123 Example Street",
  "address2": "Apt C",
  "blog": "http://www.blog.com",
  "cell": "(123) 456-7890",
  "city": "San Diego",
  "company": "My Company Inc.",
  "country": "US",
  "date_of_birth": "1982-01-12 00:00:00",
  "email": "[email protected]",
  "first_name": "Test",
  "gender": "F",
  "last_name": "Registrant",
  "phone": "(555) 123-4567",
  "postal_code": "92101",
  "state": "CA",
  "status": "attending",
  "tshirt_size": "WM",
  "website": "http://www.website.com"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "address1": "123 Example Street",
  "address2": "Apt C",
  "attendee_id": 1234,
  "blog": "http://www.blog.com",
  "campaign_id": 111,
  "cell": "(123) 456-7890",
  "city": "San Diego",
  "company": "My Company Inc.",
  "country": "US",
  "created_at": "2017-01-03 12:00:00",
  "updated_at": "2016-01-03 13:00:00",
  "date_of_birth": "1982-01-12 00:00:00",
  "email": "[email protected]",
  "first_name": "Test",
  "fundraising_page_id": 222,
  "gender": "F",
  "id": 333,
  "last_name": "Registrant",
  "member_id": 444,
  "phone": "(555) 123-4567",
  "postal_code": "92101",
  "state": "CA",
  "status": "attending",
  "transaction_id": 555,
  "transaction_item_id": 666,
  "tshirt_size": "WM",
  "website": "http://www.website.com"
}

Fetch Campaign Registrations
GET/campaigns/{id}/registrations{?with}

Retrieves the Registration records associated with the specified Campaign

Permissions

To request this endpoint you will need a valid access token with permissions to manage the related campaign.

URI Parameters
HideShow
id
string (required) 

The ID of the Campaign.

with
string (optional) 

Related resources that can be appended to the response.

  • campaign

  • registering_member

  • transaction

  • transaction_item

  • fundraising_page

Response Body Parameters
NameTypeDescription
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "address1": "123 Example Street",
      "address2": "Apt C",
      "attendee_id": 1234,
      "blog": "http://www.blog.com",
      "campaign_id": 111,
      "cell": "(123) 456-7890",
      "city": "San Diego",
      "company": "My Company Inc.",
      "country": "US",
      "created_at": "2017-01-03 12:00:00",
      "updated_at": "2016-01-03 13:00:00",
      "date_of_birth": "1982-01-12 00:00:00",
      "email": "[email protected]",
      "first_name": "Test",
      "fundraising_page_id": 222,
      "gender": "F",
      "id": 333,
      "last_name": "Registrant",
      "member_id": 444,
      "phone": "(555) 123-4567",
      "postal_code": "92101",
      "state": "CA",
      "status": "attending",
      "transaction_id": 555,
      "transaction_item_id": 666,
      "tshirt_size": "WM",
      "website": "http://www.website.com"
    }
  ]
}

Source Tracking Codes

Some organizations have multiple marketing channels to support their cause. Source Tracking Codes are internal codes classy uses to identify which marketing channel a supporter passed through.

Source Tracking Codes

List Organization Source Tracking Codes

List Organization Source Tracking Codes
GET/organizations/{id}/source-tracking-codes{?fundraisingPages}{?fundraisingTeams}{?transactions}

Lists all transaction, fundraising page, and fundraising team source tracking codes which are managed by the organization. You can specify subsets to return by setting any of the above query params to true. If none are specified, the default behavior is true.

Permissions

To request this endpoint you must be a Organization Reporting Manager.

URI Parameters
HideShow
id
number (required) 

The ID of the Organization

fundraisingPages
boolean (optional) 

Flag to fetch source codes associated to fundraising pages under the campaign.

fundraisingTeams
boolean (optional) 

Flag to fetch source codes associated to fundraising teams under the campaign.

transactions
boolean (optional) 

Flag to fetch source codes associated to transactions under the campaign.

Response Body Parameters
NameTypeDescription
dataarrayAn array of Source Tracking Codes.
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "id": 1234,
      "c_src": "code123",
      "c_src2": "code123",
      "referrer": "www.classy.org",
      "event_type": "landing_page.hit",
      "trackable_id": 1234,
      "trackable_type": "transaction"
    }
  ]
}

List Campaign Source Tracking Codes

List Campaign Source Tracking Codes
GET/campaigns/{id}/source-tracking-codes{?fundraisingPages}{?fundraisingTeams}{?transactions}

Lists all transaction, fundraising page, and fundraising team source tracking codes which are managed by the campaign. You can specify subsets to return by setting any of the above query params to true. If none are specified, the default behavior is true.

Permissions

To request this endpoint you must be a Campaign Admin or a Organization Reporting Manager.

URI Parameters
HideShow
id
number (required) 

The ID of the Campaign

fundraisingPages
boolean (optional) 

Flag to fetch source codes associated to fundraising pages under the campaign.

fundraisingTeams
boolean (optional) 

Flag to fetch source codes associated to fundraising teams under the campaign.

transactions
boolean (optional) 

Flag to fetch source codes associated to transactions under the campaign.

Response Body Parameters
NameTypeDescription
dataarrayAn array of Source Tracking Codes.
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "id": 1234,
      "c_src": "code123",
      "c_src2": "code123",
      "referrer": "www.classy.org",
      "event_type": "landing_page.hit",
      "trackable_id": 1234,
      "trackable_type": "transaction"
    }
  ]
}

Supporter

Supporter

Retrieve a Supporter
GET/supporters/{id}{?with}

Retrieves the Supporter with the given ID.

Permissions

To request this endpoint you will need a valid access token with permissions to access the reporting of the organization or of the campaign this supporter belongs to.

URI Parameters
HideShow
id
string (required) 

The ID of the desired Supporter.

with
string (optional) 
  • member
Response Body Parameters
NameTypeDescription
address1stringAddress
citystringCity
countrystringCountry
created_atstringDate and time supporter created
email_addressstringEmail address
first_namestringFirst name
genderstringGender
idnumberUnique ID of supporter
last_email_atstringDate and time of last communication to supporter
last_namestringLast name
metadatastringJSON string for storing arbitrary metadata
nicknamestringNickname/Alias
opt_inbooleanWhether supporter has opted in to updates/communication
originstringDescribes how the Supporter first touched the Organization. For example, 'donation' means the supporter donated to the organization, 'campaign_fundraiser' means that the supporter became a fundraiser for the campaign, etc.
phonestringPhone number
postal_codestringZip/Postal code
source_campaign_idnumber
source_member_idnumber
source_organization_idnumberID of organization supporter belongs to
statestringState/Province
updated_atstringDate and time supporter was modified
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "address1": "533 F St",
  "city": "San Diego",
  "country": "US",
  "created_at": "2016-01-01T12:00:00+0000",
  "email_address": "[email protected]",
  "first_name": "Pete",
  "gender": "M",
  "id": 1,
  "last_email_at": "2016-01-01T12:00:00+0000",
  "last_name": "Mitchell",
  "metadata": "{\"foo\": \"bar\"}",
  "nickname": "Maverick",
  "opt_in": true,
  "origin": "donation",
  "phone": "619-555-1212",
  "postal_code": "92101",
  "source_campaign_id": 101,
  "source_member_id": 10001,
  "source_organization_id": 1001,
  "state": "CA",
  "updated_at": "2016-01-01T13:00:00+0000"
}

Fetch Organization Supporters
GET/organizations/{id}/supporters

Fetch all Supporters associated with the specified Organization.

Permissions

To request this endpoint you will need a valid access token with permissions to access the reporting of the organization.

URI Parameters
HideShow
id
string (required) 

Organization ID

Response Body Parameters
NameTypeDescription
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "address1": "533 F St",
      "city": "San Diego",
      "country": "US",
      "created_at": "2016-01-01T12:00:00+0000",
      "email_address": "[email protected]",
      "first_name": "Pete",
      "gender": "M",
      "id": 1,
      "last_email_at": "2016-01-01T12:00:00+0000",
      "last_name": "Mitchell",
      "metadata": "{\"foo\": \"bar\"}",
      "nickname": "Maverick",
      "opt_in": true,
      "origin": "donation",
      "phone": "619-555-1212",
      "postal_code": "92101",
      "source_campaign_id": 101,
      "source_member_id": 10001,
      "source_organization_id": 1001,
      "state": "CA",
      "updated_at": "2016-01-01T13:00:00+0000"
    }
  ]
}

Create an Organization Supporter
POST/organizations/{id}/supporters

Create a supporter for the specified organization.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the organization.

URI Parameters
HideShow
id
string (required) 

Organization ID

Request Body Parameters
NameTypeRequiredDescription
address1stringOptionalAddress
address2stringOptionalAddress
citystringOptionalCity
countrystringOptionalCountry
email_addressstringOptionalThe email address of the supporter.
first_namestringOptionalFirst name
genderstringOptionalGender
last_namestringOptionalLast name
metadatastringOptionalJSON string for storing arbitrary metadata
nicknamestringOptionalNickname/Alias
phonestringOptionalPhone number
postal_codestringOptionalZip/Postal code
statestringOptionalState/Province. Required if country is US
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "address1": "533 F St",
  "address2": "'Apt 2'",
  "city": "San Diego",
  "country": "US",
  "email_address": "'[email protected]'",
  "first_name": "Pete",
  "gender": "M",
  "last_name": "Mitchell",
  "metadata": "{\"foo\": \"bar\"}",
  "nickname": "'Maverick'",
  "phone": "619-555-1212",
  "postal_code": "92101",
  "state": "CA"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "address1": "533 F St",
  "city": "San Diego",
  "country": "US",
  "created_at": "2016-01-01T12:00:00+0000",
  "email_address": "[email protected]",
  "first_name": "Pete",
  "gender": "M",
  "id": 1,
  "last_email_at": "2016-01-01T12:00:00+0000",
  "last_name": "Mitchell",
  "metadata": "{\"foo\": \"bar\"}",
  "nickname": "Maverick",
  "opt_in": true,
  "origin": "donation",
  "phone": "619-555-1212",
  "postal_code": "92101",
  "source_campaign_id": 101,
  "source_member_id": 10001,
  "source_organization_id": 1001,
  "state": "CA",
  "updated_at": "2016-01-01T13:00:00+0000"
}

Update Supporter
PUT/supporters/{id}

Update a Supporter by ID.

Permissions

To request this endpoint you will need a valid access token with permissions to manage the organization.

URI Parameters
HideShow
id
string (required) 

Supporter ID

Request Body Parameters
NameTypeRequiredDescription
address1stringOptionalAddress
address2stringOptionalAddress
citystringOptionalCity
countrystringOptionalCountry
email_addressstringOptionalThe email address of the supporter.
first_namestringOptionalFirst name
genderstringOptionalGender
last_namestringOptionalLast name
metadatastringOptionalJSON string for storing arbitrary metadata
nicknamestringOptionalNickname/Alias
phonestringOptionalPhone number
postal_codestringOptionalZip/Postal code
statestringOptionalState/Province. Required if country is US
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "address1": "533 F St",
  "address2": "'Apt 2'",
  "city": "San Diego",
  "country": "US",
  "email_address": "'[email protected]'",
  "first_name": "Pete",
  "gender": "M",
  "last_name": "Mitchell",
  "metadata": "{\"foo\": \"bar\"}",
  "nickname": "'Maverick'",
  "phone": "619-555-1212",
  "postal_code": "92101",
  "state": "CA"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "address1": "533 F St",
  "city": "San Diego",
  "country": "US",
  "created_at": "2016-01-01T12:00:00+0000",
  "email_address": "[email protected]",
  "first_name": "Pete",
  "gender": "M",
  "id": 1,
  "last_email_at": "2016-01-01T12:00:00+0000",
  "last_name": "Mitchell",
  "metadata": "{\"foo\": \"bar\"}",
  "nickname": "Maverick",
  "opt_in": true,
  "origin": "donation",
  "phone": "619-555-1212",
  "postal_code": "92101",
  "source_campaign_id": 101,
  "source_member_id": 10001,
  "source_organization_id": 1001,
  "state": "CA",
  "updated_at": "2016-01-01T13:00:00+0000"
}

Delete Supporter
DELETE/supporters/{id}

Delete a Supporter by ID.

Permissions

To request this endpoint you will need a valid access token with reporting access to the organization.

URI Parameters
HideShow
id
string (required) 

Supporter ID

Example response  200
HideShow
Headers
Content-Type: application/json

Ticket Types

TicketTypes

A Ticket Type defines the available ticket(s) for a ticketed campaign. For example, ‘General Admission’ or ‘VIP’

This defines what types of tickets are available. It is NOT an instance of a specific ticket or purchase history of a ticket.

E.g. ‘General Admission’, quantity 1,000.

This is NOT a specific instance of a ticket or purchase history of a ticket. It defines what types of tickets are available.

Fetch Campaign TicketTypes
GET/campaigns/{id}/ticket-types

Permissions

To request this endpoint you will need a valid access token.

URI Parameters
HideShow
id
string (required) Example: 1

Campaign ID

Example response  200
HideShow
Headers
Content-Type: application/json

List Promo Code Ticket Types
GET/promo-codes/{id}/ticket-types

List all ticket types configured to work with the specified promo code

Permissions

You will need a valid member token to request this endpoint. The caller must be a campaign admin with management permissions.

URI Parameters
HideShow
id
string (required) 

Ticket type ID

Response Body Parameters
NameTypeDescription
dataarray
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "campaign_id": 111,
      "created_at": "'2016",
      "description": "Ticket Type description",
      "ended_at": "'2016",
      "entries_per_ticket": 3,
      "id": 111,
      "is_active": true,
      "is_classy_mode": false,
      "max_per_transaction": 1,
      "name": "'General Admission'",
      "org_percent: `100` (number) - DEPRECATED.  Use deductible_percent": "Hello, world!",
      "deductible_percent: `100` (number) - Percentage of ticket price that is considered donation to campaign (May only specify deductible_percent OR deductible_amount)": "Hello, world!",
      "deductible_amount: `5.00` (number) - Amount of ticket price that is considered donation to campaign (May only specify deductible_percent OR deductible_amount)": "Hello, world!",
      "price": 10,
      "quantity_available": 2,
      "quantity_sold": 0,
      "quantity_reserved": 0,
      "started_at": "'2016",
      "updated_at": "'2016",
      "weight": 1
    }
  ]
}

Create TicketType for Campaign
POST/campaigns/{id}/ticket-types

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign.

URI Parameters
HideShow
id
string (required) 

Campaign ID

Request Body Parameters
NameTypeRequiredDescription
descriptionstringOptionalDescription of TicketType
ended_atstringOptional01-01T12:00:00+0000' (string) - Date when TicketType is no longer available
entries_per_ticketnumberOptionalHow many entries a Ticket of this type grants to a purchaser
is_activebooleanOptionalWhether TicketType is available to purchase
max_per_transactionnumberOptionalThe most Tickets of this type that be purchased in a single transaction
namestringOptionalThe name of the TicketType
org_percent: `100` (number) - DEPRECATED. Use deductible_percentstringOptional
deductible_percent: `100` (number) - Percentage of ticket price that is considered donation to campaign (May only specify deductible_percent OR deductible_amount)stringOptional
deductible_amount: `5.00` (number) - Amount of ticket price that is considered donation to campaign (May only specify deductible_percent OR deductible_amount)stringOptional
pricenumberOptionalPrice of a single Ticket of this type.
quantity_availablenumberOptionalQuantity of Tickets available for purchase. Use 'null' for unlimited tickets.
started_atstringOptional01-01T12:00:00+0000' (string) - Date when TicketType can start being purchased
weightnumberOptionalDisplay order
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "description": "Ticket Type description",
  "ended_at": "'2016",
  "entries_per_ticket": 3,
  "is_active": true,
  "max_per_transaction": 1,
  "name": "'General Admission'",
  "org_percent: `100` (number) - DEPRECATED.  Use deductible_percent": "Hello, world!",
  "deductible_percent: `100` (number) - Percentage of ticket price that is considered donation to campaign (May only specify deductible_percent OR deductible_amount)": "Hello, world!",
  "deductible_amount: `5.00` (number) - Amount of ticket price that is considered donation to campaign (May only specify deductible_percent OR deductible_amount)": "Hello, world!",
  "price": 10,
  "quantity_available": 2,
  "started_at": "'2016",
  "weight": 1
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "campaign_id": 111,
  "created_at": "'2016",
  "description": "Ticket Type description",
  "ended_at": "'2016",
  "entries_per_ticket": 3,
  "id": 111,
  "is_active": true,
  "is_classy_mode": false,
  "max_per_transaction": 1,
  "name": "'General Admission'",
  "org_percent: `100` (number) - DEPRECATED.  Use deductible_percent": "Hello, world!",
  "deductible_percent: `100` (number) - Percentage of ticket price that is considered donation to campaign (May only specify deductible_percent OR deductible_amount)": "Hello, world!",
  "deductible_amount: `5.00` (number) - Amount of ticket price that is considered donation to campaign (May only specify deductible_percent OR deductible_amount)": "Hello, world!",
  "price": 10,
  "quantity_available": 2,
  "quantity_sold": 0,
  "quantity_reserved": 0,
  "started_at": "'2016",
  "updated_at": "'2016",
  "weight": 1
}

Fetch TicketType
GET/ticket-types/{id}

URI Parameters
HideShow
id
string (required) 

The ticket type ID

Response Body Parameters
NameTypeDescription
campaign_idnumberThe ID of the Campaign the TicketType belongs to
created_atstring01-01T12:00:00+0000' (string) - Timestamp from when TicketType was created
descriptionstringDescription of TicketType
ended_atstring01-02T12:00:00+0000' (string) - Date when TicketType is no longer available
entries_per_ticketnumberHow many entries a TicketType grants to a purchaser
idnumberThe ID of the TicketType
is_activebooleanWhether TicketType is available to purchase
is_classy_modebooleanWhether TicketType is fees on top. (Depreciated).
max_per_transactionnumberThe most Tickets of this type that be purchased in a single transaction
namestringThe name of the TicketType
org_percent: `100` (number) - DEPRECATED. Use deductible_percentstring
deductible_percent: `100` (number) - Percentage of ticket price that is considered donation to campaign (May only specify deductible_percent OR deductible_amount)string
deductible_amount: `5.00` (number) - Amount of ticket price that is considered donation to campaign (May only specify deductible_percent OR deductible_amount)string
pricenumberPrice of a single Ticket of this type.
quantity_availablenumberQuantity of Tickets available for purchase
quantity_soldnumberQuantity of Tickets that have been sold. Only available for FRS campaigns.
quantity_reservednumberQuantity of Tickets that are reserved awaiting checkout/payment. Only available for FRS campaigns.
started_atstring01-01T12:00:00+0000' (string) - Date when Tickets of this type can start being purchased
updated_atstring01-01T12:00:00+0000' (string) - Date when Tickets of this type was last updated
weightnumberDisplay order
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "campaign_id": 111,
  "created_at": "'2016",
  "description": "Ticket Type description",
  "ended_at": "'2016",
  "entries_per_ticket": 3,
  "id": 111,
  "is_active": true,
  "is_classy_mode": false,
  "max_per_transaction": 1,
  "name": "'General Admission'",
  "org_percent: `100` (number) - DEPRECATED.  Use deductible_percent": "Hello, world!",
  "deductible_percent: `100` (number) - Percentage of ticket price that is considered donation to campaign (May only specify deductible_percent OR deductible_amount)": "Hello, world!",
  "deductible_amount: `5.00` (number) - Amount of ticket price that is considered donation to campaign (May only specify deductible_percent OR deductible_amount)": "Hello, world!",
  "price": 10,
  "quantity_available": 2,
  "quantity_sold": 0,
  "quantity_reserved": 0,
  "started_at": "'2016",
  "updated_at": "'2016",
  "weight": 1
}

Update TicketType
PUT/ticket-types/{id}

Permissions

To request this endpoint you will need a valid access token with permissions to manage the campaign the TicketType belongs to.

URI Parameters
HideShow
id
string (required) 

The ticket type ID

Request Body Parameters
NameTypeRequiredDescription
descriptionstringOptionalDescription of TicketType
ended_atstringOptional01-01T12:00:00+0000' (string) - Date when TicketType is no longer available
entries_per_ticketnumberOptionalHow many entries a Ticket of this type grants to a purchaser
is_activebooleanOptionalWhether TicketType is available to purchase
max_per_transactionnumberOptionalThe most Tickets of this type that be purchased in a single transaction
namestringOptionalThe name of the TicketType
org_percent: `100` (number) - DEPRECATED. Use deductible_percentstringOptional
deductible_percent: `100` (number) - Percentage of ticket price that is considered donation to campaign (May only specify deductible_percent OR deductible_amount)stringOptional
deductible_amount: `5.00` (number) - Amount of ticket price that is considered donation to campaign (May only specify deductible_percent OR deductible_amount)stringOptional
pricenumberOptionalPrice of a single Ticket of this type.
quantity_availablenumberOptionalQuantity of Tickets available for purchase. Use 'null' for unlimited tickets.
started_atstringOptional01-01T12:00:00+0000' (string) - Date when TicketType can start being purchased
weightnumberOptionalDisplay order
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "description": "Ticket Type description",
  "ended_at": "'2016",
  "entries_per_ticket": 3,
  "is_active": true,
  "max_per_transaction": 1,
  "name": "'General Admission'",
  "org_percent: `100` (number) - DEPRECATED.  Use deductible_percent": "Hello, world!",
  "deductible_percent: `100` (number) - Percentage of ticket price that is considered donation to campaign (May only specify deductible_percent OR deductible_amount)": "Hello, world!",
  "deductible_amount: `5.00` (number) - Amount of ticket price that is considered donation to campaign (May only specify deductible_percent OR deductible_amount)": "Hello, world!",
  "price": 10,
  "quantity_available": 2,
  "started_at": "'2016",
  "weight": 1
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "campaign_id": 111,
  "created_at": "'2016",
  "description": "Ticket Type description",
  "ended_at": "'2016",
  "entries_per_ticket": 3,
  "id": 111,
  "is_active": true,
  "is_classy_mode": false,
  "max_per_transaction": 1,
  "name": "'General Admission'",
  "org_percent: `100` (number) - DEPRECATED.  Use deductible_percent": "Hello, world!",
  "deductible_percent: `100` (number) - Percentage of ticket price that is considered donation to campaign (May only specify deductible_percent OR deductible_amount)": "Hello, world!",
  "deductible_amount: `5.00` (number) - Amount of ticket price that is considered donation to campaign (May only specify deductible_percent OR deductible_amount)": "Hello, world!",
  "price": 10,
  "quantity_available": 2,
  "quantity_sold": 0,
  "quantity_reserved": 0,
  "started_at": "'2016",
  "updated_at": "'2016",
  "weight": 1
}

Transaction

Transaction

Transactions have three types of attributes relating to Passport: raw, charged, and normalized.

Raw attributes reflect the donor/purchaser’s intent when creating the transaction. The only attribute directly specified on the transaction is raw_currency_code - the other visible attributes (raw_total_gross_amount, raw_donation_gross_amount, and raw_overhead_net_amount) are all derived from the raw values set on the transaction’s items.

Charged attributes reflect the values that are actually charged when the payment is processed. Since the potential values for a transaction’s charged_currency_code should be limited to those available to an organization for processing, this value can differ from the transaction’s raw_currency_code. The amount that is charged is reflected in charged_total_gross_amount, while the fees are expressed in charged_classy_fees_amount and charged_pp_fees_amount (charged_fees_amount attribute is the sum of these two attributes). There is additionally a charged_at timestamp that is used for normalization.

Normalized attributes reflect a conversion from raw and/or charged attributes into the transaction’s currency_code, which is the same for all Passport-enabled entities associated with the transaction’s organization. This normalization occurs to allow for a constant basis of comparison across each of these entities. These normalized values are all converted from the associated raw or charged attributes, preferring the charged attribute over the raw attribute if available. For example, charged_total_gross_amount will be used instead of raw_total_gross_amount if both charged_total_gross_amount and charged_currency_code are present. If charged_at is also present, the exchange rate between charged_currency_code and currency_code at that time will be used if/when the transaction is renormalized.

It should be noted that there is no notion of raw fees, as these are calculated at the time that a transaction is charged and therefore only reflected as charged attributes. If a transaction is flagged as “fee-on-top”, this will be reflected by an increase in the charged_total_gross_amount that will not be visible in raw_total_gross_amount.

Transactions may be in a number of different states:

  • success

  • incomplete

  • canceled

  • refunded

  • cb_initiated

  • cb_lost

  • test

An additional transaction attribute relating to Passport is the tax_entity_id. Tax entities indicate that an organization is tax compliant within a certain country. A single organization may have more than one tax entity. The tax_entity_id listed on the transaction indicates which of the organization’s tax entities indicates the tax compliance of the transaction.

Transactions may have an associated ‘context’ attribute which provides data about the transaction’s original campaign (this does not change between hard credit transfers) and whether or not the transaction is considered to incorporate Passport functionality. This attribute can be used for filtering and/or sorting when using index endpoints.

List Organization Transactions
GET/organizations/{id}/transactions{?with}

Retrieves the Transactions for the specified Organization.

Permissions

To request this endpoint you will need a valid access token with permissions to access the organization reporting.

URI Parameters
HideShow
id
number (required) 

The ID of the Organization.

with
string (optional) 
  • supporter
Response Body Parameters
NameTypeDescription
dataarrayAn array of Transactions
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "account_number": "1234",
      "account_type": "savings",
      "acknowledgements_count": 3,
      "adjustment_amount: `0.50` (number) - The total value the transaction's total_gross_amount has been adjusted.": "Hello, world!",
      "applied_fot_percent": 4,
      "billing_address1": "533 F Street",
      "billing_address2": "533 F Street",
      "billing_city": "San Diego",
      "billing_country": "US",
      "billing_first_name": "Classy",
      "billing_last_name": "Member",
      "billing_postal_code": "92101",
      "billing_state": "CA",
      "browser_info": "information",
      "campaign": {
        "address1": "533 F Street",
        "allow_duplicate_fundraisers": false,
        "allow_ecards": false,
        "allow_fundraising_pages": true,
        "canonical_url": "/campaign/c0",
        "category_id": 1,
        "channel_id": 2,
        "channel_keywords: `some_keyword`": "Hello, world!",
        "city": "San Diego",
        "classy_mode_appeal": "false",
        "classy_mode_checked_by_default": false,
        "classy_mode_enabled": false,
        "collect_shipping_address": false,
        "contact_email": "[email protected]",
        "contact_phone": "619-555-1212",
        "country": "US",
        "created_at": "2016-01-01T12:00:00+0000",
        "created_with": "api",
        "currency_code": "USD",
        "default_page_appeal": "Please donate to my fundraising page",
        "default_page_appeal_email": "Please donate to my fundraising page",
        "default_page_goal": 500,
        "default_page_post_asset_id": 1,
        "default_page_post_body": "Lorem ipsum",
        "default_page_post_title": "Welcome to our team page!",
        "default_team_appeal": "Please donate to my fundraising team",
        "default_team_appeal_email": "Please donate to my fundraising team",
        "default_team_goal": 500,
        "default_team_post_asset_id": 1,
        "default_team_post_body": "Lorem ipsum",
        "default_team_post_title": "Welcome to our team page!",
        "default_thank_you_text": "Thank you so much!",
        "designation_id": 10,
        "disable_donation_attribution": false,
        "external_url": "https://classy.org",
        "goal": 108.23,
        "hide_anonymous_donations": false,
        "hide_contact_opt_in": false,
        "hide_dedications": false,
        "hide_donation_comments": false,
        "host_member_id": 1001,
        "is_billing_address_required": false,
        "is_ended_at_hidden": true,
        "is_fees_free": false,
        "is_started_at_hidden": true,
        "location_details": "Heading north on I-5...",
        "logo_id": 1002,
        "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
        "name": "My Campaign",
        "offer_dedication_postal_notifications": false,
        "opt_in_checked_by_default": false,
        "organization_id": "101",
        "postal_code": "92101",
        "raw_currency_code": "EUR",
        "raw_goal": 100,
        "send_dedication_emails": false,
        "started_at": "2016-01-01T12:00:00+0000",
        "state": "CA",
        "status": "active",
        "team_cover_photo_id": 2345,
        "team_cover_photo_url": "https://www.classy-cdn-url.com/your-team-cover-photo.png",
        "team_membership_policy": "optional",
        "ticket_pass_on_fees": false,
        "timezone_identifier: `America/Los_Angeles`": "Hello, world!",
        "type": "crowdfunding",
        "updated_at": "2016-01-01T12:00:00+0000",
        "venue": "City Townhall",
        "fixed_fot_percent": 4,
        "effective_fixed_fot_percent": 4
      },
      "campaign_id": 333,
      "card_expiration": "1017",
      "card_last_four": 1234,
      "card_type": "Visa",
      "charged_at": "2017-01-01T12:02:01+0000",
      "charged_classy_fees_amount": "0.20",
      "charged_currency_code": "USD",
      "charged_fees_amount": "0.35",
      "charged_pp_fees_amount": "0.15",
      "charged_total_gross_amount": "1.00",
      "classy_fees_amount": 0.34,
      "comment": "This is a comment",
      "company_name": "Classy",
      "context": {
        "is_passport": "false",
        "source_campaign_id": "123",
        "source_campaign_type": "peer_to_peer"
      },
      "created_at": "-2016-01-01T12:00:00+0000",
      "designation_id": 928379,
      "fees_amount": "0.35",
      "fee_on_top": false,
      "frequency": "one-time",
      "fundraising_page_id": 0,
      "fundraising_team_id": 0,
      "gross_amount": "1.00",
      "gross_donation_amount": "1.00",
      "id": 111,
      "institution": "ABC Bank",
      "in_honor_of": "Classy Relation",
      "is_anonymous": false,
      "is_gift_aid": false,
      "member_country": "US",
      "member_email_address": "[email protected]",
      "member_id": 123,
      "member_name": "Classy Member",
      "member_phone": "555-555-5555",
      "metadata": {
        "foo": "bar"
      },
      "net_donation_amount": "0.65",
      "organization_id": 222,
      "overhead_net_amount": "25.00",
      "parent_transaction_id": 0,
      "payment_gateway": "Braintree",
      "payment_method": "WPP",
      "pp_reference_id": "12345",
      "pp_transaction_id": "ABC123",
      "processor_fees_amount": 1.45,
      "promo_code_code": "PROMO",
      "purchased_at": "2016-01-01T12:00:00+0000",
      "raw_currency_code": "JPY",
      "raw_donation_gross_amount `1.25`": 1,
      "raw_overhead_net_amount `.25`": 1,
      "raw_total_gross_amount `1.00`": 1,
      "recurring_donation_plan_id": 123,
      "refunded_at": "null",
      "status": "complete",
      "supporter_id": 1123,
      "tax_entity_id": "123",
      "updated_at": "2016-01-01T12:00:00+0000"
    }
  ]
}

List Campaign Transactions
GET/campaigns/{id}/transactions{?with}

Retrieves the Transactions for the specified Campaign.

Permissions

To request this endpoint you will need a valid access token with permissions to access the campaign reporting.

URI Parameters
HideShow
id
number (required) 

The ID of the Campaign.

with
string (optional) 
  • supporter
Response Body Parameters
NameTypeDescription
dataarrayAn array of Transactions
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "data": [
    {
      "account_number": "1234",
      "account_type": "savings",
      "acknowledgements_count": 3,
      "adjustment_amount: `0.50` (number) - The total value the transaction's total_gross_amount has been adjusted.": "Hello, world!",
      "applied_fot_percent": 4,
      "billing_address1": "533 F Street",
      "billing_address2": "533 F Street",
      "billing_city": "San Diego",
      "billing_country": "US",
      "billing_first_name": "Classy",
      "billing_last_name": "Member",
      "billing_postal_code": "92101",
      "billing_state": "CA",
      "browser_info": "information",
      "campaign": {
        "address1": "533 F Street",
        "allow_duplicate_fundraisers": false,
        "allow_ecards": false,
        "allow_fundraising_pages": true,
        "canonical_url": "/campaign/c0",
        "category_id": 1,
        "channel_id": 2,
        "channel_keywords: `some_keyword`": "Hello, world!",
        "city": "San Diego",
        "classy_mode_appeal": "false",
        "classy_mode_checked_by_default": false,
        "classy_mode_enabled": false,
        "collect_shipping_address": false,
        "contact_email": "[email protected]",
        "contact_phone": "619-555-1212",
        "country": "US",
        "created_at": "2016-01-01T12:00:00+0000",
        "created_with": "api",
        "currency_code": "USD",
        "default_page_appeal": "Please donate to my fundraising page",
        "default_page_appeal_email": "Please donate to my fundraising page",
        "default_page_goal": 500,
        "default_page_post_asset_id": 1,
        "default_page_post_body": "Lorem ipsum",
        "default_page_post_title": "Welcome to our team page!",
        "default_team_appeal": "Please donate to my fundraising team",
        "default_team_appeal_email": "Please donate to my fundraising team",
        "default_team_goal": 500,
        "default_team_post_asset_id": 1,
        "default_team_post_body": "Lorem ipsum",
        "default_team_post_title": "Welcome to our team page!",
        "default_thank_you_text": "Thank you so much!",
        "designation_id": 10,
        "disable_donation_attribution": false,
        "external_url": "https://classy.org",
        "goal": 108.23,
        "hide_anonymous_donations": false,
        "hide_contact_opt_in": false,
        "hide_dedications": false,
        "hide_donation_comments": false,
        "host_member_id": 1001,
        "is_billing_address_required": false,
        "is_ended_at_hidden": true,
        "is_fees_free": false,
        "is_started_at_hidden": true,
        "location_details": "Heading north on I-5...",
        "logo_id": 1002,
        "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
        "name": "My Campaign",
        "offer_dedication_postal_notifications": false,
        "opt_in_checked_by_default": false,
        "organization_id": "101",
        "postal_code": "92101",
        "raw_currency_code": "EUR",
        "raw_goal": 100,
        "send_dedication_emails": false,
        "started_at": "2016-01-01T12:00:00+0000",
        "state": "CA",
        "status": "active",
        "team_cover_photo_id": 2345,
        "team_cover_photo_url": "https://www.classy-cdn-url.com/your-team-cover-photo.png",
        "team_membership_policy": "optional",
        "ticket_pass_on_fees": false,
        "timezone_identifier: `America/Los_Angeles`": "Hello, world!",
        "type": "crowdfunding",
        "updated_at": "2016-01-01T12:00:00+0000",
        "venue": "City Townhall",
        "fixed_fot_percent": 4,
        "effective_fixed_fot_percent": 4
      },
      "campaign_id": 333,
      "card_expiration": "1017",
      "card_last_four": 1234,
      "card_type": "Visa",
      "charged_at": "2017-01-01T12:02:01+0000",
      "charged_classy_fees_amount": "0.20",
      "charged_currency_code": "USD",
      "charged_fees_amount": "0.35",
      "charged_pp_fees_amount": "0.15",
      "charged_total_gross_amount": "1.00",
      "classy_fees_amount": 0.34,
      "comment": "This is a comment",
      "company_name": "Classy",
      "context": {
        "is_passport": "false",
        "source_campaign_id": "123",
        "source_campaign_type": "peer_to_peer"
      },
      "created_at": "-2016-01-01T12:00:00+0000",
      "designation_id": 928379,
      "fees_amount": "0.35",
      "fee_on_top": false,
      "frequency": "one-time",
      "fundraising_page_id": 0,
      "fundraising_team_id": 0,
      "gross_amount": "1.00",
      "gross_donation_amount": "1.00",
      "id": 111,
      "institution": "ABC Bank",
      "in_honor_of": "Classy Relation",
      "is_anonymous": false,
      "is_gift_aid": false,
      "member_country": "US",
      "member_email_address": "[email protected]",
      "member_id": 123,
      "member_name": "Classy Member",
      "member_phone": "555-555-5555",
      "metadata": {
        "foo": "bar"
      },
      "net_donation_amount": "0.65",
      "organization_id": 222,
      "overhead_net_amount": "25.00",
      "parent_transaction_id": 0,
      "payment_gateway": "Braintree",
      "payment_method": "WPP",
      "pp_reference_id": "12345",
      "pp_transaction_id": "ABC123",
      "processor_fees_amount": 1.45,
      "promo_code_code": "PROMO",
      "purchased_at": "2016-01-01T12:00:00+0000",
      "raw_currency_code": "JPY",
      "raw_donation_gross_amount `1.25`": 1,
      "raw_overhead_net_amount `.25`": 1,
      "raw_total_gross_amount `1.00`": 1,
      "recurring_donation_plan_id": 123,
      "refunded_at": "null",
      "status": "complete",
      "supporter_id": 1123,
      "tax_entity_id": "123",
      "updated_at": "2016-01-01T12:00:00+0000"
    }
  ]
}

Fetch a Transaction
GET/transactions/{id}{?with}

Retrieves the Transaction with the given ID. Fields returned can change depending on permission level.

Permissions

To request this endpoint you will need a valid access token with permissions to access the reporting of the campaign the transaction was made for. Alternatively you may use an access token of the member who initiated this transaction.

URI Parameters
HideShow
id
string (required) 

The ID of the desired Transaction.

with
string (optional) 
- campaign
- member
- offline_payment_info
- items
- answers
- dedication
- fundraising_page
- fundraising_team
- organization
- receipt_serial
- recurring_donation_plan
- supporter
Response Body Parameters
NameTypeDescription
account_numberstringFor ACH, the last digits of the account funds were drawn from
account_typestringFor ACH, what type of account funds were drawn from (savings, checking)
acknowledgements_countnumberNumber of times transaction was acknowledged (aka "thanked") by staff
adjustment_amount: `0.50` (number) - The total value the transaction's total_gross_amount has been adjusted.string
applied_fot_percentnumberPercentage added to Fee on Top (aka Classy Mode) transactions to cover fees. Null if the transaction is not fee on top.
billing_address1stringBilling address
billing_address2stringBilling address 2
billing_citystringBilling city
billing_countrystringBilling country
billing_first_namestringBilling first name
billing_last_namestringBilling last name
billing_postal_codestringBilling zip/postal code
billing_statestringBilling state/province
browser_infostringBrowser Information
campaignobject
campaign_idnumberID of campaign transaction is associated with
card_expirationstringThe expiration of credit card used (when applicable), in MMYY format
card_last_fournumberThe last four digits of the credit card (when applicable)
card_typestringType of credit card used (when applicable)
charged_atstringDate and time transaction was charged
charged_classy_fees_amountstringTotal fees applied by Classy
charged_currency_codestringCurrency code of final charge
charged_fees_amountstringTotal fees applied to transaction (Classy and payment processor)
charged_pp_fees_amountstring
charged_total_gross_amountstringGross total charged to purchaser
classy_fees_amountnumberAmount of fees apply by Classy
commentstringOrganization comment
company_namestringName of company this transaction has ties to
contextobjectContextual data about the transaction that can be used for filtering/sorting
created_atstringDate transaction record was created
designation_idnumberID of the Designation this Transaction is allocated to.
fees_amountstringTotal fees applied to transaction (Classy and credit card processing)
fee_on_topbooleanFlag if the transaction is a fee on top or not
frequencystringFrequency of transaction: one-time or recurring
fundraising_page_idnumberID of the fundraising page transaction is associated with
fundraising_team_idnumberID of fundraising team transaction is associated with
gross_amountstringGross total specified by purchaser
gross_donation_amountstringNet amount considered donation for purchaser
idnumberUnique ID of the transaction
institutionstringFor ACH, the name of the banking institution funds were drawn from
in_honor_ofstringA person this donation is in honor or memory of
is_anonymousbooleanWhether purchaser indicated if transaction should be anonymous
is_gift_aidbooleanFlag whether the donor opted into gift aid used by the UK or not. Can only be set if the organization allows it.
member_countrystringCountry of the member.
member_email_addressstringEmail address of purchaser Classy member
member_idnumberPrimary Id of the purchaser Classy member.
member_namestringName of purchaser Classy member
member_phonestringPhone number
metadataobjectAn optional set of unstructured metadata to be stored with a transaction
net_donation_amountstringNet total paid to organization
organization_idnumberID of organization transaction is associated with
overhead_net_amountstringAmount of event/host fees
parent_transaction_idnumber
payment_gatewaystringPayment processor. (Underlying payment processor for Classy Pay)
payment_methodstringService for processing payment (e.g. Classy Pay, WePay, etc.)
pp_reference_idstringClassy Pay ONLY - Reference ID for underlying transaction processing.
pp_transaction_idstringReference transaction ID for payment processor
processor_fees_amountnumberAmount of fees applied by payment processor
promo_code_codestringThe code of the promo code applied to the transaction.
purchased_atstringDate and time of transaction
raw_currency_codestringCurrency Code of the transaction before normalization.
raw_donation_gross_amount `1.25`numberGross total applied to purchaser in the raw currency. This is raw total gross amount in addition to raw overhead net amount.
raw_overhead_net_amount `.25`numberNet Amount of event/host fees in the raw currency.
raw_total_gross_amount `1.00`numberGross amount charged to purchaser if raw currency code is set.
recurring_donation_plan_idnumberID of recurring donation plan the transaction belongs to. If there is no recurring donation plan then this is null.
refunded_atstringDate and time of refund, if applies
statusstringStatus of transaction
supporter_idnumberSupporter ID associated with the member.
tax_entity_idstringTax entity that satisfies tax compliance for the transaction
updated_atstringDate and time of last update
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "account_number": "1234",
  "account_type": "savings",
  "acknowledgements_count": 3,
  "adjustment_amount: `0.50` (number) - The total value the transaction's total_gross_amount has been adjusted.": "Hello, world!",
  "applied_fot_percent": 4,
  "billing_address1": "533 F Street",
  "billing_address2": "533 F Street",
  "billing_city": "San Diego",
  "billing_country": "US",
  "billing_first_name": "Classy",
  "billing_last_name": "Member",
  "billing_postal_code": "92101",
  "billing_state": "CA",
  "browser_info": "information",
  "campaign": {
    "address1": "533 F Street",
    "allow_duplicate_fundraisers": false,
    "allow_ecards": false,
    "allow_fundraising_pages": true,
    "canonical_url": "/campaign/c0",
    "category_id": 1,
    "channel_id": 2,
    "channel_keywords: `some_keyword`": "Hello, world!",
    "city": "San Diego",
    "classy_mode_appeal": "false",
    "classy_mode_checked_by_default": false,
    "classy_mode_enabled": false,
    "collect_shipping_address": false,
    "contact_email": "[email protected]",
    "contact_phone": "619-555-1212",
    "country": "US",
    "created_at": "2016-01-01T12:00:00+0000",
    "created_with": "api",
    "currency_code": "USD",
    "default_page_appeal": "Please donate to my fundraising page",
    "default_page_appeal_email": "Please donate to my fundraising page",
    "default_page_goal": 500,
    "default_page_post_asset_id": 1,
    "default_page_post_body": "Lorem ipsum",
    "default_page_post_title": "Welcome to our team page!",
    "default_team_appeal": "Please donate to my fundraising team",
    "default_team_appeal_email": "Please donate to my fundraising team",
    "default_team_goal": 500,
    "default_team_post_asset_id": 1,
    "default_team_post_body": "Lorem ipsum",
    "default_team_post_title": "Welcome to our team page!",
    "default_thank_you_text": "Thank you so much!",
    "designation_id": 10,
    "disable_donation_attribution": false,
    "external_url": "https://classy.org",
    "goal": 108.23,
    "hide_anonymous_donations": false,
    "hide_contact_opt_in": false,
    "hide_dedications": false,
    "hide_donation_comments": false,
    "host_member_id": 1001,
    "is_billing_address_required": false,
    "is_ended_at_hidden": true,
    "is_fees_free": false,
    "is_started_at_hidden": true,
    "location_details": "Heading north on I-5...",
    "logo_id": 1002,
    "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
    "name": "My Campaign",
    "offer_dedication_postal_notifications": false,
    "opt_in_checked_by_default": false,
    "organization_id": "101",
    "postal_code": "92101",
    "raw_currency_code": "EUR",
    "raw_goal": 100,
    "send_dedication_emails": false,
    "started_at": "2016-01-01T12:00:00+0000",
    "state": "CA",
    "status": "active",
    "team_cover_photo_id": 2345,
    "team_cover_photo_url": "https://www.classy-cdn-url.com/your-team-cover-photo.png",
    "team_membership_policy": "optional",
    "ticket_pass_on_fees": false,
    "timezone_identifier: `America/Los_Angeles`": "Hello, world!",
    "type": "crowdfunding",
    "updated_at": "2016-01-01T12:00:00+0000",
    "venue": "City Townhall",
    "fixed_fot_percent": 4,
    "effective_fixed_fot_percent": 4
  },
  "campaign_id": 333,
  "card_expiration": "1017",
  "card_last_four": 1234,
  "card_type": "Visa",
  "charged_at": "2017-01-01T12:02:01+0000",
  "charged_classy_fees_amount": "0.20",
  "charged_currency_code": "USD",
  "charged_fees_amount": "0.35",
  "charged_pp_fees_amount": "0.15",
  "charged_total_gross_amount": "1.00",
  "classy_fees_amount": 0.34,
  "comment": "This is a comment",
  "company_name": "Classy",
  "context": {
    "is_passport": "false",
    "source_campaign_id": "123",
    "source_campaign_type": "peer_to_peer"
  },
  "created_at": "-2016-01-01T12:00:00+0000",
  "designation_id": 928379,
  "fees_amount": "0.35",
  "fee_on_top": false,
  "frequency": "one-time",
  "fundraising_page_id": 0,
  "fundraising_team_id": 0,
  "gross_amount": "1.00",
  "gross_donation_amount": "1.00",
  "id": 111,
  "institution": "ABC Bank",
  "in_honor_of": "Classy Relation",
  "is_anonymous": false,
  "is_gift_aid": false,
  "member_country": "US",
  "member_email_address": "[email protected]",
  "member_id": 123,
  "member_name": "Classy Member",
  "member_phone": "555-555-5555",
  "metadata": {
    "foo": "bar"
  },
  "net_donation_amount": "0.65",
  "organization_id": 222,
  "overhead_net_amount": "25.00",
  "parent_transaction_id": 0,
  "payment_gateway": "Braintree",
  "payment_method": "WPP",
  "pp_reference_id": "12345",
  "pp_transaction_id": "ABC123",
  "processor_fees_amount": 1.45,
  "promo_code_code": "PROMO",
  "purchased_at": "2016-01-01T12:00:00+0000",
  "raw_currency_code": "JPY",
  "raw_donation_gross_amount `1.25`": 1,
  "raw_overhead_net_amount `.25`": 1,
  "raw_total_gross_amount `1.00`": 1,
  "recurring_donation_plan_id": 123,
  "refunded_at": "null",
  "status": "complete",
  "supporter_id": 1123,
  "tax_entity_id": "123",
  "updated_at": "2016-01-01T12:00:00+0000"
}

Create an Offline Transaction
POST/campaigns/{id}/transactions{?auto_allocate}

Creates an “offline” transaction record for the specified campaign. An offline transaction represents funds collected outside of the Classy platform, but accounted for in Classy reporting, activity feeds, etc. Adding an offline transaction record does not charge an credit cards, nor credit any Classy accounts.

An array of TransactionItems must be included along with the basic Transaction information via the items attribute. Please view the Transaction Item documentation for formatting pertaining to this attribute.

NOTE: requests must include one of the following

  • billing_first_name AND billing_last_name

  • OR member_email_address

  • OR company_name

Requests may contain all three. Please note that if an offline transaction only contains a company_name and is therefore a transaction by a company and not a person then answers will not be created for that transaction.

If the transaction is being made on behalf of a fundraising team which as automatic soft credit allocation enabled, passing auto_allocate=false as a GET parameter can be used to prevent automatic allocation for the newly-created transaction. This is useful in the case where a transaction has been previously allocated outside of the Classy platform and soft credits will be manually created later.

The following values are acceptable for the offline_payment_info.payment_type:

  • cash

  • check

  • cc

  • pledge

  • sponsor

  • other

In addition, the offline_payment_info.sync_third_party field should be set to true if it is desired to sync the offline transaction to a third-party like Salesforce.

Permissions

To request this endpoint you will need a valid access token with permissions to access the campaign reporting.

URI Parameters
HideShow
id
number (required) 

The ID of the Campaign

auto_allocate
boolean (required) 

A flag to prevent a potential soft credit allocation of the transaction (given that the transaction is being made for a fundraising team with an automatic allocation policy)

Request Body Parameters
NameTypeRequiredDescription
answersarrayOptional(optional)
billing_address1stringOptionalBilling address (optional)
billing_citystringOptionalBilling city (optional)
billing_countrystringOptionalBilling country (optional)
billing_first_namestringRequiredBilling first name (required if no member_email_address)
billing_last_namestringRequiredBilling last name (required if no member_email_address)
billing_postal_codestringOptionalBilling zip/postal code (optional)
billing_statestringOptionalBilling state/province. Required if billing country is US
commentstringOptionalOrganization comment (optional)
fundraising_page_idnumberOptionalID of fundraising page transaction is associated with (optional)
fundraising_team_idnumberOptionalID of fundraising team transaction is associated with (optional)
is_anonymousbooleanOptionalWhether purchaser indicated if transaction should be anonymous (optional)
itemsarrayRequired(required)
member_email_addressstringRequiredEmail address of purchaser Classy member (required if no billing_first_name and billing_last_name)
member_namestringOptionalName of purchaser Classy member (optional)
member_phonestringOptionalPhone number
metadataobjectOptionalAn optional set of unstructured metadata to be stored with a transaction
offline_payment_infoobjectOptional(optional)
parent_transaction_idnumberOptional(optional)
purchased_atstringOptionalDate and time of transaction (optional)
refunded_atstringOptionalDate and time of refund, if applies (optional)
is_gift_aidbooleanOptionalFlag whether the donor opted into gift aid used by the UK or not. Can only be set if the organization allows it.
designation_idnumberOptionalID of the Designation this Transaction is allocated to.
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "answers": [
    {
      "answer": "Yes",
      "question_id": 232531
    }
  ],
  "billing_address1": "533 F Street",
  "billing_city": "San Diego",
  "billing_country": "US",
  "billing_first_name": "Classy",
  "billing_last_name": "Member",
  "billing_postal_code": "92101",
  "billing_state": "CA",
  "comment": "This is a comment",
  "fundraising_page_id": 222,
  "fundraising_team_id": 333,
  "is_anonymous": false,
  "items": [
    {
      "overhead_amount": 25,
      "price": 55,
      "product_id": 123,
      "product_name": "Offline Donation",
      "quantity": 2,
      "type": "donation"
    }
  ],
  "member_email_address": "[email protected]",
  "member_name": "Classy Member",
  "member_phone": "555-555-5555",
  "metadata": {
    "foo": "bar"
  },
  "offline_payment_info": {
    "check_number": "123456",
    "description": "Transaction Item Description",
    "payment_type": "cash",
    "sync_third_party": false
  },
  "parent_transaction_id": 110,
  "purchased_at": "2016-01-01T12:00:00+0000",
  "refunded_at": "2016-01-02T12:00:00+0000",
  "is_gift_aid": false,
  "designation_id": 928379
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "account_number": "1234",
  "account_type": "savings",
  "answers": [
    {
      "answer": "Yes",
      "campaign_id": 312,
      "campaign_registration_id": 0,
      "created_at": "2016-03-24 12:18:59",
      "fundraising_page_id": 0,
      "id": "2342",
      "member_id": "2341234",
      "question_id": 232531,
      "transaction_id": 123
    }
  ],
  "applied_fot_percent": 4,
  "billing_address1": "533 F Street",
  "billing_city": "San Diego",
  "billing_country": "US",
  "billing_first_name": "Classy",
  "billing_last_name": "Member",
  "billing_postal_code": "92101",
  "billing_state": "CA",
  "card_expiration": "1017",
  "card_type": "Visa",
  "charged_at": "2017-01-01T12:02:01+0000",
  "charged_classy_fees_amount": "0.20",
  "charged_currency_code": "USD",
  "charged_fees_amount": "0.35",
  "charged_pp_fees_amount": "0.15",
  "charged_total_gross_amount": "1.00",
  "comment": "This is a comment",
  "company_name": "Classy",
  "context": {
    "is_passport": "false",
    "source_campaign_id": "123",
    "source_campaign_type": "peer_to_peer"
  },
  "created_at": "2016-01-01T12:00:00+0000",
  "designation_id": 928379,
  "frequency": "one-time",
  "fundraising_page_id": 222,
  "fundraising_team_id": 333,
  "id": 234,
  "institution": "ABC Bank",
  "is_anonymous": false,
  "is_gift_aid": false,
  "items": [
    {
      "campaign_id": 333,
      "fees_amount": 1,
      "fundraising_page_id": 222,
      "fundraising_team_id": 333,
      "gross_amount": 110,
      "product_id": 0,
      "product_name": "Offline Donation",
      "product_price": 55,
      "quantity": 2,
      "transaction_id": 234,
      "type": "offline_donation"
    }
  ],
  "member_email_address": "[email protected]",
  "member_name": "Classy Member",
  "member_phone": "555-555-5555",
  "metadata": {
    "foo": "bar"
  },
  "overhead_amount": "25.00",
  "parent_transaction_id": 110,
  "payment_gateway": "Braintree",
  "payment_method": "Offline",
  "purchased_at": "2016-01-01T12:00:00+0000",
  "refunded_at": "2016-01-02T12:00:00+0000"
}

Update a Transaction
PUT/transactions/{id}

Updates a Transaction with the specified ID.

Any Transaction may have the following attributes updated only:

  • billing_first_name

  • billing_last_name

  • billing_address1

  • billing_city

  • billing_state

  • billing_postal_code

  • billing_country

  • company_name

  • comment

  • is_anonymous

  • member_email_address

  • member_name

  • purchased_at

  • answers (performs a replace if answers is in the request)

Additionally, offline transactions, incomplete transactions, and donation transactions can receive updates to the following attributes:

  • items (performs a replace if items is in the request)

  • offline_payment_info

Please view the Transaction Item documentation for formatting pertaining to the items attribute.

Permissions

To request this endpoint you will need a valid access token with permissions to access the reporting of the campaign this transaction was made for.

URI Parameters
HideShow
id
string (required) 

The ID of the desired Transaction

Request Body Parameters
NameTypeRequiredDescription
billing_address1stringOptionalBilling address
billing_citystringOptionalBilling city
billing_countrystringOptionalBilling country
billing_first_namestringOptionalBilling first name
billing_last_namestringOptionalBilling last name
billing_postal_codestringOptionalBilling zip/postal code
billing_statestringOptionalBilling state/province
commentstringOptionalOrganization comment
company_namestringOptionalName of company this transaction has ties to
designation_idnumberOptionalID of the Designation this Transaction is allocated to.
is_anonymousbooleanOptionalWhether purchaser indicated if transaction should be anonymous
is_gift_aidbooleanOptionalFlag whether the donor opted into gift aid used by the UK or not. Can only be set if the organization allows it.
member_email_addressstringOptionalEmail address of purchaser Classy member
member_namestringOptionalName of purchaser classy member
member_phonestringOptionalPhone number
metadataobjectOptionalAn optional set of unstructured metadata to be stored with a transaction
purchased_atstringOptionalDate and time of transaction
statusstringOptionalThe status of the transaction
Example request
HideShow
Headers
Content-Type: application/json
Body
{
  "billing_address1": "533 F Street",
  "billing_city": "San Diego",
  "billing_country": "US",
  "billing_first_name": "Classy",
  "billing_last_name": "Member",
  "billing_postal_code": "92101",
  "billing_state": "CA",
  "comment": "This is a comment",
  "company_name": "Classy",
  "designation_id": 928379,
  "is_anonymous": false,
  "is_gift_aid": false,
  "member_email_address": "[email protected]",
  "member_name": "Classy Member",
  "member_phone": "555-555-5555",
  "metadata": {
    "foo": "bar"
  },
  "purchased_at": "2016-01-01T12:00:00+0000",
  "status": "canceled"
}
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "account_number": "1234",
  "account_type": "savings",
  "acknowledgements_count": 3,
  "adjustment_amount: `0.50` (number) - The total value the transaction's total_gross_amount has been adjusted.": "Hello, world!",
  "applied_fot_percent": 4,
  "billing_address1": "533 F Street",
  "billing_address2": "533 F Street",
  "billing_city": "San Diego",
  "billing_country": "US",
  "billing_first_name": "Classy",
  "billing_last_name": "Member",
  "billing_postal_code": "92101",
  "billing_state": "CA",
  "browser_info": "information",
  "campaign": {
    "address1": "533 F Street",
    "allow_duplicate_fundraisers": false,
    "allow_ecards": false,
    "allow_fundraising_pages": true,
    "canonical_url": "/campaign/c0",
    "category_id": 1,
    "channel_id": 2,
    "channel_keywords: `some_keyword`": "Hello, world!",
    "city": "San Diego",
    "classy_mode_appeal": "false",
    "classy_mode_checked_by_default": false,
    "classy_mode_enabled": false,
    "collect_shipping_address": false,
    "contact_email": "[email protected]",
    "contact_phone": "619-555-1212",
    "country": "US",
    "created_at": "2016-01-01T12:00:00+0000",
    "created_with": "api",
    "currency_code": "USD",
    "default_page_appeal": "Please donate to my fundraising page",
    "default_page_appeal_email": "Please donate to my fundraising page",
    "default_page_goal": 500,
    "default_page_post_asset_id": 1,
    "default_page_post_body": "Lorem ipsum",
    "default_page_post_title": "Welcome to our team page!",
    "default_team_appeal": "Please donate to my fundraising team",
    "default_team_appeal_email": "Please donate to my fundraising team",
    "default_team_goal": 500,
    "default_team_post_asset_id": 1,
    "default_team_post_body": "Lorem ipsum",
    "default_team_post_title": "Welcome to our team page!",
    "default_thank_you_text": "Thank you so much!",
    "designation_id": 10,
    "disable_donation_attribution": false,
    "external_url": "https://classy.org",
    "goal": 108.23,
    "hide_anonymous_donations": false,
    "hide_contact_opt_in": false,
    "hide_dedications": false,
    "hide_donation_comments": false,
    "host_member_id": 1001,
    "is_billing_address_required": false,
    "is_ended_at_hidden": true,
    "is_fees_free": false,
    "is_started_at_hidden": true,
    "location_details": "Heading north on I-5...",
    "logo_id": 1002,
    "logo_url": "https://www.classy-cdn-url.com/your-logo.png",
    "name": "My Campaign",
    "offer_dedication_postal_notifications": false,
    "opt_in_checked_by_default": false,
    "organization_id": "101",
    "postal_code": "92101",
    "raw_currency_code": "EUR",
    "raw_goal": 100,
    "send_dedication_emails": false,
    "started_at": "2016-01-01T12:00:00+0000",
    "state": "CA",
    "status": "active",
    "team_cover_photo_id": 2345,
    "team_cover_photo_url": "https://www.classy-cdn-url.com/your-team-cover-photo.png",
    "team_membership_policy": "optional",
    "ticket_pass_on_fees": false,
    "timezone_identifier: `America/Los_Angeles`": "Hello, world!",
    "type": "crowdfunding",
    "updated_at": "2016-01-01T12:00:00+0000",
    "venue": "City Townhall",
    "fixed_fot_percent": 4,
    "effective_fixed_fot_percent": 4
  },
  "campaign_id": 333,
  "card_expiration": "1017",
  "card_last_four": 1234,
  "card_type": "Visa",
  "charged_at": "2017-01-01T12:02:01+0000",
  "charged_classy_fees_amount": "0.20",
  "charged_currency_code": "USD",
  "charged_fees_amount": "0.35",
  "charged_pp_fees_amount": "0.15",
  "charged_total_gross_amount": "1.00",
  "classy_fees_amount": 0.34,
  "comment": "This is a comment",
  "company_name": "Classy",
  "context": {
    "is_passport": "false",
    "source_campaign_id": "123",
    "source_campaign_type": "peer_to_peer"
  },
  "created_at": "-2016-01-01T12:00:00+0000",
  "designation_id": 928379,
  "fees_amount": "0.35",
  "fee_on_top": false,
  "frequency": "one-time",
  "fundraising_page_id": 0,
  "fundraising_team_id": 0,
  "gross_amount": "1.00",
  "gross_donation_amount": "1.00",
  "id": 111,
  "institution": "ABC Bank",
  "in_honor_of": "Classy Relation",
  "is_anonymous": false,
  "is_gift_aid": false,
  "member_country": "US",
  "member_email_address": "[email protected]",
  "member_id": 123,
  "member_name": "Classy Member",
  "member_phone": "555-555-5555",
  "metadata": {
    "foo": "bar"
  },
  "net_donation_amount": "0.65",
  "organization_id": 222,
  "overhead_net_amount": "25.00",
  "parent_transaction_id": 0,
  "payment_gateway": "Braintree",
  "payment_method": "WPP",
  "pp_reference_id": "12345",
  "pp_transaction_id": "ABC123",
  "processor_fees_amount": 1.45,
  "promo_code_code": "PROMO",
  "purchased_at": "2016-01-01T12:00:00+0000",
  "raw_currency_code": "JPY",
  "raw_donation_gross_amount `1.25`": 1,
  "raw_overhead_net_amount `.25`": 1,
  "raw_total_gross_amount `1.00`": 1,
  "recurring_donation_plan_id": 123,
  "refunded_at": "null",
  "status": "complete",
  "supporter_id": 1123,
  "tax_entity_id": "123",
  "updated_at": "2016-01-01T12:00:00+0000"
}

Transaction Item

Transaction Items describe the specific specific donations, tickets, registrations (and more) that could make up a transaction. Some transactions will only have a single transaction item, but others may have many.

Like transactions, transaction items have three types of attributes relating to Passport: raw, charged, and normalized.

Raw attributes (e.g. raw_currency_code, raw_final_price, etc.) reflect donor intent through their donation or product purchases. raw_final_price represents the total raw value of a transaction item - it is either set directly (as with a direct donation) or derived from the product of raw_price (the price of the transaction item’s associated product) and the specified quantity. Transaction items associated with a product may also have raw_overhead_amount set, which indicates the amount of the raw_final_price that is attributed to campaign overhead. All raw amounts are presented in terms of raw_currency_code, which is inherited from the transaction item’s transaction and cannot be set on a per-item basis.

Charged (e.g. charged_final_price, charged_fees_amount, etc.) attributes are all derived from the transaction item’s associated transaction and reflect the percentage that the transaction item contributed to the transaction’s raw gross amount. For example, a transaction item that contributed 85% of its transaction’s raw_total_gross_amount through its raw_final_price will see its charged attributes reflect 85% of the transaction’s charged attribute values. All of these values will be reflected in terms of the charged_currency_code of the transaction item’s transaction.

Normalized attributes (e.g. final_price, fees_amount, etc.) reflect a conversion from raw and/or charged attributes into the transaction item’s currency_code, which is the same for all Passport-enabled entities associated with the transaction item’s organization. This normalization occurs to allow for a constant basis of comparison across each of these entities. These normalized values are all converted from the associated raw or charged attributes, preferring the charged attribute over the raw attribute if available. For example, charged_final_price will be used instead of raw_final_price if both charged_final_price and charged_currency_code are present. If charged_at is also present, the exchange rate between charged_currency_code and currency_code at that time will be used if/when the transaction item is renormalized.

Fetch Transaction Items
GET/transactions/{id}/items

Permissions

To request this endpoint you will need a valid access token with permissions to access the reporting of the campaign the transaction was made for. Alternatively you may use an access token of the member who initiated this transaction.

URI Parameters
HideShow
id
string (required) 

The ID of the desired Transaction.

Response Body Parameters
NameTypeDescription
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{}

Transaction Receipts

Transaction receipts record any instance when a specific transaction is produced for a donation.

List Transaction Receipts
GET/transactions/{id}/receipt-history

Permissions

To request this endpoint you will need a valid access token with permissions to access the reporting of the campaign the transaction was made for. Alternatively you may use an access token of the member who initiated this transaction.

URI Parameters
HideShow
id
string (required) 

The ID of the desired Transaction.

Response Body Parameters
NameTypeDescription
Example response  200
HideShow
Headers
Content-Type: application/json
Body
{}

Generated by aglio on 04 Jan 2019