# Generated by Django 5.2.16 on 2026-07-28 14:31

import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('keys', '0005_eliminar_clave_en_claro'),
    ]

    operations = [
        migrations.AddField(
            model_name='apikeys',
            name='allowed_senders',
            field=models.JSONField(blank=True, default=list, help_text="Direcciones o dominios desde los que este cliente puede enviar correo, por ejemplo 'avisos@ejemplo.com' o 'ejemplo.com'. Si esta vacio se aplica la politica global del servicio.", verbose_name='Remitentes autorizados'),
        ),
        migrations.AddField(
            model_name='apikeys',
            name='scopes',
            field=models.JSONField(blank=True, default=list, help_text="Operaciones permitidas. Vacio no autoriza nada; '*' autoriza todo. Valores: mail:send, sms:send, whatsapp:send, messages:read, *", verbose_name='Alcances'),
        ),
        migrations.CreateModel(
            name='AccessToken',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('token_hash', models.CharField(editable=False, max_length=64, unique=True, verbose_name='Hash')),
                ('expires_at', models.DateTimeField(db_index=True, verbose_name='Caduca el')),
                ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Emitido el')),
                ('api_key', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tokens', to='keys.apikeys', verbose_name='Clave')),
            ],
            options={
                'verbose_name': 'Token de acceso',
                'verbose_name_plural': 'Tokens de acceso',
                'ordering': ('-created_at',),
            },
        ),
    ]
