# Update user access control (/docs/api-reference/reseller/setUserAccessControl)

> Enable or disable dashboard menu access flags for a child user. Only the flags you pass are changed. Flags outside your reseller's permissions are silently ignored.



> **Reseller accounts only.** [Request access](https://omnidim.io/contact-us?reason=partnership\&lock=1).

**POST** `/reseller/users/access-control`

Enable or disable dashboard menu access flags for a child user.
Only the flags you pass are changed. Flags outside your
reseller's permissions are silently ignored.

```yaml
operationId: setUserAccessControl
requestBody:
  required: true
  content:
    application/json:
      schema:
        type: object
        required:
          - user_id
          - dashboard_menu_access
        properties:
          user_id:
            type: integer
            description: ID of the child user to update.
          dashboard_menu_access:
            allOf:
              - type: object
                description: |
                  Reseller-managed dashboard menu access flags. Each property is
                  a boolean toggle for a feature area in the child user's
                  dashboard. On read endpoints, only flags the reseller
                  themselves has enabled are returned (so a child cannot have a
                  flag the reseller doesn't have).
                properties:
                  is_bots_menu_access:
                    type: boolean
                  is_leads_access:
                    type: boolean
                  is_voice_cloning_access:
                    type: boolean
                  is_workflow_access:
                    type: boolean
                  is_asr_evaluation_menu_access:
                    type: boolean
                  is_train_with_call_recording_menu_access:
                    type: boolean
                  is_call_logs_menu_access:
                    type: boolean
                  is_call_simulation_menu_access:
                    type: boolean
                  is_omni_crm_access:
                    type: boolean
                  access_to_monitor_live_call:
                    type: boolean
                  is_whatsapp_flow_enabled:
                    type: boolean
                  is_billing_menu_access:
                    type: boolean
                  is_knowledge_base_access:
                    type: boolean
                  is_integration_access:
                    type: boolean
                  is_phone_number_access:
                    type: boolean
                  is_bulk_call_access:
                    type: boolean
                  is_analytics_access:
                    type: boolean
            description: |
              Flags to update. Only pass the flags you want to
              change. Others are left untouched. Flags outside
              your reseller's permissions are silently dropped.
      example:
        user_id: 1234
        dashboard_menu_access:
          is_bots_menu_access: true
          is_call_logs_menu_access: true
          is_phone_number_access: false
responses:
  '200':
    description: Access control updated.
    content:
      application/json:
        schema:
          type: object
          properties:
            success:
              type: boolean
            message:
              type: string
            updated_flags:
              allOf:
                - type: object
                  description: |
                    Reseller-managed dashboard menu access flags. Each property is
                    a boolean toggle for a feature area in the child user's
                    dashboard. On read endpoints, only flags the reseller
                    themselves has enabled are returned (so a child cannot have a
                    flag the reseller doesn't have).
                  properties:
                    is_bots_menu_access:
                      type: boolean
                    is_leads_access:
                      type: boolean
                    is_voice_cloning_access:
                      type: boolean
                    is_workflow_access:
                      type: boolean
                    is_asr_evaluation_menu_access:
                      type: boolean
                    is_train_with_call_recording_menu_access:
                      type: boolean
                    is_call_logs_menu_access:
                      type: boolean
                    is_call_simulation_menu_access:
                      type: boolean
                    is_omni_crm_access:
                      type: boolean
                    access_to_monitor_live_call:
                      type: boolean
                    is_whatsapp_flow_enabled:
                      type: boolean
                    is_billing_menu_access:
                      type: boolean
                    is_knowledge_base_access:
                      type: boolean
                    is_integration_access:
                      type: boolean
                    is_phone_number_access:
                      type: boolean
                    is_bulk_call_access:
                      type: boolean
                    is_analytics_access:
                      type: boolean
              description: The flags that were actually applied (after the reseller-scope filter).
          example:
            success: true
            message: User access control updated successfully
            updated_flags:
              is_bots_menu_access: true
              is_call_logs_menu_access: true
              is_phone_number_access: false
```

**curl**

```bash
curl -X POST "https://backend.omnidim.io/api/v1/reseller/users/access-control" \
  -H "Authorization: Bearer $OMNIDIM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "user_id": 1234,
  "dashboard_menu_access": {
    "is_bots_menu_access": true,
    "is_call_logs_menu_access": true,
    "is_phone_number_access": false
  }
}'
```
