Add governed RSS and Atom connectors
This commit is contained in:
@@ -6,6 +6,68 @@ from typing import Any, Literal
|
||||
from pydantic import BaseModel, Field, model_validator
|
||||
|
||||
|
||||
class FeedAcquireRequest(BaseModel):
|
||||
url: str = Field(min_length=1, max_length=2000)
|
||||
max_entries: int = Field(default=2_000, ge=1, le=10_000)
|
||||
|
||||
|
||||
class FeedImportRequest(FeedAcquireRequest):
|
||||
name: str = Field(min_length=1, max_length=300)
|
||||
source_name: str = Field(
|
||||
min_length=1,
|
||||
max_length=120,
|
||||
pattern=r"^[A-Za-z_][A-Za-z0-9_]*$",
|
||||
)
|
||||
description: str | None = Field(default=None, max_length=4000)
|
||||
|
||||
|
||||
class FeedEntryPayload(BaseModel):
|
||||
id: str = Field(min_length=1, max_length=2000)
|
||||
title: str = Field(min_length=1, max_length=1000)
|
||||
url: str | None = Field(default=None, max_length=2000)
|
||||
summary: str | None = None
|
||||
content: str | None = None
|
||||
author: str | None = Field(default=None, max_length=500)
|
||||
published_at: datetime | None = None
|
||||
updated_at: datetime | None = None
|
||||
categories: list[str] = Field(default_factory=list, max_length=100)
|
||||
enclosures: list[dict[str, Any]] = Field(default_factory=list, max_length=100)
|
||||
visibility: Literal["public", "tenant", "private"] = "public"
|
||||
metadata: dict[str, Any] = Field(default_factory=dict)
|
||||
|
||||
|
||||
class FeedDocumentResponse(BaseModel):
|
||||
format: Literal["rss", "atom"]
|
||||
title: str
|
||||
source_url: str
|
||||
description: str | None = None
|
||||
home_url: str | None = None
|
||||
language: str | None = None
|
||||
updated_at: datetime | None = None
|
||||
acquired_at: datetime | None = None
|
||||
fresh_until: datetime | None = None
|
||||
etag: str | None = None
|
||||
last_modified: str | None = None
|
||||
content_type: str | None = None
|
||||
sha256: str
|
||||
entries: list[FeedEntryPayload]
|
||||
metadata: dict[str, Any] = Field(default_factory=dict)
|
||||
|
||||
|
||||
class FeedRenderPayload(BaseModel):
|
||||
format: Literal["rss", "atom"]
|
||||
title: str = Field(min_length=1, max_length=1000)
|
||||
feed_url: str = Field(min_length=1, max_length=2000)
|
||||
home_url: str = Field(min_length=1, max_length=2000)
|
||||
description: str | None = None
|
||||
language: str | None = Field(default=None, max_length=100)
|
||||
entries: list[FeedEntryPayload] = Field(default_factory=list, max_length=10_000)
|
||||
allowed_visibilities: list[Literal["public", "tenant", "private"]] = Field(
|
||||
default_factory=lambda: ["public"],
|
||||
max_length=3,
|
||||
)
|
||||
|
||||
|
||||
class SnapshotCreateRequest(BaseModel):
|
||||
name: str = Field(min_length=1, max_length=300)
|
||||
source_name: str = Field(
|
||||
@@ -140,6 +202,11 @@ class SanctionsRefreshResponse(BaseModel):
|
||||
|
||||
|
||||
__all__ = [
|
||||
"FeedAcquireRequest",
|
||||
"FeedDocumentResponse",
|
||||
"FeedEntryPayload",
|
||||
"FeedImportRequest",
|
||||
"FeedRenderPayload",
|
||||
"SnapshotCreateRequest",
|
||||
"SanctionsAcquisitionRunListResponse",
|
||||
"SanctionsAcquisitionRunResponse",
|
||||
|
||||
Reference in New Issue
Block a user