---
title: "Read User Detail"
method: GET
path: "/v1/user_detail/{user_id}"
tags: ["User Detail"]
---

# Read User Detail

`GET /v1/user_detail/{user_id}`

## Request

- Base URL: `https://api.navigatr.app` (the document declares no server; this is the origin it was published from)
- URL: `https://api.navigatr.app/v1/user_detail/{user_id}`
- Auth: OAuth 2
  - Password
  - Token URL: `/v1/token`

Get details about a user. This data will be initialised if user detail doesn't exist.

Use ID 0 to get the current user. **Only platform admins can view all users.**
Another user's `address`, `postal_address`, `latitude`, `longitude`, `city` and
`country`, and their `keycloak_id`, `credly_id`, `spydus_barcode_id`, `spydus_community_id`
and every `consent_*` field, are omitted unless the caller is that user or a platform admin.
Accepts Bearer or PAT; auth is optional (unauthenticated requests have no current user).
A new account whose email is verified on another profile, or is another profile's
primary, gets a 409 whose `code` says why (`email_verified_secondary_elsewhere`,
`keycloak_account_mismatch` or `email_unverified_primary_elsewhere`). An unverified
secondary elsewhere is not a conflict: the new account takes the address.

## Path parameters

- `user_id` integer, required

## Headers

- `X-Access-Token` string, nullable

## Response `200`

Successful Response

