Skip to content

Upload an Insights PDF and populate profile sections.

POST
/admin/users/{userId}/insights/import
curl --request POST \
--url https://api.gospl.example/v1/admin/users/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/insights/import \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form file=@file

Admin-only. Parses the supplied Insights PDF into the correct profile sections for confirm-before-save. BLOCKED on PDF parse feasibility (OQ-03). Async because parsing may be an LLM extraction call.

userId
required
string format: uuid
Media type multipart/form-data
object
file
required
string format: binary

Accepted; parsing started. Poll the job for parsed fields.

Media type application/json
object
jobId
required
string format: uuid
status
required
string
Allowed values: queued parsing ready_for_review failed
parsedFields

Full Insights text — fields MUST NOT be truncated (FR-01).

object
keyStrengths
required
string
blindSpots
required
string
communicationDos
required
string
communicationDonts
required
string
summary

Percentages + colour wheel for the page (FR-03, FR-04).

object
colourWheel
object
key
additional properties
number
percentages
object
key
additional properties
number
fullProfilePdfUrl

FR-02 — link to the complete Insights PDF.

string format: uri
error
string
Example
{
"status": "queued"
}

Invalid request.

Media type application/json
object
code
required
string
message
required
string
Example generated
{
"code": "example",
"message": "example"
}

Missing/invalid credentials.

Media type application/json
object
code
required
string
message
required
string
Example generated
{
"code": "example",
"message": "example"
}

Authenticated but not permitted (incl. cross-tenant).

Media type application/json
object
code
required
string
message
required
string
Example generated
{
"code": "example",
"message": "example"
}