Make a webhook
const url = 'https://api.blupinta.app/v1/webhooks';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"url":"example","events":["revision.saved"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.blupinta.app/v1/webhooks \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "url": "example", "events": [ "revision.saved" ] }'An HTTPS address of the app’s, on the public internet, that Blupinta posts each event of the projects the app reaches to (V1WebhookBody), signed: Blupinta-Signature: t=<seconds>,v1=<hex> is the HMAC-SHA256 of <t>.<body> with the webhook’s secret, given only now. Answer 2xx within 10 seconds; anything else is tried again after 1 min, 5 min, 30 min, 2 h and 12 h. Three days of nothing but failures turn it off.
Authorizations
Section titled “Authorizations”Parameters
Section titled “ Parameters ”Header Parameters
Section titled “Header Parameters”Any unique text of the app’s, the same for a retry: the request is acted on once, its answer kept a day
Request Bodyrequired
Section titled “Request Bodyrequired”A webhook to make: where to post, and which events (all of them when none is said)
object
An HTTPS address on the public internet
Responses
Section titled “ Responses ”Make a webhook
A webhook just made, with its secret: shown this once, to check each delivery’s Blupinta-Signature
object
When it was turned off after three days of failing deliveries; null while on
Example
{ "events": [ "revision.saved" ]}Headers
Section titled “Headers”The requests the caller may make in the window: an app counts per connection, every token together
The requests left in the window
Seconds until the window starts again
invalid_input: What was sent isn’t right: problems says what, each with where
The body of a refusal
object
What /v1 answers when it refuses
The server’s id for a server_error, to quote when asking for help
What is wrong, for invalid_input, conflict, invalid_home, blocking_problems
Example
{ "error": "unauthenticated"}Headers
Section titled “Headers”The requests the caller may make in the window: an app counts per connection, every token together
The requests left in the window
Seconds until the window starts again
unauthenticated: No valid access token for this API
The body of a refusal
object
What /v1 answers when it refuses
The server’s id for a server_error, to quote when asking for help
What is wrong, for invalid_input, conflict, invalid_home, blocking_problems
Example
{ "error": "unauthenticated"}Headers
Section titled “Headers”The requests the caller may make in the window: an app counts per connection, every token together
The requests left in the window
Seconds until the window starts again
forbidden: The token lacks the scope this operation needs
The body of a refusal
object
What /v1 answers when it refuses
The server’s id for a server_error, to quote when asking for help
What is wrong, for invalid_input, conflict, invalid_home, blocking_problems
Example
{ "error": "unauthenticated"}Headers
Section titled “Headers”The requests the caller may make in the window: an app counts per connection, every token together
The requests left in the window
Seconds until the window starts again
rate_limited: Too many requests: wait as long as Retry-After says
The body of a refusal
object
What /v1 answers when it refuses
The server’s id for a server_error, to quote when asking for help
What is wrong, for invalid_input, conflict, invalid_home, blocking_problems
Example
{ "error": "unauthenticated"}Headers
Section titled “Headers”The requests the caller may make in the window: an app counts per connection, every token together
The requests left in the window
Seconds until the window starts again
Seconds to wait before asking again
server_error: Something failed on Blupinta’s side: quote errorId when asking for help
The body of a refusal
object
What /v1 answers when it refuses
The server’s id for a server_error, to quote when asking for help
What is wrong, for invalid_input, conflict, invalid_home, blocking_problems
Example
{ "error": "unauthenticated"}Headers
Section titled “Headers”The requests the caller may make in the window: an app counts per connection, every token together
The requests left in the window
Seconds until the window starts again