openapi: 3.1.0
info:
title: API Reference aiTaskBuilder submissionFeedbackUpload API
version: 1.0.0
servers:
- url: https://api.prolific.com
description: Production
tags:
- name: submissionFeedbackUpload
paths:
/api/v1/submissions/signals/upload-url/{filename}:
get:
operationId: get-submission-feedback-upload-url
summary: Request a feedback upload URL
description: "Request a temporary, pre-signed URL to upload a feedback file for your completed studies.\n\nThis is the first step of a two-step upload process:\n 1. Call this endpoint to receive a pre-signed `upload_url`.\n 2. Upload your file directly to that URL with an HTTP `PUT` request before it expires.\n\n<Note>\n Supported file formats are CSV, XLS, XLSX, JSON, TXT and PDF. The maximum file size is 5GB. Please check the [supported file formats](/api-reference/submission-feedback-upload#supported-file-formats) section for more details.\n</Note>"
tags:
- submissionFeedbackUpload
parameters:
- name: filename
in: path
description: The name of the file you want to upload, including its extension (e.g. `participant_feedback.csv`).
required: true
schema:
type: string
- name: workspace_id
in: query
description: The ID of the Prolific workspace the feedback belongs to.
required: true
schema:
type: string
- name: Authorization
in: header
description: 'The Prolific API uses API token to authenticate requests. You can create an API token directly from your settings.
Your API token does not have an expiry date and carries full permission, so be sure to keep them secure.
If your token is leaked, delete it and create a new one directly in the app.
In your requests add `Authorization` header with the value `Token <your token>`.'
required: true
schema:
type: string
responses:
'201':
description: Pre-signed upload URL generated successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/Submission Feedback Upload_GetSubmissionFeedbackUploadUrl_Response_201'
'400':
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
schemas:
ErrorDetail:
type: object
properties:
status:
type: integer
description: Status code as in the http standards
error_code:
type: integer
description: Internal error code
title:
type: string
description: Error title
detail:
$ref: '#/components/schemas/ErrorDetailDetail'
description: Error detail
additional_information:
type: string
description: Optional extra information
traceback:
type: string
description: Optional debug information
interactive:
type: boolean
required:
- status
- error_code
- title
- detail
title: ErrorDetail
ErrorDetailDetail:
oneOf:
- type: string
- type: array
items:
type: string
- $ref: '#/components/schemas/ErrorDetailDetail2'
description: Error detail
title: ErrorDetailDetail
ApiV1SubmissionsSignalsUploadUrlFilenameGetResponsesContentApplicationJsonSchemaHttpMethod:
type: string
enum:
- PUT
description: The HTTP method to use when uploading to `upload_url`.
title: ApiV1SubmissionsSignalsUploadUrlFilenameGetResponsesContentApplicationJsonSchemaHttpMethod
Error:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorDetail'
required:
- error
title: Error
Submission Feedback Upload_GetSubmissionFeedbackUploadUrl_Response_201:
type: object
properties:
upload_url:
type: string
description: The temporary, pre-signed URL to upload your file to with an HTTP `PUT` request.
http_method:
$ref: '#/components/schemas/ApiV1SubmissionsSignalsUploadUrlFilenameGetResponsesContentApplicationJsonSchemaHttpMethod'
description: The HTTP method to use when uploading to `upload_url`.
expires_at:
type: string
format: date-time
description: The time at which the pre-signed `upload_url` expires.
title: Submission Feedback Upload_GetSubmissionFeedbackUploadUrl_Response_201
ErrorDetailDetail2:
type: object
properties:
any_field:
type: array
items:
type: string
description: Name of the field with a validation error and as a value an array with the error descriptions
description: All fields with validation errors
title: ErrorDetailDetail2
securitySchemes:
token:
type: apiKey
in: header
name: Authorization
description: 'The Prolific API uses API token to authenticate requests. You can create an API token directly from your settings.
Your API token does not have an expiry date and carries full permission, so be sure to keep them secure.
If your token is leaked, delete it and create a new one directly in the app.
In your requests add `Authorization` header with the value `Token <your token>`.'