Online Now  

/v1/floorplan/

Community-built floorplan layer. A floorplan is a venue/event interior map (`ATFloorplans` -> `ATFloorplanFloors` -> `ATFloorplanLayouts` -> `ATFloorplanAreas`). Community members draw the walls and furniture in-browser; the resulting areas can be tagged on `ATLocation.ATFloorplanArea_ID` or `ATLocationEvents.ATFloorplanArea_ID`, and trades that settle against tagged venues pay the floorplan creator a royalty (handled in `events/ontransactionstatechange/commission.php`). Architecture vs. furniture: each floor stores an `ArchitectureSVG` text blob for the bits that don't change (walls, columns, restrooms) and one or more `ATFloorplanLayouts` rows for the bits that DO (tables, sections, patio seating). Exactly one layout per floor is `Status='Active'` at any given moment; older Active layouts flip to `Historical` when a new one goes live, so attribution still resolves for past appointments. Composer integration is intentionally deferred to a follow-up; v1 ships with a direct creation entry point (`set_new`) callable from the gallery page or any other surface. Every new floorplan links directly to an `ATLocation_ID`, an `ATLocationEvent_ID`, or both. Auth: `set_*` writes require `Permission::CanCreateFloorplan`, ownership, or `Permission::CanReviewFloorplanSubmissions` depending on the action. Reads of an Active floorplan are public so consuming surfaces can render it without auth.
GET

/v1/floorplan/get_by_id

#
Returns one floorplan by ID with all floors, layouts, and areas hydrated. Used by the editor JS to refresh state after a write. Public-by-design: the floorplan tree itself isn't sensitive (the editor surface gates its own write actions via permissions).

Parameters

NameTypeRequiredDefaultDescription
ATFloorplan_ID int Yes — Floorplan to fetch.
Request example (cURL)
curl --get \
  'https://ca.appointmenttrader.com/v1/floorplan/get_by_id' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATFloorplan_ID={{ATFloorplan_ID}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$floorplan_get_by_id_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.floorplan Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0]object Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].CreatedDatestring Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].LastUpdateDate Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].LastUpdateDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].LastUpdateDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].DeletedDate = null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].ATLocation_ID Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].ATLocation_ID.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].ATLocation_ID.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].ATLocation_ID.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].ATLocation_ID.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].ATLocationEvent_ID Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].ATLocationEvent_ID.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].ATLocationEvent_ID.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].ATLocationEvent_ID.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].ATLocationEvent_ID.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].Creator-ATUser_IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].Creator-ATUser_ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].Creator-ATUser_ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].ATDiscussionPosts_ID Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].ATDiscussionPosts_ID.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].ATDiscussionPosts_ID.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].ATDiscussionPosts_ID.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].ATDiscussionPosts_ID.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].Namestring Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].URLSlug Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].URLSlug.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].URLSlug.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].Statusstring ["Draft","Submitted","Active","Superseded","Rejected"] Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].PublishedDate Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].PublishedDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].PublishedDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].ReviewedBy-ATUser_ID Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].ReviewedBy-ATUser_ID.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].ReviewedBy-ATUser_ID.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].ReviewedBy-ATUser_ID.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].ReviewedBy-ATUser_ID.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].Cache-EarnedTraderPointsDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].Cache-EarnedTraderPoints.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].Cache-EarnedTraderPoints.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].LocationName Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].LocationName.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].LocationName.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].LocationAlias Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].LocationAlias.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].LocationAlias.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].EventName Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].EventName.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].EventName.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].EventURLSlug Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].EventURLSlug.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].EventURLSlug.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].location Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].location.anyOf[0]object Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].location.anyOf[0].ATLocation_IDinteger Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].location.anyOf[0].Namestring Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].location.anyOf[0].Aliasstring Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].location.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].event Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].event.anyOf[0]object Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].event.anyOf[0].ATLocationEvent_IDinteger Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].event.anyOf[0].Namestring Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].event.anyOf[0].URLSlugstring Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].event.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floorsarray Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[]object No
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].CreatedDatestring Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].LastUpdateDate Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].LastUpdateDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].LastUpdateDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].DeletedDate = null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].ATFloorplan_IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].ATFloorplan_ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].ATFloorplan_ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].Namestring Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].FloorOrderDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].FloorOrder.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].FloorOrder.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].ViewBoxWidthDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].ViewBoxWidth.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].ViewBoxWidth.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].ViewBoxHeightDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].ViewBoxHeight.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].ViewBoxHeight.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].ArchitectureSVG Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].ArchitectureSVG.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].ArchitectureSVG.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].BackgroundImageURL Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].BackgroundImageURL.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].BackgroundImageURL.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layoutsarray Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[]object No
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].CreatedDatestring Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].LastUpdateDate Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].LastUpdateDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].LastUpdateDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].DeletedDate = null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].ATFloorplanFloor_IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].ATFloorplanFloor_ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].ATFloorplanFloor_ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].Namestring Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].Statusstring ["Draft","Active","Historical"] Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].EffectiveStartDate Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].EffectiveStartDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].EffectiveStartDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].EffectiveEndDate Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].EffectiveEndDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].EffectiveEndDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].Creator-ATUser_ID Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].Creator-ATUser_ID.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].Creator-ATUser_ID.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].Creator-ATUser_ID.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].Creator-ATUser_ID.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areasarray Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[]object No
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].CreatedDatestring Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].LastUpdateDate Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].LastUpdateDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].LastUpdateDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].DeletedDate = null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].ATFloorplanLayout_IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].ATFloorplanLayout_ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].ATFloorplanLayout_ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].Labelstring Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].Category Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].Category.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].Category.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].SVGShapestring ["rect","polygon","circle","path"] Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].SVGGeometrystring Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].DesirabilityScore Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].DesirabilityScore.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].DesirabilityScore.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].DesirabilityScore.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].DesirabilityScore.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].Capacity Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].Capacity.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].Capacity.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].Capacity.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].Capacity.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].SortOrderDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].SortOrder.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[0].floors[].layouts[].areas[].SortOrder.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplan.anyOf[1]null Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/floorplan/get_by_id",
    "RequestUserAlias": "example-user",
    "Payload": {
        "floorplan": {
            "ID": 0,
            "CreatedDate": "synthetic-example",
            "LastUpdateDate": "synthetic-example",
            "DeletedDate": null,
            "ATLocation_ID": 0,
            "ATLocationEvent_ID": 0,
            "Creator-ATUser_ID": 0,
            "ATDiscussionPosts_ID": 0,
            "Name": "synthetic-example",
            "URLSlug": "synthetic-example",
            "Status": "Draft",
            "PublishedDate": "synthetic-example",
            "ReviewedBy-ATUser_ID": 0,
            "Cache-EarnedTraderPoints": 0,
            "LocationName": "synthetic-example",
            "LocationAlias": "synthetic-example",
            "EventName": "synthetic-example",
            "EventURLSlug": "synthetic-example",
            "location": {
                "ATLocation_ID": 0,
                "Name": "synthetic-example",
                "Alias": "synthetic-example"
            },
            "event": {
                "ATLocationEvent_ID": 0,
                "Name": "synthetic-example",
                "URLSlug": "synthetic-example"
            },
            "floors": []
        }
    }
}
Machine-readable endpoint documentation
GET

