from pydantic import BaseModel, HttpUrl
from typing import List, Dict, Any, Optional


class PinImage(BaseModel):
    url: HttpUrl


class PinResult(BaseModel):
    id: Optional[str] = None
    title: Optional[Any] = None
    grid_title: Optional[Any] = None
    seo_alt_text: Optional[str] = None
    images: Optional[Dict[str, PinImage]] = None

    class Config:
        extra = "allow"


class SearchData(BaseModel):
    results: List[PinResult] = []


class ResourceResponse(BaseModel):
    data: Optional[SearchData] = None

    class Config:
        extra = "allow"


class SearchResponse(BaseModel):
    resource_response: ResourceResponse
    client_context: Dict[str, Any]
