API Reference: Users & Organizations Managing User Preferences and Wizards

Manage your users' experience by storing their personal settings and tracking their progress through multi-step setup wizards. This guide covers the API endpoints available for handling global user preferences and organization-specific documentation wizard states.

User Preferences

Manage global user settings, configurations, and UI states.

Wizard Progress

Track onboarding and setup completion for specific documentation projects.

User Preferences

User preferences allow you to store custom settings for an individual user, such as UI themes, notification toggles, or dashboard layouts. These preferences are tied directly to the authenticated user and persist across different sessions.

Available Endpoints

ActionMethod & EndpointDescription
List allGET /preferencesRetrieves all saved preferences for the authenticated user.
Get oneGET /preferenceRetrieves a specific preference by its key.
Set/UpdatePUT /preferenceCreates a new preference or updates an existing one.
DeleteDELETE /preferenceRemoves a specific preference.

Example Workflow

Here is a common pattern for managing user settings in your application:

  1. 1

    Retrieve existing preferences

    When a user logs in, call GET /preferences to load their saved settings and apply them to the UI.

  2. 2

    Update a specific setting

    When the user changes a setting (like switching to dark mode), use PUT /preference to save the change.

    curl -X PUT https://api.yourdomain.com/preference 
      -H "Authorization: Bearer YOUR_TOKEN" 
      -H "Content-Type: application/json" 
      -d '{"key": "theme", "value": "dark"}'
  3. 3

    Clear a setting

    If the user wants to revert to the system default, use DELETE /preference to remove their custom override.

Because preferences are tied to the authenticated user's token, you do not need to pass a user ID in the URL path. The API automatically resolves the user from the Authorization header.


Wizard Progress

When users create or configure new documentation, you can track their progress through multi-step wizards. This ensures they can safely pause and resume their onboarding without losing data.

Unlike global preferences, wizard progress is scoped to a specific organization and documentation project.

Available Endpoints

ActionMethod & EndpointDescription
Get progressGET /v1/organization/{organization_id}/wizard-progress/{documentation_id}Retrieves the current saved state of the wizard.
Upsert progressPOST /v1/organization/{organization_id}/wizard-progress/{documentation_id}Saves or updates the user's progress.
Delete progressDELETE /v1/organization/{organization_id}/wizard-progress/{documentation_id}Clears the wizard state.

Wizard Lifecycle

The following diagram illustrates how a client application should interact with the wizard progress endpoints during a standard onboarding flow:

sequenceDiagram
    participant User
    participant Client
    participant API

    User->>Client: Open Setup Wizard
    Client->>API: GET /wizard-progress/{doc_id}
    API-->>Client: Return saved state (e.g., Step 2)
    User->>Client: Complete Step 2
    Client->>API: POST /wizard-progress/{doc_id}
    API-->>Client: Confirm saved
    User->>Client: Finish Wizard
    Client->>API: DELETE /wizard-progress/{doc_id}
    API-->>Client: State cleared

Deleting wizard progress is permanent. Only call the DELETE endpoint when the user has fully completed the wizard or explicitly clicks a "Start Over" button.


Frequently Asked Questions

Are user preferences shared across organizations?

Yes. Endpoints under /preference and /preferences are tied to the authenticated user globally. This means their personal settings (like language or theme) persist regardless of which organization workspace they are currently viewing.

How do I know which documentation ID to use for the wizard?

The documentation_id is generated when you first initialize a documentation project. You must pass this ID along with the organization_id to track progress for that specific project.