PostHog users API

The users API from PostHog — 22 operation(s) for users.

Operations 28

GET /api/users/ #
GET /api/users/{user_id}/signal_autonomy/ #
POST /api/users/{user_id}/signal_autonomy/ #
DELETE /api/users/{user_id}/signal_autonomy/ #
GET /api/users/{uuid}/ #
PUT /api/users/{uuid}/ #
PATCH /api/users/{uuid}/ #
DELETE /api/users/{uuid}/ #
GET /api/users/{uuid}/github_login/ #
GET /api/users/{uuid}/hedgehog_config/ #
PATCH /api/users/{uuid}/hedgehog_config/ #
GET /api/users/{uuid}/integrations/ List personal GitHub integrations #
DELETE /api/users/{uuid}/integrations/github/{installation_id}/ Disconnect a personal GitHub integration #
GET /api/users/{uuid}/integrations/github/{installation_id}/branches/ List branches for a personal GitHub installation repository #
GET /api/users/{uuid}/integrations/github/{installation_id}/repos/ List repositories for a personal GitHub installation #
POST /api/users/{uuid}/integrations/github/{installation_id}/repos/refresh/ Refresh repositories for a personal GitHub installation #
POST /api/users/{uuid}/integrations/github/start/ Start GitHub personal integration linking #
POST /api/users/{uuid}/scene_personalisation/ #
GET /api/users/{uuid}/start_2fa_setup/ #
POST /api/users/{uuid}/two_factor_backup_codes/ #
POST /api/users/{uuid}/two_factor_disable/ #
GET /api/users/{uuid}/two_factor_start_setup/ #
GET /api/users/{uuid}/two_factor_status/ #
POST /api/users/{uuid}/two_factor_validate/ #
POST /api/users/{uuid}/validate_2fa/ #
PATCH /api/users/cancel_email_change_request/ #
POST /api/users/request_email_verification/ #
POST /api/users/verify_email/ #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/posthog-users-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

posthog-users-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: PostHog actions Users API
  version: 1.0.0
  description: ''