/v1/floorplan/get_floor

#
Single-floor detail (architecture SVG + the floor's Active layout with all areas). Used by the editor when switching between floors. Public-by-design: same rationale as `get_for_location`.

Parameters

NameTypeRequiredDefaultDescription
ATFloorplanFloor_ID int Yes — Floor row ID.
Request example (cURL)
curl --get \
  'https://ca.appointmenttrader.com/v1/floorplan/get_floor' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATFloorplanFloor_ID={{ATFloorplanFloor_ID}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$floorplan_get_floor_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.floor Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0]object Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].CreatedDatestring Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].LastUpdateDate Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].LastUpdateDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].LastUpdateDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].DeletedDate = null Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].ATFloorplan_IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].ATFloorplan_ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].ATFloorplan_ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].Namestring Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].FloorOrderDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].FloorOrder.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].FloorOrder.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].ViewBoxWidthDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].ViewBoxWidth.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].ViewBoxWidth.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].ViewBoxHeightDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].ViewBoxHeight.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].ViewBoxHeight.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].ArchitectureSVG Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].ArchitectureSVG.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].ArchitectureSVG.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].BackgroundImageURL Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].BackgroundImageURL.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].BackgroundImageURL.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layoutsarray Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[]object No
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].CreatedDatestring Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].LastUpdateDate Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].LastUpdateDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].LastUpdateDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].DeletedDate = null Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].ATFloorplanFloor_IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].ATFloorplanFloor_ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].ATFloorplanFloor_ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].Namestring Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].Statusstring ["Draft","Active","Historical"] Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].EffectiveStartDate Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].EffectiveStartDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].EffectiveStartDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].EffectiveEndDate Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].EffectiveEndDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].EffectiveEndDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].Creator-ATUser_ID Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].Creator-ATUser_ID.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].Creator-ATUser_ID.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].Creator-ATUser_ID.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].Creator-ATUser_ID.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areasarray Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[]object No
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].CreatedDatestring Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].LastUpdateDate Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].LastUpdateDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].LastUpdateDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].DeletedDate = null Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].ATFloorplanLayout_IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].ATFloorplanLayout_ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].ATFloorplanLayout_ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].Labelstring Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].Category Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].Category.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].Category.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].SVGShapestring ["rect","polygon","circle","path"] Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].SVGGeometrystring Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].DesirabilityScore Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].DesirabilityScore.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].DesirabilityScore.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].DesirabilityScore.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].DesirabilityScore.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].Capacity Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].Capacity.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].Capacity.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].Capacity.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].Capacity.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].SortOrderDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].SortOrder.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[0].layouts[].areas[].SortOrder.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floor.anyOf[1]null Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/floorplan/get_floor",
    "RequestUserAlias": "example-user",
    "Payload": {
        "floor": {
            "ID": 0,
            "CreatedDate": "synthetic-example",
            "LastUpdateDate": "synthetic-example",
            "DeletedDate": null,
            "ATFloorplan_ID": 0,
            "Name": "synthetic-example",
            "FloorOrder": 0,
            "ViewBoxWidth": 0,
            "ViewBoxHeight": 0,
            "ArchitectureSVG": "synthetic-example",
            "BackgroundImageURL": "synthetic-example",
            "layouts": []
        }
    }
}
Machine-readable endpoint documentation
GET

