Skip to content

Quick Reference Guide

Essential Information

Base Configuration

Base URL: https://engagifii-prod-event.azurewebsites.net
API Version: 1.0
Auth Type: OAuth 2.0 Bearer Token
Content Type: application/json

Required Headers (All Requests)

http
Authorization: Bearer {access_token}
api-version: 1.0
tenant-code: {tenant_code}
Content-Type: application/json

Authentication Quick Start

Get Access Token

bash
curl -X POST "{IDENTITY_SERVER_URL}/connect/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "client_id={CLIENT_ID}" \
  -d "client_secret={CLIENT_SECRET}" \
  -d "grant_type=client_credentials" \
  -d "scope=EventsApi"

Most Common Endpoints

Events

ActionMethodEndpointDescription
List EventsPOST/api/1.0/event/listGet paginated event list
Get EventGET/api/1.0/event/{id}Get event details
Create EventPOST/api/1.0/event/saveCreate new event
Update EventPOST/api/1.0/event/saveUpdate existing (include id)
Check NamePOST/api/1.0/event/CheckEventNameVerify name availability

Registrations

ActionMethodEndpointDescription
List RegistrationsPOST/api/1.0/event/registration/GetEventRegistrationsGet event registrations
Create RegistrationPOST/api/1.0/event/registration/saveRegister for event
Get RegistrationGET/api/1.0/event/registration/GetById/{id}Get registration details
Approve RegistrationPOST/api/1.0/event/registration/ApproveRequestProcess approval
Cancel RegistrationPOST/api/1.0/event/registration/cancelCancel registration

Booth Management

ActionMethodEndpointDescription
List BoothsPOST/api/1.0/event/boothconfiguration/GetAllBoothconfigurationsGet booth list
Check AvailabilityPOST/api/1.0/event/boothconfiguration/boothAvailableCheck booth status
Submit PreferencePOST/api/1.0/event/boothconfiguration/submitPreferenceSubmit booth choices

Bundles

ActionMethodEndpointDescription
List BundlesPOST/api/1.0/eventBundle/listGet event bundles
Get BundleGET/api/1.0/eventBundle/GetBundleDetails/{id}Bundle details
Create BundlePOST/api/1.0/eventBundle/saveCreate new bundle

Common Request Patterns

Paginated List Request

json
{
  "filter": {
    "searchText": "conference",
    "onlyUpcoming": true
  },
  "pageNumber": 1,
  "pageSize": 20,
  "sortBy": "startDateTime",
  "sortOrder": "ASC"
}

Create Event (Minimal)

json
{
  "name": "Tech Conference 2024",
  "startDateTime": "2024-06-15T09:00:00Z",
  "endDateTime": "2024-06-16T18:00:00Z",
  "isFreeEvent": false,
  "defaultPrice": 299.99,
  "registrantsCapacity": 500,
  "isRegistrationOn": true
}

Register for Event

json
{
  "eventId": "event-guid",
  "memberId": "member-guid",
  "registrationType": 1,
  "bundleIds": ["bundle-guid"],
  "notifyMe": true
}

Status Codes Quick Reference

CodeMeaningAction
200SuccessProcess response
201CreatedNew resource created
400Bad RequestFix request format
401UnauthorizedRefresh token
403ForbiddenCheck permissions
404Not FoundVerify resource ID
429Rate LimitedWait and retry
500Server ErrorRetry with backoff

Common Filter Parameters

Event Filters

json
{
  "searchText": "string",
  "eventTypeIds": [1, 2],
  "startDateFrom": "2024-01-01",
  "startDateTo": "2024-12-31",
  "onlyUpcoming": true,
  "eventStatus": ["Published"],
  "tags": ["technology"]
}

Registration Filters

json
{
  "eventId": "guid",
  "registrationType": 1,
  "registrationStatus": [5],
  "searchText": "john",
  "organizationIds": ["org-guid"]
}

Enums Quick Reference

EventRegistrationStatus

1 = InProgress
2 = ApprovalPending
3 = EligibleButApprovalPending
4 = ApprovalDenied
5 = ApprovalComplete
6 = Cancelled
7 = BoothAssignmentPending

EventRegistrationType

0 = All
1 = Member
2 = Exhibitor

EventExhibitorBoothStatus

1 = PreAssigned
2 = Available
3 = Sold

AssignedType

0 = None
1 = Person
2 = Organization

