API Docs for Join It
Introduction
In coordination with a small handful customers, Join It released their first API endpoint in January of 2018.
While an API has not previously been available, it’s something that the team has envisioned since the beginning.
Currently, the API is in beta and available to Join It customers who are on the larger Packages..
If you would like an access token generated for your Organization, please contact us at support@joinit.com.
Authentication
Authentication is currently done through an issued token that is unique to your organization.
Treat this token as if it were your password as it is the authentication for accessing the API on your behalf. If you feel that your token has been compromised, immediately alert the team at Join It (in which case, Join It will revoke and reissue a token).
In the near future, tokens will be able to be generated from your admin tools. In the slightly more distant future, Join It will implement OAuth 2.0 standard for the issuing and management of 3rd party authentication. Although Join It is not currently following the OAuth 2.0 standard, the authentication framework is being built with this future in mind.
Endpoints
Below is a list of the existing endpoint and upcoming endpoints
- Organization Details - Get Details about your Organization
- Organization Memberships - Get a list of Memberships for your Organization
- Organization Membership Types - Get a list of Membership Types for your Organization
- Organization Payments - Get a list of Payments for your Organization
- Organization Questions - Get a list of Questions for your Organization
Organization Details
DESCRIPTION
The ‘Organization Details’ endpoint allows for a GET request to be made to return the information associated with the Organization that owns the token.
/organizations/me/details?token=XYXYXYXYXYXY
PARAMETERS
None
RESPONSE
Trait | Type | Description |
---|---|---|
_id | String | Unique ID of the Organization |
name | String | Name of the Organization |
slug | String | Slug of the Organization |
*profile_url | String | URL of the Organization’s profile |
{
"_id": "tw9TwuiDRB4dSGczp",
"name": "Demo Organization",
"slug": "demo-slug",
"profile_url" : "https://www.joinit.org/o/demo-slug"
}
Organization Memberships
DESCRIPTION
The ‘Organization Memberships’ endpoint allows for a GET request to be made with an email parameter and returns an array of associated membership objects.
/organizations/me/memberships?token=XYXYXYXYXYXY
PARAMETERS
Param | Type | Description |
---|---|---|
String (optional) | Email of the respective membership(s). Absense of email will return a list of all members. | |
page | Number (optional) | Pagination is supported on this endpoint |
RESPONSE
The response will be an Array of objects which represent associated Memberships
Each Membership object will have:
Trait | Type | Description |
---|---|---|
_id | String | Unique ID of the membership |
String | Email address of the membership | |
status | Number | Numberic status of the membership. 50 - prospective, 75 - pending, 100 - active, 300 - expired, 350 - cancelled |
expiration_date | Datetime | Date of the Membership’s expiration |
membership_type | String | Unique ID of Membership Type |
membership_name | String | Name of Membership Type |
external_id | String | Organization Defined ID for Membership |
customer_id | String | Unique ID of the related Stripe Customer Object |
subscription_id | String | Unique ID of the related Stripe Subscription object (recurring memberships only) |
profile | Object | Profile information for the related membership |
custom_answers | Array | Array of objects that represent the membership’s related Questions and respective answers |
[
{
"_id": "tw9TwuiDRB4dSGczp",
"email": "admin@example.com",
"expiration_date": "2018-12-31T23:59:59.999Z",
"membership_type": "skasexXdznRvnJq68",
"membership_name": "GOLD LEVEL",
"status": 100,
"customer_id": "cus_123456767",
"subscription_id": "sub_123243353",
"custom_answers":[
"question_id": "tw9TwuiDRB4dSGczp",
"question": "What is your favorite color?",
"answer": "Red"
],
"profile": {
"first_name": "Mitch",
"last_name": "Colleran"
},
"external_id": "XX-123456"
}
]
Organization Membership Types
DESCRIPTION
The “Organization Membership Types” endpoint allows for a GET request to be made to return the membership types available for an organization.
/organizations/me/membership_types?token=XYXYXYXYXYXY
PARAMETERS
None
RESPONSE
Trait | Type | Description |
---|---|---|
_id | String | Unique ID of the Membership Type |
membership_name | String | Name of Membership Type |
status | Number | Numberic status of the Membership Type. 100 - active, 200 - hidden |
description | String | Description of the Membership Type |
price | Object | Price Object associated with the Membership Type |
recurring | Boolean | Answers ‘Does this membership automatically re-bill’? |
[
{
"_id": "hEtQjWhtTksgPTfLj",
"membership_name": "GOLD LEVEL",
"status": 100,
"description": "Membership type for folks who want to join at the Gold Level",
"duration_display": "Annual",
"price": {
"value": 10000,
"currency": "usd",
"display": "Free",
"type": "fixed"
},
"recurring":false
}
]
Organization Payments
DESCRIPTION
The “Organization Payments” endpoint allows for a GET request to be made to return an Array of Payments available for an organization.
/organizations/me/payments?token=XYXYXYXYXYXY
PARAMETERS
Param | Type | Description |
---|---|---|
page | Number (optional) | Pagination is supported on this endpoint |
status | Number (optional) | Limit returned payments by their status. |
start_date | Datetime (optional) | Limit returned payments by the datetime they were created (start of desired window) |
end_date | Datetime (optional) | Limit returned payments by the datetime they were created (end of desired window) |
RESPONSE
Trait | Type | Description |
---|---|---|
_id | String | Unique ID of the Payment |
status | Number | Numberic status of the payment - 100: paid, 300: refunded |
member_id | String | ID of the related Member |
membership_id | String | ID of the related Membership |
external_id | Number | ID of the Invoice (For compliance use when sequential numbering is required by regulation) |
gross_debit | Object | Price Object for the Gross Debit |
gross_credit | Object | Price Object for the Gross Credit |
subtotal_credit | Object | Price Object for the Subtotal Credit |
tax_credit | Object | Price Object for the Tax Credit |
tax_exists | Boolean | Answers “Is tax calculated for this membership?” |
tax_included | Boolean | Answers “Is tax included in the price of membership?” |
note | String | Notes associated with the payment |
channel | String | Channel that the payment came through. Currently either ‘stripe’ or ‘admin’ |
stripe_charge_id | String | ID of the related Stripe charge |
created | Datetime | Datetime representing when the payment record was created |
updated | Datetime | Datetime representing when the payment record was last updated |
[
{
"_id":"QWisdkELF5SMjeCwEk",
"status": 100,
"organization_id": "kTqdegYc6B3pPh47b",
"member_id": "n33RssGhJkopBAxe",
"membership_id": "YEtnPEzsd6KCoqKgb",
"external_id": 1,
"gross_debit": {
"value":0,
"currency":"usd",
"display": "$0.00"
},
"gross_credit": {
"value":15000,
"currency":"usd",
"display":"$150.00"
},
"subtotal_credit": {
"value":10000,
"currency":"usd",
"display":"$100.00"
},
"tax_credit": {
"value":5000,
"currency":"usd",
"display":"$50.00"
},
"tax_included":false,
"tax_exists": true,
"tax_name": "GST",
"note": "Payment processed via Stripe",
"channel": "stripe",
"stripe_charge_id": "ch_1Bkd2TdslyAWYhH7hmXd29ec",
"created": "2018-01-15T18:50:36.460Z",
"updated": "2018-01-15T18:50:36.460Z"
}
]
Organization Questions
DESCRIPTION
The “Organization Questions” endpoint allows for a GET request to be made to return an Array of Questions available for an organization.
/organizations/me/questions?token=XYXYXYXYXYXY
PARAMETERS
None
RESPONSE
Trait | Type | Description |
---|---|---|
_id | String | Unique ID of the Question |
name | String | Text that represents how the question is displayed |
type | String | Type of question (e.g. text, dropdown, radio, waiver) |
answers | Array | For multiple choice questions, these are the available answers |
created | Datetime | Datetime representing when the question record was created |
updated | Datetime | Datetime representing when the question record was last updated |
[
{
"_id": "w9eFq9vCCnAovWt65",
"name": "What is your Favorite Color?",
"type": "dropdown",
"answers": ["Red", "Blue", "Green"],
"created": "2017-10-21T23:05:01.000Z",
"updated": "2017-10-21T23:05:01.000Z"
}
]
Pagination
Coming Soon