docs: Mintlify MDX docs + docs.json; bump Speakeasy to 1.787.0 (#382)

This commit is contained in:
Matt Apperson
2026-06-30 16:13:28 -04:00
committed by GitHub
parent 778e2e36fb
commit babeffc9aa
2100 changed files with 50407 additions and 16612 deletions
+8 -37
View File
@@ -1,9 +1,8 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from typing import TYPE_CHECKING
from importlib import import_module
import builtins
import sys
from typing import Any, TYPE_CHECKING
from openrouter.utils.dynamic_imports import lazy_getattr, lazy_dir
if TYPE_CHECKING:
from .bulkaddworkspacemembers import (
@@ -1801,39 +1800,11 @@ _dynamic_imports: dict[str, str] = {
}
def dynamic_import(modname, retries=3):
for attempt in range(retries):
try:
return import_module(modname, __package__)
except KeyError:
# Clear any half-initialized module and retry
sys.modules.pop(modname, None)
if attempt == retries - 1:
break
raise KeyError(f"Failed to import module '{modname}' after {retries} attempts")
def __getattr__(attr_name: str) -> object:
module_name = _dynamic_imports.get(attr_name)
if module_name is None:
raise AttributeError(
f"No {attr_name} found in _dynamic_imports for module name -> {__name__} "
)
try:
module = dynamic_import(module_name)
result = getattr(module, attr_name)
return result
except ImportError as e:
raise ImportError(
f"Failed to import {attr_name} from {module_name}: {e}"
) from e
except AttributeError as e:
raise AttributeError(
f"Failed to get {attr_name} from {module_name}: {e}"
) from e
def __getattr__(attr_name: str) -> Any:
return lazy_getattr(
attr_name, package=__package__, dynamic_imports=_dynamic_imports
)
def __dir__():
lazy_attrs = builtins.list(_dynamic_imports.keys())
return builtins.sorted(lazy_attrs)
return lazy_dir(dynamic_imports=_dynamic_imports)
@@ -4,7 +4,7 @@ from __future__ import annotations
from openrouter.components import (
bulkaddworkspacemembersrequest as components_bulkaddworkspacemembersrequest,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
@@ -12,6 +12,7 @@ from openrouter.utils import (
RequestMetadata,
)
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -61,6 +62,24 @@ class BulkAddWorkspaceMembersGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class BulkAddWorkspaceMembersRequestTypedDict(TypedDict):
id: str
@@ -119,3 +138,21 @@ class BulkAddWorkspaceMembersRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
@@ -4,7 +4,7 @@ from __future__ import annotations
from openrouter.components import (
bulkassignkeysrequest as components_bulkassignkeysrequest,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
@@ -12,6 +12,7 @@ from openrouter.utils import (
RequestMetadata,
)
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -61,6 +62,24 @@ class BulkAssignKeysToGuardrailGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class BulkAssignKeysToGuardrailRequestTypedDict(TypedDict):
id: str
@@ -121,3 +140,21 @@ class BulkAssignKeysToGuardrailRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
@@ -4,7 +4,7 @@ from __future__ import annotations
from openrouter.components import (
bulkassignmembersrequest as components_bulkassignmembersrequest,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
@@ -12,6 +12,7 @@ from openrouter.utils import (
RequestMetadata,
)
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -61,6 +62,24 @@ class BulkAssignMembersToGuardrailGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class BulkAssignMembersToGuardrailRequestTypedDict(TypedDict):
id: str
@@ -121,3 +140,21 @@ class BulkAssignMembersToGuardrailRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
@@ -4,7 +4,7 @@ from __future__ import annotations
from openrouter.components import (
bulkremoveworkspacemembersrequest as components_bulkremoveworkspacemembersrequest,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
@@ -12,6 +12,7 @@ from openrouter.utils import (
RequestMetadata,
)
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -61,6 +62,24 @@ class BulkRemoveWorkspaceMembersGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class BulkRemoveWorkspaceMembersRequestTypedDict(TypedDict):
id: str
@@ -119,3 +138,21 @@ class BulkRemoveWorkspaceMembersRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
@@ -4,7 +4,7 @@ from __future__ import annotations
from openrouter.components import (
bulkunassignkeysrequest as components_bulkunassignkeysrequest,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
@@ -12,6 +12,7 @@ from openrouter.utils import (
RequestMetadata,
)
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -61,6 +62,24 @@ class BulkUnassignKeysFromGuardrailGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class BulkUnassignKeysFromGuardrailRequestTypedDict(TypedDict):
id: str
@@ -121,3 +140,21 @@ class BulkUnassignKeysFromGuardrailRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
@@ -4,7 +4,7 @@ from __future__ import annotations
from openrouter.components import (
bulkunassignmembersrequest as components_bulkunassignmembersrequest,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
@@ -12,6 +12,7 @@ from openrouter.utils import (
RequestMetadata,
)
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -61,6 +62,24 @@ class BulkUnassignMembersFromGuardrailGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class BulkUnassignMembersFromGuardrailRequestTypedDict(TypedDict):
id: str
@@ -121,3 +140,21 @@ class BulkUnassignMembersFromGuardrailRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+38 -1
View File
@@ -2,9 +2,10 @@
from __future__ import annotations
from openrouter.components import speechrequest as components_speechrequest
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, RequestMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -54,6 +55,24 @@ class CreateAudioSpeechGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class CreateAudioSpeechRequestTypedDict(TypedDict):
speech_request: components_speechrequest.SpeechRequestTypedDict
@@ -105,3 +124,21 @@ class CreateAudioSpeechRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
@@ -2,9 +2,10 @@
from __future__ import annotations
from openrouter.components import sttrequest as components_sttrequest
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, RequestMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -54,6 +55,24 @@ class CreateAudioTranscriptionsGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class CreateAudioTranscriptionsRequestTypedDict(TypedDict):
stt_request: components_sttrequest.STTRequestTypedDict
@@ -105,3 +124,21 @@ class CreateAudioTranscriptionsRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+63 -41
View File
@@ -10,15 +10,9 @@ from openrouter.types import (
UNSET_SENTINEL,
UnrecognizedStr,
)
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
RequestMetadata,
validate_open_enum,
)
from openrouter.utils import FieldMetadata, HeaderMetadata, RequestMetadata
import pydantic
from pydantic import model_serializer
from pydantic.functional_validators import PlainValidator
from typing import Literal, Optional, Union
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -68,6 +62,24 @@ class CreateAuthKeysCodeGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
CreateAuthKeysCodeCodeChallengeMethod = Union[
Literal[
@@ -116,10 +128,7 @@ class CreateAuthKeysCodeRequestBody(BaseModel):
code_challenge: Optional[str] = None
r"""PKCE code challenge for enhanced security"""
code_challenge_method: Annotated[
Optional[CreateAuthKeysCodeCodeChallengeMethod],
PlainValidator(validate_open_enum(False)),
] = None
code_challenge_method: Optional[CreateAuthKeysCodeCodeChallengeMethod] = None
r"""The method used to generate the code challenge"""
expires_at: OptionalNullable[datetime] = UNSET
@@ -131,9 +140,7 @@ class CreateAuthKeysCodeRequestBody(BaseModel):
limit: Optional[float] = None
r"""Credit limit for the API key to be created"""
usage_limit_type: Annotated[
Optional[UsageLimitType], PlainValidator(validate_open_enum(False))
] = None
usage_limit_type: Optional[UsageLimitType] = None
r"""Optional credit limit reset interval. When set, the credit limit resets on this interval."""
workspace_id: Optional[str] = None
@@ -141,39 +148,36 @@ class CreateAuthKeysCodeRequestBody(BaseModel):
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = [
"code_challenge",
"code_challenge_method",
"expires_at",
"key_label",
"limit",
"usage_limit_type",
"workspace_id",
]
nullable_fields = ["expires_at"]
null_default_fields = []
optional_fields = set(
[
"code_challenge",
"code_challenge_method",
"expires_at",
"key_label",
"limit",
"usage_limit_type",
"workspace_id",
]
)
nullable_fields = set(["expires_at"])
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k)
serialized.pop(k, None)
val = serialized.get(k, serialized.get(n))
is_nullable_and_explicitly_set = (
k in nullable_fields
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
)
optional_nullable = k in optional_fields and k in nullable_fields
is_set = (
self.__pydantic_fields_set__.intersection({n})
or k in null_default_fields
) # pylint: disable=no-member
if val is not None and val != UNSET_SENTINEL:
m[k] = val
elif val != UNSET_SENTINEL and (
not k in optional_fields or (optional_nullable and is_set)
):
m[k] = val
if val != UNSET_SENTINEL:
if (
val is not None
or k not in optional_fields
or is_nullable_and_explicitly_set
):
m[k] = val
return m
@@ -229,6 +233,24 @@ class CreateAuthKeysCodeRequest(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class CreateAuthKeysCodeDataTypedDict(TypedDict):
r"""Auth code data"""
+38 -1
View File
@@ -4,9 +4,10 @@ from __future__ import annotations
from openrouter.components import (
createbyokkeyrequest as components_createbyokkeyrequest,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, RequestMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -56,6 +57,24 @@ class CreateBYOKKeyGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class CreateBYOKKeyRequestTypedDict(TypedDict):
create_byok_key_request: (
@@ -109,3 +128,21 @@ class CreateBYOKKeyRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+139 -68
View File
@@ -20,11 +20,9 @@ from openrouter.utils import (
HeaderMetadata,
RequestMetadata,
get_discriminator,
validate_open_enum,
)
import pydantic
from pydantic import Discriminator, Tag, model_serializer
from pydantic.functional_validators import PlainValidator
from typing import List, Literal, Optional, Union
from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
@@ -74,6 +72,24 @@ class CreateEmbeddingsGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
EncodingFormat = Union[
Literal[
@@ -204,9 +220,7 @@ class CreateEmbeddingsRequestBody(BaseModel):
dimensions: Optional[int] = None
r"""The number of dimensions for the output embeddings"""
encoding_format: Annotated[
Optional[EncodingFormat], PlainValidator(validate_open_enum(False))
] = None
encoding_format: Optional[EncodingFormat] = None
r"""The format of the output embeddings"""
input_type: Optional[str] = None
@@ -221,37 +235,28 @@ class CreateEmbeddingsRequestBody(BaseModel):
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = [
"dimensions",
"encoding_format",
"input_type",
"provider",
"user",
]
nullable_fields = ["provider"]
null_default_fields = []
optional_fields = set(
["dimensions", "encoding_format", "input_type", "provider", "user"]
)
nullable_fields = set(["provider"])
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k)
serialized.pop(k, None)
val = serialized.get(k, serialized.get(n))
is_nullable_and_explicitly_set = (
k in nullable_fields
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
)
optional_nullable = k in optional_fields and k in nullable_fields
is_set = (
self.__pydantic_fields_set__.intersection({n})
or k in null_default_fields
) # pylint: disable=no-member
if val is not None and val != UNSET_SENTINEL:
m[k] = val
elif val != UNSET_SENTINEL and (
not k in optional_fields or (optional_nullable and is_set)
):
m[k] = val
if val != UNSET_SENTINEL:
if (
val is not None
or k not in optional_fields
or is_nullable_and_explicitly_set
):
m[k] = val
return m
@@ -307,6 +312,24 @@ class CreateEmbeddingsRequest(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
EmbeddingTypedDict = TypeAliasType("EmbeddingTypedDict", Union[List[float], str])
r"""Embedding vector as an array of floats or a base64 string"""
@@ -340,6 +363,22 @@ class CreateEmbeddingsData(BaseModel):
index: Optional[int] = None
r"""Index of the embedding in the input list"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(["index"])
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
Object = Literal["list",]
@@ -363,31 +402,26 @@ class CostDetails(BaseModel):
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = ["upstream_inference_cost"]
nullable_fields = ["upstream_inference_cost"]
null_default_fields = []
optional_fields = set(["upstream_inference_cost"])
nullable_fields = set(["upstream_inference_cost"])
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k)
serialized.pop(k, None)
val = serialized.get(k, serialized.get(n))
is_nullable_and_explicitly_set = (
k in nullable_fields
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
)
optional_nullable = k in optional_fields and k in nullable_fields
is_set = (
self.__pydantic_fields_set__.intersection({n})
or k in null_default_fields
) # pylint: disable=no-member
if val is not None and val != UNSET_SENTINEL:
m[k] = val
elif val != UNSET_SENTINEL and (
not k in optional_fields or (optional_nullable and is_set)
):
m[k] = val
if val != UNSET_SENTINEL:
if (
val is not None
or k not in optional_fields
or is_nullable_and_explicitly_set
):
m[k] = val
return m
@@ -425,6 +459,30 @@ class PromptTokensDetails(BaseModel):
video_tokens: Optional[int] = None
r"""Number of video tokens in the input"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"audio_tokens",
"file_tokens",
"image_tokens",
"text_tokens",
"video_tokens",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class CreateEmbeddingsUsageTypedDict(TypedDict):
r"""Token usage statistics"""
@@ -466,31 +524,28 @@ class CreateEmbeddingsUsage(BaseModel):
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = ["cost", "cost_details", "is_byok", "prompt_tokens_details"]
nullable_fields = ["cost_details"]
null_default_fields = []
optional_fields = set(
["cost", "cost_details", "is_byok", "prompt_tokens_details"]
)
nullable_fields = set(["cost_details"])
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k)
serialized.pop(k, None)
val = serialized.get(k, serialized.get(n))
is_nullable_and_explicitly_set = (
k in nullable_fields
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
)
optional_nullable = k in optional_fields and k in nullable_fields
is_set = (
self.__pydantic_fields_set__.intersection({n})
or k in null_default_fields
) # pylint: disable=no-member
if val is not None and val != UNSET_SENTINEL:
m[k] = val
elif val != UNSET_SENTINEL and (
not k in optional_fields or (optional_nullable and is_set)
):
m[k] = val
if val != UNSET_SENTINEL:
if (
val is not None
or k not in optional_fields
or is_nullable_and_explicitly_set
):
m[k] = val
return m
@@ -526,6 +581,22 @@ class CreateEmbeddingsResponseBody(BaseModel):
usage: Optional[CreateEmbeddingsUsage] = None
r"""Token usage statistics"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(["id", "usage"])
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
CreateEmbeddingsResponseTypedDict = TypeAliasType(
"CreateEmbeddingsResponseTypedDict",
+38 -1
View File
@@ -4,9 +4,10 @@ from __future__ import annotations
from openrouter.components import (
createguardrailrequest as components_createguardrailrequest,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, RequestMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -56,6 +57,24 @@ class CreateGuardrailGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class CreateGuardrailRequestTypedDict(TypedDict):
create_guardrail_request: (
@@ -109,3 +128,21 @@ class CreateGuardrailRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+38 -1
View File
@@ -6,7 +6,7 @@ from openrouter.components import (
imagegenerationresponse as components_imagegenerationresponse,
imagestreamingresponse as components_imagestreamingresponse,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
@@ -14,6 +14,7 @@ from openrouter.utils import (
eventstreaming,
)
import pydantic
from pydantic import model_serializer
from typing import Optional, Union
from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
@@ -63,6 +64,24 @@ class CreateImagesGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class CreateImagesRequestTypedDict(TypedDict):
image_generation_request: (
@@ -117,6 +136,24 @@ class CreateImagesRequest(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
CreateImagesResponseTypedDict = TypeAliasType(
"CreateImagesResponseTypedDict",
+84 -63
View File
@@ -10,15 +10,9 @@ from openrouter.types import (
UNSET_SENTINEL,
UnrecognizedStr,
)
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
RequestMetadata,
validate_open_enum,
)
from openrouter.utils import FieldMetadata, HeaderMetadata, RequestMetadata
import pydantic
from pydantic import model_serializer
from pydantic.functional_validators import PlainValidator
from typing import Literal, Optional, Union
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -68,6 +62,24 @@ class CreateKeysGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
CreateKeysLimitReset = Union[
Literal[
@@ -113,10 +125,7 @@ class CreateKeysRequestBody(BaseModel):
limit: OptionalNullable[float] = UNSET
r"""Optional spending limit for the API key in USD"""
limit_reset: Annotated[
OptionalNullable[CreateKeysLimitReset],
PlainValidator(validate_open_enum(False)),
] = UNSET
limit_reset: OptionalNullable[CreateKeysLimitReset] = UNSET
r"""Type of limit reset for the API key (daily, weekly, monthly, or null for no reset). Resets happen automatically at midnight UTC, and weeks are Monday through Sunday."""
workspace_id: Optional[str] = None
@@ -124,38 +133,35 @@ class CreateKeysRequestBody(BaseModel):
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = [
"creator_user_id",
"expires_at",
"include_byok_in_limit",
"limit",
"limit_reset",
"workspace_id",
]
nullable_fields = ["creator_user_id", "expires_at", "limit", "limit_reset"]
null_default_fields = []
optional_fields = set(
[
"creator_user_id",
"expires_at",
"include_byok_in_limit",
"limit",
"limit_reset",
"workspace_id",
]
)
nullable_fields = set(["creator_user_id", "expires_at", "limit", "limit_reset"])
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k)
serialized.pop(k, None)
val = serialized.get(k, serialized.get(n))
is_nullable_and_explicitly_set = (
k in nullable_fields
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
)
optional_nullable = k in optional_fields and k in nullable_fields
is_set = (
self.__pydantic_fields_set__.intersection({n})
or k in null_default_fields
) # pylint: disable=no-member
if val is not None and val != UNSET_SENTINEL:
m[k] = val
elif val != UNSET_SENTINEL and (
not k in optional_fields or (optional_nullable and is_set)
):
m[k] = val
if val != UNSET_SENTINEL:
if (
val is not None
or k not in optional_fields
or is_nullable_and_explicitly_set
):
m[k] = val
return m
@@ -211,6 +217,24 @@ class CreateKeysRequest(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class CreateKeysDataTypedDict(TypedDict):
r"""The created API key information"""
@@ -327,38 +351,35 @@ class CreateKeysData(BaseModel):
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = ["expires_at"]
nullable_fields = [
"creator_user_id",
"expires_at",
"limit",
"limit_remaining",
"limit_reset",
"updated_at",
]
null_default_fields = []
optional_fields = set(["expires_at"])
nullable_fields = set(
[
"creator_user_id",
"expires_at",
"limit",
"limit_remaining",
"limit_reset",
"updated_at",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k)
serialized.pop(k, None)
val = serialized.get(k, serialized.get(n))
is_nullable_and_explicitly_set = (
k in nullable_fields
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
)
optional_nullable = k in optional_fields and k in nullable_fields
is_set = (
self.__pydantic_fields_set__.intersection({n})
or k in null_default_fields
) # pylint: disable=no-member
if val is not None and val != UNSET_SENTINEL:
m[k] = val
elif val != UNSET_SENTINEL and (
not k in optional_fields or (optional_nullable and is_set)
):
m[k] = val
if val != UNSET_SENTINEL:
if (
val is not None
or k not in optional_fields
or is_nullable_and_explicitly_set
):
m[k] = val
return m
@@ -4,9 +4,10 @@ from __future__ import annotations
from openrouter.components import (
createobservabilitydestinationrequest as components_createobservabilitydestinationrequest,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, RequestMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -56,6 +57,24 @@ class CreateObservabilityDestinationGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class CreateObservabilityDestinationRequestTypedDict(TypedDict):
create_observability_destination_request: components_createobservabilitydestinationrequest.CreateObservabilityDestinationRequestTypedDict
@@ -107,3 +126,21 @@ class CreateObservabilityDestinationRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
@@ -2,7 +2,7 @@
from __future__ import annotations
from openrouter.components import chatrequest as components_chatrequest
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
@@ -10,6 +10,7 @@ from openrouter.utils import (
RequestMetadata,
)
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -59,6 +60,24 @@ class CreatePresetsChatCompletionsGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class CreatePresetsChatCompletionsRequestTypedDict(TypedDict):
slug: str
@@ -117,3 +136,21 @@ class CreatePresetsChatCompletionsRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
@@ -2,7 +2,7 @@
from __future__ import annotations
from openrouter.components import messagesrequest as components_messagesrequest
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
@@ -10,6 +10,7 @@ from openrouter.utils import (
RequestMetadata,
)
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -59,6 +60,24 @@ class CreatePresetsMessagesGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class CreatePresetsMessagesRequestTypedDict(TypedDict):
slug: str
@@ -117,3 +136,21 @@ class CreatePresetsMessagesRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
@@ -2,7 +2,7 @@
from __future__ import annotations
from openrouter.components import responsesrequest as components_responsesrequest
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
@@ -10,6 +10,7 @@ from openrouter.utils import (
RequestMetadata,
)
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -59,6 +60,24 @@ class CreatePresetsResponsesGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class CreatePresetsResponsesRequestTypedDict(TypedDict):
slug: str
@@ -117,3 +136,21 @@ class CreatePresetsResponsesRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+114 -19
View File
@@ -61,6 +61,24 @@ class CreateRerankGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class DocumentRequestTypedDict(TypedDict):
r"""A structured document with optional text and/or image content. At least one of `text` or `image` must be provided."""
@@ -80,6 +98,22 @@ class DocumentRequest(BaseModel):
text: Optional[str] = None
r"""The document text"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(["image", "text"])
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
DocumentTypedDict = TypeAliasType(
"DocumentTypedDict", Union[DocumentRequestTypedDict, str]
@@ -128,31 +162,26 @@ class CreateRerankRequestBody(BaseModel):
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = ["provider", "top_n"]
nullable_fields = ["provider"]
null_default_fields = []
optional_fields = set(["provider", "top_n"])
nullable_fields = set(["provider"])
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k)
serialized.pop(k, None)
val = serialized.get(k, serialized.get(n))
is_nullable_and_explicitly_set = (
k in nullable_fields
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
)
optional_nullable = k in optional_fields and k in nullable_fields
is_set = (
self.__pydantic_fields_set__.intersection({n})
or k in null_default_fields
) # pylint: disable=no-member
if val is not None and val != UNSET_SENTINEL:
m[k] = val
elif val != UNSET_SENTINEL and (
not k in optional_fields or (optional_nullable and is_set)
):
m[k] = val
if val != UNSET_SENTINEL:
if (
val is not None
or k not in optional_fields
or is_nullable_and_explicitly_set
):
m[k] = val
return m
@@ -208,6 +237,24 @@ class CreateRerankRequest(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class DocumentResponseTypedDict(TypedDict):
r"""The document object echoing the original input (text and/or image)"""
@@ -227,6 +274,22 @@ class DocumentResponse(BaseModel):
text: Optional[str] = None
r"""The document text"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(["image", "text"])
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ResultTypedDict(TypedDict):
r"""A single rerank result"""
@@ -275,6 +338,22 @@ class CreateRerankUsage(BaseModel):
total_tokens: Optional[int] = None
r"""Total number of tokens used"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(["cost", "search_units", "total_tokens"])
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class CreateRerankResponseBodyTypedDict(TypedDict):
r"""Rerank response containing ranked results"""
@@ -309,6 +388,22 @@ class CreateRerankResponseBody(BaseModel):
usage: Optional[CreateRerankUsage] = None
r"""Usage statistics"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(["id", "provider", "usage"])
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
CreateRerankResponseTypedDict = TypeAliasType(
"CreateRerankResponseTypedDict", Union[CreateRerankResponseBodyTypedDict, str]
+44 -7
View File
@@ -7,16 +7,15 @@ from openrouter.components import (
responsesrequest as components_responsesrequest,
streamevents as components_streamevents,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
RequestMetadata,
eventstreaming,
validate_open_enum,
)
import pydantic
from pydantic.functional_validators import PlainValidator
from pydantic import model_serializer
from typing import Optional, Union
from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
@@ -66,6 +65,24 @@ class CreateResponsesGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class CreateResponsesRequestTypedDict(TypedDict):
responses_request: components_responsesrequest.ResponsesRequestTypedDict
@@ -121,15 +138,35 @@ class CreateResponsesRequest(BaseModel):
"""
x_open_router_metadata: Annotated[
Annotated[
Optional[components_metadatalevel.MetadataLevel],
PlainValidator(validate_open_enum(False)),
],
Optional[components_metadatalevel.MetadataLevel],
pydantic.Field(alias="X-OpenRouter-Metadata"),
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
] = None
r"""Opt-in to surface routing metadata on the response under `openrouter_metadata`. Defaults to `disabled`. The legacy header `X-OpenRouter-Experimental-Metadata` is also accepted for backward compatibility."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"X-OpenRouter-Metadata",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
CreateResponsesResponseTypedDict = TypeAliasType(
"CreateResponsesResponseTypedDict",
+38 -1
View File
@@ -4,9 +4,10 @@ from __future__ import annotations
from openrouter.components import (
videogenerationrequest as components_videogenerationrequest,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, RequestMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -56,6 +57,24 @@ class CreateVideosGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class CreateVideosRequestTypedDict(TypedDict):
video_generation_request: (
@@ -109,3 +128,21 @@ class CreateVideosRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+38 -1
View File
@@ -4,9 +4,10 @@ from __future__ import annotations
from openrouter.components import (
createworkspacerequest as components_createworkspacerequest,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, RequestMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -56,6 +57,24 @@ class CreateWorkspaceGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class CreateWorkspaceRequestTypedDict(TypedDict):
create_workspace_request: (
@@ -109,3 +128,21 @@ class CreateWorkspaceRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+38 -1
View File
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, PathParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class DeleteBYOKKeyGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class DeleteBYOKKeyRequestTypedDict(TypedDict):
id: str
@@ -105,3 +124,21 @@ class DeleteBYOKKeyRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+43 -1
View File
@@ -1,7 +1,7 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
@@ -9,6 +9,7 @@ from openrouter.utils import (
QueryParamMetadata,
)
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -58,6 +59,24 @@ class DeleteFileGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class DeleteFileRequestTypedDict(TypedDict):
file_id: str
@@ -116,3 +135,26 @@ class DeleteFileRequest(BaseModel):
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
] = None
r"""Workspace to scope the request to. Defaults to the callers default workspace."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"workspace_id",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+38 -1
View File
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, PathParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class DeleteGuardrailGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class DeleteGuardrailRequestTypedDict(TypedDict):
id: str
@@ -105,3 +124,21 @@ class DeleteGuardrailRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+44 -1
View File
@@ -1,7 +1,7 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
@@ -9,6 +9,7 @@ from openrouter.utils import (
validate_const,
)
import pydantic
from pydantic import model_serializer
from pydantic.functional_validators import AfterValidator
from typing import Literal, Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -59,6 +60,24 @@ class DeleteKeysGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class DeleteKeysRequestTypedDict(TypedDict):
hash: str
@@ -112,6 +131,24 @@ class DeleteKeysRequest(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class DeleteKeysResponseTypedDict(TypedDict):
r"""API key deleted successfully"""
@@ -128,3 +165,9 @@ class DeleteKeysResponse(BaseModel):
pydantic.Field(alias="deleted"),
] = True
r"""Confirmation that the API key was deleted"""
try:
DeleteKeysResponse.model_rebuild()
except NameError:
pass
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, PathParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class DeleteObservabilityDestinationGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class DeleteObservabilityDestinationRequestTypedDict(TypedDict):
id: str
@@ -105,3 +124,21 @@ class DeleteObservabilityDestinationRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+38 -1
View File
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, PathParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class DeleteWorkspaceGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class DeleteWorkspaceRequestTypedDict(TypedDict):
id: str
@@ -105,3 +124,21 @@ class DeleteWorkspaceRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
@@ -4,15 +4,10 @@ from __future__ import annotations
from openrouter.components import (
workspacebudgetinterval as components_workspacebudgetinterval,
)
from openrouter.types import BaseModel
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
PathParamMetadata,
validate_open_enum,
)
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, PathParamMetadata
import pydantic
from pydantic.functional_validators import PlainValidator
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -62,6 +57,24 @@ class DeleteWorkspaceBudgetGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class DeleteWorkspaceBudgetRequestTypedDict(TypedDict):
id: str
@@ -90,10 +103,7 @@ class DeleteWorkspaceBudgetRequest(BaseModel):
r"""The workspace ID (UUID) or slug"""
interval: Annotated[
Annotated[
components_workspacebudgetinterval.WorkspaceBudgetInterval,
PlainValidator(validate_open_enum(False)),
],
components_workspacebudgetinterval.WorkspaceBudgetInterval,
FieldMetadata(path=PathParamMetadata(style="simple", explode=False)),
]
r"""Budget reset interval. Use \"lifetime\" for a one-time budget that never resets."""
@@ -125,3 +135,21 @@ class DeleteWorkspaceBudgetRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
@@ -1,7 +1,7 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
@@ -9,6 +9,7 @@ from openrouter.utils import (
QueryParamMetadata,
)
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -58,6 +59,24 @@ class DownloadFileContentGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class DownloadFileContentRequestTypedDict(TypedDict):
file_id: str
@@ -116,3 +135,26 @@ class DownloadFileContentRequest(BaseModel):
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
] = None
r"""Workspace to scope the request to. Defaults to the callers default workspace."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"workspace_id",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
@@ -9,15 +9,9 @@ from openrouter.types import (
UNSET_SENTINEL,
UnrecognizedStr,
)
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
RequestMetadata,
validate_open_enum,
)
from openrouter.utils import FieldMetadata, HeaderMetadata, RequestMetadata
import pydantic
from pydantic import model_serializer
from pydantic.functional_validators import PlainValidator
from typing import Literal, Optional, Union
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -67,6 +61,24 @@ class ExchangeAuthCodeForAPIKeyGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
ExchangeAuthCodeForAPIKeyCodeChallengeMethod = Union[
Literal[
@@ -93,9 +105,8 @@ class ExchangeAuthCodeForAPIKeyRequestBody(BaseModel):
code: str
r"""The authorization code received from the OAuth redirect"""
code_challenge_method: Annotated[
OptionalNullable[ExchangeAuthCodeForAPIKeyCodeChallengeMethod],
PlainValidator(validate_open_enum(False)),
code_challenge_method: OptionalNullable[
ExchangeAuthCodeForAPIKeyCodeChallengeMethod
] = UNSET
r"""The method used to generate the code challenge"""
@@ -104,31 +115,26 @@ class ExchangeAuthCodeForAPIKeyRequestBody(BaseModel):
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = ["code_challenge_method", "code_verifier"]
nullable_fields = ["code_challenge_method"]
null_default_fields = []
optional_fields = set(["code_challenge_method", "code_verifier"])
nullable_fields = set(["code_challenge_method"])
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k)
serialized.pop(k, None)
val = serialized.get(k, serialized.get(n))
is_nullable_and_explicitly_set = (
k in nullable_fields
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
)
optional_nullable = k in optional_fields and k in nullable_fields
is_set = (
self.__pydantic_fields_set__.intersection({n})
or k in null_default_fields
) # pylint: disable=no-member
if val is not None and val != UNSET_SENTINEL:
m[k] = val
elif val != UNSET_SENTINEL and (
not k in optional_fields or (optional_nullable and is_set)
):
m[k] = val
if val != UNSET_SENTINEL:
if (
val is not None
or k not in optional_fields
or is_nullable_and_explicitly_set
):
m[k] = val
return m
@@ -184,6 +190,24 @@ class ExchangeAuthCodeForAPIKeyRequest(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ExchangeAuthCodeForAPIKeyResponseTypedDict(TypedDict):
r"""Successfully exchanged code for an API key"""
@@ -205,30 +229,14 @@ class ExchangeAuthCodeForAPIKeyResponse(BaseModel):
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = []
nullable_fields = ["user_id"]
null_default_fields = []
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k)
serialized.pop(k, None)
val = serialized.get(k, serialized.get(n))
optional_nullable = k in optional_fields and k in nullable_fields
is_set = (
self.__pydantic_fields_set__.intersection({n})
or k in null_default_fields
) # pylint: disable=no-member
if val is not None and val != UNSET_SENTINEL:
m[k] = val
elif val != UNSET_SENTINEL and (
not k in optional_fields or (optional_nullable and is_set)
):
if val != UNSET_SENTINEL:
m[k] = val
return m
+43 -7
View File
@@ -1,10 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel, UnrecognizedStr
from openrouter.utils import FieldMetadata, HeaderMetadata, validate_open_enum
from openrouter.types import BaseModel, UNSET_SENTINEL, UnrecognizedStr
from openrouter.utils import FieldMetadata, HeaderMetadata
import pydantic
from pydantic.functional_validators import PlainValidator
from pydantic import model_serializer
from typing import List, Literal, Optional, Union
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -54,6 +54,24 @@ class GetAnalyticsMetaGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class GetAnalyticsMetaRequestTypedDict(TypedDict):
http_referer: NotRequired[str]
@@ -100,6 +118,24 @@ class GetAnalyticsMetaRequest(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class DimensionTypedDict(TypedDict):
display_label: str
@@ -140,7 +176,7 @@ class Granularity(BaseModel):
display_label: str
r"""Human-readable label"""
name: Annotated[GranularityName, PlainValidator(validate_open_enum(False))]
name: GranularityName
r"""Granularity identifier"""
@@ -169,7 +205,7 @@ class MetricTypedDict(TypedDict):
class Metric(BaseModel):
display_format: Annotated[DisplayFormat, PlainValidator(validate_open_enum(False))]
display_format: DisplayFormat
r"""How this metric value should be formatted for display (e.g. percent → multiply by 100 and append %, currency → prefix with $)"""
display_label: str
@@ -216,10 +252,10 @@ class OperatorTypedDict(TypedDict):
class Operator(BaseModel):
name: Annotated[OperatorName, PlainValidator(validate_open_enum(False))]
name: OperatorName
r"""Operator identifier used in filter definitions"""
value_type: Annotated[ValueType, PlainValidator(validate_open_enum(False))]
value_type: ValueType
r"""Whether the operator expects a single value or an array"""
+53 -15
View File
@@ -2,15 +2,10 @@
from __future__ import annotations
from openrouter.components import apprankingsresponse as components_apprankingsresponse
from openrouter.types import BaseModel, UnrecognizedStr
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
QueryParamMetadata,
validate_open_enum,
)
from openrouter.types import BaseModel, UNSET_SENTINEL, UnrecognizedStr
from openrouter.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata
import pydantic
from pydantic.functional_validators import PlainValidator
from pydantic import model_serializer
from typing import Awaitable, Callable, Literal, Optional, Union
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -60,6 +55,24 @@ class GetAppRankingsGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
GetAppRankingsCategory = Union[
Literal[
@@ -166,23 +179,19 @@ class GetAppRankingsRequest(BaseModel):
"""
category: Annotated[
Annotated[
Optional[GetAppRankingsCategory], PlainValidator(validate_open_enum(False))
],
Optional[GetAppRankingsCategory],
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
] = None
r"""Marketplace category group to filter by (e.g. `coding`). Only apps tagged with a subcategory inside this group are returned. Mutually combinable with `subcategory` — when both are supplied the `subcategory` must belong to the `category` group."""
subcategory: Annotated[
Annotated[Optional[Subcategory], PlainValidator(validate_open_enum(False))],
Optional[Subcategory],
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
] = None
r"""Marketplace subcategory to filter by (e.g. `cli-agent`). Takes precedence over `category` for the actual filter; when `category` is also supplied the pair must be consistent."""
sort: Annotated[
Annotated[
Optional[GetAppRankingsSort], PlainValidator(validate_open_enum(False))
],
Optional[GetAppRankingsSort],
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
] = "popular"
r"""`popular` ranks apps by total token volume inside the date window. `trending` ranks apps by absolute excess token growth: window volume minus the average volume of the three equal-length periods immediately preceding the window. Apps with no excess growth are omitted from `trending` results."""
@@ -211,6 +220,35 @@ class GetAppRankingsRequest(BaseModel):
] = 0
r"""Number of ranked apps to skip before the first returned row (0-100). Defaults to 0. `rank` stays absolute, so the first row of `offset=50` is `rank: 51`."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"category",
"subcategory",
"sort",
"start_date",
"end_date",
"limit",
"offset",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class GetAppRankingsResponseTypedDict(TypedDict):
result: components_apprankingsresponse.AppRankingsResponseTypedDict
+51 -11
View File
@@ -1,15 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel, UnrecognizedStr
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
QueryParamMetadata,
validate_open_enum,
)
from openrouter.types import BaseModel, UNSET_SENTINEL, UnrecognizedStr
from openrouter.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata
import pydantic
from pydantic.functional_validators import PlainValidator
from pydantic import model_serializer
from typing import Literal, Optional, Union
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -59,6 +54,24 @@ class GetBenchmarksGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
Source = Union[
Literal[
@@ -148,19 +161,19 @@ class GetBenchmarksRequest(BaseModel):
"""
source: Annotated[
Annotated[Optional[Source], PlainValidator(validate_open_enum(False))],
Optional[Source],
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
] = None
r"""Benchmark source to query. Determines the shape of the returned items. When omitted, returns results from all sources."""
task_type: Annotated[
Annotated[Optional[TaskType], PlainValidator(validate_open_enum(False))],
Optional[TaskType],
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
] = None
r"""Filter results by task type. For Artificial Analysis, maps to the corresponding index. For Design Arena, maps to the matching category."""
arena: Annotated[
Annotated[Optional[Arena], PlainValidator(validate_open_enum(False))],
Optional[Arena],
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
] = None
r"""Design Arena only: arena to query. Defaults to `models` when source is `design-arena`."""
@@ -176,3 +189,30 @@ class GetBenchmarksRequest(BaseModel):
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
] = None
r"""Maximum number of items to return. When omitted, all matching results are returned."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"source",
"task_type",
"arena",
"category",
"max_results",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+38 -1
View File
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, PathParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class GetBYOKKeyGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class GetBYOKKeyRequestTypedDict(TypedDict):
id: str
@@ -105,3 +124,21 @@ class GetBYOKKeyRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+38 -1
View File
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class GetCreditsGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class GetCreditsRequestTypedDict(TypedDict):
http_referer: NotRequired[str]
@@ -99,6 +118,24 @@ class GetCreditsRequest(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class GetCreditsDataTypedDict(TypedDict):
total_credits: float
+52 -25
View File
@@ -61,6 +61,24 @@ class GetCurrentKeyGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class GetCurrentKeyRequestTypedDict(TypedDict):
http_referer: NotRequired[str]
@@ -107,6 +125,24 @@ class GetCurrentKeyRequest(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
@deprecated(
"warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible."
@@ -253,37 +289,28 @@ class GetCurrentKeyData(BaseModel):
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = ["expires_at"]
nullable_fields = [
"creator_user_id",
"expires_at",
"limit",
"limit_remaining",
"limit_reset",
]
null_default_fields = []
optional_fields = set(["expires_at"])
nullable_fields = set(
["creator_user_id", "expires_at", "limit", "limit_remaining", "limit_reset"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k)
serialized.pop(k, None)
val = serialized.get(k, serialized.get(n))
is_nullable_and_explicitly_set = (
k in nullable_fields
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
)
optional_nullable = k in optional_fields and k in nullable_fields
is_set = (
self.__pydantic_fields_set__.intersection({n})
or k in null_default_fields
) # pylint: disable=no-member
if val is not None and val != UNSET_SENTINEL:
m[k] = val
elif val != UNSET_SENTINEL and (
not k in optional_fields or (optional_nullable and is_set)
):
m[k] = val
if val != UNSET_SENTINEL:
if (
val is not None
or k not in optional_fields
or is_nullable_and_explicitly_set
):
m[k] = val
return m
+43 -1
View File
@@ -1,7 +1,7 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
@@ -9,6 +9,7 @@ from openrouter.utils import (
QueryParamMetadata,
)
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -58,6 +59,24 @@ class GetFileMetadataGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class GetFileMetadataRequestTypedDict(TypedDict):
file_id: str
@@ -116,3 +135,26 @@ class GetFileMetadataRequest(BaseModel):
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
] = None
r"""Workspace to scope the request to. Defaults to the callers default workspace."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"workspace_id",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+38 -1
View File
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class GetGenerationGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class GetGenerationRequestTypedDict(TypedDict):
id: str
@@ -105,3 +124,21 @@ class GetGenerationRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+38 -1
View File
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, PathParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class GetGuardrailGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class GetGuardrailRequestTypedDict(TypedDict):
id: str
@@ -105,3 +124,21 @@ class GetGuardrailRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+59 -26
View File
@@ -61,6 +61,24 @@ class GetKeyGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class GetKeyRequestTypedDict(TypedDict):
hash: str
@@ -114,6 +132,24 @@ class GetKeyRequest(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class GetKeyDataTypedDict(TypedDict):
r"""The API key information"""
@@ -230,38 +266,35 @@ class GetKeyData(BaseModel):
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = ["expires_at"]
nullable_fields = [
"creator_user_id",
"expires_at",
"limit",
"limit_remaining",
"limit_reset",
"updated_at",
]
null_default_fields = []
optional_fields = set(["expires_at"])
nullable_fields = set(
[
"creator_user_id",
"expires_at",
"limit",
"limit_remaining",
"limit_reset",
"updated_at",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k)
serialized.pop(k, None)
val = serialized.get(k, serialized.get(n))
is_nullable_and_explicitly_set = (
k in nullable_fields
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
)
optional_nullable = k in optional_fields and k in nullable_fields
is_set = (
self.__pydantic_fields_set__.intersection({n})
or k in null_default_fields
) # pylint: disable=no-member
if val is not None and val != UNSET_SENTINEL:
m[k] = val
elif val != UNSET_SENTINEL and (
not k in optional_fields or (optional_nullable and is_set)
):
m[k] = val
if val != UNSET_SENTINEL:
if (
val is not None
or k not in optional_fields
or is_nullable_and_explicitly_set
):
m[k] = val
return m
+38 -1
View File
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, PathParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class GetModelGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class GetModelRequestTypedDict(TypedDict):
author: str
@@ -112,3 +131,21 @@ class GetModelRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+57 -50
View File
@@ -9,15 +9,9 @@ from openrouter.types import (
UNSET_SENTINEL,
UnrecognizedStr,
)
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
QueryParamMetadata,
validate_open_enum,
)
from openrouter.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata
import pydantic
from pydantic import model_serializer
from pydantic.functional_validators import PlainValidator
from typing import Literal, Optional, Union
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -67,6 +61,24 @@ class GetModelsGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
GetModelsCategory = Union[
Literal[
@@ -200,9 +212,7 @@ class GetModelsRequest(BaseModel):
"""
category: Annotated[
Annotated[
Optional[GetModelsCategory], PlainValidator(validate_open_enum(False))
],
Optional[GetModelsCategory],
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
] = None
r"""Filter models by use case category"""
@@ -220,7 +230,7 @@ class GetModelsRequest(BaseModel):
r"""Filter models by output modality. Accepts a comma-separated list of modalities (text, image, audio, embeddings) or \"all\" to include all models. Defaults to \"text\"."""
sort: Annotated[
Annotated[Optional[GetModelsSort], PlainValidator(validate_open_enum(False))],
Optional[GetModelsSort],
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
] = None
r"""Sort the returned models server-side. Prefer this over fetching the full list and sorting client-side. Options: pricing-low-to-high, pricing-high-to-low (average prompt/completion price), context-high-to-low (context length), throughput-high-to-low, latency-low-to-high (recent median performance), most-popular, top-weekly (tokens processed in the last week), newest (creation date), intelligence-high-to-low (Artificial Analysis intelligence index), design-arena-elo-high-to-low (best Design Arena ELO across arenas). Models without a score for the chosen benchmark are placed last. When omitted, the existing default ordering is preserved."""
@@ -274,7 +284,7 @@ class GetModelsRequest(BaseModel):
r"""Filter models by hosting provider. Comma-separated list of provider names."""
distillable: Annotated[
Annotated[Optional[Distillable], PlainValidator(validate_open_enum(False))],
Optional[Distillable],
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
] = None
r"""Filter by distillation capability. \"true\" returns only distillable models, \"false\" excludes them."""
@@ -293,49 +303,46 @@ class GetModelsRequest(BaseModel):
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = [
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"category",
"supported_parameters",
"output_modalities",
"sort",
"q",
"input_modalities",
"context",
"min_price",
"max_price",
"arch",
"model_authors",
"providers",
"distillable",
"zdr",
"region",
]
nullable_fields = ["min_price", "max_price"]
null_default_fields = []
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"category",
"supported_parameters",
"output_modalities",
"sort",
"q",
"input_modalities",
"context",
"min_price",
"max_price",
"arch",
"model_authors",
"providers",
"distillable",
"zdr",
"region",
]
)
nullable_fields = set(["min_price", "max_price"])
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k)
serialized.pop(k, None)
val = serialized.get(k, serialized.get(n))
is_nullable_and_explicitly_set = (
k in nullable_fields
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
)
optional_nullable = k in optional_fields and k in nullable_fields
is_set = (
self.__pydantic_fields_set__.intersection({n})
or k in null_default_fields
) # pylint: disable=no-member
if val is not None and val != UNSET_SENTINEL:
m[k] = val
elif val != UNSET_SENTINEL and (
not k in optional_fields or (optional_nullable and is_set)
):
m[k] = val
if val != UNSET_SENTINEL:
if (
val is not None
or k not in optional_fields
or is_nullable_and_explicitly_set
):
m[k] = val
return m
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, PathParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class GetObservabilityDestinationGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class GetObservabilityDestinationRequestTypedDict(TypedDict):
id: str
@@ -105,3 +124,21 @@ class GetObservabilityDestinationRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+38 -1
View File
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, PathParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class GetPresetGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class GetPresetRequestTypedDict(TypedDict):
slug: str
@@ -105,3 +124,21 @@ class GetPresetRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+38 -1
View File
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, PathParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class GetPresetVersionGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class GetPresetVersionRequestTypedDict(TypedDict):
slug: str
@@ -112,3 +131,21 @@ class GetPresetVersionRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+44 -1
View File
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class GetRankingsDailyGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class GetRankingsDailyRequestTypedDict(TypedDict):
http_referer: NotRequired[str]
@@ -114,3 +133,27 @@ class GetRankingsDailyRequest(BaseModel):
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
] = None
r"""End of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to the most recent completed UTC day. Must be on or after 2025-01-01; earlier values are rejected with a 400."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"start_date",
"end_date",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Literal, Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class GetTaskClassificationsGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
Window = Literal["7d",]
r"""Trailing time window for the classification data. Currently only `7d` (trailing 7 days) is supported."""
@@ -110,3 +129,21 @@ class GetTaskClassificationsRequest(BaseModel):
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
] = "7d"
r"""Trailing time window for the classification data. Currently only `7d` (trailing 7 days) is supported."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "window"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+45 -1
View File
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class GetUserActivityGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class GetUserActivityRequestTypedDict(TypedDict):
http_referer: NotRequired[str]
@@ -123,3 +142,28 @@ class GetUserActivityRequest(BaseModel):
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
] = None
r"""Filter by org member user ID. Only applicable for organization accounts."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"date",
"api_key_hash",
"user_id",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+38 -1
View File
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, PathParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class GetVideosGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class GetVideosRequestTypedDict(TypedDict):
job_id: str
@@ -105,3 +124,21 @@ class GetVideosRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+38 -1
View File
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, PathParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class GetWorkspaceGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class GetWorkspaceRequestTypedDict(TypedDict):
id: str
@@ -105,3 +124,21 @@ class GetWorkspaceRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+66 -26
View File
@@ -61,6 +61,24 @@ class ListGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListRequestTypedDict(TypedDict):
http_referer: NotRequired[str]
@@ -131,6 +149,31 @@ class ListRequest(BaseModel):
] = None
r"""Filter API keys by workspace ID. By default, keys in the default workspace are returned."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"include_disabled",
"offset",
"workspace_id",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListDataTypedDict(TypedDict):
byok_usage: float
@@ -243,38 +286,35 @@ class ListData(BaseModel):
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = ["expires_at"]
nullable_fields = [
"creator_user_id",
"expires_at",
"limit",
"limit_remaining",
"limit_reset",
"updated_at",
]
null_default_fields = []
optional_fields = set(["expires_at"])
nullable_fields = set(
[
"creator_user_id",
"expires_at",
"limit",
"limit_remaining",
"limit_reset",
"updated_at",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k)
serialized.pop(k, None)
val = serialized.get(k, serialized.get(n))
is_nullable_and_explicitly_set = (
k in nullable_fields
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
)
optional_nullable = k in optional_fields and k in nullable_fields
is_set = (
self.__pydantic_fields_set__.intersection({n})
or k in null_default_fields
) # pylint: disable=no-member
if val is not None and val != UNSET_SENTINEL:
m[k] = val
elif val != UNSET_SENTINEL and (
not k in optional_fields or (optional_nullable and is_set)
):
m[k] = val
if val != UNSET_SENTINEL:
if (
val is not None
or k not in optional_fields
or is_nullable_and_explicitly_set
):
m[k] = val
return m
+48 -9
View File
@@ -4,15 +4,10 @@ from __future__ import annotations
from openrouter.components import (
listbyokkeysresponse as components_listbyokkeysresponse,
)
from openrouter.types import BaseModel, UnrecognizedStr
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
QueryParamMetadata,
validate_open_enum,
)
from openrouter.types import BaseModel, UNSET_SENTINEL, UnrecognizedStr
from openrouter.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata
import pydantic
from pydantic.functional_validators import PlainValidator
from pydantic import model_serializer
from typing import Awaitable, Callable, Literal, Optional, Union
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -62,6 +57,24 @@ class ListBYOKKeysGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
Provider = Union[
Literal[
@@ -231,11 +244,37 @@ class ListBYOKKeysRequest(BaseModel):
r"""Optional workspace ID to filter by. Defaults to the authenticated entity's default workspace."""
provider: Annotated[
Annotated[Optional[Provider], PlainValidator(validate_open_enum(False))],
Optional[Provider],
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
] = None
r"""Optional provider slug to filter by (e.g. `openai`, `anthropic`, `amazon-bedrock`)."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"offset",
"limit",
"workspace_id",
"provider",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListBYOKKeysResponseTypedDict(TypedDict):
result: components_listbyokkeysresponse.ListBYOKKeysResponseTypedDict
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class ListEmbeddingsModelsGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListEmbeddingsModelsRequestTypedDict(TypedDict):
http_referer: NotRequired[str]
@@ -98,3 +117,21 @@ class ListEmbeddingsModelsRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+38 -1
View File
@@ -4,9 +4,10 @@ from __future__ import annotations
from openrouter.components import (
listendpointsresponse as components_listendpointsresponse,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, PathParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -56,6 +57,24 @@ class ListEndpointsGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListEndpointsRequestTypedDict(TypedDict):
author: str
@@ -116,6 +135,24 @@ class ListEndpointsRequest(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListEndpointsResponseTypedDict(TypedDict):
r"""Returns a list of endpoints"""
+38 -1
View File
@@ -2,9 +2,10 @@
from __future__ import annotations
from openrouter.components import publicendpoint as components_publicendpoint
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata
import pydantic
from pydantic import model_serializer
from typing import List, Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -54,6 +55,24 @@ class ListEndpointsZdrGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListEndpointsZdrRequestTypedDict(TypedDict):
http_referer: NotRequired[str]
@@ -100,6 +119,24 @@ class ListEndpointsZdrRequest(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListEndpointsZdrResponseTypedDict(TypedDict):
r"""Returns a list of endpoints"""
+45 -1
View File
@@ -2,9 +2,10 @@
from __future__ import annotations
from openrouter.components import filelistresponse as components_filelistresponse
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Awaitable, Callable, Optional, Union
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -54,6 +55,24 @@ class ListFilesGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListFilesRequestTypedDict(TypedDict):
http_referer: NotRequired[str]
@@ -124,6 +143,31 @@ class ListFilesRequest(BaseModel):
] = None
r"""Workspace to scope the request to. Defaults to the callers default workspace."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"limit",
"cursor",
"workspace_id",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListFilesResponseTypedDict(TypedDict):
result: components_filelistresponse.FileListResponseTypedDict
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class ListGenerationContentGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListGenerationContentRequestTypedDict(TypedDict):
id: str
@@ -105,3 +124,21 @@ class ListGenerationContentRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
@@ -4,7 +4,7 @@ from __future__ import annotations
from openrouter.components import (
listkeyassignmentsresponse as components_listkeyassignmentsresponse,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
@@ -12,6 +12,7 @@ from openrouter.utils import (
QueryParamMetadata,
)
import pydantic
from pydantic import model_serializer
from typing import Awaitable, Callable, Optional, Union
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -61,6 +62,24 @@ class ListGuardrailKeyAssignmentsGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListGuardrailKeyAssignmentsRequestTypedDict(TypedDict):
id: str
@@ -130,6 +149,30 @@ class ListGuardrailKeyAssignmentsRequest(BaseModel):
] = None
r"""Maximum number of records to return (max 100)"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"offset",
"limit",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListGuardrailKeyAssignmentsResponseTypedDict(TypedDict):
result: components_listkeyassignmentsresponse.ListKeyAssignmentsResponseTypedDict
@@ -4,7 +4,7 @@ from __future__ import annotations
from openrouter.components import (
listmemberassignmentsresponse as components_listmemberassignmentsresponse,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
@@ -12,6 +12,7 @@ from openrouter.utils import (
QueryParamMetadata,
)
import pydantic
from pydantic import model_serializer
from typing import Awaitable, Callable, Optional, Union
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -61,6 +62,24 @@ class ListGuardrailMemberAssignmentsGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListGuardrailMemberAssignmentsRequestTypedDict(TypedDict):
id: str
@@ -130,6 +149,30 @@ class ListGuardrailMemberAssignmentsRequest(BaseModel):
] = None
r"""Maximum number of records to return (max 100)"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"offset",
"limit",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListGuardrailMemberAssignmentsResponseTypedDict(TypedDict):
result: (
+45 -1
View File
@@ -4,9 +4,10 @@ from __future__ import annotations
from openrouter.components import (
listguardrailsresponse as components_listguardrailsresponse,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Awaitable, Callable, Optional, Union
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -56,6 +57,24 @@ class ListGuardrailsGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListGuardrailsRequestTypedDict(TypedDict):
http_referer: NotRequired[str]
@@ -126,6 +145,31 @@ class ListGuardrailsRequest(BaseModel):
] = None
r"""Filter guardrails by workspace ID. By default, guardrails in the default workspace are returned."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"offset",
"limit",
"workspace_id",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListGuardrailsResponseTypedDict(TypedDict):
result: components_listguardrailsresponse.ListGuardrailsResponseTypedDict
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, PathParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class ListImageModelEndpointsGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListImageModelEndpointsRequestTypedDict(TypedDict):
author: str
@@ -112,3 +131,21 @@ class ListImageModelEndpointsRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+38 -1
View File
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class ListImageModelsGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListImageModelsRequestTypedDict(TypedDict):
http_referer: NotRequired[str]
@@ -98,3 +117,21 @@ class ListImageModelsRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
@@ -4,9 +4,10 @@ from __future__ import annotations
from openrouter.components import (
listkeyassignmentsresponse as components_listkeyassignmentsresponse,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Awaitable, Callable, Optional, Union
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -56,6 +57,24 @@ class ListKeyAssignmentsGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListKeyAssignmentsRequestTypedDict(TypedDict):
http_referer: NotRequired[str]
@@ -118,6 +137,30 @@ class ListKeyAssignmentsRequest(BaseModel):
] = None
r"""Maximum number of records to return (max 100)"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"offset",
"limit",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListKeyAssignmentsResponseTypedDict(TypedDict):
result: components_listkeyassignmentsresponse.ListKeyAssignmentsResponseTypedDict
@@ -4,9 +4,10 @@ from __future__ import annotations
from openrouter.components import (
listmemberassignmentsresponse as components_listmemberassignmentsresponse,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Awaitable, Callable, Optional, Union
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -56,6 +57,24 @@ class ListMemberAssignmentsGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListMemberAssignmentsRequestTypedDict(TypedDict):
http_referer: NotRequired[str]
@@ -118,6 +137,30 @@ class ListMemberAssignmentsRequest(BaseModel):
] = None
r"""Maximum number of records to return (max 100)"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"offset",
"limit",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListMemberAssignmentsResponseTypedDict(TypedDict):
result: (
+43 -1
View File
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class ListModelsCountGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListModelsCountRequestTypedDict(TypedDict):
http_referer: NotRequired[str]
@@ -106,3 +125,26 @@ class ListModelsCountRequest(BaseModel):
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
] = None
r"""Filter models by output modality. Accepts a comma-separated list of modalities (text, image, audio, embeddings) or \"all\" to include all models. Defaults to \"text\"."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"output_modalities",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+38 -1
View File
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, SecurityMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class ListModelsUserGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListModelsUserSecurityTypedDict(TypedDict):
bearer: str
@@ -116,3 +135,21 @@ class ListModelsUserRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
@@ -4,9 +4,10 @@ from __future__ import annotations
from openrouter.components import (
listobservabilitydestinationsresponse as components_listobservabilitydestinationsresponse,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Awaitable, Callable, Optional, Union
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -56,6 +57,24 @@ class ListObservabilityDestinationsGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListObservabilityDestinationsRequestTypedDict(TypedDict):
http_referer: NotRequired[str]
@@ -126,6 +145,31 @@ class ListObservabilityDestinationsRequest(BaseModel):
] = None
r"""Optional workspace ID to filter by. Defaults to the authenticated entity's default workspace."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"offset",
"limit",
"workspace_id",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListObservabilityDestinationsResponseTypedDict(TypedDict):
result: components_listobservabilitydestinationsresponse.ListObservabilityDestinationsResponseTypedDict
@@ -2,15 +2,9 @@
from __future__ import annotations
from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL, UnrecognizedStr
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
QueryParamMetadata,
validate_open_enum,
)
from openrouter.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata
import pydantic
from pydantic import model_serializer
from pydantic.functional_validators import PlainValidator
from typing import Awaitable, Callable, List, Literal, Optional, Union
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -60,6 +54,24 @@ class ListOrganizationMembersGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListOrganizationMembersRequestTypedDict(TypedDict):
http_referer: NotRequired[str]
@@ -122,6 +134,30 @@ class ListOrganizationMembersRequest(BaseModel):
] = None
r"""Maximum number of records to return (max 100)"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"offset",
"limit",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
Role = Union[
Literal[
@@ -159,35 +195,19 @@ class ListOrganizationMembersData(BaseModel):
last_name: Nullable[str]
r"""Last name of the member"""
role: Annotated[Role, PlainValidator(validate_open_enum(False))]
role: Role
r"""Role of the member in the organization"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = []
nullable_fields = ["first_name", "last_name"]
null_default_fields = []
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k)
serialized.pop(k, None)
val = serialized.get(k, serialized.get(n))
optional_nullable = k in optional_fields and k in nullable_fields
is_set = (
self.__pydantic_fields_set__.intersection({n})
or k in null_default_fields
) # pylint: disable=no-member
if val is not None and val != UNSET_SENTINEL:
m[k] = val
elif val != UNSET_SENTINEL and (
not k in optional_fields or (optional_nullable and is_set)
):
if val != UNSET_SENTINEL:
m[k] = val
return m
+44 -1
View File
@@ -2,9 +2,10 @@
from __future__ import annotations
from openrouter.components import listpresetsresponse as components_listpresetsresponse
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Awaitable, Callable, Optional, Union
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -54,6 +55,24 @@ class ListPresetsGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListPresetsRequestTypedDict(TypedDict):
http_referer: NotRequired[str]
@@ -116,6 +135,30 @@ class ListPresetsRequest(BaseModel):
] = None
r"""Maximum number of records to return (max 100)"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"offset",
"limit",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListPresetsResponseTypedDict(TypedDict):
result: components_listpresetsresponse.ListPresetsResponseTypedDict
@@ -4,7 +4,7 @@ from __future__ import annotations
from openrouter.components import (
listpresetversionsresponse as components_listpresetversionsresponse,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
@@ -12,6 +12,7 @@ from openrouter.utils import (
QueryParamMetadata,
)
import pydantic
from pydantic import model_serializer
from typing import Awaitable, Callable, Optional, Union
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -61,6 +62,24 @@ class ListPresetVersionsGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListPresetVersionsRequestTypedDict(TypedDict):
slug: str
@@ -130,6 +149,30 @@ class ListPresetVersionsRequest(BaseModel):
] = None
r"""Maximum number of records to return (max 100)"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"offset",
"limit",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListPresetVersionsResponseTypedDict(TypedDict):
result: components_listpresetversionsresponse.ListPresetVersionsResponseTypedDict
+63 -38
View File
@@ -9,10 +9,9 @@ from openrouter.types import (
UNSET_SENTINEL,
UnrecognizedStr,
)
from openrouter.utils import FieldMetadata, HeaderMetadata, validate_open_enum
from openrouter.utils import FieldMetadata, HeaderMetadata
import pydantic
from pydantic import model_serializer
from pydantic.functional_validators import PlainValidator
from typing import List, Literal, Optional, Union
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -62,6 +61,24 @@ class ListProvidersGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListProvidersRequestTypedDict(TypedDict):
http_referer: NotRequired[str]
@@ -108,6 +125,24 @@ class ListProvidersRequest(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
Datacenter = Union[
Literal[
@@ -649,14 +684,10 @@ class ListProvidersData(BaseModel):
slug: str
r"""URL-friendly identifier for the provider"""
datacenters: OptionalNullable[
List[Annotated[Datacenter, PlainValidator(validate_open_enum(False))]]
] = UNSET
datacenters: OptionalNullable[List[Datacenter]] = UNSET
r"""ISO 3166-1 Alpha-2 country codes of the provider datacenter locations"""
headquarters: Annotated[
OptionalNullable[Headquarters], PlainValidator(validate_open_enum(False))
] = UNSET
headquarters: OptionalNullable[Headquarters] = UNSET
r"""ISO 3166-1 Alpha-2 country code of the provider headquarters"""
status_page_url: OptionalNullable[str] = UNSET
@@ -667,42 +698,36 @@ class ListProvidersData(BaseModel):
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = [
"datacenters",
"headquarters",
"status_page_url",
"terms_of_service_url",
]
nullable_fields = [
"datacenters",
"headquarters",
"privacy_policy_url",
"status_page_url",
"terms_of_service_url",
]
null_default_fields = []
optional_fields = set(
["datacenters", "headquarters", "status_page_url", "terms_of_service_url"]
)
nullable_fields = set(
[
"datacenters",
"headquarters",
"privacy_policy_url",
"status_page_url",
"terms_of_service_url",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k)
serialized.pop(k, None)
val = serialized.get(k, serialized.get(n))
is_nullable_and_explicitly_set = (
k in nullable_fields
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
)
optional_nullable = k in optional_fields and k in nullable_fields
is_set = (
self.__pydantic_fields_set__.intersection({n})
or k in null_default_fields
) # pylint: disable=no-member
if val is not None and val != UNSET_SENTINEL:
m[k] = val
elif val != UNSET_SENTINEL and (
not k in optional_fields or (optional_nullable and is_set)
):
m[k] = val
if val != UNSET_SENTINEL:
if (
val is not None
or k not in optional_fields
or is_nullable_and_explicitly_set
):
m[k] = val
return m
+34 -24
View File
@@ -59,6 +59,24 @@ class ListVideosContentGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListVideosContentRequestTypedDict(TypedDict):
job_id: str
@@ -120,35 +138,27 @@ class ListVideosContentRequest(BaseModel):
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = [
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"index",
]
nullable_fields = ["index"]
null_default_fields = []
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "index"]
)
nullable_fields = set(["index"])
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k)
serialized.pop(k, None)
val = serialized.get(k, serialized.get(n))
is_nullable_and_explicitly_set = (
k in nullable_fields
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
)
optional_nullable = k in optional_fields and k in nullable_fields
is_set = (
self.__pydantic_fields_set__.intersection({n})
or k in null_default_fields
) # pylint: disable=no-member
if val is not None and val != UNSET_SENTINEL:
m[k] = val
elif val != UNSET_SENTINEL and (
not k in optional_fields or (optional_nullable and is_set)
):
m[k] = val
if val != UNSET_SENTINEL:
if (
val is not None
or k not in optional_fields
or is_nullable_and_explicitly_set
):
m[k] = val
return m
+38 -1
View File
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class ListVideosModelsGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListVideosModelsRequestTypedDict(TypedDict):
http_referer: NotRequired[str]
@@ -98,3 +117,21 @@ class ListVideosModelsRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
@@ -1,9 +1,10 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, PathParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -53,6 +54,24 @@ class ListWorkspaceBudgetsGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListWorkspaceBudgetsRequestTypedDict(TypedDict):
id: str
@@ -105,3 +124,21 @@ class ListWorkspaceBudgetsRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+44 -1
View File
@@ -4,9 +4,10 @@ from __future__ import annotations
from openrouter.components import (
listworkspacesresponse as components_listworkspacesresponse,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata
import pydantic
from pydantic import model_serializer
from typing import Awaitable, Callable, Optional, Union
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -56,6 +57,24 @@ class ListWorkspacesGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListWorkspacesRequestTypedDict(TypedDict):
http_referer: NotRequired[str]
@@ -118,6 +137,30 @@ class ListWorkspacesRequest(BaseModel):
] = None
r"""Maximum number of records to return (max 100)"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"offset",
"limit",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class ListWorkspacesResponseTypedDict(TypedDict):
result: components_listworkspacesresponse.ListWorkspacesResponseTypedDict
+88 -9
View File
@@ -2,15 +2,10 @@
from __future__ import annotations
from datetime import datetime
from openrouter.types import BaseModel, UnrecognizedStr
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
RequestMetadata,
validate_open_enum,
)
from openrouter.types import BaseModel, UNSET_SENTINEL, UnrecognizedStr
from openrouter.utils import FieldMetadata, HeaderMetadata, RequestMetadata
import pydantic
from pydantic.functional_validators import PlainValidator
from pydantic import model_serializer
from typing import List, Literal, Optional, Union
from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
@@ -60,6 +55,24 @@ class QueryAnalyticsGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
Value2TypedDict = TypeAliasType("Value2TypedDict", Union[str, float])
@@ -113,7 +126,7 @@ class OrderByTypedDict(TypedDict):
class OrderBy(BaseModel):
direction: Annotated[Direction, PlainValidator(validate_open_enum(False))]
direction: Direction
field: str
r"""Field to order by"""
@@ -164,6 +177,32 @@ class QueryAnalyticsRequestBody(BaseModel):
time_range: Optional[TimeRange] = None
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"dimensions",
"filters",
"granularity",
"group_limit",
"limit",
"order_by",
"time_range",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class QueryAnalyticsRequestTypedDict(TypedDict):
request_body: QueryAnalyticsRequestBodyTypedDict
@@ -216,6 +255,24 @@ class QueryAnalyticsRequest(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class QueryAnalyticsData1TypedDict(TypedDict):
r"""A row of analytics data with metric/dimension values"""
@@ -257,6 +314,22 @@ class QueryAnalyticsData2(BaseModel):
warnings: Optional[List[str]] = None
r"""Warnings about filter resolution issues (e.g. unresolvable api_key_id hashes). The query still runs normally; these inform the caller that some filter values could not be resolved."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(["cachedAt", "warnings"])
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class QueryAnalyticsResponseTypedDict(TypedDict):
r"""Analytics query results"""
@@ -268,3 +341,9 @@ class QueryAnalyticsResponse(BaseModel):
r"""Analytics query results"""
data: QueryAnalyticsData2
try:
QueryAnalyticsData2.model_rebuild()
except NameError:
pass
@@ -7,16 +7,15 @@ from openrouter.components import (
chatstreamchunk as components_chatstreamchunk,
metadatalevel as components_metadatalevel,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
RequestMetadata,
eventstreaming,
validate_open_enum,
)
import pydantic
from pydantic.functional_validators import PlainValidator
from pydantic import model_serializer
from typing import Optional, Union
from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
@@ -66,6 +65,24 @@ class SendChatCompletionRequestGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class SendChatCompletionRequestRequestTypedDict(TypedDict):
chat_request: components_chatrequest.ChatRequestTypedDict
@@ -121,15 +138,35 @@ class SendChatCompletionRequestRequest(BaseModel):
"""
x_open_router_metadata: Annotated[
Annotated[
Optional[components_metadatalevel.MetadataLevel],
PlainValidator(validate_open_enum(False)),
],
Optional[components_metadatalevel.MetadataLevel],
pydantic.Field(alias="X-OpenRouter-Metadata"),
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
] = None
r"""Opt-in to surface routing metadata on the response under `openrouter_metadata`. Defaults to `disabled`. The legacy header `X-OpenRouter-Experimental-Metadata` is also accepted for backward compatibility."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"X-OpenRouter-Metadata",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
SendChatCompletionRequestResponseTypedDict = TypeAliasType(
"SendChatCompletionRequestResponseTypedDict",
+38 -1
View File
@@ -4,7 +4,7 @@ from __future__ import annotations
from openrouter.components import (
updatebyokkeyrequest as components_updatebyokkeyrequest,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
@@ -12,6 +12,7 @@ from openrouter.utils import (
RequestMetadata,
)
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -61,6 +62,24 @@ class UpdateBYOKKeyGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class UpdateBYOKKeyRequestTypedDict(TypedDict):
id: str
@@ -121,3 +140,21 @@ class UpdateBYOKKeyRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+38 -1
View File
@@ -4,7 +4,7 @@ from __future__ import annotations
from openrouter.components import (
updateguardrailrequest as components_updateguardrailrequest,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
@@ -12,6 +12,7 @@ from openrouter.utils import (
RequestMetadata,
)
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -61,6 +62,24 @@ class UpdateGuardrailGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class UpdateGuardrailRequestTypedDict(TypedDict):
id: str
@@ -121,3 +140,21 @@ class UpdateGuardrailRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+76 -57
View File
@@ -15,11 +15,9 @@ from openrouter.utils import (
HeaderMetadata,
PathParamMetadata,
RequestMetadata,
validate_open_enum,
)
import pydantic
from pydantic import model_serializer
from pydantic.functional_validators import PlainValidator
from typing import Literal, Optional, Union
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -69,6 +67,24 @@ class UpdateKeysGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
UpdateKeysLimitReset = Union[
Literal[
@@ -104,10 +120,7 @@ class UpdateKeysRequestBody(BaseModel):
limit: OptionalNullable[float] = UNSET
r"""New spending limit for the API key in USD"""
limit_reset: Annotated[
OptionalNullable[UpdateKeysLimitReset],
PlainValidator(validate_open_enum(False)),
] = UNSET
limit_reset: OptionalNullable[UpdateKeysLimitReset] = UNSET
r"""New limit reset type for the API key (daily, weekly, monthly, or null for no reset). Resets happen automatically at midnight UTC, and weeks are Monday through Sunday."""
name: Optional[str] = None
@@ -115,37 +128,28 @@ class UpdateKeysRequestBody(BaseModel):
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = [
"disabled",
"include_byok_in_limit",
"limit",
"limit_reset",
"name",
]
nullable_fields = ["limit", "limit_reset"]
null_default_fields = []
optional_fields = set(
["disabled", "include_byok_in_limit", "limit", "limit_reset", "name"]
)
nullable_fields = set(["limit", "limit_reset"])
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k)
serialized.pop(k, None)
val = serialized.get(k, serialized.get(n))
is_nullable_and_explicitly_set = (
k in nullable_fields
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
)
optional_nullable = k in optional_fields and k in nullable_fields
is_set = (
self.__pydantic_fields_set__.intersection({n})
or k in null_default_fields
) # pylint: disable=no-member
if val is not None and val != UNSET_SENTINEL:
m[k] = val
elif val != UNSET_SENTINEL and (
not k in optional_fields or (optional_nullable and is_set)
):
m[k] = val
if val != UNSET_SENTINEL:
if (
val is not None
or k not in optional_fields
or is_nullable_and_explicitly_set
):
m[k] = val
return m
@@ -208,6 +212,24 @@ class UpdateKeysRequest(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class UpdateKeysDataTypedDict(TypedDict):
r"""The updated API key information"""
@@ -324,38 +346,35 @@ class UpdateKeysData(BaseModel):
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = ["expires_at"]
nullable_fields = [
"creator_user_id",
"expires_at",
"limit",
"limit_remaining",
"limit_reset",
"updated_at",
]
null_default_fields = []
optional_fields = set(["expires_at"])
nullable_fields = set(
[
"creator_user_id",
"expires_at",
"limit",
"limit_remaining",
"limit_reset",
"updated_at",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k)
serialized.pop(k, None)
val = serialized.get(k, serialized.get(n))
is_nullable_and_explicitly_set = (
k in nullable_fields
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
)
optional_nullable = k in optional_fields and k in nullable_fields
is_set = (
self.__pydantic_fields_set__.intersection({n})
or k in null_default_fields
) # pylint: disable=no-member
if val is not None and val != UNSET_SENTINEL:
m[k] = val
elif val != UNSET_SENTINEL and (
not k in optional_fields or (optional_nullable and is_set)
):
m[k] = val
if val != UNSET_SENTINEL:
if (
val is not None
or k not in optional_fields
or is_nullable_and_explicitly_set
):
m[k] = val
return m
@@ -4,7 +4,7 @@ from __future__ import annotations
from openrouter.components import (
updateobservabilitydestinationrequest as components_updateobservabilitydestinationrequest,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
@@ -12,6 +12,7 @@ from openrouter.utils import (
RequestMetadata,
)
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -61,6 +62,24 @@ class UpdateObservabilityDestinationGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class UpdateObservabilityDestinationRequestTypedDict(TypedDict):
id: str
@@ -119,3 +138,21 @@ class UpdateObservabilityDestinationRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+38 -1
View File
@@ -4,7 +4,7 @@ from __future__ import annotations
from openrouter.components import (
updateworkspacerequest as components_updateworkspacerequest,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
@@ -12,6 +12,7 @@ from openrouter.utils import (
RequestMetadata,
)
import pydantic
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -61,6 +62,24 @@ class UpdateWorkspaceGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class UpdateWorkspaceRequestTypedDict(TypedDict):
id: str
@@ -121,3 +140,21 @@ class UpdateWorkspaceRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
+61 -3
View File
@@ -2,7 +2,7 @@
from __future__ import annotations
import io
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
@@ -11,6 +11,7 @@ from openrouter.utils import (
RequestMetadata,
)
import pydantic
from pydantic import model_serializer
from typing import IO, Optional, Union
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -60,10 +61,28 @@ class UploadFileGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class FileTypedDict(TypedDict):
file_name: str
content: Union[bytes, IO[bytes], io.BufferedReader]
content: Union[bytes, IO[bytes], io.IOBase]
content_type: NotRequired[str]
@@ -73,7 +92,7 @@ class File(BaseModel):
]
content: Annotated[
Union[bytes, IO[bytes], io.BufferedReader],
Union[bytes, IO[bytes], io.IOBase],
pydantic.Field(alias=""),
FieldMetadata(multipart=MultipartFormMetadata(content=True)),
]
@@ -84,6 +103,22 @@ class File(BaseModel):
FieldMetadata(multipart=True),
] = None
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(["contentType"])
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class UploadFileRequestBodyTypedDict(TypedDict):
file: FileTypedDict
@@ -151,3 +186,26 @@ class UploadFileRequest(BaseModel):
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
] = None
r"""Workspace to scope the request to. Defaults to the callers default workspace."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
[
"HTTP-Referer",
"X-OpenRouter-Title",
"X-OpenRouter-Categories",
"workspace_id",
]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
@@ -5,16 +5,15 @@ from openrouter.components import (
upsertworkspacebudgetrequest as components_upsertworkspacebudgetrequest,
workspacebudgetinterval as components_workspacebudgetinterval,
)
from openrouter.types import BaseModel
from openrouter.types import BaseModel, UNSET_SENTINEL
from openrouter.utils import (
FieldMetadata,
HeaderMetadata,
PathParamMetadata,
RequestMetadata,
validate_open_enum,
)
import pydantic
from pydantic.functional_validators import PlainValidator
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict
@@ -64,6 +63,24 @@ class UpsertWorkspaceBudgetGlobals(BaseModel):
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m
class UpsertWorkspaceBudgetRequestTypedDict(TypedDict):
id: str
@@ -95,10 +112,7 @@ class UpsertWorkspaceBudgetRequest(BaseModel):
r"""The workspace ID (UUID) or slug"""
interval: Annotated[
Annotated[
components_workspacebudgetinterval.WorkspaceBudgetInterval,
PlainValidator(validate_open_enum(False)),
],
components_workspacebudgetinterval.WorkspaceBudgetInterval,
FieldMetadata(path=PathParamMetadata(style="simple", explode=False)),
]
r"""Budget reset interval. Use \"lifetime\" for a one-time budget that never resets."""
@@ -135,3 +149,21 @@ class UpsertWorkspaceBudgetRequest(BaseModel):
r"""Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings.
"""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
optional_fields = set(
["HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories"]
)
serialized = handler(self)
m = {}
for n, f in type(self).model_fields.items():
k = f.alias or n
val = serialized.get(k, serialized.get(n))
if val != UNSET_SENTINEL:
if val is not None or k not in optional_fields:
m[k] = val
return m