#34661 [Feature]: Add recurring access schedules for virtual keys
### Check for existing issues
- [x] I searched existing issues and PRs and found no recurring time-window control for virtual keys
### The Feature
Allow a virtual key to carry a recurring access schedule in its existing `permissions` JSON
```json { "permissions": { "access_schedule": { "timezone": "Europe/Berlin", "windows": [ { "days": ["mon", "tue", "wed", "thu", "fri"], "start": "09:00", "end": "18:00" } ] } } } ```
`start` is inclusive and `end` is exclusive. Overnight windows are supported. A key without a schedule keeps the current behavior. Requests outside every window return 403
### Motivation, pitch
Absolute `expires`, budgets, and rate limits do not stop an employee or contractor key from spending outside approved working hours. Proxy enforcement avoids distributing provider credentials or maintaining external key rotation jobs
### Proposed implementation
Add a shared typed recurring-schedule evaluator using `zoneinfo`. Validate `permissions.access_schedule` during key create and update, then enforce it in `user_api_key_auth` immediately after absolute-expiry validation. Invalid persiste…