An admin can now queue up an email address in advance (POST/GET/DELETE /system/pending-provisioning) with a source user and an optional admin flag. The moment that email actually verifies a real account - not raw registration, which proves nothing about ownership - it gets a deep copy of the source user's per-user API keys and every company they own (company profile, aliases, competitors, monitor config, sources, source documents, monitoring runs, reports, snapshots, detected changes, and enrichment - not just the company row), plus an email notification destination for its own address linked to the copied companies. The clone logic (_copy_row/_clone_company in provisioning_service.py) is generic over every table it touches via column introspection, so it doesn't need hand-maintained field lists per model. Co-Authored-By: Claude Sonnet 5 <[email protected]>
21 lines
402 B
Python
21 lines
402 B
Python
from __future__ import annotations
|
|
|
|
import uuid
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, EmailStr
|
|
|
|
|
|
class PendingProvisioningCreate(BaseModel):
|
|
email: EmailStr
|
|
source_user_id: uuid.UUID
|
|
make_admin: bool = False
|
|
|
|
|
|
class PendingProvisioningResponse(BaseModel):
|
|
id: uuid.UUID
|
|
email: str
|
|
source_user_id: uuid.UUID
|
|
make_admin: bool
|
|
created_at: datetime
|