# 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: ...