const WORKSPACE_API_KEY = "your_workspace_api_key";
const BASE_URL = "https://api.adaline.ai/v2/logs";
// Update a log trace
async function updateLogTrace(projectId, traceId, referenceId, logTrace) {
const requestBody = {
projectId,
logTrace,
};
// Add either traceId or referenceId
if (traceId) {
requestBody.traceId = traceId;
} else if (referenceId) {
requestBody.referenceId = referenceId;
} else {
throw new Error("Either traceId or referenceId must be provided");
}
const response = await fetch(`${BASE_URL}/update-log`, {
method: "PATCH",
headers: {
Authorization: `Bearer ${WORKSPACE_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify(requestBody),
});
if (!response.ok) {
const error = await response.json();
throw new Error(`API Error: ${error.error}`);
}
return response.json();
}
// Usage examples
try {
// Update trace status and add completion metadata
const updateResult1 = await updateLogTrace(
"project_123",
null, // traceId
"trace_001", // referenceId
{
status: "success",
endedAt: Date.now(),
attributes: [
{
operation: "create",
key: "totalDuration",
value: 45000,
},
{
operation: "create",
key: "completionReason",
value: "finished",
},
],
tags: [
{
operation: "create",
tag: "completed",
},
{
operation: "delete",
tag: "processing",
},
],
}
);
console.log("Updated trace:", updateResult1.success);
// Update only status
const updateResult2 = await updateLogTrace(
"project_123",
"trace_xyz789", // traceId
null, // referenceId
{
status: "failure",
attributes: [
{
operation: "create",
key: "errorReason",
value: "timeout",
},
],
}
);
console.log("Updated trace status:", updateResult2.success);
// Clean up temporary attributes
const updateResult3 = await updateLogTrace(
"project_123",
null, // traceId
"trace_002", // referenceId
{
attributes: [
{
operation: "delete",
key: "tempProcessingData",
},
{
operation: "delete",
key: "debugInfo",
},
],
}
);
console.log("Cleaned up attributes:", updateResult3.success);
} catch (error) {
console.error("Error:", error.message);
}