Skip to content

Answer a thread

POST
/v1/projects/{projectId}/threads/{threadId}/comments
curl --request POST \
--url https://api.blupinta.app/v1/projects/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/threads/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/comments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "body": "example" }'

A message added to the thread; whoever opened it is told.

projectId
required
string format: uuid

One of the projects the person chose when connecting the app

threadId
required
string format: uuid

One of the project’s threads

Idempotency-Key
string
<= 200 characters

Any unique text of the app’s, the same for a retry: the request is acted on once, its answer kept a day

Media typeapplication/json

A message to add

object
body
required
string
Examplegenerated
{
"body": "example"
}

Answer a thread

Media typeapplication/json

A conversation pinned on a plan

object
id
required
string
planId
required

The plan it is on, by the home’s id

string
anchor
required

Where a thread is pinned: on an element of a plan (by its kind and id), at a point of the plan’s sheet

object
ref

The element, when it is on one: { kind: 'wall', id: 'north' }

object
kind
required
string
id
required
string
at
required

The point, in the plan’s sheet units

array
>= 2 items <= 2 items
resolvedAt
required

When it was marked resolved; null while open

string | null
createdAt
required
string
comments
required

Its messages, oldest first

Array<object>

A message in a thread

object
id
required
string
authorName
required

Who wrote it: their name, or their address when they gave none; null once their account is gone

string | null
body
required
string
appName
required

The app that wrote it through /v1, as people read its name; null when written in the editor

string | null
editedAt
required

When it was last changed, ISO 8601; null when never

string | null
createdAt
required
string
Examplegenerated
{
"id": "example",
"planId": "example",
"anchor": {
"ref": {
"kind": "example",
"id": "example"
},
"at": [
"example"
]
},
"resolvedAt": "example",
"createdAt": "example",
"comments": [
{
"id": "example",
"authorName": "example",
"body": "example",
"appName": "example",
"editedAt": "example",
"createdAt": "example"
}
]
}
RateLimit-Limit
integer

The requests the caller may make in the window: an app counts per connection, every token together

RateLimit-Remaining
integer

The requests left in the window

RateLimit-Reset
integer

Seconds until the window starts again

invalid_input: What was sent isn’t right: problems says what, each with where

Media typeapplication/json

The body of a refusal

object
error
required

What /v1 answers when it refuses

string
Allowed values: unauthenticated forbidden not_found rate_limited server_error invalid_input conflict invalid_home blocking_problems unsupported_file
errorId

The server’s id for a server_error, to quote when asking for help

string
problems

What is wrong, for invalid_input, conflict, invalid_home, blocking_problems

Array<string>
Example
{
"error": "unauthenticated"
}
RateLimit-Limit
integer

The requests the caller may make in the window: an app counts per connection, every token together

RateLimit-Remaining
integer

The requests left in the window

RateLimit-Reset
integer

Seconds until the window starts again

unauthenticated: No valid access token for this API

Media typeapplication/json

The body of a refusal

object
error
required

What /v1 answers when it refuses

string
Allowed values: unauthenticated forbidden not_found rate_limited server_error invalid_input conflict invalid_home blocking_problems unsupported_file
errorId

The server’s id for a server_error, to quote when asking for help

string
problems

What is wrong, for invalid_input, conflict, invalid_home, blocking_problems

Array<string>
Example
{
"error": "unauthenticated"
}
RateLimit-Limit
integer

The requests the caller may make in the window: an app counts per connection, every token together

RateLimit-Remaining
integer

The requests left in the window

RateLimit-Reset
integer

Seconds until the window starts again

forbidden: The token lacks the scope this operation needs

Media typeapplication/json

The body of a refusal

object
error
required

What /v1 answers when it refuses

string
Allowed values: unauthenticated forbidden not_found rate_limited server_error invalid_input conflict invalid_home blocking_problems unsupported_file
errorId

The server’s id for a server_error, to quote when asking for help

string
problems

What is wrong, for invalid_input, conflict, invalid_home, blocking_problems

Array<string>
Example
{
"error": "unauthenticated"
}
RateLimit-Limit
integer

The requests the caller may make in the window: an app counts per connection, every token together

RateLimit-Remaining
integer

The requests left in the window

RateLimit-Reset
integer

Seconds until the window starts again

not_found: Nothing there, or nothing this token may read

Media typeapplication/json

The body of a refusal

object
error
required

What /v1 answers when it refuses

string
Allowed values: unauthenticated forbidden not_found rate_limited server_error invalid_input conflict invalid_home blocking_problems unsupported_file
errorId

The server’s id for a server_error, to quote when asking for help

string
problems

What is wrong, for invalid_input, conflict, invalid_home, blocking_problems

Array<string>
Example
{
"error": "unauthenticated"
}
RateLimit-Limit
integer

The requests the caller may make in the window: an app counts per connection, every token together

RateLimit-Remaining
integer

The requests left in the window

RateLimit-Reset
integer

Seconds until the window starts again

rate_limited: Too many requests: wait as long as Retry-After says

Media typeapplication/json

The body of a refusal

object
error
required

What /v1 answers when it refuses

string
Allowed values: unauthenticated forbidden not_found rate_limited server_error invalid_input conflict invalid_home blocking_problems unsupported_file
errorId

The server’s id for a server_error, to quote when asking for help

string
problems

What is wrong, for invalid_input, conflict, invalid_home, blocking_problems

Array<string>
Example
{
"error": "unauthenticated"
}
RateLimit-Limit
integer

The requests the caller may make in the window: an app counts per connection, every token together

RateLimit-Remaining
integer

The requests left in the window

RateLimit-Reset
integer

Seconds until the window starts again

Retry-After
integer

Seconds to wait before asking again

server_error: Something failed on Blupinta’s side: quote errorId when asking for help

Media typeapplication/json

The body of a refusal

object
error
required

What /v1 answers when it refuses

string
Allowed values: unauthenticated forbidden not_found rate_limited server_error invalid_input conflict invalid_home blocking_problems unsupported_file
errorId

The server’s id for a server_error, to quote when asking for help

string
problems

What is wrong, for invalid_input, conflict, invalid_home, blocking_problems

Array<string>
Example
{
"error": "unauthenticated"
}
RateLimit-Limit
integer

The requests the caller may make in the window: an app counts per connection, every token together

RateLimit-Remaining
integer

The requests left in the window

RateLimit-Reset
integer

Seconds until the window starts again