<?php

return gridFilterSchema([
    'query' => [
        'limit' => ['type' => 'int', 'default' => 20, 'min' => 1, 'max' => 200],
        'offset' => ['type' => 'int', 'default' => 0, 'min' => 0],
        'search' => ['type' => 'string'],
        'status' => ['type' => 'string'],
        'method' => ['type' => 'enum', 'allowed' => ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'], 'default' => ''],
        'created_from' => ['type' => 'date'],
        'created_to' => ['type' => 'date'],
        'tenant_ids' => ['type' => 'csv_ids', 'max' => 200],
        'user_ids' => ['type' => 'csv_ids', 'max' => 200],
        'order' => ['type' => 'order', 'allowed' => ['created_at', 'status_code', 'method', 'path', 'duration_ms'], 'default' => 'created_at'],
        'dir' => ['type' => 'dir', 'default' => 'desc'],
    ],
    'toolbar' => [
        [
            'key' => 'search',
            'type' => 'text',
            'label' => 'Search',
            'placeholder' => 'Search...',
            'input_id' => 'api-audit-search',
            'search' => true,
            'query' => ['type' => 'string'],
        ],
        [
            'key' => 'status',
            'type' => 'select',
            'label' => 'Status',
            'input_id' => 'api-audit-status-filter',
            'default' => '',
            'allowed' => [
                ['id' => '', 'description' => 'All statuses'],
                ['id' => '2xx', 'description' => '2xx', 'translate' => false],
                ['id' => '4xx', 'description' => '4xx', 'translate' => false],
                ['id' => '5xx', 'description' => '5xx', 'translate' => false],
                ['id' => '401', 'description' => '401', 'translate' => false],
                ['id' => '403', 'description' => '403', 'translate' => false],
                ['id' => '404', 'description' => '404', 'translate' => false],
                ['id' => '422', 'description' => '422', 'translate' => false],
                ['id' => '500', 'description' => '500', 'translate' => false],
            ],
        ],
        [
            'key' => 'method',
            'type' => 'select',
            'label' => 'Method',
            'input_id' => 'api-audit-method-filter',
            'default' => '',
            'allowed' => [
                ['id' => '', 'description' => 'All methods'],
                ['id' => 'GET', 'description' => 'GET', 'translate' => false],
                ['id' => 'POST', 'description' => 'POST', 'translate' => false],
                ['id' => 'PUT', 'description' => 'PUT', 'translate' => false],
                ['id' => 'PATCH', 'description' => 'PATCH', 'translate' => false],
                ['id' => 'DELETE', 'description' => 'DELETE', 'translate' => false],
            ],
        ],
        [
            'key' => 'created_from',
            'type' => 'date',
            'label' => 'Created from',
            'input_id' => 'api-audit-created-from',
        ],
        [
            'key' => 'created_to',
            'type' => 'date',
            'label' => 'Created to',
            'input_id' => 'api-audit-created-to',
        ],
        [
            'key' => 'tenant_ids',
            'type' => 'multi_csv',
            'label' => 'Tenants',
            'placeholder' => 'Select tenants',
            'input_id' => 'api-audit-tenant-ids-filter',
            'options_key' => 'tenant_items',
            'default' => [],
            'query' => ['type' => 'csv_ids', 'max' => 200, 'return' => 'array'],
        ],
        [
            'key' => 'user_ids',
            'type' => 'multi_csv',
            'label' => 'Users',
            'placeholder' => 'Select users',
            'input_id' => 'api-audit-user-ids-filter',
            'options_key' => 'user_items',
            'default' => [],
            'query' => ['type' => 'csv_ids', 'max' => 200, 'return' => 'array'],
        ],
    ],
]);