- union
  - UserDetail
    - `firstname` string, nullable
    - `lastname` string, nullable
    - `avatar_url` string, nullable
    - `avatar_url_2x` string, nullable
    - `avatar_url_original` string, nullable
    - `credly_id` string, nullable
    - `spydus_barcode_id` string, nullable
    - `spydus_community_id` integer, nullable
    - `bio` string, nullable
    - `ai_bio` boolean, nullable
    - `address` string, nullable
    - `onboarding_viewed` boolean, nullable
    - `consent_newsletter` string, date-time, nullable
    - `consent_marketing` string, date-time, nullable
    - `consent_system_emails` boolean, nullable
    - `consent_subscription_emails` boolean, nullable
    - `opt_out_communities` integer[], nullable
    - `opt_out_providers` integer[], nullable
    - `noindex_enabled` boolean, nullable
    - `visibility` 'Public' | 'Private': Who may see a user's human-readable public pages (profile, badge and pathway assertion). Deliberately NOT a User_Status value: a Private user is still Active, they can sign in, earn badges and be issued to exactly as before. Also independent of `noindex_enabled`, which only asks search engines not to index a page that stays publicly reachable. Enforced in crud_user_detail.can_read, so every existing "view this user" gate inherits it.
    - `miscellaneous` unknown
    - `pipedrive_person_id` integer, nullable
    - `social_handle_linkedin` string, nullable
    - `social_handle_twitter` string, nullable
    - `social_handle_facebook` string, nullable
    - `social_handle_instagram` string, nullable
    - `id` integer
    - `status` 'Active' | 'Suspended' | 'Deleted'
    - `seo_keywords` string[], nullable
    - `seo_title` string, nullable
    - `seo_description` string, nullable
    - `postal_address` Address
      - `full_address` string, nullable
      - `name` string, nullable
      - `number` string, nullable
      - `street` string, nullable
      - `postcode` string, nullable
      - `locality` string, nullable
      - `city` string, nullable
      - `district` string, nullable
      - `region` string, nullable
      - `country` string, nullable
    - `ranking` integer, nullable
    - `time_created` string, date-time
    - `time_updated` string, date-time, nullable
    - `last_seen` string, date-time, nullable
    - `first_badge_id` integer, nullable
    - `created_by_id` integer, nullable
    - `updated_by_id` integer, nullable
    - `emails` UserEmail[], nullable, required
      - `email` string, email, required
      - `is_primary` boolean, nullable
      - `is_verified` boolean, nullable
      - `verification_token_sent_at` string, date-time, nullable
      - `user_id` integer, required
    - `learning_styles` string[], nullable
    - `interests` string[], nullable
    - `latitude` number, nullable
    - `longitude` number, nullable
    - `city` string, nullable
    - `country` string, nullable
    - `keycloak_id` string, nullable
    - `consent_privacy` string, date-time, nullable
    - `consent_terms` string, date-time, nullable
    - `consent_age` string, date-time, nullable
    - `consent_supply_of_service` string, date-time, nullable
    - `role` union
      - string
      - string[]
    - `mfa_enabled` boolean, nullable
    - `communities` Community[], nullable
      - `name` string, nullable
      - `short_name` string, nullable
      - `organisation_name` string, nullable
      - `company_number` string, nullable
      - `verification_url` string, nullable
      - `type` 'City' | 'Region' | 'Local_Authority' | 'Membership_Organisation' | 'Awarding_Body' | 'Partnership' | 'Corporate' | 'Association' | 'University' | 'College' | 'Charity' | 'Other'
      - `description` string, nullable
      - `email` string, email, nullable
      - `phone` string, nullable
      - `address` string, nullable
      - `latitude` number, nullable
      - `longitude` number, nullable
      - `city` string, nullable
      - `country` string, nullable
      - `is_default` boolean, nullable
      - `external_url` string, nullable
      - `image_url` string, nullable
      - `banner_url` string, nullable
      - `image_url_2x` string, nullable
      - `banner_url_2x` string, nullable
      - `image_url_original` string, nullable
      - `banner_url_original` string, nullable
      - `featured` boolean, nullable
      - `colour` string, nullable
      - `enable_summary_emails` boolean, nullable
      - `linkedin_organisation_id` integer, nullable
      - `social_handle_linkedin` string, nullable
      - `social_handle_twitter` string, nullable
      - `social_handle_facebook` string, nullable
      - `social_handle_instagram` string, nullable
      - `consent_supply_of_service` string, date-time, nullable
      - `consent_supply_of_service_by` integer, nullable
      - `pipedrive_org_id` integer, nullable
      - `pipedrive_deal_id` integer, nullable
      - `id` integer
      - `status` 'Active' | 'Suspended' | 'Deleted'
      - `seo_keywords` string[], nullable
      - `seo_title` string, nullable
      - `seo_description` string, nullable
      - `enable_engagement_emails` boolean, nullable
      - `suspension_reason` 'Subscription_Expired' | 'Manual'
      - `ranking` integer, nullable
      - `created_by_id` integer, nullable
      - `updated_by_id` integer, nullable
      - `verified_by_id` integer, nullable
      - `verification_request_by_id` integer, nullable
      - `time_created` string, date-time
      - `time_updated` string, date-time, nullable
      - `time_verified` string, date-time, nullable
      - `time_stats_email_sent` string, date-time, nullable
      - `postal_address` Address
        - `full_address` string, nullable
        - `name` string, nullable
        - `number` string, nullable
        - `street` string, nullable
        - `postcode` string, nullable
        - `locality` string, nullable
        - `city` string, nullable
        - `district` string, nullable
        - `region` string, nullable
        - `country` string, nullable
      - `config` unknown
      - `survey_consent` string, nullable
      - `is_demo` boolean, nullable
      - `is_verified` boolean, nullable
      - `verification_text` string, nullable
      - `verification_email` string, email, nullable
      - `enable_analytics` boolean, nullable
      - `enable_members` boolean, nullable
      - `enable_library_card` boolean, nullable
      - `spydus_library_url` string, nullable
      - `referral_code` string, nullable
      - `member_visibility_default` 'Public' | 'Private': Who may see a user's human-readable public pages (profile, badge and pathway assertion). Deliberately NOT a User_Status value: a Private user is still Active, they can sign in, earn badges and be issued to exactly as before. Also independent of `noindex_enabled`, which only asks search engines not to index a page that stays publicly reachable. Enforced in crud_user_detail.can_read, so every existing "view this user" gate inherits it.
      - `url` string, nullable
    - `providers` Provider[], nullable
      - `name` string, nullable
      - `short_name` string, nullable
      - `organisation_name` string, nullable
      - `company_number` string, nullable
      - `verification_url` string, nullable
      - `type` 'Learning_Provider' | 'Training_Provider' | 'Awarding_Body' | 'Employer' | 'Local_Authority' | 'University' | 'College' | 'Charity' | 'Department' | 'Project' | 'Other'
      - `description` string, nullable
      - `email` string, email, nullable
      - `phone` string, nullable
      - `address` string, nullable
      - `latitude` number, nullable
      - `longitude` number, nullable
      - `city` string, nullable
      - `country` string, nullable
      - `external_url` string, nullable
      - `image_url` string, nullable
      - `banner_url` string, nullable
      - `image_url_2x` string, nullable
      - `banner_url_2x` string, nullable
      - `image_url_original` string, nullable
      - `banner_url_original` string, nullable
      - `source_credly_id` integer, nullable
      - `featured` boolean, nullable
      - `brand_colours` string[], nullable
      - `badge_logo_regular_url` string, nullable
      - `badge_logo_mono_url` string, nullable
      - `enable_summary_emails` boolean, nullable
      - `enable_surveys` boolean, nullable
      - `linkedin_organisation_id` integer, nullable
      - `social_handle_linkedin` string, nullable
      - `social_handle_twitter` string, nullable
      - `social_handle_facebook` string, nullable
      - `social_handle_instagram` string, nullable
      - `consent_supply_of_service` string, date-time, nullable
      - `consent_supply_of_service_by` integer, nullable
      - `pipedrive_org_id` integer, nullable
      - `pipedrive_deal_id` integer, nullable
      - `id` integer
      - `community_id` integer, nullable
      - `status` 'Active' | 'Suspended' | 'Deleted'
      - `seo_keywords` string[], nullable
      - `seo_title` string, nullable
      - `seo_description` string, nullable
      - `enable_engagement_emails` boolean, nullable
      - `suspension_reason` 'Subscription_Expired' | 'Manual'
      - `postal_address` Address
        - `full_address` string, nullable
        - `name` string, nullable
        - `number` string, nullable
        - `street` string, nullable
        - `postcode` string, nullable
        - `locality` string, nullable
        - `city` string, nullable
        - `district` string, nullable
        - `region` string, nullable
        - `country` string, nullable
      - `ranking` integer, nullable
      - `created_by_id` integer, nullable
      - `updated_by_id` integer, nullable
      - `verified_by_id` integer, nullable
      - `verification_request_by_id` integer, nullable
      - `time_created` string, date-time
      - `time_updated` string, date-time, nullable
      - `time_verified` string, date-time, nullable
      - `time_stats_email_sent` string, date-time, nullable
      - `config` unknown
      - `community` Community, required
        - `name` string, nullable
        - `short_name` string, nullable
        - `organisation_name` string, nullable
        - `company_number` string, nullable
        - `verification_url` string, nullable
        - `type` 'City' | 'Region' | 'Local_Authority' | 'Membership_Organisation' | 'Awarding_Body' | 'Partnership' | 'Corporate' | 'Association' | 'University' | 'College' | 'Charity' | 'Other'
        - `description` string, nullable
        - `email` string, email, nullable
        - `phone` string, nullable
        - `address` string, nullable
        - `latitude` number, nullable
        - `longitude` number, nullable
        - `city` string, nullable
        - `country` string, nullable
        - `is_default` boolean, nullable
        - `external_url` string, nullable
        - `image_url` string, nullable
        - `banner_url` string, nullable
        - `image_url_2x` string, nullable
        - `banner_url_2x` string, nullable
        - `image_url_original` string, nullable
        - `banner_url_original` string, nullable
        - `featured` boolean, nullable
        - `colour` string, nullable
        - `enable_summary_emails` boolean, nullable
        - `linkedin_organisation_id` integer, nullable
        - `social_handle_linkedin` string, nullable
        - `social_handle_twitter` string, nullable
        - `social_handle_facebook` string, nullable
        - `social_handle_instagram` string, nullable
        - `consent_supply_of_service` string, date-time, nullable
        - `consent_supply_of_service_by` integer, nullable
        - `pipedrive_org_id` integer, nullable
        - `pipedrive_deal_id` integer, nullable
        - `id` integer
        - `status` 'Active' | 'Suspended' | 'Deleted'
        - `seo_keywords` string[], nullable
        - `seo_title` string, nullable
        - `seo_description` string, nullable
        - `enable_engagement_emails` boolean, nullable
        - `suspension_reason` 'Subscription_Expired' | 'Manual'
        - `ranking` integer, nullable
        - `created_by_id` integer, nullable
        - `updated_by_id` integer, nullable
        - `verified_by_id` integer, nullable
        - `verification_request_by_id` integer, nullable
        - `time_created` string, date-time
        - `time_updated` string, date-time, nullable
        - `time_verified` string, date-time, nullable
        - `time_stats_email_sent` string, date-time, nullable
        - `postal_address` Address
          - `full_address` string, nullable
          - `name` string, nullable
          - `number` string, nullable
          - `street` string, nullable
          - `postcode` string, nullable
          - `locality` string, nullable
          - `city` string, nullable
          - `district` string, nullable
          - `region` string, nullable
          - `country` string, nullable
        - `config` unknown
        - `survey_consent` string, nullable
        - `is_demo` boolean, nullable
        - `is_verified` boolean, nullable
        - `verification_text` string, nullable
        - `verification_email` string, email, nullable
        - `enable_analytics` boolean, nullable
        - `enable_members` boolean, nullable
        - `enable_library_card` boolean, nullable
        - `spydus_library_url` string, nullable
        - `referral_code` string, nullable
        - `member_visibility_default` 'Public' | 'Private': Who may see a user's human-readable public pages (profile, badge and pathway assertion). Deliberately NOT a User_Status value: a Private user is still Active, they can sign in, earn badges and be issued to exactly as before. Also independent of `noindex_enabled`, which only asks search engines not to index a page that stays publicly reachable. Enforced in crud_user_detail.can_read, so every existing "view this user" gate inherits it.
        - `url` string, nullable
      - `is_verified` boolean, nullable
      - `verification_text` string, nullable
      - `verification_email` string, email, nullable
      - `is_demo` boolean, nullable
      - `open_access` boolean, nullable
      - `enable_analytics` boolean, nullable
      - `enable_members` boolean, nullable
      - `enable_badge_publish` boolean, nullable
      - `enable_badge_create` boolean, nullable
      - `enable_badge_submit` boolean, nullable
      - `enable_job_feed` boolean, nullable
      - `qa_community_id` integer, nullable
      - `member_visibility_default` 'Public' | 'Private': Who may see a user's human-readable public pages (profile, badge and pathway assertion). Deliberately NOT a User_Status value: a Private user is still Active, they can sign in, earn badges and be issued to exactly as before. Also independent of `noindex_enabled`, which only asks search engines not to index a page that stays publicly reachable. Enforced in crud_user_detail.can_read, so every existing "view this user" gate inherits it.
      - `url` string, nullable
    - `admin_communities` Community[], nullable
      - `name` string, nullable
      - `short_name` string, nullable
      - `organisation_name` string, nullable
      - `company_number` string, nullable
      - `verification_url` string, nullable
      - `type` 'City' | 'Region' | 'Local_Authority' | 'Membership_Organisation' | 'Awarding_Body' | 'Partnership' | 'Corporate' | 'Association' | 'University' | 'College' | 'Charity' | 'Other'
      - `description` string, nullable
      - `email` string, email, nullable
      - `phone` string, nullable
      - `address` string, nullable
      - `latitude` number, nullable
      - `longitude` number, nullable
      - `city` string, nullable
      - `country` string, nullable
      - `is_default` boolean, nullable
      - `external_url` string, nullable
      - `image_url` string, nullable
      - `banner_url` string, nullable
      - `image_url_2x` string, nullable
      - `banner_url_2x` string, nullable
      - `image_url_original` string, nullable
      - `banner_url_original` string, nullable
      - `featured` boolean, nullable
      - `colour` string, nullable
      - `enable_summary_emails` boolean, nullable
      - `linkedin_organisation_id` integer, nullable
      - `social_handle_linkedin` string, nullable
      - `social_handle_twitter` string, nullable
      - `social_handle_facebook` string, nullable
      - `social_handle_instagram` string, nullable
      - `consent_supply_of_service` string, date-time, nullable
      - `consent_supply_of_service_by` integer, nullable
      - `pipedrive_org_id` integer, nullable
      - `pipedrive_deal_id` integer, nullable
      - `id` integer
      - `status` 'Active' | 'Suspended' | 'Deleted'
      - `seo_keywords` string[], nullable
      - `seo_title` string, nullable
      - `seo_description` string, nullable
      - `enable_engagement_emails` boolean, nullable
      - `suspension_reason` 'Subscription_Expired' | 'Manual'
      - `ranking` integer, nullable
      - `created_by_id` integer, nullable
      - `updated_by_id` integer, nullable
      - `verified_by_id` integer, nullable
      - `verification_request_by_id` integer, nullable
      - `time_created` string, date-time
      - `time_updated` string, date-time, nullable
      - `time_verified` string, date-time, nullable
      - `time_stats_email_sent` string, date-time, nullable
      - `postal_address` Address
        - `full_address` string, nullable
        - `name` string, nullable
        - `number` string, nullable
        - `street` string, nullable
        - `postcode` string, nullable
        - `locality` string, nullable
        - `city` string, nullable
        - `district` string, nullable
        - `region` string, nullable
        - `country` string, nullable
      - `config` unknown
      - `survey_consent` string, nullable
      - `is_demo` boolean, nullable
      - `is_verified` boolean, nullable
      - `verification_text` string, nullable
      - `verification_email` string, email, nullable
      - `enable_analytics` boolean, nullable
      - `enable_members` boolean, nullable
      - `enable_library_card` boolean, nullable
      - `spydus_library_url` string, nullable
      - `referral_code` string, nullable
      - `member_visibility_default` 'Public' | 'Private': Who may see a user's human-readable public pages (profile, badge and pathway assertion). Deliberately NOT a User_Status value: a Private user is still Active, they can sign in, earn badges and be issued to exactly as before. Also independent of `noindex_enabled`, which only asks search engines not to index a page that stays publicly reachable. Enforced in crud_user_detail.can_read, so every existing "view this user" gate inherits it.
      - `url` string, nullable
    - `admin_providers` Provider[], nullable
      - `name` string, nullable
      - `short_name` string, nullable
      - `organisation_name` string, nullable
      - `company_number` string, nullable
      - `verification_url` string, nullable
      - `type` 'Learning_Provider' | 'Training_Provider' | 'Awarding_Body' | 'Employer' | 'Local_Authority' | 'University' | 'College' | 'Charity' | 'Department' | 'Project' | 'Other'
      - `description` string, nullable
      - `email` string, email, nullable
      - `phone` string, nullable
      - `address` string, nullable
      - `latitude` number, nullable
      - `longitude` number, nullable
      - `city` string, nullable
      - `country` string, nullable
      - `external_url` string, nullable
      - `image_url` string, nullable
      - `banner_url` string, nullable
      - `image_url_2x` string, nullable
      - `banner_url_2x` string, nullable
      - `image_url_original` string, nullable
      - `banner_url_original` string, nullable
      - `source_credly_id` integer, nullable
      - `featured` boolean, nullable
      - `brand_colours` string[], nullable
      - `badge_logo_regular_url` string, nullable
      - `badge_logo_mono_url` string, nullable
      - `enable_summary_emails` boolean, nullable
      - `enable_surveys` boolean, nullable
      - `linkedin_organisation_id` integer, nullable
      - `social_handle_linkedin` string, nullable
      - `social_handle_twitter` string, nullable
      - `social_handle_facebook` string, nullable
      - `social_handle_instagram` string, nullable
      - `consent_supply_of_service` string, date-time, nullable
      - `consent_supply_of_service_by` integer, nullable
      - `pipedrive_org_id` integer, nullable
      - `pipedrive_deal_id` integer, nullable
      - `id` integer
      - `community_id` integer, nullable
      - `status` 'Active' | 'Suspended' | 'Deleted'
      - `seo_keywords` string[], nullable
      - `seo_title` string, nullable
      - `seo_description` string, nullable
      - `enable_engagement_emails` boolean, nullable
      - `suspension_reason` 'Subscription_Expired' | 'Manual'
      - `postal_address` Address
        - `full_address` string, nullable
        - `name` string, nullable
        - `number` string, nullable
        - `street` string, nullable
        - `postcode` string, nullable
        - `locality` string, nullable
        - `city` string, nullable
        - `district` string, nullable
        - `region` string, nullable
        - `country` string, nullable
      - `ranking` integer, nullable
      - `created_by_id` integer, nullable
      - `updated_by_id` integer, nullable
      - `verified_by_id` integer, nullable
      - `verification_request_by_id` integer, nullable
      - `time_created` string, date-time
      - `time_updated` string, date-time, nullable
      - `time_verified` string, date-time, nullable
      - `time_stats_email_sent` string, date-time, nullable
      - `config` unknown
      - `community` Community, required
        - `name` string, nullable
        - `short_name` string, nullable
        - `organisation_name` string, nullable
        - `company_number` string, nullable
        - `verification_url` string, nullable
        - `type` 'City' | 'Region' | 'Local_Authority' | 'Membership_Organisation' | 'Awarding_Body' | 'Partnership' | 'Corporate' | 'Association' | 'University' | 'College' | 'Charity' | 'Other'
        - `description` string, nullable
        - `email` string, email, nullable
        - `phone` string, nullable
        - `address` string, nullable
        - `latitude` number, nullable
        - `longitude` number, nullable
        - `city` string, nullable
        - `country` string, nullable
        - `is_default` boolean, nullable
        - `external_url` string, nullable
        - `image_url` string, nullable
        - `banner_url` string, nullable
        - `image_url_2x` string, nullable
        - `banner_url_2x` string, nullable
        - `image_url_original` string, nullable
        - `banner_url_original` string, nullable
        - `featured` boolean, nullable
        - `colour` string, nullable
        - `enable_summary_emails` boolean, nullable
        - `linkedin_organisation_id` integer, nullable
        - `social_handle_linkedin` string, nullable
        - `social_handle_twitter` string, nullable
        - `social_handle_facebook` string, nullable
        - `social_handle_instagram` string, nullable
        - `consent_supply_of_service` string, date-time, nullable
        - `consent_supply_of_service_by` integer, nullable
        - `pipedrive_org_id` integer, nullable
        - `pipedrive_deal_id` integer, nullable
        - `id` integer
        - `status` 'Active' | 'Suspended' | 'Deleted'
        - `seo_keywords` string[], nullable
        - `seo_title` string, nullable
        - `seo_description` string, nullable
        - `enable_engagement_emails` boolean, nullable
        - `suspension_reason` 'Subscription_Expired' | 'Manual'
        - `ranking` integer, nullable
        - `created_by_id` integer, nullable
        - `updated_by_id` integer, nullable
        - `verified_by_id` integer, nullable
        - `verification_request_by_id` integer, nullable
        - `time_created` string, date-time
        - `time_updated` string, date-time, nullable
        - `time_verified` string, date-time, nullable
        - `time_stats_email_sent` string, date-time, nullable
        - `postal_address` Address
          - `full_address` string, nullable
          - `name` string, nullable
          - `number` string, nullable
          - `street` string, nullable
          - `postcode` string, nullable
          - `locality` string, nullable
          - `city` string, nullable
          - `district` string, nullable
          - `region` string, nullable
          - `country` string, nullable
        - `config` unknown
        - `survey_consent` string, nullable
        - `is_demo` boolean, nullable
        - `is_verified` boolean, nullable
        - `verification_text` string, nullable
        - `verification_email` string, email, nullable
        - `enable_analytics` boolean, nullable
        - `enable_members` boolean, nullable
        - `enable_library_card` boolean, nullable
        - `spydus_library_url` string, nullable
        - `referral_code` string, nullable
        - `member_visibility_default` 'Public' | 'Private': Who may see a user's human-readable public pages (profile, badge and pathway assertion). Deliberately NOT a User_Status value: a Private user is still Active, they can sign in, earn badges and be issued to exactly as before. Also independent of `noindex_enabled`, which only asks search engines not to index a page that stays publicly reachable. Enforced in crud_user_detail.can_read, so every existing "view this user" gate inherits it.
        - `url` string, nullable
      - `is_verified` boolean, nullable
      - `verification_text` string, nullable
      - `verification_email` string, email, nullable
      - `is_demo` boolean, nullable
      - `open_access` boolean, nullable
      - `enable_analytics` boolean, nullable
      - `enable_members` boolean, nullable
      - `enable_badge_publish` boolean, nullable
      - `enable_badge_create` boolean, nullable
      - `enable_badge_submit` boolean, nullable
      - `enable_job_feed` boolean, nullable
      - `qa_community_id` integer, nullable
      - `member_visibility_default` 'Public' | 'Private': Who may see a user's human-readable public pages (profile, badge and pathway assertion). Deliberately NOT a User_Status value: a Private user is still Active, they can sign in, earn badges and be issued to exactly as before. Also independent of `noindex_enabled`, which only asks search engines not to index a page that stays publicly reachable. Enforced in crud_user_detail.can_read, so every existing "view this user" gate inherits it.
      - `url` string, nullable
    - `analyst_communities` Community[], nullable
      - `name` string, nullable
      - `short_name` string, nullable
      - `organisation_name` string, nullable
      - `company_number` string, nullable
      - `verification_url` string, nullable
      - `type` 'City' | 'Region' | 'Local_Authority' | 'Membership_Organisation' | 'Awarding_Body' | 'Partnership' | 'Corporate' | 'Association' | 'University' | 'College' | 'Charity' | 'Other'
      - `description` string, nullable
      - `email` string, email, nullable
      - `phone` string, nullable
      - `address` string, nullable
      - `latitude` number, nullable
      - `longitude` number, nullable
      - `city` string, nullable
      - `country` string, nullable
      - `is_default` boolean, nullable
      - `external_url` string, nullable
      - `image_url` string, nullable
      - `banner_url` string, nullable
      - `image_url_2x` string, nullable
      - `banner_url_2x` string, nullable
      - `image_url_original` string, nullable
      - `banner_url_original` string, nullable
      - `featured` boolean, nullable
      - `colour` string, nullable
      - `enable_summary_emails` boolean, nullable
      - `linkedin_organisation_id` integer, nullable
      - `social_handle_linkedin` string, nullable
      - `social_handle_twitter` string, nullable
      - `social_handle_facebook` string, nullable
      - `social_handle_instagram` string, nullable
      - `consent_supply_of_service` string, date-time, nullable
      - `consent_supply_of_service_by` integer, nullable
      - `pipedrive_org_id` integer, nullable
      - `pipedrive_deal_id` integer, nullable
      - `id` integer
      - `status` 'Active' | 'Suspended' | 'Deleted'
      - `seo_keywords` string[], nullable
      - `seo_title` string, nullable
      - `seo_description` string, nullable
      - `enable_engagement_emails` boolean, nullable
      - `suspension_reason` 'Subscription_Expired' | 'Manual'
      - `ranking` integer, nullable
      - `created_by_id` integer, nullable
      - `updated_by_id` integer, nullable
      - `verified_by_id` integer, nullable
      - `verification_request_by_id` integer, nullable
      - `time_created` string, date-time
      - `time_updated` string, date-time, nullable
      - `time_verified` string, date-time, nullable
      - `time_stats_email_sent` string, date-time, nullable
      - `postal_address` Address
        - `full_address` string, nullable
        - `name` string, nullable
        - `number` string, nullable
        - `street` string, nullable
        - `postcode` string, nullable
        - `locality` string, nullable
        - `city` string, nullable
        - `district` string, nullable
        - `region` string, nullable
        - `country` string, nullable
      - `config` unknown
      - `survey_consent` string, nullable
      - `is_demo` boolean, nullable
      - `is_verified` boolean, nullable
      - `verification_text` string, nullable
      - `verification_email` string, email, nullable
      - `enable_analytics` boolean, nullable
      - `enable_members` boolean, nullable
      - `enable_library_card` boolean, nullable
      - `spydus_library_url` string, nullable
      - `referral_code` string, nullable
      - `member_visibility_default` 'Public' | 'Private': Who may see a user's human-readable public pages (profile, badge and pathway assertion). Deliberately NOT a User_Status value: a Private user is still Active, they can sign in, earn badges and be issued to exactly as before. Also independent of `noindex_enabled`, which only asks search engines not to index a page that stays publicly reachable. Enforced in crud_user_detail.can_read, so every existing "view this user" gate inherits it.
      - `url` string, nullable
    - `analyst_networks` NetworkPublic[], nullable
      - `name` string, required
      - `description` string, nullable
      - `image_url` string, nullable
      - `image_url_2x` string, nullable
      - `image_url_original` string, nullable
      - `id` integer, required
      - `status` 'Active' | 'Deleted', required
      - `time_created` string, date-time, nullable
      - `time_updated` string, date-time, nullable
    - `analyst_providers` Provider[], nullable
      - `name` string, nullable
      - `short_name` string, nullable
      - `organisation_name` string, nullable
      - `company_number` string, nullable
      - `verification_url` string, nullable
      - `type` 'Learning_Provider' | 'Training_Provider' | 'Awarding_Body' | 'Employer' | 'Local_Authority' | 'University' | 'College' | 'Charity' | 'Department' | 'Project' | 'Other'
      - `description` string, nullable
      - `email` string, email, nullable
      - `phone` string, nullable
      - `address` string, nullable
      - `latitude` number, nullable
      - `longitude` number, nullable
      - `city` string, nullable
      - `country` string, nullable
      - `external_url` string, nullable
      - `image_url` string, nullable
      - `banner_url` string, nullable
      - `image_url_2x` string, nullable
      - `banner_url_2x` string, nullable
      - `image_url_original` string, nullable
      - `banner_url_original` string, nullable
      - `source_credly_id` integer, nullable
      - `featured` boolean, nullable
      - `brand_colours` string[], nullable
      - `badge_logo_regular_url` string, nullable
      - `badge_logo_mono_url` string, nullable
      - `enable_summary_emails` boolean, nullable
      - `enable_surveys` boolean, nullable
      - `linkedin_organisation_id` integer, nullable
      - `social_handle_linkedin` string, nullable
      - `social_handle_twitter` string, nullable
      - `social_handle_facebook` string, nullable
      - `social_handle_instagram` string, nullable
      - `consent_supply_of_service` string, date-time, nullable
      - `consent_supply_of_service_by` integer, nullable
      - `pipedrive_org_id` integer, nullable
      - `pipedrive_deal_id` integer, nullable
      - `id` integer
      - `community_id` integer, nullable
      - `status` 'Active' | 'Suspended' | 'Deleted'
      - `seo_keywords` string[], nullable
      - `seo_title` string, nullable
      - `seo_description` string, nullable
      - `enable_engagement_emails` boolean, nullable
      - `suspension_reason` 'Subscription_Expired' | 'Manual'
      - `postal_address` Address
        - `full_address` string, nullable
        - `name` string, nullable
        - `number` string, nullable
        - `street` string, nullable
        - `postcode` string, nullable
        - `locality` string, nullable
        - `city` string, nullable
        - `district` string, nullable
        - `region` string, nullable
        - `country` string, nullable
      - `ranking` integer, nullable
      - `created_by_id` integer, nullable
      - `updated_by_id` integer, nullable
      - `verified_by_id` integer, nullable
      - `verification_request_by_id` integer, nullable
      - `time_created` string, date-time
      - `time_updated` string, date-time, nullable
      - `time_verified` string, date-time, nullable
      - `time_stats_email_sent` string, date-time, nullable
      - `config` unknown
      - `community` Community, required
        - `name` string, nullable
        - `short_name` string, nullable
        - `organisation_name` string, nullable
        - `company_number` string, nullable
        - `verification_url` string, nullable
        - `type` 'City' | 'Region' | 'Local_Authority' | 'Membership_Organisation' | 'Awarding_Body' | 'Partnership' | 'Corporate' | 'Association' | 'University' | 'College' | 'Charity' | 'Other'
        - `description` string, nullable
        - `email` string, email, nullable
        - `phone` string, nullable
        - `address` string, nullable
        - `latitude` number, nullable
        - `longitude` number, nullable
        - `city` string, nullable
        - `country` string, nullable
        - `is_default` boolean, nullable
        - `external_url` string, nullable
        - `image_url` string, nullable
        - `banner_url` string, nullable
        - `image_url_2x` string, nullable
        - `banner_url_2x` string, nullable
        - `image_url_original` string, nullable
        - `banner_url_original` string, nullable
        - `featured` boolean, nullable
        - `colour` string, nullable
        - `enable_summary_emails` boolean, nullable
        - `linkedin_organisation_id` integer, nullable
        - `social_handle_linkedin` string, nullable
        - `social_handle_twitter` string, nullable
        - `social_handle_facebook` string, nullable
        - `social_handle_instagram` string, nullable
        - `consent_supply_of_service` string, date-time, nullable
        - `consent_supply_of_service_by` integer, nullable
        - `pipedrive_org_id` integer, nullable
        - `pipedrive_deal_id` integer, nullable
        - `id` integer
        - `status` 'Active' | 'Suspended' | 'Deleted'
        - `seo_keywords` string[], nullable
        - `seo_title` string, nullable
        - `seo_description` string, nullable
        - `enable_engagement_emails` boolean, nullable
        - `suspension_reason` 'Subscription_Expired' | 'Manual'
        - `ranking` integer, nullable
        - `created_by_id` integer, nullable
        - `updated_by_id` integer, nullable
        - `verified_by_id` integer, nullable
        - `verification_request_by_id` integer, nullable
        - `time_created` string, date-time
        - `time_updated` string, date-time, nullable
        - `time_verified` string, date-time, nullable
        - `time_stats_email_sent` string, date-time, nullable
        - `postal_address` Address
          - `full_address` string, nullable
          - `name` string, nullable
          - `number` string, nullable
          - `street` string, nullable
          - `postcode` string, nullable
          - `locality` string, nullable
          - `city` string, nullable
          - `district` string, nullable
          - `region` string, nullable
          - `country` string, nullable
        - `config` unknown
        - `survey_consent` string, nullable
        - `is_demo` boolean, nullable
        - `is_verified` boolean, nullable
        - `verification_text` string, nullable
        - `verification_email` string, email, nullable
        - `enable_analytics` boolean, nullable
        - `enable_members` boolean, nullable
        - `enable_library_card` boolean, nullable
        - `spydus_library_url` string, nullable
        - `referral_code` string, nullable
        - `member_visibility_default` 'Public' | 'Private': Who may see a user's human-readable public pages (profile, badge and pathway assertion). Deliberately NOT a User_Status value: a Private user is still Active, they can sign in, earn badges and be issued to exactly as before. Also independent of `noindex_enabled`, which only asks search engines not to index a page that stays publicly reachable. Enforced in crud_user_detail.can_read, so every existing "view this user" gate inherits it.
        - `url` string, nullable
      - `is_verified` boolean, nullable
      - `verification_text` string, nullable
      - `verification_email` string, email, nullable
      - `is_demo` boolean, nullable
      - `open_access` boolean, nullable
      - `enable_analytics` boolean, nullable
      - `enable_members` boolean, nullable
      - `enable_badge_publish` boolean, nullable
      - `enable_badge_create` boolean, nullable
      - `enable_badge_submit` boolean, nullable
      - `enable_job_feed` boolean, nullable
      - `qa_community_id` integer, nullable
      - `member_visibility_default` 'Public' | 'Private': Who may see a user's human-readable public pages (profile, badge and pathway assertion). Deliberately NOT a User_Status value: a Private user is still Active, they can sign in, earn badges and be issued to exactly as before. Also independent of `noindex_enabled`, which only asks search engines not to index a page that stays publicly reachable. Enforced in crud_user_detail.can_read, so every existing "view this user" gate inherits it.
      - `url` string, nullable
  - UserDetailPublic
    - `id` integer
    - `firstname` string, nullable, required
    - `lastname` string, nullable, required
    - `avatar_url` string, nullable
    - `avatar_url_2x` string, nullable
    - `avatar_url_original` string, nullable
    - `interests` string[], nullable
    - `noindex_enabled` boolean, nullable
    - `visibility` 'Public' | 'Private': Who may see a user's human-readable public pages (profile, badge and pathway assertion). Deliberately NOT a User_Status value: a Private user is still Active, they can sign in, earn badges and be issued to exactly as before. Also independent of `noindex_enabled`, which only asks search engines not to index a page that stays publicly reachable. Enforced in crud_user_detail.can_read, so every existing "view this user" gate inherits it.
    - `time_created` string, date-time
    - `time_updated` string, date-time, nullable
    - `seo_keywords` string[], nullable
    - `seo_title` string, nullable
    - `seo_description` string, nullable
    - `social_handle_linkedin` string, nullable
    - `social_handle_twitter` string, nullable
    - `social_handle_facebook` string, nullable
    - `social_handle_instagram` string, nullable
  - UserDetailPrivate
    - `id` integer
    - `visibility` 'Public' | 'Private': Who may see a user's human-readable public pages (profile, badge and pathway assertion). Deliberately NOT a User_Status value: a Private user is still Active, they can sign in, earn badges and be issued to exactly as before. Also independent of `noindex_enabled`, which only asks search engines not to index a page that stays publicly reachable. Enforced in crud_user_detail.can_read, so every existing "view this user" gate inherits it.

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `405`: Method Not Allowed
- `409`: Conflict
- `410`: Gone
- `422`: Validation Error

