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 languageagnostic interface. The Classy API leverages HTTP verbs and response codes, OAuth2 authentication, and resourceoriented 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
andname
,- 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 ActivityGET/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.
Name | Type | Description |
---|---|---|
data | array | An array of Activities |
200
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 ActivityGET/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.
Name | Type | Description |
---|---|---|
data | array | An array of Activities |
200
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 ActivityGET/fundraising-pages/{id}/activity
Retrieves the Activity for the specified Fundraising Page.
Name | Type | Description |
---|---|---|
data | array | An array of Activities |
200
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 ActivityGET/fundraising-teams/{id}/activity
Retrieves the Activity for the specified Fundraising Team.
Name | Type | Description |
---|---|---|
data | array | An array of Activities |
200
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 AnswersGET/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.
Name | Type | Description |
---|---|---|
data | array | An array of Answers |
200
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 AnswersGET/fundraising-teams/{id}/answers
View all Answer objects associated with a Fundraising Team.
Name | Type | Description |
---|---|---|
data | array | An array of Answers |
200
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 AnswerPOST/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.
Name | Type | Required | Description |
---|---|---|---|
question_id | number | Required | ID for the Question to answer. |
answer | string | Required | Answer body. |
Headers
Content-Type: application/json
Body
{
"question_id": 2,
"answer": "example answer test"
}
200
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 AnswersGET/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.
Name | Type | Description |
---|---|---|
data | array | An array of Answers |
200
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 AnswerPOST/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.
Name | Type | Required | Description |
---|---|---|---|
question_id | number | Required | ID for the Question to answer. |
answer | string | Required | Answer body. |
Headers
Content-Type: application/json
Body
{
"question_id": 2,
"answer": "example answer test"
}
200
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 AnswerPOST/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.
Name | Type | Required | Description |
---|---|---|---|
question_id | number | Required | ID for the Question to answer. |
answer | string | Required | Answer body. |
Headers
Content-Type: application/json
Body
{
"question_id": 2,
"answer": "example answer test"
}
200
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 AnswersGET/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.
Name | Type | Description |
---|---|---|
data | array | An array of Answers |
200
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 AnswersGET/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.
200
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 SetGET/appeal-set/{id}
Retrieve an Appeal Set by its ID.
Name | Type | Description |
---|---|---|
id | number | Appeal Set resource ID |
campaign_id | number | Campaign resource ID |
email_body | string | Email body text |
email_subject | string | Email subject line text |
facebook_asset_id | number | Facebook thumbnail asset ID |
facebook_video_url | string | Facebook video URL |
facebook_image_url | string | Facebook image URL |
twitter_text | string | Twitter body text. Max size is 280 characters. |
sms_text | string | SMS body text |
200
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 SetGET/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.
Name | Type | Description |
---|---|---|
id | number | Appeal Set resource ID |
campaign_id | number | Campaign resource ID |
email_body | string | Email body text |
email_subject | string | Email subject line text |
facebook_asset_id | number | Facebook thumbnail asset ID |
facebook_video_url | string | Facebook video URL |
facebook_image_url | string | Facebook image URL |
twitter_text | string | Twitter body text. Max size is 280 characters. |
sms_text | string | SMS body text |
200
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 SetPOST/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.
Name | Type | Required | Description |
---|---|---|---|
email_body | string | Optional | Email body text |
email_subject | string | Optional | Email subject line text |
facebook_asset_id | number | Optional | Facebook thumbnail asset ID |
facebook_video_url | string | Optional | Facebook video URL |
twitter_text | string | Optional | Twitter body text |
sms_text | string | Optional | SMS body text |
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!"
}
200
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 SetPUT/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.
Name | Type | Required | Description |
---|---|---|---|
email_body | string | Optional | Email body text |
email_subject | string | Optional | Email subject line text |
facebook_asset_id | number | Optional | Facebook thumbnail asset ID |
facebook_video_url | string | Optional | Facebook video URL |
twitter_text | string | Optional | Twitter body text |
sms_text | string | Optional | SMS body text |
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!"
}
200
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:
- Generate a Pre-signed URL
- Upload object directly to S3 using AWS Pre-signed URL - This is not a ClassyAPI request.
- 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 URLPOST/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.
Name | Type | Required | Description |
---|---|---|---|
member_id | number | Required | Member ID for content creator. |
Headers
Content-Type: application/json
Body
{
"member_id": 1
}
200
Headers
Content-Type: application/json
Body
{
"id": 1,
"presigned_put_url": "Hello, world!"
}
Update an Asset RecordPUT/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.
Headers
Content-Type: application/json
Body
{
"state": "uploaded"
}
200
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 RecordGET/assets/{id}
Fetches an individual asset record.
Permissions
You will need a valid access token for a trusted app to access this endpoint.
Name | Type | Description |
---|---|---|
id | number | ID of the Asset |
parent_id | number | ID of the Asset the current asset was generated from, if any. |
created_by | number | ID of the member who uploaded the Asset. |
state | string | Indicates whether or not the Asset is ready to be used. |
cdn_url | string | URL of the resource (image or video). |
content_type | string | Image content type. |
size | number | Image weight in bytes. |
created_at | string | A timestamp reflecting the creation time of the comment. |
200
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 ChildrenGET/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.
200
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:
- Upload asset (see above). Asset must be in an ‘uploaded’ state.
- 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.
ThumbnailsPOST/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.
Headers
Content-Type: application/json
Body
{
"action": "thumbnails",
"arguments": [
{"width": 100, "height": 100},
{"width": 150, "height": 150},
]
}
200
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"
}
]
CropPOST/assets/{id}/process
Crop an image asset.
Permissions
You will need a valid access token for a trusted app to access this endpoint.
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
}
}
200
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"
}
ScalePOST/assets/{id}/process
Scale an image asset.
Permissions
You will need a valid access token for a trusted app to access this endpoint.
Headers
Content-Type: application/json
Body
{
"action": "scale",
"arguments": {
"width": 100, // Scale width in pixels
"height": 100 // Scale height in pixels
}
}
200
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"
}
RotatePOST/assets/{id}/process
Rotate an image asset.
Permissions
You will need a valid access token for a trusted app to access this endpoint.
Headers
Content-Type: application/json
Body
{
"action": "rotate",
"arguments": {
"angle": 180, // Rotate angle in degrees.
}
}
200
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 CampaignGET/campaigns/{id}
Retrieve a Campaign by its ID.
Permissions
You will need a valid access token to request this endpoint.
Name | Type | Description |
---|---|---|
address1 | string | Ex "533 F street". |
allow_duplicate_fundraisers | boolean | Indicates whether a campaign allows a single user to own several fundraising pages. |
allow_ecards | boolean | Whether eCard dedications are available for this campaign |
allow_fundraising_pages | boolean | Specifies 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_url | string | The canonical url of the campaign. |
category_id | number | Category designation for campaign. |
channel_id | number | Channel designation for campaign. |
channel_keywords: `some_keyword` | string | (Comma-separated) list of keywords campaign is tagged with. |
city | string | City name. |
classy_mode_appeal | string | "Classy mode" appeal text. |
classy_mode_checked_by_default | boolean | If true, and if the "classy_mode_enabled" option is true, this will check the "Classy Mode" selection by default on donation forms. |
classy_mode_enabled | boolean | If true, give the donor the option to cover the transaction fee. |
collect_shipping_address | boolean | If true, collect shipping information during checkout |
contact_email | string | Email address for the campaign contact. Set to the Organization Email by default if none is specified. |
contact_phone | string | Phone number for the campaign contact. |
country | string | Country name. |
created_at | string | Indicates when this resource was created. |
created_with | string | Indicates which application created the campaign. Possible values include `api` or `classyapp`. |
currency_code | string | ISO code of the currency against which this campaign is normalized. Inherited from organization's currency code. |
default_page_appeal | string | Default appeal text displayed on fundraising pages. |
default_page_appeal_email | string | Default appeal email text for fundraising pages. |
default_page_goal | number | Default goal for the campaign's fundraising pages. Presented in units of the campaign's currency_code. |
default_page_post_asset_id | number | Default asset id of page story post. |
default_page_post_body | string | Default body of page story post. |
default_page_post_title | string | Default title of page story post. |
default_team_appeal | string | Default appeal text displayed on fundraising teams. |
default_team_appeal_email | string | Default appeal email text for fundraising teams. |
default_team_goal | number | Default goal for the campaign's fundraising teams. Presented in units of the campaign's currency_code. |
default_team_post_asset_id | number | Default asset id of team story post. |
default_team_post_body | string | Default body of team story post. |
default_team_post_title | string | Default title of team story post. |
default_thank_you_text | string | Default thank you text on the thank you page. |
designation_id | number | ID of designation the campaign transactions will be allocated to. |
disable_donation_attribution | boolean | Flag 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_url | string | When 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. |
goal | number | Fundraising goal for this campaign normalized against 'currency_code' |
hide_anonymous_donations | boolean | If true, donation forms will not display the "anonymous donation" field. |
hide_contact_opt_in | boolean | If true, donation forms will not display the "contact opt in" field. |
hide_dedications | boolean | If true, donation dedications will not be offered |
hide_donation_comments | boolean | If true, donation forms will not display the "donation comments" field. |
host_member_id | number | ID of member who created this campaign. |
is_billing_address_required | boolean | If true, a billing address must be provided when creating transactions against the campaign. |
is_ended_at_hidden | boolean | If true, campaign end date is not shown |
is_fees_free | boolean | If the campaign has fees associated with it or not. |
is_started_at_hidden | boolean | If true, campaign start date is not shown |
location_details | string | Additional information about the location of the event (e.g. directions, clarifications) |
logo_id | number | ID of asset used as the main campaign logo. Interpreted from associated campaign theme. |
logo_url | string | URL for logo image. Either hardcoded URL for legacy campaigns or interpreted from logo asset specified by logo ID. |
name | string | Campaign name. |
offer_dedication_postal_notifications | boolean | If true, offer to collect mailing information for postal notifications for dedications. |
opt_in_checked_by_default | boolean | If true, and if the "hide_contact_opt_in" option is false, this will check the "opt-in" selection by default on donation forms. |
organization_id | string | ID for the organization to whom this Campaign belongs. |
postal_code | string | Zip code. |
raw_currency_code | string | ISO code of the currency in which this campaign should be presented. Defaults to 'currency_code' if not specified. |
raw_goal | number | Raw fundraising goal for this campaign |
send_dedication_emails | boolean | If true, send dedication email for donation |
started_at | string | Starting date and time for this campaign. |
state | string | State/province name. |
status | string | Status of campaign. Possible values include `active`, `deactivated`, `draft` & `unpublished`. |
team_cover_photo_id | number | ID of the associated asset that serves as the default cover photo for this Campaign's teams (inherited from associated theme) |
team_cover_photo_url | string | URL for Campaign's default team cover photo image. Interpreted from team cover photo asset specified by team cover photo ID. |
team_membership_policy | string | Configuration indicating whether team membership for this Campaign's fundraising pages is optional, required, or prohibited. Possible values include `optional`, `prohibited` & `required`. |
ticket_pass_on_fees | boolean | Indicates whether a campaign passes fees from tickets to the user or not (fee on top for tickets). |
timezone_identifier: `America/Los_Angeles` | string | Timezone Identifier |
type | string | Campaign Type. Possible values include `ticketed`, `registration`, `fund_for_entry`, `peer_to_peer`, `donation`, `reg_w_fund` & `crowdfunding`. |
updated_at | string | Indicates when this resource was last updated. |
venue | string | Free text representing a location. Ex "City townhall". |
fixed_fot_percent | number | Percentage campaign elects to be added to fee on top (aka Classy Mode) transactions to cover fees. |
effective_fixed_fot_percent | number | Percentage 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. |
200
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 CampaignPUT/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.
Name | Type | Required | Description |
---|---|---|---|
address1 | string | Optional | Ex "533 F street". |
allow_duplicate_fundraisers | boolean | Optional | Indicates whether a campaign allows a single user to own several fundraising pages. |
allow_ecards | boolean | Optional | Whether eard dedications are available for this campaign |
category_id | number | Optional | Category designation for campaign. |
channel_id | number | Optional | Channel designation for campaign. |
channel_keywords: `some_keyword` | string | Optional | (Comma-separated) list of keywords campaign is tagged with. |
city | string | Optional | City name. |
classy_mode_appeal | string | Optional | "Classy mode" appeal text. |
classy_mode_checked_by_default | boolean | Optional | If true, and if the "classy_mode_enabled" option is true, this will check the "Classy Mode" selection by default on donation forms. |
classy_mode_enabled | boolean | Optional | If true, give the donor the option to cover the transaction fee. |
collect_shipping_address | boolean | Optional | If true, collect shipping information during checkout |
contact_email | string | Optional | Email address for the campaign contact. Set to the Organization Email by default if none is specified. |
contact_phone | string | Optional | Phone number for the campaign contact. |
country | string | Optional | Country name. |
default_page_goal | number | Optional | Default goal for the campaign's fundraising pages. |
default_team_goal | number | Optional | Default goal for the campaign's fundraising teams. |
designation_id | number | Optional | ID of designation the campaign transactions will be allocated to. |
disable_donation_attribution | boolean | Optional | Flag 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_url | string | Optional | When 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_donations | boolean | Optional | If true, donation forms will not display the "anonymous donation" field. |
hide_contact_opt_in | boolean | Optional | If true, donation forms will not display the "contact opt in" field. |
hide_dedications | boolean | Optional | If true, donation dedications will not be offered |
hide_donation_comments | boolean | Optional | If true, donation forms will not display the "donation comments" field. |
host_member_id | number | Optional | ID of member who created this campaign. |
is_billing_address_required | boolean | Optional | If true, a billing address must be provided when creating transactions against the campaign. |
is_ended_at_hidden | boolean | Optional | If true, campaign end date is not shown |
is_started_at_hidden | boolean | Optional | If true, campaign start date is not shown |
location_details | string | Optional | Additional information about the location of the event (e.g. directions, clarifications) |
name | string | Optional | Campaign name. |
offer_dedication_postal_notifications | boolean | Optional | If true, offer to collect mailing information for postal notifications for dedications. |
opt_in_checked_by_default | boolean | Optional | If true, and if the "hide_contact_opt_in" option is false, this will check the "opt-in" selection by default on donation forms. |
organization_id | string | Optional | ID for the organization to whom this Campaign belongs. |
postal_code | string | Optional | Zip code. |
raw_currency_code | string | Optional | ISO code of the currency in which this campaign should be presented. Defaults to 'currency_code' if not specified. |
raw_goal | number | Optional | Raw fundraising goal for this campaign |
send_dedication_emails | boolean | Optional | C If true, send dedication email for donation |
started_at | string | Optional | Starting date and time for this campaign. |
state | string | Optional | State/province name. If country is "US" and a value for state is provided, state must be a valid US region. |
team_membership_policy | string | Optional | Configuration indicating whether team membership for this Campaign's fundraising pages is optional, required, or prohibited. |
ticket_pass_on_fees | boolean | Optional | Indicates whether a campaign passes fees from tickets to the user or not (fee on top for tickets). |
timezone_identifier: `America/Los_Angeles` | string | Optional | Timezone Identifier |
type | string | Optional | Campaign Type |
venue | string | Optional | Free text representing a location. Ex "City townhall". |
fixed_fot_percent | number | Optional | Percentage 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. |
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
}
200
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 CampaignsGET/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.
Name | Type | Description |
---|---|---|
data | array |
200
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 CampaignPOST/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.
200
Headers
Content-Type: application/json
Unpublish a CampaignPOST/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.
200
Headers
Content-Type: application/json
Deactivate a CampaignPOST/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.
200
Headers
Content-Type: application/json
Reactivate a CampaignPOST/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.
200
Headers
Content-Type: application/json
Duplicate a CampaignPOST/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.
Name | Type | Required | Description |
---|---|---|---|
duplicates | array | Optional | List of related object to duplicates |
overrides | object | Optional |
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
}
}
200
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 SetsGET/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.
Name | Type | Description |
---|---|---|
data | array |
200
Headers
Content-Type: application/json
Body
{
"data": [
{
"id": 1001,
"member_id": 1001,
"organization_id": 1001,
"campaign_id": 1001
}
]
}
Create Campaign Credential SetPOST/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.
Name | Type | Required | Description |
---|---|---|---|
member_id | number | Required | The ID of the Member associated with the Campaign Credential Set |
Headers
Content-Type: application/json
Body
{
"member_id": 1001
}
200
Headers
Content-Type: application/json
Body
{
"id": 1001,
"member_id": 1001,
"organization_id": 1001,
"campaign_id": 1001
}
Fetch Campaign Credential SetGET/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.
Name | Type | Description |
---|---|---|
id | number | The ID of the Campaign Credential Set |
member_id | number | The ID of the Member associated with the Campaign Credential Set |
organization_id | number | The ID of the Organization associated with the Campaign Credential Set's Campaign |
campaign_id | number | The ID of the Campaign Credential Set's Campaign |
200
Headers
Content-Type: application/json
Body
{
"id": 1001,
"member_id": 1001,
"organization_id": 1001,
"campaign_id": 1001
}
Delete Campaign Credential SetDELETE/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.
200
Headers
Content-Type: application/json
Organization Credential Set ¶
Organization Level Credential Sets.
List Organization Credential SetsGET/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.
Name | Type | Description |
---|---|---|
data | array |
200
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 SetPOST/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.
Name | Type | Required | Description |
---|---|---|---|
member_id | number | Required | The ID of the Member associated with the Campaign Credential Set |
global_admin: `true` (boolean) - Flag whether or not the member has global_admin access | string | Optional | |
campaign_manager: `true` (boolean) - Flag whether or not the member has campaign_manager access | string | Optional | |
activity_wall: `true` (boolean) - Flag whether or not the member has activity_wall access | string | Optional | |
reporting_access: `true` (boolean) - Flag whether or not the member has reporting_access | string | Optional |
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!"
}
200
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 SetGET/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.
Name | Type | Description |
---|---|---|
id | number | The ID of the Campaign Credential Set |
member_id | number | The ID of the Member associated with the Campaign Credential Set |
organization_id | number | The 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 access | string | |
campaign_manager: `true` (boolean) - Flag whether or not the member has campaign_manager access | string | |
activity_wall: `true` (boolean) - Flag whether or not the member has activity_wall access | string | |
reporting_access: `true` (boolean) - Flag whether or not the member has reporting_access | string |
200
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 SetPUT/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.
Name | Type | Required | Description |
---|---|---|---|
global_admin: `true` (boolean) - Flag whether or not the member has global_admin access | string | Optional | |
campaign_manager: `true` (boolean) - Flag whether or not the member has campaign_manager access | string | Optional | |
activity_wall: `true` (boolean) - Flag whether or not the member has activity_wall access | string | Optional | |
reporting_access: `true` (boolean) - Flag whether or not the member has reporting_access | string | Optional |
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!"
}
200
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 SetDELETE/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.
200
Headers
Content-Type: application/json
Member Credential Set ¶
Member Credential Sets.
List a Member's Organization Credential SetsGET/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.
Name | Type | Description |
---|---|---|
data | array |
200
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 SetsGET/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.
Name | Type | Description |
---|---|---|
data | array |
200
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 DedicationGET/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.
Name | Type | Description |
---|---|---|
data | object |
200
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 DedicationPUT/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.
Name | Type | Required | Description |
---|---|---|---|
address | string | Optional | Dedication contact address |
city | string | Optional | Dedication contact city |
country | string | Optional | Dedication contact country (e.g. "US", "CA", "MX", etc.) |
state | string | Optional | Billing state/province. Required if country is US |
honoree_name | string | Optional | Honoree's full name |
honoree_first_name | string | Optional | Honoree's first name. If specified will overwrite honoree_name. |
honoree_last_name | string | Optional | Honoree's last name. If specified will overwrite honoree_name. |
ecard_id | number | Optional | ID of eCard assigned to dedication |
ecard_message | string | Optional | Message added to eCard |
is_gift_amount_msg_included | boolean | Optional | Whether the gift amount is to be displayed in communication |
name | string | Optional | Dedication contact full name |
first_name | string | Optional | Dedication contact first name. If specified will overwrite name. |
last_name | string | Optional | Dedication contact last name. If specified will overwrite name. |
postal_code | string | Optional | Dedication contact postal code |
transaction_id | number | Optional | Transaction that is being dedicated |
type | string | Required | Description of Dedication's purpose (either 'honor' or 'memory'). |
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"
}
200
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 DedicationPOST/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.
Name | Type | Required | Description |
---|---|---|---|
address | string | Optional | Dedication contact address |
city | string | Optional | Dedication contact city |
country | string | Optional | Dedication contact country (e.g. "US", "CA", "MX", etc.) |
state | string | Optional | Billing state/province. Required if country is US |
honoree_name | string | Optional | Honoree's full name |
honoree_first_name | string | Optional | Honoree's first name. If specified will overwrite honoree_name. |
honoree_last_name | string | Optional | Honoree's last name. If specified will overwrite honoree_name. |
ecard_id | number | Optional | ID of eCard assigned to dedication |
ecard_message | string | Optional | Message added to eCard |
is_gift_amount_msg_included | boolean | Optional | Whether the gift amount is to be displayed in communication |
name | string | Optional | Dedication contact full name |
first_name | string | Optional | Dedication contact first name. If specified will overwrite name. |
last_name | string | Optional | Dedication contact last name. If specified will overwrite name. |
postal_code | string | Optional | Dedication contact postal code |
transaction_id | number | Optional | Transaction that is being dedicated |
type | string | Required | Description of Dedication's purpose (either 'honor' or 'memory'). |
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"
}
200
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 DesignationsGET/organizations/{id}/designations
Return a collection of designations belonging to an organization.
Name | Type | Description |
---|---|---|
data | object |
200
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 DesignationGET/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.
Name | Type | Description |
---|---|---|
city | string | The name of the city associated with the designation. |
created_at | string | Date designation record was created |
description | string | A brief description of the designation. |
end_time | string | The date/time that the designation ends. |
external_reference_id | string | |
goal | number | The fundraising goal for the designation. |
id | number | |
is_active | boolean | |
is_complete | boolean | |
is_default | boolean | |
name | string | The name of the designation, unique to this organization. |
organization_id | number | The ID of the organization the designation belongs to |
postal_code | string | The postal code associated with the designation. |
start_time | string | The date/time that the designation starts. |
state | string | A two-letter abbreviation of the state associated with the designation. |
updated_at | string | Date and time of last update |
200
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 DesignationPOST/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.
Name | Type | Required | Description |
---|---|---|---|
city | string | Optional | The name of the city associated with the designation. |
description | string | Optional | A 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. | string | Optional | |
goal | number | Optional | The 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. | string | Optional | |
is_complete | boolean | Optional | |
is_default | boolean | Optional | Specifies if this is the default designation for this organization. Only one designation per organization can have this be true. |
name | string | Required | The name of the designation, unique to this organization. |
postal_code | string | Optional | The 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. | string | Optional | |
state | string | Optional | A two-letter abbreviation of the state associated with the designation. |
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"
}
200
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 DesignationPUT/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.
Name | Type | Required | Description |
---|---|---|---|
city | string | Optional | The name of the city associated with the designation. |
description | string | Optional | A 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. | string | Optional | |
goal | number | Optional | The 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. | string | Optional | |
is_complete | boolean | Optional | |
is_default | boolean | Optional | Specifies if this is the default designation for this organization. Only one designation per organization can have this be true. |
name | string | Required | The name of the designation, unique to this organization. |
postal_code | string | Optional | The 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. | string | Optional | |
state | string | Optional | A two-letter abbreviation of the state associated with the designation. |
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"
}
200
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 DesignationDELETE/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.
200
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 DomainSlugPOST/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.
Name | Type | Required | Description |
---|---|---|---|
value | string | Required | The value of the slug. |
links_to_donation_page | boolean | Optional | An indicator whether the slug links directly to the fundraising entity's page or the fundraising entity's donation page |
domain_id | number | Optional | The ID of the domain that the slug will belong to. The domain must be associated with the same organization referenced in the endpoint |
Headers
Content-Type: application/json
Body
{
"value": "general",
"links_to_donation_page": true,
"domain_id": 332
}
200
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 DomainSlugsGET/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.
Name | Type | Description |
---|---|---|
total | number | Number of DomainSlugs associated with the Organization. |
per_page | number | Number of DomainSlugs returned per page. |
current_page | number | Current page number. |
last_page | number | Number of the last page. |
next_page_url | string | endpoint to request to get the content of the next page. |
prev_page_url | string | endpoint to request to get the content of the previous page. |
from | number | number of the first record of the current page. |
to | number | number of the last record of the current page. |
data | array |
200
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 DomainSlugsGET/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.
Name | Type | Description |
---|---|---|
total | number | Number of DomainSlugs associated with the Campaign. |
per_page | number | Number of DomainSlugs returned per page. |
current_page | number | Current page number. |
last_page | number | Number of the last page. |
next_page_url | string | endpoint to request to get the content of the next page. |
prev_page_url | string | endpoint to request to get the content of the previous page. |
from | number | number of the first record of the current page. |
to | number | number of the last record of the current page. |
data | array |
200
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 DomainSlugPOST/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.
Name | Type | Required | Description |
---|---|---|---|
value | string | Required | The value of the slug. |
links_to_donation_page | boolean | Optional | An indicator whether the slug links directly to the fundraising entity's page or the fundraising entity's donation page |
domain_id | number | Optional | The ID of the domain that the slug will belong to. The domain must be associated with the same organization referenced in the endpoint |
Headers
Content-Type: application/json
Body
{
"value": "general",
"links_to_donation_page": true,
"domain_id": 332
}
200
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 DomainSlugsGET/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.
Name | Type | Description |
---|---|---|
total | number | Number of DomainSlugs associated with the Fundraising Team. |
per_page | number | Number of DomainSlugs returned per page. |
current_page | number | Current page number. |
last_page | number | Number of the last page. |
next_page_url | string | endpoint to request to get the content of the next page. |
prev_page_url | string | endpoint to request to get the content of the previous page. |
from | number | number of the first record of the current page. |
to | number | number of the last record of the current page. |
data | array |
Headers
Content-Type: application/json
Body
{
"value": "general",
"links_to_donation_page": true,
"domain_id": 332
}
200
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 DomainSlugPOST/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.
Name | Type | Required | Description |
---|---|---|---|
value | string | Required | The value of the slug. |
links_to_donation_page | boolean | Optional | An indicator whether the slug links directly to the fundraising entity's page or the fundraising entity's donation page |
domain_id | number | Optional | The ID of the domain that the slug will belong to. The domain must be associated with the same organization referenced in the endpoint |
Headers
Content-Type: application/json
Body
{
"value": "general",
"links_to_donation_page": true,
"domain_id": 332
}
200
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 DomainSlugsGET/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.
Name | Type | Description |
---|---|---|
total | number | Number of DomainSlugs associated with the Fundraising Page. |
per_page | number | Number of DomainSlugs returned per page. |
current_page | number | Current page number. |
last_page | number | Number of the last page. |
next_page_url | string | endpoint to request to get the content of the next page. |
prev_page_url | string | endpoint to request to get the content of the previous page. |
from | number | number of the first record of the current page. |
to | number | number of the last record of the current page. |
data | array |
Headers
Content-Type: application/json
Body
{
"value": "general",
"links_to_donation_page": true,
"domain_id": 332
}
200
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 DomainSlugPOST/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.
Name | Type | Required | Description |
---|---|---|---|
value | string | Required | The value of the slug. |
links_to_donation_page | boolean | Optional | An indicator whether the slug links directly to the fundraising entity's page or the fundraising entity's donation page |
domain_id | number | Optional | The ID of the domain that the slug will belong to. The domain must be associated with the same organization referenced in the endpoint |
Headers
Content-Type: application/json
Body
{
"value": "general",
"links_to_donation_page": true,
"domain_id": 332
}
200
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 DomainSlugGET/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.
Name | Type | Description |
---|---|---|
id | number | The ID of the DomainSlug |
domain_id | number | The ID of the Domain associated with the DomainSlug |
fundraising_entity_id | number | The ID of the fundraising entity associated with the DomainSlug |
fundraising_entity_type | string | The morph string associated with the class of the DomainSlug's fundraising entity |
value | string | The value of the domain slug |
links_to_donation_page | string | A boolean indicating if the slug should reference the donation page for the DomainSlug's fundraising entity |
created_at | string | The timestamp of the time the DomainSlug was created |
updated_at | string | The timestamp of the last time the DomainSlug was updated |
deleted_at | string | The timestamp of the time the DomainSlug was deleted (null in most cases) |
200
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 DomainSlugPUT/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.
Name | Type | Required | Description |
---|---|---|---|
value | string | Required | The value of the slug. |
links_to_donation_page | boolean | Optional | An indicator whether the slug links directly to the fundraising entity's page or the fundraising entity's donation page |
fundraising_entity_id | number | Optional | The ID of the fundraising entity associated with the DomainSlug |
fundraising_entity_type | string | Optional | The morph string associated with the class of the DomainSlug's fundraising entity |
Headers
Content-Type: application/json
Body
{
"value": "general",
"links_to_donation_page": true,
"fundraising_entity_id": 24736,
"fundraising_entity_type": "campaign"
}
200
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 DomainSlugDELETE/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.
200
Headers
Content-Type: application/json
Check DomainSlugGET/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.
Name | Type | Description |
---|---|---|
result | boolean | The answer to the specified query. |
Headers
Content-Type: application/json
Body
{
"domain_id": 332
}
200
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 MatchersGET/donation-matchers
Retrieves an array of Donation Matcher names.
Permissions
You will need a valid access token to request this endpoint.
Name | Type | Description |
---|---|---|
data |
200
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 PlanPOST/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.
Name | Type | Required | Description |
---|---|---|---|
asset_id | number | Optional | Sponsor thumbnail asset ID. Will be displayed in feed items. |
business_name | string | Required | Name of the sponsor. Will be displayed in feed items when matching donations. |
currency_code | string | Optional | Currency in which the Donation Matching Plan matches donations. If unset, will default to the Campaign currency this plan is for. |
ended_at | string | Optional | Datetime before which donations are matched by this plan. |
matching_limit_amount | string | Required | Total amount in the Donation Matching Plan currency the sponsor is willing to match. 0 means unlimited. |
started_at | string | Required | Datetime after which donations are matched by this plan. |
timezone_identifier | string | Required | Sponsor timezone. |
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"
}
200
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 PlansGET/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.
Name | Type | Description |
---|---|---|
total | number | number records. |
per_page | number | number of records returned per page. |
current_page | number | current page number. |
last_page | number | number of the last page. |
next_page_url | string | endpoint to request to get the content of the next page. |
prev_page_url | string | endpoint to request to get the content of the previous page. |
from | number | number of the first record of the current page. |
to | number | number of the last record of the current page. |
data | array |
200
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 PlanGET/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.
Name | Type | Description |
---|---|---|
id | number | ID of the Donation Matching Plan. |
asset_id | number | Sponsor thumbnail asset ID. Will be displayed in feed items. |
business_name | string | Name of the sponsor. Will be displayed in feed items when matching donations. |
campaign_id | string | ID of the Campaign the plan is configured for. |
created_at | string | Plan creation date. |
currency_code | string | Currency in which the Donation Matching Plan matches donations. |
ended_at | string | Datetime before which donations are matched by this plan. |
matched_amount | string | Total amount the sponsor has currently matched, in the currency of the Donation Matching Plan. |
matching_limit_amount | string | Total amount in the Donation Matching Plan currency the sponsor is willing to match. 0 means unlimited. |
started_at | string | Datetime after which donations are matched by this plan. |
timezone_identifier | string | Sponsor timezone. |
updated_at | string | Plan last update date. |
200
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 PlanPUT/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.
Name | Type | Required | Description |
---|---|---|---|
asset_id | number | Optional | Sponsor thumbnail asset ID. Will be displayed in feed items. |
business_name | string | Required | Name of the sponsor. Will be displayed in feed items when matching donations. |
ended_at | string | Optional | Datetime before which donations are matched by this plan. |
matching_limit_amount | string | Required | Total amount in the Donation Matching Plan currency the sponsor is willing to match. 0 means unlimited. |
started_at | string | Required | Datetime after which donations are matched by this plan. |
timezone_identifier | string | Required | Sponsor timezone. |
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"
}
200
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 eCardPOST/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.
Name | Type | Required | Description |
---|---|---|---|
asset_id | number | Optional | The ID of the image file asset associated with this eCard. |
image_url | string | Optional | Public URL for the eCard image. |
order | number | Optional | Display order for listings. Impacts display in Classy.org. |
Headers
Content-Type: application/json
Body
{
"asset_id": 101,
"image_url": "https://classy-assets.classy.org/1-54asdfa34.png",
"order": 1
}
200
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 eCardsGET/campaigns/{id}/ecards
Permissions
You will need a valid access token to request this endpoint.
Name | Type | Description |
---|---|---|
data | array |
200
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 eCardGET/eCards/{id}
Retrieves the eCard with the given ID.
Permissions
You will need a valid access token to request this endpoint.
Name | Type | Description |
---|---|---|
asset_id | number | The ID of the image file asset associated with this eCard. |
campaign_id | number | The ID of the Campaign to which this eCard belongs. |
image_url | string | Public URL for the eCard image. |
order | number | Display order for listings. Impacts display in Classy.org. |
200
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 eCardPUT/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.
Name | Type | Required | Description |
---|---|---|---|
asset_id | number | Optional | The ID of the image file asset associated with this eCard. |
image_url | string | Optional | Public URL for the eCard image. |
order | number | Optional | Display order for listings. Impacts display in Classy.org. |
Headers
Content-Type: application/json
Body
{
"asset_id": 101,
"image_url": "https://classy-assets.classy.org/1-54asdfa34.png",
"order": 1
}
200
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 eCardDELETE/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.
200
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 FAQPOST/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.
Name | Type | Required | Description |
---|---|---|---|
question | string | Optional | The text of the FAQ question |
answer | string | Optional | The text of the FAQ answer |
tag | string | Optional | |
weight | number | Optional | Priority for sorting |
Headers
Content-Type: application/json
Body
{
"question": "FAQ Body",
"answer": "FAQ Answer Body",
"tag": "other",
"weight": 1
}
200
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 FAQsGET/campaigns/{id}/faqs
Permissions
You will need a valid access token to request this endpoint.
Name | Type | Description |
---|---|---|
data | array |
200
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 FAQGET/faqs/{id}
Retrieves the FAQ with the given ID.
Permissions
You will need a valid access token to request this endpoint.
Name | Type | Description |
---|---|---|
id | number | Unique ID |
campaign_id | number | ID of campaign the FAQ belongs to |
organization_id | number | ID of the organization the FAQ belongs to |
question | string | The text of the FAQ question |
answer | string | The text of the FAQ answer |
tag | string | |
weight | number | Priority for sorting |
200
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 FAQPUT/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.
Name | Type | Required | Description |
---|---|---|---|
question | string | Optional | The text of the FAQ question |
answer | string | Optional | The text of the FAQ answer |
tag | string | Optional | |
weight | number | Optional | Priority for sorting |
Headers
Content-Type: application/json
Body
{
"question": "FAQ Body",
"answer": "FAQ Answer Body",
"tag": "other",
"weight": 1
}
200
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 FAQDELETE/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.
200
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 PagesGET/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.
Name | Type | Description |
---|---|---|
total | number | Number of Fundraising Pages associated with the Fundraising Team. |
per_page | number | Number of Fundraising Pages returned per page. |
current_page | number | Current page number. |
last_page | number | Number of the last page. |
next_page_url | string | endpoint to request to get the content of the next page. |
prev_page_url | string | endpoint to request to get the content of the previous page. |
from | number | number of the first record of the current page. |
to | number | number of the last record of the current page. |
data | array |
Headers
Authorization: Bearer some-member-or-app-access-token
200
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 PagesGET/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.
Name | Type | Description |
---|---|---|
total | number | Number of Fundraising Pages associated with the Fundraising Team. |
per_page | number | Number of Fundraising Pages returned per page. |
current_page | number | Current page number. |
last_page | number | Number of the last page. |
next_page_url | string | endpoint to request to get the content of the next page. |
prev_page_url | string | endpoint to request to get the content of the previous page. |
from | number | number of the first record of the current page. |
to | number | number of the last record of the current page. |
data | array |
Headers
Authorization: Bearer some-member-or-app-access-token
200
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 PagesGET/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.
Name | Type | Description |
---|---|---|
total | number | Number of Fundraising Pages associated with the Fundraising Team. |
per_page | number | Number of Fundraising Pages returned per page. |
current_page | number | Current page number. |
last_page | number | Number of the last page. |
next_page_url | string | endpoint to request to get the content of the next page. |
prev_page_url | string | endpoint to request to get the content of the previous page. |
from | number | number of the first record of the current page. |
to | number | number of the last record of the current page. |
data | array |
200
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 PagesGET/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.
Name | Type | Description |
---|---|---|
total | number | Number of Fundraising Pages associated with the Fundraising Team. |
per_page | number | Number of Fundraising Pages returned per page. |
current_page | number | Current page number. |
last_page | number | Number of the last page. |
next_page_url | string | endpoint to request to get the content of the next page. |
prev_page_url | string | endpoint to request to get the content of the previous page. |
from | number | number of the first record of the current page. |
to | number | number of the last record of the current page. |
data | array |
Headers
Authorization: Bearer some-member-or-app-access-token
200
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 PageGET/fundraising-pages/{id}{?with}
Retrieves the Fundraising Page with the given ID.
Permissions
You will need a valid access token to request this endpoint.
Name | Type | Description |
---|---|---|
alias | string | |
answers | array | |
campaign_id | number | Parent Campaign ID |
commitment | number | Commitment level for this fundraising page. This is the level this Fundraiser is committed to raising. |
canonical_url | string | The canonical url of the Fundraising Page. |
cover_photo | object | Asset representing the fundraising page cover photo. |
created_at | string | Datetime at which the fundraising page was created |
currency_code | string | ISO code of the currency against which this fundraising page is normalized. |
designation_id | number | Designation ID for this campaign (optional) |
ended_at | string | Page end date (optional). An end date can only be set if the campaign has no end date. |
fundraising_team_id | number | Fundraising Team ID to whom this page is associated (optional) |
goal | number | Fundraising goal for this page normalized against 'currency_code' |
id | number | Fundraising Page ID |
intro_text | string | HTML Formated string for intro text |
is_primary | boolean | Flag denoting primary fundraiser for child fundraising pages |
logo_id | number | ID of asset used as the fundraising team logo. |
logo_url | string | URL for logo image. Either hardcoded URL for legacy fundraising pages or interpreted from logo asset specified by logo_id. |
member_email_text | string | HTML formatted string for member email body |
member_id | number | Member ID associated with this page |
organization_id | number | Organization ID |
parent_id | number | Parent Fundraising Page ID |
raw_currency_code | string | ISO code of the default currency in which this fundraising page should be presented. Defaults to 'currency_code' if not specified. |
raw_goal | number | Raw fundraising goal for this page |
started_at | string | Deprecated |
status | string | Status for this fundraising page |
supporter_id | number | Supporter ID associated with the page. |
thankyou_email_text | string | HTML formatted string for thank you email body |
thank_you_text | string | Default thank you text on the thank you page. |
title | string | Page title |
200
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"
}
Pages with Aggregates
200
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 OverviewGET/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.
Name | Type | Description |
---|---|---|
end_time | string | The end time used to filter results represented in aggregation |
metrics | array | |
start_time | string | The start time used to filter results represented in aggregation |
timezone | string | The timezone used to establish date ranges and start/end times for aggregation |
Headers
Authorization: Bearer some-member-or-app-access-token
200
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 PagePUT/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.
Name | Type | Required | Description |
---|---|---|---|
title | string | Required | Page title |
goal | number | Optional | Fundraising goal for this page |
currency_code | string | Optional | ISO code of the default currency in which this fundraising page should be presented |
commitment | number | Optional | Commitment level for this page. Only Campaign Managers can update a commitment level. |
alias | string | Optional | |
logo_id | number | Optional | ID of the Asset to be used as a logo. |
cover_photo_id | number | Optional | ID of the Asset to be used as a cover photo. |
thankyou_email_text | string | Optional | HTML formatted string for thank you email body |
thank_you_text | string | Optional | Default thank you text on the thank you page. |
member_email_text | string | Optional | HTML formatted string for member email body |
intro_text | string | Optional | HTML Formated string for intro text |
started_at | string | Required | Page start date |
ended_at | string | Optional | Page end date. An end date can only be set if the campaign has no end date. |
designation_id | number | Optional | Id of the default designation donations to this page will be allocated to. |
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
}
200
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 PagePOST/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.
Name | Type | Required | Description |
---|---|---|---|
fundraising_team_id | number | Optional | The 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_id | number | Optional | The ID of the member to transfer the fundraising page to. |
Headers
Content-Type: application/json
Authorization: Bearer some-member-or-app-access-token
Body
{
"fundraising_team_id": 444,
"member_id": 555
}
200
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 PageDELETE/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.
200
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 TeamGET/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.
Name | Type | Description |
---|---|---|
campaign | object | Campaign object for parent campaign |
campaign_id | number | |
canonical_url | string | The canonical url of the Fundraising Team. |
city | string | |
country | string | |
cover_photo_id | number | ID of asset used as the fundraising team cover photo. |
cover_photo_url | string | URL for cover photo image. Interpreted from cover_photo asset specified by cover_photo_id. |
created_at | string | Team Creation date. |
currency_code | string | ISO code of the currency against which this fundraising team is normalized. |
description | string | Team description. |
designation_id | number | ID of the default designation donations will be allocated. |
goal | number | Fundraising goal for this team normalized against 'currency_code' |
id | number | Team identifier. |
logo_id | number | ID 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 | |
name | string | Team name |
organization_id | number | Organization ID. |
parent_id | number | Parent Team ID. Used for creating a team hierarchy. Fundraising Team Policy must support SubTeam creation if a Parent Team ID is supplied. |
postal_code | string | |
raw_currency_code | string | ISO code of the default currency in which this fundraising team should be presented. Defaults to 'currency_code' if not specified. |
raw_goal | number | Raw fundraising goal for this team |
state | string | State/province name |
status | string | Team status |
team_lead | object | Member object for team lead |
team_lead_id | number | |
team_lead_supporter_id | number | Supporter ID for the team lead. |
team_policy_id | number | Fundraising Team Policy ID associated with this Fundraising Team. |
thank_you_text | string | Default thank you text on the thank you page. |
200
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!"
}
200
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 TeamsGET/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.
Name | Type | Description |
---|---|---|
data | array |
200
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 OverviewGET/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.
Name | Type | Description |
---|---|---|
end_time | string | The end time used to filter results represented in aggregation |
metrics | array | |
start_time | string | The start time used to filter results represented in aggregation |
timezone | string | The timezone used to establish date ranges and start/end times for aggregation |
Headers
Authorization: Bearer some-member-or-app-access-token
200
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 TeamPUT/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.
Name | Type | Required | Description |
---|---|---|---|
city | string | Optional | |
country | string | Optional | |
cover_photo_id | number | Optional | ID of the Asset to be used as a cover photo. |
currency_code | string | Optional | ISO code of the default currency in which this fundraising team should be presented. |
description | string | Optional | Team description |
designation_id | number | Optional | ID of the default designation donations will be allocated. |
logo_id | number | Optional | ID of the Asset to be used as a logo. |
name | string | Optional | Team name |
postal_code | string | Optional | |
raw_currency_code | string | Optional | ISO code of the default currency in which this fundraising team should be presented. Defaults to 'currency_code' if not specified. |
raw_goal | number | Optional | Raw fundraising goal for this team |
state | string | Optional | State/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_text | string | Optional | Default thank you text on the thank you page. |
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!"
}
200
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 TeamDELETE/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.
200
Headers
Content-Type: application/json
List Member TeamsGET/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.
Name | Type | Description |
---|---|---|
data | array |
200
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 TeamsGET/campaigns/{id}/fundraising-teams{?with}
Permissions
To request this endpoint you will need a valid access token with permissions to manage the campaign.
200
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!"
}
]
200
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 TeamPOST/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.
Name | Type | Required | Description |
---|---|---|---|
city | string | Optional | City in which this Fundraising Team is located. |
country | string | Optional | Fundraising Team's country. |
cover_photo_id | number | Optional | ID of the Asset to be used as a cover photo. |
currency_code | string | Optional | ISO code of the default currency in which this fundraising team should be presented. |
description | string | Optional | Fundraising Team description. |
designation_id | number | Optional | ID of the default designation donations will be allocated. |
logo_id | number | Optional | ID of the Asset to be used as a logo. |
name | string | Required | Team name |
parent_id | number | Optional | Parent Team ID. Used for creating a team hierarchy. Team Policy must support SubTeam creation if a Parent Team ID is supplied. |
postal_code | string | Optional | Fundraising Team's postal code. |
raw_currency_code | string | Optional | ISO code of the default currency in which this fundraising team should be presented. Defaults to 'currency_code' if not specified. |
raw_goal | number | Optional | Raw fundraising goal for this team |
state | string | Optional | State/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_id | number | Optional | Member 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_policy | object | Optional | Fundraising team policy attributes. If a policy attribute is left blank, a default value will be used. |
thank_you_text | string | Optional | Default thank you text on the thank you page. |
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!"
}
200
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 FundraisingTeamPOST/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.
Name | Type | Required | Description |
---|---|---|---|
new_parent_id | number | Required | The 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_type | string | Required | They type of the new parent. This can either be `fundraising_team` or `campaign`. |
Headers
Content-Type: application/json
Body
{
"new_parent_id": 1000001,
"new_parent_type": "fundraising_team"
}
200
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 PolicyGET/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.
Name | Type | Description |
---|---|---|
id | number | Fundraising Team Policy identifier. |
organization_id | number | Organization ID. |
allow_subteams | boolean | Setting to allow sub-team creation under this team. |
allow_fundraising_pages | boolean | Setting to allow fundraising pages to be created within his team. |
allow_transactions | boolean | Setting to allow transactions, such as donations) directly to this team. |
allow_cross_campaign_fundraisers | boolean | Setting to allow Fundraisers from other Campaigns to join this team. |
allocation_method | string | Setting to select the allocation method for this team. Options include 'manual' and 'automatic-split'. |
min_members | number | Minimum members required before the Team is considered active. |
max_members | number | Maximum members allowed for this Team. |
fundraiser_registration_policy | string | Fundraiser and Sub-team registration policy for this Team. |
created_at | string | Date team was created. |
updated_at | string | Date policy was last updated. |
200
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 PolicyPUT/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.
Name | Type | Required | Description |
---|---|---|---|
allow_subteams | boolean | Optional | Setting to allow sub-team creation under this team. |
allow_fundraising_pages | boolean | Optional | Setting to allow fundraising pages to be created within his team. |
allow_transactions | boolean | Optional | Setting to allow transactions, such as donations) directly to this team. |
fundraiser_registration_policy | string | Optional | Fundraiser and Sub-team registration policy for this Team. |
allocation_method | string | Optional | Setting to select the allocation method for this team. Options include 'manual' and 'automatic-split'. |
Headers
Content-Type: application/json
Body
{
"allow_subteams": false,
"allow_fundraising_pages": true,
"allow_transactions": false,
"fundraiser_registration_policy": "'public'",
"allocation_method": "'manual'"
}
200
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 MemberGET/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.
Name | Type | Description |
---|---|---|
created_at | string | Date/Time member was created |
date_of_birth | string | Date of birth |
email_address | string | Email address |
first_name | string | First name |
gender | Gender. | |
id | number | Unique ID |
last_name | string | Last name |
profile_image_id | number | ID of associated Asset representing the current profile image |
thumbnail_large | string | Thumbnail, large |
thumbnail_medium | string | Thumbnail, medium |
thumbnail_small | string | Thumbnail, small |
Headers
Content-Type: application/json
Authorization: Bearer some-access-token
200
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"
}
200
Body
{
"id": 111
}
Create an unclaimed accountPOST/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.
Name | Type | Required | Description |
---|---|---|---|
first_name | string | Required | First name |
last_name | string | Required | Last name |
email_address | string | Required | Email address |
gender | Optional | Gender. | |
date_of_birth | string | Optional | Date of birth |
profile_image_id | number | Optional | ID of associated Asset representing the current profile image |
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
}
200
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 OrganizationsGET/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.
Name | Type | Description |
---|---|---|
data | array |
200
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 SettingsGET/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.
Name | Type | Description |
---|---|---|
id | number | |
object | ||
sms | object |
200
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 SettingsPUT/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.
Name | Type | Required | Description |
---|---|---|---|
object | Optional |
Body
{
"email": {
"enabled": true,
"domain_prefix": "email",
"email_domain": "some-charity.org"
}
}
200
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 PromoCodesGET/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.
Name | Type | Description |
---|---|---|
data | array |
200
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 PromoCodesGET/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.
Name | Type | Description |
---|---|---|
data | array |
200
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 PromoCodesGET/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.
Name | Type | Description |
---|---|---|
data | array |
200
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 PromoCodesGET/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.
Name | Type | Description |
---|---|---|
data | array |
200
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 PromoCodePOST/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.
Name | Type | Required | Description |
---|---|---|---|
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 | Optional | |
adjustment_type: `percentage` (string) - Specification of how 'adjustment_amount' is applied. Either 'amount' or 'percentage'. | string | Optional | |
code | string | Optional | Value 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_at | string | Optional | Date and time when the PromoCode can no longer be applied to purchases. |
is_active | boolean | Optional | Boolean used to activate or deactivate the PromoCode regardless of availability or date range. |
is_general | boolean | Optional | Boolean dictating if PromoCode has a general designation, meaning it applies to all TicketTypes for its Campaign |
quantity | number | Optional | Total number of items against which the PromoCode can be applied (null implies unlimited applications) |
starts_at | string | Optional | Date and time when the PromoCode can start being applied to purchases. |
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"
}
200
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 PromoCodeGET/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.
Name | Type | Description |
---|---|---|
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_count | number | Count of the number of times the promo code has been applied to items still in a Cart or successfully transacted against. |
campaign_id | number | ID of the PromoCode's campaign. |
code | string | Value 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_at | string | Timestamp of PromoCode record's creation. |
ends_at | string | Date and time when the PromoCode can no longer be applied to purchases. |
id | number | ID of the PromoCode. |
is_active | boolean | Boolean used to activate or deactivate the PromoCode regardless of availability or date range. |
is_general | boolean | Boolean dictating if PromoCode has a general designation, meaning it applies to all TicketTypes for its Campaign |
quantity | number | Total number of items against which the PromoCode can be applied (null implies unlimited applications) |
starts_at | string | Date and time when the PromoCode can start being applied to purchases. |
updated_at | string | Timestamp of last time the PromoCode record has been updated. |
200
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 PromoCodePUT/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.
Name | Type | Required | Description |
---|---|---|---|
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 | Optional | |
adjustment_type: `percentage` (string) - Specification of how 'adjustment_amount' is applied. Either 'amount' or 'percentage'. | string | Optional | |
code | string | Optional | Value 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_at | string | Optional | Date and time when the PromoCode can no longer be applied to purchases. |
is_active | boolean | Optional | Boolean used to activate or deactivate the PromoCode regardless of availability or date range. |
is_general | boolean | Optional | Boolean dictating if PromoCode has a general designation, meaning it applies to all TicketTypes for its Campaign |
quantity | number | Optional | Total number of items against which the PromoCode can be applied (null implies unlimited applications) |
starts_at | string | Optional | Date and time when the PromoCode can start being applied to purchases. |
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"
}
200
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 PromoCodeConfigurationsGET/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.
Name | Type | Description |
---|---|---|
data | array |
200
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 PromoCodeConfigurationsGET/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.
Name | Type | Description |
---|---|---|
data | array |
200
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 PromoCodeConfigurationPOST/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.
Name | Type | Required | Description |
---|---|---|---|
promo_code_id | number | Optional | ID of the promo code configuration's promo code. |
ticket_type_id | number | Optional | ID of the promo code configuration's ticket type. |
Headers
Content-Type: application/json
Body
{
"promo_code_id": 234,
"ticket_type_id": 345
}
200
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 PromoCodeConfigurationDELETE/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.
204
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 QuestionsGET/campaigns/{id}/questions
Retrieves the Question with the given ID.
Permissions
You will need a valid access token to request this endpoint.
Name | Type | Description |
---|---|---|
data | array |
200
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 QuestionPOST/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.
Name | Type | Required | Description |
---|---|---|---|
label | string | Optional | Question label |
type | string | Optional | |
enum_options | array | Optional | For an enum type Question, list the possible answers. |
tag | string | Optional | Optional but must be unique. |
is_required | boolean | Optional | Is the user required to answer this question? |
location | string | Optional | Location where this question is asked. Can be "donation_page", "campaign_registration" or "team_creation" |
weight | number | Optional | Can 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". | string | Optional |
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!"
}
200
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 QuestionPUT/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.
Name | Type | Required | Description |
---|---|---|---|
label | string | Optional | Question label |
enum_options | array | Optional | For an enum type Question, list the possible answers. |
weight | number | Optional | Can be used to order questions |
location | string | Optional | Location where this question is asked. Can be "donation_page", "campaign_registration" or "team_creation" |
is_required | boolean | Optional | Is the user required to answer this question? |
tag | string | Optional | Optional but must be unique. |
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"
}
200
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 QuestionGET/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.
Name | Type | Description |
---|---|---|
is_required | boolean | Is the user required to answer this question? |
location | string | Location where this question is asked. Can be "donation_page", "campaign_registration" or "team_creation" |
tag | string | Optional but must be unique. |
created_at | string | Timestamp of creation. |
updated_at | string | Timestamp of last update. |
deleted_at | string | Timestamp of deletion. |
is_deleted | boolean | DEPRECATED - Indicates whether or not the question was deleted. |
id | number | |
campaign_id | number | ID of associated Campaign. |
label | string | Question label |
type | string | Question format |
weight | number | Can be used to order questions |
enum_options | array | For an enum type Question, list the possible answers. |
product_id | number | Id of ticket question is linked to. |
200
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 PlansGET/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.
Name | Type | Description |
---|---|---|
data | array | An array of Recurring Donation Plans |
200
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 PlanGET/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.
Name | Type | Description |
---|---|---|
data | array | An array of Transactions |
200
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 PlansGET/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.
Name | Type | Description |
---|---|---|
data | array | An array of Recurring Donation Plans |
200
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 PlansGET/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.
Name | Type | Description |
---|---|---|
data | array | An array of Recurring Donation Plans |
200
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 PlanGET/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.
Name | Type | Description |
---|---|---|
address | string | Billing address |
applied_fot_percent | number | The percentage to be added to all fee on top (aka Classy Mode) transactions created for this plan. |
campaign_id | number | ID for Recurring Donation Plan's Campaign |
canceled_at | string | Datetime representing cancellation time(can be null) |
cc_card_exp | string | Expiration date for the credit card used |
cc_last_four | string | Last four digits of the credit card used |
cc_type | string | Type of credit card used |
city | string | Billing city |
country | string | Billing country |
created_at | string | Recurring Donation Plan created date |
designation_id | number | ID for the designation the transactions created from the recurring donation plan will be allocated. |
donation_amount | string | Recurring donation amount in the organization's currency. |
donation_is_gift_aid | boolean | Flag whether the donor opts into gift aid used by the UK or not. Can only be set if the organization allows it. |
failed_at | string | Datetime representing the last time the recurring donation failed |
fee_on_top | boolean | Flag describing if the recurring donation covers fees. |
first_name | string | First name of recurring donator |
frequency | string | Rate at which a recurring transaction against this plan is made |
fundraising_team_id | number | ID of Fundraising Team receiving the recurring donation |
id | number | ID of Recurring Donation Plan |
is_anonymous | boolean | Flag determining if the transactions should be anonymized. |
last_name | string | Last name of recurring donator |
metadata | object | Arbitrary JSON metadata |
organization_id | number | ID for the Recurring Donation Plan's Organization |
postal_code | string | Billing postal code |
payment_provider_configuration_name | string | The Recurring Donation Plan Payment Provider. |
raw_currency_code | string | The currency code of the plan's transactions. Cannot be updated after being set. |
raw_donation_amount | number | The value donated, in the raw currency. |
schedule | object | JSON information specifying schedule for recurring transaction creation. |
started_at | string | Start time for recurring donations |
state | string | Billing state |
status | string | Status of Recurring Donation Plan |
supporter_id | number | ID of the supporter that associates the member and the organization. |
timezone_identifier | string | Identifier of timezone against which recurring charges will be made. |
updated_at | string | Last modification date |
200
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 HistoryGET/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.
200
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 RegistrationsGET/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.
Name | Type | Description |
---|---|---|
data | array |
200
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 RegistrationGET/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.
Name | Type | Description |
---|---|---|
address1 | string | Address1 |
address2 | string | Address2 |
attendee_id | number | Unique 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. |
blog | string | Blog URL |
campaign_id | number | ID of campaign registered for |
cell | string | Cell phone |
city | string | City |
company | string | Company |
country | string | Country |
created_at | string | Date registration was created |
updated_at | string | Last modification date |
date_of_birth | string | Date of birth |
string | Email address | |
first_name | string | First name |
fundraising_page_id | number | ID of fundraising page registered through |
gender | string | Gender |
id | number | Unique ID |
last_name | string | Last name |
member_id | number | ID of member registered |
phone | string | Phone number |
postal_code | string | Zip/Postal code |
state | string | State/Province |
status | string | Status of this registrations Indicates whether or not the registrant is planning on attending the event. Possible values: 'attending' & 'not_attending'. |
transaction_id | number | ID of transaction registration belongs to |
transaction_item_id | number | ID of transaction item of registration |
tshirt_size | string | T-Shirt size |
website | string | Website URL |
200
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 RegistrationPUT/registrations/{id}
Update an existing Registration.
Permissions
To request this endpoint the requester must have reporting access to the Campaign this Registration belongs to.
Name | Type | Required | Description |
---|---|---|---|
address1 | string | Optional | Address1 |
address2 | string | Optional | Address2 (optional) |
blog | string | Optional | Blog URL (optional) |
cell | string | Optional | Cell phone (optional) |
city | string | Optional | City (optional) |
company | string | Optional | Company |
country | string | Optional | Country (optional) |
date_of_birth | string | Optional | Date of birth |
string | Optional | Email address | |
first_name | string | Optional | First name |
gender | string | Optional | Gender |
last_name | string | Optional | Last name |
phone | string | Optional | Phone number |
postal_code | string | Optional | Zip/Postal code (optional) |
state | string | Optional | State/Province (optional) |
status | string | Optional | Status of this registrations. Indicates whether or not the registrant is planning on attending the event. Possible values: 'attending' & 'not_attending'. |
tshirt_size | string | Optional | T-Shirt size (optional) |
website | string | Optional | Website URL (optional) |
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"
}
200
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 RegistrationsGET/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.
Name | Type | Description |
---|---|---|
data | array |
200
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 CodesGET/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.
Name | Type | Description |
---|---|---|
data | array | An array of Source Tracking Codes. |
200
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 CodesGET/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.
Name | Type | Description |
---|---|---|
data | array | An array of Source Tracking Codes. |
200
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 SupporterGET/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.
Name | Type | Description |
---|---|---|
address1 | string | Address |
city | string | City |
country | string | Country |
created_at | string | Date and time supporter created |
email_address | string | Email address |
first_name | string | First name |
gender | string | Gender |
id | number | Unique ID of supporter |
last_email_at | string | Date and time of last communication to supporter |
last_name | string | Last name |
metadata | string | JSON string for storing arbitrary metadata |
nickname | string | Nickname/Alias |
opt_in | boolean | Whether supporter has opted in to updates/communication |
origin | string | Describes 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. |
phone | string | Phone number |
postal_code | string | Zip/Postal code |
source_campaign_id | number | |
source_member_id | number | |
source_organization_id | number | ID of organization supporter belongs to |
state | string | State/Province |
updated_at | string | Date and time supporter was modified |
200
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 SupportersGET/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.
Name | Type | Description |
---|---|---|
data | array |
200
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 SupporterPOST/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.
Name | Type | Required | Description |
---|---|---|---|
address1 | string | Optional | Address |
address2 | string | Optional | Address |
city | string | Optional | City |
country | string | Optional | Country |
email_address | string | Optional | The email address of the supporter. |
first_name | string | Optional | First name |
gender | string | Optional | Gender |
last_name | string | Optional | Last name |
metadata | string | Optional | JSON string for storing arbitrary metadata |
nickname | string | Optional | Nickname/Alias |
phone | string | Optional | Phone number |
postal_code | string | Optional | Zip/Postal code |
state | string | Optional | State/Province. Required if country is US |
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"
}
200
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 SupporterPUT/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.
Name | Type | Required | Description |
---|---|---|---|
address1 | string | Optional | Address |
address2 | string | Optional | Address |
city | string | Optional | City |
country | string | Optional | Country |
email_address | string | Optional | The email address of the supporter. |
first_name | string | Optional | First name |
gender | string | Optional | Gender |
last_name | string | Optional | Last name |
metadata | string | Optional | JSON string for storing arbitrary metadata |
nickname | string | Optional | Nickname/Alias |
phone | string | Optional | Phone number |
postal_code | string | Optional | Zip/Postal code |
state | string | Optional | State/Province. Required if country is US |
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"
}
200
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 SupporterDELETE/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.
200
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 TicketTypesGET/campaigns/{id}/ticket-types
Permissions
To request this endpoint you will need a valid access token.
200
Headers
Content-Type: application/json
List Promo Code Ticket TypesGET/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.
Name | Type | Description |
---|---|---|
data | array |
200
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 CampaignPOST/campaigns/{id}/ticket-types
Permissions
To request this endpoint you will need a valid access token with permissions to manage the campaign.
Name | Type | Required | Description |
---|---|---|---|
description | string | Optional | Description of TicketType |
ended_at | string | Optional | 01-01T12:00:00+0000' (string) - Date when TicketType is no longer available |
entries_per_ticket | number | Optional | How many entries a Ticket of this type grants to a purchaser |
is_active | boolean | Optional | Whether TicketType is available to purchase |
max_per_transaction | number | Optional | The most Tickets of this type that be purchased in a single transaction |
name | string | Optional | The name of the TicketType |
org_percent: `100` (number) - DEPRECATED. Use deductible_percent | string | Optional | |
deductible_percent: `100` (number) - Percentage of ticket price that is considered donation to campaign (May only specify deductible_percent OR deductible_amount) | string | Optional | |
deductible_amount: `5.00` (number) - Amount of ticket price that is considered donation to campaign (May only specify deductible_percent OR deductible_amount) | string | Optional | |
price | number | Optional | Price of a single Ticket of this type. |
quantity_available | number | Optional | Quantity of Tickets available for purchase. Use 'null' for unlimited tickets. |
started_at | string | Optional | 01-01T12:00:00+0000' (string) - Date when TicketType can start being purchased |
weight | number | Optional | Display order |
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
}
200
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 TicketTypeGET/ticket-types/{id}
Name | Type | Description |
---|---|---|
campaign_id | number | The ID of the Campaign the TicketType belongs to |
created_at | string | 01-01T12:00:00+0000' (string) - Timestamp from when TicketType was created |
description | string | Description of TicketType |
ended_at | string | 01-02T12:00:00+0000' (string) - Date when TicketType is no longer available |
entries_per_ticket | number | How many entries a TicketType grants to a purchaser |
id | number | The ID of the TicketType |
is_active | boolean | Whether TicketType is available to purchase |
is_classy_mode | boolean | Whether TicketType is fees on top. (Depreciated). |
max_per_transaction | number | The most Tickets of this type that be purchased in a single transaction |
name | string | The name of the TicketType |
org_percent: `100` (number) - DEPRECATED. Use deductible_percent | string | |
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 | |
price | number | Price of a single Ticket of this type. |
quantity_available | number | Quantity of Tickets available for purchase |
quantity_sold | number | Quantity of Tickets that have been sold. Only available for FRS campaigns. |
quantity_reserved | number | Quantity of Tickets that are reserved awaiting checkout/payment. Only available for FRS campaigns. |
started_at | string | 01-01T12:00:00+0000' (string) - Date when Tickets of this type can start being purchased |
updated_at | string | 01-01T12:00:00+0000' (string) - Date when Tickets of this type was last updated |
weight | number | Display order |
200
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 TicketTypePUT/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.
Name | Type | Required | Description |
---|---|---|---|
description | string | Optional | Description of TicketType |
ended_at | string | Optional | 01-01T12:00:00+0000' (string) - Date when TicketType is no longer available |
entries_per_ticket | number | Optional | How many entries a Ticket of this type grants to a purchaser |
is_active | boolean | Optional | Whether TicketType is available to purchase |
max_per_transaction | number | Optional | The most Tickets of this type that be purchased in a single transaction |
name | string | Optional | The name of the TicketType |
org_percent: `100` (number) - DEPRECATED. Use deductible_percent | string | Optional | |
deductible_percent: `100` (number) - Percentage of ticket price that is considered donation to campaign (May only specify deductible_percent OR deductible_amount) | string | Optional | |
deductible_amount: `5.00` (number) - Amount of ticket price that is considered donation to campaign (May only specify deductible_percent OR deductible_amount) | string | Optional | |
price | number | Optional | Price of a single Ticket of this type. |
quantity_available | number | Optional | Quantity of Tickets available for purchase. Use 'null' for unlimited tickets. |
started_at | string | Optional | 01-01T12:00:00+0000' (string) - Date when TicketType can start being purchased |
weight | number | Optional | Display order |
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
}
200
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 TransactionsGET/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.
Name | Type | Description |
---|---|---|
data | array | An array of Transactions |
200
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 TransactionsGET/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.
Name | Type | Description |
---|---|---|
data | array | An array of Transactions |
200
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 TransactionGET/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.
Name | Type | Description |
---|---|---|
account_number | string | For ACH, the last digits of the account funds were drawn from |
account_type | string | For ACH, what type of account funds were drawn from (savings, checking) |
acknowledgements_count | number | Number 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_percent | number | Percentage added to Fee on Top (aka Classy Mode) transactions to cover fees. Null if the transaction is not fee on top. |
billing_address1 | string | Billing address |
billing_address2 | string | Billing address 2 |
billing_city | string | Billing city |
billing_country | string | Billing country |
billing_first_name | string | Billing first name |
billing_last_name | string | Billing last name |
billing_postal_code | string | Billing zip/postal code |
billing_state | string | Billing state/province |
browser_info | string | Browser Information |
campaign | object | |
campaign_id | number | ID of campaign transaction is associated with |
card_expiration | string | The expiration of credit card used (when applicable), in MMYY format |
card_last_four | number | The last four digits of the credit card (when applicable) |
card_type | string | Type of credit card used (when applicable) |
charged_at | string | Date and time transaction was charged |
charged_classy_fees_amount | string | Total fees applied by Classy |
charged_currency_code | string | Currency code of final charge |
charged_fees_amount | string | Total fees applied to transaction (Classy and payment processor) |
charged_pp_fees_amount | string | |
charged_total_gross_amount | string | Gross total charged to purchaser |
classy_fees_amount | number | Amount of fees apply by Classy |
comment | string | Organization comment |
company_name | string | Name of company this transaction has ties to |
context | object | Contextual data about the transaction that can be used for filtering/sorting |
created_at | string | Date transaction record was created |
designation_id | number | ID of the Designation this Transaction is allocated to. |
fees_amount | string | Total fees applied to transaction (Classy and credit card processing) |
fee_on_top | boolean | Flag if the transaction is a fee on top or not |
frequency | string | Frequency of transaction: one-time or recurring |
fundraising_page_id | number | ID of the fundraising page transaction is associated with |
fundraising_team_id | number | ID of fundraising team transaction is associated with |
gross_amount | string | Gross total specified by purchaser |
gross_donation_amount | string | Net amount considered donation for purchaser |
id | number | Unique ID of the transaction |
institution | string | For ACH, the name of the banking institution funds were drawn from |
in_honor_of | string | A person this donation is in honor or memory of |
is_anonymous | boolean | Whether purchaser indicated if transaction should be anonymous |
is_gift_aid | boolean | Flag whether the donor opted into gift aid used by the UK or not. Can only be set if the organization allows it. |
member_country | string | Country of the member. |
member_email_address | string | Email address of purchaser Classy member |
member_id | number | Primary Id of the purchaser Classy member. |
member_name | string | Name of purchaser Classy member |
member_phone | string | Phone number |
metadata | object | An optional set of unstructured metadata to be stored with a transaction |
net_donation_amount | string | Net total paid to organization |
organization_id | number | ID of organization transaction is associated with |
overhead_net_amount | string | Amount of event/host fees |
parent_transaction_id | number | |
payment_gateway | string | Payment processor. (Underlying payment processor for Classy Pay) |
payment_method | string | Service for processing payment (e.g. Classy Pay, WePay, etc.) |
pp_reference_id | string | Classy Pay ONLY - Reference ID for underlying transaction processing. |
pp_transaction_id | string | Reference transaction ID for payment processor |
processor_fees_amount | number | Amount of fees applied by payment processor |
promo_code_code | string | The code of the promo code applied to the transaction. |
purchased_at | string | Date and time of transaction |
raw_currency_code | string | Currency Code of the transaction before normalization. |
raw_donation_gross_amount `1.25` | number | Gross 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` | number | Net Amount of event/host fees in the raw currency. |
raw_total_gross_amount `1.00` | number | Gross amount charged to purchaser if raw currency code is set. |
recurring_donation_plan_id | number | ID of recurring donation plan the transaction belongs to. If there is no recurring donation plan then this is null. |
refunded_at | string | Date and time of refund, if applies |
status | string | Status of transaction |
supporter_id | number | Supporter ID associated with the member. |
tax_entity_id | string | Tax entity that satisfies tax compliance for the transaction |
updated_at | string | Date and time of last update |
200
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 TransactionPOST/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.
Name | Type | Required | Description |
---|---|---|---|
answers | array | Optional | (optional) |
billing_address1 | string | Optional | Billing address (optional) |
billing_city | string | Optional | Billing city (optional) |
billing_country | string | Optional | Billing country (optional) |
billing_first_name | string | Required | Billing first name (required if no member_email_address) |
billing_last_name | string | Required | Billing last name (required if no member_email_address) |
billing_postal_code | string | Optional | Billing zip/postal code (optional) |
billing_state | string | Optional | Billing state/province. Required if billing country is US |
comment | string | Optional | Organization comment (optional) |
fundraising_page_id | number | Optional | ID of fundraising page transaction is associated with (optional) |
fundraising_team_id | number | Optional | ID of fundraising team transaction is associated with (optional) |
is_anonymous | boolean | Optional | Whether purchaser indicated if transaction should be anonymous (optional) |
items | array | Required | (required) |
member_email_address | string | Required | Email address of purchaser Classy member (required if no billing_first_name and billing_last_name) |
member_name | string | Optional | Name of purchaser Classy member (optional) |
member_phone | string | Optional | Phone number |
metadata | object | Optional | An optional set of unstructured metadata to be stored with a transaction |
offline_payment_info | object | Optional | (optional) |
parent_transaction_id | number | Optional | (optional) |
purchased_at | string | Optional | Date and time of transaction (optional) |
refunded_at | string | Optional | Date and time of refund, if applies (optional) |
is_gift_aid | boolean | Optional | Flag whether the donor opted into gift aid used by the UK or not. Can only be set if the organization allows it. |
designation_id | number | Optional | ID of the Designation this Transaction is allocated to. |
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
}
200
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 TransactionPUT/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.
Name | Type | Required | Description |
---|---|---|---|
billing_address1 | string | Optional | Billing address |
billing_city | string | Optional | Billing city |
billing_country | string | Optional | Billing country |
billing_first_name | string | Optional | Billing first name |
billing_last_name | string | Optional | Billing last name |
billing_postal_code | string | Optional | Billing zip/postal code |
billing_state | string | Optional | Billing state/province |
comment | string | Optional | Organization comment |
company_name | string | Optional | Name of company this transaction has ties to |
designation_id | number | Optional | ID of the Designation this Transaction is allocated to. |
is_anonymous | boolean | Optional | Whether purchaser indicated if transaction should be anonymous |
is_gift_aid | boolean | Optional | Flag whether the donor opted into gift aid used by the UK or not. Can only be set if the organization allows it. |
member_email_address | string | Optional | Email address of purchaser Classy member |
member_name | string | Optional | Name of purchaser classy member |
member_phone | string | Optional | Phone number |
metadata | object | Optional | An optional set of unstructured metadata to be stored with a transaction |
purchased_at | string | Optional | Date and time of transaction |
status | string | Optional | The status of the transaction |
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"
}
200
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 ItemsGET/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.
Name | Type | Description |
---|
200
Headers
Content-Type: application/json
Body
{}
Transaction Receipts ¶
Transaction receipts record any instance when a specific transaction is produced for a donation.
List Transaction ReceiptsGET/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.
Name | Type | Description |
---|
200
Headers
Content-Type: application/json
Body
{}
Generated by aglio on 04 Jan 2019