Introduction
This is the Glue Up open API v2 document, it includes 5 business collections:
Click on any API, you can easily try out with your specific parameters.
API Request Structure
From Apiary console, we try out APIs on apidemo server. Note that in your integration code, please use the corresponding live server where your organization is on, with the public / private key we provided. Please do not test in Apiary with the keys of live server, otherwise unexpected errors will occur.
API integration server URI:
Live server URI:
Here is an example of an API request header.
a: v=1.0;k=springfield_demo;ts=1382312423124;d=213213
token: WnComsVP_DTky7RUXWhwhDYSdcFfCeSv2UiFIAbqP0V1uuILmESL_0l6WVQqVWyamArQWz5IHOeo9UsSr9PV1I1SOrnPuoqU42Ul_EYFe2z12MzZIDlWjQ3H1TuLdujI
Parameters - a
a is a required parameter in header for each API
Here is a sample code of generating parameter d (digest) in Java.
import org.joda.time.DateTime;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Hex;
public class Helper {
public static String getDigest(String publicKey, String privateKey, String requestMethod, String version) {
String result = null;
String ALGORITHM = "HmacSHA256";
long time = DateTime.now(DateTimeZone.UTC).getMillis();
StringBuffer baseString = new StringBuffer(requestMethod);
baseString.append(publicKey);
baseString.append(version);
baseString.append(nowAsDateTime().getMillis());
SecretKeySpec signingKey = new SecretKeySpec(privateKey.getBytes(), ALGORITHM);
try {
Mac mac = Mac.getInstance(ALGORITHM);
mac.init(signingKey);
result = Hex.encodeHexString(mac.doFinal(baseString.toString().getBytes()));
}
catch ( Exception e ) {
log.error("Exception in getDigest()", e);
throw new RuntimeException(e);
}
return result;
}
}
Parameters - token
Here is an example of a JSON-format body of an API request.
{
"projection": [],
"offset": 0,
"limit": 5,
"order": {
"startDateTime": "desc",
"title": "asc"
},
"filter": [
{
"projection":"name",
"operator":"eq",
"values": ["GlueUp"]
}
],
"search": {
"fields":["givenName","familyName","emailAddress"],
"value":"Test",
"fullText":true
},
"order": {
"startDateTime": "asc"
},
"language": {
"code": "en"
}
}
Pagination
Order
Filter
Search
List of available operators
| Operator | Description |
|---|---|
| eq | Equal |
| ne | Not equal |
| gt | Greater than |
| ge | Greater than or equal |
| lt | Less than |
| le | Less than or equal |
| lk | Like |
| nl | Not like |
| bl | Null |
| nb | Not null |
| st | Starts with |
| ed | Ends with |
| in | Is in |
| any | One of |
API Response Structure
Here is an example of a JSON-format return of an API request. We will review each property and how to use them.
{
"code": 200,
"data": {
"value": [
"..."
],
"errors": [
{
"code": -1000,
"messages": [
"Invalid email format."
]
}
],
"warnings": [
{
"code": -2001,
"messages": [
"[collaboratorCategories] is not a projectable property"
]
}
],
"metadata": {
"pagination": {
"total": 15
}
}
}
}
Code
Common used HTTP Status Codes:
| Code | Title | Description |
|---|---|---|
| 200 | OK | Standard response for successful HTTP requests. |
| 201 | Created | The request has been fulfilled and resulted in a new resource being created. |
| 400 | Bad Request | The request cannot be fulfilled due to bad syntax. |
| 401 | Unauthorized | The request was a valid request, but the server is refusing to respond to it. |
| 403 | Forbidden | The request was a valid request, but the server is refusing to respond to it. Unlike a 401 Unauthorized response, authenticating will make no difference. |
| 404 | Not Found | The requested resource could not be found. |
| 500 | Internal Server Error | A generic error message, given when an unexpected condition was encountered and no more specific message is suitable. |
Value
Errors
Warnings
Metadata
Model Formats
Notes : The event model contains more properties that are used in the administration section.
If you need details on other properties and/or miss an important one, please contact us.
Sample Code:
{
"id": 937,
"language": {
"code": "en"
},
"defaultLanguage": {
"code": "en"
},
"title": "Test Edit default Ticket",
"startDateTime": 1453345200000,
"endDateTime": 1459418400000,
"venueInfo": {
"id": 937,
"venueReusable": false,
"zoom": 14,
"name": "Soho",
"city": [ ],
"cityName": "Bengaluru",
"country": {
"code": "IN",
"name": "India"
},
"latitude": 12.9731,
"longitude": 77.592385
},
"eventRole": {
"code": "ORGNZ",
"name": "Lead Organizer"
},
"published": true
}
| Property | Type | Description | Notes |
|---|---|---|---|
| id | int | Event identifier. | |
| title | string | Event title. | |
| subTitle | string | Event subtitle. | |
| summary | text | Event summary. | |
| startDateTime | timestamp | Start date and time of the event. |
The
startDateTime and endDateTime timestamps are in the timezone UTC+08:00, regardless of the timezone specified in venueInfo.
Example:
|
| endDateTime | timestamp | End date and time of the event. | |
| venueInfo | Location Model | Event venue informations. | Use the location model format. Please see below. |
| eventRole | Reference Data Model | Role of the organization that created the event. | Use the Reference Data model format. Please see below. |
| eventType | Reference Data Model | Type of the event. | Use the Reference Data model format. Please see below. |
| industry | Reference Data Model | Industry of the event. | Use the Reference Data model format. Please see below. |
| internalContact | Person Model | Person that is responsible for the event. Used by the organization internal staff. | Use the Reference Data model format. Please see below. |
| publicContact | Person Model | Person that is responsible for the event. Used for public information. | Use the Reference Data model format. Please see below. |
| defaultLanguage | Reference Data Model | The main language selected when the event was created. | Use the Reference Data model format. Please see below. |
| language | Reference Data Model | The current language retrieved. | Use the Reference Data model format. Please see below. |
| openToPublic | boolean | If that property is true, the event is public and will be displayed on the organization public page. | |
| published | boolean | If that property is true, the event is published and so accessible from the event public page. | |
| currencies | Reference Data Model | List of available currencies for the purchase of ticket for that event. | Use the Reference Data model format. Please see below. |
The Location Model is used to describe an address such as the event venue.
"venueInfo": {
"name": "EB Office",
"streetAddress": "Guanghua Lu SOHO",
"cityName": "Beijing",
"province": "Beijing",
"zipCode": "10000",
"country": {
"code": "CN",
"name": "China"
},
"info": "Add."
}
| Property | Type | Description | Notes |
|---|---|---|---|
| name | string | The location name. | |
| streetAddress | text | The location full address. | |
| cityName | string | The location city. | |
| province | string | The location province. | |
| country | Reference Data Model | The location country. | |
| zipCode | string | The location zip code. | |
| info | text | The location extra informations. Can be use for directions etc… |
If you need details on other properties and/or miss an important one, please contact us.
{
"featured": true,
"membershipId": 78,
"startDate" : 1482487597000,
"adminContact":{
"givenName" : "John",
"familyName" : "Doe",
"emailAddress": {
"value": "john.doe@glueup.com"
}
}
"id": 21323,
"industryCode": "INVEST",
"address": {
"streetAddress": "Guang Hua Lu",
"cityName": "Beijing",
"province": "Beijing",
"zipCode": "100000",
"country": {
"code": "CN"
}
},
"phone": {
"value": "+86 13456789000"
},
"groups": {
"value": {
"value": "event"
}
},
"image": {
"filename": "64e2a82e-8ec0-4417-a584-b3d02f541383.png",
"id": "64e2a82e-8ec0-4417-a584-b3d02f541383",
"uri": "/resources/public/images/square/::size::/64e2a82e-8ec0-4417-a584-b3d02f541383.png"
},
"name": "GlueUp",
"fax": {
"value": "+86 13456789000"
},
"companyWebsiteAddress": "www.glueup.com",
"members": [
{
"id": 22183,
"phone": {
"value": "+86 13456789000"
},
"givenName": "John",
"familyName": "Doe",
"positionTitle": "Engineer",
"image": {
"filename": "64e2a82e-8ec0-4417-a584-b3d02f541383.png",
"id": "64e2a82e-8ec0-4417-a584-b3d02f541383",
"uri": "/resources/public/images/square/::size::/64e2a82e-8ec0-4417-a584-b3d02f541383.png"
}
}
]
}
| Property | Type | Description | Notes |
|---|---|---|---|
| feature | boolean | Is featured. | |
| membershipId | int | Membership ID. | |
| startDate | timestamp | Membership start date. | |
| adminContact | Member Model | Primary member. | |
| id | int | Company ID. | |
| industryCode | string | Industry Code. | |
| address | Location Model | Company address. | |
| phone | phone | Company phone. | |
| image | Image Model | Company logo. | |
| name | string | Company name. | |
| fax | phone | Company fax. | |
| companyWebsiteAddress | string | Company website. | |
| members | Member Model | Company members |
If you need details on other properties and/or miss an important one, please contact us.
{
"membership" : {
"id" : 78,
"startDate" : 1482487597000,
"featured": true,
"membershipType":{
"id": 56,
"title": Entrepreneurs,
"type": People
}
},
"individualMember" : {
"id": 132,
"membershipId": 78,
"image": {
"filename": "64e2a82e-8ec0-4417-a584-b3d02f541383.png",
"id": "64e2a82e-8ec0-4417-a584-b3d02f541383",
"uri": "/resources/public/images/square/::size::/64e2a82e-8ec0-4417-a584-b3d02f541383.png"
},
"givenName" : "John",
"familyName" : "Doe",
"companyName" : "Eventbank",
"postionTitle" : "Developer",
"industry": {
"code": "CONSLT"
},
"address": {
"streetAddress": "Guang Hua Lu",
"cityName": "Beijing",
"province": "Beijing",
"zipCode": "100000",
"country": {
"code": "CN"
}
},
"emailAddress": {
"value": "john.doe@glueup.com"
},
"phone": {
"value": "+86 15201516676"
},
}
}
Membership Member Model include two model, Membership Model and IndividualMember Model.
| Property | Type | Description | Notes |
|---|---|---|---|
| id | int | Membership ID. | |
| startDate | timestamp | Membership start date. | |
| feature | boolean | Is featured. | |
| membershipType | int | Membership Type. |
| Property | Type | Description | Notes |
|---|---|---|---|
| id | boolean | Member ID. | |
| membershipId | int | Membership ID. | |
| image | Image Model | Member profile picture. | |
| givenName | Member Model | Member given name. | |
| familyName | int | Member family name. | |
| companyName | string | Member company name. | |
| postionTitle | Location Model | Member position title. | |
| industry | phone | Industry code reference. | |
| address | Image Model | Member address. | |
| emailAddress | string | Member email. | |
| phone | phone | Member phone. |
Sample Code:
{
"id": 702,
"organizationId": 2040,
"title": "Membership Type Name eg.",
"internalTitle": "Internal Membership Type Name eg.",
"type": "People",
"description": "<p>Membership Description eg.</p>",
"status": "Active",
"approvalRequired": true,
"renewalApprovalRequired": true,
"renewalConfirmRequired": true,
"memberApprovalRequired": false,
"activationRequired": true,
"index": 4,
"defaultLanguageCode": "en",
"languageCode": "en",
"renewalCreationPeriod": 30,
"gracePeriod": 30,
"gracePeriodEnabled": true,
"showInDirectory": true,
"createdOn": 1572257697000,
"lastModified": 1572257992000,
"activeVersions": [ ... ],
"public": true
}
| Property | Type | Description |
|---|---|---|
| id | Int | Membership type id |
| organizationId | Int | Organization id |
| title | String | Show for customer |
| internalTitle | String | Internal title for staff |
| type | MembershipTypeEnum | Company, People |
| description | String | Description for this membership type |
| status | MembershipTypeStateEnum | Draft, Active, Inactive, Recycled |
| approvalRequired | Boolean | Is this membership type need approval |
| renewalApprovalRequired | Boolean | Is renewal need staff approval |
| renewalConfirmRequired | Boolean | Is renewal need staff confirm |
| memberApprovalRequired | Boolean | Is member required approval |
| activationRequired | Boolean | Is activation need manually do |
| index | Int | List order |
| defaultLanguageCode | String | Default language |
| languageCode | String | Language |
| public | Boolean | Is public membership type |
| renewalCreationPeriod | Int | Renewal allows the creation time before the end of the membership (day) |
| gracePeriod | Int | Grace Period time (day) |
| gracePeriodEnabled | Boolean | Is enable grace period |
| showInDirectory | Boolean | Should it show in membership directory |
| createdOn | Long | Created time in epoch milli |
| lastModified | Long | Last modified time in epoch milli |
| activeVersions | List<MembershipTypeVersion> | The active membership type version, See Membership Type Version Model |
Sample Code:
{
"organizationId": 2040,
"membershipTypeId": 702,
"version": 1,
"status": "Current",
"duration": 12,
"memberLimit": 0,
"defaultCurrencyCode": "CNY",
"free": false,
"additionalMembersAllowed": false,
"additionalMembersFree": true,
"additionalMembersLimit": 0,
"extraMembersPriceEnabled": false,
"newTermFixedDate": true,
"newTermFixedDay": 1,
"newTermFixedMonth": "JANUARY",
"proRataEnabled": true,
"proRataStartFrom": "JANUARY",
"proRataTermSection": "Month",
"proRataPriceRounding": "Current",
"crossTermEnabled": true,
"crossTermPeriod": 30,
"crossTermExcludeCurrentPrice": true,
"createdOn": 1572257697000,
"lastModified": 1572257992000,
"prices": [ ... ],
"taxes": [ ... ],
"invoice": { ... },
"extraFee": { ... },
"discount": { ... },
"additionalMembersPrices": [ ... ],
"extraMembersPrices": [ ... ]
}
| Property | Type | Description |
|---|---|---|
| organizationId | Int | Organization id |
| membershipTypeId | Int | Membership type id |
| version | Int | Version |
| status | MembershipTypeVersionStateEnum | Draft, Scheduled, InProgress, Current, Past |
| schedulerTime | Long | Planned effective time |
| duration | Int | How long dose this membership type version effect |
| memberLimit | Int | Member limit count |
| defaultCurrencyCode | String | Default currency |
| free | Boolean | Is free |
| additionalMembersAllowed | Boolean | Is allow additional member |
| additionalMembersFree | Boolean | Additional member fee |
| additionalMembersLimit | Int | Additional member count limit |
| extraMembersPriceEnabled | Boolean | Extra members price enabled or not |
| newTermFixedDate | Boolean | New term fixed date |
| newTermFixedDay | Byte | New term fixed day |
| newTermFixedMonth | Month | New term fixed moth |
| proRataEnabled | Boolean | Is Pro Rata Enabled |
| proRataStartFrom | Month | Pro Rata Start From |
| proRataTermSection | ProRataTermSectionEnum | Pro Rata Term Section Month, Quarter, Biannual |
| proRataPriceRounding | ProRataPriceRoundingEnum | Pro Rata Price Rounding Current, Next, Closest |
| crossTermEnabled | Boolean | Cross term enabled |
| crossTermPeriod | Short | Cross term period |
| crossTermExcludeCurrentPrice | Boolean | Cross term exclude current price |
| existingApplications | MembershipTypeVersionOptionsEnum | Now, OnScheduledTime, No |
| newApplications | MembershipTypeVersionOptionsEnum | Now, OnScheduledTime, No |
| existingRenewals | MembershipTypeVersionOptionsEnum | Now, OnScheduledTime, No |
| newRenewals | MembershipTypeVersionOptionsEnum | Now, OnScheduledTime, No |
| crossTermApplicable | Boolean | Cross term applicable |
| proRataCalculationDate | Long | Pro Rata Calculation Date |
| currentStartDate | Long | Current start date |
| nextStartDate | Long | New start date |
| createdOn | Long | Created time in epoch milli |
| lastModified | Long | Last modified time in epoch milli |
| prices | List<Price> | Price list, See Price Model |
| taxes | List<MembershipTypeTax> | Tax list, See Membership Type Tax Model |
| invoice | MembershipTypeInvoice | Invoice info, See Membership Type Invoice Model |
| extraFee | MembershipTypeCharge | Extra fee info, See Membership Type Charge Model |
| discount | MembershipTypeCharge | Discount info, See Membership Type Charge Model |
| chapterPriceType | MembershipTypeChapterPriceType | Chapter price type Fixed, Volume, Graduated |
| chapters | MembershipTypeChapterPrice | Chapters and price(Fixed) info, See Membership Type Chapter Price Model |
| chapterPriceRules | MembershipTypeChapterPriceRule | Chapters price rule(Volume, Graduated) list, See Membership Type Chapter Price Rule Model |
| additionalMembersPrices | List<Price> | Additional members prices list, See Price Model |
| extraMembersPrices | List<Price> | Extra members price list, See Price Model |
The price property only exists if chapter price type is Fixed.
Sample Code:
{
"price": {
"currency": {
"code": "USD"
},
"value": 100
},
"chapterId": 2660
}
| Property | Type | Description |
|---|---|---|
| price | - | the fixed price info of this chapter |
| chapterId | Integer | chapter organization id |
This model only for volume and graduated chapter price type, See Membership Type Chapter Price Model for fixed price info.
Sample Code:
{
"price": {
"currency": {
"code": "USD"
},
"value": 100
},
"minChapterCount": 1,
"maxChapterCount": 1
}
| Property | Type | Description |
|---|---|---|
| price | - | the price info of this rule |
| minChapterCount | Integer | minimum chapter count in this rule |
| maxChapterCount | Integer | maximum chapter count in this rule |
Sample Code:
{
"membershipTypeId": 371,
"membershipTypeVersion": 1,
"internalName": "Test",
"title": "Test",
"internalTitle": "Test",
"percentage": 22,
"applyToAll": true,
"publicName": "Test",
"organizationId": 141,
"id": 26
}
| Property | Type | Description |
|---|---|---|
| membershipTypeId | Integer | Membership type id |
| membershipTypeVersion | Integer | Membership type version |
| internalName | String | Internal name |
| title | String | Title |
| internalTitle | String | Internal title |
| percentage | BigDecimal | Percentage |
| applyToAll | Boolean | Apply to all |
| publicName | String | Public name |
| organizationId | Integer | Organization id |
| id | Integer | Id |
Sample Code:
{
"isInvoiceApplicantCharged": true,
"isBTInvoiceEnabled": false,
"btInvoiceChargePercentage": 0.00,
"isVATGeneralInvoiceEnabled": true,
"vatGeneralInvoiceChargePercentage": 1.00,
"vatGeneralInvoiceMinimumAmount": 2.00,
"isVATSpecialInvoiceEnabled": true,
"vatSpecialInvoiceChargePercentage": 3.00,
"vatSpecialInvoiceMinimumAmount": 4.00
}
| Property | Type | Description |
|---|---|---|
| isInvoiceApplicantCharged | Boolean | Is invoice application charged |
| isBTInvoiceEnabled | Boolean | Is BT invoice enable |
| btInvoiceChargePercentage | BigDecimal | BT invoice charge percentage |
| isVATGeneralInvoiceEnabled | Boolean | Is VAT General Invoice Enabled |
| vatGeneralInvoiceChargePercentage | BigDecimal | VAT General Invoice Charge Percentage |
| vatGeneralInvoiceMinimumAmount | BigDecimal | VAT General Invoice Minimum Amount |
| isVATSpecialInvoiceEnabled | Boolean | Is VAT special Invoice Enabled |
| vatSpecialInvoiceChargePercentage | BigDecimal | VAT special Invoice charge Percentage |
| vatSpecialInvoiceMinimumAmount | BigDecimal | VAT special Invoice Minimum Amount |
Sample Code:
{
"id": 2107,
"currency": "CNY",
"price": 33.00
}
| Property | Type | Description |
|---|---|---|
| id | Int | Price Id |
| currency | String | Currency Code |
| price | BigDecimal | Price |
Sample Code:
{
"application": { ... },
"renewal": { ... }
}
| Property | Type | Description |
|---|---|---|
| application | MembershipTypeChargeDetails | Membership application charge details, See Membership Type Charge Details Model |
| renewal | MembershipTypeChargeDetails | Membership renewal charge details, See Membership Type Charge Details Model |
Sample Code:
{
"percentage": 0.02,
"prices": [ ... ],
"proRataEnabled": false
}
| Property | Type | Description |
|---|---|---|
| percentage | BigDecimal | Membership type charge percentage |
| prices | List<Price> | Membership type charge price info, See Price Model |
| proRataEnabled | Boolean | Is pro Rata Enabled |
The Person model is used when you have a person type of information, like a user, a contact etc…
"publicContact": {
"givenName": "David",
"familyName": "Milo",
"phoneNumbers": [
{
"value": "+86 18612341234"
}
],
"emailAddresses": [
{
"value": "david.milosevic@glueup.com"
}
]
}
| Property | Type | Description | Notes |
|---|---|---|---|
| givenName | string | Person’s given name. | |
| familyName | string | Person's family name. | |
| emailAddresses | Person's email. | Returns a list of emails. | |
| phoneNumbers | phone | Person’s phone. | Returns a list of phones. |
The Reference Data model is used to retrieve a list of a specific property options in a specific language.
For example you can request the list of options for “eventType” in Chinese.
"value": [
{
"code": "en",
"name": "English"
},
{
"code": "zh",
"name": "中文"
}
]
| Property | Type | Description | Notes |
|---|---|---|---|
| code | string | Unique identifier for this option. | |
| name | string | Name in the requested language for this option. |