function apiAbort(payload) { writeOutput(serializeJSON(payload)); 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": "missing_businessid" }); } // Default behavior: only active service points 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 ServicePointID, ServicePointName, ServicePointTypeID, ServicePointCode, ServicePointDescription, ServicePointSortOrder, ServicePointIsActive FROM ServicePoints WHERE ServicePointBusinessID = AND ServicePointIsActive = 1 ORDER BY ServicePointSortOrder, ServicePointName #serializeJSON({ "OK": true, "ERROR": "", "BusinessID": bizId, "COUNT": arrayLen(servicePoints), "SERVICEPOINTS": servicePoints })#