/v1/floorplan/get_for_event

#
Returns Active floorplans linked to an `ATLocationEvents` row via `ATFloorplans.ATLocationEvent_ID`. Public-by-design: floorplans are reused across modules and apps; no sensitive content lives on this surface.

Parameters

NameTypeRequiredDefaultDescription
ATLocationEvent_ID int Yes — Event to fetch floorplans for.
Request example (cURL)
curl --get \
  'https://ca.appointmenttrader.com/v1/floorplan/get_for_event' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATLocationEvent_ID={{ATLocationEvent_ID}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$floorplan_get_for_event_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.floorplansarray Yes
$.oneOf[0].allOf[1].Payload.floorplans[]object No
$.oneOf[0].allOf[1].Payload.floorplans[].IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].CreatedDatestring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].LastUpdateDate Yes
$.oneOf[0].allOf[1].Payload.floorplans[].LastUpdateDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].LastUpdateDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].DeletedDate = null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATLocation_ID Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATLocation_ID.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].ATLocation_ID.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATLocation_ID.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATLocation_ID.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATLocationEvent_ID Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATLocationEvent_ID.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].ATLocationEvent_ID.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATLocationEvent_ID.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATLocationEvent_ID.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].Creator-ATUser_IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].Creator-ATUser_ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].Creator-ATUser_ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATDiscussionPosts_ID Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATDiscussionPosts_ID.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].ATDiscussionPosts_ID.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATDiscussionPosts_ID.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATDiscussionPosts_ID.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].Namestring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].URLSlug Yes
$.oneOf[0].allOf[1].Payload.floorplans[].URLSlug.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].URLSlug.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].Statusstring ["Draft","Submitted","Active","Superseded","Rejected"] Yes
$.oneOf[0].allOf[1].Payload.floorplans[].PublishedDate Yes
$.oneOf[0].allOf[1].Payload.floorplans[].PublishedDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].PublishedDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ReviewedBy-ATUser_ID Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ReviewedBy-ATUser_ID.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].ReviewedBy-ATUser_ID.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ReviewedBy-ATUser_ID.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ReviewedBy-ATUser_ID.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].Cache-EarnedTraderPointsDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].Cache-EarnedTraderPoints.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].Cache-EarnedTraderPoints.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].LocationName Yes
$.oneOf[0].allOf[1].Payload.floorplans[].LocationName.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].LocationName.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].LocationAlias Yes
$.oneOf[0].allOf[1].Payload.floorplans[].LocationAlias.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].LocationAlias.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].EventName Yes
$.oneOf[0].allOf[1].Payload.floorplans[].EventName.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].EventName.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].EventURLSlug Yes
$.oneOf[0].allOf[1].Payload.floorplans[].EventURLSlug.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].EventURLSlug.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].location Yes
$.oneOf[0].allOf[1].Payload.floorplans[].location.anyOf[0]object Yes
$.oneOf[0].allOf[1].Payload.floorplans[].location.anyOf[0].ATLocation_IDinteger Yes
$.oneOf[0].allOf[1].Payload.floorplans[].location.anyOf[0].Namestring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].location.anyOf[0].Aliasstring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].location.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].event Yes
$.oneOf[0].allOf[1].Payload.floorplans[].event.anyOf[0]object Yes
$.oneOf[0].allOf[1].Payload.floorplans[].event.anyOf[0].ATLocationEvent_IDinteger Yes
$.oneOf[0].allOf[1].Payload.floorplans[].event.anyOf[0].Namestring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].event.anyOf[0].URLSlugstring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].event.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floorsarray Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[]object No
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].CreatedDatestring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].LastUpdateDate Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].LastUpdateDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].LastUpdateDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].DeletedDate = null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ATFloorplan_IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ATFloorplan_ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ATFloorplan_ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].Namestring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].FloorOrderDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].FloorOrder.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].FloorOrder.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ViewBoxWidthDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ViewBoxWidth.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ViewBoxWidth.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ViewBoxHeightDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ViewBoxHeight.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ViewBoxHeight.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ArchitectureSVG Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ArchitectureSVG.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ArchitectureSVG.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].BackgroundImageURL Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].BackgroundImageURL.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].BackgroundImageURL.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layoutsarray Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[]object No
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].CreatedDatestring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].LastUpdateDate Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].LastUpdateDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].LastUpdateDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].DeletedDate = null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].ATFloorplanFloor_IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].ATFloorplanFloor_ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].ATFloorplanFloor_ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].Namestring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].Statusstring ["Draft","Active","Historical"] Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].EffectiveStartDate Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].EffectiveStartDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].EffectiveStartDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].EffectiveEndDate Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].EffectiveEndDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].EffectiveEndDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].Creator-ATUser_ID Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].Creator-ATUser_ID.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].Creator-ATUser_ID.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].Creator-ATUser_ID.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].Creator-ATUser_ID.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areasarray Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[]object No
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].CreatedDatestring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].LastUpdateDate Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].LastUpdateDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].LastUpdateDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].DeletedDate = null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].ATFloorplanLayout_IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].ATFloorplanLayout_ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].ATFloorplanLayout_ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].Labelstring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].Category Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].Category.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].Category.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].SVGShapestring ["rect","polygon","circle","path"] Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].SVGGeometrystring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].DesirabilityScore Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].DesirabilityScore.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].DesirabilityScore.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].DesirabilityScore.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].DesirabilityScore.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].Capacity Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].Capacity.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].Capacity.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].Capacity.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].Capacity.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].SortOrderDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].SortOrder.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].SortOrder.oneOf[1]string Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/floorplan/get_for_event",
    "RequestUserAlias": "example-user",
    "Payload": {
        "floorplans": []
    }
}
Machine-readable endpoint documentation
GET

