Source code for avatars.models

# This file has been generated - DO NOT MODIFY
# API Version : 2.33.0

# generated by datamodel-codegen:
#   filename:  input.json
from __future__ import annotations

from datetime import datetime
from enum import Enum
from typing import Annotated, List, Optional, Protocol, Union, runtime_checkable
from uuid import UUID

import pandas as pd
from pydantic import BaseModel, Field, RootModel


[docs] class ApiKey(BaseModel): """ Response model for an API key. """ id: Annotated[UUID, Field(title="Id")] name: Annotated[str, Field(title="Name")] created_at: Annotated[datetime, Field(title="Created At")] expires_at: Annotated[datetime, Field(title="Expires At")] revoked_at: Annotated[Optional[datetime], Field(title="Revoked At")] = None last_used_at: Annotated[Optional[datetime], Field(title="Last Used At")] = None
[docs] class ApiKeyWithPlaintext(BaseModel): """ API Key response model that includes the secret for creation. """ id: Annotated[UUID, Field(title="Id")] name: Annotated[str, Field(title="Name")] created_at: Annotated[datetime, Field(title="Created At")] expires_at: Annotated[datetime, Field(title="Expires At")] revoked_at: Annotated[Optional[datetime], Field(title="Revoked At")] = None last_used_at: Annotated[Optional[datetime], Field(title="Last Used At")] = None plaintext: Annotated[str, Field(title="Plaintext")]
[docs] class CompatibilityStatus(Enum): compatible = "compatible" incompatible = "incompatible" unknown = "unknown"
[docs] class ExpirationDays(Enum): """ Expiration preset in days (choose from 30/60/120/365) """ integer_30 = 30 integer_60 = 60 integer_120 = 120 integer_365 = 365
[docs] class CreateApiKeyRequest(BaseModel): """ Request body for creating an API key. """ name: Annotated[ str, Field( description="Human-readable label for the API key", max_length=255, min_length=1, title="Name", ), ] expiration_days: Annotated[ ExpirationDays, Field( description="Expiration preset in days (choose from 30/60/120/365)", title="Expiration Days", ), ]
[docs] class CreateApiKeyResponse(BaseModel): """ Response for API key creation. """ api_key: ApiKeyWithPlaintext message: Annotated[str, Field(title="Message")]
[docs] class CreditsInfo(BaseModel): credits: Annotated[Optional[int], Field(title="Credits")] = None is_credit_enabled: Annotated[bool, Field(title="Is Credit Enabled")]
[docs] class FeatureScope(Enum): avatar_parameters = "avatar_parameters" single_table = "single_table" multi_table = "multi_table" time_series = "time_series" report = "report" geolocalization = "geolocalization" privacy_assessment = "privacy_assessment" differential_privacy = "differential_privacy"
[docs] class FeaturesInfo(BaseModel): feature_scopes: Annotated[List[FeatureScope], Field(title="Feature Scopes")]
[docs] class FileCredentials(BaseModel): access_key_id: Annotated[str, Field(title="Access Key Id")] secret_access_key: Annotated[str, Field(title="Secret Access Key")] jwt_token: Annotated[Optional[str], Field(title="Jwt Token")] = ""
[docs] class ForgottenPasswordRequest(BaseModel): email: Annotated[str, Field(title="Email")]
[docs] class JobCreateRequest(BaseModel): set_name: Annotated[UUID, Field(title="Set Name")] parameters_name: Annotated[str, Field(title="Parameters Name")] depends_on: Annotated[Optional[List[str]], Field(title="Depends On")] = []
[docs] class JobCreateResponse(BaseModel): name: Annotated[str, Field(title="Name")] Location: Annotated[str, Field(title="Location")]
[docs] class JobKind(Enum): standard = "standard" privacy_metrics = "privacy_metrics" signal_metrics = "signal_metrics" report = "report" advice = "advice"
[docs] class JobResponse(BaseModel): name: Annotated[str, Field(title="Name")] set_name: Annotated[UUID, Field(title="Set Name")] parameters_name: Annotated[str, Field(title="Parameters Name")] created_at: Annotated[datetime, Field(title="Created At")] kind: JobKind status: Annotated[str, Field(title="Status")] exception: Annotated[str, Field(title="Exception")] done: Annotated[bool, Field(title="Done")] progress: Annotated[Optional[float], Field(title="Progress")] = None
[docs] class JobWithDisplayNameResponse(BaseModel): name: Annotated[str, Field(title="Name")] set_name: Annotated[UUID, Field(title="Set Name")] parameters_name: Annotated[str, Field(title="Parameters Name")] created_at: Annotated[datetime, Field(title="Created At")] kind: JobKind status: Annotated[str, Field(title="Status")] exception: Annotated[str, Field(title="Exception")] done: Annotated[bool, Field(title="Done")] progress: Annotated[Optional[float], Field(title="Progress")] = None display_name: Annotated[str, Field(title="Display Name")]
[docs] class LoginResponse(BaseModel): access_token: Annotated[str, Field(title="Access Token")] refresh_token: Annotated[Optional[str], Field(title="Refresh Token")] = None token_type: Annotated[str, Field(title="Token Type")]
[docs] class ResetPasswordRequest(BaseModel): email: Annotated[str, Field(title="Email")] new_password: Annotated[str, Field(title="New Password")] new_password_repeated: Annotated[str, Field(title="New Password Repeated")] token: Annotated[UUID, Field(title="Token")]
[docs] class ResourceSetResponse(BaseModel): set_name: Annotated[UUID, Field(title="Set Name")] display_name: Annotated[str, Field(title="Display Name")]
[docs] class UserRole(Enum): admin = "admin" user = "user"
[docs] class ValidationError(BaseModel): loc: Annotated[List[Union[str, int]], Field(title="Location")] msg: Annotated[str, Field(title="Message")] type: Annotated[str, Field(title="Error Type")]
[docs] class GrantType(RootModel[str]): root: Annotated[str, Field(pattern="^password$", title="Grant Type")]
[docs] class Login(BaseModel): grant_type: Annotated[Optional[GrantType], Field(title="Grant Type")] = None username: Annotated[str, Field(title="Username")] password: Annotated[str, Field(title="Password")] scope: Annotated[Optional[str], Field(title="Scope")] = "" client_id: Annotated[Optional[str], Field(title="Client Id")] = None client_secret: Annotated[Optional[str], Field(title="Client Secret")] = None
[docs] class CompatibilityResponse(BaseModel): message: Annotated[str, Field(title="Message")] most_recent_compatible_client: Annotated[ Optional[str], Field(title="Most Recent Compatible Client") ] = None status: CompatibilityStatus
[docs] class CreateUser(BaseModel): """ Create a user, either with an email, or a username. The choice will depend on how your server is setup. """ username: Annotated[Optional[str], Field(title="Username")] = None email: Annotated[Optional[str], Field(title="Email")] = None role: Optional[UserRole] = UserRole.user password: Annotated[Optional[str], Field(title="Password")] = None
[docs] class FileAccess(BaseModel): url: Annotated[str, Field(title="Url")] credentials: FileCredentials
[docs] class HTTPValidationError(BaseModel): detail: Annotated[Optional[List[ValidationError]], Field(title="Detail")] = None
[docs] class JobResponseList(BaseModel): jobs: Annotated[List[JobWithDisplayNameResponse], Field(title="Jobs")]
[docs] class User(BaseModel): id: Annotated[UUID, Field(title="Id")] organization_id: Annotated[UUID, Field(title="Organization Id")] username: Annotated[Optional[str], Field(title="Username")] = None email: Annotated[Optional[str], Field(title="Email")] = None role: Optional[UserRole] = UserRole.user
[docs] @runtime_checkable class Processor(Protocol):
[docs] def preprocess(self, df: pd.DataFrame) -> pd.DataFrame: ...
[docs] def postprocess(self, source: pd.DataFrame, dest: pd.DataFrame) -> pd.DataFrame: ...