View on GitHub

core

Membership Management made simple.

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

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
email 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
email 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