## Changes

- **2026-11-07** `efbd3c328549`: 9 info
  - added the optional property `anyOf[subschema #1: User_Detail]/admin_communities/anyOf[subschema #1]/items/suspension_reason` to the response with the `200` status
  - added the optional property `anyOf[subschema #1: User_Detail]/admin_providers/anyOf[subschema #1]/items/community/anyOf[subschema #1: Community]/suspension_reason` to the response with the `200` status
  - added the optional property `anyOf[subschema #1: User_Detail]/admin_providers/anyOf[subschema #1]/items/suspension_reason` to the response with the `200` status
  - added the optional property `anyOf[subschema #1: User_Detail]/analyst_communities/anyOf[subschema #1]/items/suspension_reason` to the response with the `200` status
  - …5 more
- **2026-11-06** `04bf6727d360`: 3 info
  - added the optional property `anyOf[subschema #1: User_Detail]/analyst_networks/anyOf[subschema #1]/items/image_url` to the response with the `200` status
  - added the optional property `anyOf[subschema #1: User_Detail]/analyst_networks/anyOf[subschema #1]/items/image_url_2x` to the response with the `200` status
  - added the optional property `anyOf[subschema #1: User_Detail]/analyst_networks/anyOf[subschema #1]/items/image_url_original` to the response with the `200` status
- …earlier changes not shown

[Operation history](https://skmtc.dev/navigatr/apis/navigatr-api/changes/v1/user_detail/:user_id/get.md)

---

[API](https://skmtc.dev/navigatr/apis/navigatr-api.md) - [All operations](https://skmtc.dev/navigatr/apis/navigatr-api/llms.txt) - [OpenAPI document](https://skmtc.dev/navigatr/apis/navigatr-api/revisions/efbd3c328549?raw)
