FORMAT: 1A
HOST: https://app.expofp.com/api/v1/

# ExpoFP.com API Reference

Every request should be performed with HTTP `POST` method and have `token` field in JSON payload. To get `token` value, proceed to your account Profile page on [ExpoFP](https://expofp.com/) website.

In addition to the API below, you can specify webhook URLs (per expo) which are triggered by ExpoFP when expo occurs (e.g.: `exhibitor_added`).

When updating records (with `update-exhibitor` method), `undefined` fields are left in database unchanged. Supply partial Exhibitor object to update only the needed fields.


## Group Expos

### List All Expos [POST /list-events]

+ Request (application/json)
    + Attributes (Auth)

+ Response 200 (application/json; charset=utf-8)
    + Attributes (array[Expo])

### Set Webhook URL [POST /set-webhook-url]

+ Request (application/json)
    + Attributes (Auth)
        + eventId: 2655 (number, required)  - Expo ID
        + webhookUrl: `http://webhook.expofp.com/` (string, required) - Webhook URL

+ Response 200

## Group Exhibitors

### List All Exhibitors [POST /list-exhibitors]

+ Request (application/json)
    + Attributes (Auth)
        + eventId: 2655 (number, required) - Expo ID

+ Response 200 (application/json; charset=utf-8)
  + Attributes (array[ExhibitorInfo])

### Bulk Read Exhibitors Template [POST /bulk-read-exhibitors-template]
+ Request (application/json)
    + Attributes (Auth)
        + expoId: 2655 (number, required) - Expo ID
+ Response 200 (application/json; charset=utf-8)

### Bulk Read Exhibitors [POST /bulk-read-exhibitors]
+ Request (application/json)
    + Attributes (Auth)
        + expoId: 2655 (number, required) - Expo ID
        + responseItemTemplate (object, nullable) - Copy response from [Bulk Read Exhibitors Template] and remove extra fields. Or call with null to take all fields.
+ Response 200 (application/json; charset=utf-8)

### Get Exhibitor Details [POST /get-exhibitor]

+ Request (application/json)
    + Attributes (Auth)
        + id: 12561 (number, required) - Exhibitor ID

+ Response 200 (application/json; charset=utf-8)
    + Attributes (Exhibitor)

### Get Exhibitor ID [POST /get-exhibitor-id]

+ Request (application/json)
    + Attributes (Auth)
        + eventId: 2655 (number, required) - Expo ID
        + externalId: `expofp` (string, required) - Exhibitor External ID - slug from exhibitor name by default, can be changed on the dashboard or via integration to link the exhibitor to an entity in an external system
+ Response 200 (application/json; charset=utf-8)
    + Attributes
        + id: 12561 (number) - Exhibitor ID

### Add Exhibitor [POST /add-exhibitor]

+ Request (application/json)
    + Attributes (Auth)
        + eventId: 2655 (number, required)  - Expo ID
        + Include ExhibitorFields

+ Response 200 (application/json; charset=utf-8)
    + Attributes
        + id: 21185 (number) - Exhibitor ID

### Update Exhibitor [POST /update-exhibitor]

+ Request (application/json)
    + Attributes (Auth)
        + id: 12560 (number, required) - Exhibitor ID
        + Include ExhibitorFields

+ Response 200

### Delete Exhibitor [POST /delete-exhibitor]

+ Request (application/json)
    + Attributes (Auth)
        + id: 21185 (number, required) - Exhibitor ID

+ Response 200

### Set rebooking state [POST /set-rebooking-state]
+ Request (application/json)
    + Attributes (SetRebookingStateRequest)
+ Response 204

## Group Exhibitor Media

### Set Exhibitor Logo [POST /set-exhibitor-logo]
+ Request (multipart/form-data; boundary=BOUNDARY_VALUE)

        --BOUNDARY_VALUE
        Content-Disposition: form-data; name="Img[file]"; filename="image.png" (optional) - Once null, the logo will be removed from the exhibitor profile
        Content-Type: image/png (according to the type of the uploaded file)

        {file content}
        --BOUNDARY_VALUE
        Content-Disposition: form-data; name="exhibitorid"  (required) - Exhibitor ID

        22451
        --BOUNDARY_VALUE
        Content-Disposition: form-data; name="token" (required) - API token

        22451
        --BOUNDARY_VALUE
        Content-Disposition: form-data; name="imgUrl" (required) - Image URL

        8323b1829d383af9ab48blkj3422e1070leff02a58cd115603d631932934c961be4793c
        --BOUNDARY_VALUE--

+ Response 200

### Set Exhibitor Leading image [POST /set-exhibitor-leading-image]
+ Request (multipart/form-data; boundary=BOUNDARY_VALUE)

        --BOUNDARY_VALUE
        Content-Disposition: form-data; name="Img[file]"; filename="image.png" (optional) - Once null, the leading image will be removed from the exhibitor profile
        Content-Type: image/png (according to the type of the uploaded file)

        {file content}
        --BOUNDARY_VALUE
        Content-Disposition: form-data; name="exhibitorid"  (required) - Exhibitor ID

        22451
        --BOUNDARY_VALUE
        Content-Disposition: form-data; name="token" (required) - API token

        22451
        --BOUNDARY_VALUE
        Content-Disposition: form-data; name="imgUrl" (required) - Image URL

        8323b1829d383af9ab48blkj3422e1070leff02a58cd115603d631932934c961be4793c
        --BOUNDARY_VALUE--

+ Response 200

### Upload Gallery Image [POST /upload-gallery-image]
+ Request (multipart/form-data; boundary=BOUNDARY_VALUE)

        --BOUNDARY_VALUE
        Content-Disposition: form-data; name="Img[file]"; filename="image.png" (required) - Image file
        Content-Type: image/png (according to the type of the uploaded file)

        {file content}
        --BOUNDARY_VALUE
        Content-Disposition: form-data; name="exhibitorid"  (required) - Exhibitor ID

        22451
        --BOUNDARY_VALUE
        Content-Disposition: form-data; name="token" (required) - API token

        22451
        --BOUNDARY_VALUE
        Content-Disposition: form-data; name="imgUrl" - Image URL

        8323b1829d383af9ab48blkj3422e1070leff02a58cd115603d631932934c961be4793c
        --BOUNDARY_VALUE--

+ Response 200 (application/json; charset=utf-8)
    + Attributes
        + id: 12561 (number) - Uploaded file ID

### Remove Gallery Image [POST /remove-gallery-image]
+ Request (application/json)
    + Attributes (Auth)
        + imgid: 2655 (number, required) - Image file ID
        + exhibitorid: 12561 (number, required) - Exhibitor ID
+ Response 200

## Group Booths

### List All Booths [POST /list-booths]

+ Request (application/json)
    + Attributes (Auth)
        + expoId: 2655 (number, required) - Expo ID

+ Response 200 (application/json; charset=utf-8)
    + Attributes (array[BoothsList])

### Get Booth Details [POST /get-booth]

+ Request (application/json)
    + Attributes (Auth)
        + eventId: 2655 (number, required) - Expo ID
        + name: A21 (string, required) - Booth name

+ Response 200 (application/json; charset=utf-8)
    + Attributes (Booth)
        + name: A21 (string) - Booth name
        + title: A21 Title (string) - Booth title
        + type: STANDARD (string) - Booth type
        + size: 10 x 10 (string) - Booth size
        + price: 100 (number) - Booth price
        + adminNotes: Init (string) - Administrative notes hidden from public view
        + isSpecialSection: true (boolean) - Determines the POI type (`false` = Booth, `true` = Other POI)

### Update Booth [POST /update-booth]

+ Request (application/json)
    + Attributes (Auth)
        + eventId: 2655 (number, required) - Expo ID
        + externalId: A21 (string) - Booth External ID - same as booth name by default, can be changed via integration to link the booth to an entity in an external system
        + name: A21 (string, required) - Booth name
        + Include BoothFields
+ Response 200

## Group Exhibitor Booths

### Add Exhibitor Booth [POST /add-exhibitor-booth]

+ Request (application/json)
    + Attributes (Auth)
        + eventId: 2655 (number, required) - Expo ID
        + boothName: `101` (string, required) - Booth name
        + exhibitorId: `12561` (string, required) - Exhibitor ID or External ID

+ Response 200

### Remove Exhibitor Booth [POST /remove-exhibitor-booth]

+ Request (application/json)
    + Attributes (Auth)
        + eventId: 2655 (number, required) - Expo ID
        + boothName: `101` (string, required) - Booth name
        + exhibitorId: `12561` (string, required) - Exhibitor ID or External ID

+ Response 200

## Group Categories

### List of categories [POST /list-categories]

+ Request (application/json)
    + Attributes (Auth)
        + eventId: 2655 (number, required) - Expo ID

+ Response 200 (application/json; charset=utf-8)
    + Attributes (array[ResourceModel])

### Add category [POST /add-category]

+ Request (application/json)
    + Attributes (Auth)
        + name: `Category Red` (string, required) - Category name
        + eventId: 2655 (number, required) - Expo ID

+ Response 200 (application/json; charset=utf-8)
    + Attributes (ResourceModel)

### Update category [POST /update-category]

+ Request (application/json)
    + Attributes (Auth)
        + id: 1 (number, required) - Category ID
        + name: `Category Blue` (string, required) - Category name

+ Response 200 (application/json; charset=utf-8)
    + Attributes (ResourceModel)

### Remove category [POST /remove-category]
+ Request (application/json)
    + Attributes (Auth)
        + id: 1 (number, required) - Category ID
+ Response 204

## Group Extras

### List All Expo Extras [POST /list-extras]
+ Request (application/json)
    + Attributes (Auth)
        + eventId: 2655 (number, required)  - Expo ID
+ Response 200 (application/json; charset=utf-8)
    + Attributes
        + extras (array[ExhibitorExtra]) - List of exhibitor extras
        + boothExtras (array[ExhibitorBoothExtra]) - List of booth extras

### List All Exhibitor Extras [POST /list-exhibitor-extras]
+ Request (application/json)
    + Attributes (Auth)
        + exhibitorId: 12559 (number, required)  - Exhibitor ID
+ Response 200 (application/json; charset=utf-8)
    + Attributes (array[ExhibitorBoothExtraWithQuantity])

### Add Exhibitor Extra [POST /add-exhibitor-extra]
+ Request (application/json)
    + Attributes (Auth)
        + exhibitorId: 12559 (number, required)  - Exhibitor ID
        + extraId: 4182 (number, required)  - Extra ID
        + quantity: 1 (number, required)  - Extra count to add
+ Response 200

### Remove Exhibitor Extra [POST /remove-exhibitor-extra]
+ Request (application/json)
    + Attributes (Auth)
        + exhibitorId: 12559 (number, required)  - Exhibitor ID
        + extraId: 4182 (number, required)  - Extra ID
+ Response 200

## Group Sessions

### Get Sessions [POST /sessions/get]

+ Request (application/json)
    + Attributes (GetSessionsRequest)

+ Response 200 (application/json)
    + Attributes (array[SessionModel])

### Upsert Sessions [POST /sessions/upsert]

+ Request (application/json)
    + Attributes (AddOrUpdateSessionsRequest)

+ Response 200 (application/json)
    + Attributes (array[BaseBulkItemResponse])

### Delete Sessions [POST /sessions/delete]

+ Request (application/json)
    + Attributes (DeleteSessionsRequest)

+ Response 200 (application/json)
    + Attributes (array[BaseBulkItemResponse])

## Group Session Tracks

### Get Session Tracks [POST /session-tracks/get]

+ Request (application/json)
    + Attributes (GetSessionTracksRequest)

+ Response 200 (application/json)
    + Attributes (array[SessionTrackModel])

### Upsert Session Tracks [POST /session-tracks/upsert]

+ Request (application/json)
    + Attributes (AddOrUpdateSessionTracksRequest)

+ Response 200 (application/json)
    + Attributes (array[BaseBulkItemResponse])

### Delete Session Tracks [POST /session-tracks/delete]

+ Request (application/json)
    + Attributes (DeleteSessionTracksRequest)

+ Response 200 (application/json)
    + Attributes (array[BaseBulkItemResponse])

## Group Session Speakers

### Get Session Speakers [POST /session-speakers/get]

+ Request (application/json)
    + Attributes (GetSessionSpeakersRequest)

+ Response 200 (application/json)
    + Attributes (array[SessionSpeakerModel])

### Upsert Session Speakers [POST /session-speakers/upsert]

+ Request (application/json)
    + Attributes (AddOrUpdateSessionSpeakersRequest)

+ Response 200 (application/json)
    + Attributes (array[BaseBulkItemResponse])

### Delete Session Speakers [POST /session-speakers/delete]

+ Request (application/json)
    + Attributes (DeleteSessionSpeakersRequest)

+ Response 200 (application/json)
    + Attributes (array[BaseBulkItemResponse])

## Group DXF Conversion

### Convert from dxf file [POST /convert/dxf-to-svg]

+ Request (application/json)
    + Attributes (Auth)
        + Include ConvertDxfRequest
+ Response 200
    + Attributes (ConvertDxfResponse)

### Get Status of Convert from dxf file [POST /convert/dxf-to-svg/status]

+ Request (application/json)
    + Attributes (Auth)
        + Include ConvertDxfStatusRequest

+ Response 200
    + Attributes (ConvertDxfStatusResponse)

# Data Structures

## Auth (object)
+ token: 8323b1829d383af9ab48blkj3422e1070leff02a58cd115603d631932934c961be4793c (required) - API token

## Expo (object)
+ id: 2655 (number) - Expo ID
+ key: testapi (string) - Expo unique key
+ name: testapi (string) - Expo name

## ExhibitorInfo (object)
+ id: 21185 (number) - Exhibitor ID
+ name: Paul & Sons Corp (string) - Exhibitor name
+ booths: `A21`, `A45` (array[string]) - Exhibitor booths
+ categories: `Category 1`, `Category 2` - Exhibitor categories
+ tags: `Tag 1`, `Tag 2` - Exhibitor tags
+ extras: `Logo in booth`, `Extra 1` - Exhibitor extras

## Exhibitor (ExhibitorFields)
+ id: 21185 (number) - Exhibitor ID
+ booths: `A21`, `A45` (array[string]) - Exhibitor booths
+ images: 8451, 8452 (array[string]) - Exhibitor gallery image IDs
+ logoFileUrl: https://efp-data.s3.amazonaws.com/expos/sample/data/exhibitors/4739/media/apple.png?v=3260 (string, nullable) - Exhibitor logo URL
+ updatedAt: `2015-05-05T12:30:00` (string) - Last updated date and time (ISO8601 format, UTC)

## ExhibitorFields (object)
+ name: Paul_and_Sons_Corp (string) - Exhibitor name
+ description: Few paragraphs about Paul & Sons with <b>HTML markup</b> (string) - User-provided sanitized HTML description. Allowed tags: "p", "b", "strong", "i", "a", "br". Allowed attributes: "href"
+ featured: false (boolean) - Whether exhibitor is featured (see: https://help.expofp.com/en/articles/11660997-featured-listing)
+ advertised: false (boolean) - Whether exhibitor logo is advertised in header (see: https://help.expofp.com/en/articles/11660994-logo-in-header)
+ country: USA (string, nullable) - Country
+ address: 1 Main Ave. (string, nullable) - Address line 1
+ address2: Floor 22 (string, nullable) - Address line 2
+ city: New York (string, nullable) - City
+ state: NY (string, nullable) - State or province
+ zip: 12222-123 (string, nullable) - ZIP or postal code
+ phone1: 555123123 (string, nullable) - Primary phone number
+ phone2: 555123123 (string, nullable) - Secondary phone number
+ publicEmail: support@example.com (string, nullable) - Public email address
+ privateEmail: support@example.com (string, nullable) - Private email address
+ vatNumber: 0123456789 (string, nullable) - VAT number
+ website: https://www.example.com (string, nullable) - Website URL
+ facebook: https://www.facebook.com/example (string, nullable) - Facebook URL
+ instagram: http://www.instagram.com/example (string, nullable) - Instagram URL
+ linkedin: https://www.linkedin.com/company/example (string, nullable) - LinkedIn URL
+ twitter: https://twitter.com/example (string, nullable) - Twitter URL
+ googlePlus: https://plus.google.com/+example (string, nullable) - Google+ URL
+ xing: http://www.xing.com/company/example (string, nullable) - Xing URL
+ youtube: https://www.youtube.com/channel/example (string, nullable) - YouTube URL
+ videoUrl: https://www.youtube.com/watch?v=123QWE123 (string, nullable) - Video URL
+ contactName: John Smith (string, nullable) - Contact person name
+ contactPhone: 555123123 (string, nullable) - Contact person phone number
+ adminNotes: Hidden administrative notes (string, nullable) - Administrative notes hidden from public view
+ externalId: ExpoFP (string, nullable) - Exhibitor External ID - slug from exhibitor name by default, can be changed on the dashboard or via integration to link the exhibitor to an entity in an external system
+ autoLoginUrl: https://app.expofp.com/exhibitors/details/edit?uid=1230aa7be-c782-4445-be4d-7e02169012ba&token=36ObdAAIQ27QdntqTEY8yA%3D%3D (string, nullable) - Auto-login URL for exhibitor portal
+ categories (array[ResourceModel]) - Array of categories
+ tags: `VIP` (array[string]) - Array of string tags
+ metadata (array[Metadata]) - Array of key-value pairs visible via API only

## SetRebookingStateRequest (object)
+ expoKey: `expo1` (string, required) - Expo unique key
+ exhibitorId: 1 (number, required) - Exhibitor ID
+ rebookingState: 1 (number, required) - Rebooking state (0 - Unasked, 1 - Accepted, 2 - Rejected, 3 - Undecided)

## Booth (BoothFields)
+ name: A21 (string) - Booth name
+ exhibitors: 12561, 12560 (array[number]) - Array of exhibitor IDs

## BoothsList (object)
+ id: 123123 (number) - Booth ID
+ name: A21 (string) - Booth name
+ title: A21 Title (string) - Booth title
+ externalId: A21 (string) - Booth External ID - same as booth name by default, can be changed via integration to link the booth to an entity in an external system
+ isSpecial: true (boolean) - Determines the POI type (`false` = Booth, `true` = Other POI)
+ exhibitors: `Company 1`, `Company 2` (array[string]) - Exhibitor names assigned to the booth

## BoothFields (object)
+ adminNotes: Hidden administrative notes for booth (string, nullable) - Administrative notes hidden from public view
+ isOnHold: false (boolean) - OnHold booth state
+ metadata (array[Metadata]) - Array of key-value pairs visible via API only

## ResourceModel (object)
+ id: 1 (number) - Category ID
+ name: `Category 1` (string) - Category name

## ExhibitorExtra (object)
+ isReserveOrBuyAllowed: true (boolean) - Whether exhibitors can reserve or buy extras themselves
+ id: 112691 (number) - Extra ID
+ name: `Logo in booth` (string) - Extra name
+ description: `Company logo will be displayed inside the booth` (string) - Extra description
+ limitPerEvent: 1 (number) - Maximum quantity per event
+ limitPerExhibitor: 1 (number) - Maximum quantity per exhibitor
+ price: 0 (number) - Price per unit
+ exhibitors (array[ExhibitorInExtra]) - Exhibitors assigned to this extra

## ExhibitorBoothExtra (object)
+ isReserveOrBuyAllowed: true (boolean) - Whether exhibitors can reserve or buy extras themselves
+ id: 254875 (number) - Extra ID
+ name: `Chair` (string) - Extra name
+ description: `A chair with expo logo` (string) - Extra description
+ limitPerEvent: 500 (number) - Maximum quantity per event
+ limitPerExhibitor: 5 (number) - Maximum quantity per exhibitor
+ price: 25 (number) - Price per unit
+ exhibitors (array[ExhibitorInExtraWithBooth]) - Exhibitors assigned to this extra

## ExhibitorBoothExtraWithQuantity (object)
+ isReserveOrBuyAllowed: true (boolean) - Whether exhibitors can reserve or buy extras themselves
+ id: 112691 (number) - Extra ID
+ name: `Logo in booth` (string) - Extra name
+ description: `Company logo will be displayed inside the booth` (string) - Extra description
+ limitPerEvent: 1 (number) - Maximum quantity per event
+ limitPerExhibitor: 1 (number) - Maximum quantity per exhibitor
+ quantity: 1 (number) - Quantity assigned
+ booths (array[ExhibitorExtraBooth]) - Booths assigned to this extra

## ExhibitorInExtra (object)
+ name: Company Name (string) - Exhibitor company name
+ externalId: `company-name` (string) - Exhibitor External ID - slug from exhibitor name by default, can be changed on the dashboard or via integration to link the exhibitor to an entity in an external system

## ExhibitorInExtraWithBooth (object)
+ name: Company Name (string) - Exhibitor company name
+ externalId: `company-name` (string) - Exhibitor External ID - slug from exhibitor name by default, can be changed on the dashboard or via integration to link the exhibitor to an entity in an external system
+ booth (ExhibitorExtraBooth) - Booth assigned to the extra

## ExhibitorExtraBooth (object)
+ name: 101A (string) - Booth name
+ externalId: 101A (string) - Booth External ID - same as booth name by default, can be changed via integration to link the booth to an entity in an external system

## GetSessionsRequest (object)
+ Include Auth
+ expoId: 1234 (number, required) - Expo ID

## AddOrUpdateSessionsRequest (object)
+ Include Auth
+ expoId: 1234 (number, required) - Expo ID
+ sessions (array[AddOrUpdateSessionModel], required) - List of sessions to create or update

## DeleteSessionsRequest (object)
+ Include Auth
+ expoId: 1234 (number, required) - Expo ID
+ ids: 101, 102, 103 (array[number]) - Session IDs to delete

## SessionModel (object)
+ id: 101 (number) - Session ID
+ expoId: 1234 (number) - Expo ID
+ externalId: `session-101` (string, nullable) - Session External ID - same as session ID by default, can be changed via integration to link the session to an entity in an external system
+ name: `Keynote Address` (string) - Title
+ description: `Opening remarks and product roadmap.` (string, nullable) - Description
+ startDate: `2025-05-15T13:45:30Z` (string, nullable) - Start date and time (ISO8601 format, UTC)
+ endDate: `2025-05-15T14:45:30Z` (string, nullable) - End date and time (ISO8601 format, UTC)
+ logoFileUrl: `https://cdn.example.com/logo.png` (string, nullable) - Logo image URL
+ boothId: 28 (number, nullable) - Assigned booth ID
+ boothName: `Main Hall A21` (string, nullable) - Assigned booth name (alternative to boothId)
+ boothExhibitorIds: 100, 101 (array[number], nullable) - Exhibitors linked to the booth assigned to this session
+ sessionSpeakerIds: 5, 6 (array[number], nullable) - Session speaker IDs assigned to this session
+ sessionTrackIds: 1, 2 (array[number], nullable) - Session track IDs assigned to this session

## AddOrUpdateSessionModel (object)
+ externalId: `session-101` (string, nullable) - Session External ID - same as session ID by default, can be changed via integration to link the session to an entity in an external system
+ name: `Keynote Address` (string) - Title
+ description: `Opening remarks and product roadmap.` (string, nullable) - Description
+ startDate: `2025-05-15T13:45:30Z` (string, nullable) - Start date and time (ISO8601 format, UTC)
+ endDate: `2025-05-15T14:45:30Z` (string, nullable) - End date and time (ISO8601 format, UTC)
+ logoFileUrl: `https://cdn.example.com/logo.png` (string, nullable) - Logo image URL
+ boothId: 28 (number, nullable) - Assigned booth ID
+ boothName: `Main Hall A21` (string, nullable) - Assigned booth name (alternative to boothId)
+ sessionSpeakerIds: 5, 6 (array[number], nullable) - Session speaker IDs assigned to this session
+ sessionTrackIds: 1, 2 (array[number], nullable) - Session track IDs assigned to this session
+ rowId: 10 (number, nullable) - Row session ID

## GetSessionTracksRequest (object)
+ Include Auth
+ expoId: 1234 (number, required) - Expo ID

## AddOrUpdateSessionTracksRequest (object)
+ Include Auth
+ expoId: 1234 (number, required) - Expo ID
+ sessionTracks (array[AddOrUpdateSessionTrackModel], required) - List of session tracks to create or update

## DeleteSessionTracksRequest (object)
+ Include Auth
+ expoId: 1234 (number, required) - Expo ID
+ ids: 55, 56 (array[number]) - Session track IDs to delete

## SessionTrackModel (object)
+ id: 55 (number) - Session track ID
+ externalId: `track-55` (string, nullable) - Session track External ID - same as session track ID by default, can be changed via integration to link the session track to an entity in an external system
+ name: `Marketing` (string) - Name
+ color: `#FF8800` (string, nullable) - Hex color code

## AddOrUpdateSessionTrackModel (object)
+ externalId: `track-55` (string, nullable) - Session track External ID - same as session track ID by default, can be changed via integration to link the session track to an entity in an external system
+ name: `Marketing` (string, required) - Name
+ color: `#FF8800` (string, nullable) - Hex color code

## GetSessionSpeakersRequest (object)
+ Include Auth
+ expoId: 1234 (number, required) - Expo ID

## AddOrUpdateSessionSpeakersRequest (object)
+ Include Auth
+ expoId: 1234 (number, required) - Expo ID
+ sessionSpeakers (array[AddOrUpdateSessionSpeakerModel], required) - List of session speakers to create or update

## DeleteSessionSpeakersRequest (object)
+ Include Auth
+ expoId: 1234 (number, required) - Expo ID
+ ids: 8, 9 (array[number]) - Session speaker IDs to delete

## SessionSpeakerModel (object)
+ id: 8 (number) - Session speaker ID
+ externalId: `speaker-8` (string, nullable) - Session speaker External ID - same as session speaker ID by default, can be changed via integration to link the session speaker to an entity in an external system
+ name: `Jane Doe` (string) - Full name
+ company: `ExpoFP Inc.` (string, nullable) - Company/organization
+ jobTitle: `Chief Technology Officer` (string, nullable) - Job title
+ position: `Keynote Speaker` (string, nullable) - Position/role
+ description: `Seasoned technology leader with 15 years experience.` (string, nullable) - Description
+ photoFileUrl: `https://cdn.example.com/logo.png` (string, nullable) - Speaker photo image URL
+ instagram: `https://instagram.com/janedoe` (string, nullable) - Instagram URL
+ youTube: `https://youtube.com/@janedoe` (string, nullable) - YouTube URL
+ facebook: `https://facebook.com/janedoe` (string, nullable) - Facebook URL
+ twitter: `https://twitter.com/janedoe` (string, nullable) - Twitter/X URL
+ linkedIn: `https://linkedin.com/in/janedoe` (string, nullable) - LinkedIn URL
+ tikTok: `https://tiktok.com/@janedoe` (string, nullable) - TikTok URL
+ pinterest: `https://pinterest.com/janedoe` (string, nullable) - Pinterest URL
+ snapchat: `https://snapchat.com/add/janedoe` (string, nullable) - Snapchat URL

## AddOrUpdateSessionSpeakerModel (object)
+ externalId: `speaker-8` (string, nullable) - Session speaker External ID - same as session speaker ID by default, can be changed via integration to link the session speaker to an entity in an external system
+ name: `Jane Doe` (string, required) - Full name
+ company: `ExpoFP Inc.` (string, nullable) - Company/organization
+ jobTitle: `Chief Technology Officer` (string, nullable) - Job title
+ position: `Keynote Speaker` (string, nullable) - Position/role
+ description: `Seasoned technology leader.` (string, nullable) - Description
+ photoFileUrl: `https://cdn.example.com/speakers/jane.png` (string, nullable) - Speaker photo image URL
+ instagram: `https://instagram.com/janedoe` (string, nullable) - Instagram URL
+ youTube: `https://youtube.com/@janedoe` (string, nullable) - YouTube URL
+ facebook: `https://facebook.com/janedoe` (string, nullable) - Facebook URL
+ twitter: `https://twitter.com/janedoe` (string, nullable) - Twitter/X URL
+ linkedIn: `https://linkedin.com/in/janedoe` (string, nullable) - LinkedIn URL
+ tikTok: `https://tiktok.com/@janedoe` (string, nullable) - TikTok URL
+ pinterest: `https://pinterest.com/janedoe` (string, nullable) - Pinterest URL
+ snapchat: `https://snapchat.com/add/janedoe` (string, nullable) - Snapchat URL

## BaseBulkItemResponse (object)
+ rowId: 10 (number, nullable) - Row entity ID
+ strId: `line-1` (string, nullable) - String entity ID
+ efpId: 101 (number) - ExpoFP entity ID
+ externalId: `session-101` (string, nullable) - Entity External ID for use in external systems
+ success: true (boolean) - Whether operation succeeded
+ message: `Error message` (string, nullable) - Info or error message

## ConvertDxfRequest (object)
+ filePath: `https://efp-data.s3.us-east-1.amazonaws.com/expos/testconvertsvg/data/dxf/fp.dxf` (string, required) - .dxf file path
+ expoKey: `testconvertsvg` (string, required) - Expo unique key
+ scale: 1 (number) - Scale of floor plan to convert
+ boothLayers: `booths`, `booths_layer` (array[string]) - Names of layers for booths
+ backgroundLayers: `bg`, `background_layer` (array[string]) - Names of layers for background objects
+ foregroundLayers: `fg`, `foreground_layer` (array[string]) - Names of layers for foreground objects
+ targetBoothsLayer: `Booths_2` (string) - Target layer name for booths

## ConvertDxfResponse (object)
+ jobId: 123654 (string) - ID of background job performing conversion

## ConvertDxfStatusRequest (object)
+ jobId: 123654 (string) - ID of background job performing conversion

## ConvertDxfStatusResponse (object)
+ jobId: 123654 (string) - Job ID
+ isCompleted: true (boolean) - Completion status
+ startedAt: `2022-06-15T13:45:30` (string) - Start date and time (ISO8601 format, UTC)

## Metadata (object)
+ key: metaKey (string) - Key up to 50 characters
+ value: metaValue (string) - Value up to 256 characters