50 lines
1.2 KiB
Python
50 lines
1.2 KiB
Python
"""Schemas for skills marketplace listing and install/uninstall actions."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
from uuid import UUID
|
|
|
|
from pydantic import AnyHttpUrl
|
|
from sqlmodel import SQLModel
|
|
|
|
from app.schemas.common import NonEmptyStr
|
|
|
|
RUNTIME_ANNOTATION_TYPES = (datetime, UUID, NonEmptyStr)
|
|
|
|
|
|
class MarketplaceSkillCreate(SQLModel):
|
|
"""Payload used to register a skill URL in the organization marketplace."""
|
|
|
|
source_url: AnyHttpUrl
|
|
name: NonEmptyStr | None = None
|
|
description: str | None = None
|
|
|
|
|
|
class MarketplaceSkillRead(SQLModel):
|
|
"""Serialized marketplace skill catalog record."""
|
|
|
|
id: UUID
|
|
organization_id: UUID
|
|
name: str
|
|
description: str | None = None
|
|
source_url: str
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
|
|
class MarketplaceSkillCardRead(MarketplaceSkillRead):
|
|
"""Marketplace card payload with gateway-specific install state."""
|
|
|
|
installed: bool
|
|
installed_at: datetime | None = None
|
|
|
|
|
|
class MarketplaceSkillActionResponse(SQLModel):
|
|
"""Install/uninstall action response payload."""
|
|
|
|
ok: bool = True
|
|
skill_id: UUID
|
|
gateway_id: UUID
|
|
installed: bool
|