Quick Code Examples

JavaScript - List Events

javascript
const response = await fetch('https://engagifii-prod-event.azurewebsites.net/api/1.0/event/list', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${token}`,
    'api-version': '1.0',
    'tenant-code': tenantCode,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    pageNumber: 1,
    pageSize: 10,
    filter: { onlyUpcoming: true }
  })
});

const events = await response.json();

Python - Get Event Details

python
import requests

response = requests.get(
    f'https://engagifii-prod-event.azurewebsites.net/api/1.0/event/{event_id}',
    headers={
        'Authorization': f'Bearer {token}',
        'api-version': '1.0',
        'tenant-code': tenant_code
    }
)

event = response.json()

cURL - Create Registration

bash
curl -X POST "https://engagifii-prod-event.azurewebsites.net/api/1.0/event/registration/save" \
  -H "Authorization: Bearer {TOKEN}" \
  -H "api-version: 1.0" \
  -H "tenant-code: {TENANT}" \
  -H "Content-Type: application/json" \
  -d '{
    "eventId": "event-guid",
    "memberId": "member-guid",
    "registrationType": 1,
    "bundleIds": ["bundle-guid"]
  }'

Common Troubleshooting

Problem: 401 Unauthorized

Solution:

  1. Check token expiration
  2. Verify token format (Bearer prefix)
  3. Refresh token if expired

Problem: 400 Bad Request

Solution:

  1. Validate JSON format
  2. Check required fields
  3. Verify data types match spec

Problem: 404 Not Found

Solution:

  1. Verify endpoint URL
  2. Check resource ID exists
  3. Confirm correct API version

Problem: 429 Rate Limited

Solution:

  1. Check Retry-After header
  2. Implement exponential backoff
  3. Cache responses when possible

Useful Patterns

Retry with Backoff

javascript
async function retryRequest(fn, retries = 3) {
  for (let i = 0; i < retries; i++) {
    try {
      return await fn();
    } catch (error) {
      if (error.status !== 429 && error.status < 500) throw error;
      await new Promise(r => setTimeout(r, Math.pow(2, i) * 1000));
    }
  }
  throw new Error('Max retries exceeded');
}

Token Refresh

javascript
let token = null;
let tokenExpiry = null;

async function getValidToken() {
  if (token && tokenExpiry > Date.now()) return token;
  
  const response = await fetch(TOKEN_URL, {
    method: 'POST',
    body: new URLSearchParams({
      client_id: CLIENT_ID,
      client_secret: CLIENT_SECRET,
      grant_type: 'client_credentials',
      scope: 'EventsApi'
    })
  });
  
  const data = await response.json();
  token = data.access_token;
  tokenExpiry = Date.now() + (data.expires_in * 1000) - 60000;
  return token;
}

Pagination Helper

python
async def get_all_items(endpoint, filter_obj):
    all_items = []
    page = 1
    
    while True:
        response = await client.post(endpoint, {
            'filter': filter_obj,
            'pageNumber': page,
            'pageSize': 100
        })
        
        all_items.extend(response['data'])
        
        if len(response['data']) < 100:
            break
            
        page += 1
        await asyncio.sleep(0.1)  # Rate limiting
    
    return all_items

Rate Limits

  • Default: 1000 requests/minute
  • Burst: 100 concurrent requests
  • File Upload: 10 MB max
  • Batch Operations: 100 items max

Check headers:

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 950
X-RateLimit-Reset: 1705316400

Environment URLs

EnvironmentBase URL
Productionhttps://engagifii-prod-event.azurewebsites.net
StagingContact support for URL
DevelopmentContact support for URL

Support Contacts

Postman Collection

Import this collection for quick testing:

json
{
  "info": {
    "name": "Engagifii Events API",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{access_token}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://engagifii-prod-event.azurewebsites.net"
    },
    {
      "key": "apiVersion",
      "value": "1.0"
    },
    {
      "key": "tenantCode",
      "value": "YOUR_TENANT_CODE"
    }
  ]
}

Health Check

Quick API health check:

bash
curl -X POST "https://engagifii-prod-event.azurewebsites.net/api/1.0/event/list" \
  -H "Authorization: Bearer {TOKEN}" \
  -H "api-version: 1.0" \
  -H "tenant-code: {TENANT}" \
  -H "Content-Type: application/json" \
  -d '{"pageNumber":1,"pageSize":1}'

Success = API is operational