Onboarding API
The Onboarding API manages workspace creation for new users. Every authenticated user must complete onboarding exactly once before accessing other Elydora resources. Users can create either a personal workspace or a named organization workspace. Once onboarding is complete, the onboarding_completed flag is set to 1 and subsequent calls to the create endpoints return a 409 Conflict.
Get Onboarding Status
GET
/v1/onboarding/status
Return the onboarding completion status and current org assignment for the authenticated user.
Auth: any authenticated user
Example Request
bash
curl https://api.elydora.com/v1/onboarding/status \
-H "Authorization: Bearer <token>"Response
json
{
"onboarding_completed": 0,
"org_id": null
}After onboarding is completed, the response reflects the assigned workspace:
json
{
"onboarding_completed": 1,
"org_id": "0195a0b1-c2d3-7e4f-a5b6-c7d8e9f0a1b2"
}Create Personal Workspace
POST
/v1/onboarding/personal
Create a personal workspace for the authenticated user and mark onboarding as complete. Returns HTTP 201 on success.
Auth: any authenticated user
This endpoint requires no request body. A workspace named Personal Workspace is created automatically. The session cookie is refreshed to reflect the new org_id.
Example Request
bash
curl -X POST https://api.elydora.com/v1/onboarding/personal \
-H "Authorization: Bearer <token>"Response
json
{
"org_id": "0195a0b1-c2d3-7e4f-a5b6-c7d8e9f0a1b2"
}Create Organization Workspace
POST
/v1/onboarding/organization
Create a named organization workspace and optionally invite team members. Returns HTTP 201 on success.
Auth: any authenticated user
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| org_name | string | Yes | Display name for the organization. Maximum 128 characters. |
| description | string | No | Optional description of the organization. Maximum 512 characters. |
| invitations | array | No | Optional array of invitation objects to send immediately upon workspace creation. Each object requires email and role fields. |
Invitation Object Fields
| Field | Type | Required | Description |
|---|---|---|---|
| string | Yes | Email address of the person to invite. Maximum 256 characters. | |
| role | string | Yes | RBAC role to assign. One of: readonly_investigator, integration_engineer, compliance_auditor, security_admin, org_owner. |
Example Request
bash
curl -X POST https://api.elydora.com/v1/onboarding/organization \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"org_name": "Acme Corp",
"description": "Acme Corporation AI audit workspace",
"invitations": [
{ "email": "bob@acme.com", "role": "security_admin" },
{ "email": "carol@acme.com", "role": "compliance_auditor" }
]
}'Response
json
{
"org_id": "0195a0b1-c2d3-7e4f-a5b6-c7d8e9f0a1b2"
}