function apiAbort(obj) { writeOutput(serializeJSON(obj)); abort; } // Read JSON body once data = {}; try { raw = toString(getHttpRequestData().content); if (len(trim(raw))) { data = deserializeJSON(raw); if (!isStruct(data)) data = {}; } } catch (any e) { data = {}; } httpHeaders = getHttpRequestData().headers; // Get BusinessID from: session > body > X-Business-ID header > URL bizId = 0; if (structKeyExists(request, "BusinessID") && isNumeric(request.BusinessID) && request.BusinessID GT 0) { bizId = int(request.BusinessID); } if (bizId LTE 0 && structKeyExists(data, "BusinessID") && isNumeric(data.BusinessID) && data.BusinessID GT 0) { bizId = int(data.BusinessID); } if (bizId LTE 0 && structKeyExists(httpHeaders, "X-Business-ID") && isNumeric(httpHeaders["X-Business-ID"]) && httpHeaders["X-Business-ID"] GT 0) { bizId = int(httpHeaders["X-Business-ID"]); } if (bizId LTE 0 && structKeyExists(url, "BusinessID") && isNumeric(url.BusinessID) && url.BusinessID GT 0) { bizId = int(url.BusinessID); } if (bizId LTE 0) { apiAbort({ OK=false, ERROR="no_business_selected" }); } // Default behavior: only active beacons unless onlyActive is explicitly false/0 onlyActive = true; if (structKeyExists(data, "onlyActive")) { if (isBoolean(data.onlyActive)) { onlyActive = data.onlyActive; } else if (isNumeric(data.onlyActive)) { onlyActive = (int(data.onlyActive) EQ 1); } else if (isSimpleValue(data.onlyActive)) { onlyActive = (lcase(trim(toString(data.onlyActive))) EQ "true"); } } SELECT BeaconShardID, BeaconMajor FROM Businesses WHERE ID = LIMIT 1 SELECT UUID FROM BeaconShards WHERE ID = SELECT DISTINCT b.ID, b.BusinessID, b.Name, b.UUID, b.IsActive FROM Beacons b WHERE ( b.BusinessID = OR b.ID IN ( SELECT lt.BeaconID FROM lt_BeaconsID_BusinessesID lt WHERE lt.BusinessID = ) ) AND b.IsActive = 1 ORDER BY b.Name, b.ID SELECT sp.ID AS ServicePointID, sp.Name, sp.BeaconMinor, sp.IsActive FROM ServicePoints sp WHERE sp.BusinessID = AND sp.BeaconMinor IS NOT NULL AND sp.IsActive = 1 ORDER BY sp.BeaconMinor, sp.Name try{logPerf(0);}catch(any e){} #serializeJSON({ OK=true, ERROR="", BusinessID=bizId, COUNT=arrayLen(beacons), BEACONS=beacons, USES_SHARDING=usesSharding, SHARDING_INFO=shardingInfo })#