API Documentation
Overview
The Conference Expo Portal API provides a secure, RESTful interface for integrating with the platform. It enables external systems and partners to manage events, stands, sponsors, users, artwork, and related resources. All access is authenticated and authorised using OAuth 2.0.
- Base URL:
https://portal.conferenceexpo.com/api/v1
For detailed API design requirements and specifications, see API Design. For authentication details, see the section below.
Authentication
The API uses OAuth 2.0 Client Credentials flow. All requests must include a valid Bearer token in the Authorization header.
Token Endpoint:
POST /oauth/token
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials&client_id=...&client_secret=...
Token Response Example:
{
"access_token": "string",
"token_type": "Bearer",
"expires_in": 3600
}
Authenticated Request Example:
GET /api/v1/events
Authorization: Bearer <access_token>
Request & Response Structure
- All requests and responses use JSON.
- List endpoints support pagination via
pageandper_pagequery parameters. - Standard HTTP status codes are used.
- Error responses:
{
"error": {
"code": "string",
"message": "string"
}
}
Pagination Example:
{
"data": [ ... ],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 5,
"per_page": 20,
"to": 20,
"total": 100
},
"links": {
"first": "...",
"last": "...",
"prev": null,
"next": "..."
}
}
Endpoints
Note: The following is a representative list of core endpoints. It is not exhaustive. A complete, up-to-date API specification will be provided in Swagger (OpenAPI) format for full reference and integration details.
Events
GET /events— List eventsPOST /events— Create eventGET /events/{id}— Get event detailsPUT /events/{id}— Update eventDELETE /events/{id}— Archive event
Users
GET /users— List usersPOST /users— Create userGET /users/{id}— Get user detailsPUT /users/{id}— Update userDELETE /users/{id}— Deactivate user
Stands
GET /stands— List standsPOST /stands— Create standGET /stands/{id}— Get stand detailsPUT /stands/{id}— Update standDELETE /stands/{id}— Remove stand
Packages
GET /packages— List packages (includes filters for active/available)POST /packages— Create package (external system only)GET /packages/{id}— Get package details with categories and optionsPUT /packages/{id}— Update package (external system only)DELETE /packages/{id}— Archive package (external system only)GET /packages/{id}/versions— List package version history
Stand Configurations
GET /stand-configurations— List configurationsPOST /stand-configurations— Create configurationGET /stand-configurations/{id}— Get configuration details with selectionsPUT /stand-configurations/{id}— Update configuration (draft only)POST /stand-configurations/{id}/submit— Submit configuration for reviewPOST /stand-configurations/{id}/approve— Approve configuration (organisers only)POST /stand-configurations/{id}/request-changes— Request changes (organisers only)DELETE /stand-configurations/{id}— Remove configuration
Package Allocation
GET /stands/{standId}/package-allocation— Get stand package allocation settingsPUT /stands/{standId}/package-allocation— Set package selection permission and pre-allocate packageDELETE /stands/{standId}/package-allocation— Remove package allocation
Configuration Categories
GET /packages/{packageId}/categories— List categories for a packageGET /categories/{id}— Get category details with options
Configuration Options
GET /packages/{packageId}/options— List all options for a packageGET /categories/{categoryId}/options— List options for a categoryGET /options/{id}— Get option details
Configuration Selections
GET /stand-configurations/{configId}/selections— List selections for a configurationPOST /stand-configurations/{configId}/selections— Add selection to configurationPUT /stand-configurations/{configId}/selections/{id}— Update selection quantityDELETE /stand-configurations/{configId}/selections/{id}— Remove selection
Artworks
GET /artworks— List artworksPOST /artworks— Upload artworkGET /artworks/{id}— Get artwork detailsPUT /artworks/{id}— Update artworkDELETE /artworks/{id}— Remove artwork
User Permissions
GET /user-permissions— List permissionsPOST /user-permissions— Grant permissionGET /user-permissions/{id}— Get permission detailsPUT /user-permissions/{id}— Update permissionDELETE /user-permissions/{id}— Revoke permission
Files
POST /files— Upload fileGET /files/{id}— Get file metadataDELETE /files/{id}— Delete file
Webhooks
Webhooks are used to notify external systems of key events:
package_created— New package added to systempackage_updated— Package data modifiedstand_configured— Stand configuration submittedconfiguration_approved— Configuration approved by organiserartwork_uploaded— Artwork file uploadedproof_approved— Proof approved by sponsor/organiserproof_rejected— Proof rejected with feedbackpayment_received— Payment completed
Webhook Payload Example:
{
"event": "stand_configured",
"timestamp": "2025-10-23T14:30:00Z",
"data": {
"configuration_id": "uuid",
"stand_id": "uuid",
"package_id": "uuid",
"package_version": 1,
"total_price": 2500.00,
"status": "submitted"
}
}
Best Practices
- Use HTTPS for all requests
- Handle error responses and rate limits
- Store credentials securely
- Rotate client secrets regularly