/v1/floorplan/get_for_location

#
Returns the Active floorplans linked to an `ATLocation` via the direct `ATFloorplans.ATLocation_ID` column, with all floors, the currently- Active layout per floor, and every area on that layout. Returns an empty list (still wrapped in Success) when no Active floorplan covers the venue. Multiple floorplans may cover the same venue (different creators, different perspectives). Consuming surfaces typically render the first Active result; finer attribution comes via the area-level tag `ATLocation.ATFloorplanArea_ID`. Public-by-design: floorplans are reused across modules and apps; no sensitive content lives on this surface.

Parameters

NameTypeRequiredDefaultDescription
ATLocation_ID int Yes — Location to fetch floorplans for.
Request example (cURL)
curl --get \
  'https://ca.appointmenttrader.com/v1/floorplan/get_for_location' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATLocation_ID={{ATLocation_ID}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$floorplan_get_for_location_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.floorplansarray Yes
$.oneOf[0].allOf[1].Payload.floorplans[]object No
$.oneOf[0].allOf[1].Payload.floorplans[].IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].CreatedDatestring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].LastUpdateDate Yes
$.oneOf[0].allOf[1].Payload.floorplans[].LastUpdateDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].LastUpdateDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].DeletedDate = null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATLocation_ID Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATLocation_ID.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].ATLocation_ID.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATLocation_ID.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATLocation_ID.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATLocationEvent_ID Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATLocationEvent_ID.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].ATLocationEvent_ID.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATLocationEvent_ID.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATLocationEvent_ID.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].Creator-ATUser_IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].Creator-ATUser_ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].Creator-ATUser_ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATDiscussionPosts_ID Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATDiscussionPosts_ID.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].ATDiscussionPosts_ID.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATDiscussionPosts_ID.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ATDiscussionPosts_ID.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].Namestring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].URLSlug Yes
$.oneOf[0].allOf[1].Payload.floorplans[].URLSlug.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].URLSlug.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].Statusstring ["Draft","Submitted","Active","Superseded","Rejected"] Yes
$.oneOf[0].allOf[1].Payload.floorplans[].PublishedDate Yes
$.oneOf[0].allOf[1].Payload.floorplans[].PublishedDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].PublishedDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ReviewedBy-ATUser_ID Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ReviewedBy-ATUser_ID.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].ReviewedBy-ATUser_ID.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ReviewedBy-ATUser_ID.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].ReviewedBy-ATUser_ID.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].Cache-EarnedTraderPointsDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].Cache-EarnedTraderPoints.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].Cache-EarnedTraderPoints.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].LocationName Yes
$.oneOf[0].allOf[1].Payload.floorplans[].LocationName.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].LocationName.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].LocationAlias Yes
$.oneOf[0].allOf[1].Payload.floorplans[].LocationAlias.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].LocationAlias.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].EventName Yes
$.oneOf[0].allOf[1].Payload.floorplans[].EventName.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].EventName.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].EventURLSlug Yes
$.oneOf[0].allOf[1].Payload.floorplans[].EventURLSlug.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].EventURLSlug.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].location Yes
$.oneOf[0].allOf[1].Payload.floorplans[].location.anyOf[0]object Yes
$.oneOf[0].allOf[1].Payload.floorplans[].location.anyOf[0].ATLocation_IDinteger Yes
$.oneOf[0].allOf[1].Payload.floorplans[].location.anyOf[0].Namestring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].location.anyOf[0].Aliasstring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].location.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].event Yes
$.oneOf[0].allOf[1].Payload.floorplans[].event.anyOf[0]object Yes
$.oneOf[0].allOf[1].Payload.floorplans[].event.anyOf[0].ATLocationEvent_IDinteger Yes
$.oneOf[0].allOf[1].Payload.floorplans[].event.anyOf[0].Namestring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].event.anyOf[0].URLSlugstring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].event.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floorsarray Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[]object No
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].CreatedDatestring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].LastUpdateDate Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].LastUpdateDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].LastUpdateDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].DeletedDate = null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ATFloorplan_IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ATFloorplan_ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ATFloorplan_ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].Namestring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].FloorOrderDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].FloorOrder.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].FloorOrder.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ViewBoxWidthDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ViewBoxWidth.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ViewBoxWidth.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ViewBoxHeightDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ViewBoxHeight.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ViewBoxHeight.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ArchitectureSVG Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ArchitectureSVG.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].ArchitectureSVG.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].BackgroundImageURL Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].BackgroundImageURL.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].BackgroundImageURL.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layoutsarray Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[]object No
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].CreatedDatestring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].LastUpdateDate Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].LastUpdateDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].LastUpdateDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].DeletedDate = null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].ATFloorplanFloor_IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].ATFloorplanFloor_ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].ATFloorplanFloor_ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].Namestring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].Statusstring ["Draft","Active","Historical"] Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].EffectiveStartDate Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].EffectiveStartDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].EffectiveStartDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].EffectiveEndDate Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].EffectiveEndDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].EffectiveEndDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].Creator-ATUser_ID Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].Creator-ATUser_ID.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].Creator-ATUser_ID.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].Creator-ATUser_ID.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].Creator-ATUser_ID.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areasarray Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[]object No
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].CreatedDatestring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].LastUpdateDate Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].LastUpdateDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].LastUpdateDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].DeletedDate = null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].ATFloorplanLayout_IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].ATFloorplanLayout_ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].ATFloorplanLayout_ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].Labelstring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].Category Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].Category.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].Category.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].SVGShapestring ["rect","polygon","circle","path"] Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].SVGGeometrystring Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].DesirabilityScore Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].DesirabilityScore.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].DesirabilityScore.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].DesirabilityScore.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].DesirabilityScore.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].Capacity Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].Capacity.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].Capacity.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].Capacity.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].Capacity.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].SortOrderDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].SortOrder.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.floorplans[].floors[].layouts[].areas[].SortOrder.oneOf[1]string Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/floorplan/get_for_location",
    "RequestUserAlias": "example-user",
    "Payload": {
        "floorplans": []
    }
}
Machine-readable endpoint documentation
GET

