Files
botino/public/lib/api.js

61 lines
2.1 KiB
JavaScript

export const api = {
async conversations({ q = "", status = "", state = "" } = {}) {
const u = new URL("/conversations", location.origin);
if (q) u.searchParams.set("q", q);
if (status) u.searchParams.set("status", status);
if (state) u.searchParams.set("state", state);
return fetch(u).then(r => r.json());
},
async deleteConversation(chat_id) {
if (!chat_id) throw new Error("chat_id_required");
return fetch(`/conversations/${encodeURIComponent(chat_id)}`, { method: "DELETE" }).then(r => r.json());
},
async users({ q = "", limit = 200 } = {}) {
const u = new URL("/users", location.origin);
if (q) u.searchParams.set("q", String(q));
u.searchParams.set("limit", String(limit));
return fetch(u).then(r => r.json());
},
async deleteUser(chat_id, { deleteWoo = false } = {}) {
if (!chat_id) throw new Error("chat_id_required");
const u = new URL(`/users/${encodeURIComponent(chat_id)}`, location.origin);
if (deleteWoo) u.searchParams.set("deleteWoo", "1");
return fetch(u, { method: "DELETE" }).then(r => r.json());
},
async messages({ chat_id, limit = 200 } = {}) {
const u = new URL("/messages", location.origin);
if (chat_id) u.searchParams.set("chat_id", chat_id);
u.searchParams.set("limit", String(limit));
return fetch(u).then(r => r.json());
},
async runs({ chat_id, limit = 1 } = {}) {
const u = new URL("/runs", location.origin);
if (chat_id) u.searchParams.set("chat_id", chat_id);
u.searchParams.set("limit", String(limit));
return fetch(u).then(r => r.json());
},
async runById(run_id) {
if (!run_id) return null;
return fetch(`/runs/${encodeURIComponent(run_id)}`).then(r => r.json());
},
async simEvolution(payload) {
return fetch("/webhook/evolution", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
}).then(r => r.json());
},
async retryLast(chat_id) {
if (!chat_id) throw new Error("chat_id_required");
return fetch(`/conversations/${encodeURIComponent(chat_id)}/retry-last`, { method: "POST" }).then(r => r.json());
},
};