> ## Documentation Index
> Fetch the complete documentation index at: https://docs.onefirewall.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Profile

> Updates the user's profile and syncs the new display name across every organization they belong to. The display name is composed from `givenName` and `surname`; there is no `name` field in the request. Omitted optional fields are reset to their empty value rather than left unchanged, so send the complete profile on every call.




## OpenAPI

````yaml PUT /auth/settings-profile
openapi: 3.0.0
info:
  title: ClosedVPN API
  version: 1.1.0
  description: >
    API for managing authentication, organizations, members, VPN configurations,

    certificates and usage reporting for the ClosedVPN platform.


    The VPN capability previously delivered through the OneFirewall Application

    (`https://app.onefirewall.com/api/v1/vpn`) now runs on ClosedVPN and is
    served

    from `https://closedvpn.io`. The legacy OneFirewall VPN endpoints are
    deprecated

    and replaced by the operations documented here.


    Most endpoints require a Personal Access Token (PAT), sent as

    `Authorization: Bearer <pat>`. To obtain one, sign in through the magic link

    flow (`/auth/send-magic-link` then `/auth/verify-magic-link`, neither of
    which

    requires prior authentication) and then call `/auth/generate-pat`, or create
    the

    token from the Profile page in the web application. The plaintext token is
    shown

    only once and is stored as a bcrypt hash, so it cannot be recovered later.
  contact:
    name: OneFirewall Alliance
    url: https://closedvpn.io
    email: support@onefirewall.com
servers:
  - url: https://closedvpn.io
    description: Production server
security: []
tags:
  - name: Authentication
    description: Magic link sign-in, session validation and sign-out.
  - name: Profile
    description: Read and update the authenticated user's profile.
  - name: Personal Access Tokens
    description: Create, list and revoke Personal Access Tokens used for API access.
  - name: Organizations
    description: Create, update, list, select and delete organizations.
  - name: Members
    description: Add members to an organization, change their role and remove them.
  - name: VPN Certificates
    description: Issue and download the OpenVPN client profile for a member.
  - name: VPN Configurations
    description: Manage VPN server configurations and run their predefined commands.
  - name: VPN Exit Nodes
    description: List the VPN exit nodes available to the caller.
  - name: Statistics
    description: Connection status, traffic reporting and threat prevention metrics.
  - name: Notifications
    description: Read in-app notifications and mark them as read.
  - name: Activity Logs
    description: Retrieve the caller's recent activity.
paths:
  /auth/settings-profile:
    put:
      tags:
        - Profile
      summary: Update user profile
      description: >
        Updates the user's profile and syncs the new display name across every
        organization they belong to. The display name is composed from
        `givenName` and `surname`; there is no `name` field in the request.
        Omitted optional fields are reset to their empty value rather than left
        unchanged, so send the complete profile on every call.
      operationId: updateProfile
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                givenName:
                  type: string
                  description: Must not be empty or whitespace only
                  example: John
                surname:
                  type: string
                  example: Doe
                phoneNumber:
                  type: string
                  example: '+441234567890'
                companyName:
                  type: string
                  example: Acme Ltd
                receiveNotifications:
                  type: boolean
                  example: true
                receivePromotional:
                  type: boolean
                  example: false
              required:
                - givenName
      responses:
        '200':
          description: Profile updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  name:
                    type: string
                    example: John Doe
                  email:
                    type: string
                    format: email
                    example: john@example.com
                  avatar:
                    type: string
                    example: JD
                  givenName:
                    type: string
                    example: John
                  surname:
                    type: string
                    example: Doe
                  phoneNumber:
                    type: string
                    example: '+441234567890'
                  companyName:
                    type: string
                    example: Acme Ltd
                  receiveNotifications:
                    type: boolean
                    example: true
                  receivePromotional:
                    type: boolean
                    example: false
        '400':
          description: Missing or invalid name
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: Name cannot be empty
        '401':
          description: Unauthorized (invalid or missing PAT)
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: Unauthorized
        '404':
          description: User not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: User not found
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: Server error
                  error:
                    type: string
                    example: Detailed error message
      security:
        - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: PAT
      description: >
        Personal Access Token (PAT) passed in the Authorization header (e.g.,
        `Bearer <pat>`) for authenticated API requests. PATs are generated via
        `/auth/generate-pat` after authenticating through the magic link flow.

````