Fix Monday.com webhook subscription and improve API client
- Add API-Version header to all Monday.com GraphQL requests - Switch create_webhook/delete_webhook to inline values matching Monday's documented syntax (fixes Internal Server Error on subscribe) - Add extended error details from Monday.com GraphQL responses Made-with: Cursor
This commit is contained in:
parent
d58285785e
commit
f87ab36493
1 changed files with 19 additions and 7 deletions
|
|
@ -9,6 +9,7 @@ async function gql(token: string, query: string, variables?: Record<string, unkn
|
|||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
Authorization: token,
|
||||
"API-Version": "2024-10",
|
||||
},
|
||||
body: JSON.stringify({ query, variables }),
|
||||
});
|
||||
|
|
@ -18,7 +19,12 @@ async function gql(token: string, query: string, variables?: Record<string, unkn
|
|||
}
|
||||
const json = await res.json();
|
||||
if (json.errors?.length) {
|
||||
throw new Error(`Monday.com GraphQL: ${json.errors[0].message}`);
|
||||
const err = json.errors[0];
|
||||
const detail = err.extensions ? ` (${JSON.stringify(err.extensions)})` : "";
|
||||
throw new Error(`Monday.com GraphQL: ${err.message}${detail}`);
|
||||
}
|
||||
if (json.error_message) {
|
||||
throw new Error(`Monday.com: ${json.error_message}`);
|
||||
}
|
||||
return json.data;
|
||||
}
|
||||
|
|
@ -169,11 +175,15 @@ export async function createWebhookSubscription(
|
|||
boardId: string,
|
||||
callbackUrl: string
|
||||
): Promise<string> {
|
||||
const escapedUrl = callbackUrl.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
|
||||
const data = await gql(token, `
|
||||
mutation ($boardId: ID!, $url: String!) {
|
||||
create_webhook(board_id: $boardId, url: $url, event: change_column_value) { id }
|
||||
mutation {
|
||||
create_webhook(board_id: ${boardId}, url: "${escapedUrl}", event: change_column_value) {
|
||||
id
|
||||
board_id
|
||||
}
|
||||
`, { boardId, url: callbackUrl });
|
||||
}
|
||||
`);
|
||||
return String(data.create_webhook.id);
|
||||
}
|
||||
|
||||
|
|
@ -182,8 +192,10 @@ export async function deleteWebhookSubscription(
|
|||
webhookId: string
|
||||
): Promise<void> {
|
||||
await gql(token, `
|
||||
mutation ($webhookId: ID!) {
|
||||
delete_webhook(id: $webhookId) { id }
|
||||
mutation {
|
||||
delete_webhook(id: ${webhookId}) {
|
||||
id
|
||||
}
|
||||
`, { webhookId });
|
||||
}
|
||||
`);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue