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

# Edit a council user

> Partial update of a user's profile, role, or password. Only
supplied fields are modified.

`council_power_user` cannot edit users with protected roles
(`administrator`, `power_user`, `service_account`,
`admin_service_account`, `council_admin`).

Requires `edit_users` capability.




## OpenAPI

````yaml /openapi/private/specs/wp/wp-ajax-misc.yml post /wp-admin/admin-ajax.php?action=sagescreen_edit_council_user
openapi: 3.1.0
info:
  title: SageScreen — Misc AJAX Modules (User · Council · Billing · Splash · Demo)
  version: 1.0.0
servers:
  - url: https://{domain}/wp-json/sagescreen/v1
    description: WordPress REST API
    variables:
      domain:
        default: api.sagescreen.app
security: []
tags:
  - name: User – REST
    description: Zapier-facing REST endpoints
  - name: User – AJAX
    description: Council user management AJAX endpoints
  - name: User – Profile
    description: Self-service profile updates
  - name: Council – REST
    description: Zapier-facing REST endpoints for council data sync
  - name: Council – AJAX
    description: Council user and sage management AJAX endpoints
  - name: Billing – Stripe
    description: Stripe webhook and subscription endpoints
  - name: Billing – Broadcast
    description: Postmark broadcast unsubscribe endpoint
  - name: Billing – Pipedrive
    description: Pipedrive CRM ID set-* webhook endpoints (called by Zapier)
  - name: Billing – AJAX
    description: Credit ledger, reactivation, and portal AJAX endpoints
  - name: Splash
    description: Splash banner AJAX endpoints
  - name: Demo
    description: Demo signup and management AJAX endpoints
  - name: CSV Upload
    description: Bulk candidate CSV upload
paths:
  /wp-admin/admin-ajax.php?action=sagescreen_edit_council_user:
    post:
      tags:
        - User – AJAX
      summary: Edit a council user
      description: |
        Partial update of a user's profile, role, or password. Only
        supplied fields are modified.

        `council_power_user` cannot edit users with protected roles
        (`administrator`, `power_user`, `service_account`,
        `admin_service_account`, `council_admin`).

        Requires `edit_users` capability.
      operationId: ajaxEditCouncilUser
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/EditCouncilUserRequest'
      responses:
        '200':
          description: Edit result
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/EditUserSuccess'
                  - $ref: '#/components/schemas/AjaxErrorResponse'
              examples:
                updated:
                  summary: User updated
                  value:
                    success: true
                    message: User updated successfully
                    data:
                      user_id: 123
                      updated: true
                updatedWithReset:
                  summary: Updated + password reset sent
                  value:
                    success: true
                    message: User updated successfully. Password reset email sent.
                    data:
                      user_id: 123
                      updated: true
                      password_reset: true
                notFound:
                  summary: User not found
                  value:
                    success: false
                    message: User not found
                noPermission:
                  summary: Cannot edit protected role
                  value:
                    success: false
                    message: You do not have permission to edit this user.
                emailTaken:
                  summary: Email in use
                  value:
                    success: false
                    message: Email already in use by another user
      security:
        - wpAjaxNonce: []
components:
  schemas:
    EditCouncilUserRequest:
      type: object
      required:
        - action
        - nonce
        - user_id
      properties:
        action:
          type: string
          const: sagescreen_edit_council_user
        nonce:
          type: string
          description: WP nonce for `sagescreen_ajax_nonce` or `sagescreen_frontend_nonce`
        user_id:
          type: integer
          description: WordPress user ID to edit
          examples:
            - 123
        first_name:
          type: string
          examples:
            - John
        last_name:
          type: string
          examples:
            - Doe
        email:
          type: string
          format: email
          examples:
            - john@example.com
        phone:
          type: string
          examples:
            - '+15551234567'
        linkedin:
          type: string
          format: uri
          examples:
            - https://linkedin.com/in/johndoe
        whatsapp:
          type: string
          examples:
            - '+15551234567'
        display_name:
          type: string
          examples:
            - John Doe
        role:
          type: string
          description: New role (must pass sage_screen_is_council_role validation)
          examples:
            - council_power_user
        reset_password:
          type: boolean
          description: If true, sends password reset email after update
          examples:
            - false
    EditUserSuccess:
      type: object
      properties:
        success:
          type: boolean
          const: true
        message:
          type: string
          examples:
            - User updated successfully
        data:
          type: object
          required:
            - user_id
            - updated
          properties:
            user_id:
              type: integer
              examples:
                - 123
            updated:
              type: boolean
              const: true
            password_reset:
              type: boolean
              description: Present and true when a password reset email was sent
              examples:
                - true
    AjaxErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          const: false
        message:
          type: string
          examples:
            - All fields are required
  securitySchemes:
    wpAjaxNonce:
      type: apiKey
      in: query
      name: nonce
      description: WordPress AJAX nonce (passed as form field, verified per-action)

````