32 lines
1.4 KiB
Python
32 lines
1.4 KiB
Python
from datetime import datetime
|
|
from typing import Optional
|
|
from pydantic import BaseModel, Field
|
|
|
|
class CookiePolicySettings(BaseModel):
|
|
analytics_enabled: bool = Field(default=True, description='If false, analytics cookies/scripts should not be used at all.')
|
|
marketing_enabled: bool = Field(default=True, description='If false, marketing cookies/scripts should not be used at all.')
|
|
preferences_enabled: bool = Field(default=True, description='If false, preference cookies should not be used at all.')
|
|
|
|
class CookiePolicySettingsResponse(BaseModel):
|
|
status: str = Field(default='success')
|
|
data: CookiePolicySettings
|
|
updated_at: Optional[datetime] = None
|
|
updated_by: Optional[str] = None
|
|
|
|
class CookieIntegrationSettings(BaseModel):
|
|
ga_measurement_id: Optional[str] = Field(default=None, description='Google Analytics 4 measurement ID (e.g. G-XXXXXXX).')
|
|
fb_pixel_id: Optional[str] = Field(default=None, description='Meta (Facebook) Pixel ID.')
|
|
|
|
class CookieIntegrationSettingsResponse(BaseModel):
|
|
status: str = Field(default='success')
|
|
data: CookieIntegrationSettings
|
|
updated_at: Optional[datetime] = None
|
|
updated_by: Optional[str] = None
|
|
|
|
class PublicPrivacyConfig(BaseModel):
|
|
policy: CookiePolicySettings
|
|
integrations: CookieIntegrationSettings
|
|
|
|
class PublicPrivacyConfigResponse(BaseModel):
|
|
status: str = Field(default='success')
|
|
data: PublicPrivacyConfig |