servers:
- url: https://app.posthog.com/api
  description: Base URL declared by the provider in apis.yml (roadmap#122).
tags:
- name: users
paths:
  /api/users/:
    get:
      operationId: users_list
      parameters:
      - in: query
        name: email
        schema:
          type: string
      - in: query
        name: is_staff
        schema:
          type: boolean
      - name: limit
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - name: offset
        required: false
        in: query
        description: The initial index from which to return the results.
        schema:
          type: integer
      tags:
      - users
      security:
      - PersonalAPIKeyAuth:
        - user:read
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedUserList'
          description: ''
      x-explicit-tags:
      - core
  /api/users/{user_id}/signal_autonomy/:
    get:
      operationId: users_signal_autonomy_retrieve
      description: 'Per-user signal autonomy config (singleton keyed by user).


        GET    /api/users/<id>/signal_autonomy/ → current config (or 404)

        POST   /api/users/<id>/signal_autonomy/ → create or update

        DELETE /api/users/<id>/signal_autonomy/ → remove (opt out)'
      parameters:
      - in: path
        name: user_id
        schema:
          type: string
        required: true
      tags:
      - users
      security:
      - PersonalAPIKeyAuth:
        - user:write
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SignalUserAutonomyConfig'
          description: ''
      x-explicit-tags:
      - users
      - signals
    post:
      operationId: users_signal_autonomy_create
      description: 'Per-user signal autonomy config (singleton keyed by user).


        GET    /api/users/<id>/signal_autonomy/ → current config (or 404)

        POST   /api/users/<id>/signal_autonomy/ → create or update

        DELETE /api/users/<id>/signal_autonomy/ → remove (opt out)'
      parameters:
      - in: path
        name: user_id
        schema:
          type: string
        required: true
      tags:
      - users
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SignalUserAutonomyConfig'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/SignalUserAutonomyConfig'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SignalUserAutonomyConfig'
      security:
      - PersonalAPIKeyAuth:
        - user:write
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SignalUserAutonomyConfig'
          description: ''
      x-explicit-tags:
      - users
      - signals
    delete:
      operationId: users_signal_autonomy_destroy
      description: 'Per-user signal autonomy config (singleton keyed by user).


        GET    /api/users/<id>/signal_autonomy/ → current config (or 404)

        POST   /api/users/<id>/signal_autonomy/ → create or update

        DELETE /api/users/<id>/signal_autonomy/ → remove (opt out)'
      parameters:
      - in: path
        name: user_id
        schema:
          type: string
        required: true
      tags:
      - users
      security:
      - PersonalAPIKeyAuth:
        - user:write
      responses:
        '204':
          description: No response body
      x-explicit-tags:
      - users
      - signals
  /api/users/{uuid}/:
    get:
      operationId: users_retrieve
      description: Retrieve a user's profile and settings. Pass `@me` as the UUID to fetch the authenticated user; non-staff callers may only access their own account.
      parameters:
      - in: path
        name: uuid
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - users
      security:
      - PersonalAPIKeyAuth:
        - user:read
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
          description: ''
      x-explicit-tags:
      - core
    put:
      operationId: users_update
      description: Replace the authenticated user's profile and settings. Pass `@me` as the UUID to update the authenticated user. Prefer the PATCH endpoint for partial updates — PUT requires every writable field to be provided.
      parameters:
      - in: path
        name: uuid
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - users
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/User'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/User'
        required: true
      security:
      - PersonalAPIKeyAuth:
        - user:write
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
          description: ''
      x-explicit-tags:
      - core
    patch:
      operationId: users_partial_update
      description: Update one or more of the authenticated user's profile fields or settings.
      parameters:
      - in: path
        name: uuid
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - users
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedUser'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedUser'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedUser'
      security:
      - PersonalAPIKeyAuth:
        - user:write
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
          description: ''
      x-explicit-tags:
      - core
    delete:
      operationId: users_destroy
      parameters:
      - in: path
        name: uuid
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - users
      responses:
        '204':
          description: No response body
      x-explicit-tags:
      - core
  /api/users/{uuid}/github_login/:
    get:
      operationId: users_github_login_retrieve
      parameters:
      - in: path
        name: uuid
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - users
      security:
      - PersonalAPIKeyAuth:
        - user:read
      responses:
        '200':
          description: No response body
      x-explicit-tags:
      - core
  /api/users/{uuid}/hedgehog_config/:
    get:
      operationId: users_hedgehog_config_retrieve
      parameters:
      - in: path
        name: uuid
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - users
      security:
      - PersonalAPIKeyAuth:
        - user:read
      responses:
        '200':
          description: No response body
      x-explicit-tags:
      - core
    patch:
      operationId: users_hedgehog_config_partial_update
      parameters:
      - in: path
        name: uuid
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - users
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedUser'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedUser'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedUser'
      security:
      - PersonalAPIKeyAuth:
        - user:write
      responses:
        '200':
          description: No response body
      x-explicit-tags:
      - core
  /api/users/{uuid}/integrations/:
    get:
      operationId: users_integrations_list
      description: '`/api/users/@me/integrations/` — manage the user''s personal GitHub integrations.'
      summary: List personal GitHub integrations
      parameters:
      - name: limit
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - name: offset
        required: false
        in: query
        description: The initial index from which to return the results.
        schema:
          type: integer
      - in: path
        name: uuid
        schema:
          type: string
        required: true
      tags:
      - users
      security:
      - PersonalAPIKeyAuth:
        - user:read
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedUserGitHubIntegrationListResponseList'
          description: ''
      x-explicit-tags:
      - core
  /api/users/{uuid}/integrations/github/{installation_id}/:
    delete:
      operationId: users_integrations_github_destroy
      description: Remove a specific GitHub installation by its installation_id.
      summary: Disconnect a personal GitHub integration
      parameters:
      - in: path
        name: installation_id
        schema:
          type: string
          pattern: ^\d+$
        required: true
      - in: path
        name: uuid
        schema:
          type: string
        required: true
      tags:
      - users
      security:
      - PersonalAPIKeyAuth:
        - user:write
      responses:
        '204':
          description: Integration removed.
      x-explicit-tags:
      - core
  /api/users/{uuid}/integrations/github/{installation_id}/branches/:
    get:
      operationId: users_integrations_github_branches_retrieve
      description: List branches for a repository accessible to a personal GitHub installation.
      summary: List branches for a personal GitHub installation repository
      parameters:
      - in: path
        name: installation_id
        schema:
          type: string
          pattern: ^\d+$
        required: true
      - in: query
        name: limit
        schema:
          type: integer
          maximum: 1000
          minimum: 1
          default: 100
        description: Maximum number of branches to return
      - in: query
        name: offset
        schema:
          type: integer
          minimum: 0
          default: 0
        description: Number of branches to skip
      - in: query
        name: repo
        schema:
          type: string
          minLength: 1
        description: Repository in owner/repo format
        required: true
      - in: query
        name: search
        schema:
          type: string
          default: ''
        description: Optional case-insensitive branch name search query.
      - in: path
        name: uuid
        schema:
          type: string
        required: true
      tags:
      - users
      security:
      - PersonalAPIKeyAuth:
        - user:read
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitHubBranchesResponse'
          description: ''
      x-explicit-tags:
      - core
  /api/users/{uuid}/integrations/github/{installation_id}/repos/:
    get:
      operationId: users_integrations_github_repos_retrieve
      description: List repositories accessible to a specific GitHub installation (paginated, cached).
      summary: List repositories for a personal GitHub installation
      parameters:
      - in: path
        name: installation_id
        schema:
          type: string
          pattern: ^\d+$
        required: true
      - in: query
        name: limit
        schema:
          type: integer
          maximum: 500
          minimum: 1
          default: 100
        description: Maximum number of repositories to return per request (max 500).
      - in: query
        name: offset
        schema:
          type: integer
          minimum: 0
          default: 0
        description: Number of repositories to skip before returning results.
      - in: query
        name: search
        schema:
          type: string
          default: ''
        description: Optional case-insensitive repository name search query.
      - in: path
        name: uuid
        schema:
          type: string
        required: true
      tags:
      - users
      security:
      - PersonalAPIKeyAuth:
        - user:read
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitHubReposResponse'
          description: ''
      x-explicit-tags:
      - core
  /api/users/{uuid}/integrations/github/{installation_id}/repos/refresh/:
    post:
      operationId: users_integrations_github_repos_refresh_create
      description: Refresh repositories accessible to a specific GitHub installation.
      summary: Refresh repositories for a personal GitHub installation
      parameters:
      - in: path
        name: installation_id
        schema:
          type: string
          pattern: ^\d+$
        required: true
      - in: path
        name: uuid
        schema:
          type: string
        required: true
      tags:
      - users
      security:
      - PersonalAPIKeyAuth:
        - user:write
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GitHubReposRefreshResponse'
          description: ''
      x-explicit-tags:
      - core
  /api/users/{uuid}/integrations/github/start/:
    post:
      operationId: users_integrations_github_start_create
      description: 'Start GitHub linking: either full App install or OAuth-only (user-to-server).


        ``**_kwargs`` absorbs ``parent_lookup_uuid`` from the nested

        ``/api/users/{uuid}/integrations/`` router (same pattern as ``local_evaluation``

        under projects).


        Usually returns ``install_url`` pointing at ``/installations/new`` so the

        user can pick any GitHub org (new or already connected).  GitHub''s install

        page handles both cases: orgs where the app is installed show "Configure"

        (no admin needed), orgs where it isn''t show "Install" (needs admin).


        **PostHog Code fast path:** when ``connect_from`` is ``"posthog_code"``,

        the current project already has a team-level GitHub installation, and the

        user has no ``UserIntegration`` for that installation yet, we skip the org

        picker and redirect straight to ``/login/oauth/authorize`` so the user

        only authorizes themselves and returns to PostHog Code immediately.


        In both cases the response key is ``install_url`` for compatibility with callers.'
      summary: Start GitHub personal integration linking
      parameters:
      - in: path
        name: uuid
        schema:
          type: string
        required: true
      tags:
      - users
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserGitHubLinkStartRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/UserGitHubLinkStartRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/UserGitHubLinkStartRequest'
      security:
      - PersonalAPIKeyAuth:
        - user:write
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserGitHubLinkStartResponse'
          description: ''
      x-explicit-tags:
      - core
  /api/users/{uuid}/scene_personalisation/:
    post:
      operationId: users_scene_personalisation_create
      parameters:
      - in: path
        name: uuid
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - users
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/User'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/User'
        required: true
      responses:
        '200':
          description: No response body
      x-explicit-tags:
      - core
  /api/users/{uuid}/start_2fa_setup/:
    get:
      operationId: users_start_2fa_setup_retrieve
      parameters:
      - in: path
        name: uuid
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - users
      responses:
        '200':
          description: No response body
      x-explicit-tags:
      - core
  /api/users/{uuid}/two_factor_backup_codes/:
    post:
      operationId: users_two_factor_backup_codes_create
      description: Generate new backup codes, invalidating any existing ones
      parameters:
      - in: path
        name: uuid
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - users
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/User'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/User'
        required: true
      responses:
        '200':
          description: No response body
      x-explicit-tags:
      - core
  /api/users/{uuid}/two_factor_disable/:
    post:
      operationId: users_two_factor_disable_create
      description: Disable 2FA and remove all related devices
      parameters:
      - in: path
        name: uuid
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - users
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/User'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/User'
        required: true
      responses:
        '200':
          description: No response body
      x-explicit-tags:
      - core
  /api/users/{uuid}/two_factor_start_setup/:
    get:
      operationId: users_two_factor_start_setup_retrieve
      parameters:
      - in: path
        name: uuid
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - users
      responses:
        '200':
          description: No response body
      x-explicit-tags:
      - core
  /api/users/{uuid}/two_factor_status/:
    get:
      operationId: users_two_factor_status_retrieve
      description: Get current 2FA status including backup codes if enabled
      parameters:
      - in: path
        name: uuid
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - users
      responses:
        '200':
          description: No response body
      x-explicit-tags:
      - core
  /api/users/{uuid}/two_factor_validate/:
    post:
      operationId: users_two_factor_validate_create
      parameters:
      - in: path
        name: uuid
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - users
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/User'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/User'
        required: true
      responses:
        '200':
          description: No response body
      x-explicit-tags:
      - core
  /api/users/{uuid}/validate_2fa/:
    post:
      operationId: users_validate_2fa_create
      parameters:
      - in: path
        name: uuid
        schema:
          type: string
          format: uuid
        required: true
      tags:
      - users
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/User'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/User'
        required: true
      responses:
        '200':
          description: No response body
      x-explicit-tags:
      - core
  /api/users/cancel_email_change_request/:
    patch:
      operationId: users_cancel_email_change_request_partial_update
      tags:
      - users
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedUser'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedUser'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedUser'
      responses:
        '200':
          description: No response body
      x-explicit-tags:
      - core
  /api/users/request_email_verification/:
    post:
      operationId: users_request_email_verification_create
      tags:
      - users
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/User'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/User'
        required: true
      security:
      - {}
      responses:
        '200':
          description: No response body
      x-explicit-tags:
      - core
  /api/users/verify_email/:
    post:
      operationId: users_verify_email_create
      tags:
      - users
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/User'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/User'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/User'
        required: true
      security:
      - {}
      responses:
        '200':
          description: No response body
      x-explicit-tags:
      - core
components:
  schemas:
    NullEnum:
      enum:
      - null
    AutostartPriorityEnum:
      enum:
      - P0
      - P1
      - P2
      - P3
      - P4
      type: string
      description: '* `P0` - P0

        * `P1` - P1

        * `P2` - P2

        * `P3` - P3

        * `P4` - P4'
    ShortcutPositionEnum:
      enum:
      - above
      - below
      - hidden
      type: string
      description: '* `above` - Above

        * `below` - Below

        * `hidden` - Hidden'
    PaginatedUserList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type:
          - string
          - 'null'
          format: uri
          example: http://api.example.org/accounts/?offset=400&limit=100
        previous:
          type:
          - string
          - 'null'
          format: uri
          example: http://api.example.org/accounts/?offset=200&limit=100
        results:
          type: array
          items:
            $ref: '#/components/schemas/User'
    PatchedUser:
      type: object
      properties:
        date_joined:
          type: string
          format: date-time
          readOnly: true
        uuid:
          type: string
          format: uuid
          readOnly: true
        distinct_id:
          type:
          - string
          - 'null'
          readOnly: true
        first_name:
          type: string
          maxLength: 150
        last_name:
          type: string
          maxLength: 150
        email:
          type: string
          format: email
          title: Email address
          maxLength: 254
        pending_email:
          type:
          - string
          - 'null'
          format: email
          readOnly: true
          title: Pending email address awaiting verification
        is_email_verified:
          type:
          - boolean
          - 'null'
          readOnly: true
        notification_settings:
          type: object
          additionalProperties: true
          description: Map of notification preferences. Keys include `plugin_disabled`, `all_weekly_report_disabled`, `project_weekly_digest_disabled`, `error_tracking_weekly_digest_project_enabled`, `web_analytics_weekly_digest_project_enabled`, `organization_member_join_email_disabled`, `data_pipeline_error_threshold` (number between 0.0 and 1.0), and other per-topic switches. Values are either booleans, or (for per-project/per-resource keys) a map of IDs to booleans. Only the keys you send are updated — other preferences stay as-is.
        anonymize_data:
          type:
          - boolean
          - 'null'
          description: Whether PostHog should anonymize events captured for this user when identified.
        allow_impersonation:
          type:
          - boolean
          - 'null'
        toolbar_mode:
          oneOf:
          - $ref: '#/components/schemas/ToolbarModeEnum'
          - $ref: '#/components/schemas/BlankEnum'
          - $ref: '#/components/schemas/NullEnum'
        has_password:
          type: boolean
          readOnly: true
        id:
          type: integer
          readOnly: true
        is_staff:
          type: boolean
          title: Staff status
          description: Designates whether the user can log into this admin site.
        is_impersonated:
          type:
          - boolean
          - 'null'
          readOnly: true
        is_impersonated_until:
          type:
          - string
          - 'null'
          readOnly: true
        is_impersonated_read_only:
          type:
          - boolean
          - 'null'
          readOnly: true
        sensitive_session_expires_at:
          type:
          - string
          - 'null'
          readOnly: true
        team:
          allOf:
          - $ref: '#/components/schemas/TeamBasic'
          readOnly: true
        organization:
          allOf:
          - $ref: '#/components/schemas/Organization'
          readOnly: true
        organizations:
          type: array
          items:
            $ref: '#/components/schemas/OrganizationBasic'
          readOnly: true
        set_current_organization:
          type: string
          writeOnly: true
        set_current_team:
          type: string
          writeOnly: true
        password:
          type: string
          writeOnly: true
          maxLength: 128
        current_password:
          type: string
          writeOnly: true
          description: The user's current password. Required when changing `password` if the user already has a usable password set.
        events_column_config: {}
        is_2fa_enabled:
          type: boolean
          readOnly: true
        has_social_auth:
          type: boolean
          readOnly: true
        has_sso_enforcement:
          type: boolean
          readOnly: true
        has_seen_product_intro_for: {}
        scene_personalisation:
          type: array
          items:
            $ref: '#/components/schemas/ScenePersonalisationBasic'
          readOnly: true
        theme_mode:
          oneOf:
          - $ref: '#/components/schemas/ThemeModeEnum'
          - $ref: '#/components/schemas/BlankEnum'
          - $ref: '#/components/schemas/NullEnum'
        hedgehog_config: {}
        allow_sidebar_suggestions:
          type:
          - boolean
          - 'null'
        shortcut_position:
          oneOf:
          - $ref: '#/components/schemas/ShortcutPositionEnum'
          - $ref: '#/components/schemas/BlankEnum'
          - $ref: '#/components/schemas/NullEnum'
        role_at_organization:
          $ref: '#/components/schemas/RoleAtOrganizationEnum'
        passkeys_enabled_for_2fa:
          type:
          - boolean
          - 'null'
          description: Whether passkeys are enabled for 2FA authentication. Users can disable this to use only TOTP for 2FA while keeping passkeys for login.
        is_organization_first_user:
          type:
          - boolean
          - 'null'
          readOnly: true
        pending_invites:
          type: array
          items:
            $ref: '#/components/schemas/PendingInvite'
          readOnly: true
    SignalUserAutonomyConfig:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        user:
          allOf:
          - $ref: '#/components/schemas/_User'
          readOnly: true
        autostart_priority:
          oneOf:
          - $ref: '#/components/schemas/AutostartPriorityEnum'
          - $ref: '#/components/schemas/BlankEnum'
          - $ref: '#/components/schemas/NullEnum'
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
      required:
      - created_at
      - id
      - updated_at
      - user
    ToolbarModeEnum:
      enum:
      - disabled
      - toolbar
      type: string
      description: '* `disabled` - disabled

        * `toolbar` - toolbar'
    UserGitHubIntegrationItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: PostHog UserIntegration row id.
        kind:
          type: string
          description: Integration kind; always `github` for this API.
        installation_id:
          type: string
          description: GitHub App installation id.
        repository_selection:
          type:
          - string
          - 'null'
          description: Repository selection mode from GitHub (e.g. selected or all).
        account:
          allOf:
          - $ref: '#/components/schemas/UserGitHubAccount'
          description: Installation account metadata from GitHub.
        uses_shared_installation:
          type: boolean
          description: True when this installation id matches a team-level GitHub integration on the active project.
        created_at:
          type: string
          format: date-time
          description: When this integration row was created.
      required:
      - created_at
      - id
      - installation_id
      - kind
      - uses_shared_installation
    GitHubRepo:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        full_name:
          type: string
      required:
      - full_name
      - id
      - name
    User:
      type: object
      properties:
        date_joined:
          type: string
          format: date-time
          readOnly: true
        uuid:
          type: string
          format: uuid
          readOnly: true
        distinct_id:
          type:
          - string
          - 'null'
          readOnly: true
        first_name:
          type: string
          maxLength: 150
        last_name:
          type: string
          maxLength: 150
        email:
          type: string
          format: email
          title: Email address
          maxLength: 254
        pending_email:
          type:
          - string
          - 'null'
          format: email
          readOnly: true
          title: Pending email address awaiting verification
        is_email_verified:
          type:
          - boolean
          - 'null'
          readOnly: true
        notification_settings:
          type: object
      

# --- truncated at 32 KB (91 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/posthog/refs/heads/main/openapi/posthog-users-api-openapi.yml