/v1/floorplan/get_license_for_app

#
License lookup for a (floorplan, app) pair. Resolution order: 1. Per-app override row in `ATFloorplanLicenses` (Status='Active'). 2. Wildcard row (`ATApps_ID IS NULL`, Status='Active'). 3. Fall through to the `Permission::FloorplanAreaTradeRoyaltyPct` default for the floorplan originator. Public-by-design: app renderers can inspect published floorplan terms.

Parameters

NameTypeRequiredDefaultDescription
ATFloorplan_ID int Yes — Floorplan to look up.
ATApps_ID int No 0 App requesting the data; pass 0 for first-party.
Request example (cURL)
curl --get \
  'https://ca.appointmenttrader.com/v1/floorplan/get_license_for_app' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATFloorplan_ID={{ATFloorplan_ID}}' \
  --data-urlencode 'ATApps_ID={{ATApps_ID}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$floorplan_get_license_for_app_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.royaltyPctnumber Yes
$.oneOf[0].allOf[1].Payload.flatFeeCentsinteger Yes
$.oneOf[0].allOf[1].Payload.sourcestring ["app","wildcard","default"] Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/floorplan/get_license_for_app",
    "RequestUserAlias": "example-user",
    "Payload": {
        "royaltyPct": 0,
        "flatFeeCents": 0,
        "source": "app"
    }
}
Machine-readable endpoint documentation
GET

/v1/floorplan/get_pending_review_list

#
Moderation queue: floorplans waiting for review. Gated by `Permission::CanReviewFloorplanSubmissions`.

Parameters

NameTypeRequiredDefaultDescription
resultLimit int No 50 Max rows to return.
resultOffset int No 0 Pagination offset.
Request example (cURL)
curl --get \
  'https://ca.appointmenttrader.com/v1/floorplan/get_pending_review_list' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'resultLimit={{resultLimit}}' \
  --data-urlencode 'resultOffset={{resultOffset}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$floorplan_get_pending_review_list_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.itemsarray Yes
