# Update user access control (/docs/api-reference/reseller-clients/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=reseller_api&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:
            type: object
            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.
            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
      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:
              type: object
              description: The flags that were actually applied (after the reseller-scope filter).
              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
          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
```

**Python SDK**

```python
from omnidimension import Client
client = Client(api_key)

# Only the flags you pass change. Flags outside your own
# permissions are ignored rather than escalating.
response = client.reseller.set_access_control(
    user_id=1234,
    dashboard_menu_access={"is_bots_menu_access": True},
)
print(response)
```

**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
  }
}'
```