const BASE_URL = process.env.UPPZY_BASE_URL || "https://api.uppzy.com/api/v1";
const API_KEY = process.env.UPPZY_API_KEY;
async function uppzy(path, { method = "GET", headers = {}, body } = {}) {
const response = await fetch(`${BASE_URL}${path}`, {
method,
headers: {
"X-API-Key": API_KEY,
...headers,
},
body,
});
const text = await response.text();
const data = text ? JSON.parse(text) : null;
if (!response.ok) {
const error = new Error(`HTTP ${response.status}`);
error.status = response.status;
error.data = data;
throw error;
}
return data;
}
export async function sendSyncChat(siteId, payload) {
return uppzy(`/m2m/sites/${siteId}/chat`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
});
}
export async function sendAsyncChat(siteId, payload) {
return uppzy(`/m2m/sites/${siteId}/chat/async`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
});
}
export async function getAsyncChatStatus(siteId, requestId) {
return uppzy(`/m2m/sites/${siteId}/chat/requests/${requestId}`);
}
export async function submitChatFeedback(siteId, payload) {
return uppzy(`/m2m/sites/${siteId}/chat/feedback`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
});
}