$.oneOf[0].allOf[1].Payload.items[]object No
$.oneOf[0].allOf[1].Payload.items[].IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.items[].ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.items[].ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.items[].Namestring Yes
$.oneOf[0].allOf[1].Payload.items[].Creator-ATUser_IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.items[].Creator-ATUser_ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.items[].Creator-ATUser_ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.items[].ATLocation_ID Yes
$.oneOf[0].allOf[1].Payload.items[].ATLocation_ID.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.items[].ATLocation_ID.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.items[].ATLocation_ID.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.items[].ATLocation_ID.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.items[].ATLocationEvent_ID Yes
$.oneOf[0].allOf[1].Payload.items[].ATLocationEvent_ID.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.items[].ATLocationEvent_ID.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.items[].ATLocationEvent_ID.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.items[].ATLocationEvent_ID.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.items[].CreatedDatestring Yes
$.oneOf[0].allOf[1].Payload.items[].LastUpdateDate Yes
$.oneOf[0].allOf[1].Payload.items[].LastUpdateDate.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.items[].LastUpdateDate.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.items[].CreatorAlias Yes
$.oneOf[0].allOf[1].Payload.items[].CreatorAlias.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.items[].CreatorAlias.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.items[].LocationName Yes
$.oneOf[0].allOf[1].Payload.items[].LocationName.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.items[].LocationName.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.items[].EventName Yes
$.oneOf[0].allOf[1].Payload.items[].EventName.anyOf[0]string Yes
$.oneOf[0].allOf[1].Payload.items[].EventName.anyOf[1]null Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/floorplan/get_pending_review_list",
    "RequestUserAlias": "example-user",
    "Payload": {
        "items": []
    }
}
Machine-readable endpoint documentation
POST

/v1/floorplan/set_approved

#
Approve a Submitted floorplan, promoting it to Active. Floorplans are not exclusive per venue/event -- multiple Active floorplans may share the same direct link -- so no supersede pass runs at this layer; the moderator can manually mark an older floorplan as Superseded if a true replacement is intended. Gated by `Permission::CanReviewFloorplanSubmissions`.

Parameters

