Project import generated by Copybara.

GitOrigin-RevId: 2592bdc8b4b7c695a3d689390aedc9a42914acc8
This commit is contained in:
OpenRouter Team
2026-01-22 01:26:28 +00:00
parent 5832c0495b
commit 5f2c0ee2ea
130 changed files with 16948 additions and 1127 deletions
+46 -34
View File
@@ -7,23 +7,27 @@ import sys
if TYPE_CHECKING:
from ._schema0 import Schema0, Schema0Enum, Schema0TypedDict
from ._schema3 import (
Schema3,
Schema3ReasoningEncrypted,
Schema3ReasoningEncryptedTypedDict,
Schema3ReasoningSummary,
Schema3ReasoningSummaryTypedDict,
Schema3ReasoningText,
Schema3ReasoningTextTypedDict,
Schema3TypedDict,
Schema5,
from ._schema2 import (
Schema2,
Schema2ReasoningEncrypted,
Schema2ReasoningEncryptedTypedDict,
Schema2ReasoningSummary,
Schema2ReasoningSummaryTypedDict,
Schema2ReasoningText,
Schema2ReasoningTextTypedDict,
Schema2TypedDict,
Schema4,
)
from .activityitem import ActivityItem, ActivityItemTypedDict
from .assistantmessage import (
AssistantMessage,
AssistantMessageContent,
AssistantMessageContentTypedDict,
AssistantMessageImageURL,
AssistantMessageImageURLTypedDict,
AssistantMessageTypedDict,
Image,
ImageTypedDict,
)
from .badgatewayresponseerrordata import (
BadGatewayResponseErrorData,
@@ -114,9 +118,9 @@ if TYPE_CHECKING:
from .chatmessagecontentitemimage import (
ChatMessageContentItemImage,
ChatMessageContentItemImageDetail,
ChatMessageContentItemImageImageURL,
ChatMessageContentItemImageImageURLTypedDict,
ChatMessageContentItemImageTypedDict,
ImageURL,
ImageURLTypedDict,
)
from .chatmessagecontentitemtext import (
ChatMessageContentItemText,
@@ -913,6 +917,8 @@ __all__ = [
"AssistantMessage",
"AssistantMessageContent",
"AssistantMessageContentTypedDict",
"AssistantMessageImageURL",
"AssistantMessageImageURLTypedDict",
"AssistantMessageTypedDict",
"BadGatewayResponseErrorData",
"BadGatewayResponseErrorDataTypedDict",
@@ -972,6 +978,8 @@ __all__ = [
"ChatMessageContentItemCacheControlTypedDict",
"ChatMessageContentItemImage",
"ChatMessageContentItemImageDetail",
"ChatMessageContentItemImageImageURL",
"ChatMessageContentItemImageImageURLTypedDict",
"ChatMessageContentItemImageTypedDict",
"ChatMessageContentItemText",
"ChatMessageContentItemTextTypedDict",
@@ -1066,9 +1074,9 @@ __all__ = [
"IDModeration",
"IDResponseHealing",
"IDWeb",
"Image",
"ImageGenerationStatus",
"ImageURL",
"ImageURLTypedDict",
"ImageTypedDict",
"InputModality",
"InputTokensDetails",
"InputTokensDetailsTypedDict",
@@ -1540,15 +1548,15 @@ __all__ = [
"Schema0",
"Schema0Enum",
"Schema0TypedDict",
"Schema3",
"Schema3ReasoningEncrypted",
"Schema3ReasoningEncryptedTypedDict",
"Schema3ReasoningSummary",
"Schema3ReasoningSummaryTypedDict",
"Schema3ReasoningText",
"Schema3ReasoningTextTypedDict",
"Schema3TypedDict",
"Schema5",
"Schema2",
"Schema2ReasoningEncrypted",
"Schema2ReasoningEncryptedTypedDict",
"Schema2ReasoningSummary",
"Schema2ReasoningSummaryTypedDict",
"Schema2ReasoningText",
"Schema2ReasoningTextTypedDict",
"Schema2TypedDict",
"Schema4",
"Security",
"SecurityTypedDict",
"ServiceTier",
@@ -1624,21 +1632,25 @@ _dynamic_imports: dict[str, str] = {
"Schema0": "._schema0",
"Schema0Enum": "._schema0",
"Schema0TypedDict": "._schema0",
"Schema3": "._schema3",
"Schema3ReasoningEncrypted": "._schema3",
"Schema3ReasoningEncryptedTypedDict": "._schema3",
"Schema3ReasoningSummary": "._schema3",
"Schema3ReasoningSummaryTypedDict": "._schema3",
"Schema3ReasoningText": "._schema3",
"Schema3ReasoningTextTypedDict": "._schema3",
"Schema3TypedDict": "._schema3",
"Schema5": "._schema3",
"Schema2": "._schema2",
"Schema2ReasoningEncrypted": "._schema2",
"Schema2ReasoningEncryptedTypedDict": "._schema2",
"Schema2ReasoningSummary": "._schema2",
"Schema2ReasoningSummaryTypedDict": "._schema2",
"Schema2ReasoningText": "._schema2",
"Schema2ReasoningTextTypedDict": "._schema2",
"Schema2TypedDict": "._schema2",
"Schema4": "._schema2",
"ActivityItem": ".activityitem",
"ActivityItemTypedDict": ".activityitem",
"AssistantMessage": ".assistantmessage",
"AssistantMessageContent": ".assistantmessage",
"AssistantMessageContentTypedDict": ".assistantmessage",
"AssistantMessageImageURL": ".assistantmessage",
"AssistantMessageImageURLTypedDict": ".assistantmessage",
"AssistantMessageTypedDict": ".assistantmessage",
"Image": ".assistantmessage",
"ImageTypedDict": ".assistantmessage",
"BadGatewayResponseErrorData": ".badgatewayresponseerrordata",
"BadGatewayResponseErrorDataTypedDict": ".badgatewayresponseerrordata",
"BadRequestResponseErrorData": ".badrequestresponseerrordata",
@@ -1716,9 +1728,9 @@ _dynamic_imports: dict[str, str] = {
"TTL": ".chatmessagecontentitemcachecontrol",
"ChatMessageContentItemImage": ".chatmessagecontentitemimage",
"ChatMessageContentItemImageDetail": ".chatmessagecontentitemimage",
"ChatMessageContentItemImageImageURL": ".chatmessagecontentitemimage",
"ChatMessageContentItemImageImageURLTypedDict": ".chatmessagecontentitemimage",
"ChatMessageContentItemImageTypedDict": ".chatmessagecontentitemimage",
"ImageURL": ".chatmessagecontentitemimage",
"ImageURLTypedDict": ".chatmessagecontentitemimage",
"ChatMessageContentItemText": ".chatmessagecontentitemtext",
"ChatMessageContentItemTextTypedDict": ".chatmessagecontentitemtext",
"ChatMessageContentItemVideo": ".chatmessagecontentitemvideo",
@@ -17,7 +17,7 @@ from typing import Literal, Optional, Union
from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
Schema5 = Union[
Schema4 = Union[
Literal[
"unknown",
"openai-responses-v1",
@@ -30,16 +30,16 @@ Schema5 = Union[
]
class Schema3ReasoningTextTypedDict(TypedDict):
class Schema2ReasoningTextTypedDict(TypedDict):
type: Literal["reasoning.text"]
text: NotRequired[Nullable[str]]
signature: NotRequired[Nullable[str]]
id: NotRequired[Nullable[str]]
format_: NotRequired[Nullable[Schema5]]
format_: NotRequired[Nullable[Schema4]]
index: NotRequired[float]
class Schema3ReasoningText(BaseModel):
class Schema2ReasoningText(BaseModel):
TYPE: Annotated[
Annotated[
Literal["reasoning.text"], AfterValidator(validate_const("reasoning.text"))
@@ -54,7 +54,7 @@ class Schema3ReasoningText(BaseModel):
id: OptionalNullable[str] = UNSET
format_: Annotated[
Annotated[OptionalNullable[Schema5], PlainValidator(validate_open_enum(False))],
Annotated[OptionalNullable[Schema4], PlainValidator(validate_open_enum(False))],
pydantic.Field(alias="format"),
] = UNSET
@@ -91,15 +91,15 @@ class Schema3ReasoningText(BaseModel):
return m
class Schema3ReasoningEncryptedTypedDict(TypedDict):
class Schema2ReasoningEncryptedTypedDict(TypedDict):
data: str
type: Literal["reasoning.encrypted"]
id: NotRequired[Nullable[str]]
format_: NotRequired[Nullable[Schema5]]
format_: NotRequired[Nullable[Schema4]]
index: NotRequired[float]
class Schema3ReasoningEncrypted(BaseModel):
class Schema2ReasoningEncrypted(BaseModel):
data: str
TYPE: Annotated[
@@ -113,7 +113,7 @@ class Schema3ReasoningEncrypted(BaseModel):
id: OptionalNullable[str] = UNSET
format_: Annotated[
Annotated[OptionalNullable[Schema5], PlainValidator(validate_open_enum(False))],
Annotated[OptionalNullable[Schema4], PlainValidator(validate_open_enum(False))],
pydantic.Field(alias="format"),
] = UNSET
@@ -150,15 +150,15 @@ class Schema3ReasoningEncrypted(BaseModel):
return m
class Schema3ReasoningSummaryTypedDict(TypedDict):
class Schema2ReasoningSummaryTypedDict(TypedDict):
summary: str
type: Literal["reasoning.summary"]
id: NotRequired[Nullable[str]]
format_: NotRequired[Nullable[Schema5]]
format_: NotRequired[Nullable[Schema4]]
index: NotRequired[float]
class Schema3ReasoningSummary(BaseModel):
class Schema2ReasoningSummary(BaseModel):
summary: str
TYPE: Annotated[
@@ -172,7 +172,7 @@ class Schema3ReasoningSummary(BaseModel):
id: OptionalNullable[str] = UNSET
format_: Annotated[
Annotated[OptionalNullable[Schema5], PlainValidator(validate_open_enum(False))],
Annotated[OptionalNullable[Schema4], PlainValidator(validate_open_enum(False))],
pydantic.Field(alias="format"),
] = UNSET
@@ -209,21 +209,21 @@ class Schema3ReasoningSummary(BaseModel):
return m
Schema3TypedDict = TypeAliasType(
"Schema3TypedDict",
Schema2TypedDict = TypeAliasType(
"Schema2TypedDict",
Union[
Schema3ReasoningSummaryTypedDict,
Schema3ReasoningEncryptedTypedDict,
Schema3ReasoningTextTypedDict,
Schema2ReasoningSummaryTypedDict,
Schema2ReasoningEncryptedTypedDict,
Schema2ReasoningTextTypedDict,
],
)
Schema3 = Annotated[
Schema2 = Annotated[
Union[
Annotated[Schema3ReasoningSummary, Tag("reasoning.summary")],
Annotated[Schema3ReasoningEncrypted, Tag("reasoning.encrypted")],
Annotated[Schema3ReasoningText, Tag("reasoning.text")],
Annotated[Schema2ReasoningSummary, Tag("reasoning.summary")],
Annotated[Schema2ReasoningEncrypted, Tag("reasoning.encrypted")],
Annotated[Schema2ReasoningText, Tag("reasoning.text")],
],
Discriminator(lambda m: get_discriminator(m, "type", "type")),
]
+32 -1
View File
@@ -1,6 +1,7 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from ._schema2 import Schema2, Schema2TypedDict
from .chatmessagecontentitem import (
ChatMessageContentItem,
ChatMessageContentItemTypedDict,
@@ -32,6 +33,22 @@ AssistantMessageContent = TypeAliasType(
)
class AssistantMessageImageURLTypedDict(TypedDict):
url: str
class AssistantMessageImageURL(BaseModel):
url: str
class ImageTypedDict(TypedDict):
image_url: AssistantMessageImageURLTypedDict
class Image(BaseModel):
image_url: AssistantMessageImageURL
class AssistantMessageTypedDict(TypedDict):
role: Literal["assistant"]
content: NotRequired[Nullable[AssistantMessageContentTypedDict]]
@@ -39,6 +56,8 @@ class AssistantMessageTypedDict(TypedDict):
tool_calls: NotRequired[List[ChatMessageToolCallTypedDict]]
refusal: NotRequired[Nullable[str]]
reasoning: NotRequired[Nullable[str]]
reasoning_details: NotRequired[List[Schema2TypedDict]]
images: NotRequired[List[ImageTypedDict]]
class AssistantMessage(BaseModel):
@@ -57,9 +76,21 @@ class AssistantMessage(BaseModel):
reasoning: OptionalNullable[str] = UNSET
reasoning_details: Optional[List[Schema2]] = None
images: Optional[List[Image]] = None
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = ["content", "name", "tool_calls", "refusal", "reasoning"]
optional_fields = [
"content",
"name",
"tool_calls",
"refusal",
"reasoning",
"reasoning_details",
"images",
]
nullable_fields = ["content", "refusal", "reasoning"]
null_default_fields = []
@@ -19,12 +19,12 @@ ChatMessageContentItemImageDetail = Union[
]
class ImageURLTypedDict(TypedDict):
class ChatMessageContentItemImageImageURLTypedDict(TypedDict):
url: str
detail: NotRequired[ChatMessageContentItemImageDetail]
class ImageURL(BaseModel):
class ChatMessageContentItemImageImageURL(BaseModel):
url: str
detail: Annotated[
@@ -34,12 +34,12 @@ class ImageURL(BaseModel):
class ChatMessageContentItemImageTypedDict(TypedDict):
image_url: ImageURLTypedDict
image_url: ChatMessageContentItemImageImageURLTypedDict
type: Literal["image_url"]
class ChatMessageContentItemImage(BaseModel):
image_url: ImageURL
image_url: ChatMessageContentItemImageImageURL
TYPE: Annotated[
Annotated[Literal["image_url"], AfterValidator(validate_const("image_url"))],
@@ -1,7 +1,6 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from ._schema3 import Schema3, Schema3TypedDict
from .assistantmessage import AssistantMessage, AssistantMessageTypedDict
from .chatcompletionfinishreason import ChatCompletionFinishReason
from .chatmessagetokenlogprobs import (
@@ -18,7 +17,6 @@ from openrouter.types import (
from openrouter.utils import validate_open_enum
from pydantic import model_serializer
from pydantic.functional_validators import PlainValidator
from typing import List, Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -26,7 +24,6 @@ class ChatResponseChoiceTypedDict(TypedDict):
finish_reason: Nullable[ChatCompletionFinishReason]
index: float
message: AssistantMessageTypedDict
reasoning_details: NotRequired[List[Schema3TypedDict]]
logprobs: NotRequired[Nullable[ChatMessageTokenLogprobsTypedDict]]
@@ -39,13 +36,11 @@ class ChatResponseChoice(BaseModel):
message: AssistantMessage
reasoning_details: Optional[List[Schema3]] = None
logprobs: OptionalNullable[ChatMessageTokenLogprobs] = UNSET
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = ["reasoning_details", "logprobs"]
optional_fields = ["logprobs"]
nullable_fields = ["finish_reason", "logprobs"]
null_default_fields = []
@@ -1,7 +1,7 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from ._schema3 import Schema3, Schema3TypedDict
from ._schema2 import Schema2, Schema2TypedDict
from .chatstreamingmessagetoolcall import (
ChatStreamingMessageToolCall,
ChatStreamingMessageToolCallTypedDict,
@@ -27,7 +27,7 @@ class ChatStreamingMessageChunkTypedDict(TypedDict):
reasoning: NotRequired[Nullable[str]]
refusal: NotRequired[Nullable[str]]
tool_calls: NotRequired[List[ChatStreamingMessageToolCallTypedDict]]
reasoning_details: NotRequired[List[Schema3TypedDict]]
reasoning_details: NotRequired[List[Schema2TypedDict]]
class ChatStreamingMessageChunk(BaseModel):
@@ -41,7 +41,7 @@ class ChatStreamingMessageChunk(BaseModel):
tool_calls: Optional[List[ChatStreamingMessageToolCall]] = None
reasoning_details: Optional[List[Schema3]] = None
reasoning_details: Optional[List[Schema2]] = None
@model_serializer(mode="wrap")
def serialize_model(self, handler):
+7 -1
View File
@@ -50,6 +50,8 @@ class ModelTypedDict(TypedDict):
r"""Hugging Face model identifier, if applicable"""
description: NotRequired[str]
r"""Description of the model"""
expiration_date: NotRequired[Nullable[str]]
r"""The date after which the model may be removed. ISO 8601 date string (YYYY-MM-DD) or null if no expiration."""
class Model(BaseModel):
@@ -96,14 +98,18 @@ class Model(BaseModel):
description: Optional[str] = None
r"""Description of the model"""
expiration_date: OptionalNullable[str] = UNSET
r"""The date after which the model may be removed. ISO 8601 date string (YYYY-MM-DD) or null if no expiration."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = ["hugging_face_id", "description"]
optional_fields = ["hugging_face_id", "description", "expiration_date"]
nullable_fields = [
"hugging_face_id",
"context_length",
"per_request_limits",
"default_parameters",
"expiration_date",
]
null_default_fields = []
@@ -10,6 +10,7 @@ OutputModality = Union[
"text",
"image",
"embeddings",
"audio",
],
UnrecognizedStr,
]
@@ -28,6 +28,8 @@ class PricingTypedDict(TypedDict):
r"""A value in string format that is a large number"""
audio: NotRequired[str]
r"""A value in string format that is a large number"""
audio_output: NotRequired[str]
r"""A value in string format that is a large number"""
input_audio_cache: NotRequired[str]
r"""A value in string format that is a large number"""
web_search: NotRequired[str]
@@ -63,6 +65,9 @@ class Pricing(BaseModel):
audio: Optional[str] = None
r"""A value in string format that is a large number"""
audio_output: Optional[str] = None
r"""A value in string format that is a large number"""
input_audio_cache: Optional[str] = None
r"""A value in string format that is a large number"""
@@ -101,6 +106,8 @@ class PublicEndpointTypedDict(TypedDict):
r"""Information about a specific model endpoint"""
name: str
model_id: str
r"""The unique identifier for the model (permaslug)"""
model_name: str
context_length: float
pricing: PricingTypedDict
@@ -123,6 +130,9 @@ class PublicEndpoint(BaseModel):
name: str
model_id: str
r"""The unique identifier for the model (permaslug)"""
model_name: str
context_length: float
@@ -23,6 +23,8 @@ class PublicPricingTypedDict(TypedDict):
r"""A value in string format that is a large number"""
audio: NotRequired[str]
r"""A value in string format that is a large number"""
audio_output: NotRequired[str]
r"""A value in string format that is a large number"""
input_audio_cache: NotRequired[str]
r"""A value in string format that is a large number"""
web_search: NotRequired[str]
@@ -60,6 +62,9 @@ class PublicPricing(BaseModel):
audio: Optional[str] = None
r"""A value in string format that is a large number"""
audio_output: Optional[str] = None
r"""A value in string format that is a large number"""
input_audio_cache: Optional[str] = None
r"""A value in string format that is a large number"""