Skip to content

Send product feedback

POST
/drives/{drive}/feedback
curl --request POST \
--url https://work.optidata.cloud/api/drives/1/feedback \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "app_id": 1, "rating": "good", "content": "Uploading a folder is much faster now." }'

Records the calling user’s rating of an Optiwork app, with an optional comment and attachments. Returns an empty body on success.

drive
required
integer format: int64

Numeric id of the drive. Read it from GET /drives/config.json.

Media typeapplication/json
object
app_id
required

The Optiwork app the feedback is about.

integer
rating
required

Rating token, as rendered by the feedback widget.

string
<= 10 characters
content

Free-text comment.

string | null
attachments

Attachments referenced from the comment.

Array<object> | null
object
key
additional properties
any
Examples
Examplefeedback
{
"app_id": 1,
"rating": "good",
"content": "Uploading a folder is much faster now."
}

The feedback was recorded. The body is empty.

Missing, malformed or expired authentication key.

Media typeapplication/json

Authentication failures use an error key rather than message.

object
error
required
string
Examples
Examplemissing

No bearer token sent

{
"error": "JWT passport exception: Missing bearer token in request"
}

The request body or query string failed validation.

Media typeapplication/json
object
message
required

The first validation message.

string
errors
required

Validation messages keyed by field name.

object
key
additional properties
Array<string>
Examples
Exampleinvalid
{
"message": "The name field is required.",
"errors": {
"name": [
"The name field is required."
]
}
}

Rate limit exceeded. Retry after the window resets.

Media typeapplication/json

Generic error envelope used by policy, binding and framework failures.

object
message
required

Human-readable description of the failure.

string
Examples
Examplethrottled
{
"message": "Too Many Attempts."
}