NameTypeRequiredDefaultDescription
ATFloorplan_ID int Yes — Floorplan to approve.
isWritingRequest bool No false Set true to actually transition.
Request example (cURL)
curl --request POST \
  'https://ca.appointmenttrader.com/v1/floorplan/set_approved' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATFloorplan_ID={{ATFloorplan_ID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$floorplan_set_approved_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.Status = "Active" Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/floorplan/set_approved",
    "RequestUserAlias": "example-user",
    "Payload": {
        "Status": "Active"
    }
}
Machine-readable endpoint documentation
POST

/v1/floorplan/set_areas

#
Replace every area on a layout with the supplied list. The whole-list replace is intentional: the editor sends its current state, the server is the single source of truth on disk. Existing areas are soft-deleted (`DeletedDate=NOW()`) and the supplied rows are inserted fresh; this preserves historical attribution because the old area IDs aren't reused, but tagged ATLocation/ATLocationEvent rows pointing at deleted areas will need re-tagging by the operator.

Parameters

NameTypeRequiredDefaultDescription
ATFloorplanLayout_ID int Yes — Layout to replace areas on.
areas array Yes — Array of {label, category, svgShape, svgGeometry, capacity?, desirabilityScore?, sortOrder?} objects. The dispatcher accepts a JSON-encoded array on the wire (e.g. via the `areas` POST field) and auto-decodes it.
isWritingRequest bool No false Set true to actually persist.
Request example (cURL)
curl --request POST \
  'https://ca.appointmenttrader.com/v1/floorplan/set_areas' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATFloorplanLayout_ID={{ATFloorplanLayout_ID}}' \
  --data-urlencode 'areas={{areas}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Returns

JSON
See the shared response schema and synthetic example.
Parameters: areas
FieldTypeRequiredDescription
areasstring (application/json) YesPass a JSON-encoded string, not nested form fields.
areasarray (decoded JSON) Yes
areas[]object No
areas[].labelstring Yes
areas[].svgShapestring ["rect","polygon","circle","path"] No
areas[].svgGeometrystring Yes
areas[].categorystring No
areas[].desirabilityScore No
areas[].desirabilityScore.anyOf[0]integer No
areas[].desirabilityScore.anyOf[1]null No
areas[].capacity No
areas[].capacity.anyOf[0]integer No
areas[].capacity.anyOf[1]null No
areas[].sortOrderinteger No
Response fields
FieldTypeRequiredDescription
$floorplan_set_areas_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.areaIDsarray Yes
$.oneOf[0].allOf[1].Payload.areaIDs[]integer No
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/floorplan/set_areas",
    "RequestUserAlias": "example-user",
    "Payload": {
        "areaIDs": []
    }
}
Machine-readable endpoint documentation
POST

/v1/floorplan/set_event_area

#
Tag an `ATLocationEvent` with a floorplan area. Same gate as `set_location_area`.

Parameters

NameTypeRequiredDefaultDescription
ATLocationEvent_ID int Yes — Event to tag.
ATFloorplanArea_ID int Yes — Area to bind (0 to clear).
isWritingRequest bool No false Set true to actually persist.
Request example (cURL)
curl --request POST \
  'https://ca.appointmenttrader.com/v1/floorplan/set_event_area' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATLocationEvent_ID={{ATLocationEvent_ID}}' \
  --data-urlencode 'ATFloorplanArea_ID={{ATFloorplanArea_ID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$floorplan_set_event_area_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payload = true Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/floorplan/set_event_area",
    "RequestUserAlias": "example-user",
    "Payload": true
}
Machine-readable endpoint documentation
POST

/v1/floorplan/set_floor

#
Upsert a floor (architecture SVG, viewbox, name, order). Pass ATFloorplanFloor_ID = 0 to create a new floor under the supplied floorplan; non-zero updates the existing row. Architecture SVG is sanitised before write so user-pasted blobs can't smuggle scripts.

Parameters

NameTypeRequiredDefaultDescription
ATFloorplan_ID int Yes — Owner floorplan; required when creating.
ATFloorplanFloor_ID int Yes — 0 to create, or existing row ID to update.
name string Yes — Floor display name.
floorOrder int No 0 -2..N ordering hint (-2 = sub-basement, 0 = ground).
viewBoxWidth int No 1000 SVG viewbox width.
viewBoxHeight int No 1000 SVG viewbox height.
architectureSVG string No "" Raw SVG fragment for the building shell; sanitised server-side.
backgroundImageURL string No "" Optional traced reference photo URL.
isWritingRequest bool No false Set true to actually persist.
Request example (cURL)
curl --request POST \
  'https://ca.appointmenttrader.com/v1/floorplan/set_floor' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATFloorplan_ID={{ATFloorplan_ID}}' \
  --data-urlencode 'ATFloorplanFloor_ID={{ATFloorplanFloor_ID}}' \
  --data-urlencode 'name={{name}}' \
  --data-urlencode 'floorOrder={{floorOrder}}' \
  --data-urlencode 'viewBoxWidth={{viewBoxWidth}}' \
  --data-urlencode 'viewBoxHeight={{viewBoxHeight}}' \
  --data-urlencode 'architectureSVG={{architectureSVG}}' \
  --data-urlencode 'backgroundImageURL={{backgroundImageURL}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$floorplan_set_floor_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.ATFloorplanFloor_IDinteger Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/floorplan/set_floor",
    "RequestUserAlias": "example-user",
    "Payload": {
        "ATFloorplanFloor_ID": 0
    }
}
Machine-readable endpoint documentation
POST

/v1/floorplan/set_imported_svg

#
Import a pasted/uploaded SVG fragment as the architecture layer of a floor. The fragment is sanitised server-side: script elements, event handlers (onload, onclick, ...), foreignObject elements, external references, and unsafe URL schemes are stripped before write. Optional autoExtractAreas mode walks the cleaned tree for rect, polygon, circle, and path elements that carry either a title child or a data-atv2-label attribute, and inserts each into the floor's currently-Active layout as a draft area, ready for the creator to assign categories to.

Parameters

NameTypeRequiredDefaultDescription
ATFloorplanFloor_ID int Yes — Floor to land the architecture on.
svgFragment string Yes — The SVG text. May or may not have an outer svg element.
autoExtractAreas bool No false True to also create draft areas from titled shapes.
isWritingRequest bool No false Set true to actually persist.
Request example (cURL)
curl --request POST \
  'https://ca.appointmenttrader.com/v1/floorplan/set_imported_svg' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATFloorplanFloor_ID={{ATFloorplanFloor_ID}}' \
  --data-urlencode 'svgFragment={{svgFragment}}' \
  --data-urlencode 'autoExtractAreas={{autoExtractAreas}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$floorplan_set_imported_svg_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.ATFloorplanFloor_IDinteger Yes
$.oneOf[0].allOf[1].Payload.architectureSVGstring Yes
$.oneOf[0].allOf[1].Payload.extractedAreaCountinteger Yes
$.oneOf[0].allOf[1].Payload.sanitisedBytesinteger Yes
$.oneOf[0].allOf[1].Payload.sanitizedBytesinteger Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/floorplan/set_imported_svg",
    "RequestUserAlias": "example-user",
    "Payload": {
        "ATFloorplanFloor_ID": 0,
        "architectureSVG": "synthetic-example",
        "extractedAreaCount": 0,
        "sanitisedBytes": 0,
        "sanitizedBytes": 0
    }
}
Machine-readable endpoint documentation
POST

/v1/floorplan/set_layout

#
Upsert a layout. Pass `ATFloorplanLayout_ID = 0` to create a new layout under the supplied floor; non-zero updates the existing row. When the resulting status is `Active`, ANY other Active layout on the same floor flips to `Historical` in the same write -- there can be exactly one Active layout per floor at a time.

Parameters

NameTypeRequiredDefaultDescription
ATFloorplanFloor_ID int Yes — Owner floor; required when creating.
ATFloorplanLayout_ID int Yes — 0 to create, or existing row ID to update.
name string Yes — Layout display name.
statusValue string No "Draft" One of Draft, Active, Historical.
effectiveStartDate string No "" Optional ISO datetime.
effectiveEndDate string No "" Optional ISO datetime.
isWritingRequest bool No false Set true to actually persist.
Request example (cURL)
curl --request POST \
  'https://ca.appointmenttrader.com/v1/floorplan/set_layout' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATFloorplanFloor_ID={{ATFloorplanFloor_ID}}' \
  --data-urlencode 'ATFloorplanLayout_ID={{ATFloorplanLayout_ID}}' \
  --data-urlencode 'name={{name}}' \
  --data-urlencode 'statusValue={{statusValue}}' \
  --data-urlencode 'effectiveStartDate={{effectiveStartDate}}' \
  --data-urlencode 'effectiveEndDate={{effectiveEndDate}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$floorplan_set_layout_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.ATFloorplanLayout_IDinteger Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/floorplan/set_layout",
    "RequestUserAlias": "example-user",
    "Payload": {
        "ATFloorplanLayout_ID": 0
    }
}
Machine-readable endpoint documentation
POST

/v1/floorplan/set_location_area

#
Tag an `ATLocation` with a floorplan area so trades against that venue inherit area attribution for royalty purposes. Gated either by floorplan ownership OR `Permission::LocationAdministration`.

Parameters

NameTypeRequiredDefaultDescription
ATLocation_ID int Yes — Venue to tag.
ATFloorplanArea_ID int Yes — Area to bind to this venue (0 to clear).
isWritingRequest bool No false Set true to actually persist.
Request example (cURL)
curl --request POST \
  'https://ca.appointmenttrader.com/v1/floorplan/set_location_area' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATLocation_ID={{ATLocation_ID}}' \
  --data-urlencode 'ATFloorplanArea_ID={{ATFloorplanArea_ID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$floorplan_set_location_area_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payload = true Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/floorplan/set_location_area",
    "RequestUserAlias": "example-user",
    "Payload": true
}
Machine-readable endpoint documentation
POST

/v1/floorplan/set_new

#
Direct creation entry point. Transactionally creates an ATFloorplans row (Draft), plus an initial ATFloorplanFloor ("Ground") and an initial ATFloorplanLayout ("Default", Active) so the editor has somewhere to draw immediately. Gated by `Permission::CanCreateFloorplan`. At least one of `ATLocation_ID` or `ATLocationEvent_ID` is required. Both may be supplied.

Parameters

NameTypeRequiredDefaultDescription
name string Yes — Display name for the floorplan.
ATLocation_ID int No 0 Optional venue link.
ATLocationEvent_ID int No 0 Optional event link.
isWritingRequest bool No false Set true to actually create. Defaults false (dry-run).
Request example (cURL)
curl --request POST \
  'https://ca.appointmenttrader.com/v1/floorplan/set_new' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'name={{name}}' \
  --data-urlencode 'ATLocation_ID={{ATLocation_ID}}' \
  --data-urlencode 'ATLocationEvent_ID={{ATLocationEvent_ID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$floorplan_set_new_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.ATFloorplan_IDinteger Yes
$.oneOf[0].allOf[1].Payload.ATFloorplanFloor_IDinteger Yes
$.oneOf[0].allOf[1].Payload.ATFloorplanLayout_IDinteger Yes
$.oneOf[0].allOf[1].Payload.editorURLstring Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/floorplan/set_new",
    "RequestUserAlias": "example-user",
    "Payload": {
        "ATFloorplan_ID": 0,
        "ATFloorplanFloor_ID": 0,
        "ATFloorplanLayout_ID": 0,
        "editorURL": "synthetic-example"
    }
}
Machine-readable endpoint documentation
POST

/v1/floorplan/set_rejected

#
Reject a Submitted floorplan with a reviewer note. Gated by `Permission::CanReviewFloorplanSubmissions`.

Parameters

NameTypeRequiredDefaultDescription
ATFloorplan_ID int Yes — Floorplan to reject.
reason string No "" Short note for the originator.
isWritingRequest bool No false Set true to actually transition.
Request example (cURL)
curl --request POST \
  'https://ca.appointmenttrader.com/v1/floorplan/set_rejected' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATFloorplan_ID={{ATFloorplan_ID}}' \
  --data-urlencode 'reason={{reason}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$floorplan_set_rejected_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.Status = "Rejected" Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/floorplan/set_rejected",
    "RequestUserAlias": "example-user",
    "Payload": {
        "Status": "Rejected"
    }
}
Machine-readable endpoint documentation
POST

/v1/floorplan/set_submitted_for_review

#
Move a Draft floorplan into the moderation queue. Owner-only.

Parameters

NameTypeRequiredDefaultDescription
ATFloorplan_ID int Yes — Floorplan to submit.
isWritingRequest bool No false Set true to actually transition.
Request example (cURL)
curl --request POST \
  'https://ca.appointmenttrader.com/v1/floorplan/set_submitted_for_review' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'ATFloorplan_ID={{ATFloorplan_ID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$floorplan_set_submitted_for_review_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.Status = "Submitted" Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/floorplan/set_submitted_for_review",
    "RequestUserAlias": "example-user",
    "Payload": {
        "Status": "Submitted"
    }
}
Machine-readable endpoint documentation