70 lines
1.3 KiB
Python
70 lines
1.3 KiB
Python
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass
|
|
from datetime import datetime
|
|
from typing import Any
|
|
|
|
|
|
@dataclass(slots=True)
|
|
class Site:
|
|
id: str
|
|
site_key: str
|
|
name: str
|
|
primary_domain: str
|
|
status: str
|
|
settings: dict[str, Any] | list[Any] | None = None
|
|
|
|
|
|
@dataclass(slots=True)
|
|
class Experiment:
|
|
id: str
|
|
site_id: str
|
|
experiment_key: str
|
|
name: str
|
|
module_type: str
|
|
status: str
|
|
start_at: datetime | None = None
|
|
end_at: datetime | None = None
|
|
targeting_config: dict[str, Any] | list[Any] | None = None
|
|
|
|
|
|
@dataclass(slots=True)
|
|
class Variant:
|
|
id: str
|
|
experiment_id: str
|
|
variant_key: str
|
|
name: str
|
|
traffic_weight: int
|
|
content_config: dict[str, Any] | list[Any] | None = None
|
|
|
|
|
|
@dataclass(slots=True)
|
|
class ExperimentRelease:
|
|
id: str
|
|
experiment_id: str
|
|
version_no: int
|
|
status: str
|
|
runtime_payload: dict[str, Any] | list[Any] | None = None
|
|
|
|
|
|
@dataclass(slots=True)
|
|
class Goal:
|
|
id: str
|
|
site_id: str
|
|
goal_key: str
|
|
name: str
|
|
goal_type: str
|
|
match_rule: dict[str, Any] | list[Any] | None = None
|
|
|
|
|
|
@dataclass(slots=True)
|
|
class SdkConfig:
|
|
id: str
|
|
site_id: str
|
|
sdk_key: str
|
|
status: str
|
|
origin_url: str | None = None
|
|
cdn_url: str | None = None
|
|
sdk_config: dict[str, Any] | list[Any] | None = None
|
|
|