Skip to content

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 page and per_page query 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 events
  • POST /events — Create event
  • GET /events/{id} — Get event details
  • PUT /events/{id} — Update event
  • DELETE /events/{id} — Archive event

Users

  • GET /users — List users
  • POST /users — Create user
  • GET /users/{id} — Get user details
  • PUT /users/{id} — Update user
  • DELETE /users/{id} — Deactivate user

Stands

  • GET /stands — List stands
  • POST /stands — Create stand
  • GET /stands/{id} — Get stand details
  • PUT /stands/{id} — Update stand
  • DELETE /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 options
  • PUT /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 configurations
  • POST /stand-configurations — Create configuration
  • GET /stand-configurations/{id} — Get configuration details with selections
  • PUT /stand-configurations/{id} — Update configuration (draft only)
  • POST /stand-configurations/{id}/submit — Submit configuration for review
  • POST /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 settings
  • PUT /stands/{standId}/package-allocation — Set package selection permission and pre-allocate package
  • DELETE /stands/{standId}/package-allocation — Remove package allocation

Configuration Categories

  • GET /packages/{packageId}/categories — List categories for a package
  • GET /categories/{id} — Get category details with options

Configuration Options

  • GET /packages/{packageId}/options — List all options for a package
  • GET /categories/{categoryId}/options — List options for a category
  • GET /options/{id} — Get option details

Configuration Selections

  • GET /stand-configurations/{configId}/selections — List selections for a configuration
  • POST /stand-configurations/{configId}/selections — Add selection to configuration
  • PUT /stand-configurations/{configId}/selections/{id} — Update selection quantity
  • DELETE /stand-configurations/{configId}/selections/{id} — Remove selection

Artworks

  • GET /artworks — List artworks
  • POST /artworks — Upload artwork
  • GET /artworks/{id} — Get artwork details
  • PUT /artworks/{id} — Update artwork
  • DELETE /artworks/{id} — Remove artwork

User Permissions

  • GET /user-permissions — List permissions
  • POST /user-permissions — Grant permission
  • GET /user-permissions/{id} — Get permission details
  • PUT /user-permissions/{id} — Update permission
  • DELETE /user-permissions/{id} — Revoke permission

Files

  • POST /files — Upload file
  • GET /files/{id} — Get file metadata
  • DELETE /files/{id} — Delete file

Webhooks

Webhooks are used to notify external systems of key events:

  • package_created — New package added to system
  • package_updated — Package data modified
  • stand_configured — Stand configuration submitted
  • configuration_approved — Configuration approved by organiser
  • artwork_uploaded — Artwork file uploaded
  • proof_approved — Proof approved by sponsor/organiser
  • proof_rejected — Proof rejected with feedback
  • payment_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