From 76d6ce57e99af7fc991946c4a7695e6e5e228724 Mon Sep 17 00:00:00 2001 From: Matt Apperson Date: Tue, 30 Jun 2026 16:08:25 -0400 Subject: [PATCH] docs: Mintlify MDX docs + docs.json; bump Speakeasy to 1.787.0 Enable Speakeasy's Mintlify documentation mode and wire this repo up as a Mintlify multi-repo source. The mintlify mdx emitter for the Python generator landed in generator v0.11.0 (Speakeasy CLI 1.787.0), so this also bumps the pinned speakeasyVersion and regenerates the SDK source. - workflow.yaml: speakeasyVersion 1.680.0 -> 1.787.0 - gen.yaml: add `documentation: mintlify` (Python generator now 0.11.0) - docs/: Mintlify `.mdx` output (natural Speakeasy tree) - docs/docs.json: hand-written secondary-source config (theme, name, colors, navigation listing the 27 service pages + overview). Type pages are left out of nav and served by Mintlify as hidden-but-reachable pages - docs/overview.mdx: install + quickstart landing page - .genignore: protect docs/docs.json and docs/overview.mdx from regeneration - .gitignore: stop ignoring /docs so the generated tree is committed - SDK source regenerated by the generator bump; pyproject version 0.10.8 -> 0.11.0 and requires-python >=3.9.2 -> >=3.10 Verified locally: `uv build`, `mypy src` (700 files, clean), `pyright src` (0 errors) all pass. --- .genignore | 4 +- .gitignore | 1 - .speakeasy/gen.lock | 14318 ++++++++-------- .speakeasy/gen.yaml | 20 +- .speakeasy/workflow.lock | 15 +- .speakeasy/workflow.yaml | 2 +- README.md | 2 +- docs/components/aabenchmarkentry.mdx | 14 + docs/components/action.mdx | 24 + docs/components/actionenum.mdx | 21 + docs/components/actionfindinpage.mdx | 11 + docs/components/actionopenpage.mdx | 10 + docs/components/actiontypesearch.mdx | 15 + .../{activityitem.md => activityitem.mdx} | 5 +- docs/components/activityresponse.mdx | 9 + docs/components/advisornestedtool.mdx | 14 + docs/components/advisorreasoning.mdx | 13 + docs/components/advisorreasoningeffort.mdx | 27 + docs/components/advisorservertoolconfig.mdx | 21 + .../advisorservertoolopenrouter.mdx | 13 + .../advisorservertoolopenroutertype.mdx | 15 + docs/components/allowedtools.mdx | 10 + docs/components/allowedtoolsunion.mdx | 24 + docs/components/always.mdx | 9 + docs/components/annotationaddedevent.mdx | 18 + docs/components/annotationaddedeventtype.mdx | 15 + .../anthropicadvisormessageusageiteration.mdx | 15 + ...hropicadvisormessageusageiterationtype.mdx | 15 + docs/components/anthropicallowedcallers.mdx | 21 + .../components/anthropicbase64imagesource.mdx | 11 + .../anthropicbase64imagesourcetype.mdx | 15 + docs/components/anthropicbase64pdfsource.mdx | 11 + .../anthropicbase64pdfsourcemediatype.mdx | 15 + .../anthropicbase64pdfsourcetype.mdx | 15 + .../anthropiccachecontroldirective.mdx | 13 + .../anthropiccachecontroldirectivetype.mdx | 15 + docs/components/anthropiccachecontrolttl.mdx | 20 + .../anthropiccitationcharlocationparam.mdx | 14 + ...anthropiccitationcharlocationparamtype.mdx | 15 + ...ropiccitationcontentblocklocationparam.mdx | 14 + ...ccitationcontentblocklocationparamtype.mdx | 15 + .../anthropiccitationpagelocationparam.mdx | 14 + ...anthropiccitationpagelocationparamtype.mdx | 15 + .../anthropiccitationsearchresultlocation.mdx | 15 + ...hropiccitationsearchresultlocationtype.mdx | 15 + ...thropiccitationwebsearchresultlocation.mdx | 13 + ...piccitationwebsearchresultlocationtype.mdx | 15 + .../anthropiccompactionusageiteration.mdx | 14 + .../anthropiccompactionusageiterationtype.mdx | 15 + .../anthropicdocumentblockparam.mdx | 14 + .../anthropicdocumentblockparamcitations.mdx | 9 + .../anthropicdocumentblockparamcontent1.mdx | 18 + .../anthropicdocumentblockparamcontent2.mdx | 18 + ...anthropicdocumentblockparamsourceunion.mdx | 36 + .../anthropicfiledocumentsource.mdx | 10 + .../anthropicfiledocumentsourcetype.mdx | 15 + docs/components/anthropicimageblockparam.mdx | 11 + .../anthropicimageblockparamsource.mdx | 18 + .../anthropicimageblockparamtype.mdx | 15 + docs/components/anthropicimagemimetype.mdx | 22 + .../anthropicinputtokensclearatleast.mdx | 10 + .../anthropicinputtokensclearatleasttype.mdx | 15 + .../anthropicinputtokenstrigger.mdx | 10 + .../anthropicinputtokenstriggertype.mdx | 15 + .../anthropiciterationcachecreation.mdx | 10 + .../anthropicmessageusageiteration.mdx | 15 + .../anthropicmessageusageiterationtype.mdx | 15 + docs/components/anthropicplaintextsource.mdx | 11 + .../anthropicplaintextsourcemediatype.mdx | 15 + .../anthropicplaintextsourcetype.mdx | 15 + .../anthropicsearchresultblockparam.mdx | 14 + ...thropicsearchresultblockparamcitations.mdx | 9 + .../anthropicsearchresultblockparamtype.mdx | 15 + docs/components/anthropicspeed.mdx | 20 + docs/components/anthropictextblockparam.mdx | 12 + .../anthropictextblockparamtype.mdx | 15 + docs/components/anthropicthinkingdisplay.mdx | 20 + docs/components/anthropicthinkingturns.mdx | 10 + .../components/anthropicthinkingturnstype.mdx | 15 + docs/components/anthropictooluseskeep.mdx | 10 + docs/components/anthropictooluseskeeptype.mdx | 15 + docs/components/anthropictoolusestrigger.mdx | 10 + .../anthropictoolusestriggertype.mdx | 15 + .../anthropicunknownusageiteration.mdx | 14 + docs/components/anthropicurlimagesource.mdx | 10 + .../anthropicurlimagesourcetype.mdx | 15 + docs/components/anthropicurlpdfsource.mdx | 10 + docs/components/anthropicurlpdfsourcetype.mdx | 15 + docs/components/anthropicusageiteration.mdx | 30 + .../anthropicwebsearchresultblockparam.mdx | 13 + ...anthropicwebsearchresultblockparamtype.mdx | 15 + .../anthropicwebsearchtooluserlocation.mdx | 13 + ...anthropicwebsearchtooluserlocationtype.mdx | 15 + docs/components/apierrortype.mdx | 47 + docs/components/apitype.mdx | 27 + docs/components/applypatchcallitem.mdx | 16 + docs/components/applypatchcallitemtype.mdx | 15 + docs/components/applypatchcalloperation.mdx | 27 + .../applypatchcalloperationdiffdeltaevent.mdx | 16 + ...lypatchcalloperationdiffdeltaeventtype.mdx | 15 + .../applypatchcalloperationdiffdoneevent.mdx | 16 + ...plypatchcalloperationdiffdoneeventtype.mdx | 15 + docs/components/applypatchcalloutputitem.mdx | 16 + .../applypatchcalloutputitemstatus.mdx | 20 + .../applypatchcalloutputitemtype.mdx | 15 + docs/components/applypatchcallstatus.mdx | 22 + .../applypatchcreatefileoperation.mdx | 14 + .../applypatchcreatefileoperationtype.mdx | 15 + .../applypatchdeletefileoperation.mdx | 13 + .../applypatchdeletefileoperationtype.mdx | 15 + docs/components/applypatchengineenum.mdx | 23 + docs/components/applypatchservertool.mdx | 12 + .../components/applypatchservertoolconfig.mdx | 12 + .../applypatchservertoolopenrouter.mdx | 13 + .../applypatchservertoolopenroutertype.mdx | 15 + docs/components/applypatchservertooltype.mdx | 15 + .../applypatchupdatefileoperation.mdx | 14 + .../applypatchupdatefileoperationtype.mdx | 15 + docs/components/apprankingsitem.mdx | 13 + docs/components/apprankingsresponse.mdx | 10 + .../{architecture.md => architecture.mdx} | 12 +- .../imageurl.md => components/audiourl.mdx} | 5 +- docs/components/autorouterplugin.mdx | 12 + docs/components/autorouterpluginid.mdx | 15 + ...ata.md => badgatewayresponseerrordata.mdx} | 4 +- ...ata.md => badrequestresponseerrordata.mdx} | 4 +- docs/components/baseinputscontent1.mdx | 30 + docs/components/baseinputscontent2.mdx | 18 + docs/components/baseinputsmessage.mdx | 12 + docs/components/baseinputsphasecommentary.mdx | 15 + .../components/baseinputsphasefinalanswer.mdx | 15 + docs/components/baseinputsphaseunion.mdx | 24 + docs/components/baseinputsroleassistant.mdx | 15 + docs/components/baseinputsroledeveloper.mdx | 15 + docs/components/baseinputsrolesystem.mdx | 15 + docs/components/baseinputsroleunion.mdx | 30 + docs/components/baseinputsroleuser.mdx | 15 + docs/components/baseinputstype.mdx | 15 + docs/components/baseinputsunion.mdx | 24 + docs/components/baseinputsunion1.mdx | 66 + docs/components/basereasoningconfig.mdx | 10 + docs/components/bashservertool.mdx | 13 + docs/components/bashservertoolconfig.mdx | 14 + docs/components/bashservertoolengine.mdx | 23 + docs/components/bashservertoolenvironment.mdx | 21 + docs/components/bashservertooltype.mdx | 15 + docs/components/billable.mdx | 23 + docs/components/booleancapability.mdx | 12 + docs/components/booleancapabilitytype.mdx | 15 + .../bulkaddworkspacemembersrequest.mdx | 9 + .../bulkaddworkspacemembersresponse.mdx | 10 + docs/components/bulkassignkeysrequest.mdx | 9 + docs/components/bulkassignkeysresponse.mdx | 9 + docs/components/bulkassignmembersrequest.mdx | 9 + docs/components/bulkassignmembersresponse.mdx | 9 + .../bulkremoveworkspacemembersrequest.mdx | 9 + .../bulkremoveworkspacemembersresponse.mdx | 9 + docs/components/bulkunassignkeysrequest.mdx | 9 + docs/components/bulkunassignkeysresponse.mdx | 9 + .../components/bulkunassignmembersrequest.mdx | 9 + .../bulkunassignmembersresponse.mdx | 9 + docs/components/by.md | 13 - docs/components/by.mdx | 24 + docs/components/byokkey.mdx | 20 + docs/components/byokproviderslug.mdx | 108 + docs/components/caching.mdx | 13 + docs/components/capabilitydescriptor.mdx | 27 + docs/components/chatassistantimages.mdx | 9 + .../chatassistantimagesimageurl.mdx | 9 + docs/components/chatassistantmessage.mdx | 20 + .../chatassistantmessagecontent.mdx | 27 + docs/components/chatassistantmessagerole.mdx | 15 + docs/components/chataudiooutput.mdx | 15 + docs/components/chatchoice.mdx | 15 + docs/components/chatcontentaudio.mdx | 13 + .../components/chatcontentaudioinputaudio.mdx | 10 + docs/components/chatcontentaudiotype.mdx | 15 + docs/components/chatcontentcachecontrol.mdx | 13 + .../chatcontentcachecontroltype.mdx | 15 + docs/components/chatcontentfile.mdx | 13 + docs/components/chatcontentfiletype.mdx | 15 + docs/components/chatcontentimage.mdx | 13 + docs/components/chatcontentimagedetail.mdx | 24 + docs/components/chatcontentimageimageurl.mdx | 10 + docs/components/chatcontentimagetype.mdx | 15 + docs/components/chatcontentitems.mdx | 45 + docs/components/chatcontenttext.mdx | 14 + docs/components/chatcontenttexttype.mdx | 15 + docs/components/chatcontentvideo.mdx | 13 + docs/components/chatcontentvideoinput.mdx | 12 + docs/components/chatcontentvideotype.mdx | 15 + docs/components/chatdebugoptions.mdx | 12 + docs/components/chatdevelopermessage.mdx | 14 + .../chatdevelopermessagecontent.mdx | 21 + docs/components/chatdevelopermessagerole.mdx | 15 + docs/components/chatfinishreasonenum.mdx | 23 + docs/components/chatformatgrammarconfig.mdx | 13 + .../chatformatgrammarconfigtype.mdx | 15 + .../components/chatformatjsonschemaconfig.mdx | 13 + .../chatformatjsonschemaconfigtype.mdx | 15 + docs/components/chatformatpythonconfig.mdx | 12 + .../components/chatformatpythonconfigtype.mdx | 15 + docs/components/chatformattextconfig.mdx | 12 + docs/components/chatformattextconfigtype.mdx | 15 + docs/components/chatfunctiontool.mdx | 69 + docs/components/chatfunctiontoolfunction.mdx | 11 + .../chatfunctiontoolfunctionfunction.mdx | 15 + docs/components/chatfunctiontooltype.mdx | 15 + docs/components/chatjsonschemaconfig.mdx | 15 + docs/components/chatmessages.mdx | 39 + docs/components/chatnamedtoolchoice.mdx | 13 + .../chatnamedtoolchoicefunction.mdx | 9 + docs/components/chatnamedtoolchoicetype.mdx | 15 + .../chatreasoningsummaryverbosityenum.mdx | 21 + docs/components/chatrequest.mdx | 49 + docs/components/chatrequesteffort.mdx | 27 + docs/components/chatrequestplugin.mdx | 60 + docs/components/chatrequestreasoning.mdx | 13 + .../components/chatrequestreasoningeffort.mdx | 27 + docs/components/chatrequestservicetier.mdx | 25 + docs/components/chatresult.mdx | 20 + docs/components/chatresultobject.mdx | 15 + .../components/chatsearchmodelsservertool.mdx | 13 + .../chatsearchmodelsservertooltype.mdx | 15 + docs/components/chatservertoolchoice.mdx | 12 + docs/components/chatstreamchoice.mdx | 15 + docs/components/chatstreamchunk.mdx | 21 + docs/components/chatstreamchunkerror.mdx | 14 + docs/components/chatstreamchunkmetadata.mdx | 13 + docs/components/chatstreamchunkobject.mdx | 15 + docs/components/chatstreamdelta.mdx | 18 + docs/components/chatstreamdeltarole.mdx | 17 + docs/components/chatstreamingresponse.mdx | 9 + ...streamoptions.md => chatstreamoptions.mdx} | 4 +- docs/components/chatstreamtoolcall.mdx | 15 + .../components/chatstreamtoolcallfunction.mdx | 13 + docs/components/chatstreamtoolcalltype.mdx | 17 + docs/components/chatsystemmessage.mdx | 14 + docs/components/chatsystemmessagecontent.mdx | 21 + docs/components/chatsystemmessagerole.mdx | 15 + docs/components/chattokenlogprob.mdx | 15 + docs/components/chattokenlogprobs.mdx | 13 + ...prob.md => chattokenlogprobtoplogprob.mdx} | 5 +- docs/components/chattoolcall.mdx | 14 + docs/components/chattoolcallfunction.mdx | 10 + docs/components/chattoolcalltype.mdx | 15 + docs/components/chattoolchoice.mdx | 39 + docs/components/chattoolchoiceauto.mdx | 15 + docs/components/chattoolchoicenone.mdx | 15 + docs/components/chattoolchoicerequired.mdx | 15 + docs/components/chattoolmessage.mdx | 14 + docs/components/chattoolmessagecontent.mdx | 21 + docs/components/chattoolmessagerole.mdx | 15 + docs/components/chatusage.mdx | 20 + .../chatusagecompletiontokensdetails.mdx | 15 + .../chatusageprompttokensdetails.mdx | 15 + docs/components/chatusermessage.mdx | 14 + docs/components/chatusermessagecontent.mdx | 21 + docs/components/chatusermessagerole.mdx | 15 + docs/components/chatwebsearchshorthand.mdx | 21 + .../components/chatwebsearchshorthandtype.mdx | 22 + docs/components/citation.mdx | 36 + docs/components/cleartoolinputs.mdx | 24 + docs/components/code.md | 25 - docs/components/code.mdx | 36 + docs/components/codeinterpreterservertool.mdx | 13 + docs/components/codexlocalshelltool.mdx | 12 + docs/components/codexlocalshelltooltype.mdx | 15 + docs/components/command.mdx | 22 + docs/components/compactionitem.mdx | 14 + docs/components/compactionitemtype.mdx | 15 + docs/components/compoundfilter.mdx | 13 + docs/components/compoundfiltertype.mdx | 20 + docs/components/computeruseservertool.mdx | 15 + docs/components/computeruseservertooltype.mdx | 15 + docs/components/conflictresponseerrordata.mdx | 14 + docs/components/connectorid.mdx | 26 + docs/components/container.mdx | 18 + docs/components/containerauto.mdx | 11 + docs/components/containerautoenvironment.mdx | 12 + .../containerautoenvironmenttype.mdx | 15 + .../containerreferenceenvironment.mdx | 13 + .../containerreferenceenvironmenttype.mdx | 15 + docs/components/containertype.mdx | 15 + docs/components/contentcompaction.mdx | 11 + docs/components/contentfilteraction.mdx | 22 + .../components/contentfilterbuiltinaction.mdx | 23 + docs/components/contentfilterbuiltinentry.mdx | 15 + .../contentfilterbuiltinentryinput.mdx | 15 + docs/components/contentfilterbuiltinslug.mdx | 28 + docs/components/contentfilterentry.mdx | 14 + docs/components/contentpartaddedevent.mdx | 17 + docs/components/contentpartaddedeventpart.mdx | 24 + docs/components/contentpartaddedeventtype.mdx | 15 + docs/components/contentpartaudio.mdx | 10 + docs/components/contentpartaudiotype.mdx | 15 + docs/components/contentpartdoneevent.mdx | 17 + docs/components/contentpartdoneeventpart.mdx | 24 + docs/components/contentpartdoneeventtype.mdx | 15 + docs/components/contentpartimage.mdx | 10 + docs/components/contentpartimageimageurl.mdx | 9 + docs/components/contentpartimagetype.mdx | 15 + docs/components/contentpartinputaudio.mdx | 10 + docs/components/contentpartinputaudiotype.mdx | 15 + docs/components/contentpartinputfile.mdx | 10 + docs/components/contentpartinputfiletype.mdx | 15 + docs/components/contentpartinputvideo.mdx | 10 + docs/components/contentpartinputvideotype.mdx | 15 + docs/components/contentpartvideo.mdx | 10 + docs/components/contentpartvideotype.mdx | 15 + docs/components/contentredactedthinking.mdx | 10 + docs/components/contentservertooluse.mdx | 13 + docs/components/contentthinking.mdx | 11 + docs/components/contenttoolreference.mdx | 10 + docs/components/contenttoolresult.mdx | 13 + docs/components/contenttooluse.mdx | 13 + .../components/contentwebsearchtoolresult.mdx | 12 + .../contentwebsearchtoolresulterror.mdx | 10 + docs/components/contextcompressionengine.mdx | 17 + docs/components/contextcompressionplugin.mdx | 11 + .../components/contextcompressionpluginid.mdx | 15 + docs/components/contextmanagement.mdx | 9 + docs/components/contradiction.mdx | 10 + .../{costdetails.md => costdetails.mdx} | 4 +- docs/components/createbyokkeyrequest.mdx | 16 + docs/components/createbyokkeyresponse.mdx | 9 + docs/components/createguardrailrequest.mdx | 24 + docs/components/createguardrailresponse.mdx | 9 + .../createobservabilitydestinationrequest.mdx | 17 + ...ateobservabilitydestinationrequesttype.mdx | 37 + ...createobservabilitydestinationresponse.mdx | 9 + .../createpresetfrominferenceresponse.mdx | 12 + docs/components/createworkspacerequest.mdx | 19 + docs/components/createworkspaceresponse.mdx | 9 + docs/components/customtool.mdx | 15 + .../customtoolcallinputdeltaevent.mdx | 16 + .../customtoolcallinputdeltaeventtype.mdx | 15 + .../customtoolcallinputdoneevent.mdx | 16 + .../customtoolcallinputdoneeventtype.mdx | 15 + docs/components/customtoolcallitem.mdx | 17 + docs/components/customtoolcallitemtype.mdx | 15 + docs/components/customtoolcalloutputitem.mdx | 15 + .../customtoolcalloutputitemdetail.mdx | 22 + ...stomtoolcalloutputitemoutputinputimage.mdx | 14 + .../customtoolcalloutputitemoutputunion1.mdx | 24 + .../customtoolcalloutputitemoutputunion2.mdx | 18 + ...calloutputitemtypecustomtoolcalloutput.mdx | 15 + ...customtoolcalloutputitemtypeinputimage.mdx | 15 + docs/components/customtooltypecustom.mdx | 15 + docs/components/dabenchmarkentry.mdx | 16 + docs/components/datacollection.md | 14 - docs/components/datacollection.mdx | 25 + docs/components/dataregion.mdx | 22 + docs/components/datetimeservertool.mdx | 13 + docs/components/datetimeservertoolconfig.mdx | 12 + docs/components/datetimeservertooltype.mdx | 15 + docs/components/debug.mdx | 10 + docs/components/debugevent.mdx | 14 + docs/components/debugeventtype.mdx | 15 + docs/components/defaulteffort.mdx | 27 + ...ultparameters.md => defaultparameters.mdx} | 4 +- docs/components/deletebyokkeyresponse.mdx | 9 + docs/components/deleteguardrailresponse.mdx | 9 + ...deleteobservabilitydestinationresponse.mdx | 9 + .../deleteworkspacebudgetresponse.mdx | 9 + docs/components/deleteworkspaceresponse.mdx | 9 + docs/components/easyinputmessage.mdx | 12 + .../easyinputmessagecontentinputimage.mdx | 14 + .../easyinputmessagecontentunion1.mdx | 36 + .../easyinputmessagecontentunion2.mdx | 24 + docs/components/easyinputmessagedetail.mdx | 22 + .../easyinputmessagephasecommentary.mdx | 15 + .../easyinputmessagephasefinalanswer.mdx | 15 + .../components/easyinputmessagephaseunion.mdx | 27 + .../easyinputmessageroleassistant.mdx | 15 + .../easyinputmessageroledeveloper.mdx | 15 + .../components/easyinputmessagerolesystem.mdx | 15 + docs/components/easyinputmessageroleunion.mdx | 30 + docs/components/easyinputmessageroleuser.mdx | 15 + .../easyinputmessagetypeinputimage.mdx | 15 + .../easyinputmessagetypemessage.mdx | 15 + ...> edgenetworktimeoutresponseerrordata.mdx} | 4 +- docs/components/edit.mdx | 24 + docs/components/editclearthinking20251015.mdx | 10 + docs/components/editcleartooluses20250919.mdx | 14 + docs/components/editcompact20260112.mdx | 12 + docs/components/edittypeinputtokens.mdx | 15 + docs/components/endpointinfo.mdx | 11 + docs/components/endpointsmetadata.mdx | 10 + docs/components/endpointstatus.md | 13 - docs/components/endpointstatus.mdx | 24 + docs/components/enumcapability.mdx | 13 + docs/components/enumcapabilitytype.mdx | 15 + docs/components/environment.mdx | 23 + docs/components/errorcode.mdx | 23 + docs/components/errorevent.mdx | 16 + docs/components/erroreventtype.mdx | 15 + docs/components/event.mdx | 22 + docs/components/failedmodel.mdx | 11 + docs/components/fieldt.mdx | 30 + docs/components/file.mdx | 11 + .../{filecitation.md => filecitation.mdx} | 7 +- docs/components/filecitationtype.md | 8 - docs/components/filecitationtype.mdx | 15 + docs/components/filedeleteresponse.mdx | 13 + docs/components/filedeleteresponsetype.mdx | 15 + docs/components/filelistresponse.mdx | 16 + docs/components/filemetadata.mdx | 18 + docs/components/filemetadatatype.mdx | 15 + docs/components/fileparserplugin.mdx | 11 + docs/components/fileparserpluginid.mdx | 15 + docs/components/{filepath.md => filepath.mdx} | 7 +- docs/components/filepathtype.md | 8 - docs/components/filepathtype.mdx | 15 + docs/components/filesearchservertool.mdx | 16 + .../components/filesearchservertoolvalue1.mdx | 18 + .../components/filesearchservertoolvalue2.mdx | 30 + docs/components/filters.mdx | 11 + docs/components/filterstype.mdx | 24 + docs/components/filtersunion.mdx | 24 + ...data.md => forbiddenresponseerrordata.mdx} | 4 +- docs/components/format_.mdx | 18 + docs/components/formatenum.mdx | 20 + docs/components/formatgrammar.mdx | 11 + docs/components/formatjsonobjectconfig.mdx | 12 + .../components/formatjsonobjectconfigtype.mdx | 15 + docs/components/formatjsonschemaconfig.mdx | 16 + .../components/formatjsonschemaconfigtype.mdx | 15 + docs/components/formats.mdx | 27 + docs/components/formattext.mdx | 9 + docs/components/formattextconfig.mdx | 12 + docs/components/formattextconfigtype.mdx | 15 + docs/components/formattypegrammar.mdx | 15 + docs/components/formattypetext.mdx | 15 + docs/components/frameimage.mdx | 11 + docs/components/frameimageimageurl.mdx | 9 + docs/components/frameimagetype.mdx | 15 + docs/components/frametype.mdx | 22 + .../components/functioncallargsdeltaevent.mdx | 16 + .../functioncallargsdeltaeventtype.mdx | 15 + docs/components/functioncallargsdoneevent.mdx | 17 + .../functioncallargsdoneeventtype.mdx | 15 + docs/components/functioncallitem.mdx | 18 + docs/components/functioncallitemtype.mdx | 15 + docs/components/functioncalloutputitem.mdx | 16 + .../functioncalloutputitemdetail.mdx | 22 + ...functioncalloutputitemoutputinputimage.mdx | 14 + .../functioncalloutputitemoutputunion1.mdx | 24 + .../functioncalloutputitemoutputunion2.mdx | 18 + .../functioncalloutputitemstatus.mdx | 21 + ...oncalloutputitemtypefunctioncalloutput.mdx | 15 + .../functioncalloutputitemtypeinputimage.mdx | 15 + docs/components/fusionanalysisresult.mdx | 16 + .../fusioncallanalysiscompletedevent.mdx | 16 + .../fusioncallanalysiscompletedeventtype.mdx | 15 + .../fusioncallanalysisinprogressevent.mdx | 16 + .../fusioncallanalysisinprogresseventtype.mdx | 15 + docs/components/fusioncallcompletedevent.mdx | 15 + .../fusioncallcompletedeventtype.mdx | 15 + docs/components/fusioncallinprogressevent.mdx | 15 + .../fusioncallinprogresseventtype.mdx | 15 + docs/components/fusioncallpaneladdedevent.mdx | 16 + .../fusioncallpaneladdedeventtype.mdx | 15 + .../fusioncallpanelcompletedevent.mdx | 17 + .../fusioncallpanelcompletedeventtype.mdx | 15 + docs/components/fusioncallpaneldeltaevent.mdx | 17 + .../fusioncallpaneldeltaeventtype.mdx | 15 + .../components/fusioncallpanelfailedevent.mdx | 18 + .../fusioncallpanelfailedeventtype.mdx | 15 + .../fusioncallpanelreasoningdeltaevent.mdx | 17 + ...fusioncallpanelreasoningdeltaeventtype.mdx | 15 + docs/components/fusionplugin.mdx | 15 + docs/components/fusionpluginid.mdx | 15 + docs/components/fusionplugintool.mdx | 10 + docs/components/fusionservertoolconfig.mdx | 19 + .../fusionservertoolconfigeffort.mdx | 27 + .../fusionservertoolconfigreasoning.mdx | 13 + .../components/fusionservertoolconfigtool.mdx | 10 + .../components/fusionservertoolopenrouter.mdx | 13 + .../fusionservertoolopenroutertype.mdx | 15 + docs/components/fusionsource.mdx | 13 + docs/components/generationcontentdata.mdx | 13 + .../generationcontentdataoutput.mdx | 13 + docs/components/generationcontentresponse.mdx | 12 + docs/components/generationresponse.mdx | 12 + docs/components/generationresponsedata.mdx | 55 + docs/components/getbyokkeyresponse.mdx | 9 + docs/components/getguardrailresponse.mdx | 9 + .../getobservabilitydestinationresponse.mdx | 9 + docs/components/getpresetresponse.mdx | 12 + docs/components/getpresetversionresponse.mdx | 12 + docs/components/getworkspaceresponse.mdx | 9 + docs/components/group.mdx | 10 + docs/components/guardrail.mdx | 27 + docs/components/guardrailinterval.mdx | 23 + docs/components/ignore.mdx | 18 + docs/components/imageconfig.mdx | 24 + docs/components/imageendpoint.mdx | 18 + .../components/imagegencallcompletedevent.mdx | 15 + .../imagegencallcompletedeventtype.mdx | 15 + .../imagegencallgeneratingevent.mdx | 15 + .../imagegencallgeneratingeventtype.mdx | 15 + .../imagegencallinprogressevent.mdx | 15 + .../imagegencallinprogresseventtype.mdx | 15 + .../imagegencallpartialimageevent.mdx | 17 + .../imagegencallpartialimageeventtype.mdx | 15 + docs/components/imagegencompletedevent.mdx | 16 + .../components/imagegencompletedeventtype.mdx | 17 + docs/components/imagegenerationrequest.mdx | 25 + .../imagegenerationrequestaspectratio.mdx | 42 + .../imagegenerationrequestbackground.mdx | 23 + .../imagegenerationrequestoptions.mdx | 131 + .../imagegenerationrequestoutputformat.mdx | 24 + .../imagegenerationrequestprovider.mdx | 12 + .../imagegenerationrequestquality.mdx | 24 + .../imagegenerationrequestresolution.mdx | 24 + docs/components/imagegenerationresponse.mdx | 14 + .../imagegenerationresponsedata.mdx | 10 + docs/components/imagegenerationservertool.mdx | 22 + .../imagegenerationservertoolbackground.mdx | 21 + .../imagegenerationservertoolconfig.mdx | 13 + .../imagegenerationservertoolconfigunion.mdx | 24 + .../imagegenerationservertoolopenrouter.mdx | 13 + ...magegenerationservertoolopenroutertype.mdx | 15 + .../imagegenerationservertooloutputformat.mdx | 21 + .../imagegenerationservertoolquality.mdx | 22 + .../imagegenerationservertooltype.mdx | 15 + docs/components/imagegenerationstatus.md | 11 - docs/components/imagegenerationstatus.mdx | 22 + docs/components/imagegenerationusage.mdx | 23 + ...generationusagecompletiontokensdetails.mdx | 11 + ...magegenerationusageprompttokensdetails.mdx | 16 + docs/components/imagegenpartialimageevent.mdx | 14 + .../imagegenpartialimageeventtype.mdx | 17 + docs/components/imagegenstreamerrorevent.mdx | 13 + .../imagegenstreamerroreventerror.mdx | 15 + .../imagegenstreamerroreventtype.mdx | 17 + docs/components/imagemodelarchitecture.mdx | 10 + .../imagemodelendpointsresponse.mdx | 13 + docs/components/imagemodellistitem.mdx | 19 + docs/components/imagemodelslistresponse.mdx | 12 + docs/components/imageoutputmodality.mdx | 26 + docs/components/imagepricingentry.mdx | 15 + docs/components/imagestreamingresponse.mdx | 9 + .../components/imagestreamingresponsedata.mdx | 24 + docs/components/incompletedetails.mdx | 9 + docs/components/input1.mdx | 9 + docs/components/input2.mdx | 9 + docs/components/inputaudio.mdx | 13 + docs/components/inputaudioinputaudio.mdx | 10 + docs/components/inputaudiotype.mdx | 15 + docs/components/inputfidelity.mdx | 20 + docs/components/inputfile.mdx | 16 + docs/components/inputfiletype.mdx | 15 + docs/components/inputimage.mdx | 14 + docs/components/inputimagedetail.mdx | 22 + docs/components/inputimagemask.mdx | 10 + docs/components/inputimagetype.mdx | 15 + docs/components/inputmessageitem.mdx | 12 + .../inputmessageitemcontentinputimage.mdx | 14 + .../inputmessageitemcontentunion.mdx | 36 + docs/components/inputmessageitemdetail.mdx | 22 + .../inputmessageitemroledeveloper.mdx | 15 + .../components/inputmessageitemrolesystem.mdx | 15 + docs/components/inputmessageitemroleunion.mdx | 24 + docs/components/inputmessageitemroleuser.mdx | 15 + .../inputmessageitemtypeinputimage.mdx | 15 + .../inputmessageitemtypemessage.mdx | 15 + docs/components/inputmodality.md | 12 - docs/components/inputmodality.mdx | 23 + docs/components/inputreference.mdx | 27 + docs/components/inputschema.mdx | 12 + ...utmessagecontent.md => inputscontent1.mdx} | 5 +- docs/components/inputscontent2.mdx | 24 + docs/components/inputsmessage.mdx | 17 + docs/components/inputsphasecommentary.mdx | 15 + docs/components/inputsphasefinalanswer.mdx | 15 + docs/components/inputsphaseunion.mdx | 27 + docs/components/inputsreasoning.mdx | 19 + docs/components/inputsrole.mdx | 15 + docs/components/inputsstatuscompleted1.mdx | 15 + docs/components/inputsstatuscompleted2.mdx | 15 + docs/components/inputsstatusincomplete1.mdx | 15 + docs/components/inputsstatusincomplete2.mdx | 15 + docs/components/inputsstatusinprogress1.mdx | 15 + docs/components/inputsstatusinprogress2.mdx | 15 + docs/components/inputsstatusunion1.mdx | 24 + docs/components/inputsstatusunion2.mdx | 24 + docs/components/inputstypemessage.mdx | 15 + docs/components/inputstypereasoning.mdx | 15 + docs/components/inputsunion.mdx | 21 + docs/components/inputsunion1.mdx | 276 + docs/components/inputtext.mdx | 13 + docs/components/inputtexttype.mdx | 15 + ...okensdetails.md => inputtokensdetails.mdx} | 5 +- docs/components/inputunion.mdx | 21 + docs/components/inputvideo.mdx | 13 + docs/components/inputvideotype.mdx | 15 + docs/components/instructtype.md | 31 - docs/components/instructtype.mdx | 42 + ...md => internalserverresponseerrordata.mdx} | 4 +- docs/components/itemreferenceitem.mdx | 13 + docs/components/itemreferenceitemtype.mdx | 15 + docs/components/keep.mdx | 24 + docs/components/keepall.mdx | 9 + docs/components/keepenum.mdx | 15 + docs/components/keeptype.mdx | 15 + docs/components/keyassignment.mdx | 15 + docs/components/legacychatcontentvideo.mdx | 15 + .../components/legacychatcontentvideotype.mdx | 15 + docs/components/legacywebsearchservertool.mdx | 17 + .../legacywebsearchservertooltype.mdx | 15 + docs/components/listbyokkeysresponse.mdx | 10 + docs/components/listendpointsresponse.md | 15 - docs/components/listendpointsresponse.mdx | 17 + docs/components/listguardrailsresponse.mdx | 10 + .../components/listkeyassignmentsresponse.mdx | 10 + .../listmemberassignmentsresponse.mdx | 10 + .../listobservabilitydestinationsresponse.mdx | 10 + docs/components/listpresetsresponse.mdx | 13 + .../components/listpresetversionsresponse.mdx | 13 + .../listworkspacebudgetsresponse.mdx | 9 + docs/components/listworkspacesresponse.mdx | 10 + docs/components/localshellcallitem.mdx | 16 + docs/components/localshellcallitemaction.mdx | 14 + docs/components/localshellcalloutputitem.mdx | 15 + .../localshellcalloutputitemstatus.mdx | 21 + .../localshellcalloutputitemtype.mdx | 15 + docs/components/logic.mdx | 20 + docs/components/logprob.mdx | 12 + docs/components/maxprice.mdx | 16 + docs/components/mcpapprovalrequestitem.mdx | 16 + .../components/mcpapprovalrequestitemtype.mdx | 15 + docs/components/mcpapprovalresponseitem.mdx | 16 + .../mcpapprovalresponseitemtype.mdx | 15 + docs/components/mcpcallitem.mdx | 18 + docs/components/mcpcallitemtype.mdx | 15 + docs/components/mcplisttoolsitem.mdx | 16 + docs/components/mcplisttoolsitemtool.mdx | 12 + docs/components/mcplisttoolsitemtype.mdx | 15 + docs/components/mcpservertool.mdx | 20 + docs/components/mcpservertooltype.mdx | 15 + docs/components/memberassignment.mdx | 14 + docs/components/memorylimit.mdx | 22 + .../messagesadvisortoolresultblock.mdx | 14 + .../messagesadvisortoolresultblocktype.mdx | 15 + docs/components/messagesfallbackparam.mdx | 13 + docs/components/messagesmessageparam.mdx | 13 + .../messagesmessageparamcontentunion1.mdx | 36 + .../messagesmessageparamcontentunion2.mdx | 18 + .../messagesmessageparamcontentunion3.mdx | 18 + .../messagesmessageparamcontentunion4.mdx | 78 + .../messagesmessageparamcontentunion5.mdx | 18 + docs/components/messagesmessageparamrole.mdx | 21 + .../messagesmessageparamtypecompaction.mdx | 15 + docs/components/messagesoutputconfig.mdx | 14 + .../components/messagesoutputconfigeffort.mdx | 25 + .../components/messagesoutputconfigformat.mdx | 13 + .../messagesoutputconfigtypejsonschema.mdx | 15 + docs/components/messagesrequest.mdx | 37 + docs/components/messagesrequestmetadata.mdx | 9 + docs/components/messagesrequestplugin.mdx | 60 + docs/components/messagesrequesttool.mdx | 10 + docs/components/messagesrequesttoolunion.mdx | 84 + docs/components/metadatalevel.mdx | 22 + docs/components/method.mdx | 20 + docs/components/modality.md | 10 - docs/components/modality.mdx | 21 + docs/components/mode.mdx | 18 + docs/components/modeauto.mdx | 15 + docs/components/{model.md => model.mdx} | 24 +- ...larchitecture.md => modelarchitecture.mdx} | 12 +- .../modelarchitectureinstructtype.md | 31 - .../modelarchitectureinstructtype.mdx | 42 + docs/components/modelbenchmarks.mdx | 13 + docs/components/modelenum.mdx | 20 + docs/components/modelgroup.md | 29 - docs/components/modelgroup.mdx | 40 + docs/components/modellinks.mdx | 12 + docs/components/modelreasoning.mdx | 16 + docs/components/modelresponse.mdx | 12 + ...untresponse.md => modelscountresponse.mdx} | 6 +- docs/components/modelscountresponsedata.mdx | 12 + ...listresponse.md => modelslistresponse.mdx} | 6 +- docs/components/moderation.mdx | 20 + docs/components/moderationplugin.mdx | 9 + docs/components/moderationpluginid.mdx | 15 + docs/components/moderequired.mdx | 15 + docs/components/multimodalmedia.mdx | 10 + docs/components/nameadvisor.mdx | 15 + docs/components/namebash.mdx | 15 + docs/components/namestrreplaceeditor.mdx | 15 + docs/components/namewebsearch1.mdx | 15 + docs/components/namewebsearch2.mdx | 15 + docs/components/never.mdx | 9 + ...rdata.md => notfoundresponseerrordata.mdx} | 4 +- .../observabilityarizedestination.mdx | 20 + .../observabilityarizedestinationconfig.mdx | 13 + .../observabilityarizedestinationtype.mdx | 15 + .../observabilitybraintrustdestination.mdx | 20 + ...servabilitybraintrustdestinationconfig.mdx | 12 + ...observabilitybraintrustdestinationtype.mdx | 15 + .../observabilityclickhousedestination.mdx | 20 + ...servabilityclickhousedestinationconfig.mdx | 14 + ...observabilityclickhousedestinationtype.mdx | 15 + .../observabilitydatadogdestination.mdx | 20 + .../observabilitydatadogdestinationconfig.mdx | 12 + .../observabilitydatadogdestinationtype.mdx | 15 + docs/components/observabilitydestination.mdx | 108 + .../observabilityfilterrulesconfig.mdx | 13 + .../observabilityfilterrulesconfigvalue.mdx | 18 + .../observabilitygrafanadestination.mdx | 20 + .../observabilitygrafanadestinationconfig.mdx | 12 + .../observabilitygrafanadestinationtype.mdx | 15 + .../observabilitylangfusedestination.mdx | 20 + ...observabilitylangfusedestinationconfig.mdx | 12 + .../observabilitylangfusedestinationtype.mdx | 15 + .../observabilitylangsmithdestination.mdx | 20 + ...bservabilitylangsmithdestinationconfig.mdx | 13 + .../observabilitylangsmithdestinationtype.mdx | 15 + .../observabilitynewrelicdestination.mdx | 20 + ...observabilitynewrelicdestinationconfig.mdx | 11 + .../observabilitynewrelicdestinationtype.mdx | 15 + .../observabilityopikdestination.mdx | 20 + .../observabilityopikdestinationconfig.mdx | 12 + .../observabilityopikdestinationtype.mdx | 15 + .../observabilityotelcollectordestination.mdx | 20 + ...vabilityotelcollectordestinationconfig.mdx | 10 + ...ervabilityotelcollectordestinationtype.mdx | 15 + .../observabilityposthogdestination.mdx | 20 + .../observabilityposthogdestinationconfig.mdx | 11 + .../observabilityposthogdestinationtype.mdx | 15 + .../observabilityrampdestination.mdx | 20 + .../observabilityrampdestinationconfig.mdx | 11 + .../observabilityrampdestinationtype.mdx | 15 + .../components/observabilitys3destination.mdx | 20 + .../observabilitys3destinationconfig.mdx | 17 + .../observabilitys3destinationtype.mdx | 15 + .../observabilitysentrydestination.mdx | 20 + .../observabilitysentrydestinationconfig.mdx | 11 + .../observabilitysentrydestinationtype.mdx | 15 + .../observabilitysnowflakedestination.mdx | 20 + ...bservabilitysnowflakedestinationconfig.mdx | 15 + .../observabilitysnowflakedestinationtype.mdx | 15 + .../observabilityweavedestination.mdx | 20 + .../observabilityweavedestinationconfig.mdx | 13 + .../observabilityweavedestinationtype.mdx | 15 + .../observabilitywebhookdestination.mdx | 20 + .../observabilitywebhookdestinationconfig.mdx | 11 + .../observabilitywebhookdestinationtype.mdx | 15 + docs/components/only.mdx | 18 + .../openairesponsecustomtoolcall.mdx | 14 + .../openairesponsecustomtoolcalloutput.mdx | 12 + ...nairesponsecustomtoolcalloutputoutput1.mdx | 24 + ...nairesponsecustomtoolcalloutputoutput2.mdx | 18 + ...openairesponsecustomtoolcalloutputtype.mdx | 15 + .../openairesponsecustomtoolcalltype.mdx | 15 + .../openairesponsefunctiontoolcall.mdx | 15 + .../openairesponsefunctiontoolcalloutput.mdx | 13 + ...iresponsefunctiontoolcalloutputoutput1.mdx | 24 + ...iresponsefunctiontoolcalloutputoutput2.mdx | 18 + ...airesponsefunctiontoolcalloutputstatus.mdx | 21 + ...enairesponsefunctiontoolcalloutputtype.mdx | 15 + .../openairesponsefunctiontoolcalltype.mdx | 15 + .../openairesponseinputmessageitem.mdx | 12 + .../openairesponseinputmessageitemcontent.mdx | 30 + ...iresponseinputmessageitemroledeveloper.mdx | 15 + ...enairesponseinputmessageitemrolesystem.mdx | 15 + ...penairesponseinputmessageitemroleunion.mdx | 24 + ...openairesponseinputmessageitemroleuser.mdx | 15 + .../openairesponseinputmessageitemtype.mdx | 15 + ...ation.md => openairesponsesannotation.mdx} | 5 +- ...t.md => openairesponsesrefusalcontent.mdx} | 7 +- .../openairesponsesrefusalcontenttype.md | 8 - .../openairesponsesrefusalcontenttype.mdx | 15 + .../openairesponsesresponsestatus.md | 13 - .../openairesponsesresponsestatus.mdx | 24 + ...hoice.md => openairesponsestoolchoice.mdx} | 7 +- .../openairesponsestoolchoiceapplypatch.mdx | 9 + .../openairesponsestoolchoiceauto.md | 8 - .../openairesponsestoolchoiceauto.mdx | 15 + ... => openairesponsestoolchoicefunction.mdx} | 7 +- .../openairesponsestoolchoicenone.md | 8 - .../openairesponsestoolchoicenone.mdx | 15 + .../openairesponsestoolchoicerequired.md | 8 - .../openairesponsestoolchoicerequired.mdx | 15 + .../openairesponsestoolchoiceshell.mdx | 9 + ...penairesponsestoolchoicetypeapplypatch.mdx | 15 + .../openairesponsestoolchoicetypefunction.md | 8 - .../openairesponsestoolchoicetypefunction.mdx | 15 + .../openairesponsestoolchoicetypeshell.mdx | 15 + ...responsestoolchoicetypewebsearchpreview.md | 8 - ...esponsestoolchoicetypewebsearchpreview.mdx | 15 + ...stoolchoicetypewebsearchpreview20250311.md | 8 - ...toolchoicetypewebsearchpreview20250311.mdx | 15 + ....md => openairesponsestoolchoiceunion.mdx} | 5 +- docs/components/openairesponsestruncation.md | 9 - docs/components/openairesponsestruncation.mdx | 20 + docs/components/openresponsescreatedevent.mdx | 14 + .../openresponsescreatedeventtype.mdx | 15 + .../openresponsesinprogressevent.mdx | 14 + .../openresponsesinprogresseventtype.mdx | 15 + docs/components/openresponsesresult.mdx | 47 + docs/components/openresponsesresultobject.mdx | 15 + .../openresponsesresulttoolfunction.mdx | 16 + .../openresponsesresulttoolunion.mdx | 90 + docs/components/openresponsesresulttype.mdx | 15 + docs/components/openroutermetadata.mdx | 18 + .../openrouterwebsearchservertool.mdx | 13 + .../openrouterwebsearchservertooltype.mdx | 15 + docs/components/operator.mdx | 31 + docs/components/order.mdx | 18 + docs/components/outcome.mdx | 18 + docs/components/outcomeexit.mdx | 10 + docs/components/outcometimeout.mdx | 9 + .../outputadvisorservertoolitem.mdx | 19 + .../outputadvisorservertoolitemtype.mdx | 15 + docs/components/outputapplypatchcallitem.mdx | 16 + .../outputapplypatchcallitemtype.mdx | 15 + .../outputapplypatchservertoolitem.mdx | 16 + .../outputapplypatchservertoolitemtype.mdx | 15 + docs/components/outputbashservertoolitem.mdx | 18 + .../outputbashservertoolitemtype.mdx | 15 + .../outputbrowseruseservertoolitem.mdx | 16 + .../outputbrowseruseservertoolitemtype.mdx | 15 + .../outputcodeinterpretercallitem.mdx | 17 + ...tputcodeinterpretercallitemoutputunion.mdx | 18 + ...outputcodeinterpretercallitemtypeimage.mdx | 15 + .../outputcodeinterpreterservertoolitem.mdx | 19 + ...utputcodeinterpreterservertoolitemtype.mdx | 15 + docs/components/outputcomputercallitem.mdx | 14 + .../outputcomputercallitemstatus.mdx | 21 + .../components/outputcomputercallitemtype.mdx | 15 + docs/components/outputcustomtoolcallitem.mdx | 17 + .../outputcustomtoolcallitemtype.mdx | 15 + docs/components/outputdatetimeitem.mdx | 16 + docs/components/outputdatetimeitemtype.mdx | 15 + docs/components/outputfilesearchcallitem.mdx | 12 + .../outputfilesearchcallitemtype.mdx | 15 + .../outputfilesearchservertoolitem.mdx | 15 + .../outputfilesearchservertoolitemtype.mdx | 15 + docs/components/outputfunctioncallitem.mdx | 15 + .../outputfunctioncallitemstatuscompleted.mdx | 15 + ...outputfunctioncallitemstatusincomplete.mdx | 15 + ...outputfunctioncallitemstatusinprogress.mdx | 15 + .../outputfunctioncallitemstatusunion.mdx | 24 + .../components/outputfunctioncallitemtype.mdx | 15 + .../components/outputfusionservertoolitem.mdx | 20 + .../outputfusionservertoolitemtype.mdx | 15 + docs/components/outputimage.mdx | 10 + .../outputimagegenerationcallitem.mdx | 12 + .../outputimagegenerationcallitemtype.mdx | 15 + .../outputimagegenerationservertoolitem.mdx | 18 + ...utputimagegenerationservertoolitemtype.mdx | 15 + ...l.md => outputitemimagegenerationcall.mdx} | 9 +- .../outputitemimagegenerationcalltype.md | 8 - .../outputitemimagegenerationcalltype.mdx | 15 + docs/components/outputitems.mdx | 183 + docs/components/outputlogs.mdx | 10 + docs/components/outputmcpservertoolitem.mdx | 16 + .../outputmcpservertoolitemtype.mdx | 15 + .../components/outputmemoryservertoolitem.mdx | 17 + .../outputmemoryservertoolitemtype.mdx | 15 + .../{outputmessage.md => outputmessage.mdx} | 15 +- docs/components/outputmessagecontent.mdx | 18 + docs/components/outputmessageitem.mdx | 17 + docs/components/outputmessageitemcontent.mdx | 18 + .../outputmessageitemphasecommentary.mdx | 15 + .../outputmessageitemphasefinalanswer.mdx | 15 + .../outputmessageitemphaseunion.mdx | 27 + docs/components/outputmessageitemrole.mdx | 15 + .../outputmessageitemstatuscompleted.mdx | 15 + .../outputmessageitemstatusincomplete.mdx | 15 + .../outputmessageitemstatusinprogress.mdx | 15 + .../outputmessageitemstatusunion.mdx | 24 + docs/components/outputmessageitemtype.mdx | 15 + .../outputmessagephasecommentary.mdx | 15 + .../outputmessagephasefinalanswer.mdx | 15 + docs/components/outputmessagephaseunion.mdx | 27 + docs/components/outputmessagerole.md | 8 - docs/components/outputmessagerole.mdx | 15 + .../outputmessagestatuscompleted.md | 8 - .../outputmessagestatuscompleted.mdx | 15 + .../outputmessagestatusincomplete.md | 8 - .../outputmessagestatusincomplete.mdx | 15 + .../outputmessagestatusinprogress.md | 8 - .../outputmessagestatusinprogress.mdx | 15 + ...sunion.md => outputmessagestatusunion.mdx} | 5 +- docs/components/outputmessagetype.md | 8 - docs/components/outputmessagetype.mdx | 15 + docs/components/outputmodality.md | 15 - docs/components/outputmodality.mdx | 26 + docs/components/outputmodalityenum.mdx | 20 + docs/components/outputreasoningitem.mdx | 19 + .../outputreasoningitemstatuscompleted.mdx | 15 + .../outputreasoningitemstatusincomplete.mdx | 15 + .../outputreasoningitemstatusinprogress.mdx | 15 + .../outputreasoningitemstatusunion.mdx | 24 + docs/components/outputreasoningitemtype.mdx | 15 + .../outputsearchmodelsservertoolitem.mdx | 16 + .../outputsearchmodelsservertoolitemtype.mdx | 15 + docs/components/outputshellcallitem.mdx | 16 + docs/components/outputshellcallitemaction.mdx | 11 + docs/components/outputshellcallitemtype.mdx | 15 + docs/components/outputshellcalloutputitem.mdx | 17 + .../outputshellcalloutputitemoutput.mdx | 11 + ...shellcalloutputitemtypeshellcalloutput.mdx | 15 + .../outputsubagentservertoolitem.mdx | 19 + .../outputsubagentservertoolitemtype.mdx | 15 + .../outputtexteditorservertoolitem.mdx | 16 + .../outputtexteditorservertoolitemtype.mdx | 15 + ...kensdetails.md => outputtokensdetails.mdx} | 5 +- .../outputtoolsearchservertoolitem.mdx | 15 + .../outputtoolsearchservertoolitemtype.mdx | 15 + .../outputwebfetchservertoolitem.mdx | 19 + .../outputwebfetchservertoolitemtype.mdx | 15 + docs/components/outputwebsearchcallitem.mdx | 12 + .../outputwebsearchcallitemactionsearch.mdx | 12 + .../outputwebsearchservertoolitem.mdx | 15 + .../outputwebsearchservertoolitemaction.mdx | 14 + .../outputwebsearchservertoolitemsource.mdx | 10 + ...hservertoolitemtypeopenrouterwebsearch.mdx | 15 + ...utputwebsearchservertoolitemtypesearch.mdx | 15 + .../outputwebsearchservertoolitemtypeurl.mdx | 15 + docs/components/parameter.md | 32 - docs/components/parameter.mdx | 43 + docs/components/paretorouterplugin.mdx | 11 + docs/components/paretorouterpluginid.mdx | 15 + docs/components/partialcoverage.mdx | 10 + docs/components/partition.md | 11 - docs/components/partition.mdx | 22 + ...d => payloadtoolargeresponseerrordata.mdx} | 4 +- ...d => paymentrequiredresponseerrordata.mdx} | 4 +- ...pdfparserengine.md => pdfparserengine.mdx} | 4 +- docs/components/pdfparserengineenum.mdx | 21 + docs/components/pdfparserenginepdftext.mdx | 15 + ...fparseroptions.md => pdfparseroptions.mdx} | 6 +- docs/components/pendingsafetycheck.mdx | 11 + ...utoffs.md => percentilelatencycutoffs.mdx} | 4 +- ...percentilestats.md => percentilestats.mdx} | 4 +- ...ffs.md => percentilethroughputcutoffs.mdx} | 4 +- ...rrequestlimits.md => perrequestlimits.mdx} | 4 +- docs/components/pipelinestage.mdx | 15 + docs/components/pipelinestagetype.mdx | 25 + ...dmaxlatency.md => preferredmaxlatency.mdx} | 4 +- ...roughput.md => preferredminthroughput.mdx} | 4 +- docs/components/preset.mdx | 22 + docs/components/presetdesignatedversion.mdx | 19 + docs/components/presetenum.mdx | 23 + docs/components/presetstatus.mdx | 23 + .../presetwithdesignatedversion.mdx | 23 + .../preview20250311websearchservertool.mdx | 17 + ...preview20250311websearchservertooltype.mdx | 15 + .../components/previewwebsearchservertool.mdx | 17 + .../previewwebsearchservertooltype.mdx | 15 + .../previewwebsearchuserlocation.mdx | 13 + .../previewwebsearchuserlocationtype.mdx | 15 + docs/components/{pricing.md => pricing.mdx} | 5 +- docs/components/promptinjectionscanscope.mdx | 22 + docs/components/providername.md | 98 - docs/components/providername.mdx | 109 + docs/components/provideroptions.mdx | 131 + ...> provideroverloadedresponseerrordata.mdx} | 4 +- ...preferences.md => providerpreferences.mdx} | 22 +- docs/components/providerresponse.mdx | 18 + .../providerresponseprovidername.mdx | 140 + docs/components/providersort.md | 13 - docs/components/providersort.mdx | 24 + ...ersortconfig.md => providersortconfig.mdx} | 8 +- .../{publicendpoint.md => publicendpoint.mdx} | 18 +- docs/components/publicendpointquantization.md | 16 - .../components/publicendpointquantization.mdx | 27 + .../{publicpricing.md => publicpricing.mdx} | 4 +- docs/components/quantization.md | 16 - docs/components/quantization.mdx | 27 + docs/components/rangecapability.mdx | 14 + docs/components/rangecapabilitytype.mdx | 15 + docs/components/ranker.mdx | 20 + docs/components/rankingoptions.mdx | 10 + docs/components/rankingsdailyitem.mdx | 11 + docs/components/rankingsdailymeta.mdx | 12 + docs/components/rankingsdailymetaversion.mdx | 17 + docs/components/rankingsdailyresponse.mdx | 10 + docs/components/reason.md | 9 - docs/components/reason.mdx | 20 + docs/components/reasoningconfig.mdx | 15 + docs/components/reasoningdeltaevent.mdx | 17 + docs/components/reasoningdeltaeventtype.mdx | 15 + ...rypted.md => reasoningdetailencrypted.mdx} | 8 +- .../reasoningdetailencryptedtype.md | 8 - .../reasoningdetailencryptedtype.mdx | 15 + ...lsummary.md => reasoningdetailsummary.mdx} | 8 +- docs/components/reasoningdetailsummarytype.md | 8 - .../components/reasoningdetailsummarytype.mdx | 15 + ...gdetailtext.md => reasoningdetailtext.mdx} | 8 +- docs/components/reasoningdetailtexttype.md | 8 - docs/components/reasoningdetailtexttype.mdx | 15 + ...etailunion.md => reasoningdetailunion.mdx} | 4 +- docs/components/reasoningdoneevent.mdx | 17 + docs/components/reasoningdoneeventtype.mdx | 15 + docs/components/reasoningeffort.mdx | 25 + docs/components/reasoningformat.mdx | 24 + docs/components/reasoningitem.mdx | 19 + .../reasoningitemstatuscompleted.mdx | 15 + .../reasoningitemstatusincomplete.mdx | 15 + .../reasoningitemstatusinprogress.mdx | 15 + docs/components/reasoningitemstatusunion.mdx | 24 + docs/components/reasoningitemtype.mdx | 15 + .../reasoningsummarypartaddedevent.mdx | 17 + .../reasoningsummarypartaddedeventtype.mdx | 15 + .../reasoningsummarypartdoneevent.mdx | 17 + .../reasoningsummarypartdoneeventtype.mdx | 15 + ...ummarytext.md => reasoningsummarytext.mdx} | 7 +- .../reasoningsummarytextdeltaevent.mdx | 17 + .../reasoningsummarytextdeltaeventtype.mdx | 15 + .../reasoningsummarytextdoneevent.mdx | 17 + .../reasoningsummarytextdoneeventtype.mdx | 15 + docs/components/reasoningsummarytexttype.md | 8 - docs/components/reasoningsummarytexttype.mdx | 15 + docs/components/reasoningsummaryverbosity.mdx | 21 + ...extcontent.md => reasoningtextcontent.mdx} | 7 +- docs/components/reasoningtextcontenttype.md | 8 - docs/components/reasoningtextcontenttype.mdx | 15 + docs/components/refusaldeltaevent.mdx | 17 + docs/components/refusaldeltaeventtype.mdx | 15 + docs/components/refusaldoneevent.mdx | 17 + docs/components/refusaldoneeventtype.mdx | 15 + docs/components/region.mdx | 20 + ...md => requesttimeoutresponseerrordata.mdx} | 4 +- docs/components/requireapproval.mdx | 10 + docs/components/requireapprovalalways.mdx | 15 + docs/components/requireapprovalnever.mdx | 15 + docs/components/requireapprovalunion.mdx | 30 + docs/components/resetinterval.mdx | 23 + docs/components/response.mdx | 10 + .../{responseformat.md => responseformat.mdx} | 4 +- docs/components/responseformatenum.mdx | 22 + docs/components/responsehealingplugin.mdx | 10 + docs/components/responsehealingpluginid.mdx | 15 + docs/components/responseincludesenum.mdx | 23 + ...seoutputtext.md => responseoutputtext.mdx} | 11 +- .../responseoutputtexttoplogprob.mdx | 11 + docs/components/responseoutputtexttype.md | 8 - docs/components/responseoutputtexttype.mdx | 15 + ...serrorfield.md => responseserrorfield.mdx} | 6 +- docs/components/responsesrequest.mdx | 49 + docs/components/responsesrequestplugin.mdx | 60 + .../responsesrequestservicetier.mdx | 23 + .../responsesrequesttoolfunction.mdx | 16 + docs/components/responsesrequesttoolunion.mdx | 156 + docs/components/responsesrequesttype.mdx | 15 + .../components/responsesstreamingresponse.mdx | 9 + docs/components/routerattempt.mdx | 11 + docs/components/routerparams.mdx | 12 + docs/components/routingstrategy.mdx | 27 + docs/components/rule.mdx | 11 + docs/components/searchcontextsizeenum.mdx | 23 + .../searchmodelsservertoolconfig.mdx | 12 + docs/components/searchqualitylevel.mdx | 23 + docs/components/{security.md => security.mdx} | 5 +- docs/components/servertooluse.mdx | 14 + docs/components/servertoolusedetails.mdx | 14 + ...> serviceunavailableresponseerrordata.mdx} | 4 +- docs/components/shellcallitem.mdx | 17 + docs/components/shellcallitemaction.mdx | 11 + docs/components/shellcallitemstatus.mdx | 21 + docs/components/shellcallitemtype.mdx | 15 + docs/components/shellcalloutputitem.mdx | 17 + docs/components/shellcalloutputitemoutput.mdx | 12 + docs/components/shellcalloutputitemstatus.mdx | 21 + docs/components/shellcalloutputitemtype.mdx | 15 + docs/components/shellcallstatus.mdx | 23 + docs/components/shellservertool.mdx | 12 + docs/components/shellservertoolconfig.mdx | 14 + docs/components/shellservertoolengine.mdx | 22 + .../components/shellservertoolenvironment.mdx | 21 + docs/components/shellservertoolopenrouter.mdx | 13 + .../shellservertoolopenroutertype.mdx | 15 + docs/components/shellservertooltype.mdx | 15 + docs/components/size.mdx | 22 + docs/components/sort.mdx | 27 + docs/components/sourcecontent.mdx | 10 + docs/components/sourcetype.mdx | 15 + docs/components/speechrequest.mdx | 17 + docs/components/speechrequestprovider.mdx | 12 + docs/components/speed.mdx | 22 + docs/components/stance.mdx | 10 + docs/components/{stop.md => stop.mdx} | 4 +- .../stopservertoolswhencondition.mdx | 39 + .../stopservertoolswhenfinishreasonis.mdx | 13 + .../stopservertoolswhenfinishreasonistype.mdx | 15 + .../stopservertoolswhenhastoolcall.mdx | 13 + .../stopservertoolswhenhastoolcalltype.mdx | 15 + .../components/stopservertoolswhenmaxcost.mdx | 13 + .../stopservertoolswhenmaxcosttype.mdx | 15 + .../stopservertoolswhenmaxtokensused.mdx | 13 + .../stopservertoolswhenmaxtokensusedtype.mdx | 15 + .../stopservertoolswhenstepcountis.mdx | 13 + .../stopservertoolswhenstepcountistype.mdx | 15 + docs/components/storedprompttemplate.mdx | 10 + docs/components/streamevents.mdx | 273 + .../streameventsresponsecompleted.mdx | 14 + .../streameventsresponsecompletedtype.mdx | 15 + .../components/streameventsresponsefailed.mdx | 14 + .../streameventsresponsefailedtype.mdx | 15 + .../streameventsresponseincomplete.mdx | 14 + .../streameventsresponseincompletetype.mdx | 15 + .../streameventsresponseoutputitemadded.mdx | 15 + ...treameventsresponseoutputitemaddedtype.mdx | 15 + .../streameventsresponseoutputitemdone.mdx | 15 + ...streameventsresponseoutputitemdonetype.mdx | 15 + docs/components/streamlogprob.mdx | 15 + docs/components/streamlogprobtoplogprob.mdx | 14 + docs/components/sttinputaudio.mdx | 13 + docs/components/sttrequest.mdx | 16 + docs/components/sttrequestprovider.mdx | 12 + docs/components/sttresponse.mdx | 13 + docs/components/sttusage.mdx | 16 + docs/components/subagentnestedtool.mdx | 14 + docs/components/subagentreasoning.mdx | 13 + docs/components/subagentreasoningeffort.mdx | 27 + docs/components/subagentservertoolconfig.mdx | 18 + .../subagentservertoolopenrouter.mdx | 13 + .../subagentservertoolopenroutertype.mdx | 15 + docs/components/supportedaspectratio.mdx | 27 + docs/components/supportedframeimage.mdx | 20 + docs/components/supportedresolution.mdx | 24 + docs/components/supportedsize.mdx | 54 + docs/components/syntax.mdx | 20 + docs/components/system.mdx | 18 + docs/components/taskbudget.mdx | 14 + docs/components/taskclassificationitem.mdx | 16 + .../taskclassificationmacrocategory.mdx | 12 + docs/components/taskclassificationmodel.mdx | 11 + .../components/taskclassificationresponse.mdx | 9 + .../taskclassificationresponsedata.mdx | 12 + docs/components/textdeltaevent.mdx | 18 + docs/components/textdeltaeventtype.mdx | 15 + docs/components/textdoneevent.mdx | 18 + docs/components/textdoneeventtype.mdx | 15 + docs/components/textextendedconfig.mdx | 13 + docs/components/thinking.mdx | 24 + docs/components/thinkingadaptive.mdx | 10 + docs/components/thinkingdisabled.mdx | 9 + docs/components/thinkingenabled.mdx | 11 + docs/components/timings.mdx | 11 + docs/components/tokenizer.md | 29 - docs/components/tokenizer.mdx | 40 + docs/components/tooladvisor20260301.mdx | 16 + docs/components/toolbash20250124.mdx | 11 + docs/components/toolcallstatus.mdx | 21 + docs/components/toolchoice.mdx | 30 + docs/components/toolchoiceallowed.mdx | 14 + docs/components/toolchoiceallowedtype.mdx | 15 + docs/components/toolchoiceany.mdx | 10 + docs/components/toolchoiceauto.mdx | 10 + docs/components/toolchoicenone.mdx | 9 + docs/components/toolchoicetool.mdx | 11 + docs/components/toolchoicetypeauto.mdx | 15 + docs/components/toolcustom.mdx | 13 + docs/components/tooltexteditor20250124.mdx | 11 + docs/components/tooltypecustom.mdx | 15 + docs/components/tooltypeephemeral.mdx | 15 + docs/components/toolwebsearch20250305.mdx | 15 + docs/components/toolwebsearch20260209.mdx | 16 + ...d => toomanyrequestsresponseerrordata.mdx} | 4 +- ...topproviderinfo.md => topproviderinfo.mdx} | 4 +- docs/components/tournamentstats.mdx | 16 + docs/components/traceconfig.mdx | 17 + docs/components/trigger.mdx | 18 + docs/components/triggerinputtokens.mdx | 10 + docs/components/truncation.mdx | 20 + docs/components/{type.md => type.mdx} | 5 +- docs/components/typeadaptive.mdx | 15 + docs/components/typeadvisor20260301.mdx | 15 + docs/components/typeany.mdx | 15 + docs/components/typebash20250124.mdx | 15 + docs/components/typeclearthinking20251015.mdx | 15 + docs/components/typecleartooluses20250919.mdx | 15 + docs/components/typecodeinterpreter.mdx | 15 + docs/components/typecodeinterpretercall.mdx | 15 + docs/components/typecompact20260112.mdx | 15 + docs/components/typedisabled.mdx | 15 + docs/components/typedocument.mdx | 15 + docs/components/typeenabled.mdx | 15 + docs/components/typeexec.mdx | 15 + docs/components/typeexit.mdx | 15 + docs/components/typefilesearch.mdx | 15 + docs/components/typefindinpage.mdx | 15 + docs/components/typelocalshellcall.mdx | 15 + docs/components/typelogs.mdx | 15 + docs/components/typenone.mdx | 15 + docs/components/typeopenpage.mdx | 15 + docs/components/typeredactedthinking.mdx | 15 + docs/components/typeservertooluse.mdx | 15 + docs/components/typetexteditor20250124.mdx | 15 + docs/components/typethinking.mdx | 15 + docs/components/typetimeout.mdx | 15 + docs/components/typetokens.mdx | 15 + docs/components/typetool.mdx | 15 + docs/components/typetoolreference.mdx | 15 + docs/components/typetoolresult.mdx | 15 + docs/components/typetooluse.mdx | 15 + docs/components/typewebsearch20250305.mdx | 15 + docs/components/typewebsearch20260209.mdx | 15 + docs/components/typewebsearchcall.mdx | 15 + docs/components/typewebsearchtoolresult.mdx | 15 + .../typewebsearchtoolresulterror.mdx | 15 + ...a.md => unauthorizedresponseerrordata.mdx} | 4 +- docs/components/unifiedbenchmarkpricing.mdx | 13 + docs/components/unifiedbenchmarksaaitem.mdx | 15 + .../unifiedbenchmarksaaitemsource.mdx | 17 + docs/components/unifiedbenchmarksdaitem.mdx | 18 + .../unifiedbenchmarksdaitemsource.mdx | 17 + docs/components/unifiedbenchmarksmeta.mdx | 15 + .../unifiedbenchmarksmetasource.mdx | 22 + .../unifiedbenchmarksmetaversion.mdx | 17 + docs/components/unifiedbenchmarksresponse.mdx | 10 + .../unifiedbenchmarksresponsedata.mdx | 18 + docs/components/uniqueinsight.mdx | 10 + docs/components/unit.mdx | 21 + ... unprocessableentityresponseerrordata.mdx} | 4 +- docs/components/updatebyokkeyrequest.mdx | 14 + docs/components/updatebyokkeyresponse.mdx | 9 + docs/components/updateguardrailrequest.mdx | 23 + docs/components/updateguardrailresponse.mdx | 9 + .../updateobservabilitydestinationrequest.mdx | 15 + ...updateobservabilitydestinationresponse.mdx | 9 + docs/components/updateworkspacerequest.mdx | 19 + docs/components/updateworkspaceresponse.mdx | 9 + .../upsertworkspacebudgetrequest.mdx | 9 + .../upsertworkspacebudgetresponse.mdx | 9 + .../{urlcitation.md => urlcitation.mdx} | 7 +- docs/components/urlcitationtype.md | 8 - docs/components/urlcitationtype.mdx | 15 + docs/components/usage.mdx | 19 + docs/components/usagecostdetails.mdx | 11 + docs/components/userlocation.mdx | 16 + .../{variables.md => variables.mdx} | 5 +- docs/components/verbosity.mdx | 23 + docs/components/videogenerationrequest.mdx | 20 + .../videogenerationrequestaspectratio.mdx | 29 + .../videogenerationrequestoptions.mdx | 131 + .../videogenerationrequestprovider.mdx | 12 + .../videogenerationrequestresolution.mdx | 26 + docs/components/videogenerationresponse.mdx | 15 + .../videogenerationresponsestatus.mdx | 24 + docs/components/videogenerationusage.mdx | 13 + docs/components/videomodel.mdx | 23 + docs/components/videomodelslistresponse.mdx | 9 + docs/components/videourl.mdx | 9 + docs/components/webfetchengineenum.mdx | 26 + docs/components/webfetchplugin.mdx | 13 + docs/components/webfetchpluginid.mdx | 15 + docs/components/webfetchservertool.mdx | 13 + docs/components/webfetchservertoolconfig.mdx | 16 + docs/components/webfetchservertooltype.mdx | 15 + .../websearchcallcompletedevent.mdx | 15 + .../websearchcallcompletedeventtype.mdx | 15 + .../websearchcallinprogressevent.mdx | 15 + .../websearchcallinprogresseventtype.mdx | 15 + .../websearchcallsearchingevent.mdx | 15 + .../websearchcallsearchingeventtype.mdx | 15 + docs/components/websearchconfig.mdx | 16 + docs/components/websearchdomainfilter.mdx | 10 + docs/components/websearchengine.md | 14 - docs/components/websearchengine.mdx | 25 + docs/components/websearchengineenum.mdx | 26 + docs/components/websearchplugin.mdx | 17 + docs/components/websearchpluginid.mdx | 15 + docs/components/websearchplugintype.mdx | 15 + docs/components/websearchservertool.mdx | 17 + docs/components/websearchservertoolconfig.mdx | 19 + .../websearchservertoolopenrouter.mdx | 13 + .../websearchservertoolopenroutertype.mdx | 15 + docs/components/websearchservertooltype.mdx | 15 + docs/components/websearchsource.mdx | 10 + docs/components/websearchsourcetype.mdx | 15 + docs/components/websearchstatus.md | 11 - docs/components/websearchstatus.mdx | 22 + docs/components/websearchuserlocation.mdx | 16 + .../websearchuserlocationservertool.mdx | 16 + .../websearchuserlocationservertooltype.mdx | 15 + docs/components/websearchuserlocationtype.mdx | 15 + docs/components/workspace.mdx | 23 + docs/components/workspacebudget.mdx | 14 + docs/components/workspacebudgetinterval.mdx | 24 + docs/components/workspacemember.mdx | 13 + docs/components/workspacememberrole.mdx | 22 + docs/docs.json | 50 + ...seerror.md => badgatewayresponseerror.mdx} | 6 +- ...seerror.md => badrequestresponseerror.mdx} | 6 +- docs/errors/conflictresponseerror.mdx | 14 + ...md => edgenetworktimeoutresponseerror.mdx} | 6 +- ...nseerror.md => forbiddenresponseerror.mdx} | 6 +- ...ror.md => internalserverresponseerror.mdx} | 6 +- ...onseerror.md => notfoundresponseerror.mdx} | 6 +- ...or.md => payloadtoolargeresponseerror.mdx} | 6 +- ...or.md => paymentrequiredresponseerror.mdx} | 6 +- ...md => provideroverloadedresponseerror.mdx} | 6 +- ...ror.md => requesttimeoutresponseerror.mdx} | 6 +- ...md => serviceunavailableresponseerror.mdx} | 6 +- ...or.md => toomanyrequestsresponseerror.mdx} | 6 +- ...error.md => unauthorizedresponseerror.mdx} | 6 +- ...d => unprocessableentityresponseerror.mdx} | 6 +- .../internal/globals.mdx} | 5 +- .../utils/{retryconfig.md => retryconfig.mdx} | 4 +- docs/operations/arena.mdx | 23 + .../bulkaddworkspacemembersglobals.mdx | 11 + .../bulkaddworkspacemembersrequest.mdx | 13 + .../bulkassignkeystoguardrailglobals.mdx | 11 + ...d => bulkassignkeystoguardrailrequest.mdx} | 7 +- .../bulkassignmemberstoguardrailglobals.mdx | 11 + ...> bulkassignmemberstoguardrailrequest.mdx} | 7 +- .../bulkremoveworkspacemembersglobals.mdx | 11 + .../bulkremoveworkspacemembersrequest.mdx | 13 + .../bulkunassignkeysfromguardrailglobals.mdx | 11 + ... bulkunassignkeysfromguardrailrequest.mdx} | 7 +- ...bulkunassignmembersfromguardrailglobals.md | 10 - ...ulkunassignmembersfromguardrailglobals.mdx | 11 + ...lkunassignmembersfromguardrailrequest.mdx} | 7 +- docs/operations/{content.md => content.mdx} | 5 +- ...contentimageurl.md => contentimageurl.mdx} | 9 +- .../{contenttext.md => contenttext.mdx} | 7 +- docs/operations/costdetails.mdx | 14 + docs/operations/createaudiospeechglobals.mdx | 11 + docs/operations/createaudiospeechrequest.mdx | 12 + .../createaudiotranscriptionsglobals.mdx | 11 + .../createaudiotranscriptionsrequest.mdx | 12 + .../createauthkeyscodecodechallengemethod.md | 11 - .../createauthkeyscodecodechallengemethod.mdx | 22 + ...codedata.md => createauthkeyscodedata.mdx} | 4 +- docs/operations/createauthkeyscodeglobals.mdx | 11 + ...quest.md => createauthkeyscoderequest.mdx} | 7 +- ...y.md => createauthkeyscoderequestbody.mdx} | 9 +- ...onse.md => createauthkeyscoderesponse.mdx} | 6 +- docs/operations/createbyokkeyglobals.mdx | 11 + docs/operations/createbyokkeyrequest.mdx | 12 + ...ddingsdata.md => createembeddingsdata.mdx} | 8 +- docs/operations/createembeddingsglobals.mdx | 11 + ...request.md => createembeddingsrequest.mdx} | 7 +- ...ody.md => createembeddingsrequestbody.mdx} | 10 +- ...sponse.md => createembeddingsresponse.mdx} | 5 +- ...dy.md => createembeddingsresponsebody.mdx} | 10 +- docs/operations/createembeddingsusage.mdx | 17 + ...lglobals.md => createguardrailglobals.mdx} | 5 +- ...lrequest.md => createguardrailrequest.mdx} | 7 +- docs/operations/createimagesglobals.mdx | 11 + docs/operations/createimagesrequest.mdx | 12 + docs/operations/createimagesresponse.mdx | 18 + .../{createkeysdata.md => createkeysdata.mdx} | 4 +- docs/operations/createkeysglobals.mdx | 11 + docs/operations/createkeyslimitreset.md | 12 - docs/operations/createkeyslimitreset.mdx | 23 + ...tekeysrequest.md => createkeysrequest.mdx} | 7 +- ...questbody.md => createkeysrequestbody.mdx} | 7 +- ...keysresponse.md => createkeysresponse.mdx} | 6 +- .../createobservabilitydestinationglobals.mdx | 11 + .../createobservabilitydestinationrequest.mdx | 12 + .../createpresetschatcompletionsglobals.mdx | 11 + ...> createpresetschatcompletionsrequest.mdx} | 9 +- .../createpresetsmessagesglobals.mdx | 11 + .../createpresetsmessagesrequest.mdx | 13 + .../createpresetsresponsesglobals.mdx | 11 + .../createpresetsresponsesrequest.mdx | 13 + docs/operations/creatererankglobals.mdx | 11 + docs/operations/creatererankrequest.mdx | 12 + docs/operations/creatererankrequestbody.mdx | 16 + docs/operations/creatererankresponse.mdx | 18 + docs/operations/creatererankresponsebody.mdx | 16 + docs/operations/creatererankusage.mdx | 14 + docs/operations/createresponsesglobals.md | 10 - docs/operations/createresponsesglobals.mdx | 11 + ...srequest.md => createresponsesrequest.mdx} | 9 +- ...esponse.md => createresponsesresponse.mdx} | 5 +- docs/operations/createvideosglobals.mdx | 11 + docs/operations/createvideosrequest.mdx | 12 + docs/operations/createworkspaceglobals.mdx | 11 + docs/operations/createworkspacerequest.mdx | 12 + docs/operations/datacenter.mdx | 267 + docs/operations/deletebyokkeyglobals.mdx | 11 + docs/operations/deletebyokkeyrequest.mdx | 12 + docs/operations/deletefileglobals.mdx | 11 + docs/operations/deletefilerequest.mdx | 13 + docs/operations/deleteguardrailglobals.md | 10 - docs/operations/deleteguardrailglobals.mdx | 11 + ...lrequest.md => deleteguardrailrequest.mdx} | 5 +- docs/operations/deletekeysglobals.md | 10 - docs/operations/deletekeysglobals.mdx | 11 + ...tekeysrequest.md => deletekeysrequest.mdx} | 5 +- ...keysresponse.md => deletekeysresponse.mdx} | 4 +- .../deleteobservabilitydestinationglobals.mdx | 11 + .../deleteobservabilitydestinationrequest.mdx | 12 + .../deleteworkspacebudgetglobals.mdx | 11 + .../deleteworkspacebudgetrequest.mdx | 13 + docs/operations/deleteworkspaceglobals.mdx | 11 + docs/operations/deleteworkspacerequest.mdx | 12 + docs/operations/dimension.mdx | 10 + docs/operations/direction.mdx | 20 + docs/operations/displayformat.mdx | 25 + docs/operations/distillable.mdx | 22 + docs/operations/document.mdx | 21 + docs/operations/documentrequest.mdx | 13 + docs/operations/documentresponse.mdx | 13 + .../operations/downloadfilecontentglobals.mdx | 11 + .../operations/downloadfilecontentrequest.mdx | 13 + .../{embedding.md => embedding.mdx} | 4 +- docs/operations/encodingformat.md | 11 - docs/operations/encodingformat.mdx | 22 + ...ngeauthcodeforapikeycodechallengemethod.md | 11 - ...geauthcodeforapikeycodechallengemethod.mdx | 22 + .../exchangeauthcodeforapikeyglobals.md | 10 - .../exchangeauthcodeforapikeyglobals.mdx | 11 + ...d => exchangeauthcodeforapikeyrequest.mdx} | 7 +- ... exchangeauthcodeforapikeyrequestbody.mdx} | 7 +- ... => exchangeauthcodeforapikeyresponse.mdx} | 4 +- docs/operations/file.mdx | 11 + docs/operations/filter_.mdx | 11 + docs/operations/getanalyticsmetadata.mdx | 12 + docs/operations/getanalyticsmetaglobals.mdx | 11 + docs/operations/getanalyticsmetarequest.mdx | 11 + docs/operations/getanalyticsmetaresponse.mdx | 12 + docs/operations/getapprankingscategory.mdx | 24 + ...ilglobals.md => getapprankingsglobals.mdx} | 5 +- docs/operations/getapprankingsrequest.mdx | 18 + docs/operations/getapprankingsresponse.mdx | 9 + docs/operations/getapprankingssort.mdx | 22 + docs/operations/getbenchmarksglobals.mdx | 11 + docs/operations/getbenchmarksrequest.mdx | 16 + docs/operations/getbyokkeyglobals.mdx | 11 + docs/operations/getbyokkeyrequest.mdx | 12 + .../{getcreditsdata.md => getcreditsdata.mdx} | 5 +- docs/operations/getcreditsglobals.md | 10 - docs/operations/getcreditsglobals.mdx | 11 + docs/operations/getcreditsrequest.md | 10 - docs/operations/getcreditsrequest.mdx | 11 + ...ditsresponse.md => getcreditsresponse.mdx} | 6 +- ...urrentkeydata.md => getcurrentkeydata.mdx} | 6 +- docs/operations/getcurrentkeyglobals.md | 10 - docs/operations/getcurrentkeyglobals.mdx | 11 + docs/operations/getcurrentkeyrequest.md | 10 - docs/operations/getcurrentkeyrequest.mdx | 11 + ...yresponse.md => getcurrentkeyresponse.mdx} | 6 +- docs/operations/getfilemetadataglobals.mdx | 11 + docs/operations/getfilemetadatarequest.mdx | 13 + docs/operations/getgenerationglobals.md | 10 - docs/operations/getgenerationglobals.mdx | 11 + ...ionrequest.md => getgenerationrequest.mdx} | 5 +- docs/operations/getguardrailglobals.md | 10 - docs/operations/getguardrailglobals.mdx | 11 + ...railrequest.md => getguardrailrequest.mdx} | 5 +- .../{getkeydata.md => getkeydata.mdx} | 4 +- docs/operations/getkeyglobals.md | 10 - .../getkeyglobals.mdx} | 5 +- .../{getkeyrequest.md => getkeyrequest.mdx} | 5 +- .../{getkeyresponse.md => getkeyresponse.mdx} | 6 +- ...beddingsglobals.md => getmodelglobals.mdx} | 5 +- docs/operations/getmodelrequest.mdx | 13 + docs/operations/getmodelscategory.mdx | 32 + docs/operations/getmodelsglobals.md | 10 - ...ardrailglobals.md => getmodelsglobals.mdx} | 5 +- ...tmodelsrequest.md => getmodelsrequest.mdx} | 15 +- docs/operations/getmodelssort.mdx | 30 + .../getobservabilitydestinationglobals.mdx | 11 + .../getobservabilitydestinationrequest.mdx | 12 + docs/operations/getpresetglobals.mdx | 11 + docs/operations/getpresetrequest.mdx | 12 + docs/operations/getpresetversionglobals.mdx | 11 + docs/operations/getpresetversionrequest.mdx | 13 + docs/operations/getrankingsdailyglobals.mdx | 11 + docs/operations/getrankingsdailyrequest.mdx | 13 + .../gettaskclassificationsglobals.mdx | 11 + .../gettaskclassificationsrequest.mdx | 12 + docs/operations/getuseractivityglobals.md | 10 - docs/operations/getuseractivityglobals.mdx | 11 + ...yrequest.md => getuseractivityrequest.mdx} | 5 +- docs/operations/getvideosglobals.mdx | 11 + docs/operations/getvideosrequest.mdx | 12 + docs/operations/getworkspaceglobals.mdx | 11 + docs/operations/getworkspacerequest.mdx | 12 + docs/operations/granularity.mdx | 10 + docs/operations/granularityname.mdx | 25 + docs/operations/headquarters.mdx | 269 + docs/operations/imageurl.mdx | 9 + docs/operations/{input.md => input.mdx} | 7 +- .../{inputunion.md => inputunion.mdx} | 4 +- docs/operations/listbyokkeysglobals.mdx | 11 + docs/operations/listbyokkeysrequest.mdx | 15 + docs/operations/listbyokkeysresponse.mdx | 9 + docs/operations/{listdata.md => listdata.mdx} | 5 +- .../operations/listembeddingsmodelsglobals.md | 10 - .../listembeddingsmodelsglobals.mdx | 11 + .../operations/listembeddingsmodelsrequest.md | 10 - .../listembeddingsmodelsrequest.mdx | 11 + docs/operations/listendpointsglobals.md | 10 - docs/operations/listendpointsglobals.mdx | 11 + ...ntsrequest.md => listendpointsrequest.mdx} | 5 +- ...sresponse.md => listendpointsresponse.mdx} | 6 +- docs/operations/listendpointszdrglobals.md | 10 - docs/operations/listendpointszdrglobals.mdx | 11 + docs/operations/listendpointszdrrequest.md | 10 - docs/operations/listendpointszdrrequest.mdx | 11 + ...sponse.md => listendpointszdrresponse.mdx} | 6 +- docs/operations/listfilesglobals.mdx | 11 + docs/operations/listfilesrequest.mdx | 14 + docs/operations/listfilesresponse.mdx | 9 + .../listgenerationcontentglobals.mdx | 11 + .../listgenerationcontentrequest.mdx | 12 + docs/operations/listglobals.md | 10 - ...authkeyscodeglobals.md => listglobals.mdx} | 5 +- .../listguardrailkeyassignmentsglobals.md | 10 - .../listguardrailkeyassignmentsglobals.mdx | 11 + ...=> listguardrailkeyassignmentsrequest.mdx} | 5 +- ...> listguardrailkeyassignmentsresponse.mdx} | 7 +- .../listguardrailmemberassignmentsglobals.md | 10 - .../listguardrailmemberassignmentsglobals.mdx | 11 + ...listguardrailmemberassignmentsrequest.mdx} | 5 +- ...istguardrailmemberassignmentsresponse.mdx} | 7 +- docs/operations/listguardrailsglobals.md | 10 - docs/operations/listguardrailsglobals.mdx | 11 + ...lsrequest.md => listguardrailsrequest.mdx} | 5 +- ...response.md => listguardrailsresponse.mdx} | 7 +- .../listimagemodelendpointsglobals.mdx | 11 + .../listimagemodelendpointsrequest.mdx | 13 + docs/operations/listimagemodelsglobals.mdx | 11 + docs/operations/listimagemodelsrequest.mdx | 11 + docs/operations/listkeyassignmentsglobals.md | 10 - docs/operations/listkeyassignmentsglobals.mdx | 11 + docs/operations/listkeyassignmentsrequest.mdx | 13 + ...onse.md => listkeyassignmentsresponse.mdx} | 7 +- .../listmemberassignmentsglobals.md | 10 - .../listmemberassignmentsglobals.mdx | 11 + .../listmemberassignmentsrequest.mdx | 13 + ...e.md => listmemberassignmentsresponse.mdx} | 7 +- docs/operations/listmodelscountglobals.md | 10 - docs/operations/listmodelscountglobals.mdx | 11 + ...trequest.md => listmodelscountrequest.mdx} | 5 +- docs/operations/listmodelsuserglobals.md | 10 - docs/operations/listmodelsuserglobals.mdx | 11 + docs/operations/listmodelsuserrequest.md | 10 - docs/operations/listmodelsuserrequest.mdx | 11 + ...security.md => listmodelsusersecurity.mdx} | 5 +- .../listobservabilitydestinationsglobals.mdx | 11 + .../listobservabilitydestinationsrequest.mdx | 14 + .../listobservabilitydestinationsresponse.mdx | 9 + .../listorganizationmembersdata.mdx | 13 + .../listorganizationmembersglobals.mdx | 11 + .../listorganizationmembersrequest.mdx | 13 + .../listorganizationmembersresponse.mdx | 9 + .../listorganizationmembersresponsebody.mdx | 13 + ...drailglobals.md => listpresetsglobals.mdx} | 5 +- ...mentsrequest.md => listpresetsrequest.mdx} | 5 +- docs/operations/listpresetsresponse.mdx | 9 + docs/operations/listpresetversionsglobals.mdx | 11 + docs/operations/listpresetversionsrequest.mdx | 14 + .../operations/listpresetversionsresponse.mdx | 9 + ...providersdata.md => listprovidersdata.mdx} | 9 +- docs/operations/listprovidersglobals.md | 10 - docs/operations/listprovidersglobals.mdx | 11 + docs/operations/listprovidersrequest.md | 10 - docs/operations/listprovidersrequest.mdx | 11 + ...sresponse.md => listprovidersresponse.mdx} | 6 +- .../{listrequest.md => listrequest.mdx} | 5 +- .../{listresponse.md => listresponse.mdx} | 6 +- docs/operations/listvideoscontentglobals.mdx | 11 + docs/operations/listvideoscontentrequest.mdx | 13 + docs/operations/listvideosmodelsglobals.mdx | 11 + docs/operations/listvideosmodelsrequest.mdx | 11 + .../listworkspacebudgetsglobals.mdx | 11 + .../listworkspacebudgetsrequest.mdx | 12 + docs/operations/listworkspacesglobals.mdx | 11 + ...tsrequest.md => listworkspacesrequest.mdx} | 5 +- docs/operations/listworkspacesresponse.mdx | 9 + docs/operations/metadata.mdx | 11 + docs/operations/metric.mdx | 12 + docs/operations/object.md | 8 - docs/operations/object.mdx | 15 + docs/operations/objectembedding.md | 8 - docs/operations/objectembedding.mdx | 15 + docs/operations/operator.mdx | 10 + docs/operations/operatorname.mdx | 28 + docs/operations/orderby.mdx | 10 + docs/operations/prompttokensdetails.mdx | 16 + docs/operations/provider.mdx | 108 + docs/operations/queryanalyticsdata1.mdx | 11 + docs/operations/queryanalyticsdata2.mdx | 12 + docs/operations/queryanalyticsglobals.mdx | 11 + docs/operations/queryanalyticsrequest.mdx | 12 + docs/operations/queryanalyticsrequestbody.mdx | 16 + docs/operations/queryanalyticsresponse.mdx | 12 + .../{ratelimit.md => ratelimit.mdx} | 4 +- docs/operations/region.mdx | 17 + docs/operations/result.mdx | 14 + docs/operations/role.mdx | 22 + .../sendchatcompletionrequestglobals.md | 10 - .../sendchatcompletionrequestglobals.mdx | 11 + .../sendchatcompletionrequestrequest.mdx | 13 + ... => sendchatcompletionrequestresponse.mdx} | 5 +- docs/operations/source.mdx | 22 + docs/operations/subcategory.mdx | 35 + docs/operations/tasktype.mdx | 23 + docs/operations/timerange.mdx | 10 + docs/operations/typeimageurl.md | 8 - docs/operations/typeimageurl.mdx | 15 + docs/operations/typetext.md | 8 - docs/operations/typetext.mdx | 15 + docs/operations/updatebyokkeyglobals.mdx | 11 + docs/operations/updatebyokkeyrequest.mdx | 13 + docs/operations/updateguardrailglobals.md | 10 - docs/operations/updateguardrailglobals.mdx | 11 + ...lrequest.md => updateguardrailrequest.mdx} | 7 +- .../{updatekeysdata.md => updatekeysdata.mdx} | 4 +- docs/operations/updatekeysglobals.md | 10 - docs/operations/updatekeysglobals.mdx | 11 + docs/operations/updatekeyslimitreset.md | 12 - docs/operations/updatekeyslimitreset.mdx | 23 + ...tekeysrequest.md => updatekeysrequest.mdx} | 7 +- ...questbody.md => updatekeysrequestbody.mdx} | 7 +- ...keysresponse.md => updatekeysresponse.mdx} | 6 +- .../updateobservabilitydestinationglobals.mdx | 11 + .../updateobservabilitydestinationrequest.mdx | 13 + docs/operations/updateworkspaceglobals.mdx | 11 + docs/operations/updateworkspacerequest.mdx | 13 + docs/operations/uploadfileglobals.mdx | 11 + docs/operations/uploadfilerequest.mdx | 13 + docs/operations/uploadfilerequestbody.mdx | 9 + .../upsertworkspacebudgetglobals.mdx | 11 + .../upsertworkspacebudgetrequest.mdx | 14 + docs/operations/usagelimittype.md | 12 - docs/operations/usagelimittype.mdx | 23 + docs/operations/value1.mdx | 27 + docs/operations/value2.mdx | 18 + docs/operations/valuetype.mdx | 22 + docs/operations/window.mdx | 17 + docs/operations/zdr.mdx | 17 + docs/overview.mdx | 37 + docs/sdks/analytics/{README.md => README.mdx} | 10 +- docs/sdks/apikeys/{README.md => README.mdx} | 39 +- docs/sdks/benchmarks/README.mdx | 65 + docs/sdks/betaanalytics/README.mdx | 125 + docs/sdks/byok/README.mdx | 275 + docs/sdks/chat/{README.md => README.mdx} | 84 +- docs/sdks/classifications/README.mdx | 79 + docs/sdks/credits/{README.md => README.mdx} | 10 +- docs/sdks/datasets/README.mdx | 160 + .../sdks/embeddings/{README.md => README.mdx} | 21 +- docs/sdks/endpoints/{README.md => README.mdx} | 15 +- docs/sdks/files/README.mdx | 275 + .../generations/{README.md => README.mdx} | 15 +- .../sdks/guardrails/{README.md => README.mdx} | 82 +- docs/sdks/images/README.mdx | 177 + docs/sdks/models/{README.md => README.mdx} | 37 +- docs/sdks/oauth/{README.md => README.mdx} | 21 +- docs/sdks/observability/README.mdx | 282 + docs/sdks/organization/README.mdx | 63 + docs/sdks/presets/README.mdx | 489 + docs/sdks/providers/{README.md => README.mdx} | 10 +- docs/sdks/rerank/README.mdx | 74 + docs/sdks/responses/{README.md => README.mdx} | 74 +- docs/sdks/stt/README.mdx | 74 + docs/sdks/tts/README.mdx | 72 + docs/sdks/videogeneration/README.mdx | 222 + docs/sdks/workspaces/README.mdx | 545 + pyproject.toml | 6 +- src/openrouter/_hooks/types.py | 14 +- src/openrouter/_version.py | 6 +- src/openrouter/analytics.py | 8 +- src/openrouter/api_keys.py | 48 +- src/openrouter/basesdk.py | 114 +- src/openrouter/benchmarks.py | 8 +- src/openrouter/beta_analytics.py | 38 +- src/openrouter/byok.py | 108 +- src/openrouter/chat.py | 614 +- src/openrouter/classifications.py | 8 +- src/openrouter/components/__init__.py | 125 +- src/openrouter/components/aabenchmarkentry.py | 20 +- src/openrouter/components/activityitem.py | 6 + .../components/advisornestedtool.py | 23 +- src/openrouter/components/advisorreasoning.py | 27 +- .../advisorservertool_openrouter.py | 19 +- .../components/advisorservertoolconfig.py | 32 +- .../anthropicadvisormessageusageiteration.py | 49 +- .../components/anthropicbase64imagesource.py | 8 +- .../anthropiccachecontroldirective.py | 27 +- .../anthropiccitationcharlocationparam.py | 20 +- ...hropiccitationcontentblocklocationparam.py | 20 +- .../anthropiccitationpagelocationparam.py | 20 +- .../anthropiccitationsearchresultlocation.py | 20 +- ...nthropiccitationwebsearchresultlocation.py | 20 +- .../anthropiccompactionusageiteration.py | 49 +- .../components/anthropicdocumentblockparam.py | 51 +- .../components/anthropicimageblockparam.py | 20 +- .../anthropiciterationcachecreation.py | 21 +- .../anthropicmessageusageiteration.py | 51 +- .../anthropicsearchresultblockparam.py | 35 +- .../components/anthropictextblockparam.py | 35 +- .../anthropicunknownusageiteration.py | 49 +- .../anthropicwebsearchresultblockparam.py | 35 +- .../anthropicwebsearchtooluserlocation.py | 35 +- .../components/applypatchcallitem.py | 41 +- .../components/applypatchcalloperation.py | 43 +- .../components/applypatchcalloutputitem.py | 43 +- .../applypatchservertool_openrouter.py | 19 +- .../components/applypatchservertoolconfig.py | 27 +- src/openrouter/components/autorouterplugin.py | 19 +- .../components/badgatewayresponseerrordata.py | 35 +- .../components/badrequestresponseerrordata.py | 35 +- src/openrouter/components/baseinputs_union.py | 76 +- .../components/basereasoningconfig.py | 48 +- src/openrouter/components/bashservertool.py | 19 +- .../components/bashservertoolconfig.py | 27 +- src/openrouter/components/byokkey.py | 48 +- .../components/capabilitydescriptor.py | 40 +- .../components/chatassistantmessage.py | 55 +- src/openrouter/components/chataudiooutput.py | 19 +- src/openrouter/components/chatchoice.py | 43 +- src/openrouter/components/chatcontentaudio.py | 6 + .../components/chatcontentcachecontrol.py | 27 +- src/openrouter/components/chatcontentfile.py | 19 +- src/openrouter/components/chatcontentimage.py | 27 +- src/openrouter/components/chatcontentitems.py | 52 +- src/openrouter/components/chatcontenttext.py | 19 +- src/openrouter/components/chatdebugoptions.py | 19 +- .../components/chatdevelopermessage.py | 19 +- src/openrouter/components/chatfunctiontool.py | 89 +- .../components/chatjsonschemaconfig.py | 41 +- src/openrouter/components/chatrequest.py | 218 +- src/openrouter/components/chatresult.py | 35 +- .../components/chatsearchmodelsservertool.py | 19 +- src/openrouter/components/chatstreamchoice.py | 43 +- src/openrouter/components/chatstreamchunk.py | 87 +- src/openrouter/components/chatstreamdelta.py | 53 +- .../components/chatstreamoptions.py | 19 +- .../components/chatstreamtoolcall.py | 35 +- .../components/chatsystemmessage.py | 19 +- src/openrouter/components/chattokenlogprob.py | 50 +- .../components/chattokenlogprobs.py | 35 +- src/openrouter/components/chatusage.py | 189 +- src/openrouter/components/chatusermessage.py | 19 +- .../components/chatwebsearchshorthand.py | 47 +- .../components/codeinterpreterservertool.py | 43 +- src/openrouter/components/compactionitem.py | 35 +- src/openrouter/components/compoundfilter.py | 6 +- .../components/computeruseservertool.py | 6 +- .../components/conflictresponseerrordata.py | 35 +- .../components/contentfilterbuiltinentry.py | 33 +- .../contentfilterbuiltinentryinput.py | 31 +- .../components/contentfilterentry.py | 41 +- .../components/contentpartaddedevent.py | 42 +- .../components/contentpartdoneevent.py | 42 +- .../components/contextcompressionplugin.py | 19 +- src/openrouter/components/costdetails.py | 35 +- .../components/createbyokkeyrequest.py | 57 +- .../components/createguardrailrequest.py | 107 +- .../createobservabilitydestinationrequest.py | 60 +- .../components/createworkspacerequest.py | 71 +- src/openrouter/components/customtool.py | 63 +- .../components/customtoolcallitem.py | 19 +- .../components/customtoolcalloutputitem.py | 58 +- .../components/datetimeservertool.py | 19 +- .../components/datetimeservertoolconfig.py | 19 +- src/openrouter/components/debugevent.py | 25 +- .../components/defaultparameters.py | 67 +- .../components/deletebyokkeyresponse.py | 6 + .../components/deleteguardrailresponse.py | 6 + .../deleteobservabilitydestinationresponse.py | 6 + .../deleteworkspacebudgetresponse.py | 6 + .../components/deleteworkspaceresponse.py | 6 + src/openrouter/components/easyinputmessage.py | 75 +- .../edgenetworktimeoutresponseerrordata.py | 35 +- src/openrouter/components/errorevent.py | 20 +- src/openrouter/components/filelistresponse.py | 20 +- src/openrouter/components/fileparserplugin.py | 19 +- .../components/filesearchservertool.py | 61 +- .../components/forbiddenresponseerrordata.py | 35 +- .../components/formatjsonschemaconfig.py | 41 +- src/openrouter/components/formats.py | 40 +- src/openrouter/components/frameimage.py | 6 +- src/openrouter/components/functioncallitem.py | 27 +- .../components/functioncalloutputitem.py | 82 +- .../components/fusioncallpanelfailedevent.py | 19 +- src/openrouter/components/fusionplugin.py | 45 +- .../components/fusionservertool_openrouter.py | 19 +- .../components/fusionservertoolconfig.py | 71 +- .../components/generationcontentdata.py | 20 +- .../components/generationresponse.py | 119 +- .../components/getpresetversionresponse.py | 20 +- src/openrouter/components/guardrail.py | 109 +- src/openrouter/components/imageendpoint.py | 20 +- .../components/imagegencompletedevent.py | 19 +- .../components/imagegenerationrequest.py | 222 +- .../components/imagegenerationresponse.py | 35 +- .../components/imagegenerationservertool.py | 110 +- .../imagegenerationservertool_openrouter.py | 19 +- .../imagegenerationservertoolconfig.py | 23 +- .../components/imagegenerationusage.py | 230 +- .../components/imagegenstreamerrorevent.py | 35 +- .../components/imagemodelarchitecture.py | 12 +- .../components/imagepricingentry.py | 27 +- .../components/imagestreamingresponse.py | 42 +- .../components/incompletedetails.py | 27 +- src/openrouter/components/inputaudio.py | 13 +- src/openrouter/components/inputfile.py | 35 +- src/openrouter/components/inputimage.py | 41 +- src/openrouter/components/inputmessageitem.py | 75 +- src/openrouter/components/inputs_union.py | 100 +- .../internalserverresponseerrordata.py | 35 +- src/openrouter/components/keyassignment.py | 20 +- .../components/legacy_websearchservertool.py | 55 +- .../components/listendpointsresponse.py | 38 +- .../components/localshellcallitem.py | 41 +- .../components/localshellcalloutputitem.py | 44 +- .../components/mcpapprovalresponseitem.py | 35 +- src/openrouter/components/mcpcallitem.py | 35 +- src/openrouter/components/mcplisttoolsitem.py | 70 +- src/openrouter/components/mcpservertool.py | 125 +- src/openrouter/components/memberassignment.py | 20 +- .../components/messagesmessageparam.py | 144 +- .../components/messagesoutputconfig.py | 87 +- src/openrouter/components/messagesrequest.py | 653 +- src/openrouter/components/model.py | 77 +- .../components/modelarchitecture.py | 56 +- src/openrouter/components/modelbenchmarks.py | 19 +- src/openrouter/components/modelreasoning.py | 63 +- src/openrouter/components/multimodalmedia.py | 25 +- .../components/notfoundresponseerrordata.py | 35 +- .../observabilityarizedestination.py | 42 +- .../observabilitybraintrustdestination.py | 42 +- .../observabilityclickhousedestination.py | 36 +- .../observabilitydatadogdestination.py | 42 +- .../components/observabilitydestination.py | 85 +- .../observabilityfilterrulesconfig.py | 61 +- .../observabilitygrafanadestination.py | 42 +- .../observabilitylangfusedestination.py | 42 +- .../observabilitylangsmithdestination.py | 42 +- .../observabilitynewrelicdestination.py | 48 +- .../observabilityopikdestination.py | 42 +- .../observabilityotelcollectordestination.py | 36 +- .../observabilityposthogdestination.py | 42 +- .../observabilityrampdestination.py | 42 +- .../components/observabilitys3destination.py | 44 +- .../observabilitysentrydestination.py | 42 +- .../observabilitysnowflakedestination.py | 42 +- .../observabilityweavedestination.py | 42 +- .../observabilitywebhookdestination.py | 44 +- .../openairesponsecustomtoolcall.py | 19 +- .../openairesponsecustomtoolcalloutput.py | 60 +- .../openairesponsefunctiontoolcall.py | 27 +- .../openairesponsefunctiontoolcalloutput.py | 83 +- .../openairesponseinputmessageitem.py | 63 +- .../components/openairesponsesannotation.py | 42 +- .../components/openresponsesresult.py | 244 +- .../components/openroutermetadata.py | 41 +- .../openrouterwebsearchservertool.py | 19 +- .../components/outputadvisorservertoolitem.py | 27 +- .../components/outputapplypatchcallitem.py | 6 +- .../outputapplypatchservertoolitem.py | 25 +- .../components/outputbashservertoolitem.py | 29 +- .../outputbrowseruseservertoolitem.py | 29 +- .../outputcodeinterpretercallitem.py | 59 +- .../outputcodeinterpreterservertoolitem.py | 31 +- .../components/outputcomputercallitem.py | 43 +- .../components/outputcustomtoolcallitem.py | 19 +- .../components/outputdatetimeitem.py | 34 +- .../components/outputfilesearchcallitem.py | 6 +- .../outputfilesearchservertoolitem.py | 25 +- .../components/outputfunctioncallitem.py | 19 +- .../components/outputfusionservertoolitem.py | 67 +- .../outputimagegenerationcallitem.py | 45 +- .../outputimagegenerationservertoolitem.py | 45 +- .../outputitemimagegenerationcall.py | 45 +- src/openrouter/components/outputitems.py | 128 +- .../components/outputmcpservertoolitem.py | 29 +- .../components/outputmemoryservertoolitem.py | 45 +- src/openrouter/components/outputmessage.py | 70 +- .../components/outputmessageitem.py | 72 +- .../components/outputreasoningitem.py | 56 +- .../outputsearchmodelsservertoolitem.py | 25 +- .../components/outputshellcallitem.py | 42 +- .../components/outputshellcalloutputitem.py | 76 +- .../outputsubagentservertoolitem.py | 27 +- .../outputtexteditorservertoolitem.py | 33 +- .../outputtoolsearchservertoolitem.py | 25 +- .../outputwebfetchservertoolitem.py | 29 +- .../components/outputwebsearchcallitem.py | 112 +- .../outputwebsearchservertoolitem.py | 41 +- .../components/paretorouterplugin.py | 19 +- .../payloadtoolargeresponseerrordata.py | 35 +- .../paymentrequiredresponseerrordata.py | 35 +- src/openrouter/components/pdfparserengine.py | 10 +- src/openrouter/components/pdfparseroptions.py | 19 +- .../components/percentilelatencycutoffs.py | 35 +- .../components/percentilethroughputcutoffs.py | 35 +- src/openrouter/components/pipelinestage.py | 49 +- src/openrouter/components/preset.py | 32 +- .../components/presetdesignatedversion.py | 20 +- .../components/presetwithdesignatedversion.py | 33 +- .../preview_20250311_websearchservertool.py | 55 +- .../components/preview_websearchservertool.py | 55 +- .../preview_websearchuserlocation.py | 35 +- src/openrouter/components/provideroptions.py | 148 +- .../provideroverloadedresponseerrordata.py | 35 +- .../components/providerpreferences.py | 145 +- src/openrouter/components/providerresponse.py | 60 +- .../components/providersortconfig.py | 47 +- src/openrouter/components/publicendpoint.py | 105 +- src/openrouter/components/publicpricing.py | 35 +- .../components/rankingsdailyitem.py | 6 + src/openrouter/components/reasoningconfig.py | 48 +- .../components/reasoningdetailencrypted.py | 48 +- .../components/reasoningdetailsummary.py | 48 +- .../components/reasoningdetailtext.py | 48 +- .../components/reasoningdetailunion.py | 43 +- src/openrouter/components/reasoningitem.py | 56 +- .../requesttimeoutresponseerrordata.py | 35 +- .../components/responsehealingplugin.py | 19 +- .../components/responseoutputtext.py | 29 +- .../components/responseserrorfield.py | 6 +- src/openrouter/components/responsesrequest.py | 222 +- src/openrouter/components/routerparams.py | 23 +- .../searchmodelsservertoolconfig.py | 19 +- src/openrouter/components/security.py | 19 +- .../serviceunavailableresponseerrordata.py | 35 +- src/openrouter/components/shellcallitem.py | 78 +- .../components/shellcalloutputitem.py | 81 +- .../components/shellservertool_openrouter.py | 19 +- .../components/shellservertoolconfig.py | 27 +- src/openrouter/components/speechrequest.py | 43 +- .../components/storedprompttemplate.py | 35 +- src/openrouter/components/streamevents.py | 218 +- src/openrouter/components/streamlogprob.py | 25 +- .../components/streamlogprobtoplogprob.py | 25 +- src/openrouter/components/sttinputaudio.py | 6 + src/openrouter/components/sttrequest.py | 35 +- src/openrouter/components/sttresponse.py | 19 +- src/openrouter/components/sttusage.py | 21 +- .../components/subagentnestedtool.py | 23 +- .../components/subagentreasoning.py | 27 +- .../subagentservertool_openrouter.py | 19 +- .../components/subagentservertoolconfig.py | 29 +- .../components/textextendedconfig.py | 47 +- .../toomanyrequestsresponseerrordata.py | 35 +- src/openrouter/components/topproviderinfo.py | 35 +- src/openrouter/components/traceconfig.py | 25 +- .../unauthorizedresponseerrordata.py | 35 +- .../components/unifiedbenchmarksaaitem.py | 25 +- .../components/unifiedbenchmarksdaitem.py | 46 +- .../components/unifiedbenchmarksmeta.py | 28 +- .../components/unifiedbenchmarksresponse.py | 39 +- .../unprocessableentityresponseerrordata.py | 35 +- .../components/updatebyokkeyrequest.py | 51 +- .../components/updateguardrailrequest.py | 107 +- .../updateobservabilitydestinationrequest.py | 53 +- .../components/updateworkspacerequest.py | 75 +- src/openrouter/components/urlcitation.py | 19 +- src/openrouter/components/usage.py | 70 +- .../components/videogenerationrequest.py | 205 +- .../components/videogenerationresponse.py | 27 +- .../components/videogenerationusage.py | 35 +- src/openrouter/components/videomodel.py | 77 +- src/openrouter/components/webfetchplugin.py | 21 +- .../components/webfetchservertool.py | 19 +- .../components/webfetchservertoolconfig.py | 35 +- src/openrouter/components/websearchconfig.py | 42 +- .../components/websearchdomainfilter.py | 35 +- src/openrouter/components/websearchplugin.py | 98 +- .../components/websearchservertool.py | 55 +- .../websearchservertool_openrouter.py | 19 +- .../components/websearchservertoolconfig.py | 42 +- .../components/websearchuserlocation.py | 35 +- .../websearchuserlocationservertool.py | 35 +- src/openrouter/components/workspace.py | 28 +- src/openrouter/components/workspacebudget.py | 28 +- src/openrouter/components/workspacemember.py | 6 +- src/openrouter/credits.py | 8 +- src/openrouter/datasets.py | 34 +- src/openrouter/embeddings.py | 46 +- src/openrouter/endpoints.py | 16 +- src/openrouter/errors/__init__.py | 45 +- src/openrouter/files.py | 46 +- src/openrouter/generations.py | 60 +- src/openrouter/guardrails.py | 356 +- src/openrouter/images.py | 258 +- src/openrouter/models/__init__.py | 20 + src/openrouter/models/internal/__init__.py | 45 +- src/openrouter/models/internal/globals.py | 21 +- src/openrouter/models_.py | 32 +- src/openrouter/oauth.py | 16 +- src/openrouter/observability.py | 100 +- src/openrouter/operations/__init__.py | 45 +- .../operations/bulkaddworkspacemembers.py | 39 +- .../operations/bulkassignkeystoguardrail.py | 39 +- .../bulkassignmemberstoguardrail.py | 39 +- .../operations/bulkremoveworkspacemembers.py | 39 +- .../bulkunassignkeysfromguardrail.py | 39 +- .../bulkunassignmembersfromguardrail.py | 39 +- .../operations/createaudiospeech.py | 39 +- .../operations/createaudiotranscriptions.py | 39 +- .../operations/createauthkeyscode.py | 106 +- src/openrouter/operations/createbyokkey.py | 39 +- src/openrouter/operations/createembeddings.py | 213 +- src/openrouter/operations/createguardrail.py | 39 +- src/openrouter/operations/createimages.py | 39 +- src/openrouter/operations/createkeys.py | 151 +- .../createobservabilitydestination.py | 39 +- .../createpresetschatcompletions.py | 39 +- .../operations/createpresetsmessages.py | 39 +- .../operations/createpresetsresponses.py | 39 +- src/openrouter/operations/creatererank.py | 135 +- src/openrouter/operations/createresponses.py | 51 +- src/openrouter/operations/createvideos.py | 39 +- src/openrouter/operations/createworkspace.py | 39 +- src/openrouter/operations/deletebyokkey.py | 39 +- src/openrouter/operations/deletefile.py | 44 +- src/openrouter/operations/deleteguardrail.py | 39 +- src/openrouter/operations/deletekeys.py | 45 +- .../deleteobservabilitydestination.py | 39 +- src/openrouter/operations/deleteworkspace.py | 39 +- .../operations/deleteworkspacebudget.py | 52 +- .../operations/downloadfilecontent.py | 44 +- .../operations/exchangeauthcodeforapikey.py | 104 +- src/openrouter/operations/getanalyticsmeta.py | 50 +- src/openrouter/operations/getapprankings.py | 68 +- src/openrouter/operations/getbenchmarks.py | 62 +- src/openrouter/operations/getbyokkey.py | 39 +- src/openrouter/operations/getcredits.py | 39 +- src/openrouter/operations/getcurrentkey.py | 79 +- src/openrouter/operations/getfilemetadata.py | 44 +- src/openrouter/operations/getgeneration.py | 39 +- src/openrouter/operations/getguardrail.py | 39 +- src/openrouter/operations/getkey.py | 87 +- src/openrouter/operations/getmodel.py | 39 +- src/openrouter/operations/getmodels.py | 109 +- .../operations/getobservabilitydestination.py | 39 +- src/openrouter/operations/getpreset.py | 39 +- src/openrouter/operations/getpresetversion.py | 39 +- src/openrouter/operations/getrankingsdaily.py | 45 +- .../operations/gettaskclassifications.py | 39 +- src/openrouter/operations/getuseractivity.py | 46 +- src/openrouter/operations/getvideos.py | 39 +- src/openrouter/operations/getworkspace.py | 39 +- src/openrouter/operations/list.py | 94 +- src/openrouter/operations/listbyokkeys.py | 57 +- .../operations/listembeddingsmodels.py | 39 +- src/openrouter/operations/listendpoints.py | 39 +- src/openrouter/operations/listendpointszdr.py | 39 +- src/openrouter/operations/listfiles.py | 46 +- .../operations/listgenerationcontent.py | 39 +- .../operations/listguardrailkeyassignments.py | 45 +- .../listguardrailmemberassignments.py | 45 +- src/openrouter/operations/listguardrails.py | 46 +- .../operations/listimagemodelendpoints.py | 39 +- src/openrouter/operations/listimagemodels.py | 39 +- .../operations/listkeyassignments.py | 45 +- .../operations/listmemberassignments.py | 45 +- src/openrouter/operations/listmodelscount.py | 44 +- src/openrouter/operations/listmodelsuser.py | 39 +- .../listobservabilitydestinations.py | 46 +- .../operations/listorganizationmembers.py | 72 +- src/openrouter/operations/listpresets.py | 45 +- .../operations/listpresetversions.py | 45 +- src/openrouter/operations/listproviders.py | 103 +- .../operations/listvideoscontent.py | 60 +- src/openrouter/operations/listvideosmodels.py | 39 +- .../operations/listworkspacebudgets.py | 39 +- src/openrouter/operations/listworkspaces.py | 45 +- src/openrouter/operations/queryanalytics.py | 97 +- .../operations/sendchatcompletionrequest.py | 51 +- src/openrouter/operations/updatebyokkey.py | 39 +- src/openrouter/operations/updateguardrail.py | 39 +- src/openrouter/operations/updatekeys.py | 137 +- .../updateobservabilitydestination.py | 39 +- src/openrouter/operations/updateworkspace.py | 39 +- src/openrouter/operations/uploadfile.py | 64 +- .../operations/upsertworkspacebudget.py | 46 +- src/openrouter/organization.py | 26 +- src/openrouter/presets.py | 362 +- src/openrouter/providers.py | 8 +- src/openrouter/rerank.py | 48 +- src/openrouter/responses.py | 586 +- src/openrouter/sdk.py | 6 +- src/openrouter/stt.py | 34 +- src/openrouter/tts.py | 34 +- src/openrouter/types/__init__.py | 3 + src/openrouter/types/base64fileinput.py | 43 + src/openrouter/types/basemodel.py | 44 +- src/openrouter/utils/__init__.py | 59 +- src/openrouter/utils/dynamic_imports.py | 54 + src/openrouter/utils/enums.py | 60 + src/openrouter/utils/eventstreaming.py | 286 +- src/openrouter/utils/forms.py | 5 + src/openrouter/utils/metadata.py | 1 + src/openrouter/utils/requestbodies.py | 7 +- src/openrouter/utils/retries.py | 109 +- src/openrouter/utils/security.py | 33 +- src/openrouter/utils/serializers.py | 119 +- src/openrouter/utils/unions.py | 41 + src/openrouter/video_generation.py | 52 +- src/openrouter/workspaces.py | 140 +- uv.lock | 51 +- 2100 files changed, 50574 insertions(+), 16779 deletions(-) create mode 100644 docs/components/aabenchmarkentry.mdx create mode 100644 docs/components/action.mdx create mode 100644 docs/components/actionenum.mdx create mode 100644 docs/components/actionfindinpage.mdx create mode 100644 docs/components/actionopenpage.mdx create mode 100644 docs/components/actiontypesearch.mdx rename docs/components/{activityitem.md => activityitem.mdx} (99%) create mode 100644 docs/components/activityresponse.mdx create mode 100644 docs/components/advisornestedtool.mdx create mode 100644 docs/components/advisorreasoning.mdx create mode 100644 docs/components/advisorreasoningeffort.mdx create mode 100644 docs/components/advisorservertoolconfig.mdx create mode 100644 docs/components/advisorservertoolopenrouter.mdx create mode 100644 docs/components/advisorservertoolopenroutertype.mdx create mode 100644 docs/components/allowedtools.mdx create mode 100644 docs/components/allowedtoolsunion.mdx create mode 100644 docs/components/always.mdx create mode 100644 docs/components/annotationaddedevent.mdx create mode 100644 docs/components/annotationaddedeventtype.mdx create mode 100644 docs/components/anthropicadvisormessageusageiteration.mdx create mode 100644 docs/components/anthropicadvisormessageusageiterationtype.mdx create mode 100644 docs/components/anthropicallowedcallers.mdx create mode 100644 docs/components/anthropicbase64imagesource.mdx create mode 100644 docs/components/anthropicbase64imagesourcetype.mdx create mode 100644 docs/components/anthropicbase64pdfsource.mdx create mode 100644 docs/components/anthropicbase64pdfsourcemediatype.mdx create mode 100644 docs/components/anthropicbase64pdfsourcetype.mdx create mode 100644 docs/components/anthropiccachecontroldirective.mdx create mode 100644 docs/components/anthropiccachecontroldirectivetype.mdx create mode 100644 docs/components/anthropiccachecontrolttl.mdx create mode 100644 docs/components/anthropiccitationcharlocationparam.mdx create mode 100644 docs/components/anthropiccitationcharlocationparamtype.mdx create mode 100644 docs/components/anthropiccitationcontentblocklocationparam.mdx create mode 100644 docs/components/anthropiccitationcontentblocklocationparamtype.mdx create mode 100644 docs/components/anthropiccitationpagelocationparam.mdx create mode 100644 docs/components/anthropiccitationpagelocationparamtype.mdx create mode 100644 docs/components/anthropiccitationsearchresultlocation.mdx create mode 100644 docs/components/anthropiccitationsearchresultlocationtype.mdx create mode 100644 docs/components/anthropiccitationwebsearchresultlocation.mdx create mode 100644 docs/components/anthropiccitationwebsearchresultlocationtype.mdx create mode 100644 docs/components/anthropiccompactionusageiteration.mdx create mode 100644 docs/components/anthropiccompactionusageiterationtype.mdx create mode 100644 docs/components/anthropicdocumentblockparam.mdx create mode 100644 docs/components/anthropicdocumentblockparamcitations.mdx create mode 100644 docs/components/anthropicdocumentblockparamcontent1.mdx create mode 100644 docs/components/anthropicdocumentblockparamcontent2.mdx create mode 100644 docs/components/anthropicdocumentblockparamsourceunion.mdx create mode 100644 docs/components/anthropicfiledocumentsource.mdx create mode 100644 docs/components/anthropicfiledocumentsourcetype.mdx create mode 100644 docs/components/anthropicimageblockparam.mdx create mode 100644 docs/components/anthropicimageblockparamsource.mdx create mode 100644 docs/components/anthropicimageblockparamtype.mdx create mode 100644 docs/components/anthropicimagemimetype.mdx create mode 100644 docs/components/anthropicinputtokensclearatleast.mdx create mode 100644 docs/components/anthropicinputtokensclearatleasttype.mdx create mode 100644 docs/components/anthropicinputtokenstrigger.mdx create mode 100644 docs/components/anthropicinputtokenstriggertype.mdx create mode 100644 docs/components/anthropiciterationcachecreation.mdx create mode 100644 docs/components/anthropicmessageusageiteration.mdx create mode 100644 docs/components/anthropicmessageusageiterationtype.mdx create mode 100644 docs/components/anthropicplaintextsource.mdx create mode 100644 docs/components/anthropicplaintextsourcemediatype.mdx create mode 100644 docs/components/anthropicplaintextsourcetype.mdx create mode 100644 docs/components/anthropicsearchresultblockparam.mdx create mode 100644 docs/components/anthropicsearchresultblockparamcitations.mdx create mode 100644 docs/components/anthropicsearchresultblockparamtype.mdx create mode 100644 docs/components/anthropicspeed.mdx create mode 100644 docs/components/anthropictextblockparam.mdx create mode 100644 docs/components/anthropictextblockparamtype.mdx create mode 100644 docs/components/anthropicthinkingdisplay.mdx create mode 100644 docs/components/anthropicthinkingturns.mdx create mode 100644 docs/components/anthropicthinkingturnstype.mdx create mode 100644 docs/components/anthropictooluseskeep.mdx create mode 100644 docs/components/anthropictooluseskeeptype.mdx create mode 100644 docs/components/anthropictoolusestrigger.mdx create mode 100644 docs/components/anthropictoolusestriggertype.mdx create mode 100644 docs/components/anthropicunknownusageiteration.mdx create mode 100644 docs/components/anthropicurlimagesource.mdx create mode 100644 docs/components/anthropicurlimagesourcetype.mdx create mode 100644 docs/components/anthropicurlpdfsource.mdx create mode 100644 docs/components/anthropicurlpdfsourcetype.mdx create mode 100644 docs/components/anthropicusageiteration.mdx create mode 100644 docs/components/anthropicwebsearchresultblockparam.mdx create mode 100644 docs/components/anthropicwebsearchresultblockparamtype.mdx create mode 100644 docs/components/anthropicwebsearchtooluserlocation.mdx create mode 100644 docs/components/anthropicwebsearchtooluserlocationtype.mdx create mode 100644 docs/components/apierrortype.mdx create mode 100644 docs/components/apitype.mdx create mode 100644 docs/components/applypatchcallitem.mdx create mode 100644 docs/components/applypatchcallitemtype.mdx create mode 100644 docs/components/applypatchcalloperation.mdx create mode 100644 docs/components/applypatchcalloperationdiffdeltaevent.mdx create mode 100644 docs/components/applypatchcalloperationdiffdeltaeventtype.mdx create mode 100644 docs/components/applypatchcalloperationdiffdoneevent.mdx create mode 100644 docs/components/applypatchcalloperationdiffdoneeventtype.mdx create mode 100644 docs/components/applypatchcalloutputitem.mdx create mode 100644 docs/components/applypatchcalloutputitemstatus.mdx create mode 100644 docs/components/applypatchcalloutputitemtype.mdx create mode 100644 docs/components/applypatchcallstatus.mdx create mode 100644 docs/components/applypatchcreatefileoperation.mdx create mode 100644 docs/components/applypatchcreatefileoperationtype.mdx create mode 100644 docs/components/applypatchdeletefileoperation.mdx create mode 100644 docs/components/applypatchdeletefileoperationtype.mdx create mode 100644 docs/components/applypatchengineenum.mdx create mode 100644 docs/components/applypatchservertool.mdx create mode 100644 docs/components/applypatchservertoolconfig.mdx create mode 100644 docs/components/applypatchservertoolopenrouter.mdx create mode 100644 docs/components/applypatchservertoolopenroutertype.mdx create mode 100644 docs/components/applypatchservertooltype.mdx create mode 100644 docs/components/applypatchupdatefileoperation.mdx create mode 100644 docs/components/applypatchupdatefileoperationtype.mdx create mode 100644 docs/components/apprankingsitem.mdx create mode 100644 docs/components/apprankingsresponse.mdx rename docs/components/{architecture.md => architecture.mdx} (63%) rename docs/{operations/imageurl.md => components/audiourl.mdx} (91%) create mode 100644 docs/components/autorouterplugin.mdx create mode 100644 docs/components/autorouterpluginid.mdx rename docs/components/{badgatewayresponseerrordata.md => badgatewayresponseerrordata.mdx} (93%) rename docs/components/{badrequestresponseerrordata.md => badrequestresponseerrordata.mdx} (93%) create mode 100644 docs/components/baseinputscontent1.mdx create mode 100644 docs/components/baseinputscontent2.mdx create mode 100644 docs/components/baseinputsmessage.mdx create mode 100644 docs/components/baseinputsphasecommentary.mdx create mode 100644 docs/components/baseinputsphasefinalanswer.mdx create mode 100644 docs/components/baseinputsphaseunion.mdx create mode 100644 docs/components/baseinputsroleassistant.mdx create mode 100644 docs/components/baseinputsroledeveloper.mdx create mode 100644 docs/components/baseinputsrolesystem.mdx create mode 100644 docs/components/baseinputsroleunion.mdx create mode 100644 docs/components/baseinputsroleuser.mdx create mode 100644 docs/components/baseinputstype.mdx create mode 100644 docs/components/baseinputsunion.mdx create mode 100644 docs/components/baseinputsunion1.mdx create mode 100644 docs/components/basereasoningconfig.mdx create mode 100644 docs/components/bashservertool.mdx create mode 100644 docs/components/bashservertoolconfig.mdx create mode 100644 docs/components/bashservertoolengine.mdx create mode 100644 docs/components/bashservertoolenvironment.mdx create mode 100644 docs/components/bashservertooltype.mdx create mode 100644 docs/components/billable.mdx create mode 100644 docs/components/booleancapability.mdx create mode 100644 docs/components/booleancapabilitytype.mdx create mode 100644 docs/components/bulkaddworkspacemembersrequest.mdx create mode 100644 docs/components/bulkaddworkspacemembersresponse.mdx create mode 100644 docs/components/bulkassignkeysrequest.mdx create mode 100644 docs/components/bulkassignkeysresponse.mdx create mode 100644 docs/components/bulkassignmembersrequest.mdx create mode 100644 docs/components/bulkassignmembersresponse.mdx create mode 100644 docs/components/bulkremoveworkspacemembersrequest.mdx create mode 100644 docs/components/bulkremoveworkspacemembersresponse.mdx create mode 100644 docs/components/bulkunassignkeysrequest.mdx create mode 100644 docs/components/bulkunassignkeysresponse.mdx create mode 100644 docs/components/bulkunassignmembersrequest.mdx create mode 100644 docs/components/bulkunassignmembersresponse.mdx delete mode 100644 docs/components/by.md create mode 100644 docs/components/by.mdx create mode 100644 docs/components/byokkey.mdx create mode 100644 docs/components/byokproviderslug.mdx create mode 100644 docs/components/caching.mdx create mode 100644 docs/components/capabilitydescriptor.mdx create mode 100644 docs/components/chatassistantimages.mdx create mode 100644 docs/components/chatassistantimagesimageurl.mdx create mode 100644 docs/components/chatassistantmessage.mdx create mode 100644 docs/components/chatassistantmessagecontent.mdx create mode 100644 docs/components/chatassistantmessagerole.mdx create mode 100644 docs/components/chataudiooutput.mdx create mode 100644 docs/components/chatchoice.mdx create mode 100644 docs/components/chatcontentaudio.mdx create mode 100644 docs/components/chatcontentaudioinputaudio.mdx create mode 100644 docs/components/chatcontentaudiotype.mdx create mode 100644 docs/components/chatcontentcachecontrol.mdx create mode 100644 docs/components/chatcontentcachecontroltype.mdx create mode 100644 docs/components/chatcontentfile.mdx create mode 100644 docs/components/chatcontentfiletype.mdx create mode 100644 docs/components/chatcontentimage.mdx create mode 100644 docs/components/chatcontentimagedetail.mdx create mode 100644 docs/components/chatcontentimageimageurl.mdx create mode 100644 docs/components/chatcontentimagetype.mdx create mode 100644 docs/components/chatcontentitems.mdx create mode 100644 docs/components/chatcontenttext.mdx create mode 100644 docs/components/chatcontenttexttype.mdx create mode 100644 docs/components/chatcontentvideo.mdx create mode 100644 docs/components/chatcontentvideoinput.mdx create mode 100644 docs/components/chatcontentvideotype.mdx create mode 100644 docs/components/chatdebugoptions.mdx create mode 100644 docs/components/chatdevelopermessage.mdx create mode 100644 docs/components/chatdevelopermessagecontent.mdx create mode 100644 docs/components/chatdevelopermessagerole.mdx create mode 100644 docs/components/chatfinishreasonenum.mdx create mode 100644 docs/components/chatformatgrammarconfig.mdx create mode 100644 docs/components/chatformatgrammarconfigtype.mdx create mode 100644 docs/components/chatformatjsonschemaconfig.mdx create mode 100644 docs/components/chatformatjsonschemaconfigtype.mdx create mode 100644 docs/components/chatformatpythonconfig.mdx create mode 100644 docs/components/chatformatpythonconfigtype.mdx create mode 100644 docs/components/chatformattextconfig.mdx create mode 100644 docs/components/chatformattextconfigtype.mdx create mode 100644 docs/components/chatfunctiontool.mdx create mode 100644 docs/components/chatfunctiontoolfunction.mdx create mode 100644 docs/components/chatfunctiontoolfunctionfunction.mdx create mode 100644 docs/components/chatfunctiontooltype.mdx create mode 100644 docs/components/chatjsonschemaconfig.mdx create mode 100644 docs/components/chatmessages.mdx create mode 100644 docs/components/chatnamedtoolchoice.mdx create mode 100644 docs/components/chatnamedtoolchoicefunction.mdx create mode 100644 docs/components/chatnamedtoolchoicetype.mdx create mode 100644 docs/components/chatreasoningsummaryverbosityenum.mdx create mode 100644 docs/components/chatrequest.mdx create mode 100644 docs/components/chatrequesteffort.mdx create mode 100644 docs/components/chatrequestplugin.mdx create mode 100644 docs/components/chatrequestreasoning.mdx create mode 100644 docs/components/chatrequestreasoningeffort.mdx create mode 100644 docs/components/chatrequestservicetier.mdx create mode 100644 docs/components/chatresult.mdx create mode 100644 docs/components/chatresultobject.mdx create mode 100644 docs/components/chatsearchmodelsservertool.mdx create mode 100644 docs/components/chatsearchmodelsservertooltype.mdx create mode 100644 docs/components/chatservertoolchoice.mdx create mode 100644 docs/components/chatstreamchoice.mdx create mode 100644 docs/components/chatstreamchunk.mdx create mode 100644 docs/components/chatstreamchunkerror.mdx create mode 100644 docs/components/chatstreamchunkmetadata.mdx create mode 100644 docs/components/chatstreamchunkobject.mdx create mode 100644 docs/components/chatstreamdelta.mdx create mode 100644 docs/components/chatstreamdeltarole.mdx create mode 100644 docs/components/chatstreamingresponse.mdx rename docs/components/{chatstreamoptions.md => chatstreamoptions.mdx} (98%) create mode 100644 docs/components/chatstreamtoolcall.mdx create mode 100644 docs/components/chatstreamtoolcallfunction.mdx create mode 100644 docs/components/chatstreamtoolcalltype.mdx create mode 100644 docs/components/chatsystemmessage.mdx create mode 100644 docs/components/chatsystemmessagecontent.mdx create mode 100644 docs/components/chatsystemmessagerole.mdx create mode 100644 docs/components/chattokenlogprob.mdx create mode 100644 docs/components/chattokenlogprobs.mdx rename docs/components/{responseoutputtexttoplogprob.md => chattokenlogprobtoplogprob.mdx} (90%) create mode 100644 docs/components/chattoolcall.mdx create mode 100644 docs/components/chattoolcallfunction.mdx create mode 100644 docs/components/chattoolcalltype.mdx create mode 100644 docs/components/chattoolchoice.mdx create mode 100644 docs/components/chattoolchoiceauto.mdx create mode 100644 docs/components/chattoolchoicenone.mdx create mode 100644 docs/components/chattoolchoicerequired.mdx create mode 100644 docs/components/chattoolmessage.mdx create mode 100644 docs/components/chattoolmessagecontent.mdx create mode 100644 docs/components/chattoolmessagerole.mdx create mode 100644 docs/components/chatusage.mdx create mode 100644 docs/components/chatusagecompletiontokensdetails.mdx create mode 100644 docs/components/chatusageprompttokensdetails.mdx create mode 100644 docs/components/chatusermessage.mdx create mode 100644 docs/components/chatusermessagecontent.mdx create mode 100644 docs/components/chatusermessagerole.mdx create mode 100644 docs/components/chatwebsearchshorthand.mdx create mode 100644 docs/components/chatwebsearchshorthandtype.mdx create mode 100644 docs/components/citation.mdx create mode 100644 docs/components/cleartoolinputs.mdx delete mode 100644 docs/components/code.md create mode 100644 docs/components/code.mdx create mode 100644 docs/components/codeinterpreterservertool.mdx create mode 100644 docs/components/codexlocalshelltool.mdx create mode 100644 docs/components/codexlocalshelltooltype.mdx create mode 100644 docs/components/command.mdx create mode 100644 docs/components/compactionitem.mdx create mode 100644 docs/components/compactionitemtype.mdx create mode 100644 docs/components/compoundfilter.mdx create mode 100644 docs/components/compoundfiltertype.mdx create mode 100644 docs/components/computeruseservertool.mdx create mode 100644 docs/components/computeruseservertooltype.mdx create mode 100644 docs/components/conflictresponseerrordata.mdx create mode 100644 docs/components/connectorid.mdx create mode 100644 docs/components/container.mdx create mode 100644 docs/components/containerauto.mdx create mode 100644 docs/components/containerautoenvironment.mdx create mode 100644 docs/components/containerautoenvironmenttype.mdx create mode 100644 docs/components/containerreferenceenvironment.mdx create mode 100644 docs/components/containerreferenceenvironmenttype.mdx create mode 100644 docs/components/containertype.mdx create mode 100644 docs/components/contentcompaction.mdx create mode 100644 docs/components/contentfilteraction.mdx create mode 100644 docs/components/contentfilterbuiltinaction.mdx create mode 100644 docs/components/contentfilterbuiltinentry.mdx create mode 100644 docs/components/contentfilterbuiltinentryinput.mdx create mode 100644 docs/components/contentfilterbuiltinslug.mdx create mode 100644 docs/components/contentfilterentry.mdx create mode 100644 docs/components/contentpartaddedevent.mdx create mode 100644 docs/components/contentpartaddedeventpart.mdx create mode 100644 docs/components/contentpartaddedeventtype.mdx create mode 100644 docs/components/contentpartaudio.mdx create mode 100644 docs/components/contentpartaudiotype.mdx create mode 100644 docs/components/contentpartdoneevent.mdx create mode 100644 docs/components/contentpartdoneeventpart.mdx create mode 100644 docs/components/contentpartdoneeventtype.mdx create mode 100644 docs/components/contentpartimage.mdx create mode 100644 docs/components/contentpartimageimageurl.mdx create mode 100644 docs/components/contentpartimagetype.mdx create mode 100644 docs/components/contentpartinputaudio.mdx create mode 100644 docs/components/contentpartinputaudiotype.mdx create mode 100644 docs/components/contentpartinputfile.mdx create mode 100644 docs/components/contentpartinputfiletype.mdx create mode 100644 docs/components/contentpartinputvideo.mdx create mode 100644 docs/components/contentpartinputvideotype.mdx create mode 100644 docs/components/contentpartvideo.mdx create mode 100644 docs/components/contentpartvideotype.mdx create mode 100644 docs/components/contentredactedthinking.mdx create mode 100644 docs/components/contentservertooluse.mdx create mode 100644 docs/components/contentthinking.mdx create mode 100644 docs/components/contenttoolreference.mdx create mode 100644 docs/components/contenttoolresult.mdx create mode 100644 docs/components/contenttooluse.mdx create mode 100644 docs/components/contentwebsearchtoolresult.mdx create mode 100644 docs/components/contentwebsearchtoolresulterror.mdx create mode 100644 docs/components/contextcompressionengine.mdx create mode 100644 docs/components/contextcompressionplugin.mdx create mode 100644 docs/components/contextcompressionpluginid.mdx create mode 100644 docs/components/contextmanagement.mdx create mode 100644 docs/components/contradiction.mdx rename docs/components/{costdetails.md => costdetails.mdx} (96%) create mode 100644 docs/components/createbyokkeyrequest.mdx create mode 100644 docs/components/createbyokkeyresponse.mdx create mode 100644 docs/components/createguardrailrequest.mdx create mode 100644 docs/components/createguardrailresponse.mdx create mode 100644 docs/components/createobservabilitydestinationrequest.mdx create mode 100644 docs/components/createobservabilitydestinationrequesttype.mdx create mode 100644 docs/components/createobservabilitydestinationresponse.mdx create mode 100644 docs/components/createpresetfrominferenceresponse.mdx create mode 100644 docs/components/createworkspacerequest.mdx create mode 100644 docs/components/createworkspaceresponse.mdx create mode 100644 docs/components/customtool.mdx create mode 100644 docs/components/customtoolcallinputdeltaevent.mdx create mode 100644 docs/components/customtoolcallinputdeltaeventtype.mdx create mode 100644 docs/components/customtoolcallinputdoneevent.mdx create mode 100644 docs/components/customtoolcallinputdoneeventtype.mdx create mode 100644 docs/components/customtoolcallitem.mdx create mode 100644 docs/components/customtoolcallitemtype.mdx create mode 100644 docs/components/customtoolcalloutputitem.mdx create mode 100644 docs/components/customtoolcalloutputitemdetail.mdx create mode 100644 docs/components/customtoolcalloutputitemoutputinputimage.mdx create mode 100644 docs/components/customtoolcalloutputitemoutputunion1.mdx create mode 100644 docs/components/customtoolcalloutputitemoutputunion2.mdx create mode 100644 docs/components/customtoolcalloutputitemtypecustomtoolcalloutput.mdx create mode 100644 docs/components/customtoolcalloutputitemtypeinputimage.mdx create mode 100644 docs/components/customtooltypecustom.mdx create mode 100644 docs/components/dabenchmarkentry.mdx delete mode 100644 docs/components/datacollection.md create mode 100644 docs/components/datacollection.mdx create mode 100644 docs/components/dataregion.mdx create mode 100644 docs/components/datetimeservertool.mdx create mode 100644 docs/components/datetimeservertoolconfig.mdx create mode 100644 docs/components/datetimeservertooltype.mdx create mode 100644 docs/components/debug.mdx create mode 100644 docs/components/debugevent.mdx create mode 100644 docs/components/debugeventtype.mdx create mode 100644 docs/components/defaulteffort.mdx rename docs/components/{defaultparameters.md => defaultparameters.mdx} (96%) create mode 100644 docs/components/deletebyokkeyresponse.mdx create mode 100644 docs/components/deleteguardrailresponse.mdx create mode 100644 docs/components/deleteobservabilitydestinationresponse.mdx create mode 100644 docs/components/deleteworkspacebudgetresponse.mdx create mode 100644 docs/components/deleteworkspaceresponse.mdx create mode 100644 docs/components/easyinputmessage.mdx create mode 100644 docs/components/easyinputmessagecontentinputimage.mdx create mode 100644 docs/components/easyinputmessagecontentunion1.mdx create mode 100644 docs/components/easyinputmessagecontentunion2.mdx create mode 100644 docs/components/easyinputmessagedetail.mdx create mode 100644 docs/components/easyinputmessagephasecommentary.mdx create mode 100644 docs/components/easyinputmessagephasefinalanswer.mdx create mode 100644 docs/components/easyinputmessagephaseunion.mdx create mode 100644 docs/components/easyinputmessageroleassistant.mdx create mode 100644 docs/components/easyinputmessageroledeveloper.mdx create mode 100644 docs/components/easyinputmessagerolesystem.mdx create mode 100644 docs/components/easyinputmessageroleunion.mdx create mode 100644 docs/components/easyinputmessageroleuser.mdx create mode 100644 docs/components/easyinputmessagetypeinputimage.mdx create mode 100644 docs/components/easyinputmessagetypemessage.mdx rename docs/components/{edgenetworktimeoutresponseerrordata.md => edgenetworktimeoutresponseerrordata.mdx} (92%) create mode 100644 docs/components/edit.mdx create mode 100644 docs/components/editclearthinking20251015.mdx create mode 100644 docs/components/editcleartooluses20250919.mdx create mode 100644 docs/components/editcompact20260112.mdx create mode 100644 docs/components/edittypeinputtokens.mdx create mode 100644 docs/components/endpointinfo.mdx create mode 100644 docs/components/endpointsmetadata.mdx delete mode 100644 docs/components/endpointstatus.md create mode 100644 docs/components/endpointstatus.mdx create mode 100644 docs/components/enumcapability.mdx create mode 100644 docs/components/enumcapabilitytype.mdx create mode 100644 docs/components/environment.mdx create mode 100644 docs/components/errorcode.mdx create mode 100644 docs/components/errorevent.mdx create mode 100644 docs/components/erroreventtype.mdx create mode 100644 docs/components/event.mdx create mode 100644 docs/components/failedmodel.mdx create mode 100644 docs/components/fieldt.mdx create mode 100644 docs/components/file.mdx rename docs/components/{filecitation.md => filecitation.mdx} (89%) delete mode 100644 docs/components/filecitationtype.md create mode 100644 docs/components/filecitationtype.mdx create mode 100644 docs/components/filedeleteresponse.mdx create mode 100644 docs/components/filedeleteresponsetype.mdx create mode 100644 docs/components/filelistresponse.mdx create mode 100644 docs/components/filemetadata.mdx create mode 100644 docs/components/filemetadatatype.mdx create mode 100644 docs/components/fileparserplugin.mdx create mode 100644 docs/components/fileparserpluginid.mdx rename docs/components/{filepath.md => filepath.mdx} (83%) delete mode 100644 docs/components/filepathtype.md create mode 100644 docs/components/filepathtype.mdx create mode 100644 docs/components/filesearchservertool.mdx create mode 100644 docs/components/filesearchservertoolvalue1.mdx create mode 100644 docs/components/filesearchservertoolvalue2.mdx create mode 100644 docs/components/filters.mdx create mode 100644 docs/components/filterstype.mdx create mode 100644 docs/components/filtersunion.mdx rename docs/components/{forbiddenresponseerrordata.md => forbiddenresponseerrordata.mdx} (93%) create mode 100644 docs/components/format_.mdx create mode 100644 docs/components/formatenum.mdx create mode 100644 docs/components/formatgrammar.mdx create mode 100644 docs/components/formatjsonobjectconfig.mdx create mode 100644 docs/components/formatjsonobjectconfigtype.mdx create mode 100644 docs/components/formatjsonschemaconfig.mdx create mode 100644 docs/components/formatjsonschemaconfigtype.mdx create mode 100644 docs/components/formats.mdx create mode 100644 docs/components/formattext.mdx create mode 100644 docs/components/formattextconfig.mdx create mode 100644 docs/components/formattextconfigtype.mdx create mode 100644 docs/components/formattypegrammar.mdx create mode 100644 docs/components/formattypetext.mdx create mode 100644 docs/components/frameimage.mdx create mode 100644 docs/components/frameimageimageurl.mdx create mode 100644 docs/components/frameimagetype.mdx create mode 100644 docs/components/frametype.mdx create mode 100644 docs/components/functioncallargsdeltaevent.mdx create mode 100644 docs/components/functioncallargsdeltaeventtype.mdx create mode 100644 docs/components/functioncallargsdoneevent.mdx create mode 100644 docs/components/functioncallargsdoneeventtype.mdx create mode 100644 docs/components/functioncallitem.mdx create mode 100644 docs/components/functioncallitemtype.mdx create mode 100644 docs/components/functioncalloutputitem.mdx create mode 100644 docs/components/functioncalloutputitemdetail.mdx create mode 100644 docs/components/functioncalloutputitemoutputinputimage.mdx create mode 100644 docs/components/functioncalloutputitemoutputunion1.mdx create mode 100644 docs/components/functioncalloutputitemoutputunion2.mdx create mode 100644 docs/components/functioncalloutputitemstatus.mdx create mode 100644 docs/components/functioncalloutputitemtypefunctioncalloutput.mdx create mode 100644 docs/components/functioncalloutputitemtypeinputimage.mdx create mode 100644 docs/components/fusionanalysisresult.mdx create mode 100644 docs/components/fusioncallanalysiscompletedevent.mdx create mode 100644 docs/components/fusioncallanalysiscompletedeventtype.mdx create mode 100644 docs/components/fusioncallanalysisinprogressevent.mdx create mode 100644 docs/components/fusioncallanalysisinprogresseventtype.mdx create mode 100644 docs/components/fusioncallcompletedevent.mdx create mode 100644 docs/components/fusioncallcompletedeventtype.mdx create mode 100644 docs/components/fusioncallinprogressevent.mdx create mode 100644 docs/components/fusioncallinprogresseventtype.mdx create mode 100644 docs/components/fusioncallpaneladdedevent.mdx create mode 100644 docs/components/fusioncallpaneladdedeventtype.mdx create mode 100644 docs/components/fusioncallpanelcompletedevent.mdx create mode 100644 docs/components/fusioncallpanelcompletedeventtype.mdx create mode 100644 docs/components/fusioncallpaneldeltaevent.mdx create mode 100644 docs/components/fusioncallpaneldeltaeventtype.mdx create mode 100644 docs/components/fusioncallpanelfailedevent.mdx create mode 100644 docs/components/fusioncallpanelfailedeventtype.mdx create mode 100644 docs/components/fusioncallpanelreasoningdeltaevent.mdx create mode 100644 docs/components/fusioncallpanelreasoningdeltaeventtype.mdx create mode 100644 docs/components/fusionplugin.mdx create mode 100644 docs/components/fusionpluginid.mdx create mode 100644 docs/components/fusionplugintool.mdx create mode 100644 docs/components/fusionservertoolconfig.mdx create mode 100644 docs/components/fusionservertoolconfigeffort.mdx create mode 100644 docs/components/fusionservertoolconfigreasoning.mdx create mode 100644 docs/components/fusionservertoolconfigtool.mdx create mode 100644 docs/components/fusionservertoolopenrouter.mdx create mode 100644 docs/components/fusionservertoolopenroutertype.mdx create mode 100644 docs/components/fusionsource.mdx create mode 100644 docs/components/generationcontentdata.mdx create mode 100644 docs/components/generationcontentdataoutput.mdx create mode 100644 docs/components/generationcontentresponse.mdx create mode 100644 docs/components/generationresponse.mdx create mode 100644 docs/components/generationresponsedata.mdx create mode 100644 docs/components/getbyokkeyresponse.mdx create mode 100644 docs/components/getguardrailresponse.mdx create mode 100644 docs/components/getobservabilitydestinationresponse.mdx create mode 100644 docs/components/getpresetresponse.mdx create mode 100644 docs/components/getpresetversionresponse.mdx create mode 100644 docs/components/getworkspaceresponse.mdx create mode 100644 docs/components/group.mdx create mode 100644 docs/components/guardrail.mdx create mode 100644 docs/components/guardrailinterval.mdx create mode 100644 docs/components/ignore.mdx create mode 100644 docs/components/imageconfig.mdx create mode 100644 docs/components/imageendpoint.mdx create mode 100644 docs/components/imagegencallcompletedevent.mdx create mode 100644 docs/components/imagegencallcompletedeventtype.mdx create mode 100644 docs/components/imagegencallgeneratingevent.mdx create mode 100644 docs/components/imagegencallgeneratingeventtype.mdx create mode 100644 docs/components/imagegencallinprogressevent.mdx create mode 100644 docs/components/imagegencallinprogresseventtype.mdx create mode 100644 docs/components/imagegencallpartialimageevent.mdx create mode 100644 docs/components/imagegencallpartialimageeventtype.mdx create mode 100644 docs/components/imagegencompletedevent.mdx create mode 100644 docs/components/imagegencompletedeventtype.mdx create mode 100644 docs/components/imagegenerationrequest.mdx create mode 100644 docs/components/imagegenerationrequestaspectratio.mdx create mode 100644 docs/components/imagegenerationrequestbackground.mdx create mode 100644 docs/components/imagegenerationrequestoptions.mdx create mode 100644 docs/components/imagegenerationrequestoutputformat.mdx create mode 100644 docs/components/imagegenerationrequestprovider.mdx create mode 100644 docs/components/imagegenerationrequestquality.mdx create mode 100644 docs/components/imagegenerationrequestresolution.mdx create mode 100644 docs/components/imagegenerationresponse.mdx create mode 100644 docs/components/imagegenerationresponsedata.mdx create mode 100644 docs/components/imagegenerationservertool.mdx create mode 100644 docs/components/imagegenerationservertoolbackground.mdx create mode 100644 docs/components/imagegenerationservertoolconfig.mdx create mode 100644 docs/components/imagegenerationservertoolconfigunion.mdx create mode 100644 docs/components/imagegenerationservertoolopenrouter.mdx create mode 100644 docs/components/imagegenerationservertoolopenroutertype.mdx create mode 100644 docs/components/imagegenerationservertooloutputformat.mdx create mode 100644 docs/components/imagegenerationservertoolquality.mdx create mode 100644 docs/components/imagegenerationservertooltype.mdx delete mode 100644 docs/components/imagegenerationstatus.md create mode 100644 docs/components/imagegenerationstatus.mdx create mode 100644 docs/components/imagegenerationusage.mdx create mode 100644 docs/components/imagegenerationusagecompletiontokensdetails.mdx create mode 100644 docs/components/imagegenerationusageprompttokensdetails.mdx create mode 100644 docs/components/imagegenpartialimageevent.mdx create mode 100644 docs/components/imagegenpartialimageeventtype.mdx create mode 100644 docs/components/imagegenstreamerrorevent.mdx create mode 100644 docs/components/imagegenstreamerroreventerror.mdx create mode 100644 docs/components/imagegenstreamerroreventtype.mdx create mode 100644 docs/components/imagemodelarchitecture.mdx create mode 100644 docs/components/imagemodelendpointsresponse.mdx create mode 100644 docs/components/imagemodellistitem.mdx create mode 100644 docs/components/imagemodelslistresponse.mdx create mode 100644 docs/components/imageoutputmodality.mdx create mode 100644 docs/components/imagepricingentry.mdx create mode 100644 docs/components/imagestreamingresponse.mdx create mode 100644 docs/components/imagestreamingresponsedata.mdx create mode 100644 docs/components/incompletedetails.mdx create mode 100644 docs/components/input1.mdx create mode 100644 docs/components/input2.mdx create mode 100644 docs/components/inputaudio.mdx create mode 100644 docs/components/inputaudioinputaudio.mdx create mode 100644 docs/components/inputaudiotype.mdx create mode 100644 docs/components/inputfidelity.mdx create mode 100644 docs/components/inputfile.mdx create mode 100644 docs/components/inputfiletype.mdx create mode 100644 docs/components/inputimage.mdx create mode 100644 docs/components/inputimagedetail.mdx create mode 100644 docs/components/inputimagemask.mdx create mode 100644 docs/components/inputimagetype.mdx create mode 100644 docs/components/inputmessageitem.mdx create mode 100644 docs/components/inputmessageitemcontentinputimage.mdx create mode 100644 docs/components/inputmessageitemcontentunion.mdx create mode 100644 docs/components/inputmessageitemdetail.mdx create mode 100644 docs/components/inputmessageitemroledeveloper.mdx create mode 100644 docs/components/inputmessageitemrolesystem.mdx create mode 100644 docs/components/inputmessageitemroleunion.mdx create mode 100644 docs/components/inputmessageitemroleuser.mdx create mode 100644 docs/components/inputmessageitemtypeinputimage.mdx create mode 100644 docs/components/inputmessageitemtypemessage.mdx delete mode 100644 docs/components/inputmodality.md create mode 100644 docs/components/inputmodality.mdx create mode 100644 docs/components/inputreference.mdx create mode 100644 docs/components/inputschema.mdx rename docs/components/{outputmessagecontent.md => inputscontent1.mdx} (89%) create mode 100644 docs/components/inputscontent2.mdx create mode 100644 docs/components/inputsmessage.mdx create mode 100644 docs/components/inputsphasecommentary.mdx create mode 100644 docs/components/inputsphasefinalanswer.mdx create mode 100644 docs/components/inputsphaseunion.mdx create mode 100644 docs/components/inputsreasoning.mdx create mode 100644 docs/components/inputsrole.mdx create mode 100644 docs/components/inputsstatuscompleted1.mdx create mode 100644 docs/components/inputsstatuscompleted2.mdx create mode 100644 docs/components/inputsstatusincomplete1.mdx create mode 100644 docs/components/inputsstatusincomplete2.mdx create mode 100644 docs/components/inputsstatusinprogress1.mdx create mode 100644 docs/components/inputsstatusinprogress2.mdx create mode 100644 docs/components/inputsstatusunion1.mdx create mode 100644 docs/components/inputsstatusunion2.mdx create mode 100644 docs/components/inputstypemessage.mdx create mode 100644 docs/components/inputstypereasoning.mdx create mode 100644 docs/components/inputsunion.mdx create mode 100644 docs/components/inputsunion1.mdx create mode 100644 docs/components/inputtext.mdx create mode 100644 docs/components/inputtexttype.mdx rename docs/components/{inputtokensdetails.md => inputtokensdetails.mdx} (88%) create mode 100644 docs/components/inputunion.mdx create mode 100644 docs/components/inputvideo.mdx create mode 100644 docs/components/inputvideotype.mdx delete mode 100644 docs/components/instructtype.md create mode 100644 docs/components/instructtype.mdx rename docs/components/{internalserverresponseerrordata.md => internalserverresponseerrordata.mdx} (92%) create mode 100644 docs/components/itemreferenceitem.mdx create mode 100644 docs/components/itemreferenceitemtype.mdx create mode 100644 docs/components/keep.mdx create mode 100644 docs/components/keepall.mdx create mode 100644 docs/components/keepenum.mdx create mode 100644 docs/components/keeptype.mdx create mode 100644 docs/components/keyassignment.mdx create mode 100644 docs/components/legacychatcontentvideo.mdx create mode 100644 docs/components/legacychatcontentvideotype.mdx create mode 100644 docs/components/legacywebsearchservertool.mdx create mode 100644 docs/components/legacywebsearchservertooltype.mdx create mode 100644 docs/components/listbyokkeysresponse.mdx delete mode 100644 docs/components/listendpointsresponse.md create mode 100644 docs/components/listendpointsresponse.mdx create mode 100644 docs/components/listguardrailsresponse.mdx create mode 100644 docs/components/listkeyassignmentsresponse.mdx create mode 100644 docs/components/listmemberassignmentsresponse.mdx create mode 100644 docs/components/listobservabilitydestinationsresponse.mdx create mode 100644 docs/components/listpresetsresponse.mdx create mode 100644 docs/components/listpresetversionsresponse.mdx create mode 100644 docs/components/listworkspacebudgetsresponse.mdx create mode 100644 docs/components/listworkspacesresponse.mdx create mode 100644 docs/components/localshellcallitem.mdx create mode 100644 docs/components/localshellcallitemaction.mdx create mode 100644 docs/components/localshellcalloutputitem.mdx create mode 100644 docs/components/localshellcalloutputitemstatus.mdx create mode 100644 docs/components/localshellcalloutputitemtype.mdx create mode 100644 docs/components/logic.mdx create mode 100644 docs/components/logprob.mdx create mode 100644 docs/components/maxprice.mdx create mode 100644 docs/components/mcpapprovalrequestitem.mdx create mode 100644 docs/components/mcpapprovalrequestitemtype.mdx create mode 100644 docs/components/mcpapprovalresponseitem.mdx create mode 100644 docs/components/mcpapprovalresponseitemtype.mdx create mode 100644 docs/components/mcpcallitem.mdx create mode 100644 docs/components/mcpcallitemtype.mdx create mode 100644 docs/components/mcplisttoolsitem.mdx create mode 100644 docs/components/mcplisttoolsitemtool.mdx create mode 100644 docs/components/mcplisttoolsitemtype.mdx create mode 100644 docs/components/mcpservertool.mdx create mode 100644 docs/components/mcpservertooltype.mdx create mode 100644 docs/components/memberassignment.mdx create mode 100644 docs/components/memorylimit.mdx create mode 100644 docs/components/messagesadvisortoolresultblock.mdx create mode 100644 docs/components/messagesadvisortoolresultblocktype.mdx create mode 100644 docs/components/messagesfallbackparam.mdx create mode 100644 docs/components/messagesmessageparam.mdx create mode 100644 docs/components/messagesmessageparamcontentunion1.mdx create mode 100644 docs/components/messagesmessageparamcontentunion2.mdx create mode 100644 docs/components/messagesmessageparamcontentunion3.mdx create mode 100644 docs/components/messagesmessageparamcontentunion4.mdx create mode 100644 docs/components/messagesmessageparamcontentunion5.mdx create mode 100644 docs/components/messagesmessageparamrole.mdx create mode 100644 docs/components/messagesmessageparamtypecompaction.mdx create mode 100644 docs/components/messagesoutputconfig.mdx create mode 100644 docs/components/messagesoutputconfigeffort.mdx create mode 100644 docs/components/messagesoutputconfigformat.mdx create mode 100644 docs/components/messagesoutputconfigtypejsonschema.mdx create mode 100644 docs/components/messagesrequest.mdx create mode 100644 docs/components/messagesrequestmetadata.mdx create mode 100644 docs/components/messagesrequestplugin.mdx create mode 100644 docs/components/messagesrequesttool.mdx create mode 100644 docs/components/messagesrequesttoolunion.mdx create mode 100644 docs/components/metadatalevel.mdx create mode 100644 docs/components/method.mdx delete mode 100644 docs/components/modality.md create mode 100644 docs/components/modality.mdx create mode 100644 docs/components/mode.mdx create mode 100644 docs/components/modeauto.mdx rename docs/components/{model.md => model.mdx} (80%) rename docs/components/{modelarchitecture.md => modelarchitecture.mdx} (67%) delete mode 100644 docs/components/modelarchitectureinstructtype.md create mode 100644 docs/components/modelarchitectureinstructtype.mdx create mode 100644 docs/components/modelbenchmarks.mdx create mode 100644 docs/components/modelenum.mdx delete mode 100644 docs/components/modelgroup.md create mode 100644 docs/components/modelgroup.mdx create mode 100644 docs/components/modellinks.mdx create mode 100644 docs/components/modelreasoning.mdx create mode 100644 docs/components/modelresponse.mdx rename docs/components/{modelscountresponse.md => modelscountresponse.mdx} (75%) create mode 100644 docs/components/modelscountresponsedata.mdx rename docs/components/{modelslistresponse.md => modelslistresponse.mdx} (89%) create mode 100644 docs/components/moderation.mdx create mode 100644 docs/components/moderationplugin.mdx create mode 100644 docs/components/moderationpluginid.mdx create mode 100644 docs/components/moderequired.mdx create mode 100644 docs/components/multimodalmedia.mdx create mode 100644 docs/components/nameadvisor.mdx create mode 100644 docs/components/namebash.mdx create mode 100644 docs/components/namestrreplaceeditor.mdx create mode 100644 docs/components/namewebsearch1.mdx create mode 100644 docs/components/namewebsearch2.mdx create mode 100644 docs/components/never.mdx rename docs/components/{notfoundresponseerrordata.md => notfoundresponseerrordata.mdx} (93%) create mode 100644 docs/components/observabilityarizedestination.mdx create mode 100644 docs/components/observabilityarizedestinationconfig.mdx create mode 100644 docs/components/observabilityarizedestinationtype.mdx create mode 100644 docs/components/observabilitybraintrustdestination.mdx create mode 100644 docs/components/observabilitybraintrustdestinationconfig.mdx create mode 100644 docs/components/observabilitybraintrustdestinationtype.mdx create mode 100644 docs/components/observabilityclickhousedestination.mdx create mode 100644 docs/components/observabilityclickhousedestinationconfig.mdx create mode 100644 docs/components/observabilityclickhousedestinationtype.mdx create mode 100644 docs/components/observabilitydatadogdestination.mdx create mode 100644 docs/components/observabilitydatadogdestinationconfig.mdx create mode 100644 docs/components/observabilitydatadogdestinationtype.mdx create mode 100644 docs/components/observabilitydestination.mdx create mode 100644 docs/components/observabilityfilterrulesconfig.mdx create mode 100644 docs/components/observabilityfilterrulesconfigvalue.mdx create mode 100644 docs/components/observabilitygrafanadestination.mdx create mode 100644 docs/components/observabilitygrafanadestinationconfig.mdx create mode 100644 docs/components/observabilitygrafanadestinationtype.mdx create mode 100644 docs/components/observabilitylangfusedestination.mdx create mode 100644 docs/components/observabilitylangfusedestinationconfig.mdx create mode 100644 docs/components/observabilitylangfusedestinationtype.mdx create mode 100644 docs/components/observabilitylangsmithdestination.mdx create mode 100644 docs/components/observabilitylangsmithdestinationconfig.mdx create mode 100644 docs/components/observabilitylangsmithdestinationtype.mdx create mode 100644 docs/components/observabilitynewrelicdestination.mdx create mode 100644 docs/components/observabilitynewrelicdestinationconfig.mdx create mode 100644 docs/components/observabilitynewrelicdestinationtype.mdx create mode 100644 docs/components/observabilityopikdestination.mdx create mode 100644 docs/components/observabilityopikdestinationconfig.mdx create mode 100644 docs/components/observabilityopikdestinationtype.mdx create mode 100644 docs/components/observabilityotelcollectordestination.mdx create mode 100644 docs/components/observabilityotelcollectordestinationconfig.mdx create mode 100644 docs/components/observabilityotelcollectordestinationtype.mdx create mode 100644 docs/components/observabilityposthogdestination.mdx create mode 100644 docs/components/observabilityposthogdestinationconfig.mdx create mode 100644 docs/components/observabilityposthogdestinationtype.mdx create mode 100644 docs/components/observabilityrampdestination.mdx create mode 100644 docs/components/observabilityrampdestinationconfig.mdx create mode 100644 docs/components/observabilityrampdestinationtype.mdx create mode 100644 docs/components/observabilitys3destination.mdx create mode 100644 docs/components/observabilitys3destinationconfig.mdx create mode 100644 docs/components/observabilitys3destinationtype.mdx create mode 100644 docs/components/observabilitysentrydestination.mdx create mode 100644 docs/components/observabilitysentrydestinationconfig.mdx create mode 100644 docs/components/observabilitysentrydestinationtype.mdx create mode 100644 docs/components/observabilitysnowflakedestination.mdx create mode 100644 docs/components/observabilitysnowflakedestinationconfig.mdx create mode 100644 docs/components/observabilitysnowflakedestinationtype.mdx create mode 100644 docs/components/observabilityweavedestination.mdx create mode 100644 docs/components/observabilityweavedestinationconfig.mdx create mode 100644 docs/components/observabilityweavedestinationtype.mdx create mode 100644 docs/components/observabilitywebhookdestination.mdx create mode 100644 docs/components/observabilitywebhookdestinationconfig.mdx create mode 100644 docs/components/observabilitywebhookdestinationtype.mdx create mode 100644 docs/components/only.mdx create mode 100644 docs/components/openairesponsecustomtoolcall.mdx create mode 100644 docs/components/openairesponsecustomtoolcalloutput.mdx create mode 100644 docs/components/openairesponsecustomtoolcalloutputoutput1.mdx create mode 100644 docs/components/openairesponsecustomtoolcalloutputoutput2.mdx create mode 100644 docs/components/openairesponsecustomtoolcalloutputtype.mdx create mode 100644 docs/components/openairesponsecustomtoolcalltype.mdx create mode 100644 docs/components/openairesponsefunctiontoolcall.mdx create mode 100644 docs/components/openairesponsefunctiontoolcalloutput.mdx create mode 100644 docs/components/openairesponsefunctiontoolcalloutputoutput1.mdx create mode 100644 docs/components/openairesponsefunctiontoolcalloutputoutput2.mdx create mode 100644 docs/components/openairesponsefunctiontoolcalloutputstatus.mdx create mode 100644 docs/components/openairesponsefunctiontoolcalloutputtype.mdx create mode 100644 docs/components/openairesponsefunctiontoolcalltype.mdx create mode 100644 docs/components/openairesponseinputmessageitem.mdx create mode 100644 docs/components/openairesponseinputmessageitemcontent.mdx create mode 100644 docs/components/openairesponseinputmessageitemroledeveloper.mdx create mode 100644 docs/components/openairesponseinputmessageitemrolesystem.mdx create mode 100644 docs/components/openairesponseinputmessageitemroleunion.mdx create mode 100644 docs/components/openairesponseinputmessageitemroleuser.mdx create mode 100644 docs/components/openairesponseinputmessageitemtype.mdx rename docs/components/{openairesponsesannotation.md => openairesponsesannotation.mdx} (87%) rename docs/components/{openairesponsesrefusalcontent.md => openairesponsesrefusalcontent.mdx} (88%) delete mode 100644 docs/components/openairesponsesrefusalcontenttype.md create mode 100644 docs/components/openairesponsesrefusalcontenttype.mdx delete mode 100644 docs/components/openairesponsesresponsestatus.md create mode 100644 docs/components/openairesponsesresponsestatus.mdx rename docs/components/{openairesponsestoolchoice.md => openairesponsestoolchoice.mdx} (73%) create mode 100644 docs/components/openairesponsestoolchoiceapplypatch.mdx delete mode 100644 docs/components/openairesponsestoolchoiceauto.md create mode 100644 docs/components/openairesponsestoolchoiceauto.mdx rename docs/components/{openairesponsestoolchoicefunction.md => openairesponsestoolchoicefunction.mdx} (87%) delete mode 100644 docs/components/openairesponsestoolchoicenone.md create mode 100644 docs/components/openairesponsestoolchoicenone.mdx delete mode 100644 docs/components/openairesponsestoolchoicerequired.md create mode 100644 docs/components/openairesponsestoolchoicerequired.mdx create mode 100644 docs/components/openairesponsestoolchoiceshell.mdx create mode 100644 docs/components/openairesponsestoolchoicetypeapplypatch.mdx delete mode 100644 docs/components/openairesponsestoolchoicetypefunction.md create mode 100644 docs/components/openairesponsestoolchoicetypefunction.mdx create mode 100644 docs/components/openairesponsestoolchoicetypeshell.mdx delete mode 100644 docs/components/openairesponsestoolchoicetypewebsearchpreview.md create mode 100644 docs/components/openairesponsestoolchoicetypewebsearchpreview.mdx delete mode 100644 docs/components/openairesponsestoolchoicetypewebsearchpreview20250311.md create mode 100644 docs/components/openairesponsestoolchoicetypewebsearchpreview20250311.mdx rename docs/components/{openairesponsestoolchoiceunion.md => openairesponsestoolchoiceunion.mdx} (95%) delete mode 100644 docs/components/openairesponsestruncation.md create mode 100644 docs/components/openairesponsestruncation.mdx create mode 100644 docs/components/openresponsescreatedevent.mdx create mode 100644 docs/components/openresponsescreatedeventtype.mdx create mode 100644 docs/components/openresponsesinprogressevent.mdx create mode 100644 docs/components/openresponsesinprogresseventtype.mdx create mode 100644 docs/components/openresponsesresult.mdx create mode 100644 docs/components/openresponsesresultobject.mdx create mode 100644 docs/components/openresponsesresulttoolfunction.mdx create mode 100644 docs/components/openresponsesresulttoolunion.mdx create mode 100644 docs/components/openresponsesresulttype.mdx create mode 100644 docs/components/openroutermetadata.mdx create mode 100644 docs/components/openrouterwebsearchservertool.mdx create mode 100644 docs/components/openrouterwebsearchservertooltype.mdx create mode 100644 docs/components/operator.mdx create mode 100644 docs/components/order.mdx create mode 100644 docs/components/outcome.mdx create mode 100644 docs/components/outcomeexit.mdx create mode 100644 docs/components/outcometimeout.mdx create mode 100644 docs/components/outputadvisorservertoolitem.mdx create mode 100644 docs/components/outputadvisorservertoolitemtype.mdx create mode 100644 docs/components/outputapplypatchcallitem.mdx create mode 100644 docs/components/outputapplypatchcallitemtype.mdx create mode 100644 docs/components/outputapplypatchservertoolitem.mdx create mode 100644 docs/components/outputapplypatchservertoolitemtype.mdx create mode 100644 docs/components/outputbashservertoolitem.mdx create mode 100644 docs/components/outputbashservertoolitemtype.mdx create mode 100644 docs/components/outputbrowseruseservertoolitem.mdx create mode 100644 docs/components/outputbrowseruseservertoolitemtype.mdx create mode 100644 docs/components/outputcodeinterpretercallitem.mdx create mode 100644 docs/components/outputcodeinterpretercallitemoutputunion.mdx create mode 100644 docs/components/outputcodeinterpretercallitemtypeimage.mdx create mode 100644 docs/components/outputcodeinterpreterservertoolitem.mdx create mode 100644 docs/components/outputcodeinterpreterservertoolitemtype.mdx create mode 100644 docs/components/outputcomputercallitem.mdx create mode 100644 docs/components/outputcomputercallitemstatus.mdx create mode 100644 docs/components/outputcomputercallitemtype.mdx create mode 100644 docs/components/outputcustomtoolcallitem.mdx create mode 100644 docs/components/outputcustomtoolcallitemtype.mdx create mode 100644 docs/components/outputdatetimeitem.mdx create mode 100644 docs/components/outputdatetimeitemtype.mdx create mode 100644 docs/components/outputfilesearchcallitem.mdx create mode 100644 docs/components/outputfilesearchcallitemtype.mdx create mode 100644 docs/components/outputfilesearchservertoolitem.mdx create mode 100644 docs/components/outputfilesearchservertoolitemtype.mdx create mode 100644 docs/components/outputfunctioncallitem.mdx create mode 100644 docs/components/outputfunctioncallitemstatuscompleted.mdx create mode 100644 docs/components/outputfunctioncallitemstatusincomplete.mdx create mode 100644 docs/components/outputfunctioncallitemstatusinprogress.mdx create mode 100644 docs/components/outputfunctioncallitemstatusunion.mdx create mode 100644 docs/components/outputfunctioncallitemtype.mdx create mode 100644 docs/components/outputfusionservertoolitem.mdx create mode 100644 docs/components/outputfusionservertoolitemtype.mdx create mode 100644 docs/components/outputimage.mdx create mode 100644 docs/components/outputimagegenerationcallitem.mdx create mode 100644 docs/components/outputimagegenerationcallitemtype.mdx create mode 100644 docs/components/outputimagegenerationservertoolitem.mdx create mode 100644 docs/components/outputimagegenerationservertoolitemtype.mdx rename docs/components/{outputitemimagegenerationcall.md => outputitemimagegenerationcall.mdx} (80%) delete mode 100644 docs/components/outputitemimagegenerationcalltype.md create mode 100644 docs/components/outputitemimagegenerationcalltype.mdx create mode 100644 docs/components/outputitems.mdx create mode 100644 docs/components/outputlogs.mdx create mode 100644 docs/components/outputmcpservertoolitem.mdx create mode 100644 docs/components/outputmcpservertoolitemtype.mdx create mode 100644 docs/components/outputmemoryservertoolitem.mdx create mode 100644 docs/components/outputmemoryservertoolitemtype.mdx rename docs/components/{outputmessage.md => outputmessage.mdx} (86%) create mode 100644 docs/components/outputmessagecontent.mdx create mode 100644 docs/components/outputmessageitem.mdx create mode 100644 docs/components/outputmessageitemcontent.mdx create mode 100644 docs/components/outputmessageitemphasecommentary.mdx create mode 100644 docs/components/outputmessageitemphasefinalanswer.mdx create mode 100644 docs/components/outputmessageitemphaseunion.mdx create mode 100644 docs/components/outputmessageitemrole.mdx create mode 100644 docs/components/outputmessageitemstatuscompleted.mdx create mode 100644 docs/components/outputmessageitemstatusincomplete.mdx create mode 100644 docs/components/outputmessageitemstatusinprogress.mdx create mode 100644 docs/components/outputmessageitemstatusunion.mdx create mode 100644 docs/components/outputmessageitemtype.mdx create mode 100644 docs/components/outputmessagephasecommentary.mdx create mode 100644 docs/components/outputmessagephasefinalanswer.mdx create mode 100644 docs/components/outputmessagephaseunion.mdx delete mode 100644 docs/components/outputmessagerole.md create mode 100644 docs/components/outputmessagerole.mdx delete mode 100644 docs/components/outputmessagestatuscompleted.md create mode 100644 docs/components/outputmessagestatuscompleted.mdx delete mode 100644 docs/components/outputmessagestatusincomplete.md create mode 100644 docs/components/outputmessagestatusincomplete.mdx delete mode 100644 docs/components/outputmessagestatusinprogress.md create mode 100644 docs/components/outputmessagestatusinprogress.mdx rename docs/components/{outputmessagestatusunion.md => outputmessagestatusunion.mdx} (90%) delete mode 100644 docs/components/outputmessagetype.md create mode 100644 docs/components/outputmessagetype.mdx delete mode 100644 docs/components/outputmodality.md create mode 100644 docs/components/outputmodality.mdx create mode 100644 docs/components/outputmodalityenum.mdx create mode 100644 docs/components/outputreasoningitem.mdx create mode 100644 docs/components/outputreasoningitemstatuscompleted.mdx create mode 100644 docs/components/outputreasoningitemstatusincomplete.mdx create mode 100644 docs/components/outputreasoningitemstatusinprogress.mdx create mode 100644 docs/components/outputreasoningitemstatusunion.mdx create mode 100644 docs/components/outputreasoningitemtype.mdx create mode 100644 docs/components/outputsearchmodelsservertoolitem.mdx create mode 100644 docs/components/outputsearchmodelsservertoolitemtype.mdx create mode 100644 docs/components/outputshellcallitem.mdx create mode 100644 docs/components/outputshellcallitemaction.mdx create mode 100644 docs/components/outputshellcallitemtype.mdx create mode 100644 docs/components/outputshellcalloutputitem.mdx create mode 100644 docs/components/outputshellcalloutputitemoutput.mdx create mode 100644 docs/components/outputshellcalloutputitemtypeshellcalloutput.mdx create mode 100644 docs/components/outputsubagentservertoolitem.mdx create mode 100644 docs/components/outputsubagentservertoolitemtype.mdx create mode 100644 docs/components/outputtexteditorservertoolitem.mdx create mode 100644 docs/components/outputtexteditorservertoolitemtype.mdx rename docs/components/{outputtokensdetails.md => outputtokensdetails.mdx} (87%) create mode 100644 docs/components/outputtoolsearchservertoolitem.mdx create mode 100644 docs/components/outputtoolsearchservertoolitemtype.mdx create mode 100644 docs/components/outputwebfetchservertoolitem.mdx create mode 100644 docs/components/outputwebfetchservertoolitemtype.mdx create mode 100644 docs/components/outputwebsearchcallitem.mdx create mode 100644 docs/components/outputwebsearchcallitemactionsearch.mdx create mode 100644 docs/components/outputwebsearchservertoolitem.mdx create mode 100644 docs/components/outputwebsearchservertoolitemaction.mdx create mode 100644 docs/components/outputwebsearchservertoolitemsource.mdx create mode 100644 docs/components/outputwebsearchservertoolitemtypeopenrouterwebsearch.mdx create mode 100644 docs/components/outputwebsearchservertoolitemtypesearch.mdx create mode 100644 docs/components/outputwebsearchservertoolitemtypeurl.mdx delete mode 100644 docs/components/parameter.md create mode 100644 docs/components/parameter.mdx create mode 100644 docs/components/paretorouterplugin.mdx create mode 100644 docs/components/paretorouterpluginid.mdx create mode 100644 docs/components/partialcoverage.mdx delete mode 100644 docs/components/partition.md create mode 100644 docs/components/partition.mdx rename docs/components/{payloadtoolargeresponseerrordata.md => payloadtoolargeresponseerrordata.mdx} (92%) rename docs/components/{paymentrequiredresponseerrordata.md => paymentrequiredresponseerrordata.mdx} (92%) rename docs/components/{pdfparserengine.md => pdfparserengine.mdx} (91%) create mode 100644 docs/components/pdfparserengineenum.mdx create mode 100644 docs/components/pdfparserenginepdftext.mdx rename docs/components/{pdfparseroptions.md => pdfparseroptions.mdx} (80%) create mode 100644 docs/components/pendingsafetycheck.mdx rename docs/components/{percentilelatencycutoffs.md => percentilelatencycutoffs.mdx} (95%) rename docs/components/{percentilestats.md => percentilestats.mdx} (96%) rename docs/components/{percentilethroughputcutoffs.md => percentilethroughputcutoffs.mdx} (95%) rename docs/components/{perrequestlimits.md => perrequestlimits.mdx} (96%) create mode 100644 docs/components/pipelinestage.mdx create mode 100644 docs/components/pipelinestagetype.mdx rename docs/components/{preferredmaxlatency.md => preferredmaxlatency.mdx} (94%) rename docs/components/{preferredminthroughput.md => preferredminthroughput.mdx} (93%) create mode 100644 docs/components/preset.mdx create mode 100644 docs/components/presetdesignatedversion.mdx create mode 100644 docs/components/presetenum.mdx create mode 100644 docs/components/presetstatus.mdx create mode 100644 docs/components/presetwithdesignatedversion.mdx create mode 100644 docs/components/preview20250311websearchservertool.mdx create mode 100644 docs/components/preview20250311websearchservertooltype.mdx create mode 100644 docs/components/previewwebsearchservertool.mdx create mode 100644 docs/components/previewwebsearchservertooltype.mdx create mode 100644 docs/components/previewwebsearchuserlocation.mdx create mode 100644 docs/components/previewwebsearchuserlocationtype.mdx rename docs/components/{pricing.md => pricing.mdx} (99%) create mode 100644 docs/components/promptinjectionscanscope.mdx delete mode 100644 docs/components/providername.md create mode 100644 docs/components/providername.mdx create mode 100644 docs/components/provideroptions.mdx rename docs/components/{provideroverloadedresponseerrordata.md => provideroverloadedresponseerrordata.mdx} (92%) rename docs/components/{providerpreferences.md => providerpreferences.mdx} (81%) create mode 100644 docs/components/providerresponse.mdx create mode 100644 docs/components/providerresponseprovidername.mdx delete mode 100644 docs/components/providersort.md create mode 100644 docs/components/providersort.mdx rename docs/components/{providersortconfig.md => providersortconfig.mdx} (75%) rename docs/components/{publicendpoint.md => publicendpoint.mdx} (87%) delete mode 100644 docs/components/publicendpointquantization.md create mode 100644 docs/components/publicendpointquantization.mdx rename docs/components/{publicpricing.md => publicpricing.mdx} (99%) delete mode 100644 docs/components/quantization.md create mode 100644 docs/components/quantization.mdx create mode 100644 docs/components/rangecapability.mdx create mode 100644 docs/components/rangecapabilitytype.mdx create mode 100644 docs/components/ranker.mdx create mode 100644 docs/components/rankingoptions.mdx create mode 100644 docs/components/rankingsdailyitem.mdx create mode 100644 docs/components/rankingsdailymeta.mdx create mode 100644 docs/components/rankingsdailymetaversion.mdx create mode 100644 docs/components/rankingsdailyresponse.mdx delete mode 100644 docs/components/reason.md create mode 100644 docs/components/reason.mdx create mode 100644 docs/components/reasoningconfig.mdx create mode 100644 docs/components/reasoningdeltaevent.mdx create mode 100644 docs/components/reasoningdeltaeventtype.mdx rename docs/components/{reasoningdetailencrypted.md => reasoningdetailencrypted.mdx} (82%) delete mode 100644 docs/components/reasoningdetailencryptedtype.md create mode 100644 docs/components/reasoningdetailencryptedtype.mdx rename docs/components/{reasoningdetailsummary.md => reasoningdetailsummary.mdx} (79%) delete mode 100644 docs/components/reasoningdetailsummarytype.md create mode 100644 docs/components/reasoningdetailsummarytype.mdx rename docs/components/{reasoningdetailtext.md => reasoningdetailtext.mdx} (85%) delete mode 100644 docs/components/reasoningdetailtexttype.md create mode 100644 docs/components/reasoningdetailtexttype.mdx rename docs/components/{reasoningdetailunion.md => reasoningdetailunion.mdx} (91%) create mode 100644 docs/components/reasoningdoneevent.mdx create mode 100644 docs/components/reasoningdoneeventtype.mdx create mode 100644 docs/components/reasoningeffort.mdx create mode 100644 docs/components/reasoningformat.mdx create mode 100644 docs/components/reasoningitem.mdx create mode 100644 docs/components/reasoningitemstatuscompleted.mdx create mode 100644 docs/components/reasoningitemstatusincomplete.mdx create mode 100644 docs/components/reasoningitemstatusinprogress.mdx create mode 100644 docs/components/reasoningitemstatusunion.mdx create mode 100644 docs/components/reasoningitemtype.mdx create mode 100644 docs/components/reasoningsummarypartaddedevent.mdx create mode 100644 docs/components/reasoningsummarypartaddedeventtype.mdx create mode 100644 docs/components/reasoningsummarypartdoneevent.mdx create mode 100644 docs/components/reasoningsummarypartdoneeventtype.mdx rename docs/components/{reasoningsummarytext.md => reasoningsummarytext.mdx} (87%) create mode 100644 docs/components/reasoningsummarytextdeltaevent.mdx create mode 100644 docs/components/reasoningsummarytextdeltaeventtype.mdx create mode 100644 docs/components/reasoningsummarytextdoneevent.mdx create mode 100644 docs/components/reasoningsummarytextdoneeventtype.mdx delete mode 100644 docs/components/reasoningsummarytexttype.md create mode 100644 docs/components/reasoningsummarytexttype.mdx create mode 100644 docs/components/reasoningsummaryverbosity.mdx rename docs/components/{reasoningtextcontent.md => reasoningtextcontent.mdx} (87%) delete mode 100644 docs/components/reasoningtextcontenttype.md create mode 100644 docs/components/reasoningtextcontenttype.mdx create mode 100644 docs/components/refusaldeltaevent.mdx create mode 100644 docs/components/refusaldeltaeventtype.mdx create mode 100644 docs/components/refusaldoneevent.mdx create mode 100644 docs/components/refusaldoneeventtype.mdx create mode 100644 docs/components/region.mdx rename docs/components/{requesttimeoutresponseerrordata.md => requesttimeoutresponseerrordata.mdx} (92%) create mode 100644 docs/components/requireapproval.mdx create mode 100644 docs/components/requireapprovalalways.mdx create mode 100644 docs/components/requireapprovalnever.mdx create mode 100644 docs/components/requireapprovalunion.mdx create mode 100644 docs/components/resetinterval.mdx create mode 100644 docs/components/response.mdx rename docs/components/{responseformat.md => responseformat.mdx} (95%) create mode 100644 docs/components/responseformatenum.mdx create mode 100644 docs/components/responsehealingplugin.mdx create mode 100644 docs/components/responsehealingpluginid.mdx create mode 100644 docs/components/responseincludesenum.mdx rename docs/components/{responseoutputtext.md => responseoutputtext.mdx} (66%) create mode 100644 docs/components/responseoutputtexttoplogprob.mdx delete mode 100644 docs/components/responseoutputtexttype.md create mode 100644 docs/components/responseoutputtexttype.mdx rename docs/components/{responseserrorfield.md => responseserrorfield.mdx} (81%) create mode 100644 docs/components/responsesrequest.mdx create mode 100644 docs/components/responsesrequestplugin.mdx create mode 100644 docs/components/responsesrequestservicetier.mdx create mode 100644 docs/components/responsesrequesttoolfunction.mdx create mode 100644 docs/components/responsesrequesttoolunion.mdx create mode 100644 docs/components/responsesrequesttype.mdx create mode 100644 docs/components/responsesstreamingresponse.mdx create mode 100644 docs/components/routerattempt.mdx create mode 100644 docs/components/routerparams.mdx create mode 100644 docs/components/routingstrategy.mdx create mode 100644 docs/components/rule.mdx create mode 100644 docs/components/searchcontextsizeenum.mdx create mode 100644 docs/components/searchmodelsservertoolconfig.mdx create mode 100644 docs/components/searchqualitylevel.mdx rename docs/components/{security.md => security.mdx} (91%) create mode 100644 docs/components/servertooluse.mdx create mode 100644 docs/components/servertoolusedetails.mdx rename docs/components/{serviceunavailableresponseerrordata.md => serviceunavailableresponseerrordata.mdx} (92%) create mode 100644 docs/components/shellcallitem.mdx create mode 100644 docs/components/shellcallitemaction.mdx create mode 100644 docs/components/shellcallitemstatus.mdx create mode 100644 docs/components/shellcallitemtype.mdx create mode 100644 docs/components/shellcalloutputitem.mdx create mode 100644 docs/components/shellcalloutputitemoutput.mdx create mode 100644 docs/components/shellcalloutputitemstatus.mdx create mode 100644 docs/components/shellcalloutputitemtype.mdx create mode 100644 docs/components/shellcallstatus.mdx create mode 100644 docs/components/shellservertool.mdx create mode 100644 docs/components/shellservertoolconfig.mdx create mode 100644 docs/components/shellservertoolengine.mdx create mode 100644 docs/components/shellservertoolenvironment.mdx create mode 100644 docs/components/shellservertoolopenrouter.mdx create mode 100644 docs/components/shellservertoolopenroutertype.mdx create mode 100644 docs/components/shellservertooltype.mdx create mode 100644 docs/components/size.mdx create mode 100644 docs/components/sort.mdx create mode 100644 docs/components/sourcecontent.mdx create mode 100644 docs/components/sourcetype.mdx create mode 100644 docs/components/speechrequest.mdx create mode 100644 docs/components/speechrequestprovider.mdx create mode 100644 docs/components/speed.mdx create mode 100644 docs/components/stance.mdx rename docs/components/{stop.md => stop.mdx} (91%) create mode 100644 docs/components/stopservertoolswhencondition.mdx create mode 100644 docs/components/stopservertoolswhenfinishreasonis.mdx create mode 100644 docs/components/stopservertoolswhenfinishreasonistype.mdx create mode 100644 docs/components/stopservertoolswhenhastoolcall.mdx create mode 100644 docs/components/stopservertoolswhenhastoolcalltype.mdx create mode 100644 docs/components/stopservertoolswhenmaxcost.mdx create mode 100644 docs/components/stopservertoolswhenmaxcosttype.mdx create mode 100644 docs/components/stopservertoolswhenmaxtokensused.mdx create mode 100644 docs/components/stopservertoolswhenmaxtokensusedtype.mdx create mode 100644 docs/components/stopservertoolswhenstepcountis.mdx create mode 100644 docs/components/stopservertoolswhenstepcountistype.mdx create mode 100644 docs/components/storedprompttemplate.mdx create mode 100644 docs/components/streamevents.mdx create mode 100644 docs/components/streameventsresponsecompleted.mdx create mode 100644 docs/components/streameventsresponsecompletedtype.mdx create mode 100644 docs/components/streameventsresponsefailed.mdx create mode 100644 docs/components/streameventsresponsefailedtype.mdx create mode 100644 docs/components/streameventsresponseincomplete.mdx create mode 100644 docs/components/streameventsresponseincompletetype.mdx create mode 100644 docs/components/streameventsresponseoutputitemadded.mdx create mode 100644 docs/components/streameventsresponseoutputitemaddedtype.mdx create mode 100644 docs/components/streameventsresponseoutputitemdone.mdx create mode 100644 docs/components/streameventsresponseoutputitemdonetype.mdx create mode 100644 docs/components/streamlogprob.mdx create mode 100644 docs/components/streamlogprobtoplogprob.mdx create mode 100644 docs/components/sttinputaudio.mdx create mode 100644 docs/components/sttrequest.mdx create mode 100644 docs/components/sttrequestprovider.mdx create mode 100644 docs/components/sttresponse.mdx create mode 100644 docs/components/sttusage.mdx create mode 100644 docs/components/subagentnestedtool.mdx create mode 100644 docs/components/subagentreasoning.mdx create mode 100644 docs/components/subagentreasoningeffort.mdx create mode 100644 docs/components/subagentservertoolconfig.mdx create mode 100644 docs/components/subagentservertoolopenrouter.mdx create mode 100644 docs/components/subagentservertoolopenroutertype.mdx create mode 100644 docs/components/supportedaspectratio.mdx create mode 100644 docs/components/supportedframeimage.mdx create mode 100644 docs/components/supportedresolution.mdx create mode 100644 docs/components/supportedsize.mdx create mode 100644 docs/components/syntax.mdx create mode 100644 docs/components/system.mdx create mode 100644 docs/components/taskbudget.mdx create mode 100644 docs/components/taskclassificationitem.mdx create mode 100644 docs/components/taskclassificationmacrocategory.mdx create mode 100644 docs/components/taskclassificationmodel.mdx create mode 100644 docs/components/taskclassificationresponse.mdx create mode 100644 docs/components/taskclassificationresponsedata.mdx create mode 100644 docs/components/textdeltaevent.mdx create mode 100644 docs/components/textdeltaeventtype.mdx create mode 100644 docs/components/textdoneevent.mdx create mode 100644 docs/components/textdoneeventtype.mdx create mode 100644 docs/components/textextendedconfig.mdx create mode 100644 docs/components/thinking.mdx create mode 100644 docs/components/thinkingadaptive.mdx create mode 100644 docs/components/thinkingdisabled.mdx create mode 100644 docs/components/thinkingenabled.mdx create mode 100644 docs/components/timings.mdx delete mode 100644 docs/components/tokenizer.md create mode 100644 docs/components/tokenizer.mdx create mode 100644 docs/components/tooladvisor20260301.mdx create mode 100644 docs/components/toolbash20250124.mdx create mode 100644 docs/components/toolcallstatus.mdx create mode 100644 docs/components/toolchoice.mdx create mode 100644 docs/components/toolchoiceallowed.mdx create mode 100644 docs/components/toolchoiceallowedtype.mdx create mode 100644 docs/components/toolchoiceany.mdx create mode 100644 docs/components/toolchoiceauto.mdx create mode 100644 docs/components/toolchoicenone.mdx create mode 100644 docs/components/toolchoicetool.mdx create mode 100644 docs/components/toolchoicetypeauto.mdx create mode 100644 docs/components/toolcustom.mdx create mode 100644 docs/components/tooltexteditor20250124.mdx create mode 100644 docs/components/tooltypecustom.mdx create mode 100644 docs/components/tooltypeephemeral.mdx create mode 100644 docs/components/toolwebsearch20250305.mdx create mode 100644 docs/components/toolwebsearch20260209.mdx rename docs/components/{toomanyrequestsresponseerrordata.md => toomanyrequestsresponseerrordata.mdx} (92%) rename docs/components/{topproviderinfo.md => topproviderinfo.mdx} (97%) create mode 100644 docs/components/tournamentstats.mdx create mode 100644 docs/components/traceconfig.mdx create mode 100644 docs/components/trigger.mdx create mode 100644 docs/components/triggerinputtokens.mdx create mode 100644 docs/components/truncation.mdx rename docs/components/{type.md => type.mdx} (94%) create mode 100644 docs/components/typeadaptive.mdx create mode 100644 docs/components/typeadvisor20260301.mdx create mode 100644 docs/components/typeany.mdx create mode 100644 docs/components/typebash20250124.mdx create mode 100644 docs/components/typeclearthinking20251015.mdx create mode 100644 docs/components/typecleartooluses20250919.mdx create mode 100644 docs/components/typecodeinterpreter.mdx create mode 100644 docs/components/typecodeinterpretercall.mdx create mode 100644 docs/components/typecompact20260112.mdx create mode 100644 docs/components/typedisabled.mdx create mode 100644 docs/components/typedocument.mdx create mode 100644 docs/components/typeenabled.mdx create mode 100644 docs/components/typeexec.mdx create mode 100644 docs/components/typeexit.mdx create mode 100644 docs/components/typefilesearch.mdx create mode 100644 docs/components/typefindinpage.mdx create mode 100644 docs/components/typelocalshellcall.mdx create mode 100644 docs/components/typelogs.mdx create mode 100644 docs/components/typenone.mdx create mode 100644 docs/components/typeopenpage.mdx create mode 100644 docs/components/typeredactedthinking.mdx create mode 100644 docs/components/typeservertooluse.mdx create mode 100644 docs/components/typetexteditor20250124.mdx create mode 100644 docs/components/typethinking.mdx create mode 100644 docs/components/typetimeout.mdx create mode 100644 docs/components/typetokens.mdx create mode 100644 docs/components/typetool.mdx create mode 100644 docs/components/typetoolreference.mdx create mode 100644 docs/components/typetoolresult.mdx create mode 100644 docs/components/typetooluse.mdx create mode 100644 docs/components/typewebsearch20250305.mdx create mode 100644 docs/components/typewebsearch20260209.mdx create mode 100644 docs/components/typewebsearchcall.mdx create mode 100644 docs/components/typewebsearchtoolresult.mdx create mode 100644 docs/components/typewebsearchtoolresulterror.mdx rename docs/components/{unauthorizedresponseerrordata.md => unauthorizedresponseerrordata.mdx} (93%) create mode 100644 docs/components/unifiedbenchmarkpricing.mdx create mode 100644 docs/components/unifiedbenchmarksaaitem.mdx create mode 100644 docs/components/unifiedbenchmarksaaitemsource.mdx create mode 100644 docs/components/unifiedbenchmarksdaitem.mdx create mode 100644 docs/components/unifiedbenchmarksdaitemsource.mdx create mode 100644 docs/components/unifiedbenchmarksmeta.mdx create mode 100644 docs/components/unifiedbenchmarksmetasource.mdx create mode 100644 docs/components/unifiedbenchmarksmetaversion.mdx create mode 100644 docs/components/unifiedbenchmarksresponse.mdx create mode 100644 docs/components/unifiedbenchmarksresponsedata.mdx create mode 100644 docs/components/uniqueinsight.mdx create mode 100644 docs/components/unit.mdx rename docs/components/{unprocessableentityresponseerrordata.md => unprocessableentityresponseerrordata.mdx} (92%) create mode 100644 docs/components/updatebyokkeyrequest.mdx create mode 100644 docs/components/updatebyokkeyresponse.mdx create mode 100644 docs/components/updateguardrailrequest.mdx create mode 100644 docs/components/updateguardrailresponse.mdx create mode 100644 docs/components/updateobservabilitydestinationrequest.mdx create mode 100644 docs/components/updateobservabilitydestinationresponse.mdx create mode 100644 docs/components/updateworkspacerequest.mdx create mode 100644 docs/components/updateworkspaceresponse.mdx create mode 100644 docs/components/upsertworkspacebudgetrequest.mdx create mode 100644 docs/components/upsertworkspacebudgetresponse.mdx rename docs/components/{urlcitation.md => urlcitation.mdx} (92%) delete mode 100644 docs/components/urlcitationtype.md create mode 100644 docs/components/urlcitationtype.mdx create mode 100644 docs/components/usage.mdx create mode 100644 docs/components/usagecostdetails.mdx create mode 100644 docs/components/userlocation.mdx rename docs/components/{variables.md => variables.mdx} (92%) create mode 100644 docs/components/verbosity.mdx create mode 100644 docs/components/videogenerationrequest.mdx create mode 100644 docs/components/videogenerationrequestaspectratio.mdx create mode 100644 docs/components/videogenerationrequestoptions.mdx create mode 100644 docs/components/videogenerationrequestprovider.mdx create mode 100644 docs/components/videogenerationrequestresolution.mdx create mode 100644 docs/components/videogenerationresponse.mdx create mode 100644 docs/components/videogenerationresponsestatus.mdx create mode 100644 docs/components/videogenerationusage.mdx create mode 100644 docs/components/videomodel.mdx create mode 100644 docs/components/videomodelslistresponse.mdx create mode 100644 docs/components/videourl.mdx create mode 100644 docs/components/webfetchengineenum.mdx create mode 100644 docs/components/webfetchplugin.mdx create mode 100644 docs/components/webfetchpluginid.mdx create mode 100644 docs/components/webfetchservertool.mdx create mode 100644 docs/components/webfetchservertoolconfig.mdx create mode 100644 docs/components/webfetchservertooltype.mdx create mode 100644 docs/components/websearchcallcompletedevent.mdx create mode 100644 docs/components/websearchcallcompletedeventtype.mdx create mode 100644 docs/components/websearchcallinprogressevent.mdx create mode 100644 docs/components/websearchcallinprogresseventtype.mdx create mode 100644 docs/components/websearchcallsearchingevent.mdx create mode 100644 docs/components/websearchcallsearchingeventtype.mdx create mode 100644 docs/components/websearchconfig.mdx create mode 100644 docs/components/websearchdomainfilter.mdx delete mode 100644 docs/components/websearchengine.md create mode 100644 docs/components/websearchengine.mdx create mode 100644 docs/components/websearchengineenum.mdx create mode 100644 docs/components/websearchplugin.mdx create mode 100644 docs/components/websearchpluginid.mdx create mode 100644 docs/components/websearchplugintype.mdx create mode 100644 docs/components/websearchservertool.mdx create mode 100644 docs/components/websearchservertoolconfig.mdx create mode 100644 docs/components/websearchservertoolopenrouter.mdx create mode 100644 docs/components/websearchservertoolopenroutertype.mdx create mode 100644 docs/components/websearchservertooltype.mdx create mode 100644 docs/components/websearchsource.mdx create mode 100644 docs/components/websearchsourcetype.mdx delete mode 100644 docs/components/websearchstatus.md create mode 100644 docs/components/websearchstatus.mdx create mode 100644 docs/components/websearchuserlocation.mdx create mode 100644 docs/components/websearchuserlocationservertool.mdx create mode 100644 docs/components/websearchuserlocationservertooltype.mdx create mode 100644 docs/components/websearchuserlocationtype.mdx create mode 100644 docs/components/workspace.mdx create mode 100644 docs/components/workspacebudget.mdx create mode 100644 docs/components/workspacebudgetinterval.mdx create mode 100644 docs/components/workspacemember.mdx create mode 100644 docs/components/workspacememberrole.mdx create mode 100644 docs/docs.json rename docs/errors/{badgatewayresponseerror.md => badgatewayresponseerror.mdx} (84%) rename docs/errors/{badrequestresponseerror.md => badrequestresponseerror.mdx} (84%) create mode 100644 docs/errors/conflictresponseerror.mdx rename docs/errors/{edgenetworktimeoutresponseerror.md => edgenetworktimeoutresponseerror.mdx} (86%) rename docs/errors/{forbiddenresponseerror.md => forbiddenresponseerror.mdx} (84%) rename docs/errors/{internalserverresponseerror.md => internalserverresponseerror.mdx} (86%) rename docs/errors/{notfoundresponseerror.md => notfoundresponseerror.mdx} (84%) rename docs/errors/{payloadtoolargeresponseerror.md => payloadtoolargeresponseerror.mdx} (86%) rename docs/errors/{paymentrequiredresponseerror.md => paymentrequiredresponseerror.mdx} (86%) rename docs/errors/{provideroverloadedresponseerror.md => provideroverloadedresponseerror.mdx} (85%) rename docs/errors/{requesttimeoutresponseerror.md => requesttimeoutresponseerror.mdx} (86%) rename docs/errors/{serviceunavailableresponseerror.md => serviceunavailableresponseerror.mdx} (85%) rename docs/errors/{toomanyrequestsresponseerror.md => toomanyrequestsresponseerror.mdx} (86%) rename docs/errors/{unauthorizedresponseerror.md => unauthorizedresponseerror.mdx} (84%) rename docs/errors/{unprocessableentityresponseerror.md => unprocessableentityresponseerror.mdx} (88%) rename docs/{operations/createkeysglobals.md => models/internal/globals.mdx} (99%) rename docs/models/utils/{retryconfig.md => retryconfig.mdx} (97%) create mode 100644 docs/operations/arena.mdx create mode 100644 docs/operations/bulkaddworkspacemembersglobals.mdx create mode 100644 docs/operations/bulkaddworkspacemembersrequest.mdx create mode 100644 docs/operations/bulkassignkeystoguardrailglobals.mdx rename docs/operations/{bulkassignkeystoguardrailrequest.md => bulkassignkeystoguardrailrequest.mdx} (91%) create mode 100644 docs/operations/bulkassignmemberstoguardrailglobals.mdx rename docs/operations/{bulkassignmemberstoguardrailrequest.md => bulkassignmemberstoguardrailrequest.mdx} (90%) create mode 100644 docs/operations/bulkremoveworkspacemembersglobals.mdx create mode 100644 docs/operations/bulkremoveworkspacemembersrequest.mdx create mode 100644 docs/operations/bulkunassignkeysfromguardrailglobals.mdx rename docs/operations/{bulkunassignkeysfromguardrailrequest.md => bulkunassignkeysfromguardrailrequest.mdx} (90%) delete mode 100644 docs/operations/bulkunassignmembersfromguardrailglobals.md create mode 100644 docs/operations/bulkunassignmembersfromguardrailglobals.mdx rename docs/operations/{bulkunassignmembersfromguardrailrequest.md => bulkunassignmembersfromguardrailrequest.mdx} (90%) rename docs/operations/{content.md => content.mdx} (95%) rename docs/operations/{contentimageurl.md => contentimageurl.mdx} (61%) rename docs/operations/{contenttext.md => contenttext.mdx} (80%) create mode 100644 docs/operations/costdetails.mdx create mode 100644 docs/operations/createaudiospeechglobals.mdx create mode 100644 docs/operations/createaudiospeechrequest.mdx create mode 100644 docs/operations/createaudiotranscriptionsglobals.mdx create mode 100644 docs/operations/createaudiotranscriptionsrequest.mdx delete mode 100644 docs/operations/createauthkeyscodecodechallengemethod.md create mode 100644 docs/operations/createauthkeyscodecodechallengemethod.mdx rename docs/operations/{createauthkeyscodedata.md => createauthkeyscodedata.mdx} (97%) create mode 100644 docs/operations/createauthkeyscodeglobals.mdx rename docs/operations/{createauthkeyscoderequest.md => createauthkeyscoderequest.mdx} (91%) rename docs/operations/{createauthkeyscoderequestbody.md => createauthkeyscoderequestbody.mdx} (88%) rename docs/operations/{createauthkeyscoderesponse.md => createauthkeyscoderesponse.mdx} (74%) create mode 100644 docs/operations/createbyokkeyglobals.mdx create mode 100644 docs/operations/createbyokkeyrequest.mdx rename docs/operations/{createembeddingsdata.md => createembeddingsdata.mdx} (70%) create mode 100644 docs/operations/createembeddingsglobals.mdx rename docs/operations/{createembeddingsrequest.md => createembeddingsrequest.mdx} (89%) rename docs/operations/{createembeddingsrequestbody.md => createembeddingsrequestbody.mdx} (76%) rename docs/operations/{createembeddingsresponse.md => createembeddingsresponse.mdx} (83%) rename docs/operations/{createembeddingsresponsebody.md => createembeddingsresponsebody.mdx} (68%) create mode 100644 docs/operations/createembeddingsusage.mdx rename docs/operations/{bulkunassignkeysfromguardrailglobals.md => createguardrailglobals.mdx} (98%) rename docs/operations/{createguardrailrequest.md => createguardrailrequest.mdx} (94%) create mode 100644 docs/operations/createimagesglobals.mdx create mode 100644 docs/operations/createimagesrequest.mdx create mode 100644 docs/operations/createimagesresponse.mdx rename docs/operations/{createkeysdata.md => createkeysdata.mdx} (99%) create mode 100644 docs/operations/createkeysglobals.mdx delete mode 100644 docs/operations/createkeyslimitreset.md create mode 100644 docs/operations/createkeyslimitreset.mdx rename docs/operations/{createkeysrequest.md => createkeysrequest.mdx} (89%) rename docs/operations/{createkeysrequestbody.md => createkeysrequestbody.mdx} (94%) rename docs/operations/{createkeysresponse.md => createkeysresponse.mdx} (91%) create mode 100644 docs/operations/createobservabilitydestinationglobals.mdx create mode 100644 docs/operations/createobservabilitydestinationrequest.mdx create mode 100644 docs/operations/createpresetschatcompletionsglobals.mdx rename docs/operations/{sendchatcompletionrequestrequest.md => createpresetschatcompletionsrequest.mdx} (86%) create mode 100644 docs/operations/createpresetsmessagesglobals.mdx create mode 100644 docs/operations/createpresetsmessagesrequest.mdx create mode 100644 docs/operations/createpresetsresponsesglobals.mdx create mode 100644 docs/operations/createpresetsresponsesrequest.mdx create mode 100644 docs/operations/creatererankglobals.mdx create mode 100644 docs/operations/creatererankrequest.mdx create mode 100644 docs/operations/creatererankrequestbody.mdx create mode 100644 docs/operations/creatererankresponse.mdx create mode 100644 docs/operations/creatererankresponsebody.mdx create mode 100644 docs/operations/creatererankusage.mdx delete mode 100644 docs/operations/createresponsesglobals.md create mode 100644 docs/operations/createresponsesglobals.mdx rename docs/operations/{createresponsesrequest.md => createresponsesrequest.mdx} (90%) rename docs/operations/{createresponsesresponse.md => createresponsesresponse.mdx} (91%) create mode 100644 docs/operations/createvideosglobals.mdx create mode 100644 docs/operations/createvideosrequest.mdx create mode 100644 docs/operations/createworkspaceglobals.mdx create mode 100644 docs/operations/createworkspacerequest.mdx create mode 100644 docs/operations/datacenter.mdx create mode 100644 docs/operations/deletebyokkeyglobals.mdx create mode 100644 docs/operations/deletebyokkeyrequest.mdx create mode 100644 docs/operations/deletefileglobals.mdx create mode 100644 docs/operations/deletefilerequest.mdx delete mode 100644 docs/operations/deleteguardrailglobals.md create mode 100644 docs/operations/deleteguardrailglobals.mdx rename docs/operations/{deleteguardrailrequest.md => deleteguardrailrequest.mdx} (99%) delete mode 100644 docs/operations/deletekeysglobals.md create mode 100644 docs/operations/deletekeysglobals.mdx rename docs/operations/{deletekeysrequest.md => deletekeysrequest.mdx} (99%) rename docs/operations/{deletekeysresponse.md => deletekeysresponse.mdx} (95%) create mode 100644 docs/operations/deleteobservabilitydestinationglobals.mdx create mode 100644 docs/operations/deleteobservabilitydestinationrequest.mdx create mode 100644 docs/operations/deleteworkspacebudgetglobals.mdx create mode 100644 docs/operations/deleteworkspacebudgetrequest.mdx create mode 100644 docs/operations/deleteworkspaceglobals.mdx create mode 100644 docs/operations/deleteworkspacerequest.mdx create mode 100644 docs/operations/dimension.mdx create mode 100644 docs/operations/direction.mdx create mode 100644 docs/operations/displayformat.mdx create mode 100644 docs/operations/distillable.mdx create mode 100644 docs/operations/document.mdx create mode 100644 docs/operations/documentrequest.mdx create mode 100644 docs/operations/documentresponse.mdx create mode 100644 docs/operations/downloadfilecontentglobals.mdx create mode 100644 docs/operations/downloadfilecontentrequest.mdx rename docs/operations/{embedding.md => embedding.mdx} (88%) delete mode 100644 docs/operations/encodingformat.md create mode 100644 docs/operations/encodingformat.mdx delete mode 100644 docs/operations/exchangeauthcodeforapikeycodechallengemethod.md create mode 100644 docs/operations/exchangeauthcodeforapikeycodechallengemethod.mdx delete mode 100644 docs/operations/exchangeauthcodeforapikeyglobals.md create mode 100644 docs/operations/exchangeauthcodeforapikeyglobals.mdx rename docs/operations/{exchangeauthcodeforapikeyrequest.md => exchangeauthcodeforapikeyrequest.mdx} (89%) rename docs/operations/{exchangeauthcodeforapikeyrequestbody.md => exchangeauthcodeforapikeyrequestbody.mdx} (91%) rename docs/operations/{exchangeauthcodeforapikeyresponse.md => exchangeauthcodeforapikeyresponse.mdx} (96%) create mode 100644 docs/operations/file.mdx create mode 100644 docs/operations/filter_.mdx create mode 100644 docs/operations/getanalyticsmetadata.mdx create mode 100644 docs/operations/getanalyticsmetaglobals.mdx create mode 100644 docs/operations/getanalyticsmetarequest.mdx create mode 100644 docs/operations/getanalyticsmetaresponse.mdx create mode 100644 docs/operations/getapprankingscategory.mdx rename docs/operations/{bulkassignmemberstoguardrailglobals.md => getapprankingsglobals.mdx} (98%) create mode 100644 docs/operations/getapprankingsrequest.mdx create mode 100644 docs/operations/getapprankingsresponse.mdx create mode 100644 docs/operations/getapprankingssort.mdx create mode 100644 docs/operations/getbenchmarksglobals.mdx create mode 100644 docs/operations/getbenchmarksrequest.mdx create mode 100644 docs/operations/getbyokkeyglobals.mdx create mode 100644 docs/operations/getbyokkeyrequest.mdx rename docs/operations/{getcreditsdata.md => getcreditsdata.mdx} (94%) delete mode 100644 docs/operations/getcreditsglobals.md create mode 100644 docs/operations/getcreditsglobals.mdx delete mode 100644 docs/operations/getcreditsrequest.md create mode 100644 docs/operations/getcreditsrequest.mdx rename docs/operations/{getcreditsresponse.md => getcreditsresponse.mdx} (71%) rename docs/operations/{getcurrentkeydata.md => getcurrentkeydata.mdx} (96%) delete mode 100644 docs/operations/getcurrentkeyglobals.md create mode 100644 docs/operations/getcurrentkeyglobals.mdx delete mode 100644 docs/operations/getcurrentkeyrequest.md create mode 100644 docs/operations/getcurrentkeyrequest.mdx rename docs/operations/{getcurrentkeyresponse.md => getcurrentkeyresponse.mdx} (88%) create mode 100644 docs/operations/getfilemetadataglobals.mdx create mode 100644 docs/operations/getfilemetadatarequest.mdx delete mode 100644 docs/operations/getgenerationglobals.md create mode 100644 docs/operations/getgenerationglobals.mdx rename docs/operations/{getgenerationrequest.md => getgenerationrequest.mdx} (99%) delete mode 100644 docs/operations/getguardrailglobals.md create mode 100644 docs/operations/getguardrailglobals.mdx rename docs/operations/{getguardrailrequest.md => getguardrailrequest.mdx} (99%) rename docs/operations/{getkeydata.md => getkeydata.mdx} (99%) delete mode 100644 docs/operations/getkeyglobals.md rename docs/{models/internal/globals.md => operations/getkeyglobals.mdx} (98%) rename docs/operations/{getkeyrequest.md => getkeyrequest.mdx} (99%) rename docs/operations/{getkeyresponse.md => getkeyresponse.mdx} (89%) rename docs/operations/{createembeddingsglobals.md => getmodelglobals.mdx} (98%) create mode 100644 docs/operations/getmodelrequest.mdx create mode 100644 docs/operations/getmodelscategory.mdx delete mode 100644 docs/operations/getmodelsglobals.md rename docs/operations/{createguardrailglobals.md => getmodelsglobals.mdx} (98%) rename docs/operations/{getmodelsrequest.md => getmodelsrequest.mdx} (96%) create mode 100644 docs/operations/getmodelssort.mdx create mode 100644 docs/operations/getobservabilitydestinationglobals.mdx create mode 100644 docs/operations/getobservabilitydestinationrequest.mdx create mode 100644 docs/operations/getpresetglobals.mdx create mode 100644 docs/operations/getpresetrequest.mdx create mode 100644 docs/operations/getpresetversionglobals.mdx create mode 100644 docs/operations/getpresetversionrequest.mdx create mode 100644 docs/operations/getrankingsdailyglobals.mdx create mode 100644 docs/operations/getrankingsdailyrequest.mdx create mode 100644 docs/operations/gettaskclassificationsglobals.mdx create mode 100644 docs/operations/gettaskclassificationsrequest.mdx delete mode 100644 docs/operations/getuseractivityglobals.md create mode 100644 docs/operations/getuseractivityglobals.mdx rename docs/operations/{getuseractivityrequest.md => getuseractivityrequest.mdx} (99%) create mode 100644 docs/operations/getvideosglobals.mdx create mode 100644 docs/operations/getvideosrequest.mdx create mode 100644 docs/operations/getworkspaceglobals.mdx create mode 100644 docs/operations/getworkspacerequest.mdx create mode 100644 docs/operations/granularity.mdx create mode 100644 docs/operations/granularityname.mdx create mode 100644 docs/operations/headquarters.mdx create mode 100644 docs/operations/imageurl.mdx rename docs/operations/{input.md => input.mdx} (74%) rename docs/operations/{inputunion.md => inputunion.mdx} (94%) create mode 100644 docs/operations/listbyokkeysglobals.mdx create mode 100644 docs/operations/listbyokkeysrequest.mdx create mode 100644 docs/operations/listbyokkeysresponse.mdx rename docs/operations/{listdata.md => listdata.mdx} (99%) delete mode 100644 docs/operations/listembeddingsmodelsglobals.md create mode 100644 docs/operations/listembeddingsmodelsglobals.mdx delete mode 100644 docs/operations/listembeddingsmodelsrequest.md create mode 100644 docs/operations/listembeddingsmodelsrequest.mdx delete mode 100644 docs/operations/listendpointsglobals.md create mode 100644 docs/operations/listendpointsglobals.mdx rename docs/operations/{listendpointsrequest.md => listendpointsrequest.mdx} (99%) rename docs/operations/{listendpointsresponse.md => listendpointsresponse.mdx} (89%) delete mode 100644 docs/operations/listendpointszdrglobals.md create mode 100644 docs/operations/listendpointszdrglobals.mdx delete mode 100644 docs/operations/listendpointszdrrequest.md create mode 100644 docs/operations/listendpointszdrrequest.mdx rename docs/operations/{listendpointszdrresponse.md => listendpointszdrresponse.mdx} (79%) create mode 100644 docs/operations/listfilesglobals.mdx create mode 100644 docs/operations/listfilesrequest.mdx create mode 100644 docs/operations/listfilesresponse.mdx create mode 100644 docs/operations/listgenerationcontentglobals.mdx create mode 100644 docs/operations/listgenerationcontentrequest.mdx delete mode 100644 docs/operations/listglobals.md rename docs/operations/{createauthkeyscodeglobals.md => listglobals.mdx} (99%) delete mode 100644 docs/operations/listguardrailkeyassignmentsglobals.md create mode 100644 docs/operations/listguardrailkeyassignmentsglobals.mdx rename docs/operations/{listguardrailkeyassignmentsrequest.md => listguardrailkeyassignmentsrequest.mdx} (99%) rename docs/operations/{listguardrailkeyassignmentsresponse.md => listguardrailkeyassignmentsresponse.mdx} (85%) delete mode 100644 docs/operations/listguardrailmemberassignmentsglobals.md create mode 100644 docs/operations/listguardrailmemberassignmentsglobals.mdx rename docs/operations/{listguardrailmemberassignmentsrequest.md => listguardrailmemberassignmentsrequest.mdx} (99%) rename docs/operations/{listguardrailmemberassignmentsresponse.md => listguardrailmemberassignmentsresponse.mdx} (85%) delete mode 100644 docs/operations/listguardrailsglobals.md create mode 100644 docs/operations/listguardrailsglobals.mdx rename docs/operations/{listguardrailsrequest.md => listguardrailsrequest.mdx} (99%) rename docs/operations/{listguardrailsresponse.md => listguardrailsresponse.mdx} (90%) create mode 100644 docs/operations/listimagemodelendpointsglobals.mdx create mode 100644 docs/operations/listimagemodelendpointsrequest.mdx create mode 100644 docs/operations/listimagemodelsglobals.mdx create mode 100644 docs/operations/listimagemodelsrequest.mdx delete mode 100644 docs/operations/listkeyassignmentsglobals.md create mode 100644 docs/operations/listkeyassignmentsglobals.mdx create mode 100644 docs/operations/listkeyassignmentsrequest.mdx rename docs/operations/{listkeyassignmentsresponse.md => listkeyassignmentsresponse.mdx} (86%) delete mode 100644 docs/operations/listmemberassignmentsglobals.md create mode 100644 docs/operations/listmemberassignmentsglobals.mdx create mode 100644 docs/operations/listmemberassignmentsrequest.mdx rename docs/operations/{listmemberassignmentsresponse.md => listmemberassignmentsresponse.mdx} (85%) delete mode 100644 docs/operations/listmodelscountglobals.md create mode 100644 docs/operations/listmodelscountglobals.mdx rename docs/operations/{listmodelscountrequest.md => listmodelscountrequest.mdx} (99%) delete mode 100644 docs/operations/listmodelsuserglobals.md create mode 100644 docs/operations/listmodelsuserglobals.mdx delete mode 100644 docs/operations/listmodelsuserrequest.md create mode 100644 docs/operations/listmodelsuserrequest.mdx rename docs/operations/{listmodelsusersecurity.md => listmodelsusersecurity.mdx} (87%) create mode 100644 docs/operations/listobservabilitydestinationsglobals.mdx create mode 100644 docs/operations/listobservabilitydestinationsrequest.mdx create mode 100644 docs/operations/listobservabilitydestinationsresponse.mdx create mode 100644 docs/operations/listorganizationmembersdata.mdx create mode 100644 docs/operations/listorganizationmembersglobals.mdx create mode 100644 docs/operations/listorganizationmembersrequest.mdx create mode 100644 docs/operations/listorganizationmembersresponse.mdx create mode 100644 docs/operations/listorganizationmembersresponsebody.mdx rename docs/operations/{bulkassignkeystoguardrailglobals.md => listpresetsglobals.mdx} (98%) rename docs/operations/{listmemberassignmentsrequest.md => listpresetsrequest.mdx} (99%) create mode 100644 docs/operations/listpresetsresponse.mdx create mode 100644 docs/operations/listpresetversionsglobals.mdx create mode 100644 docs/operations/listpresetversionsrequest.mdx create mode 100644 docs/operations/listpresetversionsresponse.mdx rename docs/operations/{listprovidersdata.md => listprovidersdata.mdx} (86%) delete mode 100644 docs/operations/listprovidersglobals.md create mode 100644 docs/operations/listprovidersglobals.mdx delete mode 100644 docs/operations/listprovidersrequest.md create mode 100644 docs/operations/listprovidersrequest.mdx rename docs/operations/{listprovidersresponse.md => listprovidersresponse.mdx} (78%) rename docs/operations/{listrequest.md => listrequest.mdx} (99%) rename docs/operations/{listresponse.md => listresponse.mdx} (73%) create mode 100644 docs/operations/listvideoscontentglobals.mdx create mode 100644 docs/operations/listvideoscontentrequest.mdx create mode 100644 docs/operations/listvideosmodelsglobals.mdx create mode 100644 docs/operations/listvideosmodelsrequest.mdx create mode 100644 docs/operations/listworkspacebudgetsglobals.mdx create mode 100644 docs/operations/listworkspacebudgetsrequest.mdx create mode 100644 docs/operations/listworkspacesglobals.mdx rename docs/operations/{listkeyassignmentsrequest.md => listworkspacesrequest.mdx} (99%) create mode 100644 docs/operations/listworkspacesresponse.mdx create mode 100644 docs/operations/metadata.mdx create mode 100644 docs/operations/metric.mdx delete mode 100644 docs/operations/object.md create mode 100644 docs/operations/object.mdx delete mode 100644 docs/operations/objectembedding.md create mode 100644 docs/operations/objectembedding.mdx create mode 100644 docs/operations/operator.mdx create mode 100644 docs/operations/operatorname.mdx create mode 100644 docs/operations/orderby.mdx create mode 100644 docs/operations/prompttokensdetails.mdx create mode 100644 docs/operations/provider.mdx create mode 100644 docs/operations/queryanalyticsdata1.mdx create mode 100644 docs/operations/queryanalyticsdata2.mdx create mode 100644 docs/operations/queryanalyticsglobals.mdx create mode 100644 docs/operations/queryanalyticsrequest.mdx create mode 100644 docs/operations/queryanalyticsrequestbody.mdx create mode 100644 docs/operations/queryanalyticsresponse.mdx rename docs/operations/{ratelimit.md => ratelimit.mdx} (97%) create mode 100644 docs/operations/region.mdx create mode 100644 docs/operations/result.mdx create mode 100644 docs/operations/role.mdx delete mode 100644 docs/operations/sendchatcompletionrequestglobals.md create mode 100644 docs/operations/sendchatcompletionrequestglobals.mdx create mode 100644 docs/operations/sendchatcompletionrequestrequest.mdx rename docs/operations/{sendchatcompletionrequestresponse.md => sendchatcompletionrequestresponse.mdx} (88%) create mode 100644 docs/operations/source.mdx create mode 100644 docs/operations/subcategory.mdx create mode 100644 docs/operations/tasktype.mdx create mode 100644 docs/operations/timerange.mdx delete mode 100644 docs/operations/typeimageurl.md create mode 100644 docs/operations/typeimageurl.mdx delete mode 100644 docs/operations/typetext.md create mode 100644 docs/operations/typetext.mdx create mode 100644 docs/operations/updatebyokkeyglobals.mdx create mode 100644 docs/operations/updatebyokkeyrequest.mdx delete mode 100644 docs/operations/updateguardrailglobals.md create mode 100644 docs/operations/updateguardrailglobals.mdx rename docs/operations/{updateguardrailrequest.md => updateguardrailrequest.mdx} (91%) rename docs/operations/{updatekeysdata.md => updatekeysdata.mdx} (99%) delete mode 100644 docs/operations/updatekeysglobals.md create mode 100644 docs/operations/updatekeysglobals.mdx delete mode 100644 docs/operations/updatekeyslimitreset.md create mode 100644 docs/operations/updatekeyslimitreset.mdx rename docs/operations/{updatekeysrequest.md => updatekeysrequest.mdx} (91%) rename docs/operations/{updatekeysrequestbody.md => updatekeysrequestbody.mdx} (92%) rename docs/operations/{updatekeysresponse.md => updatekeysresponse.mdx} (89%) create mode 100644 docs/operations/updateobservabilitydestinationglobals.mdx create mode 100644 docs/operations/updateobservabilitydestinationrequest.mdx create mode 100644 docs/operations/updateworkspaceglobals.mdx create mode 100644 docs/operations/updateworkspacerequest.mdx create mode 100644 docs/operations/uploadfileglobals.mdx create mode 100644 docs/operations/uploadfilerequest.mdx create mode 100644 docs/operations/uploadfilerequestbody.mdx create mode 100644 docs/operations/upsertworkspacebudgetglobals.mdx create mode 100644 docs/operations/upsertworkspacebudgetrequest.mdx delete mode 100644 docs/operations/usagelimittype.md create mode 100644 docs/operations/usagelimittype.mdx create mode 100644 docs/operations/value1.mdx create mode 100644 docs/operations/value2.mdx create mode 100644 docs/operations/valuetype.mdx create mode 100644 docs/operations/window.mdx create mode 100644 docs/operations/zdr.mdx create mode 100644 docs/overview.mdx rename docs/sdks/analytics/{README.md => README.mdx} (93%) rename docs/sdks/apikeys/{README.md => README.mdx} (92%) create mode 100644 docs/sdks/benchmarks/README.mdx create mode 100644 docs/sdks/betaanalytics/README.mdx create mode 100644 docs/sdks/byok/README.mdx rename docs/sdks/chat/{README.md => README.mdx} (89%) create mode 100644 docs/sdks/classifications/README.mdx rename docs/sdks/credits/{README.md => README.mdx} (91%) create mode 100644 docs/sdks/datasets/README.mdx rename docs/sdks/embeddings/{README.md => README.mdx} (87%) rename docs/sdks/endpoints/{README.md => README.mdx} (91%) create mode 100644 docs/sdks/files/README.mdx rename docs/sdks/generations/{README.md => README.mdx} (92%) rename docs/sdks/guardrails/{README.md => README.mdx} (93%) create mode 100644 docs/sdks/images/README.mdx rename docs/sdks/models/{README.md => README.mdx} (94%) rename docs/sdks/oauth/{README.md => README.mdx} (89%) create mode 100644 docs/sdks/observability/README.mdx create mode 100644 docs/sdks/organization/README.mdx create mode 100644 docs/sdks/presets/README.mdx rename docs/sdks/providers/{README.md => README.mdx} (90%) create mode 100644 docs/sdks/rerank/README.mdx rename docs/sdks/responses/{README.md => README.mdx} (89%) create mode 100644 docs/sdks/stt/README.mdx create mode 100644 docs/sdks/tts/README.mdx create mode 100644 docs/sdks/videogeneration/README.mdx create mode 100644 docs/sdks/workspaces/README.mdx create mode 100644 src/openrouter/types/base64fileinput.py create mode 100644 src/openrouter/utils/dynamic_imports.py create mode 100644 src/openrouter/utils/unions.py diff --git a/.genignore b/.genignore index 49840533..492fe6c2 100644 --- a/.genignore +++ b/.genignore @@ -1 +1,3 @@ -pylintrc \ No newline at end of file +pylintrc +docs/docs.json +docs/overview.mdx diff --git a/.gitignore b/.gitignore index d18d69da..69aa47c6 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,6 @@ __pycache__/ # Speakeasy generation artifacts (generated in OSS repo, not here) .speakeasy/*.lock .speakeasy/*.openapi.yaml -/docs # Environment .env .env.local diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index da660a6e..0835fc69 100644 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -3,54 +3,54 @@ id: c48cf606-fb42-4a45-9c23-8f0555307828 management: docChecksum: e7ae838af3f89aafec730d6f56a6264b docVersion: 1.0.0 - speakeasyVersion: 1.680.0 - generationVersion: 2.788.4 - releaseVersion: 0.10.8 - configChecksum: 8243c4a0e55e45da047a1d60c75a497d + speakeasyVersion: 1.787.0 + generationVersion: 2.914.0 + releaseVersion: 0.11.0 + configChecksum: 0cc32c51a9844c59f9cd217ce216b21c repoURL: https://github.com/OpenRouterTeam/python-sdk.git installationURL: https://github.com/OpenRouterTeam/python-sdk.git published: true persistentEdits: - generation_id: 941715a1-02fc-4177-a705-0f0a75de97ec - pristine_commit_hash: d3f06b10deb99bed3a70737944b76cb45ba18876 - pristine_tree_hash: 7e30bc063f631c35e1645f8790acc79f301f383f + generation_id: c839d647-64f5-4526-a33c-0c3774fc797a + pristine_commit_hash: 9a098fc679175e7a0474845099057e728c15610b + pristine_tree_hash: 38a622bfa243847a4fc99417b953b35d7d643ae0 features: python: acceptHeaders: 3.0.0 - additionalDependencies: 1.0.0 + additionalDependencies: 1.1.0 additionalProperties: 1.0.1 - constsAndDefaults: 1.0.5 - core: 5.23.14 + constsAndDefaults: 1.0.7 + core: 6.0.33 defaultEnabledRetries: 0.2.0 deprecations: 3.0.2 devContainers: 3.0.0 downloadStreams: 1.0.1 - enumUnions: 0.1.0 - envVarSecurityUsage: 0.3.2 + enumUnions: 0.1.1 + envVarSecurityUsage: 0.3.3 flatRequests: 1.0.1 flattening: 3.1.1 - globalSecurity: 3.0.4 + globalSecurity: 3.0.7 globalSecurityCallbacks: 1.0.0 globalSecurityFlattening: 1.0.0 - globalServerURLs: 3.2.0 + globalServerURLs: 3.2.1 globals: 3.0.0 groups: 3.0.1 ignores: 3.0.1 - methodArguments: 1.0.2 - methodSecurity: 3.0.1 + methodArguments: 1.1.1 + methodSecurity: 3.0.3 multipartFileContentType: 1.0.0 - nameOverrides: 3.0.1 - nullables: 1.0.1 - openEnums: 1.0.1 - pagination: 3.0.7 - responseFormat: 1.0.1 - retries: 3.0.3 - sdkHooks: 1.2.0 - serverEvents: 1.0.11 + nameOverrides: 3.0.3 + nullables: 1.0.2 + openEnums: 1.0.4 + pagination: 3.0.10 + responseFormat: 1.1.0 + retries: 3.0.7 + sdkHooks: 1.3.0 + serverEvents: 1.1.1 serverEventsSentinels: 0.1.0 serverIDs: 3.0.0 - unions: 3.1.1 - uploadStreams: 1.0.0 + unions: 3.1.7 + uploadStreams: 1.0.3 trackedFiles: .devcontainer/README.md: id: b170c0f184ac @@ -76,6274 +76,6274 @@ trackedFiles: id: 3aed33ce6e6f last_write_checksum: sha1:d70160e42e737f03bca79873bae8e91ae2b585d1 pristine_git_object: 9c1506b8f539140db04b239d7a84d8b599747932 - docs/components/aabenchmarkentry.md: - id: f90294cbb4a3 - last_write_checksum: sha1:86a3b23d00014cdee0eea44dcdbaf965117a6e35 - pristine_git_object: f4d05c6ca2c90f231fc59abd56b907a02fcd3dc1 - docs/components/action.md: - id: 6b3978ee918f - last_write_checksum: sha1:9d4cd420c5cd5ea25837e2c6db447d5ecb600b7a - pristine_git_object: 937ac471f7118c9064b2db116df9cf68f1b6b288 - docs/components/actionenum.md: - id: 608bbbe865bb - last_write_checksum: sha1:b7b7984fc2930c3a7be17c2f731e9ced7f8432c5 - pristine_git_object: 80966ca1792422be02beb5f879d9f15e0ec9388b - docs/components/actionfindinpage.md: - id: 88f0962aff68 - last_write_checksum: sha1:6cb79624f6c2ecba637c70ba8a95904e43d598f6 - pristine_git_object: e9eb5e8cbb42c0c7b6cdd00591453bc23a579d90 - docs/components/actionopenpage.md: - id: 0956df8f10e4 - last_write_checksum: sha1:88d726e5b59287d1ff171621cbf0d16ea9d5d9da - pristine_git_object: 0401058dca54568c8f2e686e4e82e0f40e0445cf - docs/components/actiontypesearch.md: - id: b9d4385f8dbc - last_write_checksum: sha1:b47e07eb215799391aa85eb26fdd81b3ad21ba0f - pristine_git_object: 094a1e844d3476ba189a4a88987d4507efdda2a6 - docs/components/activityitem.md: - id: 3a8beda39814 - last_write_checksum: sha1:c91cff73639d4b52bea337fc8110c840684b247f - pristine_git_object: 9cbfb1a7ebd05af4ffa7a514dc1348ef4637efb1 - docs/components/activityresponse.md: - id: b97e402ef453 - last_write_checksum: sha1:8e2b1926246a5204656dc0e027ced41e5ab8509b - pristine_git_object: 3e901718f78569d175db37fb6bdbc84733dd8d61 - docs/components/advisornestedtool.md: - id: afec78271fac - last_write_checksum: sha1:ca6504064c6d1e18c50d38edb7ee9ab8749caa06 - pristine_git_object: d830783b9c4bd36787ad3532b11a2b8a297d01c7 - docs/components/advisorreasoning.md: - id: a6a4f2f081cf - last_write_checksum: sha1:44835b03d48275fbd0ee12badc399462037a2f12 - pristine_git_object: 123091224cbc4d87e2e01748e013618f2d142632 - docs/components/advisorreasoningeffort.md: - id: 8b65bf21bf5d - last_write_checksum: sha1:ae1a31169657770ac54bd15b8b9ba99dec447546 - pristine_git_object: 8828292d4f0692af00fefc00ae0a702cb151d2f1 - docs/components/advisorservertoolconfig.md: - id: 9a630ec9486f - last_write_checksum: sha1:b01e3db43dd70ddca3a7bb093b99f5b14c669835 - pristine_git_object: 82c8b8f26dd010e9502b80219619f2c7f12dff95 - docs/components/advisorservertoolopenrouter.md: - id: e66ed24a0e81 - last_write_checksum: sha1:20e9d09f8361ef7b1ffced630df13d9deebb2f98 - pristine_git_object: 2ce9d23560ba11d80bf42cc7eca4abe081bdb669 - docs/components/advisorservertoolopenroutertype.md: - id: 9bc4e9782bad - last_write_checksum: sha1:ae6778a1388bee3203a3f740a01dd8eace116b2e - pristine_git_object: 0a78aa653885b941e7c1f9be4e21ccc50db2ee51 - docs/components/allowedtools.md: - id: b6010d1cddfb - last_write_checksum: sha1:db3b637b995692cfa85a489b704a63156138c8cd - pristine_git_object: 3dd69cca1b0896871de5a651e005d4675e74ec99 - docs/components/allowedtoolsunion.md: - id: 751852518b1f - last_write_checksum: sha1:8ab3ad15765921302f2c9a9a02953069e7fdac9d - pristine_git_object: 1be45074b7fd2f1e42db30f70cb43874f6ff1afc - docs/components/always.md: - id: 60d5b0ff8f83 - last_write_checksum: sha1:04684b9e3eea071da9938b3e1deed152f845a0e2 - pristine_git_object: a7a7fd1155f474f4c45ce17e4d678ad2736153b2 - docs/components/annotationaddedevent.md: - id: 7639957f7faf - last_write_checksum: sha1:fb9a7f6efa4a47ea2b1c6a48c55c087c21fa11e0 - pristine_git_object: 6f92c1051f01c485787e89f13ad00c7ca0822ab8 - docs/components/annotationaddedeventtype.md: - id: 11b3c6c877d0 - last_write_checksum: sha1:4d8fae9c0de452c9ee796eeab63d242e4feb8497 - pristine_git_object: 4840df7f7005389811fae7c8868ad8d6c1efcd18 - docs/components/anthropicadvisormessageusageiteration.md: - id: 33186ccd38ac - last_write_checksum: sha1:85b1ab8c5a0caba0d812a49020e86c3e4e4e9a08 - pristine_git_object: fb1fb2c3c092a43a6f03f4b264d71641bd0e7446 - docs/components/anthropicadvisormessageusageiterationtype.md: - id: f57e902db2d1 - last_write_checksum: sha1:dddea52debf78713faf29d2538ebb770389ec3e5 - pristine_git_object: c91caf36632b4be80f9ee056c70353060066eb7a - docs/components/anthropicallowedcallers.md: - id: 11ad7b23165a - last_write_checksum: sha1:25cf3f22c4aec1a2dad1c12dd83d5ac9681386c5 - pristine_git_object: ecfedca4e0825576bdd7ade82c36d416f7f0283c - docs/components/anthropicbase64imagesource.md: - id: 1aa7be30aebe - last_write_checksum: sha1:0b5b8ed525a2efc9ce8760fd79282e0175cd1c61 - pristine_git_object: 85d0122f3a306415f68e26dbe052aaf5f153d250 - docs/components/anthropicbase64imagesourcetype.md: - id: e35e0048c55b - last_write_checksum: sha1:82843d316fcdcabb7fbe6e9781dde48f2baec3f1 - pristine_git_object: e99893ec8fc73701b7fdc60c27c659be2947b024 - docs/components/anthropicbase64pdfsource.md: - id: f2ead8ca2f15 - last_write_checksum: sha1:0e3075d067fe20ac0a554c202025556804227a23 - pristine_git_object: 449a1ae4fd04b9641e7ad4d912b6ca5421dcbabf - docs/components/anthropicbase64pdfsourcemediatype.md: - id: a92d0e282b96 - last_write_checksum: sha1:5920e0ae269db4de27b028d04d17358fcc8ab6b6 - pristine_git_object: d35634238584b5e9cba674d0b27d851030b5596c - docs/components/anthropicbase64pdfsourcetype.md: - id: fc9f8018ae71 - last_write_checksum: sha1:168c5078830470f8526ad3c685fb9f53627f1874 - pristine_git_object: 956f981204ca21136c0b80cf77f4704a2213c446 - docs/components/anthropiccachecontroldirective.md: - id: 3bdd9daf51d9 - last_write_checksum: sha1:c69886ea262e4d88ee0d17e0be62a7fba60a8b4b - pristine_git_object: d71a660204cd918ac8ab609da5f70d9f51a5b6f0 - docs/components/anthropiccachecontroldirectivetype.md: - id: a20a54545fe3 - last_write_checksum: sha1:467772e8b5b227b4e80b0600d3ed275aeb2ea210 - pristine_git_object: a08e83446faeb323ccbeb06f7da8ceed71fa3c11 - docs/components/anthropiccachecontrolttl.md: - id: 980004cae93f - last_write_checksum: sha1:6f66927f536c351dcfbb940672511bd8a6fdd1a0 - pristine_git_object: 32e8fd42002d9379fa207d0867b428c443a63a42 - docs/components/anthropiccitationcharlocationparam.md: - id: e6f0e4e63d86 - last_write_checksum: sha1:4e103661aefac7bd891ed1267ae3d2a4b2067c45 - pristine_git_object: 8f0ca485c09e0ef01003409e30c4931fbf83663e - docs/components/anthropiccitationcharlocationparamtype.md: - id: d9f370ac77a9 - last_write_checksum: sha1:e9b7f7396709855c9179aef1c819fdd638f67471 - pristine_git_object: f74ca0a4f0e9bca084a782888a50123e04ab2c2e - docs/components/anthropiccitationcontentblocklocationparam.md: - id: 7783fc4a6eaa - last_write_checksum: sha1:f36e22562bb4023e73088b9dfa705570279817c0 - pristine_git_object: 09b26e1e3a62c09594521ae196f897eb497e9164 - docs/components/anthropiccitationcontentblocklocationparamtype.md: - id: c3817aa89a42 - last_write_checksum: sha1:c7894f9e4c722f29fde2eb60f9db8853ebfe8de7 - pristine_git_object: fedc00b8854ae3314a0e9c4eea84e74a5c13feb3 - docs/components/anthropiccitationpagelocationparam.md: - id: cd261e1abdb6 - last_write_checksum: sha1:81d6d355c0b31fdf6c65695ebb00d4371455478a - pristine_git_object: 71b26a211f327ab00717c3d3a02d24c379cae51b - docs/components/anthropiccitationpagelocationparamtype.md: - id: 0bb92f6478bc - last_write_checksum: sha1:d9db36db8211a392d288b220ddcff29037f1c84c - pristine_git_object: 33d9a680811877051f6e366e318b9e6a63fa48cf - docs/components/anthropiccitationsearchresultlocation.md: - id: 9b412016e8d2 - last_write_checksum: sha1:715d3733c885b37e50258f7bdbad0a9dd8efc9f6 - pristine_git_object: 67126480c4965f56ddb273b164b479bd963155bc - docs/components/anthropiccitationsearchresultlocationtype.md: - id: 2f4d80537d5e - last_write_checksum: sha1:e7638187480edacbe9bedfad7e4bff252544b97d - pristine_git_object: a6fd8db4f698fa09bfb1e7edd8256e336db3b6e3 - docs/components/anthropiccitationwebsearchresultlocation.md: - id: 02c13281dbef - last_write_checksum: sha1:85742ad3ff04613e6d4fa8d24e41d09012e387da - pristine_git_object: 0c80eb2994207d1b01eba6ba706b21b0fbc59b7d - docs/components/anthropiccitationwebsearchresultlocationtype.md: - id: 9a62f0c12dea - last_write_checksum: sha1:d6f2b7a37400b47dc5fe09582e4a1c386efd5f64 - pristine_git_object: 1d4dc34466805c06bef9a5ea0d4b3e2658d8fbca - docs/components/anthropiccompactionusageiteration.md: - id: 0fdb4605a989 - last_write_checksum: sha1:56320c5757e6070820d812140e08b55844c0c387 - pristine_git_object: 12fda13cd239b66019e9d6ecba71731b99241816 - docs/components/anthropiccompactionusageiterationtype.md: - id: 05adaf701f26 - last_write_checksum: sha1:73792e3e037989d145d95059d9926d9cca0b09fa - pristine_git_object: 8b38e51d69691041d5c05c3fd3f6b7e0d400fce9 - docs/components/anthropicdocumentblockparam.md: - id: 0c8300a9f979 - last_write_checksum: sha1:96771cf30db36eb18111c9600fda87cb6e446ec2 - pristine_git_object: 69175cafdd4cc3b1ae3399af114af0fe597d9272 - docs/components/anthropicdocumentblockparamcitations.md: - id: 4f8b596d5f87 - last_write_checksum: sha1:4de5b2108ca20987efb24eea43fd094267ed7778 - pristine_git_object: 11eef596d001cefd55d4259b88588584d417b7e3 - docs/components/anthropicdocumentblockparamcontent1.md: - id: f03af31809d7 - last_write_checksum: sha1:022157f8549ece930f6fcade0b5b1aa005026ed2 - pristine_git_object: af922ffbec0764739c11f30f142a39888f97e4a9 - docs/components/anthropicdocumentblockparamcontent2.md: - id: f8f62b828928 - last_write_checksum: sha1:ff03664b45c3d4b1a7648d1b13f14a6c3c7ab2ee - pristine_git_object: 04e088ebbad5b5f732f4a3c6b8c217e9820e6853 - docs/components/anthropicdocumentblockparamsourceunion.md: - id: 5c379a9fad3f - last_write_checksum: sha1:ce2097d0c60ee06bb288cffbd35c08abdf82aa84 - pristine_git_object: 35e11f2c264a42ca6a1fd3097f4274d30713e993 - docs/components/anthropicfiledocumentsource.md: - id: 404551567ab3 - last_write_checksum: sha1:ae8085f6b541beb16934bbe169f900c7e62c8920 - pristine_git_object: 1b071e7e1ea6deac4a5d11b83d0b2fbc52e285c0 - docs/components/anthropicfiledocumentsourcetype.md: - id: 4943d732eea5 - last_write_checksum: sha1:d858a91a7c0b7c4d91e1e6dc29dcef939a59577f - pristine_git_object: aeaa9e766bc8129e0b632d620d9cc5a442c2f2ee - docs/components/anthropicimageblockparam.md: - id: e76a99fa0c70 - last_write_checksum: sha1:d135899831112faaca1da7b2ca7b0f1b623dffcd - pristine_git_object: 34937846b769de97535e499d17a4889a9cf92dec - docs/components/anthropicimageblockparamsource.md: - id: 05e225739d47 - last_write_checksum: sha1:b93f27120a3451f97098f6319540ee224b424d44 - pristine_git_object: 54510ebaf02ff39dc219c6a1e57cecad30fda517 - docs/components/anthropicimageblockparamtype.md: - id: 7fe673bf1e0f - last_write_checksum: sha1:2ea54ee8d7c469893dcc847af983787b757b34f3 - pristine_git_object: ccaa7efa4ff1414d656a398a06d90208fc87c866 - docs/components/anthropicimagemimetype.md: - id: 40911ee4de83 - last_write_checksum: sha1:99fd6c56ced25fb3ffc7aef739db6801c2cfdfb2 - pristine_git_object: 4e1c68d63548a7f98e134278109d89e5576964e8 - docs/components/anthropicinputtokensclearatleast.md: - id: 5c23b6fac443 - last_write_checksum: sha1:aedbf281d2f6af56fbca2137a7890f797feded16 - pristine_git_object: d47f90c38cadee0fef9aa16a94ee5bf6b8fe5ea7 - docs/components/anthropicinputtokensclearatleasttype.md: - id: 78c870e2bd06 - last_write_checksum: sha1:ffd632983f9e6ec1d67f7fa50ebb3eadc75c3726 - pristine_git_object: c59676ab120e5564d220b25b88f00747d629239c - docs/components/anthropicinputtokenstrigger.md: - id: 082aaa1c24ef - last_write_checksum: sha1:b08b557ecebf3db71a4ee119f59ca35f70719d79 - pristine_git_object: e0539b55e212a918b770d6047bbf9489067a187c - docs/components/anthropicinputtokenstriggertype.md: - id: c1ed4899ff43 - last_write_checksum: sha1:c30ae212332ee1793cfdf928f5529f02f57fba08 - pristine_git_object: 07b76dbfef3ae2fa73a2c8a347aaec4a2c2db250 - docs/components/anthropiciterationcachecreation.md: - id: 3a99c1a33f1b - last_write_checksum: sha1:c6fd763c2cebfbba0a36f8f6200ff6974f702e4b - pristine_git_object: 55371b59cf7faa5425c4207b1adb658830bbd7d8 - docs/components/anthropicmessageusageiteration.md: - id: 161b60719de5 - last_write_checksum: sha1:6620e05e3214198239b7dc56b085630726d6b21b - pristine_git_object: 3cb3b43e9fbd0f5cab636b5b48b0c80dedae1839 - docs/components/anthropicmessageusageiterationtype.md: - id: 3d6e1d90edab - last_write_checksum: sha1:9f6d1c4cf939adcd22b792d57ab41cde2c1b18a9 - pristine_git_object: 7ba4b3470290a6518ddc33a5675daf4a486871b3 - docs/components/anthropicplaintextsource.md: - id: 889fb950c676 - last_write_checksum: sha1:d8887a9e5aed15b708e69d8073fa6a5563afca5b - pristine_git_object: 91a973132165591134f99356fec017d76958868f - docs/components/anthropicplaintextsourcemediatype.md: - id: 199cf01caaa8 - last_write_checksum: sha1:ed698e5b4b7ef9272ebe94ec4a44d91a1be84e03 - pristine_git_object: f190256a5e75ee4213a8ef59031a8f7fbaaaacbf - docs/components/anthropicplaintextsourcetype.md: - id: f1fea7c1e4fc - last_write_checksum: sha1:a75442b716b22fd61eb4ae5ad622d5e203a80d11 - pristine_git_object: a60119897087817d12c9de7d2cd2b588b8bed031 - docs/components/anthropicsearchresultblockparam.md: - id: ad63a45ac881 - last_write_checksum: sha1:6788bc9ab1df588426a9fdec928f3a4220bc9847 - pristine_git_object: e1de3630f6b3f8c1c24dc7ac74bea2190f0091f2 - docs/components/anthropicsearchresultblockparamcitations.md: - id: da531f9a0e74 - last_write_checksum: sha1:cd7ea4104da6e477e8d58334747f0bbf67724eeb - pristine_git_object: f6d6cab0bafe8ed896497dbfd33abc45cac5ea54 - docs/components/anthropicsearchresultblockparamtype.md: - id: 727f596d14b6 - last_write_checksum: sha1:8aac220d2c56349083d624947756e5d459df3b50 - pristine_git_object: 89be471a605fb0c9061d62cd853fa70cea52d88f - docs/components/anthropicspeed.md: - id: 3391bd502330 - last_write_checksum: sha1:40c366feb39d4306823c71e112b2c9fb40adca9e - pristine_git_object: b523006e867a12653a8e462cd2158e4ff6a5a33f - docs/components/anthropictextblockparam.md: - id: 5dc491a109ed - last_write_checksum: sha1:53c890398ec305cb94ef47dc91ede516284903c0 - pristine_git_object: 7324375b8e283a1edf97985d2e71aaa1a2412aa2 - docs/components/anthropictextblockparamtype.md: - id: f9227c63989c - last_write_checksum: sha1:af1cdb8600c227ecdc48bfb520d51f38ba523694 - pristine_git_object: 36b869568067045bfd1fa66fb45cbd965b8c1e23 - docs/components/anthropicthinkingdisplay.md: - id: b272b36eff65 - last_write_checksum: sha1:2b8212e5dfbd0f121109ed012672f9428b6ac843 - pristine_git_object: 0898b8c4b0f49475fa1499b2c74cc3a834c92890 - docs/components/anthropicthinkingturns.md: - id: 09d0931e9ea8 - last_write_checksum: sha1:2ff92a75d19d513a164ee38de112bd899d5cfbc6 - pristine_git_object: f859cfcc0a4b6c371aa208c8adde675c6ac18ba1 - docs/components/anthropicthinkingturnstype.md: - id: 534b0531d1f7 - last_write_checksum: sha1:f610815ab5817acb5b889e5ce1b998f1ad3fe0a4 - pristine_git_object: 4dbe66c64d7ac07a435d31df28575db92ced1af3 - docs/components/anthropictooluseskeep.md: - id: 940cf391e4a5 - last_write_checksum: sha1:639a5695d2f842fcf63f8e441f0f471179a8efa9 - pristine_git_object: 9cfdf90d5fc6af4eba6de5ab47e3795ad92be48b - docs/components/anthropictooluseskeeptype.md: - id: eb234b2636cf - last_write_checksum: sha1:84a9338dcd3827d9cbcf17766e64983370e8e869 - pristine_git_object: c34dd00b62cc9a2b74d236527255bef573f15757 - docs/components/anthropictoolusestrigger.md: - id: ab2d3ea6c316 - last_write_checksum: sha1:7866497896bca2a295eace8397a3899d8cb85325 - pristine_git_object: f4397121d0f229341668e1cd81d8cf0ce55ef097 - docs/components/anthropictoolusestriggertype.md: - id: 45a733d909af - last_write_checksum: sha1:474ee631bb8dcae59c70180e496431be478cae5f - pristine_git_object: 675f7fd5e9133893bf44dc86bcd92d1f6dfaad61 - docs/components/anthropicunknownusageiteration.md: - id: 7cd2d2aa995f - last_write_checksum: sha1:47e54d3e8225cc69c125c2ab45d0377d8407c36a - pristine_git_object: 2f341aed854466929fc7e8c909b771fb276447b0 - docs/components/anthropicurlimagesource.md: - id: 8ff15dedbdfe - last_write_checksum: sha1:bab99b78bdc564a6d16910aec71cfc8a15fe5a91 - pristine_git_object: 139e448ddb9237ffcca950e40d750dce6367600b - docs/components/anthropicurlimagesourcetype.md: - id: b1d4d917a454 - last_write_checksum: sha1:31607f39efc2073e73c78f328a5b4db255d88d1b - pristine_git_object: d1130c155fb98d564ce9ca8df112ce9d538c2990 - docs/components/anthropicurlpdfsource.md: - id: 9e25fcc944c4 - last_write_checksum: sha1:e22910f7eebbe515947593dd6bea1f9705a58389 - pristine_git_object: 30b6984257ffadc3792856e44840173ddbdc440d - docs/components/anthropicurlpdfsourcetype.md: - id: 2fbeab80f950 - last_write_checksum: sha1:8db23a874bd09d9757276589bd1b4d2ab77180e4 - pristine_git_object: 3757423de0c85933d0aadd6bb331862c69b6fbde - docs/components/anthropicusageiteration.md: - id: 9d04ae0634ed - last_write_checksum: sha1:4fcbd0ad911126d09cb0d1c2deb31274f0cfc437 - pristine_git_object: 0bf1cc48ee7ff861dcd371c0e73aea1cadb50942 - docs/components/anthropicwebsearchresultblockparam.md: - id: 719c1c8395a3 - last_write_checksum: sha1:21e1935215988acd172e194ff764e3b4c7680733 - pristine_git_object: 15a52b0301ae18a16f8190f2a6af5d51ec70f885 - docs/components/anthropicwebsearchresultblockparamtype.md: - id: f46b2c29a660 - last_write_checksum: sha1:3dd6995ff527a0b47e416024d6d1ef8b512dd5cc - pristine_git_object: 3f1d82e5332699814368a1dc232c2ce3b975c6d8 - docs/components/anthropicwebsearchtooluserlocation.md: - id: a1a27b73b162 - last_write_checksum: sha1:13cd42950dc5cfd9eb59b038eda215d4bc70511b - pristine_git_object: 4dab8dcb5e68dd2a213e0801a746c0f6814a08fd - docs/components/anthropicwebsearchtooluserlocationtype.md: - id: 9f4ae9375a85 - last_write_checksum: sha1:383159e247a79336120befe7f34d876dc2e93b24 - pristine_git_object: 21c0a2b3ee378c2301f8f82385193e3f6bfc0f01 - docs/components/apierrortype.md: - id: 036063e21392 - last_write_checksum: sha1:860373546a5bd66c47bb4f976e92cc512727b51a - pristine_git_object: 10664241eafdb8ba666faebf62e4285f452450e7 - docs/components/apitype.md: - id: "0e0508573603" - last_write_checksum: sha1:36f315a2ffdb3a935abab8832ca98d89e2945a14 - pristine_git_object: 5b0cd61ddd2b151fddc82d0073d760c88432e4cf - docs/components/applypatchcallitem.md: - id: 3b65f71849fb - last_write_checksum: sha1:9b9efa229a6801da2ecd6fe16526adce76039dab - pristine_git_object: 1a5242abe7b4b84a334e40104f1f8e37d102ac76 - docs/components/applypatchcallitemtype.md: - id: af492b652e95 - last_write_checksum: sha1:ce150433d6fc023d92c4c92bfa151748dfe79976 - pristine_git_object: 46cff3bed1ac629620c343236e022c9dcbcd3262 - docs/components/applypatchcalloperation.md: - id: 8f8084ad5328 - last_write_checksum: sha1:29f32405863a6a0e2f32a01cbbe7e2e0af88dd62 - pristine_git_object: 8898fd5e301a696c6874b4c1793559eaa7dcdc61 - docs/components/applypatchcalloperationdiffdeltaevent.md: - id: d3415d4a1b9b - last_write_checksum: sha1:11bd720248016d0471a3f0a77472d4ab0e5bd1e7 - pristine_git_object: 8909a6bf68ccef93331486c47e2dbc6f2fff5e2e - docs/components/applypatchcalloperationdiffdeltaeventtype.md: - id: 54634e44c46c - last_write_checksum: sha1:9a44a4cc508e7168e88735a3364842f11fc7d16a - pristine_git_object: e6617985996f698f0aab9cc8a02b1afd96f34486 - docs/components/applypatchcalloperationdiffdoneevent.md: - id: 97b9df6f879c - last_write_checksum: sha1:74b5dc299f320882312db1990eb8906c2ee4ced5 - pristine_git_object: 341163b35457a4d5a7e55dbc4f3a8ca3a7ade543 - docs/components/applypatchcalloperationdiffdoneeventtype.md: - id: 102f8c5ccfcc - last_write_checksum: sha1:0e1dd7f57e56d0ec76b803608fc89adb542bc40c - pristine_git_object: d4dbd0e072f04d2c0044d1cc06a34d4edf7b77e0 - docs/components/applypatchcalloutputitem.md: - id: 5c1f50f02008 - last_write_checksum: sha1:c0f25cda15d3a3bc4e7503e78a6f397d738fc160 - pristine_git_object: 76eca926b0d9ba9ce9c6cc35e90f563e01553c4c - docs/components/applypatchcalloutputitemstatus.md: - id: 23ec4ce36067 - last_write_checksum: sha1:8ae4e87b085331254ff882190f1cddebb64b6928 - pristine_git_object: 7a4608be7dabb77f98399f19ddaa5ea53432934b - docs/components/applypatchcalloutputitemtype.md: - id: ab607dca3dbe - last_write_checksum: sha1:ee760d4d4960bfc69f60962903a7158289f055ee - pristine_git_object: 3e5acbd34e8eca78b6b1c32acdc60ad2c3f22a94 - docs/components/applypatchcallstatus.md: - id: 0815abe9f197 - last_write_checksum: sha1:d0154ff9c6255e336a968f3eb8c9fb676f2ecd24 - pristine_git_object: c9a787f93df86fbdd02f560b747515ec8192658d - docs/components/applypatchcreatefileoperation.md: - id: 1bf665d7cdbc - last_write_checksum: sha1:d068e946561d4d7775ec8f2b0207d7fffeabf814 - pristine_git_object: 89ed40ddcaa58553b10dd2767f2631bb8c9cc28a - docs/components/applypatchcreatefileoperationtype.md: - id: 41871f7376bc - last_write_checksum: sha1:55185b7ce0ff3eae63d3989fdb595a86f23ee3f2 - pristine_git_object: d646e0e54e4f47462493e58e3ee1ff6d619b7639 - docs/components/applypatchdeletefileoperation.md: - id: 40d6fde26cbf - last_write_checksum: sha1:d829b902122dc74ad25ada3917856a201070b0cb - pristine_git_object: 83c9024dc8f3b428d24aa3fced87798a5ea2a391 - docs/components/applypatchdeletefileoperationtype.md: - id: cb682dc15349 - last_write_checksum: sha1:d4c6cb96275e1819ac0703cc44b8dba8712906f7 - pristine_git_object: a0bfcdc7a06806ff8775e750ac01a7ab4dfbe59c - docs/components/applypatchengineenum.md: - id: 88d286d64cf9 - last_write_checksum: sha1:b710dae26b4346f93329c939e328235b8677943d - pristine_git_object: 3e03035f0b1030d9cdfdd0cf05e01448a0bfea8f - docs/components/applypatchservertool.md: - id: 924a4805520a - last_write_checksum: sha1:f87ee16357b393e199bf0a4ba74e02130f1f243b - pristine_git_object: 704ebe93904414764ac0d52dcfa8bc76c1eaebe2 - docs/components/applypatchservertoolconfig.md: - id: 39d0b010aed8 - last_write_checksum: sha1:176cb9dd525944dccab1963fd0517e5ea7930668 - pristine_git_object: 1714a7e3f21ab477a69713d0d9b94fff88c3a774 - docs/components/applypatchservertoolopenrouter.md: - id: 8a6bdee0a3c2 - last_write_checksum: sha1:c7dea8ecdb297517e90269bc561eac02bbacd3f7 - pristine_git_object: 573443f89fdc94aa39f5e49168c1edeae66b7338 - docs/components/applypatchservertoolopenroutertype.md: - id: 5ce7a9b8308e - last_write_checksum: sha1:eba1ac2d9ac43d1eeda60227b6a3bc6498dc1e79 - pristine_git_object: 44cfe93954107c960d527a15270e8a8107263363 - docs/components/applypatchservertooltype.md: - id: 3638a8a53d67 - last_write_checksum: sha1:c3139367515e9c0b3dd3109065594824e704c35f - pristine_git_object: 60aec019e3cecb47bfd388f0e049af9956b6acc8 - docs/components/applypatchupdatefileoperation.md: - id: 05b222344186 - last_write_checksum: sha1:9cf38c7b0ed8b008b65ee81b4fb86f2e11c0ff06 - pristine_git_object: 232996de25b6fc032afbd39b7af2c04f5dd4e6c5 - docs/components/applypatchupdatefileoperationtype.md: - id: 1c510d2ad88d - last_write_checksum: sha1:8fa2595e6a0f4990fc23af82c2c6778e2f23e706 - pristine_git_object: 3580dc449d51835a55f1cd1b9ec2f84faf394972 - docs/components/apprankingsitem.md: - id: dd9228e6412b - last_write_checksum: sha1:a25193e5feb4c1ab3010ce853805edfc7ce7b1e2 - pristine_git_object: 8f517a9e02edd21641d769df7eee2423428a0c60 - docs/components/apprankingsresponse.md: - id: daffc9eb5d56 - last_write_checksum: sha1:a41fa7227e40925975146770e943096a3bf85fe2 - pristine_git_object: 937e19bc9d50abaabfe5afea7e86762b675bc4b2 - docs/components/architecture.md: - id: 40a5f2f0b4f3 - last_write_checksum: sha1:1edafecb76992fb1ef8201d9686a011a805431f2 - pristine_git_object: 335e0104f7f12774a22886876bde455234e7ea9b - docs/components/audiourl.md: - id: 1ad9b13da86b - last_write_checksum: sha1:9614979c76c9624def8aeecc503aa736c99240a0 - pristine_git_object: 1b3a9c8f1dae9f5706c0a288413b318d16b889f2 - docs/components/autorouterplugin.md: - id: ebc3c78144c1 - last_write_checksum: sha1:273b6a12737f4b69a14e7bea5ec4f629e6fd6206 - pristine_git_object: ff583fa52683b456bdf7b395d2c88168beaa89cc - docs/components/autorouterpluginid.md: - id: a871b7b2af66 - last_write_checksum: sha1:f9df41065f2d4eaf35a8d24a54a3824d17e12284 - pristine_git_object: 350b1e9c7a237364a36740e7737db408de1fba50 - docs/components/badgatewayresponseerrordata.md: - id: f01b062274e6 - last_write_checksum: sha1:7dc1fd7cde5f6810da4b468ecbfa6c5a68d402c6 - pristine_git_object: 9de5a8934d6aa351f1c5647ce6357e77461ae279 - docs/components/badrequestresponseerrordata.md: - id: 89775285bd72 - last_write_checksum: sha1:0d82f0aafdf520817e65888918fb7ac0d70e12dc - pristine_git_object: c36a56e67887463f6f0d3cb9ccf2a3080e6135d7 - docs/components/baseinputscontent1.md: - id: fd111ee7994f - last_write_checksum: sha1:06ee5dcc9c33e964906b33ab02bf44de85b7c670 - pristine_git_object: 857c7fa0790891fd854c6116abce0929e03c8039 - docs/components/baseinputscontent2.md: - id: 5dec0fa82eb2 - last_write_checksum: sha1:c7e158b4269d0ad5effc325530330773e5dac5fe - pristine_git_object: 3a50f11305760fd431ab50a1f7ff3d63057ff4dd - docs/components/baseinputsmessage.md: - id: f6cc4cee483a - last_write_checksum: sha1:10e3d02668d65f254c848bfb8e9603db5f12ae0a - pristine_git_object: 132bedb83903245839c7780b0dbffbc399d87b01 - docs/components/baseinputsphasecommentary.md: - id: fd174d25ec7e - last_write_checksum: sha1:2aad888ade690360b53ed260c4bfe8b6fea83b25 - pristine_git_object: 26a04fe1e4dc3b16cab331bd47489d46e66195f9 - docs/components/baseinputsphasefinalanswer.md: - id: b59751ca8a83 - last_write_checksum: sha1:83259dbbbe232731691b441e22f1a62f6e86acf3 - pristine_git_object: dac05a7d487a806d2441f022014b50f748b2c40a - docs/components/baseinputsphaseunion.md: - id: 3fca8902e06f - last_write_checksum: sha1:444f1e8657f8980481945c5ce12802f763097d98 - pristine_git_object: b61ff963ac10ae9caf973c21430f5f46f255ce7b - docs/components/baseinputsroleassistant.md: - id: 3856d979d190 - last_write_checksum: sha1:5cd5965071cffb1ffc1b642e671c38509aade865 - pristine_git_object: b761d8327effaaad85ef1142cfa44ac02f1614b8 - docs/components/baseinputsroledeveloper.md: - id: 6c6fdfa52ca0 - last_write_checksum: sha1:0a37384391e1b01b871a7e949677e9669dd2ca70 - pristine_git_object: b0343ac922881cbab9a12dfc13f25c9d4fb03ac2 - docs/components/baseinputsrolesystem.md: - id: b72d6c1fdcb2 - last_write_checksum: sha1:bad507026a59cd1249d12d743e1e3a32802dc290 - pristine_git_object: 705081649384c7934924ba076f662972bb3c585f - docs/components/baseinputsroleunion.md: - id: f86db5bfaae1 - last_write_checksum: sha1:0d8bdfdd670d40b3b27df27a1d583bccf8dea24a - pristine_git_object: e0bcefa062a8eb8a69115ff9d9132664dc266272 - docs/components/baseinputsroleuser.md: - id: 1b2272afb28d - last_write_checksum: sha1:d847535256c934d2a0cf996bdefb40c37e6ec407 - pristine_git_object: 323c14b40df675719ed15a22b0603c05de3c19c5 - docs/components/baseinputstype.md: - id: db4b15943a1c - last_write_checksum: sha1:89b2a0462a9d5d4d177d62768229e2088dc88406 - pristine_git_object: 3ede5b958cfa644256657638490affa94899d0b9 - docs/components/baseinputsunion.md: - id: b93f8e6d22a2 - last_write_checksum: sha1:d1699f886c2801cb4e96b6e1710c7415e6283589 - pristine_git_object: 2d7597f6a1250fa1b35dc5853f25a0ce1cdfb286 - docs/components/baseinputsunion1.md: - id: 3b291815d087 - last_write_checksum: sha1:9802e7fee7ddae373d1e3f0e0e9679218b2dab3b - pristine_git_object: 5d49ac1145e668327a3426952a99d7a4edde0d80 - docs/components/basereasoningconfig.md: - id: c161e7a17271 - last_write_checksum: sha1:4f3c5e5dda570bb87ec7e2deff31e2372f36b833 - pristine_git_object: 031166f6d79ea3ef1781e95468197271da98738f - docs/components/bashservertool.md: - id: ca16c4ffaf49 - last_write_checksum: sha1:c58ad9237fb0b45cf8f3212f165a60fcfa24ca65 - pristine_git_object: d24e01fccba6a930d8313c098a73a61dbd2d2ad1 - docs/components/bashservertoolconfig.md: - id: a51aee28eb24 - last_write_checksum: sha1:c7c8a07f0a845419436066869a7401be4a825b1a - pristine_git_object: e6fda611bda8baf16dd2883a69ac44b3e0f0d745 - docs/components/bashservertoolengine.md: - id: 8199d8ef5ded - last_write_checksum: sha1:1a4c1975344f3f83bc9b5434f5390986c256ab25 - pristine_git_object: e566f077eec6e66b359e126de105488c6fa338bb - docs/components/bashservertoolenvironment.md: - id: 3894aa22282b - last_write_checksum: sha1:e0903f06288b97c5df4fbb615ad75e32482d4b70 - pristine_git_object: 9e1772e06f6eb18b4646d301a3da18e2fa372638 - docs/components/bashservertooltype.md: - id: e6ed8eddbb24 - last_write_checksum: sha1:4b8db8f915f099b89698c93a9dd86fdde32f0d29 - pristine_git_object: 39e37fdadaf320fbd499c345f02b0f248331fa98 - docs/components/billable.md: - id: e56cdac5d413 - last_write_checksum: sha1:98491069a5b43aebf322444078f4484e619feb1d - pristine_git_object: 37795867a108149fc17bf3eef278a974b555b979 - docs/components/booleancapability.md: - id: 41eaf33722f3 - last_write_checksum: sha1:cd411f5fcbd4d577fa2fce0e25585f23c36d4d40 - pristine_git_object: fdb413c61dcecb4b3a9a746774ca51dbb46907c5 - docs/components/booleancapabilitytype.md: - id: ecb8a3396553 - last_write_checksum: sha1:51460435490021c79f8cbea257d7321e15b7b743 - pristine_git_object: 7b69b91002c3e38e6751e581211d9fa17e209ff2 - docs/components/bulkaddworkspacemembersrequest.md: - id: 12cbe93243c4 - last_write_checksum: sha1:5bc0f5067f2fdd1a05409b18ec723b8b2acb4026 - pristine_git_object: 021221840a6dee060a6d38db651561e5cedf5fc5 - docs/components/bulkaddworkspacemembersresponse.md: - id: d3aab5e7eed9 - last_write_checksum: sha1:37171ea7c4582693d05a06f6ebeb19a129cf6a51 - pristine_git_object: 41c1638401d9354a1024e72a47d50110d24b71f5 - docs/components/bulkassignkeysrequest.md: - id: 66e9231f0c3c - last_write_checksum: sha1:7c4564346bbe9f2692053bb1d518972a9db5ad0e - pristine_git_object: dc3200c166b6953272e09ebda3f938eae4bb96a4 - docs/components/bulkassignkeysresponse.md: - id: b27f665882ba - last_write_checksum: sha1:da6afebdf00235e49b1fc387209eb8b8b2f6d6e4 - pristine_git_object: 37b82b9e69b9eeb3f3c00b981003b0616420b61a - docs/components/bulkassignmembersrequest.md: - id: 6cb19834162c - last_write_checksum: sha1:b66155e4a06bd57879d4431d5631e3d3cbd3f343 - pristine_git_object: 9248f05c534c6b12831004e409d160a66021b8e8 - docs/components/bulkassignmembersresponse.md: - id: 04b004029650 - last_write_checksum: sha1:64d50ed55132163d6d6337f53e7a97f7fbbdacbd - pristine_git_object: 2d6897c459041c7d09ec0260ec7fe56efaa4584e - docs/components/bulkremoveworkspacemembersrequest.md: - id: e265be6b6db8 - last_write_checksum: sha1:a72176adae768afd731c2ccbad121c82ea3c163d - pristine_git_object: 370a7447730e57693615aa1dd96d48cef546117a - docs/components/bulkremoveworkspacemembersresponse.md: - id: 36a1e8be9e5c - last_write_checksum: sha1:994efa56174f14f87605bb3e19eefcdad0aea8b7 - pristine_git_object: 3769f7b5f970db9324d32ec681a30dcee2b0a6ad - docs/components/bulkunassignkeysrequest.md: - id: 6d254be079fd - last_write_checksum: sha1:c61da3563e04a493e6b1b72e0f8e5f3f6f6075e8 - pristine_git_object: ea9b9b2a75f9cfcdf15f61b6112e5dbebba26449 - docs/components/bulkunassignkeysresponse.md: - id: edef516726d1 - last_write_checksum: sha1:184f26fac34f1215c9db3fd5b7472f430fef5692 - pristine_git_object: 5ed2cfdc8e2c73c6216a95dfbe56a03a7e647ce5 - docs/components/bulkunassignmembersrequest.md: - id: 0f45518f8ff5 - last_write_checksum: sha1:6c1c57a7a3b5b54c7e0d4abcc4ba94ea4cd918c2 - pristine_git_object: 98e6c00fa67575f503236d92f26a9aa0024cab3c - docs/components/bulkunassignmembersresponse.md: - id: 77eb83663414 - last_write_checksum: sha1:119b447d7ce2042404b3879a5445640d90e67cc2 - pristine_git_object: b0ce35cdbca7e49ed6691f87c2481ad9060df225 - docs/components/by.md: - id: 1bcedb5155b3 - last_write_checksum: sha1:e71a7e5b233d761921f330ae499a73024aa4a0a5 - pristine_git_object: 557c891217e953757e8385a4b54a50d4528ea91a - docs/components/byokkey.md: - id: 9834cbadc071 - last_write_checksum: sha1:a5d63ecfc3e6048e9b4ca699a0c2383bc0106b84 - pristine_git_object: b4b8d797251e82804d823c25a93aa5116e292d5f - docs/components/byokproviderslug.md: - id: 73e588243967 - last_write_checksum: sha1:6e85a868fdbea9db4233014f2f01ba5c86a51b65 - pristine_git_object: 6ba1aa86c9a3c4f6fce12927c1efc8b798432f01 - docs/components/caching.md: - id: 87fa8b1ac535 - last_write_checksum: sha1:cd5e0704dcc4beb29c8e173b7d73365c27b1cb8e - pristine_git_object: 4108245a8918a4015e5bd610fd87e8e5f4741ce8 - docs/components/capabilitydescriptor.md: - id: b50896c38c8d - last_write_checksum: sha1:08c9bd8d8829a298de0f531b0c1c4d8e0e0f6199 - pristine_git_object: 5d58663d481701b702e326aa62e86f93295c2f78 - docs/components/chatassistantimages.md: - id: f1f776b0c4ae - last_write_checksum: sha1:05697e4bc0690cabd72965d01519102c149f6363 - pristine_git_object: 65fba0e5aa8cc676943df05509edf21169feaedc - docs/components/chatassistantimagesimageurl.md: - id: 5dab9ae6518f - last_write_checksum: sha1:d74a4619d0195e1a410c747bd094e738ba439186 - pristine_git_object: ef9412d5a9edda1a0d572a7204f643c57e95c1cb - docs/components/chatassistantmessage.md: - id: 873a0a8e5d40 - last_write_checksum: sha1:8197b175489cb3351551bff144a0caa89e32aadb - pristine_git_object: 3fe2de5bdaf311a915b0bccf9137e73c1d3b4d07 - docs/components/chatassistantmessagecontent.md: - id: ae1f4d3d6315 - last_write_checksum: sha1:0ad5b85eade6a1da7eb7360e87915672ac875c0c - pristine_git_object: 0338df6ce3691baa59f2fbaa3673c53782438dc4 - docs/components/chatassistantmessagerole.md: - id: 1d183e17e37c - last_write_checksum: sha1:dfee23784edcc32fea5312998be7e26070b0148d - pristine_git_object: 07389e76411f893ce1cdc65d5eabb2afb0131355 - docs/components/chataudiooutput.md: - id: aba7fc0396f7 - last_write_checksum: sha1:b5f27e597e7134983b98e14545fede46887941ab - pristine_git_object: e03643e858971e11e14cc707090beed5d15d6ba5 - docs/components/chatchoice.md: - id: 5e50b0331a4d - last_write_checksum: sha1:96e3532ccbb9cda1b65a1bad04f369aed44cb222 - pristine_git_object: 6b070a2242dd4d7244870a516e08d3f14d121223 - docs/components/chatcontentaudio.md: - id: 4a23b47cbaea - last_write_checksum: sha1:29b487b16de9cea2c4c804ae1f44fafe9c9cd54c - pristine_git_object: 7e3a7178076f7ccbc618b84b7930bb73d3922a4b - docs/components/chatcontentaudioinputaudio.md: - id: 04ffe283799a - last_write_checksum: sha1:10a609317556d4a8845da27336ed885d17407ff4 - pristine_git_object: 9e1410bdaafb74192f4a845ad0a4198a18810e65 - docs/components/chatcontentaudiotype.md: - id: 273a8f11e91e - last_write_checksum: sha1:44f9af0fb93c1f3b918a6d3c9d4c73f302a7b162 - pristine_git_object: 231efb3e968c2f996556140accea135db41e761b - docs/components/chatcontentcachecontrol.md: - id: f61f7d9f11ca - last_write_checksum: sha1:56218bc22096b0f3996a30ed7eaa85e689e90795 - pristine_git_object: ae26e674dab87ffa7258e439cadd9b30e8d67122 - docs/components/chatcontentcachecontroltype.md: - id: 6c25585d34d7 - last_write_checksum: sha1:b18c1e7bf7282bbd6c441d6a48e355c87396b9bc - pristine_git_object: a3776be07310a6e3b87f21d95c2c4701cf15422a - docs/components/chatcontentfile.md: - id: 80de41516310 - last_write_checksum: sha1:8c396bb847ab8ad5508f1c87d3e572a6b9d8739c - pristine_git_object: ef68fec62398324b5b9a7446c520a09e786964b9 - docs/components/chatcontentfiletype.md: - id: 7ae1de2bd191 - last_write_checksum: sha1:65db830e9452261b3abfb55e0c0592babb3f8efa - pristine_git_object: c8f291f2fcb753680e87c704099b0c6b8a731000 - docs/components/chatcontentimage.md: - id: 4c6bbbb8fa9e - last_write_checksum: sha1:ca67df0dbc8d559d37e4319d1b4270e52ea4315e - pristine_git_object: 79909c48a34888496f9051cf33899ca1b9a7b4fc - docs/components/chatcontentimagedetail.md: - id: 3f26a1053cda - last_write_checksum: sha1:296d52deb9b5223ed17cfb8ff3300727e671e001 - pristine_git_object: 1c2cfb3ab7c7f2226e3c00c65af8fb9b79ca7740 - docs/components/chatcontentimageimageurl.md: - id: 7c66172651cc - last_write_checksum: sha1:035c15e90cd89d8a8f20a27e28cf19551df62ecd - pristine_git_object: 9915ffe26c36a6a8ad5054389f960f7ea3c4e7bf - docs/components/chatcontentimagetype.md: - id: b92a4757efe6 - last_write_checksum: sha1:ce2d8002a22bf03477cbbd88c68fc4eace9b392b - pristine_git_object: 61eaf66e23031854c913dea6315deb99722b3098 - docs/components/chatcontentitems.md: - id: 1629a00cba7c - last_write_checksum: sha1:7ec4eb320950d35184011c923e033b93b674c7d3 - pristine_git_object: 67154a8559b4f5a715c26c3b85a07bfe1a7eb088 - docs/components/chatcontenttext.md: - id: 7cb138e038e3 - last_write_checksum: sha1:a728e8137eb44ac9ca1a564f5d6ed16ed3cf5417 - pristine_git_object: 2857fcee25f5173c05ec2bf7952e89e6d00a0bca - docs/components/chatcontenttexttype.md: - id: ac89efae2559 - last_write_checksum: sha1:dbe556bf72491a11746413bfb84d277623ed6df5 - pristine_git_object: cc7444ce57ed92f8df7b4856c431b41205b7b082 - docs/components/chatcontentvideo.md: - id: 644f016407a5 - last_write_checksum: sha1:80f59ac3d39149719952eef2275d27fc2e83330e - pristine_git_object: 8ddf46e867fef8a82c8dfec15eeddcf16959e94d - docs/components/chatcontentvideoinput.md: - id: 2801ab923042 - last_write_checksum: sha1:04fe85c81976c0f9e99d1bace10b18315b62d17e - pristine_git_object: aef6e2276e69e312b9860410f6aaf1ef7dffbe74 - docs/components/chatcontentvideotype.md: - id: 24eadd19337b - last_write_checksum: sha1:4cc42fbb361efc7c51d7d8c6f86dd467c0e02269 - pristine_git_object: e02c721f5d783706b7df11e51aedcd9f2d9b730d - docs/components/chatdebugoptions.md: - id: b4052a7b59a9 - last_write_checksum: sha1:53b4488f82bbe11533870cbf08e961a3cc6d5412 - pristine_git_object: 710b14712a04c14746fce608ff3b3cd96189cc69 - docs/components/chatdevelopermessage.md: - id: fcc03e0bec28 - last_write_checksum: sha1:86e0978d5a7dd8d39b2d68cbc5e8ed6482573800 - pristine_git_object: 873f3a0d1cbd72f1e45bc05386143c205a60a368 - docs/components/chatdevelopermessagecontent.md: - id: f57f34c0f41d - last_write_checksum: sha1:859f5db02c1ac1c5c893f93107d074d7da784ed1 - pristine_git_object: ef6fe747a7b86fdabf34f6a98011ad57a1693582 - docs/components/chatdevelopermessagerole.md: - id: cb0b7aee170d - last_write_checksum: sha1:ef2c0cd397238ed0c1a2342e7df7d2897d07b749 - pristine_git_object: 7a9721cc9e1635c150b1e08d7524689224801c8b - docs/components/chatfinishreasonenum.md: - id: 4a1c7f940839 - last_write_checksum: sha1:07de46813ca84e3b5496ad99c6ac4b7f144089aa - pristine_git_object: 3942c0e03d4faffa564408ab97f99118f4453af6 - docs/components/chatformatgrammarconfig.md: - id: 69a089aa92bf - last_write_checksum: sha1:ac3e56e48a49cfd32c1203acc2a0f247dbad11b5 - pristine_git_object: b97e1fefdbd33922d0c361f5cbdb86abe71c985c - docs/components/chatformatgrammarconfigtype.md: - id: "7259142727e4" - last_write_checksum: sha1:06930e28075aa9b4beaace531e8d1e3488956fa0 - pristine_git_object: d61542a3c61384c4b8c656abef985a5761e758ad - docs/components/chatformatjsonschemaconfig.md: - id: d5d317f8b57e - last_write_checksum: sha1:f474c44931872d1ebbe3571ea4c965efed988a3b - pristine_git_object: eac1cb101f3b105ef17f8855329ee26d61bfa714 - docs/components/chatformatjsonschemaconfigtype.md: - id: 5db00c47f9b6 - last_write_checksum: sha1:d17911eacf2093ef10378e87c40d7a6eae45643d - pristine_git_object: 333b76340853f522f1714f7b095253adefb76f7e - docs/components/chatformatpythonconfig.md: - id: cc476e39e9cd - last_write_checksum: sha1:681ca703cd97c8c6b030d9b5111add5cae834fe0 - pristine_git_object: abf14ca7dea07178243c14ff9816a3e419d54bbd - docs/components/chatformatpythonconfigtype.md: - id: c405940549f0 - last_write_checksum: sha1:c7ee086855db30229efe13e92d6dc17ef1920971 - pristine_git_object: 784aaadd1afcd818796aac8afc70b7dedfb5567f - docs/components/chatformattextconfig.md: - id: 89ee5a2469dc - last_write_checksum: sha1:483320204323bdc311782fa32f852f8bcfb1d62f - pristine_git_object: 99ff3e59a97c5636431c293afb905920e9c1bdc3 - docs/components/chatformattextconfigtype.md: - id: b0d90b0d7b5e - last_write_checksum: sha1:52d4933926a4cb6186898585195f4bce168af8bd - pristine_git_object: f3a972b60a63cdb55670cc56cc92eae40578aa87 - docs/components/chatfunctiontool.md: - id: 3c79deefdcc0 - last_write_checksum: sha1:f156ebb35822963a3bde0d64fc7204ef683c6ff0 - pristine_git_object: 419a1b6800384c276581afe7f59d4e52efc75e90 - docs/components/chatfunctiontoolfunction.md: - id: 0de29ccfd817 - last_write_checksum: sha1:0a25d1c9b64f1da2513e9153682848cf41f324b2 - pristine_git_object: 87d7d1ab7d1ed8bd79b7526ae1fab28e5d853c33 - docs/components/chatfunctiontoolfunctionfunction.md: - id: 40ba7785b09a - last_write_checksum: sha1:3de4648516e0edfce65f56430f79ac4993acc798 - pristine_git_object: ac0ce600775accc75afd84515c3d97bdcee221c5 - docs/components/chatfunctiontooltype.md: - id: fd79c1a8150a - last_write_checksum: sha1:8180672d9c029ff2e0d2d3b3ae74f20562b6f939 - pristine_git_object: f3b7513915d711c6b839126e6fed13f51a5cb5ca - docs/components/chatjsonschemaconfig.md: - id: 27016a1430b7 - last_write_checksum: sha1:327875efdcf556fd73b309ef4d1da40e9b18fc86 - pristine_git_object: 36d33ca4a2734cb6dc70cb3cec5e047548a97f70 - docs/components/chatmessages.md: - id: 27dc2c8c0d23 - last_write_checksum: sha1:0a7de1bb1dba5911955257c068e7f91394a9721b - pristine_git_object: ba81886fb54754ea89b2f09c5289d3974a47c442 - docs/components/chatnamedtoolchoice.md: - id: b55b10cbe381 - last_write_checksum: sha1:b20618c87389e2c42263292d0d7e0df08dc554c6 - pristine_git_object: 9a1ef4281b35618582c50551c2c241a2995783dd - docs/components/chatnamedtoolchoicefunction.md: - id: ce1786a50c32 - last_write_checksum: sha1:b2b6c14545d0b4e23bc4dc9422b356a314620472 - pristine_git_object: 6af3c9eb4e7e2218625d18c08e33dde5c7d389d7 - docs/components/chatnamedtoolchoicetype.md: - id: d4856ca12d1c - last_write_checksum: sha1:c5c5e63ee722467cd13522dc7e36775b905e9a5f - pristine_git_object: 771cf4cae80fd6bd62f1cbb971bb50d6ed5066f8 - docs/components/chatreasoningsummaryverbosityenum.md: - id: 4ea66a561f98 - last_write_checksum: sha1:62ddd3b78bfafb2b0bc20663a7fe2d3f2a88f1e7 - pristine_git_object: ca73483767de32b3d83b7f9e2741011e26ac8e59 - docs/components/chatrequest.md: - id: 5e0fa9a2cb13 - last_write_checksum: sha1:a0f55b1bb0073e6cbdc69d687115729737a9cf3e - pristine_git_object: 6c832606b0e983d2efd7cc6e3bec98d70e7fc603 - docs/components/chatrequesteffort.md: - id: 244b6cbbd2e1 - last_write_checksum: sha1:f9ce1e4a1c3f705b673808b35750af7b71b158ca - pristine_git_object: 26c09f0c5ae097d1373b8e5c721a4606765d5c99 - docs/components/chatrequestplugin.md: - id: 24a908f99472 - last_write_checksum: sha1:0d96c14c2f1675e1bc3cdea7b70a82385a5bc117 - pristine_git_object: 5f3019fbd856a6aed5fb45e2762764e1b4d878ab - docs/components/chatrequestreasoning.md: - id: dbec0ff3ecbc - last_write_checksum: sha1:f749dd845cea3d45a0fd3f4a39e3f1edb5f8f54e - pristine_git_object: baa1fb1a1f855f0ea648d44b8cb4c52185efe77d - docs/components/chatrequestreasoningeffort.md: - id: d91e84590d64 - last_write_checksum: sha1:b72a0292fdffaf77b2531a155ca00d6d46405746 - pristine_git_object: 475f655086e1ec97e9b7aadc35ea4977da9e32dd - docs/components/chatrequestservicetier.md: - id: deaf591bec38 - last_write_checksum: sha1:8fa53b0f868c99934b83719b7c0b6b44b1f960eb - pristine_git_object: 13ae40be5e3c883f88789c3b5b74a3b2da4c85c2 - docs/components/chatresult.md: - id: 212b0f66efd0 - last_write_checksum: sha1:f40df693ad2d2d8e156aacb218af394f675bfb89 - pristine_git_object: 41f82f9576591d048a504f29ca19b148ccca02bc - docs/components/chatresultobject.md: - id: 668504931d18 - last_write_checksum: sha1:6d550246aa007a5be94a9788ae4cfdfb75006980 - pristine_git_object: d05e8b4f60163be62354a7f84ac449e87b7418ae - docs/components/chatsearchmodelsservertool.md: - id: 2367c4988883 - last_write_checksum: sha1:7965c368b95d094d3ed3ca92f2d3fae05581b1ec - pristine_git_object: e2c29bd6f6cd3b031681abde5393975a0ce38cf8 - docs/components/chatsearchmodelsservertooltype.md: - id: 028b0f0740f1 - last_write_checksum: sha1:8067bf2a2a0d89edebb08ffb5ac35ba1294ffba2 - pristine_git_object: ea4df9be592b40d566202d1d044275e526c7ab8f - docs/components/chatservertoolchoice.md: - id: 794df1f53445 - last_write_checksum: sha1:357170063031a93ddafb3e65f0de406499099af5 - pristine_git_object: 908413b3196f8d331aebba8b86e327ae43d314bc - docs/components/chatstreamchoice.md: - id: 4267d8be7145 - last_write_checksum: sha1:0c16659042a36e7c30fa688275537718582a41b8 - pristine_git_object: 690d74b67239bf7f423039652aea3741c831137e - docs/components/chatstreamchunk.md: - id: 404d264ea22c - last_write_checksum: sha1:a5e9c58b21127bf93139cfb1b0a1276b141daaa7 - pristine_git_object: deabe169649ad00df0ca40ba1d018bce72cd8c5e - docs/components/chatstreamchunkerror.md: - id: 5a682faf2e52 - last_write_checksum: sha1:11c574387ad732a510f5dbdb23228b9756ab2809 - pristine_git_object: e8fe9aa61113231613df47d0cdf54c2fedc15134 - docs/components/chatstreamchunkmetadata.md: - id: acc0cb830ced - last_write_checksum: sha1:b8cdf1dd8825c832a9162d42d6c776394cb09212 - pristine_git_object: d1ac1cb7d60159e5f2438f0aca87623b232533be - docs/components/chatstreamchunkobject.md: - id: 5393918d9606 - last_write_checksum: sha1:0765d94b3d01c811155dce29c20c2ae4bd4abd0e - pristine_git_object: e5c9b9a5c9a9d0604893f8b014d7857aa9d74c1a - docs/components/chatstreamdelta.md: - id: 6a802bee8f3a - last_write_checksum: sha1:787fe3b23c098d8787d094f852be2e464f484964 - pristine_git_object: 8788248cd6f5a1456300916fd01b0b25856c0a88 - docs/components/chatstreamdeltarole.md: - id: bd41a2e6e1ba - last_write_checksum: sha1:4382019bbc25043a562225a2d54f07d282c65968 - pristine_git_object: 03d5ac5ab133efae7ae05733395324c136247357 - docs/components/chatstreamingresponse.md: - id: 2b5d703d7b01 - last_write_checksum: sha1:a897660437d6d71c4fe70d71cccccbe3e0be042d - pristine_git_object: 26e54c468befcb6070a54bd3560bb8128fa36024 - docs/components/chatstreamoptions.md: - id: b01e4aa7d192 - last_write_checksum: sha1:0f21f4cb7a3f28135b4117e20dcf829ea08ded52 - pristine_git_object: ade029eea68f198e2d9ca9cb1f377a595f641f35 - docs/components/chatstreamtoolcall.md: - id: c82d4d57b836 - last_write_checksum: sha1:1ad1d687a17804028b837bedc036ae96f1cb5027 - pristine_git_object: 35fe73ea17c5b3b3f97d33ec3f8685758c0aa5c0 - docs/components/chatstreamtoolcallfunction.md: - id: e68f1b506665 - last_write_checksum: sha1:08bc633195508081d4187ce0995e923f3469b1a6 - pristine_git_object: e623029905e1a87a0162baa4272920d6ab59b13f - docs/components/chatstreamtoolcalltype.md: - id: 1e3b82103eae - last_write_checksum: sha1:817c13c26f8493d94658fe6a9e11faf25d3520e7 - pristine_git_object: c78e0564c6a19e3eb9cff4edf0c2e4d86b166a2f - docs/components/chatsystemmessage.md: - id: 19ce58721eeb - last_write_checksum: sha1:947fa8f1aa59ca02e4280b2eaca951ffe4944aa0 - pristine_git_object: 578937800f24e000af91a085871c7af5c5382844 - docs/components/chatsystemmessagecontent.md: - id: 0e4b073ca405 - last_write_checksum: sha1:e3a97a8cdfa3ffa72fa16afc0ad2a74e128b2d56 - pristine_git_object: 687802523e0accb62dd2628352d2291055e5bae8 - docs/components/chatsystemmessagerole.md: - id: a89f62ff7bde - last_write_checksum: sha1:79746fbaa483f2c7ba052fb28d1c6d0f3b7bc9a4 - pristine_git_object: 93ea0289f870442b5f7565843744993466933dd9 - docs/components/chattokenlogprob.md: - id: 562b5ff8dc1a - last_write_checksum: sha1:471424d53f8a2cecf5097751cc8786f8e1abf6f2 - pristine_git_object: 968793a35e58df8ce0cd6f026c8c8e55497ae035 - docs/components/chattokenlogprobs.md: - id: cc600497da20 - last_write_checksum: sha1:6581a4b05f8c01ca27a0f24a76d81c704f5c54d1 - pristine_git_object: 5c1d509d7e80c65e63344ee815a982b3a321c122 - docs/components/chattokenlogprobtoplogprob.md: - id: 2fdca99b1741 - last_write_checksum: sha1:1c6fbd6ef782acc70ef41a7136c54de4e95be374 - pristine_git_object: d6898ef9225f786433f4b61a2e1b8bfa25755d4b - docs/components/chattoolcall.md: - id: 5d5bc660b9d0 - last_write_checksum: sha1:3034cd053bf9a0b12953f57186c89b0e338dca5e - pristine_git_object: bd8a1576abda8f7a5e2f22d6a3fc7c88ccd2b16d - docs/components/chattoolcallfunction.md: - id: 2b1fbca75a92 - last_write_checksum: sha1:6619b61e01a0fe5a19cc8f55a8549215ad2e8dbb - pristine_git_object: 3ab94e4e0c6210ee4d97f1017fb1ada38d21a3ab - docs/components/chattoolcalltype.md: - id: 4c4350539598 - last_write_checksum: sha1:36c09bd5863038de76c0ec7c3f24f6fedc4a380a - pristine_git_object: a24314cfbba98628733e2f38affb7005f96dee0e - docs/components/chattoolchoice.md: - id: aa08787a976b - last_write_checksum: sha1:d2c8ce107197a1c4642c9df6bb307ae3fd3924ff - pristine_git_object: 0ffd588e856e8877a6300baa94e25b73ea5af735 - docs/components/chattoolchoiceauto.md: - id: af8f56546bde - last_write_checksum: sha1:14e1710cab46ac216073ae11ee4e4d9e9c089500 - pristine_git_object: 472a5d20fba64f1f5a3c7711ce42ecae04482d6b - docs/components/chattoolchoicenone.md: - id: 7d985a62b156 - last_write_checksum: sha1:5a3cbf83e0fef9a06240465cc19de740c13f44a0 - pristine_git_object: 60dae8bdf01d7af50cdd65afaadcb34e920bc596 - docs/components/chattoolchoicerequired.md: - id: 908350fa4aeb - last_write_checksum: sha1:d808c58b96055dd251730ecbff41e0cd4dcf9f28 - pristine_git_object: 7b5f0cc697cfd542198018b03ac66b1b69488cc7 - docs/components/chattoolmessage.md: - id: fa2c15e2086b - last_write_checksum: sha1:b76200e3e214b73991d1361a5708a8c8efc9c5cd - pristine_git_object: c4ebf7c551f87f0aeb79cceb328002d3b1402b4d - docs/components/chattoolmessagecontent.md: - id: 8e2cb8de51fd - last_write_checksum: sha1:27c24922d9a1cc80988e9734222f5ba5fbc58e48 - pristine_git_object: 8824ed8db3e40daf47afbfcbb66b5027225a133b - docs/components/chattoolmessagerole.md: - id: 5e945be05bab - last_write_checksum: sha1:4d16b0060f643b401568841e198ba97486bee7ed - pristine_git_object: 7eb1791a9153498d5ffffc6b67d3668df59000c2 - docs/components/chatusage.md: - id: 72cd0c41ec64 - last_write_checksum: sha1:144cb3e4e6a71d58327acf0ff8498eed396ade84 - pristine_git_object: 1d06874f274e6752279eeff823c9a05b8ee97735 - docs/components/chatusagecompletiontokensdetails.md: - id: fd8b3b9b7ae5 - last_write_checksum: sha1:16c853c63f5304e52cbf897cb4f67e9d35d3b97b - pristine_git_object: e3ccb3e879887bc2406c08c4321435c986a04309 - docs/components/chatusageprompttokensdetails.md: - id: c8b56480e08a - last_write_checksum: sha1:28bbd1adcb38e0e57cc2b20e5ed0f26269e39675 - pristine_git_object: 14e30cda6c43cb27d0316b8d1450c63943115467 - docs/components/chatusermessage.md: - id: 4ab205b0030b - last_write_checksum: sha1:4c87fbc12f54bb5b58526949e3f8ea9c161f8cdf - pristine_git_object: 8c298e426888aac7d44cba52583bc82c8ea70132 - docs/components/chatusermessagecontent.md: - id: 0cb3b5d5cd65 - last_write_checksum: sha1:a4881f57d2a2f0d1746de22507bc4b3733753849 - pristine_git_object: d741f370d8ef3715587a8f8ed92bf67284e61c90 - docs/components/chatusermessagerole.md: - id: f4bb7c635d9f - last_write_checksum: sha1:e99a81c25906e98176a509f4b21a0f339b3758d5 - pristine_git_object: 95203396fad26d48c76b23f3481b6167291500e5 - docs/components/chatwebsearchshorthand.md: - id: 97a5522cf188 - last_write_checksum: sha1:63c5ad3a1edaaef6037105e24f8b06b282584f9e - pristine_git_object: bd02fe0c8672dbe905c312c0802db1948ddada42 - docs/components/chatwebsearchshorthandtype.md: - id: ec8d82e4169d - last_write_checksum: sha1:11a35b858e9630405ffdde10c89e60ed33fbed45 - pristine_git_object: de2f86e7af6cc072ccd2af6d71e3babc9b554c4e - docs/components/citation.md: - id: 127c4a332a7e - last_write_checksum: sha1:e0964662c49bb4a2d589a04f1b3f73fefce5c127 - pristine_git_object: e6b0a3add5711b51b8a8927aeb61183d6b4d4732 - docs/components/cleartoolinputs.md: - id: 6073ea42150b - last_write_checksum: sha1:d157848b2ac2abe2c8ebdfb54edc270d7ad3c097 - pristine_git_object: af8f2b61c9e4ea4e96d7d0f1b1d7e9e2d6ae9842 - docs/components/code.md: - id: a224ebbe4cc9 - last_write_checksum: sha1:f505e84ac9a4367e1ffda1f6e03c72c24c15ecbc - pristine_git_object: 86a85544261f8234a7d916e33599270b9d90b059 - docs/components/codeinterpreterservertool.md: - id: 289a7f7a2d12 - last_write_checksum: sha1:a14f6246a36a1c36e73d3c3d42abf9e79bf162df - pristine_git_object: ede02254b80a4d7af3f3c0413ac36fd363676a60 - docs/components/codexlocalshelltool.md: - id: 196880556b4d - last_write_checksum: sha1:56d679292f799f432181fac6ee5d024f74727d0e - pristine_git_object: 9a90670a85d5cf910d6c23e57e95342abbcd2a18 - docs/components/codexlocalshelltooltype.md: - id: 6b76cb92f8f3 - last_write_checksum: sha1:e0bda1e8fea9942f8831ec3876344728e8d2d404 - pristine_git_object: 043aac356e529af550220ec56161439b65d49321 - docs/components/command.md: - id: 53e85119ed43 - last_write_checksum: sha1:eae4f9ff22f1fb6c5139b9e44a35d0238388a2ea - pristine_git_object: 3c45dd0765fa97b40928a609a6bbc0e6092be0fa - docs/components/compactionitem.md: - id: 5c6d406968ec - last_write_checksum: sha1:0314cc2f54c07b7d07da0a815dac19ffef673d33 - pristine_git_object: 76160f0750ffc10ef9d07a2f8d6652f05670cf18 - docs/components/compactionitemtype.md: - id: 1033dd974aab - last_write_checksum: sha1:ba3f1ccb85f1193a2523c96199a7e15a4923e5ef - pristine_git_object: 3616c45038b37d4adc7f0d643f7159853915586d - docs/components/compoundfilter.md: - id: 6c881867d341 - last_write_checksum: sha1:0afec796142bbf1dd29d5ae73e6926bfc46c7ab6 - pristine_git_object: aff15cd55b07298e0fbaa37ad89cee8d26b1cd0b - docs/components/compoundfiltertype.md: - id: 8c913408500a - last_write_checksum: sha1:f08429d6fdf07f9d65321a8d00a72c6286ab1dc6 - pristine_git_object: 162ed7159ef543f8b418b2325c75eea6467dd3a9 - docs/components/computeruseservertool.md: - id: 68115b3d3921 - last_write_checksum: sha1:2a8d605be8897d6f4e019fa046ef5a123dcb2adf - pristine_git_object: cf1bfb52d4bbeebe8744cf8426a0fb16c2d5386f - docs/components/computeruseservertooltype.md: - id: 5957ac538f35 - last_write_checksum: sha1:bf2c675ddac5469378b4a378a42496a3ec3bfd82 - pristine_git_object: cdc92b8cc5e1cb558b421a5a2bb8dff51ceda0ba - docs/components/conflictresponseerrordata.md: - id: c80474d05fa2 - last_write_checksum: sha1:7f53e1736241725b06f21a327b45458fabb1f66a - pristine_git_object: fb319b9ed8d41dd5eead7536827cf74057ce877e - docs/components/connectorid.md: - id: 5a583b8644f9 - last_write_checksum: sha1:61bb2013d883cf53f9fc103eb33c6415454ebd57 - pristine_git_object: 673ad13dbcc84df8ccf4c10d4b722e711873a37d - docs/components/container.md: - id: 9045d956881a - last_write_checksum: sha1:0076c1028f5a416afde20f940e4f989247819fc8 - pristine_git_object: df1116376f912e55b36fa745a431175679413024 - docs/components/containerauto.md: - id: 89a8dc079e5d - last_write_checksum: sha1:1504c81161683ff417806ddb74839797e7a08b91 - pristine_git_object: df63209599b11bcc887019d5cfc0997071fe8137 - docs/components/containerautoenvironment.md: - id: 52c0ed2293d7 - last_write_checksum: sha1:7a0b71d5f90e067604db29ef21a35bea0d6be805 - pristine_git_object: 8e2b41b11c55627a8adc4def9bbe017dd52da0cf - docs/components/containerautoenvironmenttype.md: - id: 305bc5e52c06 - last_write_checksum: sha1:69cec3929d9355f96b85ea3c92de48506ac77778 - pristine_git_object: e1db56e5c72e2203821d6d58dedf8b29870def8b - docs/components/containerreferenceenvironment.md: - id: f7cc9a458e0f - last_write_checksum: sha1:09a4b2ccb2514619ac6732d1dcbf0b69cba7d874 - pristine_git_object: 9870ca09ffcabe1dc8f8fc04658459bc39a078e0 - docs/components/containerreferenceenvironmenttype.md: - id: e82f2f03aa56 - last_write_checksum: sha1:608da106f742bd3f5cbbbca53b28f4e44d59d097 - pristine_git_object: 11dd67a5802cde4b49bca63d9f7dc25c94bef20c - docs/components/containertype.md: - id: beda1b89c7a4 - last_write_checksum: sha1:f513446b0c8b1cb3a34ed6721bd716536ffbae47 - pristine_git_object: 9be5b3ce474de60fa8116325313e5a8d9ebe188d - docs/components/contentcompaction.md: - id: 3af2bc3b0e06 - last_write_checksum: sha1:4cfd8c00866128aae53872143819cf939110cc4d - pristine_git_object: 2f7fa669eda8b3b01348cfdb99db9bb410759f24 - docs/components/contentfilteraction.md: - id: c9b7c26b9524 - last_write_checksum: sha1:363f70d11cc87b49cf7d5ba82f4c4d7063a2a5dd - pristine_git_object: 43ee22f394d068eed9cdda45a655a1f64fdab84e - docs/components/contentfilterbuiltinaction.md: - id: 55a04916d7d4 - last_write_checksum: sha1:1e6e0ebc1b88dbef7029f951368198e20e1cedd3 - pristine_git_object: 4f71cc021888a043f920cd5ae1abad2e34a99056 - docs/components/contentfilterbuiltinentry.md: - id: 82426635e713 - last_write_checksum: sha1:ab50d8f260f82c675c617d873c3ef08aafdbe548 - pristine_git_object: a9c6ddb1aca79dbf1feffa26235c888c60c9d67c - docs/components/contentfilterbuiltinentryinput.md: - id: d165305608b4 - last_write_checksum: sha1:cea1961d568d8087828b4467affb87f66a99014b - pristine_git_object: ce557a77f7b40573881741aa169d33eddddd7ca4 - docs/components/contentfilterbuiltinslug.md: - id: 0ce8d26d9c87 - last_write_checksum: sha1:320e33dee158ab882b3728194d266fa1369a83a8 - pristine_git_object: 823e41ff1b867856201745c4d059f6965ebd013f - docs/components/contentfilterentry.md: - id: 856c24c8dad0 - last_write_checksum: sha1:4c604fed1ea84146d5430b5cd449237664655c24 - pristine_git_object: 9b7b6c8c4a83d7c39f6640cdc1b366736c49f38e - docs/components/contentpartaddedevent.md: - id: 46c34edca7cc - last_write_checksum: sha1:d92174df5be607cd3c387504774864c6c80e7899 - pristine_git_object: a89190b31c4f1e480719f22ceaacbee7a1c0de5c - docs/components/contentpartaddedeventpart.md: - id: 65797fea2a6a - last_write_checksum: sha1:6f3b68d1a22f7d690e3ea2ce1db2af74750f4953 - pristine_git_object: 7101e0275aa7778c408e1237bb0a829f7eaed2b4 - docs/components/contentpartaddedeventtype.md: - id: 72bab8b5ffda - last_write_checksum: sha1:d1effe2f7a73919d65a99f7ac4f3f8d0b80b645b - pristine_git_object: fa5229a68a69489db870b32e5cb58e5e9e707ec0 - docs/components/contentpartaudio.md: - id: 8a560472a48d - last_write_checksum: sha1:61e491954ac68750f578f0a4a697bcc7b6a961f5 - pristine_git_object: e79df2f7ba710d059051b6ec8a098dde12b1269c - docs/components/contentpartaudiotype.md: - id: b2efae4d5bc1 - last_write_checksum: sha1:33d0fed2a66734d0ba9a707933bef225171d3d73 - pristine_git_object: 368673e2a7e2ecbfc4de294485eee16641e25b45 - docs/components/contentpartdoneevent.md: - id: 4c409e055805 - last_write_checksum: sha1:5d6a3d850c8a4571937b891efd7ff368c8f11f7d - pristine_git_object: 7cccc9ecd85b2c6c18b792c8a361ac62ea10bf0a - docs/components/contentpartdoneeventpart.md: - id: 4e2036cbdd2f - last_write_checksum: sha1:461683c3f5f96c458c5d88e87b7876138b1ae22d - pristine_git_object: a09231a3c3e312214f1885f870edbd945be78d5a - docs/components/contentpartdoneeventtype.md: - id: "859167485170" - last_write_checksum: sha1:f35a10d5fc1856fbbf28ee1f64ab43d288c8328b - pristine_git_object: 53a335d9b3cd971a3b24e4759234f987e3499679 - docs/components/contentpartimage.md: - id: 04fd5d4395fa - last_write_checksum: sha1:22e4320a6ba2134948a97ffe35280304b4880fad - pristine_git_object: bd630073495ea820141ad7bca9cc137612f044ec - docs/components/contentpartimageimageurl.md: - id: 6352f603f663 - last_write_checksum: sha1:71d48852b6dfb295d658462e07c52684e2e59431 - pristine_git_object: 06ae1d1add91be985a996ba8e8356cc9c0b970d2 - docs/components/contentpartimagetype.md: - id: 7b799c2f4203 - last_write_checksum: sha1:77ad88cf178e7ba6ec27eb2ab17bad7473668a6b - pristine_git_object: a63a040363df5d6da9d336daeb354a87a73e531f - docs/components/contentpartinputaudio.md: - id: 649dc80c9a9e - last_write_checksum: sha1:04c4a3da8b685d3d0119b54c8416c667354b5796 - pristine_git_object: edd07bf97cbb02004082f9c976601fa5cfc0d116 - docs/components/contentpartinputaudiotype.md: - id: 93b19b8d50a5 - last_write_checksum: sha1:7bd25fa498c5d21320ab03ee7a5d932d136fa4dd - pristine_git_object: 9feb3fcb787c42aa9f06ff2b48463d167771ed66 - docs/components/contentpartinputfile.md: - id: dfb6b2c0e96f - last_write_checksum: sha1:76b6c74e1f390f5bdc54b8060ac110fcc67eefe1 - pristine_git_object: f7f021677830ff6da9ef89f61de7e3a9811e9a64 - docs/components/contentpartinputfiletype.md: - id: fb7732ac8299 - last_write_checksum: sha1:685e7d57fd27c0e12f82471e3d5853d83f2ff7f9 - pristine_git_object: 60a5682a9cac3cbc856150074dfcd30d70a8e185 - docs/components/contentpartinputvideo.md: - id: 4632198b7a38 - last_write_checksum: sha1:43f358673ca2a9e4d4fbf7b0bef946419abdda06 - pristine_git_object: 27bb8b259a2a81cb33ebc0c9a2a62b7ac94422cf - docs/components/contentpartinputvideotype.md: - id: eac3808e492d - last_write_checksum: sha1:4f9b77cb1c6a8a9d437e44062956bcf0888f3814 - pristine_git_object: 8be0a0534737efc557c6f76a868ce6cf5df50481 - docs/components/contentpartvideo.md: - id: 3aaf4fab5336 - last_write_checksum: sha1:f6daab262230e2e3e5c2f5318b6892ad4b6e7a3a - pristine_git_object: fd7a521e982988dcacd65a6453a06971da877df7 - docs/components/contentpartvideotype.md: - id: e866f7da5684 - last_write_checksum: sha1:824caf53883b556d4e9f99d5f496b706e4d48f00 - pristine_git_object: 662faaacea82d1fb30c586c41ffdc6a762e83a1f - docs/components/contentredactedthinking.md: - id: 2fa87a82460f - last_write_checksum: sha1:8229af2ad4a4f3603a2d56f0b347bdac60dd7c2d - pristine_git_object: 3a10ef6b60553edc02a7659b2d28ecde3c57a3ae - docs/components/contentservertooluse.md: - id: 55cbcc554f4c - last_write_checksum: sha1:246897cb594e8ec400e6c992d983c4b91a53cef0 - pristine_git_object: 719c5c83b9f740852f975fe24b47d3bb5092cf0a - docs/components/contentthinking.md: - id: 002f8107eb0f - last_write_checksum: sha1:ced629b961cf70a6dbdce17f3de6e10896e3e995 - pristine_git_object: 9dd65faba7e52845e146cc3ca2a91c740811d564 - docs/components/contenttoolreference.md: - id: f915e52eb876 - last_write_checksum: sha1:241547b6d5dbdc93b1282c8b30cadb323519caf0 - pristine_git_object: 96317dd62fa0acb84665487aaec2c311ee5a3e9b - docs/components/contenttoolresult.md: - id: 6caf8d6dc5ca - last_write_checksum: sha1:3341ac4cfae9cfa81f93eaeeb94065ec6ac0d3f2 - pristine_git_object: 66c04d5affa308882a67aa4266ca40e085a47e53 - docs/components/contenttooluse.md: - id: 91e0b67ed688 - last_write_checksum: sha1:a3f367058973195fe24b2d2ec81ce4d61f695354 - pristine_git_object: 6d667fee3e78addcc6c5ffe6b127ec9c5bbd3a96 - docs/components/contentwebsearchtoolresult.md: - id: 21b6cbd88f3f - last_write_checksum: sha1:cc5e51f4ab8d2ef457e2d232eacdca41c951e9c8 - pristine_git_object: c459891fa9663572de7c9c9d13981b0324ce6353 - docs/components/contentwebsearchtoolresulterror.md: - id: b503fcb137c2 - last_write_checksum: sha1:a6b0053559c6950de9b437c5dfb246b0e18d71d4 - pristine_git_object: e45ae52bbe07a24d3ccbe2ca9e8d7e427fbbe946 - docs/components/contextcompressionengine.md: - id: de089ca4a588 - last_write_checksum: sha1:4dee80dba0a801d9d6aec487235a39d548744372 - pristine_git_object: aa78a36053e7d254e90281ce6432b84221badc36 - docs/components/contextcompressionplugin.md: - id: ad9a51a0a85d - last_write_checksum: sha1:40459f7417d59618b7e2f8b16f1a9c879d1d8396 - pristine_git_object: 2f8c52d5776546ba81a9a789baf6e74981792507 - docs/components/contextcompressionpluginid.md: - id: 1946fe4536f3 - last_write_checksum: sha1:918d605b019529584735b29b008e465a4f798af5 - pristine_git_object: 4922c8b3bb952f712fcc0cf414dd5b505ed2c4a4 - docs/components/contextmanagement.md: - id: 3c24bff89193 - last_write_checksum: sha1:c192b583fdb25964c6def320c39284410a010bfe - pristine_git_object: b021b5ed7cfb487dce08a1c9637c0fb95d16ba94 - docs/components/contradiction.md: - id: 395878b36283 - last_write_checksum: sha1:2ea135646f838c852beef96adc47ab28a0f903a9 - pristine_git_object: 1a94d757e5ad641098da32fda8e9818fe36c134b - docs/components/costdetails.md: - id: 2e3d81b7a646 - last_write_checksum: sha1:b2748fc0cf305791446f5f217947d82bd74a8350 - pristine_git_object: 58a1aa8485130f8b49c633dfef0439b83a5f239c - docs/components/createbyokkeyrequest.md: - id: 0c8feda5c201 - last_write_checksum: sha1:327a07d0a93672ad5375f65847ab9f8f0f6c44f5 - pristine_git_object: 1471fe23196b46168cda4247bc2983be9d8d67bc - docs/components/createbyokkeyresponse.md: - id: 7c06d88245c4 - last_write_checksum: sha1:6940b0c65045f9895d77a7c055711d0f79bda2f9 - pristine_git_object: 7a94cf8a73af0ae307a5072042c1f7f4af73052f - docs/components/createguardrailrequest.md: - id: 5144188aed43 - last_write_checksum: sha1:8a11b2066f551934b763946fca65db412e89dd47 - pristine_git_object: 62ac84a3acae321227bc87beb6a58b052265f53f - docs/components/createguardrailresponse.md: - id: 94a5ed00d7b9 - last_write_checksum: sha1:19f8c9b602dcb84d30e58efed998366600e3d9aa - pristine_git_object: 7206ed2c684bac18cbcf7f9f88e81d8e4116511b - docs/components/createobservabilitydestinationrequest.md: - id: 9ce757a7dbff - last_write_checksum: sha1:edc26309fb23380bd6041cb69daa38088775a66d - pristine_git_object: 46466a54ac5b141cfb957e1e803c111bde4ca63c - docs/components/createobservabilitydestinationrequesttype.md: - id: 348f2067aba4 - last_write_checksum: sha1:b7251d408da77edcbd2bf88540cfd269b3cdfc11 - pristine_git_object: cd6531c3fc9ec74e2fd07347cbb22a5196e1be4c - docs/components/createobservabilitydestinationresponse.md: - id: "732380376136" - last_write_checksum: sha1:418b458c99152d2bf294f3039cbc3650249c0d2c - pristine_git_object: 52ef8aec72bb9cb3b53f99f40f6f24d786306f4f - docs/components/createpresetfrominferenceresponse.md: - id: 3e5b6070cb8b - last_write_checksum: sha1:1881eb7fbe758eff1b9ead38aaee739a23b27482 - pristine_git_object: 05ff3c8bdee72a89821947233ad2b07e344ccf63 - docs/components/createworkspacerequest.md: - id: c81e27cca23b - last_write_checksum: sha1:02a8d08050dfad4c7aa30c136376492597a280b2 - pristine_git_object: 6a27face512625b803b3019961e92fb93507c07c - docs/components/createworkspaceresponse.md: - id: 32307c6ed876 - last_write_checksum: sha1:06da8a383b790b50e9112e715bc27193b773e412 - pristine_git_object: f8016bd9b1a1836738e1f4811999a96dabf244ec - docs/components/customtool.md: - id: ff0ec1b8ea8b - last_write_checksum: sha1:16c97cc21733bf9ec827d3fd259f205f78ec88ed - pristine_git_object: 30dd86addf398fc81df2ef8e2caf4e1f0b013b4a - docs/components/customtoolcallinputdeltaevent.md: - id: aa74a9239e4a - last_write_checksum: sha1:4e4fc3e68dc1fc5b2d06480df23b7b300976efac - pristine_git_object: 4f602b0e61488f794f97b0d9bcceb46b7e93afb3 - docs/components/customtoolcallinputdeltaeventtype.md: - id: 65bad1b92e5e - last_write_checksum: sha1:028f27c1b938af3e8ccc9234cf28b296eda87778 - pristine_git_object: 1029c1bf974c37ad107d5eb589eede4fc1066f29 - docs/components/customtoolcallinputdoneevent.md: - id: 97d597082345 - last_write_checksum: sha1:221fc723d1c277e5210b8a4c9b050ababaadd58f - pristine_git_object: 691db8e9a97f4ea4ddf07f51464ad7a20900ed9a - docs/components/customtoolcallinputdoneeventtype.md: - id: 1909dec217d4 - last_write_checksum: sha1:67020dd1f2231c0fd73324d8d01ca9272fdbe2cb - pristine_git_object: 088afd273160b71d1eff1495bd50bdee784dc706 - docs/components/customtoolcallitem.md: - id: ae7a6ef3060d - last_write_checksum: sha1:bb1d924cd9719ea627615ac328b110f3ed090b65 - pristine_git_object: a4bf10f7c9de3955d685b74a84bd573fcb799cb5 - docs/components/customtoolcallitemtype.md: - id: 43c75f922ac8 - last_write_checksum: sha1:038cc5d06f5d69a4a2d1318eac6994d25b97d693 - pristine_git_object: 45ae18528e90d2780fc584798ca68c59aa139914 - docs/components/customtoolcalloutputitem.md: - id: 7fd804624ea4 - last_write_checksum: sha1:59c60228c9cfdf9aaf7849308986561f3f6a3362 - pristine_git_object: 9bddd1f51bfa27f3beceae0ec2c0bc961031abe5 - docs/components/customtoolcalloutputitemdetail.md: - id: 9060d746d744 - last_write_checksum: sha1:48b8d9387e689ac4d1011b18ee47b6b50e68f172 - pristine_git_object: 269dcd5c4827764641f5480b124354a9d4c86220 - docs/components/customtoolcalloutputitemoutputinputimage.md: - id: 644e4613d935 - last_write_checksum: sha1:fa09dc89aa8e38719991328d9a3a3a728a6ad7d9 - pristine_git_object: f535d0464a8cd17fc6141bbe314d84ed9fb54412 - docs/components/customtoolcalloutputitemoutputunion1.md: - id: 72bb55707f72 - last_write_checksum: sha1:05a9d4f91756451143d0dd75d551cae5dd572a5e - pristine_git_object: 9061394039ad4daeb84740e333554e6828ef8299 - docs/components/customtoolcalloutputitemoutputunion2.md: - id: ca10033f3ed9 - last_write_checksum: sha1:213c956b2fc511b952bd8f3416fdef20336c4081 - pristine_git_object: 6750f9d41f77ec38d8554a2c880ae9e0daab8357 - docs/components/customtoolcalloutputitemtypecustomtoolcalloutput.md: - id: e6ba19bbdb9a - last_write_checksum: sha1:435ef3f664fa25e832e09d4b7fd23bec43711962 - pristine_git_object: 1f833f8904c45c28f378a297e912f2413b0ba6b8 - docs/components/customtoolcalloutputitemtypeinputimage.md: - id: 1923f15f8775 - last_write_checksum: sha1:39bad5280dd7abd36a784c4a27eb6d12c53fccdd - pristine_git_object: e4811f464b43800ab8274e2ef256140b79f2a265 - docs/components/customtooltypecustom.md: - id: 5fabd69a4a9d - last_write_checksum: sha1:900733b615df411575d56ac31008d2059e75e1be - pristine_git_object: 173b9852b2b997cdbd6308ccfc7c8aa3659dea04 - docs/components/dabenchmarkentry.md: - id: ec28e83091da - last_write_checksum: sha1:d0b6bd3f94972b0d6051fb9518e8eb3a1768a844 - pristine_git_object: eec6060113f1177659279ced122473f4ab031a69 - docs/components/datacollection.md: - id: cacd95d2ebf9 - last_write_checksum: sha1:1d9eb4c12467860d5ef9edceb6456a4b9d6de643 - pristine_git_object: a07c6e2e56cf9bca27530a9f9940b4d439680a0c - docs/components/dataregion.md: - id: 8c2ef2f3a21f - last_write_checksum: sha1:455503307853c4dee6a8c3d5b790f4e84c1fd5cc - pristine_git_object: 79b026c46fa27af5cc8c8e384498b11bee1bf5c2 - docs/components/datetimeservertool.md: - id: 2b884f7c46b0 - last_write_checksum: sha1:60984916e1dc1df81001d9ff7b1f394ef4895498 - pristine_git_object: f6abe0a5d59c59b6766f180d41d6bf65ae836a1a - docs/components/datetimeservertoolconfig.md: - id: 5d74f1cb3030 - last_write_checksum: sha1:cccb4abbdbd8d33ab18eda21dcb71579ae6ac57e - pristine_git_object: 30af011662994a116fd52e1d8b8a446b760c1184 - docs/components/datetimeservertooltype.md: - id: 8d84fb41685d - last_write_checksum: sha1:fcfbe6740c505b263b90f7de5281d4f506922b05 - pristine_git_object: 870296bd3335da46ecdf4ec1722a3d47037a09c9 - docs/components/debug.md: - id: 26a3872bbe78 - last_write_checksum: sha1:49855ba9878e3a8cab4e48176c1638475824b111 - pristine_git_object: 57d0211ffc7883793b06207fd2909f05117f42e1 - docs/components/debugevent.md: - id: fc88265fcb2e - last_write_checksum: sha1:5797649b9dec8e67a019a339786d29067bc6c1d0 - pristine_git_object: 190177ccf64727feae565ad9930ca71cf0c5bc1f - docs/components/debugeventtype.md: - id: 8e17e2235c87 - last_write_checksum: sha1:981773f91d37ee4d920a01c457995b4fe2085f69 - pristine_git_object: c70c1ce547e7a377caca25eac9e55d5cac10c165 - docs/components/defaulteffort.md: - id: 08dabde07c1d - last_write_checksum: sha1:0a1d4ee947c22010f9bb2cb66a52a0bbb2011e00 - pristine_git_object: 871219eaf7153f1027be70d26b1f667444a6fb17 - docs/components/defaultparameters.md: - id: a84477afcaec - last_write_checksum: sha1:a20e8b576e341dbcdb91884b8fc83cf4316ab106 - pristine_git_object: 6941215fa82fae36a554f184e99595e51bf4b150 - docs/components/deletebyokkeyresponse.md: - id: 9fab8fd95bbe - last_write_checksum: sha1:2c8376b694e91d8fe5f3c0e85575ad1c5defab8d - pristine_git_object: 706faaa13d94b66a414d772044077cb1444bce45 - docs/components/deleteguardrailresponse.md: - id: 78770374c8ed - last_write_checksum: sha1:1ceae5a23d706b158b011b234d968a0fd495d2fc - pristine_git_object: 7e0a483e6690842ba12d2a9349a9e2f0c79df8c9 - docs/components/deleteobservabilitydestinationresponse.md: - id: fa521d2a3c76 - last_write_checksum: sha1:ce3c41c91454e83f9729bea4ad1c312e0ab7f5c1 - pristine_git_object: 34f13a0d5e0bc6c7513533d2417896d605d54626 - docs/components/deleteworkspacebudgetresponse.md: - id: 340d3cd85ee6 - last_write_checksum: sha1:c481c04da913cb0c725684810d53ad636a33b7ef - pristine_git_object: a44597c43a8a7fcee3154698d083b2ba85d1e6ea - docs/components/deleteworkspaceresponse.md: - id: df0fb6410027 - last_write_checksum: sha1:e5eebf42ba059f27a266fee18c032e193fa382e6 - pristine_git_object: ba3c2bfda961110864cb08434398c94c698415f5 - docs/components/easyinputmessage.md: - id: a4927c37a92c - last_write_checksum: sha1:9da1d4db9cd27f00a6b95f2bfd770e3e1f3755f0 - pristine_git_object: 336ef7a7bb1df419370af586eec43e774bf4730b - docs/components/easyinputmessagecontentinputimage.md: - id: f7937c5f8c6e - last_write_checksum: sha1:dfddbfbcce4b0309937f0369bb4768fd4382b043 - pristine_git_object: 22ad82113e1744c08340678e760a4d3f7e0ffeaa - docs/components/easyinputmessagecontentunion1.md: - id: 50fcb3e4383f - last_write_checksum: sha1:f3b0bfbd846036a751a5fafe0027d24fff1e8562 - pristine_git_object: 3fb9f574e248def2e7c13338b69a0836fd6da635 - docs/components/easyinputmessagecontentunion2.md: - id: 193c6ccf9019 - last_write_checksum: sha1:cf3577d0972e3655d0c7fef93a74a8ed784d53f6 - pristine_git_object: fece542858a307b4381b49dd8a48438f6e5412a1 - docs/components/easyinputmessagedetail.md: - id: c61a76d3f5f7 - last_write_checksum: sha1:6b39918f586956910ec295b1554f7d60344644e1 - pristine_git_object: d16be2523383510ef5e70821cc9fcd80952b1520 - docs/components/easyinputmessagephasecommentary.md: - id: 876e7cf3c1bd - last_write_checksum: sha1:a66361bbf2c77f4c9ead65c37687136d44fa5b25 - pristine_git_object: 846fa3d7f29f5596cbb820c82fa875ea588ad285 - docs/components/easyinputmessagephasefinalanswer.md: - id: e2b7b0975fdf - last_write_checksum: sha1:1db0189759242106720ead985ff968db6cbb9ae4 - pristine_git_object: d0c4674078bfa1854cbf535108d1f2fc8a26ade2 - docs/components/easyinputmessagephaseunion.md: - id: 2ce458f59101 - last_write_checksum: sha1:5690e18679ce08a4b04a78dc587d3b3e7c32e583 - pristine_git_object: 4a8e7c3c8cc52dc3d9884123cf113c3190d3092b - docs/components/easyinputmessageroleassistant.md: - id: 15af073bfe56 - last_write_checksum: sha1:6af3b2b38d768de19419a6c132b8eee9be68987c - pristine_git_object: 1cdc687996389411002e50056bfb400b5d5bae0d - docs/components/easyinputmessageroledeveloper.md: - id: ee99f8ad364e - last_write_checksum: sha1:59b505361d5c941946e7926038d5b7741cdf3c22 - pristine_git_object: 08832892c5f6bbc65a0363c98b05ba1a1ec056f8 - docs/components/easyinputmessagerolesystem.md: - id: 1b7599d2a1f1 - last_write_checksum: sha1:bbd687187332af48fb13463bd21806379906dce4 - pristine_git_object: 26c830aec4d74672afd9711cd45687d6825647da - docs/components/easyinputmessageroleunion.md: - id: baca15eca8c5 - last_write_checksum: sha1:c22891423c0530830f933da1a8eb6fcb7068d185 - pristine_git_object: 682ab99f7710f31fc792375f41c66c1a634c8bd8 - docs/components/easyinputmessageroleuser.md: - id: 6c844fdcf70c - last_write_checksum: sha1:21736cdf62fc202adf26bf1939e029f452dfcf83 - pristine_git_object: 7b275a9261e22e64da7c7f53e5b998e13af51a1f - docs/components/easyinputmessagetypeinputimage.md: - id: 896085ad02a8 - last_write_checksum: sha1:7aaf19dc8344080ebe7b67569b48a02f96a05b5a - pristine_git_object: a40bf8aac133d7fd1111fa688bdff6a419d9b7cc - docs/components/easyinputmessagetypemessage.md: - id: 09c9ddf2d237 - last_write_checksum: sha1:4890beaae899a0be186dd053e4f83f5e9c7f2688 - pristine_git_object: 39df84285df422ec938376eea073fcc200fa0335 - docs/components/edgenetworktimeoutresponseerrordata.md: - id: 27d848813ab0 - last_write_checksum: sha1:eff07929141781909a39ca2793f1afa963169f7d - pristine_git_object: f460fe48e034fa2d47ca347e7c4ab3a9846a0663 - docs/components/edit.md: - id: 2f41d0745c51 - last_write_checksum: sha1:21f4b7a31212dac0a40f81fdae3485ce5fbc4831 - pristine_git_object: 3cddc0c341c102b23d127274a3c41b6719d7b9bf - docs/components/editclearthinking20251015.md: - id: 4d12fd9d95ec - last_write_checksum: sha1:908d355f57932e8aeae02bb9b21fb16711abe301 - pristine_git_object: dd0296e4ee080bb6127b2af9d3b6f7b8850a4eb7 - docs/components/editcleartooluses20250919.md: - id: 7c5b2e32875c - last_write_checksum: sha1:c6f8db148f629df94f9a2a73e8c98e7406ce7200 - pristine_git_object: 1f8001583309f3486dad8456d6ef1e76ebea1208 - docs/components/editcompact20260112.md: - id: 47c6b6fa38ec - last_write_checksum: sha1:59a918b462ee2cd67c496deefb681b3375ed2b50 - pristine_git_object: 7b6f31523dbc6e02700d5d2aaccc39fae9644229 - docs/components/edittypeinputtokens.md: - id: 099ed6a1de82 - last_write_checksum: sha1:41580565bc483b2ca1cdb981e15d324f8060f504 - pristine_git_object: 8463c0cdd55e1d75e23e3d7362f0dbfeca1985c0 - docs/components/endpointinfo.md: - id: 98e0e75e1121 - last_write_checksum: sha1:5563b32279aeafa2725d1547df1d0f517e53789d - pristine_git_object: aa455ebb10ec0c722ed3c38824d82c0689507663 - docs/components/endpointsmetadata.md: - id: 9b403c20b7a4 - last_write_checksum: sha1:805465cf28357e16abc156888f5bbf305612e0f6 - pristine_git_object: 83eba1215ad932ffe98dccc5b1b5c24fd79a8ae3 - docs/components/endpointstatus.md: - id: 8643237270dc - last_write_checksum: sha1:945606bc29cd884375a5c9404786df5e726e67a0 - pristine_git_object: dd8900571dc033720f7ae045e3ea0592d4588c4c - docs/components/enumcapability.md: - id: 03f3a8a22c9d - last_write_checksum: sha1:3e87b13cadc0c69789c6a5f9e0d5163501615711 - pristine_git_object: ab110208b2603a762628911c9952a34dce75a38a - docs/components/enumcapabilitytype.md: - id: eb85df42d2a1 - last_write_checksum: sha1:c86722cdb14ed7a6de6574259b4a44fbcfb3f104 - pristine_git_object: 4c3f22bb88bfc6e30be791285a94861ae272c39c - docs/components/environment.md: - id: 29e78fad01ee - last_write_checksum: sha1:532d3cc7bb12231a96be78b25f9b5b06e1db3218 - pristine_git_object: e58da65457bd71885289a77f054ae63189dc77d9 - docs/components/errorcode.md: - id: 8444c861d257 - last_write_checksum: sha1:8afa60d8ed19ab173c806f80bbe6fee0f40daf5a - pristine_git_object: 5b63fd329f8a981b755b8ed175c70cccbe951608 - docs/components/errorevent.md: - id: 85ad990558e2 - last_write_checksum: sha1:b5a4361d18eceeeb7238df66b32e53ce42aa9888 - pristine_git_object: fd68584a7de95958595c0463e26176397b63a479 - docs/components/erroreventtype.md: - id: c66a1a2560ef - last_write_checksum: sha1:75e5cd528e6faeee349e685da1810190643ae17d - pristine_git_object: b3410e67c37edd66f60b0f2364e0d858abe3bd88 - docs/components/event.md: - id: 4bd48e5ca177 - last_write_checksum: sha1:943311c8ce583f0b6395a3a71b3c2c8d3ca1d533 - pristine_git_object: 951557e29494624a811928ce287ea536a39d14c2 - docs/components/failedmodel.md: - id: 352428b99ca5 - last_write_checksum: sha1:92ead534bbde5d3029a41bcdae5d381d85ece301 - pristine_git_object: 01f5aaa2523583fb5c7d1f575a62f28f8c716760 - docs/components/fieldt.md: - id: 80d3b62a3bde - last_write_checksum: sha1:c9ed5fc7d8bb28083fa40f14788adeb694770c89 - pristine_git_object: 2589ece524306e237bbd57cb749e469856e5c1e2 - docs/components/file.md: - id: 6148b0bfb103 - last_write_checksum: sha1:6ed22bc8b67721e109d726be38bcfac96f0fd327 - pristine_git_object: d2a2e85810efa44f6870d4a06de5ed01d59f97ed - docs/components/filecitation.md: - id: e234751883c3 - last_write_checksum: sha1:4fb72c563ad7da362b188942bc2910e59a8518ee - pristine_git_object: f03ca158d04793c033ec7bbd629e2c453a94edff - docs/components/filecitationtype.md: - id: 41e6446acd3e - last_write_checksum: sha1:8cf5b7140dee926145642fe455df0538a8c95e53 - pristine_git_object: 787e2546ba435d92d0736bb1d4d6e212e0128ad7 - docs/components/filedeleteresponse.md: - id: 0fe19548775f - last_write_checksum: sha1:d889c371acdacb8ae1aa1e0ee20bef8f592ade22 - pristine_git_object: 04da1d71610c42c2225c2ca3707b1c8bc0520be7 - docs/components/filedeleteresponsetype.md: - id: b347190ca7f4 - last_write_checksum: sha1:7e9b2ded8643e7c4dbe2a633860188dbeedeea01 - pristine_git_object: ac0edebfe2e2699b264443c620d1cef047e572c5 - docs/components/filelistresponse.md: - id: b9d88cd4c0e1 - last_write_checksum: sha1:eb0f24dd3ded6f96256133a77622b91e5dcb283e - pristine_git_object: 2346d99debb688213acb2a17af75272ac7949688 - docs/components/filemetadata.md: - id: 8383f1928110 - last_write_checksum: sha1:23768b29ef2fa1152ce490ca08a9c02a24eb2223 - pristine_git_object: 19e14b3dedc2d2d167c0206290ef3ceeea718dc1 - docs/components/filemetadatatype.md: - id: 5ee442ed458a - last_write_checksum: sha1:2c89256b349b9c8c7b974dc71fa800e24fec89d7 - pristine_git_object: ca7fa8ca35f95843a6d0417467eac7b82f355f67 - docs/components/fileparserplugin.md: - id: 5f9fdad1c2b2 - last_write_checksum: sha1:27fcde21e502bc5014e94a324bf470c98acb4b99 - pristine_git_object: 6f72d585cf0b39f99832fa706b97de383d46fec9 - docs/components/fileparserpluginid.md: - id: 9c8bc71e8b09 - last_write_checksum: sha1:63680b47375eacbf235654cabe90c7f643fb9c35 - pristine_git_object: 094f3b3dec61e80e62232e8b670d66d645a041d4 - docs/components/filepath.md: - id: 6fc21505064a - last_write_checksum: sha1:87d59e2c0528cdd4eeb90a7585faf89ce6b1b5e4 - pristine_git_object: cc41f2d3c5a100880e59ff8417b1b01e75519890 - docs/components/filepathtype.md: - id: b9cccc74dfb3 - last_write_checksum: sha1:bfdc1ffdd6ad62790b1b902de7f1e6f1e81fbca6 - pristine_git_object: 8edc6ad003bcd068e3362ed1d4f658a756a01328 - docs/components/filesearchservertool.md: - id: 4a63087d0118 - last_write_checksum: sha1:3713c32b626ffd11e485e37d2d37b25e8feb12f8 - pristine_git_object: 0315adc688c60198e04b04c516e0d8ac69009900 - docs/components/filesearchservertoolvalue1.md: - id: bc1f3e9addd7 - last_write_checksum: sha1:d37518968240e5e99c3a8539489eb364c64c0c44 - pristine_git_object: 7f367fe902c643ad5a973deb76af02dc38647336 - docs/components/filesearchservertoolvalue2.md: - id: 087cdb1e4407 - last_write_checksum: sha1:bd9a21d7465dbfb696ec8c0d4d09ef7ee2d34143 - pristine_git_object: 9ad11d360b2d30f737b0560c61b321b748f04e63 - docs/components/filters.md: - id: bb43ec42351f - last_write_checksum: sha1:c982cec79f513d3c3836d401762a7b7131d307e2 - pristine_git_object: 89463d7dbf25d5d3cc6e1a7467cdc5f6bffdd513 - docs/components/filterstype.md: - id: 7a1c1e739033 - last_write_checksum: sha1:355e43e7bfb04a8119a571ead3b12904526669ac - pristine_git_object: 9dda683e8bedae58b8a21bebc362926b200e2126 - docs/components/filtersunion.md: - id: 3c6d0f38cff4 - last_write_checksum: sha1:620288ec601a850106f4c32100227dfb0cd04d1e - pristine_git_object: 6ae299b869ca32481b9dd115daba724809216f87 - docs/components/forbiddenresponseerrordata.md: - id: 2b182274133d - last_write_checksum: sha1:5905ebd01d68fd89d4b109895b76799ed95dbe24 - pristine_git_object: 37e2199b4865f7bc7bd7daa2ac5065133d51cd3c - docs/components/format_.md: - id: a1f82a6f0081 - last_write_checksum: sha1:a2868ca356a3322f9ab3b2122ecb1cde9e0436d6 - pristine_git_object: 96e07e7e317890e42522caddb5751f6988dfb112 - docs/components/formatenum.md: - id: a9b19c5518ff - last_write_checksum: sha1:59d36b41317eda9e9c3b054e6dbc2e555f39c2fa - pristine_git_object: bed999ac8af6e73a75012a8608ccf532a7d01169 - docs/components/formatgrammar.md: - id: 56dad240b6c3 - last_write_checksum: sha1:e4d95b6a414a3db953ed65edaf349628c18a1621 - pristine_git_object: 1077254507fff502cd57644a666e34fe564a4106 - docs/components/formatjsonobjectconfig.md: - id: 0cb152015017 - last_write_checksum: sha1:3e223b7d266045f2db2515cea9bc4fc9a836eca0 - pristine_git_object: 5b1c7eb54d8a9d396109030e9cdc04f2960b8fe3 - docs/components/formatjsonobjectconfigtype.md: - id: eee3beaba7a2 - last_write_checksum: sha1:318e4df1870ed93c8ad8677ff991ad7d4ea5a5cd - pristine_git_object: f95e5f5749d25c1564372fadde296cd3fb537b36 - docs/components/formatjsonschemaconfig.md: - id: 86caad7af281 - last_write_checksum: sha1:07692f66b93bc2e88ae48dfb705d7b10ab1bbe97 - pristine_git_object: 372f0a15c0e42328970f27ec028b38353ac31cd5 - docs/components/formatjsonschemaconfigtype.md: - id: 439973dacfcd - last_write_checksum: sha1:345a2c5fc424bf78d4f64f383dc093c38388d467 - pristine_git_object: 01324649b2e7b8884defc43431c6177a1e0d372b - docs/components/formats.md: - id: c761f516dad9 - last_write_checksum: sha1:54e6afc0e00ec99173c873796b9405b947cdc559 - pristine_git_object: 24d071e213966744d695d859d1dfb70eda47c560 - docs/components/formattext.md: - id: 0a1f9222d5bf - last_write_checksum: sha1:be86d45052064473ed516ec583e637c2027707c3 - pristine_git_object: 80dd1f8a2feeab11fe78a02cdfbd68fe8bfcf6c9 - docs/components/formattextconfig.md: - id: a79b2b3cbebc - last_write_checksum: sha1:f2c2bc3e4417f8299c61b87e5f817e805491227a - pristine_git_object: a37f8950d3ddf8320b21467f43b60f4f4719ea60 - docs/components/formattextconfigtype.md: - id: d81ed62bda6a - last_write_checksum: sha1:c806b9523a4109d4342d237d3fec2f9856594f5a - pristine_git_object: 5d831e0c8984838ae115cd74cc114f95fdfcdeaf - docs/components/formattypegrammar.md: - id: a6275e70cf35 - last_write_checksum: sha1:81c6de4becbbdb9e642c24d20976d4879592fcfa - pristine_git_object: cededf38a907fd264a938cdb941bc41182153b56 - docs/components/formattypetext.md: - id: 978549ce5d07 - last_write_checksum: sha1:caec39e3db4ac9be861e1d30d08e58e543220344 - pristine_git_object: 7d38cb838f31c6c6be5015fe284f22623ea120f7 - docs/components/frameimage.md: - id: ebc112d05933 - last_write_checksum: sha1:e65d5a74b177f6d9e11c7786c1e492f17d6567a4 - pristine_git_object: 9d97afed6794b71ca949550406fc8dcb70777588 - docs/components/frameimageimageurl.md: - id: f7f8b989e5cc - last_write_checksum: sha1:601f7bdfa4a294d4813b4757cbddd68a2ede75fb - pristine_git_object: d625c734e9d919fcf3e08c48cd851dc569b8f05a - docs/components/frameimagetype.md: - id: 5a90ea1e4cde - last_write_checksum: sha1:d78505a7ce5a303af6eb4fd6dbb98d9cb8893148 - pristine_git_object: 696f2e3d541778996e3228e9caca8d9b06d06dbf - docs/components/frametype.md: - id: 1b935b46e543 - last_write_checksum: sha1:8783b4abfd4eb3636c10f63970d052f8d68ded5f - pristine_git_object: 42690f69f107daa185fec7d36323bad56a51c266 - docs/components/functioncallargsdeltaevent.md: - id: 029525b7c073 - last_write_checksum: sha1:5c00a1ef2b1b3a7c474a4d7bce8cd099b30a68a1 - pristine_git_object: 02751bac36979d78e23fadb1f1ca5b0309ef6b38 - docs/components/functioncallargsdeltaeventtype.md: - id: f3f34894a1a4 - last_write_checksum: sha1:36466a5504f92ad63dbea7a289128918efbf8f7f - pristine_git_object: ecaf5b58a63e2b1d6f7034aeb39b5fd8930432d0 - docs/components/functioncallargsdoneevent.md: - id: 3a2081d69643 - last_write_checksum: sha1:e718ba7e7c1ee82212725064bc96e0c13c3772b0 - pristine_git_object: 1e19ee10fb40a907c871ac1ebb145d4b73e2ed86 - docs/components/functioncallargsdoneeventtype.md: - id: 0a537a121286 - last_write_checksum: sha1:ecd15044cea3777ff481256819feac67f7643566 - pristine_git_object: 3f4c91d5bbe63c375f8ba938bfa6b620355c82c3 - docs/components/functioncallitem.md: - id: 728446a82c6b - last_write_checksum: sha1:305e2150f29e5d112d0cb1393d992af191fe206f - pristine_git_object: 264caf51ad826572ceddc91ba4a3ed61a8a14a78 - docs/components/functioncallitemtype.md: - id: c7b1c1ec212b - last_write_checksum: sha1:995a373197e8ee246d7127595dfdd1c77a913dfe - pristine_git_object: 7640481023ffc48c27a7e7417451fecbc661c205 - docs/components/functioncalloutputitem.md: - id: 5bdb39338207 - last_write_checksum: sha1:055ae81522a43ce32bc2826944bbc0f71a19aac2 - pristine_git_object: 70980ff71ad1d40d3883760dd03e08e441cae5d0 - docs/components/functioncalloutputitemdetail.md: - id: 2cb02374b48c - last_write_checksum: sha1:f6dd8efe5930ce437012cc96a61f0b7db0483a91 - pristine_git_object: 110493d3ee8ba69d0eaaa462e3b33151253f86c9 - docs/components/functioncalloutputitemoutputinputimage.md: - id: 9570df9b26d2 - last_write_checksum: sha1:67e5c38e6c836a97ad000cd964d11c506798dc55 - pristine_git_object: bc92a71bab1c01f60ca7934ede4fb6b88c0e60a8 - docs/components/functioncalloutputitemoutputunion1.md: - id: f029cb33f764 - last_write_checksum: sha1:46f8e24dfc769f4df47be4cc6b411879f68d51dc - pristine_git_object: 11055d5492955153e6be80801a6666d37f1f7c90 - docs/components/functioncalloutputitemoutputunion2.md: - id: 1737d9834676 - last_write_checksum: sha1:edde5e34d278f6fc8068d42e94e42d4fdad355e2 - pristine_git_object: a91fd7c0fd6924e7c7870c94d40753f552fc6c04 - docs/components/functioncalloutputitemstatus.md: - id: 153450590b13 - last_write_checksum: sha1:0cdf893ee7a70253229b92fd906df2e9b179047e - pristine_git_object: 46b4b6b4fd4063952ba22957347c34dd8fa5eb49 - docs/components/functioncalloutputitemtypefunctioncalloutput.md: - id: 88a512c5f9ce - last_write_checksum: sha1:611201e2dbd2c8fe1c501b5365bc06367bc5370c - pristine_git_object: 2f4629220306ced5674a9ef70dbcbce1f908b93a - docs/components/functioncalloutputitemtypeinputimage.md: - id: 543fcbf66e1d - last_write_checksum: sha1:9f50972404864a7c4686908509d318dde68651cd - pristine_git_object: 0bf236695ac6d09e19cb2ca87f83bb34a0113aef - docs/components/fusionanalysisresult.md: - id: 8c86ee99328a - last_write_checksum: sha1:2a166476b05f68c04e6fb4949f27a962943f1cdc - pristine_git_object: 53b057d410c3f7490e0da572a57b07db911391ed - docs/components/fusioncallanalysiscompletedevent.md: - id: 5b7a4d83d4e0 - last_write_checksum: sha1:bd617220cf760bf81c01a18adb78d10372ddf4f2 - pristine_git_object: 8eb755e30bf34cca76c6315ebd591347a0dd4331 - docs/components/fusioncallanalysiscompletedeventtype.md: - id: 2b0435cf2967 - last_write_checksum: sha1:0241b666501b6046cf3321c6e62bd2c2ad1d9969 - pristine_git_object: 62106911a72fe5f9073664beefc122107092c047 - docs/components/fusioncallanalysisinprogressevent.md: - id: 0550b58a7e71 - last_write_checksum: sha1:78729ef0b7372c67a30d022d735d8632e1fba58f - pristine_git_object: aaeecf4137a284543e5c2adfed54c9d293e9c754 - docs/components/fusioncallanalysisinprogresseventtype.md: - id: 55fc502d3f1b - last_write_checksum: sha1:e4416f12218da7f6e92d673debb751cd8ad77b80 - pristine_git_object: f5c21afc5cb3677c5cd687488117aa7ba5cb65fa - docs/components/fusioncallcompletedevent.md: - id: cf22fb075b16 - last_write_checksum: sha1:1e30eb4648e216a062f218fd3885fd5518921520 - pristine_git_object: 6dbeb8bc626a7822828750991bba4bd10a2fb98d - docs/components/fusioncallcompletedeventtype.md: - id: 8a0e4946fdae - last_write_checksum: sha1:fb3ef6a1c064c753ab6ab6556c820602a6e2cf88 - pristine_git_object: dbbe741801b75bca7de8d06343a1a634758b9203 - docs/components/fusioncallinprogressevent.md: - id: 9baa590f99b2 - last_write_checksum: sha1:ce4879cc7b5f64faded639ec0eb0bde916ec3c69 - pristine_git_object: d6396b2dcdbee534f9515c27404addaea1012def - docs/components/fusioncallinprogresseventtype.md: - id: b4c5a955b632 - last_write_checksum: sha1:dab95c6a1b23bfdcad72d7719f5b2bc537ffe695 - pristine_git_object: 5df508e6604b9c2e73a07935d72c73b7e50bceea - docs/components/fusioncallpaneladdedevent.md: - id: 8239222fc899 - last_write_checksum: sha1:99563629a6779204ffe74de0414028e91b44a496 - pristine_git_object: dc1a92a698bd534179e7c57a2ebebe285e208703 - docs/components/fusioncallpaneladdedeventtype.md: - id: 33dd6036fa92 - last_write_checksum: sha1:ee2b9f1dce5c427af965aff39f427c56d75857a8 - pristine_git_object: c0cdad85e349e97ba6539949d42ae1ebeba4baa3 - docs/components/fusioncallpanelcompletedevent.md: - id: 200b419a678b - last_write_checksum: sha1:a03b9876673503bd862d682e5c8812de38c79736 - pristine_git_object: a30e56268babe44c68bd08fafb999f79b876919a - docs/components/fusioncallpanelcompletedeventtype.md: - id: ddcf55c427d4 - last_write_checksum: sha1:ee2875ea36681b9f87422a412a55640dfb2b7cfb - pristine_git_object: 9d8eb7d80104ac2a896ffd585933d2702ef7eeb4 - docs/components/fusioncallpaneldeltaevent.md: - id: 73f8d7888706 - last_write_checksum: sha1:13928ef29e3239f778988938918dd695b7f687fe - pristine_git_object: d890c8ff75166aeeaa7c294395219d70f61a7a54 - docs/components/fusioncallpaneldeltaeventtype.md: - id: 5ee73664dfb6 - last_write_checksum: sha1:7192854ec113f5b4da058bee896e1c00b14b7b7d - pristine_git_object: dc3e2d9f3238464086cdc4efb9d2468ac487465a - docs/components/fusioncallpanelfailedevent.md: - id: 96daaa50cfec - last_write_checksum: sha1:c3971988e20c318c9446e0fc666e8232d566c07e - pristine_git_object: 1c1a14da28ce6aef8e986136393858a1f80191f5 - docs/components/fusioncallpanelfailedeventtype.md: - id: 4afbcf43cf7e - last_write_checksum: sha1:ad578b2955f5df25be2cc4997ccd099eda9c2ea9 - pristine_git_object: 1ba418075f3c76be85aa03ba96d7768faaadd489 - docs/components/fusioncallpanelreasoningdeltaevent.md: - id: d37f7d4f3e82 - last_write_checksum: sha1:70d4179cdb0344c90d2029d56b5ce1b3125e5482 - pristine_git_object: 09cfca812ff624c2b6dcd765cc1aa47e8db905c8 - docs/components/fusioncallpanelreasoningdeltaeventtype.md: - id: e77150716d35 - last_write_checksum: sha1:a20cc76c99f6085708c8b55531839073e1f1df85 - pristine_git_object: a25e9ac103e67f0c8ec9f3026619be4e98c39e32 - docs/components/fusionplugin.md: - id: a8f51a52a342 - last_write_checksum: sha1:f08846e4a17e516b76d2d9d444d651d85b7242c4 - pristine_git_object: cba78bf21100a55f17809c0c9cd346a6842e665d - docs/components/fusionpluginid.md: - id: 4e5b1c34b883 - last_write_checksum: sha1:111b144dc73f68ccc99f40d23de78fd47126b323 - pristine_git_object: b3de5efcf0d7dad28e612d41b523ce26bf0de245 - docs/components/fusionplugintool.md: - id: f4728cca243c - last_write_checksum: sha1:5afcf82da033e264ea0c0f23be39dd329edc7397 - pristine_git_object: 6e9d365f8f2f48bd6e425c4bc196d5572b5c9828 - docs/components/fusionservertoolconfig.md: - id: bc9b9f7ae08b - last_write_checksum: sha1:f50ee0787ba40078c29904a0c97f917e58abf6c0 - pristine_git_object: 6140333143c3a5aeb6dd45e26c5f2b0bcf508c2e - docs/components/fusionservertoolconfigeffort.md: - id: 897b52512b1c - last_write_checksum: sha1:2bb8798736eeb5504615ae93293601042af679cd - pristine_git_object: 3e3f9ac35f973801cf9cc5be1ac29e9916074377 - docs/components/fusionservertoolconfigreasoning.md: - id: 349d14075b51 - last_write_checksum: sha1:9c650a736d7b96f193e6d24da5e82b7aa24ba39e - pristine_git_object: ec0db8d390b9f00eec0c100ac61b73d1c101b289 - docs/components/fusionservertoolconfigtool.md: - id: e36dcb42d4eb - last_write_checksum: sha1:68b2cbc4451e083ae2cd07587498bfc14598cf5a - pristine_git_object: 6e75f5b19f8c7a68d3eb50a2d0cf0c1f668be262 - docs/components/fusionservertoolopenrouter.md: - id: 8862a760f37d - last_write_checksum: sha1:c419e86213da1be43c98705c826b344894f583cc - pristine_git_object: 7373389f8fd797c77ead1056462dfe1f75a4f56e - docs/components/fusionservertoolopenroutertype.md: - id: 58ee513b0cad - last_write_checksum: sha1:2ec57cd7447b8eecdbe6fec744c22edb3a817999 - pristine_git_object: c7121728c6509e3d02a0b431431f133067ca057d - docs/components/fusionsource.md: - id: 8e98a9da51e2 - last_write_checksum: sha1:3e0611061189a883bfd2c1fad738798debb71e9a - pristine_git_object: 59ff3c09fff96145b369a5fe5165618810fa1076 - docs/components/generationcontentdata.md: - id: 1085c488fd3a - last_write_checksum: sha1:186d3e8118f6d393d524a91e2ac06772a7eaf818 - pristine_git_object: 8bad571af50a9bc78e4ccc4b3f1d1911aac8c3b4 - docs/components/generationcontentdataoutput.md: - id: e4651dfa179c - last_write_checksum: sha1:3cedede3c273cc7bdd2971e7cd252f487729770b - pristine_git_object: 6847cf3f3a47d2911badcc90a5723a96f22f106d - docs/components/generationcontentresponse.md: - id: b2bded35fce6 - last_write_checksum: sha1:4f347840c969a60a734230601882eb01b4d64aaf - pristine_git_object: fb8acc9bc1fcee02384155f50ab24ac160d35af6 - docs/components/generationresponse.md: - id: ba81b6e0c164 - last_write_checksum: sha1:e7362ecc7f743d516fbb13fb0045739cb6e33eec - pristine_git_object: 20c523d806b2dae5c3c425f2020a5e5ab6079774 - docs/components/generationresponsedata.md: - id: 1059d258bbf8 - last_write_checksum: sha1:34b65674cc84376d4019c145dd268e0c07febe2b - pristine_git_object: adfce3816bd7be4cf1f5eea4c4542cb56a0a08b0 - docs/components/getbyokkeyresponse.md: - id: c07fd08fb110 - last_write_checksum: sha1:9b19d2ed29c6fd4784ae04f15f3db9f2ce9c0da6 - pristine_git_object: 14fa3aed58f927ad4e2a3597543bdbedf68ced17 - docs/components/getguardrailresponse.md: - id: eac79c96805c - last_write_checksum: sha1:a5792b6249490092c478f0199380daf6ef485367 - pristine_git_object: 41f44a1990323a2dd358b674c4d7e7964925b06a - docs/components/getobservabilitydestinationresponse.md: - id: 3e7a05d3c27a - last_write_checksum: sha1:c53f2f769d9b31fdb8e21b57048d561ab7bd2fe1 - pristine_git_object: 839f8079d681be608c2d2b46768ca55280541588 - docs/components/getpresetresponse.md: - id: adb3d7caca1d - last_write_checksum: sha1:d2bf386f2ae89de89839d2368126e9cd0e196bea - pristine_git_object: 370f2ad11a292a3c49622677cacb48e759646742 - docs/components/getpresetversionresponse.md: - id: 20be9010ec38 - last_write_checksum: sha1:6c94d80df6e0364dba08997953820b1951742554 - pristine_git_object: ec593457949b8fdca5b6ff511ed59c0913e9398f - docs/components/getworkspaceresponse.md: - id: b65ac2b42215 - last_write_checksum: sha1:f4bd96439e0ae998bb2712b603f3a94638e398ff - pristine_git_object: 96104ecd0f4117d4004ba5b2f7c488988ca40f2a - docs/components/group.md: - id: fc829526a4e3 - last_write_checksum: sha1:cf17cb7f4935d2c4190eff29c8e4df89297360a8 - pristine_git_object: 77588dd2feeb0c67a8b63bc64bc4f3a441aa0d08 - docs/components/guardrail.md: - id: ce84902d4cc2 - last_write_checksum: sha1:703d808359a8ee2aeb67ec7896072310213c8bf1 - pristine_git_object: cd9c5b1ff0ced7e4d5a0514d215256a8a95d33d4 - docs/components/guardrailinterval.md: - id: 79efeedcb880 - last_write_checksum: sha1:3c071c14943c7b26474847eee46925ae884a8a6b - pristine_git_object: fb07147177ab7ffc9d291d2ab17bcf4f32d96d89 - docs/components/ignore.md: - id: 854b9623c0dd - last_write_checksum: sha1:7382df94bafcb659bed252f3f3e45fa23ccb430e - pristine_git_object: 5f7870871ac61bf7e1a1f6d4998a7353518f3bbb - docs/components/imageconfig.md: - id: 0b156eedfb3c - last_write_checksum: sha1:09e8882a3b53c99f85610eaddf2cb8ab788527d4 - pristine_git_object: ae78526d566a4cc55996515044cebeb36166f7fe - docs/components/imageendpoint.md: - id: 128d4f4eda2b - last_write_checksum: sha1:775911a83810fc45a4107c5c1cf6e2677ec23788 - pristine_git_object: d062f647fd27433d0a106eafc0ea17553a468fd8 - docs/components/imagegencallcompletedevent.md: - id: c26bc1b3854e - last_write_checksum: sha1:487f2664906ce2bf995e5f33739ea14944d4a20b - pristine_git_object: 3c63b103fbe070c5c901a3d99d1b864e344255f2 - docs/components/imagegencallcompletedeventtype.md: - id: a74ad0e7b9ae - last_write_checksum: sha1:3cc41a971955015c2fdfb46f303ae6882b450b3e - pristine_git_object: de12c9ae201cb4226a48f20f9c19e528bb8089cd - docs/components/imagegencallgeneratingevent.md: - id: d24140b27e2d - last_write_checksum: sha1:a366aafcc5e7c278fd252ec2ba4585b7d2b589ea - pristine_git_object: f22ecf7e8d7bc563ab49a554f08555ff0a0a61a5 - docs/components/imagegencallgeneratingeventtype.md: - id: b929dcb09058 - last_write_checksum: sha1:03fed8821dd92b8c233e48725562ef2eec92b34e - pristine_git_object: 620ac466453fb5b61f2bb0f3ba4881c538418830 - docs/components/imagegencallinprogressevent.md: - id: ee60aae70dd9 - last_write_checksum: sha1:561f3a9452f4127979615db84078dc87e78b0828 - pristine_git_object: 463bb94421491851e756c463c9148ad08a0f185e - docs/components/imagegencallinprogresseventtype.md: - id: 51942aa68303 - last_write_checksum: sha1:57cbecd6dd9f7a5bedf779ac06fdecd4cc8fea50 - pristine_git_object: 407c29cdf87ad5ddc32e64d3f68c3785161157a0 - docs/components/imagegencallpartialimageevent.md: - id: 3845104b6af7 - last_write_checksum: sha1:ef10048a6590b53dbaed284d1a4f56e167647879 - pristine_git_object: 41f52c3eb3d170146d3d1646b9a2a4602b70f1ff - docs/components/imagegencallpartialimageeventtype.md: - id: c007465f6177 - last_write_checksum: sha1:c14e2e12eb49cf4445fdda2e2f400a8ea849d058 - pristine_git_object: 841d9210013aa9eac24702237c16d0aca12a985f - docs/components/imagegencompletedevent.md: - id: 43f5718fe2c2 - last_write_checksum: sha1:c69ebcd923faf4b7831c70ca19a62992006804c4 - pristine_git_object: 683545f58a32d3174edc2548652516d446f31cfb - docs/components/imagegencompletedeventtype.md: - id: 84e07b20590e - last_write_checksum: sha1:2c301f011ef720a3d8c561c8823bcfb982934d16 - pristine_git_object: a55fc00acede523cca610d646093deddf558b168 - docs/components/imagegenerationrequest.md: - id: e9d8e330fcaa - last_write_checksum: sha1:f0bb2b63837fb668c14bac8f504d656aac257d5a - pristine_git_object: 4b35a0e9546566dff24eb12c7c8b6a173de63b0c - docs/components/imagegenerationrequestaspectratio.md: - id: 4362d9221e46 - last_write_checksum: sha1:42f4b0d20c677cb8eeed1da4be0ba99b3949a092 - pristine_git_object: 5fd5856c0c84516b9cafb31efc69c9dffde3cd6d - docs/components/imagegenerationrequestbackground.md: - id: c71873b68e38 - last_write_checksum: sha1:d19360cc58475f3df142bbdf4e0cc05b2e402f8d - pristine_git_object: e6a05256245f0e61a844854a79e3df7b614660e7 - docs/components/imagegenerationrequestoptions.md: - id: c0b61720c268 - last_write_checksum: sha1:f9b967e71b8ecc7f3aeb97556d27e00bc09feacc - pristine_git_object: c8182577e9d32346d37eaf1c0a6e3dde7e5329d7 - docs/components/imagegenerationrequestoutputformat.md: - id: e2b7dc215866 - last_write_checksum: sha1:bbed0fcaa1458a6d761ae64bd4f6b54a583a801f - pristine_git_object: 5fb8cd251197d2bab3f86ab91e6e7f2bbe81d9e5 - docs/components/imagegenerationrequestprovider.md: - id: 2718a263ac9d - last_write_checksum: sha1:cd79a69707ee0a6040570128b20dc122f9561c37 - pristine_git_object: b61121191366b1bc3021939e983e136588a2ecf8 - docs/components/imagegenerationrequestquality.md: - id: 1c832458c677 - last_write_checksum: sha1:cb4331f66f1295a6b046c4575e443b9ca84d6939 - pristine_git_object: 4e7aef948aa95a900e52687840862e48882de964 - docs/components/imagegenerationrequestresolution.md: - id: d1e0d8c6d7ca - last_write_checksum: sha1:3459b30c68397ab41b467b9c933df24b8922c917 - pristine_git_object: 6da119988a6c4ed655b1ba1698a8e77dc6a3014a - docs/components/imagegenerationresponse.md: - id: ad79bc29b985 - last_write_checksum: sha1:adb46b786be5d9b720945c8cb714fd661a86d629 - pristine_git_object: a921a4c4cd5f75c926ba03263469315a14537160 - docs/components/imagegenerationresponsedata.md: - id: 6a33b08924d8 - last_write_checksum: sha1:e6df003afd8f77d5e98b6720c825818c229d4cee - pristine_git_object: bd99f56bb2c6f10a7f26e49dc81bf00a6436fe99 - docs/components/imagegenerationservertool.md: - id: 0ddff7f46134 - last_write_checksum: sha1:02ee9876107578bd27eb9ba811439416b9e76a63 - pristine_git_object: f8fc06e67da93583c9faf5a5e6e5042064c5c2c3 - docs/components/imagegenerationservertoolbackground.md: - id: e9f2d4d3c83a - last_write_checksum: sha1:4c13d167e30bd2452b0945864c06a4d29eed747f - pristine_git_object: 0e17cf5b4827e7a189c3b3ca6d11f778a870b648 - docs/components/imagegenerationservertoolconfig.md: - id: 4086d42eed1b - last_write_checksum: sha1:4be4af2bb484ca26d779f052da6a645dcb4d912c - pristine_git_object: d1bc3aceee221331b9f45bd00bbd8d0ea75a4a73 - docs/components/imagegenerationservertoolconfigunion.md: - id: 7ba56d56f6bc - last_write_checksum: sha1:99eb92cf87c2e68e8db530d3ebdaaff6be117587 - pristine_git_object: b9319d587cbf5118b4b12874b67a4a86ec4d1b16 - docs/components/imagegenerationservertoolopenrouter.md: - id: c5bf0021441a - last_write_checksum: sha1:01a0ffcf8d7d3c806c1135e73ed4926ca5d05dc9 - pristine_git_object: dce650cbf584a1798754d1610898a9432b544d28 - docs/components/imagegenerationservertoolopenroutertype.md: - id: 420c811d4561 - last_write_checksum: sha1:6b8ce48b3e662ea3bfd8a9be737e43cd1b051e39 - pristine_git_object: 30c86424343ade04282d92095ea92ebf6635ac81 - docs/components/imagegenerationservertooloutputformat.md: - id: d7955b88c967 - last_write_checksum: sha1:2478be8f2137bfc7e30dbe5a6a85b57afa2755f9 - pristine_git_object: a020209bb1b86f2ad5d8820bcdf792c2e6a6e56c - docs/components/imagegenerationservertoolquality.md: - id: b8b7bc3e3b90 - last_write_checksum: sha1:63f903c60036f9c9a3edbcd830bd57c55328ceeb - pristine_git_object: 75a4cf8af255afbdad2a25e9291e3afaf880d235 - docs/components/imagegenerationservertooltype.md: - id: 5d4b6d6b41ce - last_write_checksum: sha1:125bdc6395723e8fcdd82be5d88e04916b8641fd - pristine_git_object: 4f8136cbf9a30375a867d359430e0385badbf088 - docs/components/imagegenerationstatus.md: - id: 20f9a63cfff4 - last_write_checksum: sha1:999c6f63846a5521309becac23012ed04d18f9eb - pristine_git_object: 22e0541cab57771537bd791307029b628e7151ec - docs/components/imagegenerationusage.md: - id: cc38c041200d - last_write_checksum: sha1:9987bcb7e94ecd6bbe04bcfd6c12313ccbb7ec81 - pristine_git_object: 3e69647aa497f0b7d030d6cde11782c1b0d20a38 - docs/components/imagegenerationusagecompletiontokensdetails.md: - id: 6a9505656f3e - last_write_checksum: sha1:3a8ab71ac995be890cd743b4414d964340423719 - pristine_git_object: b11137adab9011a40f4a5df6f340af6137b283a0 - docs/components/imagegenerationusageprompttokensdetails.md: - id: b3e9b815a8d9 - last_write_checksum: sha1:86c40da9dcd83869181810175843195be4dc264c - pristine_git_object: bc851c33c247b050c60d463c1c8331be6510e7fa - docs/components/imagegenpartialimageevent.md: - id: 7cb3bb2545b0 - last_write_checksum: sha1:cc556150e26bd4466e955c0e71e9b21273f396b0 - pristine_git_object: 4ae2746c47459dab9adb9bfa949a4bb8b4fc58c7 - docs/components/imagegenpartialimageeventtype.md: - id: 96f18837a787 - last_write_checksum: sha1:4ec9ffdbd40cafee34f51514e57c2fbc02348970 - pristine_git_object: 874960df1e1e77d552ec0c400f4802ef2492ead3 - docs/components/imagegenstreamerrorevent.md: - id: 7f87611c8219 - last_write_checksum: sha1:b80d7feb4f647b58d24637f811717a9f2cb4da49 - pristine_git_object: 25fa3a5e9bc19b2c7f034b0097434e48e4d6a21e - docs/components/imagegenstreamerroreventerror.md: - id: f563003ebf93 - last_write_checksum: sha1:738e09a08778523ee61551fc92dba743e5188512 - pristine_git_object: 05a27840bf348b3b6faa675330c8374272e83089 - docs/components/imagegenstreamerroreventtype.md: - id: 0960d2a494df - last_write_checksum: sha1:029b8554dac0fe80200b521707d848102b887a12 - pristine_git_object: 0d7e98938d1d3955a470eb109413d03b2319da40 - docs/components/imagemodelarchitecture.md: - id: 664721f94572 - last_write_checksum: sha1:b4755ec3785f84b9292c004bb4502eedbac95416 - pristine_git_object: 4c9d858d399c4b690e0ae62268bb93868b204fc3 - docs/components/imagemodelendpointsresponse.md: - id: 29ef44f50783 - last_write_checksum: sha1:bff6a52c9ef77f4ba2287d7682287e796cb059fd - pristine_git_object: c10719481269bc587d7116bb9d0e7edad72a657c - docs/components/imagemodellistitem.md: - id: 32a773c24ad0 - last_write_checksum: sha1:57ba7d06ca6f0a4aeb770bf0057dce5914e19672 - pristine_git_object: 0402259ab80680643074eda229d5d06b7b0cdcd6 - docs/components/imagemodelslistresponse.md: - id: aebec95b3fdb - last_write_checksum: sha1:f45a3bde3fb4753553bd652ea13b39b385b3c1d3 - pristine_git_object: 02cf2f7805c226f04a7137b6a7a5d2172cbcdfdc - docs/components/imageoutputmodality.md: - id: c88658d6160a - last_write_checksum: sha1:6f11a36268e2b1910e5d3f62244a71638b6a4345 - pristine_git_object: 0cd471e8af6f05e30fe6ada9ea442f38e710630e - docs/components/imagepricingentry.md: - id: ffea76db0419 - last_write_checksum: sha1:8ac8f6a3131bf6ef1804ebacca11103bba4905d2 - pristine_git_object: 638fcc2a0bed2741bdbaf8472cf6e127dbe21028 - docs/components/imagestreamingresponse.md: - id: b50cb74438a9 - last_write_checksum: sha1:0bd7f6e18c2e7f51db16b38982320bf915ef23df - pristine_git_object: fc57cc2c190c12caa1ca878c9545d00a67c72ca7 - docs/components/imagestreamingresponsedata.md: - id: c072b0eb2c02 - last_write_checksum: sha1:a3e05c53987d0149bdf23251f29f1b433008b818 - pristine_git_object: 78dab52333e65bcadb03fe4d69d176f3259e4561 - docs/components/incompletedetails.md: - id: 4ce388faaac0 - last_write_checksum: sha1:3aad9a98e1bb15a540b9f8307a1c9524432e7959 - pristine_git_object: 1e12f5f39649bbc28907eb579d26b1dedcd634d9 - docs/components/input1.md: - id: 8f1c3029546b - last_write_checksum: sha1:d663edec52736ced26235eef64a7cad9e2d9f321 - pristine_git_object: a6a125b4880fdc36a4a48a71d81d1d85a81390f5 - docs/components/input2.md: - id: 950f7afb714f - last_write_checksum: sha1:0f7308af83357715e138b0027cd723278d28b256 - pristine_git_object: 18930bf394330c4853277ad0d38622adfcef1229 - docs/components/inputaudio.md: - id: 3bad9d0f3bfb - last_write_checksum: sha1:911ae8d63fb5a0fd4b27d922aa2547cc6e973523 - pristine_git_object: c02836b58a4d4ab93cbd9a35c36d27f334ef405a - docs/components/inputaudioinputaudio.md: - id: f60668aee68e - last_write_checksum: sha1:e9790189c0a3a2b8da358be89ee7f1f7586a70d5 - pristine_git_object: 6d5b50a99994d37b047abb6e1174cb0d43bdf3ab - docs/components/inputaudiotype.md: - id: 2a37b5504461 - last_write_checksum: sha1:e1b72ab7561db1859a957f92514258163a207d03 - pristine_git_object: e30ce1f2f857dcfe90b5312c210c9eff895e4886 - docs/components/inputfidelity.md: - id: 1087f3ef629c - last_write_checksum: sha1:d3da992f449d7864308543468937167d2884022e - pristine_git_object: e89ae0570c5bca8f4e633d7914cd6c98f9799c66 - docs/components/inputfile.md: - id: 3a1680eda22e - last_write_checksum: sha1:d0acd952ab08dd42dd99a7d27f2cdf0cc6d91f63 - pristine_git_object: c53489e2e5373c9178b87586e4f1bea5a0bd1d88 - docs/components/inputfiletype.md: - id: 57d39465e429 - last_write_checksum: sha1:1d94b6bf420854cb5e0162391fe5465cf8650b2e - pristine_git_object: 801a1474178b676683782b4e4672a8ddf9f493f0 - docs/components/inputimage.md: - id: b1754e9aa099 - last_write_checksum: sha1:190336624dd840a0d84fea1306786060e9356fbb - pristine_git_object: cfe6e3e41c8ac75a7f00d1a316153d6e7eec587b - docs/components/inputimagedetail.md: - id: 582114ff5e40 - last_write_checksum: sha1:ff65ae99531f467abea6eee220d81819a4cea473 - pristine_git_object: 53e9e69e72a640f83938080aeb4a8a230731313c - docs/components/inputimagemask.md: - id: 014a4ddc9ad5 - last_write_checksum: sha1:7ff0dcc8b47b7cccff30255b13d2f4b585e6919c - pristine_git_object: 4d706bed030726f9c15f37a426d6c66c4a186c05 - docs/components/inputimagetype.md: - id: 2c928cbad52d - last_write_checksum: sha1:3f986842d8fd5fb4aeced61a2e4e896f41b7ac76 - pristine_git_object: 75b828e8fba8d581e1631636b8085053324aff0c - docs/components/inputmessageitem.md: - id: bb421a6ae354 - last_write_checksum: sha1:fcb7fb6853f06f80c3cfae7df8c64ebe671f2b12 - pristine_git_object: b46d160554cf4cbb18d57d2bad9f79c1f7c94e6d - docs/components/inputmessageitemcontentinputimage.md: - id: 70760d9b88c0 - last_write_checksum: sha1:daf5093e17f232d4de16fe5a408bfe83c552d00c - pristine_git_object: ddecd697f62414bfc9936cfb8d309f5a658bf9fa - docs/components/inputmessageitemcontentunion.md: - id: 4dd45b0284ef - last_write_checksum: sha1:64419cd96a6d964d9bfe20b93055b904e5413ded - pristine_git_object: 39a5d724f55933275a35c44457a7482c049d9e18 - docs/components/inputmessageitemdetail.md: - id: 66296c9a1130 - last_write_checksum: sha1:15df515837fa341b102965c1b8d3dff2d0e154aa - pristine_git_object: d1a50afa15eb7ac7c9faf7171b34e2a011b5e173 - docs/components/inputmessageitemroledeveloper.md: - id: b5ea7f626a52 - last_write_checksum: sha1:42799b848928abc8f7bb0cc45b938455185b71e7 - pristine_git_object: af27ecd86bff337d214dded9c4dc6aee9b10c918 - docs/components/inputmessageitemrolesystem.md: - id: b455984ef53b - last_write_checksum: sha1:78e155484c35194713b7e087ce30e39ef4aa8e93 - pristine_git_object: 269cc21c5be70fe452b993eebf2ea6592e7fabaf - docs/components/inputmessageitemroleunion.md: - id: 7867f828233b - last_write_checksum: sha1:a9d10d93b9c8cd93d07ab7e76453a86c9e011bd2 - pristine_git_object: 30281f667cff516e10138072e42a9370e795811e - docs/components/inputmessageitemroleuser.md: - id: e4d0a822ece5 - last_write_checksum: sha1:8ffea2a7d44e93388b0e1a3479172275ab563674 - pristine_git_object: 19f763241ce5220068564d2fa911f92418c6e50a - docs/components/inputmessageitemtypeinputimage.md: - id: e797722ddb03 - last_write_checksum: sha1:2bd6756f814a1b2f7d046262f4b57c7b8c9b422f - pristine_git_object: f0ed7e8d295765b452944dac88fcd1fad7c6dc17 - docs/components/inputmessageitemtypemessage.md: - id: 0436b12c1362 - last_write_checksum: sha1:4b69cbaafeba5995449e82c1251950aec92df46b - pristine_git_object: 0067fb5a43ef95cbd0668a352796fca20775a912 - docs/components/inputmodality.md: - id: 375f3c4c080b - last_write_checksum: sha1:ad0e655fe0df9024e77ae3a38e661b9334df4038 - pristine_git_object: 89bdc2a7f9ee3a48b82c74784f1e4f9e92ede8ae - docs/components/inputreference.md: - id: 4eb4f5d578b4 - last_write_checksum: sha1:a943967aa59f83948c9bb16c9355ec8658a59087 - pristine_git_object: 05a7762de9c81c85b752d59106ad27612b26a0b4 - docs/components/inputschema.md: - id: c81747846fc7 - last_write_checksum: sha1:32cd93061ec2ed84b683062279196534fc738777 - pristine_git_object: 6f0a4143dbf2295985c2cde0ef898fbdae2764dd - docs/components/inputscontent1.md: - id: d52cc340ee2c - last_write_checksum: sha1:3e4174c983a5d960128277273803e49d756775d0 - pristine_git_object: f5c901ca339e9717e70f32f01272344f000d4115 - docs/components/inputscontent2.md: - id: dc0736cbbf99 - last_write_checksum: sha1:ff08bc1cde46e84a744d200629cfc665ba5ebeaa - pristine_git_object: 709bf3192502fa94aca1fde8215ffd2a37cc9198 - docs/components/inputsmessage.md: - id: 0e40015668d3 - last_write_checksum: sha1:0b70f907021e023a752b54a4790317182b88b17a - pristine_git_object: c877c12a1f97249a6d200d501eb624eb14f19563 - docs/components/inputsphasecommentary.md: - id: 9cc8146c29b5 - last_write_checksum: sha1:d44cdba85419f8611b4c79f2224be891c8dbd532 - pristine_git_object: e2a50cc9f83ad02c19215729642047cbd8e2fdc2 - docs/components/inputsphasefinalanswer.md: - id: d81f0a021950 - last_write_checksum: sha1:26c66f68ec5de53712c3d6a348cd2a159f784da5 - pristine_git_object: 813f34cbb6340aaaa5ba5f0eec487b21d003aa73 - docs/components/inputsphaseunion.md: - id: 701c7007c43f - last_write_checksum: sha1:01db82bdae5561df16d38e251fe2fe8125a3148b - pristine_git_object: 8a1a58aab6b1819a1261787a613bca096bb20ef8 - docs/components/inputsreasoning.md: - id: ab39ad335ef0 - last_write_checksum: sha1:bc111d320a72e69202054a799a2346617c9c0179 - pristine_git_object: d5842a9778e75c8e0660fb33286a99faca2f98ec - docs/components/inputsrole.md: - id: 94a7950b131d - last_write_checksum: sha1:d0df3609fd57ec61d9bde5cd2538ec462a3cd654 - pristine_git_object: 32122175f04d4bcb126f37b10cca3cbfc5fca3c7 - docs/components/inputsstatuscompleted1.md: - id: 36f2138f068f - last_write_checksum: sha1:720715e983f7676004c7478c842b027e9ec9cbd0 - pristine_git_object: 5862d8e18c1ae30d0d965ed86c855bf3289022c8 - docs/components/inputsstatuscompleted2.md: - id: 93adf4fdab40 - last_write_checksum: sha1:7ed56974f3cff07070e2fe4337814a68063bf45e - pristine_git_object: a07c2f65f49b4d7d3e6872140900eece8d188d63 - docs/components/inputsstatusincomplete1.md: - id: 735939d076c0 - last_write_checksum: sha1:cba77aec0c5dbd0fe9c12fb4dd0f49b7b4df91c9 - pristine_git_object: 3837df3a8bc1b189b45f74f0eab4aba57310cd9d - docs/components/inputsstatusincomplete2.md: - id: 12a3211df3f8 - last_write_checksum: sha1:dc8608363049ffad64fa23265957a93a8cdc181e - pristine_git_object: aba2e584245805266c57f5cef8884d2b57b6f6bf - docs/components/inputsstatusinprogress1.md: - id: 2c5f05df8d58 - last_write_checksum: sha1:fc5a666e9141f0b0812befffb1f678d7fe5c85c0 - pristine_git_object: 8d1328b930fe6cb8e00d2a42f1921853a8327e45 - docs/components/inputsstatusinprogress2.md: - id: 916087479cf9 - last_write_checksum: sha1:059769fdc810a93c50dd1ab9fb8f32141ee9f5f0 - pristine_git_object: 65cae77f8608f8c8106ed0343e36695e9c713cc6 - docs/components/inputsstatusunion1.md: - id: b10ed37973a8 - last_write_checksum: sha1:b676bd8f48fae807c6c9fbe876e0d0dcb138e789 - pristine_git_object: 233d4105a20743daa18490d7db3a50397beb3e3b - docs/components/inputsstatusunion2.md: - id: b77e7b47bfa8 - last_write_checksum: sha1:5292e7642249f595de569eeac0b61a777f62b6a7 - pristine_git_object: 2aa50a3a98fa1fab0cf4933e636fd4c0e6cbfe92 - docs/components/inputstypemessage.md: - id: 4122ab2e0f13 - last_write_checksum: sha1:233bbdffb6e0a7af73cff218ab360c6de5194365 - pristine_git_object: 5e9e171f51063f252324317bc06dc7f8b27fd82c - docs/components/inputstypereasoning.md: - id: 3d0c4a7b247b - last_write_checksum: sha1:1fd2de81fba75957cda0497fd82f58fa02ffc172 - pristine_git_object: 6ea63e29c55c16d4b8820875dae6371025a1422f - docs/components/inputsunion.md: - id: 80653539ba08 - last_write_checksum: sha1:2db13039e0309ce08f46dc305a75942bec7db0ee - pristine_git_object: 404cc4a69bca7b64c9172078420c72359ed9c2d8 - docs/components/inputsunion1.md: - id: d017aeaed00c - last_write_checksum: sha1:0d46cb54e49f99f5562c138415c3eba66ca2f853 - pristine_git_object: 1949fa606e4fcd0a4437722016b4207dc1f005ba - docs/components/inputtext.md: - id: cf4503b3219c - last_write_checksum: sha1:af646125dfffda8cb71e15c602fcd4823b85f3ab - pristine_git_object: 15197976ab1da8e51e6c2ba2588fa7c6bc051c82 - docs/components/inputtexttype.md: - id: 5060f8d1c11d - last_write_checksum: sha1:f328a4d2fadde8103bd4fcf6a58fbec034e70e5e - pristine_git_object: 6181f0da9de76a20735b7b4bd8b174261db61578 - docs/components/inputtokensdetails.md: - id: 331af539199a - last_write_checksum: sha1:136d08c7846075581f141aa89c74743a4684585e - pristine_git_object: 7b6d8235fbeb431c27cec3d689c6d5aa558d8d40 - docs/components/inputunion.md: - id: e92a20448613 - last_write_checksum: sha1:6caa00eb5847278d7fa4033f863a9719fece403f - pristine_git_object: 3667170c054053b09d2a34627f2cc1b1ed9cc01f - docs/components/inputvideo.md: - id: 5775df94513a - last_write_checksum: sha1:9096278894b57ece97edefbfcfbbbae5f91fb259 - pristine_git_object: bbe46c3e9304d61be59bd4c93b70b7a43e2b3b04 - docs/components/inputvideotype.md: - id: 9c33db0fda70 - last_write_checksum: sha1:e66c94b0c71f26f79953275dad240d08d90ff290 - pristine_git_object: 97c20b2bcf688db59cc6c0aadf61e963aa2f9629 - docs/components/instructtype.md: - id: 5276541098c4 - last_write_checksum: sha1:b0fdb6ec81d9e6d31e0cc0567568e7caeec7334e - pristine_git_object: 44c350d432bebc6e72a2367be0680dedf398772f - docs/components/internalserverresponseerrordata.md: - id: c7d253bbe0f1 - last_write_checksum: sha1:c95fa69b2e5ba1ad8801577e0833513b4045c733 - pristine_git_object: b320ded97617f2a84341aaf23e73be3e0d46546e - docs/components/itemreferenceitem.md: - id: df82caccce8e - last_write_checksum: sha1:d5235ecfa37a370a769c27575da351873551fb98 - pristine_git_object: d9a8c531ca098fc9827e1fd81c35b9a8e4f967fc - docs/components/itemreferenceitemtype.md: - id: 42b45a1ce59c - last_write_checksum: sha1:8c0c439657b24ff5ad081d95b89e0f088547304f - pristine_git_object: 95aa04d9e921d642faacec6df23bc1761b9265ca - docs/components/keep.md: - id: 5b42959d6f28 - last_write_checksum: sha1:139916d09f3d0b5367b1916b6228c0b93d2a0676 - pristine_git_object: 435fda97679d2c1a90a932bf112df1658e87ede4 - docs/components/keepall.md: - id: a07be2f96b84 - last_write_checksum: sha1:d9bb211f5375ab8e00c20299017920f77fac80f7 - pristine_git_object: 189fa5530d194ca3f723a2dd2b56555706a6f7c3 - docs/components/keepenum.md: - id: 8622d9684e1b - last_write_checksum: sha1:44f71e954bec1ef1dfa7c2196c781845ea26bc49 - pristine_git_object: 87a4f284f533b45972c541c20d72382f75d68e95 - docs/components/keeptype.md: - id: 7cdbc72b8dfe - last_write_checksum: sha1:6edb68f5bf84647bc6dea0c98803a9ae3953b74f - pristine_git_object: c75bf25e244e9a2769e774e2de3739fcbc486693 - docs/components/keyassignment.md: - id: c2be60993728 - last_write_checksum: sha1:4791e8ff5cc6777dd2e130a2b67f019a1f6639ad - pristine_git_object: cda76fb01c2f5292ea05924127c9b99cca3d2dad - docs/components/legacychatcontentvideo.md: - id: 9a2b7bac8c07 - last_write_checksum: sha1:b9618041699ab740ef22e91b9c39e9d1476cb0d1 - pristine_git_object: 0ceb8bfb774aa07d662d8c5206a847205eb15b61 - docs/components/legacychatcontentvideotype.md: - id: 70e7ece41351 - last_write_checksum: sha1:bec40e9210c450f025f34e42f967fe1fef2c109f - pristine_git_object: 22ecba2663eaeccadf0d1c0283236d794afb2b09 - docs/components/legacywebsearchservertool.md: - id: "0e2991237936" - last_write_checksum: sha1:7cda7bb7347e7e8bbdff74389dfb3fbcf29794cc - pristine_git_object: fb64d1a9a5f803db2cd4c294baf1f34221cebb93 - docs/components/legacywebsearchservertooltype.md: - id: c5def381d385 - last_write_checksum: sha1:ea65b6214a79a7125bff8e6cca1f55863f5c1c08 - pristine_git_object: cfa9fd582c4d290d8700f34f092b5fd45d5a1172 - docs/components/listbyokkeysresponse.md: - id: 2bdc1d5f0f9f - last_write_checksum: sha1:c6deab84b3fee2d18ad7d91f151ba2a3b233e8a5 - pristine_git_object: 9416c56392444105af3bb6a5fe07b9dd539b7e22 - docs/components/listendpointsresponse.md: - id: b79a056a7034 - last_write_checksum: sha1:046b22b032ea14ce42886c0b1d2945c2027ab1de - pristine_git_object: 5a0af7d3c7b3d0f954a2916581f4d006930af3cc - docs/components/listguardrailsresponse.md: - id: 90134b3124e9 - last_write_checksum: sha1:c87b19168aaa3552487afd576384b54bae595082 - pristine_git_object: 27d4fc9916f854e7c59a3cebfa3246b0a367a4b8 - docs/components/listkeyassignmentsresponse.md: - id: ffb305258925 - last_write_checksum: sha1:f74d1b0e4441ec590cee3af3bcc42dcdb0274401 - pristine_git_object: bf0b206bd7a039f2fea3fae71fe276c63a585f52 - docs/components/listmemberassignmentsresponse.md: - id: b34008c23794 - last_write_checksum: sha1:a80fc686dfb13c7179c1a49808ca9d10fbca0cec - pristine_git_object: 16092238affd61950df82d45bc46ae0be98df7b3 - docs/components/listobservabilitydestinationsresponse.md: - id: c5efedc66c10 - last_write_checksum: sha1:1a3398a7358e41acb7bd39f2f9160c229c3054bf - pristine_git_object: 880f789f057a6ed4e1d2a95b631c00b156b999bc - docs/components/listpresetsresponse.md: - id: 0be27e53bbf2 - last_write_checksum: sha1:a9889e2824f16b545cb08c32f8e6d09376886234 - pristine_git_object: 6fb247a8a20861ac1e5baa96697e70a693f2c7dd - docs/components/listpresetversionsresponse.md: - id: 01d731017130 - last_write_checksum: sha1:2806be95ad0240547ca73ea89a91c26942409b65 - pristine_git_object: 36226d613ea47b77f7860395f0c7e61455fb74b6 - docs/components/listworkspacebudgetsresponse.md: - id: c1ef0798c3f3 - last_write_checksum: sha1:cb8d97e6a10dcc44ddd999b4c6ab8a031053013c - pristine_git_object: bc06290ff114d62147a8997d36ce2ccd8599e24d - docs/components/listworkspacesresponse.md: - id: 8cc6fbfc9dfb - last_write_checksum: sha1:ad9f94ea6eafd3cbd5d2c2dca61b3ac6f0403a1f - pristine_git_object: c4b9ff0e4cc402706ad28c35f75189aa2478470a - docs/components/localshellcallitem.md: - id: 9b7bd8fb3ebb - last_write_checksum: sha1:0b60897b2b25319e9d06d338322e7dc2a1635c06 - pristine_git_object: 4a81afde0ff55830aec9f41ef22c0adacbfa866d - docs/components/localshellcallitemaction.md: - id: d87559af5023 - last_write_checksum: sha1:ffc8b201705a9d30009267245a09a8e10ceb7b58 - pristine_git_object: 0d18c7ca53d43a5d58d6d15c17ce342ba56a06c6 - docs/components/localshellcalloutputitem.md: - id: 53951495a615 - last_write_checksum: sha1:08612c721fdf42ec25d191963a4a1105b588d6f9 - pristine_git_object: 34491a6ab13f2b5a5ef60acac308721d3e395981 - docs/components/localshellcalloutputitemstatus.md: - id: 1878f165a6fe - last_write_checksum: sha1:985386c9a863fffe9d4107bf63d7316095749d32 - pristine_git_object: 18938c8e8923df99b6f11d774c748f4f618ed16b - docs/components/localshellcalloutputitemtype.md: - id: 83a5e3ddca07 - last_write_checksum: sha1:2777314d0b96a5f23fab16ef30b055da323e300a - pristine_git_object: 3419c8a1ae972f04b2ad4689e04bfe8fd592087f - docs/components/logic.md: - id: 57db8def283d - last_write_checksum: sha1:6c1e841dba4660d9498219d6cb534d2988eb0d43 - pristine_git_object: effc42ec4dc4e34d90d0a51be532ec7c923b8384 - docs/components/logprob.md: - id: 351b5c050527 - last_write_checksum: sha1:fce93846d1c33a013a40764c5e00e6191982bdbf - pristine_git_object: cc928f671dcbde0ebe7ef10cef976333fa35cd68 - docs/components/maxprice.md: - id: 15ed956070c8 - last_write_checksum: sha1:dcd7d78e509fde879074c55d18f52f244cd6bb35 - pristine_git_object: fdbe77b802746a777199ba4780a1f2981cc3f7c8 - docs/components/mcpapprovalrequestitem.md: - id: 0d3537b2e5c8 - last_write_checksum: sha1:d2c00357d59374eee2845918d50ab5125d9583be - pristine_git_object: 100c830f3d7a41b5f68d22404a7469b051f5c0b9 - docs/components/mcpapprovalrequestitemtype.md: - id: 5d9fc336efb0 - last_write_checksum: sha1:6094bb015b51c4f3bcdd430abb7e369c746046ec - pristine_git_object: f7bab5327d14d16a40b9ec16770b77afae586226 - docs/components/mcpapprovalresponseitem.md: - id: 5dff2e68eccf - last_write_checksum: sha1:8368ac4bdcd72052d24f1f298d18c31663855b3e - pristine_git_object: eeacdc0afbc5e4662106aa18ace2b17dbd96d4bc - docs/components/mcpapprovalresponseitemtype.md: - id: 75bf622adc93 - last_write_checksum: sha1:88ce33f76415887fe812b880678392b1afcbe494 - pristine_git_object: 94baaa0cabb60a9c9f32633369fbcba2aed03131 - docs/components/mcpcallitem.md: - id: 96b8cb1e23c1 - last_write_checksum: sha1:e4f227c176f78b32f05d6c2875f5c19e3f17be7c - pristine_git_object: df7c228d307f76df8b98c7d4b451a3dc314b4cc3 - docs/components/mcpcallitemtype.md: - id: f764926c4d2f - last_write_checksum: sha1:675fe43eb73267b7a4944792104051ca1181d2e7 - pristine_git_object: 2e94b45437d96ff1c0188c2b20ae3405dee07e99 - docs/components/mcplisttoolsitem.md: - id: 0846373595f9 - last_write_checksum: sha1:075e68d99a8ab50e4e6afa007cce282bac44003d - pristine_git_object: 96141e87f0e250e5c5d8f282ab80b4420db95520 - docs/components/mcplisttoolsitemtool.md: - id: 96647e6a9ace - last_write_checksum: sha1:17d0ca88652cd39eabc780107b666fdaac6273e0 - pristine_git_object: 3da39425fbbbd0fdf978e0debee37c55a87f45b4 - docs/components/mcplisttoolsitemtype.md: - id: 32b1baa29df8 - last_write_checksum: sha1:1117e3345e79f4c8fe1c207eea4a2d057f691e0f - pristine_git_object: 4a52a0fc4282e3062ce2a1e33a6d35d67a62538f - docs/components/mcpservertool.md: - id: fcc92d12bf9a - last_write_checksum: sha1:edc8bdacc891f72eb9685d076ac2aa2ac18d30f7 - pristine_git_object: 2ce5cd65467cbb0d845210c1b5b77f4121f22ab3 - docs/components/mcpservertooltype.md: - id: 2090c8ba1a1b - last_write_checksum: sha1:7a7a827f064395ff5d952fd0dc775258b15f73c1 - pristine_git_object: 9c7e037d6bb5943e473b449b4d072af037e95ada - docs/components/memberassignment.md: - id: 760c8ff810ca - last_write_checksum: sha1:8eb2f8a077dab3774995986b09b13e7e86591de8 - pristine_git_object: d51bb51ada023d10b2dec047bc71375c781a5f23 - docs/components/memorylimit.md: - id: 6b23dc8e3b8d - last_write_checksum: sha1:af1899a519c3c3b50871014b17b50153050b59e8 - pristine_git_object: 39f5ae21785874af1f2ef0000e9fcecc000ec8fd - docs/components/messagesadvisortoolresultblock.md: - id: 18d8fff56c24 - last_write_checksum: sha1:0208d4d9109008df1000fce573c5dd136444e8a0 - pristine_git_object: cd6353bac3c8b96a396e511817231fa420e95fdc - docs/components/messagesadvisortoolresultblocktype.md: - id: 02e41844a8ea - last_write_checksum: sha1:a6cf799a1fa3dcd873532c14cfa673658ceb32b5 - pristine_git_object: b72f8916b4236118a46566bf81ed1d4c466ed882 - docs/components/messagesfallbackparam.md: - id: dfcbb7b1e2e6 - last_write_checksum: sha1:53d5e4a1468a7678fe5f0a3b643807c01868c9ae - pristine_git_object: ef4923e715bbb2fa8a00b2d0ed6025e36280dfa0 - docs/components/messagesmessageparam.md: - id: 4f67bcb5ba0d - last_write_checksum: sha1:cf46c4085fd571135f33f1f4eae994d49775d140 - pristine_git_object: ecd70aaf881859bb4278daf64c4037c17e8bcb1b - docs/components/messagesmessageparamcontentunion1.md: - id: 2b5a91a8467e - last_write_checksum: sha1:20e546d85607fc8ad4e24b26e6da61999c262ff0 - pristine_git_object: 0391164a0e8ef60babef6241107a0bf2d3028ba3 - docs/components/messagesmessageparamcontentunion2.md: - id: b576d21da7e1 - last_write_checksum: sha1:f0a6deb84a19db0e697b052a481f177ab112d074 - pristine_git_object: 1720e24ca4c5af3ae35c83ef1445f81b46d106c3 - docs/components/messagesmessageparamcontentunion3.md: - id: 42e48c3be6a8 - last_write_checksum: sha1:75c771929d88eda869961468c9a2470f783fdf49 - pristine_git_object: 6f970cbd11d02276f85366f1b01d4668b7084f46 - docs/components/messagesmessageparamcontentunion4.md: - id: a8daef445a1d - last_write_checksum: sha1:6459183f4dc6199e6a6b2236003cfd1850bef4fe - pristine_git_object: 55fbe4432d61150f641ff17e95121ce94549a1c3 - docs/components/messagesmessageparamcontentunion5.md: - id: a7dde2cbd69e - last_write_checksum: sha1:2b2f3e0b47a077cee771f036559d9c7e159a2bc2 - pristine_git_object: eb775b558b2d126d0d475d97535850e5d531dfdf - docs/components/messagesmessageparamrole.md: - id: 245edebe2504 - last_write_checksum: sha1:5650700d7c0c3863b43c547ae69388d926be1090 - pristine_git_object: 9c1fa31bead2c968a3e198e79b60d4ee2e4e1dcf - docs/components/messagesmessageparamtypecompaction.md: - id: 54f1bf128510 - last_write_checksum: sha1:3c10c956aa04f144f82cb2388ac8461aa478535e - pristine_git_object: d3ca428723c54f1577945e4d187f1803f26f3a7f - docs/components/messagesoutputconfig.md: - id: d45ef6ba5aee - last_write_checksum: sha1:d3e0bbd6267aa8a2630fe270721c1d532fd6f5ac - pristine_git_object: 5a0d1d11e4dbee6a19a418e7b9e40d0cffbf0a25 - docs/components/messagesoutputconfigeffort.md: - id: 0ff117d47326 - last_write_checksum: sha1:4241a3e5c5939dd363b1b18131e6b708ef14ddc5 - pristine_git_object: e58b0a368563b3e7d969bb323a719387ab1c72f4 - docs/components/messagesoutputconfigformat.md: - id: e1fd93b0095b - last_write_checksum: sha1:6d3007b44926a6e01f5b0e1d1506d6305c1de1e9 - pristine_git_object: b214efce59f8b4cec69fc4acb40c5d0ab192f7ce - docs/components/messagesoutputconfigtypejsonschema.md: - id: cb4f82d2edde - last_write_checksum: sha1:090533fcd15c9c8ef7e25ebce5fb9877e62ac77a - pristine_git_object: 6a8883bfc55e71980d691e2b9bda395dc40397e0 - docs/components/messagesrequest.md: - id: e479a7035a9d - last_write_checksum: sha1:55da58866bcd40c949c5669195633a2064fc1da9 - pristine_git_object: d4322feeca1f49bedfa491fc3401173acdf31cc8 - docs/components/messagesrequestmetadata.md: - id: 6bbb17fb8289 - last_write_checksum: sha1:59573dcf98c6a520e39df65af105d9550ad91855 - pristine_git_object: debe3767143e4e0d9902d566f07edc0a88f72a74 - docs/components/messagesrequestplugin.md: - id: 6c74af3351ff - last_write_checksum: sha1:ae5c77653f405c1074121821ac97ff6a78c2f76f - pristine_git_object: e5fcef93ae1b6a5edcc8b4263ad71e24340fbefa - docs/components/messagesrequesttool.md: - id: aeaf229efe39 - last_write_checksum: sha1:262f202169804143ebf77ed03b365fe789f8894b - pristine_git_object: d3e4d451e6ffe2cb87b07157954be23c6754089e - docs/components/messagesrequesttoolunion.md: - id: e51d7bd17081 - last_write_checksum: sha1:8e080cbf5102f73960172e0c1c63a3aa020d6259 - pristine_git_object: 98cf674943ef36b59b9430c7a299666570390075 - docs/components/metadatalevel.md: - id: 9f671abd00b9 - last_write_checksum: sha1:6238f82ab3af2fe7bf4a1e3945d5612e59afcde3 - pristine_git_object: febc8ad20cad1050527f99760668d7e0770da391 - docs/components/method.md: - id: b033f8729bbe - last_write_checksum: sha1:45a4264bd618111e097084519a5f4d017baf16cd - pristine_git_object: c1ac578717dab45d7e86236836634ea777e603e8 - docs/components/modality.md: - id: c06a1698adc6 - last_write_checksum: sha1:9bbac55e2cb009dfd90e129cf3abd35dcab6d2ac - pristine_git_object: 54561e47866b619fda09c4168acaf5094a5158ad - docs/components/mode.md: - id: c4b5ab74eb19 - last_write_checksum: sha1:7e3dbed60e5a5a3f21d179fbc46a596acd3a8d9c - pristine_git_object: e87cda7a904eb2554c58b6966a50ef581bf1bcb2 - docs/components/modeauto.md: - id: f43745eb6f43 - last_write_checksum: sha1:5eed0f8eec27adf49aadda8d5403f2c7ae0bb18e - pristine_git_object: d5bbdc95f658be46eebf13f0ba8b9ae3716f72e2 - docs/components/model.md: - id: 673ad57400cd - last_write_checksum: sha1:ea20bf9ca8f49a181142f516f1b36758cf5ceac6 - pristine_git_object: edb000fc276b3eec0dbe0bb1e82c4f5d7a72e8c9 - docs/components/modelarchitecture.md: - id: 79816051e6e8 - last_write_checksum: sha1:158b04c79b7a32a2d95e3d3fda8fa6da0ab91cd9 - pristine_git_object: 7579049efab554d7f538f7cad1ffd1a8ab1be80a - docs/components/modelarchitectureinstructtype.md: - id: 3518ad912450 - last_write_checksum: sha1:e4745000d4820fa66c7b7994e676b061fbf38d96 - pristine_git_object: eabbbe356d5ed319279e02b0aa032253b67e3bb0 - docs/components/modelbenchmarks.md: - id: a1ad8feb3ff8 - last_write_checksum: sha1:d2404ae535f53140e257391a944052da2f87790a - pristine_git_object: 84513fb30a065bb405e4b1f9316d91989e9f928f - docs/components/modelenum.md: - id: 578e84498f95 - last_write_checksum: sha1:e4c89141e391bb02c8b01ef243e414603937b527 - pristine_git_object: 0698ec66d69f7160750a558282c367f570465187 - docs/components/modelgroup.md: - id: a6a4b80844c2 - last_write_checksum: sha1:6d5649d0d2ac8d8869fb39158c5dec52db0e8087 - pristine_git_object: 80ef8a09c268ffbbee85d92dce038461b634a71d - docs/components/modellinks.md: - id: 74607e6a173d - last_write_checksum: sha1:445ec227b130763e2509d1a181dd5e3e6d71420a - pristine_git_object: 317190772f743d2aba63c4dad770827b46688f6a - docs/components/modelreasoning.md: - id: 47976b46e5b9 - last_write_checksum: sha1:07deec55fe155257ef07086b6dc2fbc7e012e031 - pristine_git_object: 306c0aeb39047768e6c79975996240584a97525b - docs/components/modelresponse.md: - id: 9d48c3f335b1 - last_write_checksum: sha1:442bb6c4d21debbceb5a48a9563b07704983123f - pristine_git_object: 2ad6e9dc16fa06d03318e98bc540c7aca0d497ed - docs/components/modelscountresponse.md: - id: abdad0c1a02a - last_write_checksum: sha1:50ae205604eddcbdced268b8cd3e1ac06f0dd7c0 - pristine_git_object: 4ad6e6a692b19b29789b7a505fae3df72b3fc19d - docs/components/modelscountresponsedata.md: - id: 98e05b6bdddd - last_write_checksum: sha1:62caa9966f2730ed93eba332041916903d279228 - pristine_git_object: d661997290e487a9d0920293830a81afb8b4a853 - docs/components/modelslistresponse.md: - id: 37e791d4f265 - last_write_checksum: sha1:63605b3361627fdb35caac3651ca4ac63732cd07 - pristine_git_object: 04b43f59dd2202f1a5fe8b3a890f68010194ec90 - docs/components/moderation.md: - id: de90083e5402 - last_write_checksum: sha1:d0cd3160a76e89d8749cb27687b1bba3dac5089d - pristine_git_object: e537afb55f6f683d8e11dd14014db2c808c0a3ef - docs/components/moderationplugin.md: - id: 975e1b877c99 - last_write_checksum: sha1:07b0c52842055be65a650b641407ed3b595c980a - pristine_git_object: ca5adb179586eafff10901ac1900d38e895dea7b - docs/components/moderationpluginid.md: - id: c266dcd9ec14 - last_write_checksum: sha1:f72de648ce857abfa35274d8859de5e8f2c58125 - pristine_git_object: 60d7d13289d6543385b236e37b40231d6633e20c - docs/components/moderequired.md: - id: 6e564fce1a7d - last_write_checksum: sha1:16f798521d1221c04b8c39d7e25383c8ffb7be7b - pristine_git_object: cfecb28d11204fe2cd3d69f1ba16a09212f5cf93 - docs/components/multimodalmedia.md: - id: f90fdd384c93 - last_write_checksum: sha1:fd51c136be8400ff6d5066913fcb9bb00e0a7c88 - pristine_git_object: c794ca17ca96be1844ccddc71842421048ebcd42 - docs/components/nameadvisor.md: - id: c6f8d17ae439 - last_write_checksum: sha1:f863ebe74e51efba513aa1fb27864a04cfd3eb09 - pristine_git_object: 4c91db747494811b3a0d17ed4d9cc73102294e42 - docs/components/namebash.md: - id: 5f5d93c15070 - last_write_checksum: sha1:0461609b759814886c4bad4967d056db8240d23d - pristine_git_object: ba827ad028bc1bdb1dffded72de5c1dcd939c1b1 - docs/components/namestrreplaceeditor.md: - id: d78c4bf10ea1 - last_write_checksum: sha1:aec9992e83de12492ff0235ca214a27ca6fb31cd - pristine_git_object: 6e011f08a45b75fc3777778593e818b9f7a2e9d3 - docs/components/namewebsearch1.md: - id: be3e365d008c - last_write_checksum: sha1:97aa65b220803ca7b66f0b9a2b24a52ccaddef1e - pristine_git_object: c7282ac245b6c28e4bce6c90c94f886f84d6973d - docs/components/namewebsearch2.md: - id: ff4b14c13e02 - last_write_checksum: sha1:7af3f01911982e2800072d6ce648a810974dc98e - pristine_git_object: c0fba3a6251edc39d3c25d4131075783af1db89f - docs/components/never.md: - id: 43f2ea5e9932 - last_write_checksum: sha1:e6525fb53deebcdebcb5da707fd9f3250d8f2e9d - pristine_git_object: 32da565f2b04e672ba9efb037794ae5ee59c837a - docs/components/notfoundresponseerrordata.md: - id: fa528f1f7879 - last_write_checksum: sha1:8872a5d706d3a3392ae8c552f54ecc3c6df00f9b - pristine_git_object: 0ba248529a84feb2bf9d2f519895b3194349d2db - docs/components/observabilityarizedestination.md: - id: f513447ea793 - last_write_checksum: sha1:ea4da6fb90cd7f1bd094aa927d5c01028970a4f9 - pristine_git_object: 04544acc47732ace2cf93c40a24734e72ab7fbc8 - docs/components/observabilityarizedestinationconfig.md: - id: dc1d535079ea - last_write_checksum: sha1:1288b88f495552b356e2f4ddf71440866c6b4d74 - pristine_git_object: 3e51f13a5a9751ae689488b368edcd4eb47fa408 - docs/components/observabilityarizedestinationtype.md: - id: 8e8a0fa37466 - last_write_checksum: sha1:ac6b0d3b0f878616a9cfd4c82d3bf5f992176f65 - pristine_git_object: dd7791378e18a915cb10a805e89e87017bb72ef4 - docs/components/observabilitybraintrustdestination.md: - id: 145a536c10c1 - last_write_checksum: sha1:c722bf7779eb6a1207a482c04220b220d1260357 - pristine_git_object: 7658401bb30993018af48345a173c1a4d68e39f8 - docs/components/observabilitybraintrustdestinationconfig.md: - id: 0013ee8af3c2 - last_write_checksum: sha1:de7e22f79bd3aefd8ccd34f12249a91192c30571 - pristine_git_object: 484cfcffb3e2bd3fcba725e5b59de99394604248 - docs/components/observabilitybraintrustdestinationtype.md: - id: 5b2c2f854656 - last_write_checksum: sha1:c3c4308d3d5821e88bb3781ae1f8663c53a2c65f - pristine_git_object: 07e7f6339ce6df1107447a33fa1c50509d35269f - docs/components/observabilityclickhousedestination.md: - id: e0ee8ee1c7fc - last_write_checksum: sha1:108164edbd7a433b2cf819453d7779d0e27253dc - pristine_git_object: 35bb6dc5f954d53e03c241c28f4ced53df8b74d7 - docs/components/observabilityclickhousedestinationconfig.md: - id: dc0c611863b2 - last_write_checksum: sha1:5742331f360f56b17bae994a327e21af364d97f8 - pristine_git_object: 54f09ea3b737efb3030ef9fe066820f6ecb5ebfb - docs/components/observabilityclickhousedestinationtype.md: - id: a938251b2fa4 - last_write_checksum: sha1:cd4f6fdb4561ec47d0e40f0a65ba9a28d91d1b7d - pristine_git_object: babefb65e0bbe0c948836d3451fbcff43a852385 - docs/components/observabilitydatadogdestination.md: - id: 9f27ace42342 - last_write_checksum: sha1:4d89342bb4f160cdb2cf145c778e73ae771de6a3 - pristine_git_object: 73958b4a7c4b0a92a4cadc8c5fb101f88f37ea5b - docs/components/observabilitydatadogdestinationconfig.md: - id: 987756bd3477 - last_write_checksum: sha1:f694e79f3bd3738b4f29e1456c8b4ca48a11d53d - pristine_git_object: 73edf7915e8800a1972a2d675c57ccf244a5f649 - docs/components/observabilitydatadogdestinationtype.md: - id: ee1c2137ca39 - last_write_checksum: sha1:69762b3bd3e41b114f27a0352f91fd121c0f99c3 - pristine_git_object: adad4bcc6fd2473b01333d8d853d9bcd8a3ef397 - docs/components/observabilitydestination.md: - id: b7be8a7cc49c - last_write_checksum: sha1:86950faedf8774004b61e3023eeceb9dfc85c5be - pristine_git_object: 266c69e959338f4835f9097a3d9b53537b9a93b7 - docs/components/observabilityfilterrulesconfig.md: - id: c1b3582ea8bf - last_write_checksum: sha1:26a5aacdcc8cc84b77f2e0d2100b7dcbbe504510 - pristine_git_object: ab02f08984737f29ab04fc15ffadb9b0b2212014 - docs/components/observabilityfilterrulesconfigvalue.md: - id: 76c9622dd0a3 - last_write_checksum: sha1:cb515a04863f9c9f42aaa3ae1c0a021c51e45616 - pristine_git_object: b6756482d237df17828ac929ae6d1dfe01b55f17 - docs/components/observabilitygrafanadestination.md: - id: 869cdaf1858d - last_write_checksum: sha1:da9f9dd9dd1fc1b4c3318de9bff2feb96ea7e5f6 - pristine_git_object: d69dd20a8129c2235f9610d2570c654ef9dbd462 - docs/components/observabilitygrafanadestinationconfig.md: - id: 341e8d7c29cc - last_write_checksum: sha1:3aa831e99f119076781bc7829018f67a208ad811 - pristine_git_object: a66d915a86123b0689301eca4cd9bc9fd5c5ae8f - docs/components/observabilitygrafanadestinationtype.md: - id: 31be9564d467 - last_write_checksum: sha1:fa4f96be1a58484ba1f520c1d45944a2f47fbdff - pristine_git_object: f5c7a1e0a29f54a0b9cbeef9a824515d6601d8ad - docs/components/observabilitylangfusedestination.md: - id: d3923d950e4c - last_write_checksum: sha1:a1aaed454c3a90697ad0192d49c915b195829b89 - pristine_git_object: f36b84ce2ba406668dffa2fd2d882d14caf01ca6 - docs/components/observabilitylangfusedestinationconfig.md: - id: dc419b3c2b64 - last_write_checksum: sha1:c5b7d73cbe808972878e2def5434a97e3b60fbd6 - pristine_git_object: ba02f48832ac62bb1342d0655ccb060ecb47670b - docs/components/observabilitylangfusedestinationtype.md: - id: b23de5f0f74f - last_write_checksum: sha1:f497c7e5b25c971037b56d868d41af9ad6b77ba4 - pristine_git_object: 96f45ca0c628b3d1d0c74e3638d1f073ce2bb338 - docs/components/observabilitylangsmithdestination.md: - id: cf543df3b6a2 - last_write_checksum: sha1:98dc21b970bc222388aa9ffed95305a41cc9ad46 - pristine_git_object: 5964867ccd33cfc4cba7ad1f60bc695144763a3d - docs/components/observabilitylangsmithdestinationconfig.md: - id: 4a80dd659c6a - last_write_checksum: sha1:7c11da5b5112b3da24d563a7e161e431baa0facf - pristine_git_object: 48a0daae8084bb6113c510a2d7ea3393fcea060d - docs/components/observabilitylangsmithdestinationtype.md: - id: c3e6e20fbe51 - last_write_checksum: sha1:76181b8b31b0f3ef3bd1f22ce4c5ba8caeee0b47 - pristine_git_object: 1412570ef5ae5d6c16da8d937c30ea7e65d37f87 - docs/components/observabilitynewrelicdestination.md: - id: ae617fe0603c - last_write_checksum: sha1:4c94f55f88771ad3aa78dcccff2f4f988a09a747 - pristine_git_object: 205209601c4bef5a65c863a471359505c18a9095 - docs/components/observabilitynewrelicdestinationconfig.md: - id: 21ca56b40c65 - last_write_checksum: sha1:2a6acb29cc5daa2d4e70591bfe837a95d67db0dc - pristine_git_object: 1cc3498cfe82f0814d36f606b036e8e43567f454 - docs/components/observabilitynewrelicdestinationtype.md: - id: 9e1990a0b096 - last_write_checksum: sha1:b97b608eea21250b92ac8048c10c72e3ed2b91a8 - pristine_git_object: 24f27fab589d4b4c65a5e1159e98779e3261a744 - docs/components/observabilityopikdestination.md: - id: db66b07ae65c - last_write_checksum: sha1:11106eb2f5a2a2500e063ce36f86c9f2ebc5e182 - pristine_git_object: 049bc01e329dfd27523e7d4cfe1117bdd94dba07 - docs/components/observabilityopikdestinationconfig.md: - id: b374ed3b47d5 - last_write_checksum: sha1:b92ad6d3083465668ef5abdd0ffcf13adfa83a8e - pristine_git_object: d4c9ec5338a2366105ea8da32d427da64adb0d7f - docs/components/observabilityopikdestinationtype.md: - id: 87b673feb2bf - last_write_checksum: sha1:93aeb40e16484b72cf9913993a8b9ca334f8e2e9 - pristine_git_object: 2812133c956134ab2d153aa2c89fc896adc58285 - docs/components/observabilityotelcollectordestination.md: - id: d33bee74e26c - last_write_checksum: sha1:884a35422f51b33484137f0e28cbf768efef9001 - pristine_git_object: 18e46e87ee9f33ab59f8e509440605dc87b79029 - docs/components/observabilityotelcollectordestinationconfig.md: - id: 5e5e9562fb09 - last_write_checksum: sha1:bff2120ae00fc563b0cd8eeafd700fd6e29bb014 - pristine_git_object: 3d5f1ba56a0b83b1084363f185cc552ee800aa37 - docs/components/observabilityotelcollectordestinationtype.md: - id: c78211a83000 - last_write_checksum: sha1:1ad7c1e21ac263d0c7fef5efa4c1107da9772488 - pristine_git_object: cced176b01380b0cbe7a36a91fdfdaebbf34b228 - docs/components/observabilityposthogdestination.md: - id: ff245b7db549 - last_write_checksum: sha1:4e7f4e1408b112d58221d7ad19aca11d1364413a - pristine_git_object: 5d4a5f3dea524192974b009b29b0c55a64433516 - docs/components/observabilityposthogdestinationconfig.md: - id: 005b7ba53ef2 - last_write_checksum: sha1:6f8e601b2e27c8292138258c9d92d26452d77d5f - pristine_git_object: 417abca41ac81fdc6b0f6b6d6dbe1a916a57f93c - docs/components/observabilityposthogdestinationtype.md: - id: a3ce062df326 - last_write_checksum: sha1:63c802ea9b1b3b72ed8a579c47bba035920b8948 - pristine_git_object: 0b292361d17c18c0ea9e2a438e78e73a0e2c4a7f - docs/components/observabilityrampdestination.md: - id: a46ae803969b - last_write_checksum: sha1:f182b20b2cb9495c4d2a081c4a15dd793e43106d - pristine_git_object: 87f80b72391fe6a8856c6f5aa0ebf121d94e5925 - docs/components/observabilityrampdestinationconfig.md: - id: ed120fec93c8 - last_write_checksum: sha1:bbe68c9cabede09198294ac44376c5803c86b1d5 - pristine_git_object: 4221a78626b13ad1080354aafac31044d070cd30 - docs/components/observabilityrampdestinationtype.md: - id: 98ded470a529 - last_write_checksum: sha1:03a8dc497c1e7e75ae4c6fddcccfa608ed9da0ea - pristine_git_object: a385403b09e1020ece95e1d923b0c058ab228051 - docs/components/observabilitys3destination.md: - id: 3cfb33f703ab - last_write_checksum: sha1:f0d785abc3774f44dde87080bba3301dfa2bea57 - pristine_git_object: 1c35568532bc86e115c3f66409df098899aefba9 - docs/components/observabilitys3destinationconfig.md: - id: 9857e1788ca9 - last_write_checksum: sha1:215caf5c0bb6d845e154f9e4dced38882cf7f30b - pristine_git_object: 8a79a8c3c2a3a2d8ea03ae10d75ea650bdb9aa44 - docs/components/observabilitys3destinationtype.md: - id: 99758c95d6ad - last_write_checksum: sha1:f13f7307321aa61b830d7a6fcbabe801225c0020 - pristine_git_object: 167928ae975633a0f0521efaad58fe82ac9da402 - docs/components/observabilitysentrydestination.md: - id: c0db66ec1664 - last_write_checksum: sha1:a281546e21d0c77dd4515ce948726f1ce709d27a - pristine_git_object: ab70b791e92431012b043b32513eba03cc543139 - docs/components/observabilitysentrydestinationconfig.md: - id: f61819b137bd - last_write_checksum: sha1:0364b3bebcb1636eb8f2feba923d8ab0ec5bfd30 - pristine_git_object: c76ddf04cc6eaf366ba96d18d13aaf1db28ab6ae - docs/components/observabilitysentrydestinationtype.md: - id: e9fe16eaf329 - last_write_checksum: sha1:9be17cdea703a48dfc3cb2e5c709f16a1a97fce7 - pristine_git_object: c579db4a0009cf8bcdcc79c6cfeb563a9e20f6d7 - docs/components/observabilitysnowflakedestination.md: - id: 01c80b662bd2 - last_write_checksum: sha1:4d94529da2ef11c4b954ea2201a0395261758d74 - pristine_git_object: c7871fbd72b01b20254a217f2f7e7da6ce22ccd1 - docs/components/observabilitysnowflakedestinationconfig.md: - id: 5863c15e5c2e - last_write_checksum: sha1:38a96c2cb11b478fa3f8ff4c334a30bb82fc46b0 - pristine_git_object: e42de6dbb36eb49faded0ccb3fb7d0922ec6df64 - docs/components/observabilitysnowflakedestinationtype.md: - id: ce209a361916 - last_write_checksum: sha1:244a36b33db8f6a3000b998d892f88ee3fc420ae - pristine_git_object: 4c02a083cdb7c917d8afffdaec5158dce23354eb - docs/components/observabilityweavedestination.md: - id: c34a90c15698 - last_write_checksum: sha1:99267a7a9920a8c297b3a712a5081b19b47ab977 - pristine_git_object: bb63ed9473b5c24f4e11dae28c1a874143cb33ba - docs/components/observabilityweavedestinationconfig.md: - id: 73228e35948e - last_write_checksum: sha1:40d75673453e308fea0126f1202efce502f7ed1a - pristine_git_object: 596b679f81c4ae44c63f3d0d17c73a89c2d74d8f - docs/components/observabilityweavedestinationtype.md: - id: 35b8114daf60 - last_write_checksum: sha1:41ae9dddca44856b6ccc2c9d2426af22d4a42e76 - pristine_git_object: f432ecd7ebd47db79545fbfa1643768e4367df74 - docs/components/observabilitywebhookdestination.md: - id: 51348fbd75c7 - last_write_checksum: sha1:6723112df9dfce824b26b7dfbcfbb32fa041583f - pristine_git_object: 5a9c0b86372ac36fe5c5be386db6f29bcbb2b6e0 - docs/components/observabilitywebhookdestinationconfig.md: - id: bdcd4f7adfc0 - last_write_checksum: sha1:42e280c9d149b1e7386c669f3c05bf8b9cd1c60e - pristine_git_object: 31b46e3b6fce0d020f5a8eabd73cc3f690056d1b - docs/components/observabilitywebhookdestinationtype.md: - id: eda8f89f5d4e - last_write_checksum: sha1:d59b7878f2985f9aa97eb510e8dbec76460a6f22 - pristine_git_object: d0208f5eef93e4ecd0e9a38de258f39e0ed403cc - docs/components/only.md: - id: 91bc6779dc0a - last_write_checksum: sha1:9d9c9f1858695f9fe710f28aecb7c84856c494a7 - pristine_git_object: a62341bd1e17c836ec7539bd7d8e494a1a5184dc - docs/components/openairesponsecustomtoolcall.md: - id: ac3aee21895d - last_write_checksum: sha1:16e629b4a9dacc4644d1efef349c68f02de5ea5f - pristine_git_object: 4615c033bbf754dd285702b736767aa9f018e24f - docs/components/openairesponsecustomtoolcalloutput.md: - id: 898c9ec80afb - last_write_checksum: sha1:4da2372651911ee10a63df94068e5ec6a91d1f93 - pristine_git_object: 73cb55149d5963cda326d0cea2f2545ea42c1c09 - docs/components/openairesponsecustomtoolcalloutputoutput1.md: - id: fc80a5761631 - last_write_checksum: sha1:f5d0d55ea31b932e7fd5d8f9d9155aa5061fa86b - pristine_git_object: 0f2552eebdb34b9c8750204b5644b08d0733dd57 - docs/components/openairesponsecustomtoolcalloutputoutput2.md: - id: 0722ac09f02b - last_write_checksum: sha1:562d190855df03f20f41ae0e70b1d981cd5fd56f - pristine_git_object: b374dc6cbbfea894098c524ab65ba08712228ceb - docs/components/openairesponsecustomtoolcalloutputtype.md: - id: 99674dd00609 - last_write_checksum: sha1:b4ccac74cc49ede5eb63dfaa5317b08504c6b561 - pristine_git_object: 8785852bc927f0a78a4012bfb58700a7e2d97a8a - docs/components/openairesponsecustomtoolcalltype.md: - id: a842d72e61fc - last_write_checksum: sha1:5dbe9b6def695cf8ee2f283160b1013094862c6e - pristine_git_object: 6d718cc235ce1e24ac715a5323871ce0bd766949 - docs/components/openairesponsefunctiontoolcall.md: - id: 3a1364f8d3e1 - last_write_checksum: sha1:fc16b457b389728471198954cf2a4322e238592e - pristine_git_object: 15a293510664ad28497a1fe708b58be8402fd287 - docs/components/openairesponsefunctiontoolcalloutput.md: - id: b3939fe71de2 - last_write_checksum: sha1:1705dc61ae8733d30d88947b6a950f92af935ffc - pristine_git_object: 60257a07205e3fa2e534d8ef6d920fd658efdb9f - docs/components/openairesponsefunctiontoolcalloutputoutput1.md: - id: 890af6bbdcfa - last_write_checksum: sha1:f098ac07c6c67838bbc6abf901b458c8746244b8 - pristine_git_object: 7496833a959029ec59035966be140759e9ae444f - docs/components/openairesponsefunctiontoolcalloutputoutput2.md: - id: 292c63ce0cd0 - last_write_checksum: sha1:84bc2133779253b1a0a3488f5ba0543a69883e8c - pristine_git_object: add9b33119d4fdcad7c277263487308098682028 - docs/components/openairesponsefunctiontoolcalloutputstatus.md: - id: b421aa3f6bfb - last_write_checksum: sha1:387af8f984924903f3617df6fb8a0661a7ecfb52 - pristine_git_object: aef64b38db8bcf226a32822af6232ef1c69f8aa2 - docs/components/openairesponsefunctiontoolcalloutputtype.md: - id: aa8b177d1ec1 - last_write_checksum: sha1:3b95f762eceb734784551c575cecbdb28fccfafb - pristine_git_object: 42ae342d0971e385cc996ae3011c45fb8f874377 - docs/components/openairesponsefunctiontoolcalltype.md: - id: 7b166a0d0b2a - last_write_checksum: sha1:6c807f62207fb36ccef1da18232aa7c83f9dad5a - pristine_git_object: d966b3227d4c973ff8986b0a58b3aef89d26523c - docs/components/openairesponseinputmessageitem.md: - id: 36f42513d2a7 - last_write_checksum: sha1:d00cb57892a0aa2784a7ebe83d776f317976048b - pristine_git_object: d71d5fde7f259fd906eca66522d59dc0d55f3caa - docs/components/openairesponseinputmessageitemcontent.md: - id: 52e9bf63eda0 - last_write_checksum: sha1:311a3e0fc263a3fd3a627728da28db217333f741 - pristine_git_object: a823b7b02ee8193e9bb4bad239c412b1143577f4 - docs/components/openairesponseinputmessageitemroledeveloper.md: - id: 0dd13dac0dbd - last_write_checksum: sha1:d33802c5564ac45feb4905e482d4acc5afdd670a - pristine_git_object: 0c0c982f77a8dc04c9d343e2e5c4531a00fcc38e - docs/components/openairesponseinputmessageitemrolesystem.md: - id: 9a4648fd3cb3 - last_write_checksum: sha1:cf80baa698d6c76a8ebe65a9d0cdac7f302a5e14 - pristine_git_object: 5796e10eba5845d650471b35101c93d8d0944ab0 - docs/components/openairesponseinputmessageitemroleunion.md: - id: 5e57b5425e20 - last_write_checksum: sha1:898bfd48b6e4f1df20a766d6d2e47bc1f3dcdac5 - pristine_git_object: c1b9743a0a124ac490a4f82d1a190e79ba194c06 - docs/components/openairesponseinputmessageitemroleuser.md: - id: 55c3e6d597b7 - last_write_checksum: sha1:fc65d52f808697f04bb4066bfd1b18983b48db7c - pristine_git_object: ee51089659605b755564bd72d62b3bfdc2f00ff8 - docs/components/openairesponseinputmessageitemtype.md: - id: 82146d08bc72 - last_write_checksum: sha1:a73b2a36c3bf3386aea497899ed43e40424ecbb4 - pristine_git_object: efe2fbfa7bb0202b31459296f739ea767b7ade62 - docs/components/openairesponsesannotation.md: - id: d8d10fd7804b - last_write_checksum: sha1:fa57b686a405727f7e305c17d9e97b981aec6ba7 - pristine_git_object: e3b6962893d7ecac7b171ce17969cf935186d256 - docs/components/openairesponsesrefusalcontent.md: - id: 864502b050dd - last_write_checksum: sha1:7777af1d85b821b1f8d36d9bde7ac1489853984d - pristine_git_object: ea13450e264c0b2267746bbc9a3f68d93da246bd - docs/components/openairesponsesrefusalcontenttype.md: - id: 0e2415eb75a6 - last_write_checksum: sha1:d934ac9cdb5b1125a8a60b26a25763356a854603 - pristine_git_object: e94bdd22c843ed46bc95f6fa256c23701416f12d - docs/components/openairesponsesresponsestatus.md: - id: baeac1c7fc78 - last_write_checksum: sha1:0e6be1f260a62e483e288efcec1b91c255ccac56 - pristine_git_object: a3628447cc8bb14c969544b1b57b4f1e4f82c9c7 - docs/components/openairesponsestoolchoice.md: - id: e0916138c088 - last_write_checksum: sha1:10ae047eeb5951e67b6e16bfdc61898e79f92b8d - pristine_git_object: 72b8738f1a2b1e34b51ddd61d3911e585cbcfd14 - docs/components/openairesponsestoolchoiceapplypatch.md: - id: 4b46229cb2dd - last_write_checksum: sha1:2efda634d7d7371df066d38f9979ae56da089039 - pristine_git_object: 1f76d7b87d3203e47dbb67b28c992a137671c573 - docs/components/openairesponsestoolchoiceauto.md: - id: "864322169068" - last_write_checksum: sha1:4df5b1713e54f2fbcbf4acd91243b19f07898d40 - pristine_git_object: 5a958ab0c25e26ecc1ee4e4663a1cc4a51cf5d78 - docs/components/openairesponsestoolchoicefunction.md: - id: 98a6be9ff937 - last_write_checksum: sha1:b3227df6ff61d9d10b779ca476d4d4b84ed22145 - pristine_git_object: 9163b3d1e3eb13d3c7b84393c6cac4a0f587c4f8 - docs/components/openairesponsestoolchoicenone.md: - id: 7e44390a9041 - last_write_checksum: sha1:d6324a5ec32cf87e40ba5cc27f82b8eec52cc291 - pristine_git_object: d5c51acf219cee7536b94051c642e58dd117409a - docs/components/openairesponsestoolchoicerequired.md: - id: 1a18707d5f17 - last_write_checksum: sha1:ed310a851eb6b16175ff1aee2f1d51dc1ca63120 - pristine_git_object: 57aefba1d93597b1944cf8ce84a55e6578e1908f - docs/components/openairesponsestoolchoiceshell.md: - id: 946027d4a9cd - last_write_checksum: sha1:b43e5c87f09cf9279dd948c17df532c36426b4e9 - pristine_git_object: 736d8f29a42debb1bdd4026725d9c55fc08467e1 - docs/components/openairesponsestoolchoicetypeapplypatch.md: - id: a28326e5e717 - last_write_checksum: sha1:a74e5e47b84038bd83004d371925f0aedd9fb0fd - pristine_git_object: 84d2045ff0a40a02dfc74286f133f0f7214a4f5f - docs/components/openairesponsestoolchoicetypefunction.md: - id: bf87379c3667 - last_write_checksum: sha1:9275e8d69c3615686c52f0c7f2607f79bedaa39c - pristine_git_object: de3caa3f6351a1cefab397803760aabee509a32d - docs/components/openairesponsestoolchoicetypeshell.md: - id: e6f9a610204b - last_write_checksum: sha1:2dc29ea8cf64ac8b97b7db83bef402ab8bbfae53 - pristine_git_object: 32b67ebb8be6202e4a85d3e2a3bffcfa0d227b64 - docs/components/openairesponsestoolchoicetypewebsearchpreview.md: - id: a0dcc27980f9 - last_write_checksum: sha1:c56012a4d3ef1dcfc993f31529c9f21cd2f2d45b - pristine_git_object: 93b161b0908d956f47c9068a7107ae892f5244bd - docs/components/openairesponsestoolchoicetypewebsearchpreview20250311.md: - id: 60b749aa3da1 - last_write_checksum: sha1:8ee0320e41efba0ab518a0bf6cf91ed50ec3e41a - pristine_git_object: 3162d396225c6fa3f2597ed4aea08c8b1dc7db22 - docs/components/openairesponsestoolchoiceunion.md: - id: 0deaf8366a16 - last_write_checksum: sha1:5605d2dafe5ae816fc30294c7e2a4ceebc79a694 - pristine_git_object: 15e1482ab0963c950b350d46284d1d9f75102bcb - docs/components/openairesponsestruncation.md: - id: d4ad0cf0c093 - last_write_checksum: sha1:0adf4105f41726d94f43e9b76a7df2bb4cd791f3 - pristine_git_object: aafecaeb79126df177943a9c64776946f4248e2e - docs/components/openresponsescreatedevent.md: - id: 75983186e798 - last_write_checksum: sha1:7b04290cb5943d838fbf8d05577d424ee6f4b448 - pristine_git_object: caa28148cf40971bb40b7503e09f38b9c9f1dabd - docs/components/openresponsescreatedeventtype.md: - id: 6d8899980bf4 - last_write_checksum: sha1:0365bfe9e0c71ba85fff35c999013eca350d5332 - pristine_git_object: 63afeabd857237b4c953e0f81370652473963ceb - docs/components/openresponsesinprogressevent.md: - id: eb1c9597416c - last_write_checksum: sha1:409affe8297ab4e3189ee766a265dd7baa720dcb - pristine_git_object: 9ac152a29e39953b4359c1fe0975e7cd5dc64e57 - docs/components/openresponsesinprogresseventtype.md: - id: 400282eb4448 - last_write_checksum: sha1:284babbdeffb8902ac40086042a646b50cddfa10 - pristine_git_object: e88886f738fef9ad22e5efc74e3e0ea2cd8ceeb3 - docs/components/openresponsesresult.md: - id: 9795b7de3f92 - last_write_checksum: sha1:90beaa7103cc4f9a333285c90e186ba412fa037d - pristine_git_object: f41bfcc4855b54c33cd0d4c47eb25b91f6d8fedd - docs/components/openresponsesresultobject.md: - id: a8c7f7bc0b24 - last_write_checksum: sha1:3df49df80dda49ea4cb53f913931fd4754769b66 - pristine_git_object: 1ae6c220a9c087af683d65806061ef350e7f1fcf - docs/components/openresponsesresulttoolfunction.md: - id: add7bd8ba16c - last_write_checksum: sha1:e54808564c7f2d988743c781f1049f86e1ebb0c2 - pristine_git_object: 01ce9e3ba45dbad7407fcb075c5a068ae66ed022 - docs/components/openresponsesresulttoolunion.md: - id: 3da3bd935d27 - last_write_checksum: sha1:07299abfdb408bacaa372bafb3edb4e946fc6108 - pristine_git_object: a284d86e98ad76267fc585c6cc6a9bfdd26c2bf0 - docs/components/openresponsesresulttype.md: - id: 11e423f51c0a - last_write_checksum: sha1:aafa032ff25d8adeec0c0bd0d995fdcebecb59b0 - pristine_git_object: 1fd0de22bc2eadd015eb6e04c46eafa3dc992af4 - docs/components/openroutermetadata.md: - id: 7d5b19c796e5 - last_write_checksum: sha1:dd7b644e0859928b6685ebe073946b2af58a3742 - pristine_git_object: 60461ffa8bfa773b9d15c7698fcac23ece59fb62 - docs/components/openrouterwebsearchservertool.md: - id: fb93a3700123 - last_write_checksum: sha1:9bea49bbae5d084bf15a20caa095165fcf14a334 - pristine_git_object: 6e90c6e024b0efd7295575650bd79133ffe6a33d - docs/components/openrouterwebsearchservertooltype.md: - id: 16e1e8501319 - last_write_checksum: sha1:6d83c960b1b1f5be7be0f0f6f6b71d86fb160cc7 - pristine_git_object: 947a0b4decad7398ad4ddd0ff70a3a8cf95c5e87 - docs/components/operator.md: - id: 63449f6362da - last_write_checksum: sha1:11b3d7ad51195be1e48a90e2861633551b9992d5 - pristine_git_object: ffa82a743b58e9352a9dfad57f7a4a94c629944c - docs/components/order.md: - id: 16e6ae6962e7 - last_write_checksum: sha1:a060705e562a2f3fc024c4fd8aa80604535b0bc1 - pristine_git_object: b0e21fa3c30d5f4efb71936cd033937d0b0ad8a9 - docs/components/outcome.md: - id: 86f24b0ddb43 - last_write_checksum: sha1:3275ec6332678a9016e5a383214e19fd480c61ad - pristine_git_object: ca5a5774555782d3e9ed5e39b4ed539884a3453c - docs/components/outcomeexit.md: - id: d57f8d2a43dc - last_write_checksum: sha1:2d6e2c69f490095a52315878029b2c28d370db14 - pristine_git_object: 8dc8c158446e999d54278fff1f2630afbc9937af - docs/components/outcometimeout.md: - id: d585ebd974ed - last_write_checksum: sha1:2fc4fd683d643841e11834df9987eb2da5b35849 - pristine_git_object: ae2fd6dc6f3f0794e45f798f6b4c99fa2d20a56f - docs/components/outputadvisorservertoolitem.md: - id: 6bacdcfb50e4 - last_write_checksum: sha1:c28cbd5979c0c93a8f2199a1b3518e0e4adf581c - pristine_git_object: e7e5688819022c709d79bbc7b38a2e44059aef8b - docs/components/outputadvisorservertoolitemtype.md: - id: 580d3da2d5dc - last_write_checksum: sha1:edc0472af5f126a9681a09ebd545322ea15411e5 - pristine_git_object: e126a806c9668cfd6ba0400de8338130878b7f85 - docs/components/outputapplypatchcallitem.md: - id: b300dd735bcc - last_write_checksum: sha1:a4351bd6de39f88c19f448fae0a1b307ae637656 - pristine_git_object: 5a97bc9076a00ce89e3d78cba834fcdb0aa5ba69 - docs/components/outputapplypatchcallitemtype.md: - id: 0d574fbb1219 - last_write_checksum: sha1:7bec10beea9f5b12c88ab74e9884d02d0091a637 - pristine_git_object: d63680f8325b6bd06b0b1bbf50256b714486af07 - docs/components/outputapplypatchservertoolitem.md: - id: 31b40a05f9bf - last_write_checksum: sha1:018a47d1a2e118ad529f1498488aa1cd7ca1dba5 - pristine_git_object: 1d6f10ab527097cec8a9450b3b8ff2730d0f9454 - docs/components/outputapplypatchservertoolitemtype.md: - id: 0fc0eefe1f94 - last_write_checksum: sha1:4e7bd5264d2da2fb6fb31d4f17cff1c5f6159e41 - pristine_git_object: 6bcda35808f730436e4fe9e0c6a3411b72c026c0 - docs/components/outputbashservertoolitem.md: - id: 4835772a8420 - last_write_checksum: sha1:762c035946c6c7d58b272dd7adc66761e772a264 - pristine_git_object: 1008d6ebfa3de7850ae1b0ebc5d6d5c027f58bfd - docs/components/outputbashservertoolitemtype.md: - id: b822f3bac2fb - last_write_checksum: sha1:045b19bd838ba1a8d148a827b700d312ba9cd2ea - pristine_git_object: 60528d753e2113dfc4ec8b3b97eff63f5b425801 - docs/components/outputbrowseruseservertoolitem.md: - id: bb331a0a59bb - last_write_checksum: sha1:4baff51073d1e0b8cb724411a068e1b60dedef64 - pristine_git_object: 240e7d9741e9d6405a5e68c852f041ca4b477327 - docs/components/outputbrowseruseservertoolitemtype.md: - id: 5443792d20bb - last_write_checksum: sha1:bf84e13c162b48aa42cd6eeff125a752a3ceaa4b - pristine_git_object: 09b9d7d6a0d608702fa83d18b5e212b40569fb7d - docs/components/outputcodeinterpretercallitem.md: - id: 1e909305d0d7 - last_write_checksum: sha1:255322a6005c7ed1e4f62ebb9dd7e4c40177083e - pristine_git_object: 992a9971f979141c3da52d3ffd21489e1f2e9ad0 - docs/components/outputcodeinterpretercallitemoutputunion.md: - id: 20b1004f0b3d - last_write_checksum: sha1:29fa7ad397141191b331383f8931d77b1bef4000 - pristine_git_object: 458ad8c97d2d4f05dc5858b26b062a48520482f2 - docs/components/outputcodeinterpretercallitemtypeimage.md: - id: cd44f1bc4365 - last_write_checksum: sha1:1384b3deed86eb61ecbba6e6bfe4db87b95665d0 - pristine_git_object: c2a090dc86cb16e865c1b70f0b93893a25096e1e - docs/components/outputcodeinterpreterservertoolitem.md: - id: eaafa674fcfc - last_write_checksum: sha1:28c0bb8b3f4e1925d63066e6e450945ac1708bfc - pristine_git_object: ba02a1bc7616be6e0d7dac6e86d73b194055a9d9 - docs/components/outputcodeinterpreterservertoolitemtype.md: - id: 3ba159197184 - last_write_checksum: sha1:99d08eca63ae6f530d0a0d854662e57210b87e66 - pristine_git_object: c5039dae98620bb96457d264702586d993b89853 - docs/components/outputcomputercallitem.md: - id: c67aa5789709 - last_write_checksum: sha1:16763c6bd0ef2cba4c98f675bf9bdda65585e172 - pristine_git_object: ad8023fe1cf62670a86cdcd6fc93f81e2365721f - docs/components/outputcomputercallitemstatus.md: - id: 2b335f7927f0 - last_write_checksum: sha1:0c167ca5a567467294a48add5f2aaf056ddb81e6 - pristine_git_object: 72afd5f088a1c8fe87c505aed8d524cf160297dd - docs/components/outputcomputercallitemtype.md: - id: 93a8202e16fc - last_write_checksum: sha1:3d997f3397a92ffd8d05ff539073e06c38b0e2bc - pristine_git_object: 6433a41ff2a718dc451382f1d3a5e616e7c6d5d9 - docs/components/outputcustomtoolcallitem.md: - id: 5da0a60e34f2 - last_write_checksum: sha1:34f4aee85faefd77cdd9e6768cd6de3ed4e31a41 - pristine_git_object: fdc80b16dc73c80d4d8d2685f128defd32eb1762 - docs/components/outputcustomtoolcallitemtype.md: - id: 57eeb19002ba - last_write_checksum: sha1:42be29623e1f16ee8aa483966aa0e2a430b3ed73 - pristine_git_object: 2d44dae494019cf25037f7c36311f1bd0f4903f6 - docs/components/outputdatetimeitem.md: - id: eccb35ac217b - last_write_checksum: sha1:426d333d7fa20b3da448c40c5d1d6f0cd6667ebb - pristine_git_object: a7fa2c93c39329d22f3b7a3a3623b2761e81430a - docs/components/outputdatetimeitemtype.md: - id: 442b4d04e81f - last_write_checksum: sha1:57d010210f56af5a8cd00988ccd7c9032a7799f3 - pristine_git_object: b6680f420d6cad71e6e6012787f21c8fdc11e42f - docs/components/outputfilesearchcallitem.md: - id: e1453f81fc58 - last_write_checksum: sha1:adf0a841d4566984111a90563062be453b3fbb87 - pristine_git_object: 6fc2b2bc8f1f69e7cbf45a035b8a2f2db9079011 - docs/components/outputfilesearchcallitemtype.md: - id: 9879cb2103c5 - last_write_checksum: sha1:f3ed9f8762aa542168e2ccf5a4b7a9dc108dc4c8 - pristine_git_object: a1710707c286ba7a953f582fbd58d43b0ac380c4 - docs/components/outputfilesearchservertoolitem.md: - id: 00acb647b753 - last_write_checksum: sha1:ebdf1bb2ef2568dbf9e7a4a0d1868f3c89cbcfab - pristine_git_object: 30874270a4ec1a93e80d5512dd8247e8a0de7d67 - docs/components/outputfilesearchservertoolitemtype.md: - id: 706d9134f7f4 - last_write_checksum: sha1:2a870670b74028e5d40aac474e3cb64527a740f8 - pristine_git_object: 52d2d39bfacfe9086893c241a4bc4e22f7d13ddc - docs/components/outputfunctioncallitem.md: - id: a0b3dcf93469 - last_write_checksum: sha1:30c6f678351da68f90cc92d45d6c477ab0aee6a4 - pristine_git_object: 44d9e070c54b27288d5ff2f73fe97f920c4c5eac - docs/components/outputfunctioncallitemstatuscompleted.md: - id: fcce7d103880 - last_write_checksum: sha1:a555c5ed9cfba8bb91a9f3bbfa561a4df06e1d6a - pristine_git_object: 55c2fb905bc9a38a14dd34831eb948d8506e20e2 - docs/components/outputfunctioncallitemstatusincomplete.md: - id: 160507e235ae - last_write_checksum: sha1:3c215f0c5e21eae91fbf5eb26ae468e468e4df9b - pristine_git_object: cfcd0c34f681f7f3a9ef7c9bd0f896521b097257 - docs/components/outputfunctioncallitemstatusinprogress.md: - id: 6616c36657a7 - last_write_checksum: sha1:eb94dd69b8444f41acbc8982fa0962a54cd7f78a - pristine_git_object: 6e112d842e6f4cc7a1778d008ed21b8c1add919e - docs/components/outputfunctioncallitemstatusunion.md: - id: a3604a9333be - last_write_checksum: sha1:bc86be445c5ad7f1761d9c786a7bd448fd0d80aa - pristine_git_object: 374d455477674e030c8725bb8ffe18d27f22242a - docs/components/outputfunctioncallitemtype.md: - id: e4f072d4f1d1 - last_write_checksum: sha1:042aa6381e2b6b199e9ec48f1554f011403525b6 - pristine_git_object: 31066e50f45a2f32c35d0389886757885704ea4a - docs/components/outputfusionservertoolitem.md: - id: 886e6be27ec2 - last_write_checksum: sha1:b3758081c485683416158c2f10c228958f60055b - pristine_git_object: be5e88a6f8bb73b9e2e7aaec2a8b4a84661e480f - docs/components/outputfusionservertoolitemtype.md: - id: 93233bb8c5d7 - last_write_checksum: sha1:5e9a0f90c938eaa5fc231859f48f5b9673b6b00b - pristine_git_object: 60a41c468727f288331bd5b91a547edb2969661c - docs/components/outputimage.md: - id: 6f1d41cfe2f6 - last_write_checksum: sha1:5bb1fcc6bb8c49f3e3d1a0171f0cc7d2b661847a - pristine_git_object: 2f533e0c19456c28e6733a180b3be570c80ed8bc - docs/components/outputimagegenerationcallitem.md: - id: e91e03b12978 - last_write_checksum: sha1:9128df964c87da7033866dc035b806b2012ec070 - pristine_git_object: b3f7449eaaaabc75d29f3af78e16ebac44cbc8c4 - docs/components/outputimagegenerationcallitemtype.md: - id: 0a38d9247096 - last_write_checksum: sha1:9907040d8512c264d437364514ecbe6db6d2f743 - pristine_git_object: d7d592b96122136f2e4becd5edc72b95062d6237 - docs/components/outputimagegenerationservertoolitem.md: - id: 0a39a1c10949 - last_write_checksum: sha1:794cbf0f99dc7ea2739d94d9ab96e2f3f07bb323 - pristine_git_object: ec9409ff0690e6787b0f464c83aa9cf5753fb4f6 - docs/components/outputimagegenerationservertoolitemtype.md: - id: e8483d8856aa - last_write_checksum: sha1:43f034d1b716ef2878be034bb01e836395c7b686 - pristine_git_object: bd9e1fe6213d47f2eb203ae3765551cae69784cc - docs/components/outputitemimagegenerationcall.md: - id: 1338bdb69860 - last_write_checksum: sha1:d08ae2d3ad68eadc96ec27786fbe23a32a0aa82e - pristine_git_object: 735eb058959e7177bd51fc04682f2d2a1a22e61d - docs/components/outputitemimagegenerationcalltype.md: - id: da05f040f584 - last_write_checksum: sha1:a7392cdfaa9599c069db92faf4b9f9a87603d29d - pristine_git_object: d9e663fcae49dba7885223f4f0848aa9f9a23002 - docs/components/outputitems.md: - id: 92565743132e - last_write_checksum: sha1:8cf85818cb3bf198bd3a4c00e8e3c3193f187d1d - pristine_git_object: bf2538cd707ab2f40a4feb4f4aed5f4051f6b66f - docs/components/outputlogs.md: - id: 0821eefe9546 - last_write_checksum: sha1:1ff4592093bd2fe28038cc8db28bee6a35025c96 - pristine_git_object: 45b477fbc8bf92fb6e5441bd9d198a90b97a521c - docs/components/outputmcpservertoolitem.md: - id: 19fb7f7d6864 - last_write_checksum: sha1:26f0997f15397e0648b85d05331a78e0da84b485 - pristine_git_object: a9e3a8223a8f5e54005a845a858b0c8bfd3b0b7f - docs/components/outputmcpservertoolitemtype.md: - id: bd581943f317 - last_write_checksum: sha1:ba58cfc0cbb268628ac3bb09b3f18593093f9f53 - pristine_git_object: 368417c285d7e3dbee81ef64393fe52c24d1ec00 - docs/components/outputmemoryservertoolitem.md: - id: 77b3b280d389 - last_write_checksum: sha1:7c369c877e6714193c82f7a3d0571e45dc18db41 - pristine_git_object: da0de56911025a180c945516b82b88546adce0fc - docs/components/outputmemoryservertoolitemtype.md: - id: 853f37d4ee26 - last_write_checksum: sha1:ae07c21e90f54653e998f6149ca79a1d6e6eae74 - pristine_git_object: 3c78696d67e73f6bea782a99ec4b2dc8bdf43f4a - docs/components/outputmessage.md: - id: e0ec2ca7f0e2 - last_write_checksum: sha1:399e00c91eb89ff6741e058f911c57ac0e3a160e - pristine_git_object: e59886ce15b46ea82f8a9921446187b75b00d4cc - docs/components/outputmessagecontent.md: - id: 034f3de27e7b - last_write_checksum: sha1:39b6fda5c977820fe327628faaa7617ee569c22a - pristine_git_object: d8ae814ddb4c7da2357ed9778a312a0944b5a331 - docs/components/outputmessageitem.md: - id: 3d3fe949119b - last_write_checksum: sha1:52efe2e9127aeedb2853ae259fe606201b7de836 - pristine_git_object: 631ba682b4bfe921f377c517fd89f01affcace53 - docs/components/outputmessageitemcontent.md: - id: 055891480f4f - last_write_checksum: sha1:ef754b5f638dffe88175af6a3fb73df886419983 - pristine_git_object: 36ee71813b2fa1da0da2ee6c4880188ec31206ed - docs/components/outputmessageitemphasecommentary.md: - id: 2f1503c77ccc - last_write_checksum: sha1:8c629f06c0932a055eea109b38bf473071093cf5 - pristine_git_object: ee704ed970b26e71a035a038d8cb1f8bb3b08356 - docs/components/outputmessageitemphasefinalanswer.md: - id: 6c93bcf38b39 - last_write_checksum: sha1:09078742f06217af0cea393cd7d2a0e4066d3fa5 - pristine_git_object: b3b952d68cf5b9d3a1e1bb6d8d4ae106f08893f7 - docs/components/outputmessageitemphaseunion.md: - id: 9b69d9a64777 - last_write_checksum: sha1:46c661c945174ee33849121e054aa0fe430ad5ec - pristine_git_object: 2fbdf87dd8ae6021dea0a3d2cd7c2c2f22c71529 - docs/components/outputmessageitemrole.md: - id: 496e4c217acd - last_write_checksum: sha1:846641600a4aac901bb19ba994b3cb34dc8c44a7 - pristine_git_object: b732b0a89cbda7fa2db0c466a265487c57b1871b - docs/components/outputmessageitemstatuscompleted.md: - id: b6cd1cc8ba33 - last_write_checksum: sha1:7ee1755e9a219db41a2b6ad766dc40bd8f1b701f - pristine_git_object: b307f80dab02fc912c47e7c97d70ec4c3464aaaa - docs/components/outputmessageitemstatusincomplete.md: - id: 180497f5c7c0 - last_write_checksum: sha1:536643179657467fb588fa64b3aa846c4cca0525 - pristine_git_object: 1355b75f2bc66a7d4c3510aa60005d15b93e11e6 - docs/components/outputmessageitemstatusinprogress.md: - id: eb8612667256 - last_write_checksum: sha1:26786e5b1f4ce86b5ad4141af22e99de9467dbb5 - pristine_git_object: ce9332fdb02355d2c237bd10984e5eb83ab27234 - docs/components/outputmessageitemstatusunion.md: - id: 7974c9a4d828 - last_write_checksum: sha1:39a2ffd313f8732210cee0aa1debd37ff8f0827e - pristine_git_object: 63ccd7c1600c54b18d2a18ad0b838cb8f757d02a - docs/components/outputmessageitemtype.md: - id: e98758a097b1 - last_write_checksum: sha1:692a033ea8ac6255de686529ddd737a75d84e3a6 - pristine_git_object: f3ed5615b60bea26ae102f1ccbef963d3aceec5a - docs/components/outputmessagephasecommentary.md: - id: c416b300e5bc - last_write_checksum: sha1:d09503d5a12f2fd238464caa256bfbfd61bd0627 - pristine_git_object: 1053c343d0c25c671cb520a01dcf04b6e1b55c5c - docs/components/outputmessagephasefinalanswer.md: - id: 3524cc1faba3 - last_write_checksum: sha1:b97064cdbfaaeed77bb2586d5b2e450cef17b013 - pristine_git_object: ce8cf69597eda00ed4f86109c4c6dda5b017428e - docs/components/outputmessagephaseunion.md: - id: eefba3f54379 - last_write_checksum: sha1:4c68a072da3fb0febaa33268d70c1dc5cd577624 - pristine_git_object: e5d9815d3538eb3db3f07c9a72ac9a2bbf2fa86a - docs/components/outputmessagerole.md: - id: aa0f2e7836a8 - last_write_checksum: sha1:8dd78ef95fa20e779a286470b63d7b2a960eaa16 - pristine_git_object: 21b161672376a909c3c6001faf08384c36def527 - docs/components/outputmessagestatuscompleted.md: - id: ff40415e6f24 - last_write_checksum: sha1:ea59c934372c4d89b46cf49485a11f7f9db08ad4 - pristine_git_object: 2b0254b54ac965cccf38402134f7f327c666426b - docs/components/outputmessagestatusincomplete.md: - id: ca1a9dea3732 - last_write_checksum: sha1:93b7be11330fede3e8059dc9a5fc5eb70d9c9226 - pristine_git_object: 3146b10a819f3b2121590b7037fdea012794d271 - docs/components/outputmessagestatusinprogress.md: - id: 4ad18865a578 - last_write_checksum: sha1:b61b67d1b11bfdeedffd0fd02bee99169a208d18 - pristine_git_object: eb31df43644e65ccbdf736e2321c9765a7f422b1 - docs/components/outputmessagestatusunion.md: - id: 7a62142dd1f4 - last_write_checksum: sha1:c7d9cbb0c993a850b86fa903101cc50f1c143ea1 - pristine_git_object: 6dae9adf19e27d54a9155c9bb9214db261155bff - docs/components/outputmessagetype.md: - id: 19adca1060a8 - last_write_checksum: sha1:797d31ef56cce6e7e770677288b56b3c3822d941 - pristine_git_object: acbedfe1aca86bfe4d682abcd075b89d872e9e06 - docs/components/outputmodality.md: - id: 8e1105f01041 - last_write_checksum: sha1:d3c1b4ce81cdf2858288683dacbe426698793a45 - pristine_git_object: 2e0633eee8835d45f782af9a76b1d3d866f70bb6 - docs/components/outputmodalityenum.md: - id: 9e9b5b751962 - last_write_checksum: sha1:e445a894b182e6fd805d5b9310d13b8a8520349d - pristine_git_object: c2beec6de41ecb535d9b22a97ad3a21f8e6a2f28 - docs/components/outputreasoningitem.md: - id: 5196f1ee0df3 - last_write_checksum: sha1:05f08cf1c1d78df5d87acc3ed8e4620e64ef2b78 - pristine_git_object: 9a3cbf8f3f0b118abaa8a41d1983c69d93fa68ef - docs/components/outputreasoningitemstatuscompleted.md: - id: 35ed5dfbdcc9 - last_write_checksum: sha1:78a2aa4842aab41e9734429e08c571430162a80e - pristine_git_object: aae076f344a70dd4a30937cb9b402321ac98af9e - docs/components/outputreasoningitemstatusincomplete.md: - id: 43b4ad54e87d - last_write_checksum: sha1:7e53e549866c95746c3bb33abf6a5b59a72619f5 - pristine_git_object: 6ae953e7faf30ef4b608737c5ab77ca71cacce62 - docs/components/outputreasoningitemstatusinprogress.md: - id: 2b59b3b21a92 - last_write_checksum: sha1:dba9bb9c65fa08cdcd58c6ebc0c696c8b28e391f - pristine_git_object: af4394f52256d0437f267b9313add877d21192a1 - docs/components/outputreasoningitemstatusunion.md: - id: 77e1e7fa2e9f - last_write_checksum: sha1:34e885561f24e3a3cdb024e6da976c67277e6f00 - pristine_git_object: 5c48772bbfe97445f03818c840d0f434fe4dc42e - docs/components/outputreasoningitemtype.md: - id: 2efd271441f7 - last_write_checksum: sha1:36a63bf61d927a595f3e58dd0b607a8937db9ff3 - pristine_git_object: 24800454b81c6b2f9a0180f283d793216bd90384 - docs/components/outputsearchmodelsservertoolitem.md: - id: 17da96b2505f - last_write_checksum: sha1:da40a4743d0ae6385588944cac094ce9bd4d14c9 - pristine_git_object: a5e1fb16896dc6841105b7f01e735539b8876a5b - docs/components/outputsearchmodelsservertoolitemtype.md: - id: 37be34b271c8 - last_write_checksum: sha1:237762e35b5cf89509bc3bf8b261f174016d3903 - pristine_git_object: dc9df5ca2122a044efa3d2ab1d13b2f957f67d34 - docs/components/outputshellcallitem.md: - id: 2b7a6e806c6c - last_write_checksum: sha1:ad433b0adde679d54416e5548bac1aa5d013292e - pristine_git_object: 8e786ea50f693ede16622d7d87684ac1db7a64a1 - docs/components/outputshellcallitemaction.md: - id: 19eaf8b17aba - last_write_checksum: sha1:47eb3c2d6965c15eae4c2ee99aaef31572fb78d2 - pristine_git_object: 0a3260f9afe122b8eb98367040f466ca4a55f7fa - docs/components/outputshellcallitemtype.md: - id: af4a54ed40ac - last_write_checksum: sha1:2d3bde4a84a177b6a8c54ec744e530bc7ff6bace - pristine_git_object: 8097dfb3c462487cd5419aa2219f755d77f4ea9f - docs/components/outputshellcalloutputitem.md: - id: ce29af51f880 - last_write_checksum: sha1:794b4fdb7885b5eb0f60973204d348855dacb370 - pristine_git_object: 1543afc790d7497967d767037fb221c641a18596 - docs/components/outputshellcalloutputitemoutput.md: - id: b9691ab35413 - last_write_checksum: sha1:35a719a15f8a22866238cc4a725971beaabd575f - pristine_git_object: d5059f498ec2696b6b66473461365a053b88a007 - docs/components/outputshellcalloutputitemtypeshellcalloutput.md: - id: 38aa50f0c8ad - last_write_checksum: sha1:497eff39dfcc79b381adf509b9ba70dd8dfd6832 - pristine_git_object: 9e2ef674ca5e736dda8f47ab6749ebc1df31d475 - docs/components/outputsubagentservertoolitem.md: - id: d52938a1b53f - last_write_checksum: sha1:034e536a262bb5162af5d89de941b7781b3e84f8 - pristine_git_object: a136f6241ff64496d53dd20432c465f9af592fde - docs/components/outputsubagentservertoolitemtype.md: - id: 4825eb0f554d - last_write_checksum: sha1:f33d221e6ca447e6ea10c61ba7a2d24b32bedef0 - pristine_git_object: 1fec3b0e22e307a64e258bb1582347b2e675d308 - docs/components/outputtexteditorservertoolitem.md: - id: 6c114519044a - last_write_checksum: sha1:7b90b5ce30ff6df03376e337e266dbdadfa751c0 - pristine_git_object: 06f7eccc2b458a3a5bee3f6e5f02b46e6ebb91d1 - docs/components/outputtexteditorservertoolitemtype.md: - id: 939ee7d54395 - last_write_checksum: sha1:3cfe652a6c4711060fe0d104102950bf3f7a9b35 - pristine_git_object: 78603c1ee2edfe1c78683dfa6d273bf63dc1024e - docs/components/outputtokensdetails.md: - id: 5d5eb3509e1a - last_write_checksum: sha1:f011b1d1a289f1a34210a81d5c144322735aed16 - pristine_git_object: 59bf4277688bf4500a9ac4dfce0e0c33fb4311f9 - docs/components/outputtoolsearchservertoolitem.md: - id: 5936350a7874 - last_write_checksum: sha1:d7e0189335ea808bc9c65ef6b5f6c8a69b78bce2 - pristine_git_object: ba436ee49f6d0a14368453c8738993847d6b9054 - docs/components/outputtoolsearchservertoolitemtype.md: - id: ce666db43fa6 - last_write_checksum: sha1:a20dc4692ec094bc22c7689f9ae05aafa2a757fc - pristine_git_object: 0083cab9d32c4c2364eaafd66c376220aa8ece54 - docs/components/outputwebfetchservertoolitem.md: - id: 9f1abd1711b9 - last_write_checksum: sha1:3372f2b1174ea8b800fbfee5b643d15b2fd5d872 - pristine_git_object: ece6f16e25f0fefd093bb9f0784d42ccdcd71c7b - docs/components/outputwebfetchservertoolitemtype.md: - id: 6e1e0de2a502 - last_write_checksum: sha1:0c7af6f7dce5a92e6c906e8edfd6524b949f0857 - pristine_git_object: a81ab5dff5c808fcaadefd99601f35fdeb765212 - docs/components/outputwebsearchcallitem.md: - id: 7d5a537f4c7c - last_write_checksum: sha1:ce3ad0c167fda0e6da21e0630112c740034e5d60 - pristine_git_object: ddb717fe01a0884b0f8e10cf2887a83ab4419160 - docs/components/outputwebsearchcallitemactionsearch.md: - id: 9f59c4212631 - last_write_checksum: sha1:756994237267ad25b63927f598215f72d7aa88d2 - pristine_git_object: db67ffae60eb48e19b47d5ecbabbe99306a19249 - docs/components/outputwebsearchservertoolitem.md: - id: f5fdb9904c43 - last_write_checksum: sha1:6b857eb4aec882ee3eea48b4e1a4bfe0e517664c - pristine_git_object: e82d86378b87dd74cc4e5d7a0f10f06f64aa5174 - docs/components/outputwebsearchservertoolitemaction.md: - id: b6b0cbb67ab8 - last_write_checksum: sha1:dd3fc92f2817d38d7e18cb0658ec425dbfc08e54 - pristine_git_object: 69be5b430a249f46bee3ff980fb3a43c8562ff00 - docs/components/outputwebsearchservertoolitemsource.md: - id: d43c7785b97d - last_write_checksum: sha1:5467399b41fa45234607c9e560ab0f0dada5fab3 - pristine_git_object: c48443daf6a5451f47d77c1530db12b7a6b2cc99 - docs/components/outputwebsearchservertoolitemtypeopenrouterwebsearch.md: - id: 7e76bc306963 - last_write_checksum: sha1:e4c09750dcccdb30e32b8ed8974770d25d754647 - pristine_git_object: 204598652178d2425622e6d73fe626b86ee0635e - docs/components/outputwebsearchservertoolitemtypesearch.md: - id: 00e6e8cd525e - last_write_checksum: sha1:65019a14aa26f42c0a0e754c17f50cd6ecfb1f2c - pristine_git_object: 5c652417ae82dd439989abefa6099f0a10f73909 - docs/components/outputwebsearchservertoolitemtypeurl.md: - id: 505e96bae165 - last_write_checksum: sha1:374b95b67ca2ca964059428006e4cfdfc7dffc60 - pristine_git_object: 0f61afffaa0d269fbc07069264e57b57be5b3e1f - docs/components/parameter.md: - id: d1b8871be7f8 - last_write_checksum: sha1:f25835d07a38e32f2ebf37b2e5df67c915bb0112 - pristine_git_object: c00420ef1c6db8f5c63d1372eef3a3f7b2ae63ab - docs/components/paretorouterplugin.md: - id: e4afc1e2a656 - last_write_checksum: sha1:8721ee5f64c6bb07fcbc1e3d40c04d9c3969e182 - pristine_git_object: 10c1195d432607fab7047d13fc5019e9b70bc09f - docs/components/paretorouterpluginid.md: - id: 353199e41ef9 - last_write_checksum: sha1:811dbbce35aa0fa7c3d55727e0061c1a6e6acc62 - pristine_git_object: 08be131910dd1e6bd88a103b022080eafdc54571 - docs/components/partialcoverage.md: - id: f09f55d1053c - last_write_checksum: sha1:0952353ecff862e0cd69170b03b50cb21b859a58 - pristine_git_object: face39408dbf68c7cdada7998daf36d09248a01f - docs/components/partition.md: - id: cc74439b2251 - last_write_checksum: sha1:de88a6dedcd65f73fca2bd1913f7cbfd0d62a4ba - pristine_git_object: 4f49e41600018e4f637c68dff196c78b912f8893 - docs/components/payloadtoolargeresponseerrordata.md: - id: d18653a5a59a - last_write_checksum: sha1:67a64e254ca93fa9115fd09bc3a2fb124c9c83cb - pristine_git_object: 197ba50a74a79f543c5c23f19a91df8848d94a61 - docs/components/paymentrequiredresponseerrordata.md: - id: 8f708f74af40 - last_write_checksum: sha1:7e562e9713bed00ee0af332eca1ebf936313f667 - pristine_git_object: e083b1f4b2e1470cb72994d1625937a78363e118 - docs/components/pdfparserengine.md: - id: bdc6d5dc0df4 - last_write_checksum: sha1:c067c380a8f05bec029d6e2ea339e00260e0412d - pristine_git_object: 8889dadd4b0ab13a4b0505ba1255e1718b51aa67 - docs/components/pdfparserengineenum.md: - id: dff22b29d290 - last_write_checksum: sha1:4e9e4de38617c4e98f5763fd4891c848867d2b8b - pristine_git_object: 87a419ab3588dea92d3569bc5b49607d5bf76293 - docs/components/pdfparserenginepdftext.md: - id: 5324e9930e4e - last_write_checksum: sha1:7097abc92c7493c8946214f29c0e96b18f4e7c6b - pristine_git_object: 84226b8778909aec357ac1207cba468a9351cd5c - docs/components/pdfparseroptions.md: - id: c0dac3d032e3 - last_write_checksum: sha1:dfd5d9867b4d2d540c6afb3092b22cbcf574c71d - pristine_git_object: 05a4fc47fb7c6111c9cc2349e5457408fd1eda29 - docs/components/pendingsafetycheck.md: - id: f8a4b06e4b7a - last_write_checksum: sha1:6b2ecccf62ced224c6dd5252b3f16aa202feec0b - pristine_git_object: 1923aac7c5fae150b9dc96ef9ee63797aebd31da - docs/components/percentilelatencycutoffs.md: - id: 2e543a8a2907 - last_write_checksum: sha1:8235ed4e1c6c74a0038d35db3e68571f55482537 - pristine_git_object: 6a2c04f7d3c8b6e9f1d5151b92bd08991b836e4d - docs/components/percentilestats.md: - id: 1b4159e54240 - last_write_checksum: sha1:33924fa3e9065174b3d235abfe1da6cd8de3a559 - pristine_git_object: 6f47431682a0b8df76b71f7088bd60ae3b719cdf - docs/components/percentilethroughputcutoffs.md: - id: 5b84667c97a1 - last_write_checksum: sha1:5dd867ac4a1fecbe3807b8b371f2537ade03f5e4 - pristine_git_object: dff209d8cd956e99615d1cf6e7cd06f072cdbd2e - docs/components/perrequestlimits.md: - id: b3e279b3aa17 - last_write_checksum: sha1:4b5e8c0bb453b54a0c31faffca45d3ded875be48 - pristine_git_object: f42074dab36af7d2b068c0b24652b7db672dc0cc - docs/components/pipelinestage.md: - id: 54d91561d6e3 - last_write_checksum: sha1:eb2d1e6b1ab6aa6a375476cb90ad5b2802824615 - pristine_git_object: 277bf3d9e447086cc9213f1bb473b18d779a2139 - docs/components/pipelinestagetype.md: - id: 9097aa0e97fb - last_write_checksum: sha1:6ad16307547f51c9daefc056485a04a6efc17b36 - pristine_git_object: e7cddd9c2a12ee48a3769d4447bd8583e137cf73 - docs/components/preferredmaxlatency.md: - id: 0b82201b730d - last_write_checksum: sha1:5dc1be79949b581650dbecd75ab4afccbf320a8b - pristine_git_object: ce96e64f8aabbc0085b02cffa107975c43a9284a - docs/components/preferredminthroughput.md: - id: a13cf3a5c7fa - last_write_checksum: sha1:977b30074dde478796286a42649cc8202b712419 - pristine_git_object: fd49bf88b75891b0f2a659a453ff3e3aa0d55ae8 - docs/components/preset.md: - id: 0aefb22d403b - last_write_checksum: sha1:572a22442c3302e54968d33a9ffc57f86573f967 - pristine_git_object: 52672af2ac4010cf36f76f492a82ade3d9794f05 - docs/components/presetdesignatedversion.md: - id: 9771a2a5595c - last_write_checksum: sha1:a09ae16bdd34ec3b3807cf2a68ea5300923250b7 - pristine_git_object: 2042f67413d167a11ab517dea9c9e6d23093df94 - docs/components/presetenum.md: - id: 76935ce2d4bd - last_write_checksum: sha1:2e3fadc44cf2f30bfd2bc9b6de316fcceaa56c69 - pristine_git_object: bd979f0e0a57ec55af8f2e8ce9e5a20b554da79d - docs/components/presetstatus.md: - id: e26bd87a2ff6 - last_write_checksum: sha1:e4f17dca20609affa7652ead9964a8ea030115bb - pristine_git_object: fb67b91f754a279463322dc05429d2fca4401798 - docs/components/presetwithdesignatedversion.md: - id: 4b8a4543197a - last_write_checksum: sha1:fab82d4c537672885ce3e9d61da5dfc081aae6fe - pristine_git_object: 83cb70870a74ea33634483654fa1c03406e5fdb5 - docs/components/preview20250311websearchservertool.md: - id: 0ba7bd853f96 - last_write_checksum: sha1:40e353bd8eaf5b4d97dd13fe1b0d67a56b2b56d0 - pristine_git_object: f21c73a89373f90d00520ef589e09b92560ffe23 - docs/components/preview20250311websearchservertooltype.md: - id: 7258d1f3ed79 - last_write_checksum: sha1:8fd6c12c225e6756938f25e97c6818a7477d9408 - pristine_git_object: 16caa8a6f0ac16b49437cb1a95e5c93781d98d01 - docs/components/previewwebsearchservertool.md: - id: b43bb7090a75 - last_write_checksum: sha1:fd4f36fb90ef38062733747abe1ada012edc59ff - pristine_git_object: 74fd33a1bd74da96a437fc2f72a450671f70c4e2 - docs/components/previewwebsearchservertooltype.md: - id: c6073c9ee3eb - last_write_checksum: sha1:46f579d5f71a87b20d7ca0674004ced55c37121b - pristine_git_object: acff7387bf13fae0aac386037cc19e5d36f55782 - docs/components/previewwebsearchuserlocation.md: - id: 36921d9aba44 - last_write_checksum: sha1:ed8c8dfd114b590b5da26a5f340e3d88080ba377 - pristine_git_object: 3d26cf99f11f223344ffbbc2fb8e494419894c43 - docs/components/previewwebsearchuserlocationtype.md: - id: fa0c85429645 - last_write_checksum: sha1:34d91154dfedd31083714270161a12817191c13c - pristine_git_object: 685705c19f968d6408d3bfc3d398eddb2ef5e52a - docs/components/pricing.md: - id: 15dca753d9eb - last_write_checksum: sha1:80bb9085218cbe75ef0623b86bc9f52a354b0722 - pristine_git_object: 69ac72cf96ac924243230189563bbe6a6dcdfc6c - docs/components/promptinjectionscanscope.md: - id: 285ea7802dcd - last_write_checksum: sha1:0fff83f064f6699f5a86c5068423c646a9fca69e - pristine_git_object: 02d5dcdfc5bec22a67a803487f4758df68ba098e - docs/components/providername.md: - id: fe24a77d9911 - last_write_checksum: sha1:9251a4df3259e1c6a63e4f7347262abbe0de59a3 - pristine_git_object: 5f381792df185806eb19e6ebabd813a56ab43e86 - docs/components/provideroptions.md: - id: 48594a6d2d81 - last_write_checksum: sha1:c672b409e17f8ac6aa7af0bde839038550520947 - pristine_git_object: fe43b8f18c5ca25745aa5eb9902aaa1399d96976 - docs/components/provideroverloadedresponseerrordata.md: - id: c2a8cc4ec6df - last_write_checksum: sha1:1d206d00dc0d91b5ceec470579c6ce345cc23d29 - pristine_git_object: afebc305bd99e4b9b682bc2b82aadf318767083e - docs/components/providerpreferences.md: - id: 22d442ed4785 - last_write_checksum: sha1:08d9e64287a564324af93fcde71fa7d13d05c66d - pristine_git_object: 2321236ed51accb2e65a5b54c9dd727d720f6bc8 - docs/components/providerresponse.md: - id: 4574bcbd4144 - last_write_checksum: sha1:de60f413818cc00ed5a4f6bb982c9dc5acc3899f - pristine_git_object: 09beea2aedab445e726f20fb9a9d3ed5ebb4df25 - docs/components/providerresponseprovidername.md: - id: 800bab487911 - last_write_checksum: sha1:87cfea6a4b25dd6af2a37db94b098f4657be99fa - pristine_git_object: 27b5b6256e9b4518068682241ac48ce193fb7cd9 - docs/components/providersort.md: - id: 290449b1880f - last_write_checksum: sha1:f15d65e5c226a222c3bfc0b9f55dd9ca0443d415 - pristine_git_object: 82a08f5d68f40b457dcd0685bc0ffaa47daf1922 - docs/components/providersortconfig.md: - id: 56a828258bd9 - last_write_checksum: sha1:979e7ccd8c9800941dc0d0f905b398e2797cdcc4 - pristine_git_object: 70db18a3a953e992834a54a5744f1a7245d081d0 - docs/components/publicendpoint.md: - id: 46f345cbc943 - last_write_checksum: sha1:ad470e4c83669a262f2c7ea5dbc308bd33b14a6f - pristine_git_object: de9798993c11b80d3974f160b2cdf5115bffd9ab - docs/components/publicendpointquantization.md: - id: c94b72bd3c23 - last_write_checksum: sha1:e79fcd7d4a2829c2f696b79f050e56f1343a86a4 - pristine_git_object: 7d0edd22dafe693920f18e0c0c99b852c6b3bb57 - docs/components/publicpricing.md: - id: 9d43651da8ad - last_write_checksum: sha1:a0307105d112c890670088159350ed59040629a8 - pristine_git_object: 0746b9999a7aa39ce957aef7cf72235cba2f16a8 - docs/components/quantization.md: - id: 0d17b4a78828 - last_write_checksum: sha1:992ee3fdd0f4e09c9f6e6426c413841fe34a86a5 - pristine_git_object: 7a0574a89d4c7836115ac16571dd32b7d9290914 - docs/components/rangecapability.md: - id: 790774ea2733 - last_write_checksum: sha1:120397200e2eea9f5f06e4d77329af171e0fd67d - pristine_git_object: 869b0a3d3c2bdc63a7e617281c1ac343d85b489e - docs/components/rangecapabilitytype.md: - id: d1afd4e509b0 - last_write_checksum: sha1:b591fbd5fa30109a985f7f91b136e52e3b1677ff - pristine_git_object: 2bb5777d79c16416dd0d7ab0539a28f37e77d8cf - docs/components/ranker.md: - id: 5a14b8d09a01 - last_write_checksum: sha1:56664aff547bdcede5fb21eec2731a58d393c949 - pristine_git_object: 1257699c91a2cca868fddf12b03767c04fb4fe47 - docs/components/rankingoptions.md: - id: 9f0f4d6c014e - last_write_checksum: sha1:0588cedf315010f03ba831bbb382cb1252eb01a9 - pristine_git_object: b1917b130163ab7252e49ce934d82cf8cc463a32 - docs/components/rankingsdailyitem.md: - id: 284cf2da9639 - last_write_checksum: sha1:f1a0f647bf514a800ee128f9689de2fe2e395011 - pristine_git_object: 54e6cc87d517e482c1ac183ccf82c0140f081d24 - docs/components/rankingsdailymeta.md: - id: 6e0da9cd4001 - last_write_checksum: sha1:b8d4b19c912849fdb8bcb368ab8fd69e79c8d95c - pristine_git_object: 29de269bdb6ef7a68d6611ca47122d56c50e63b8 - docs/components/rankingsdailymetaversion.md: - id: 3d7a17ae95b6 - last_write_checksum: sha1:9e2999b047c2e7ef2828c0d710f7428fd88496f7 - pristine_git_object: 6bf107f0b3c03140e6d4e894204a21564c51eca2 - docs/components/rankingsdailyresponse.md: - id: f8764b589bb4 - last_write_checksum: sha1:4d31d93b0df4cf990f541cc7f08649f8cb438c43 - pristine_git_object: 6af1ac55add5b53b6066157a854bf82d29d9df0f - docs/components/reason.md: - id: f3e06a9de94d - last_write_checksum: sha1:cf117327a941137c34db136304bf50e4801c996d - pristine_git_object: 1c21d0457d1c635b8eff2a46144cac5e24840183 - docs/components/reasoningconfig.md: - id: a2d51e262631 - last_write_checksum: sha1:28bd5e57b7c9fb68e3f9c6e78343dc6c1e4ea3e6 - pristine_git_object: cdd80327b2ef57eb8c50dba3bf85f0b338082883 - docs/components/reasoningdeltaevent.md: - id: 5d657813c9af - last_write_checksum: sha1:14999e0c8cf52d33c9e47309e7f82d85ed3e60ab - pristine_git_object: c523137050564025f9b567f458b80d6c92275bb4 - docs/components/reasoningdeltaeventtype.md: - id: 4bc6c0ee1182 - last_write_checksum: sha1:8eb7d791510905b901133c42357d712b799ba99c - pristine_git_object: 8fd61605be2b1caad008dafbc5fbae664c28b7b5 - docs/components/reasoningdetailencrypted.md: - id: 410e7c90e4d8 - last_write_checksum: sha1:74281a14bbee30728d728e5725c3b96e3b4da4a9 - pristine_git_object: 44d9d2da2d7729732d27d42e72e6af0912b2d7e1 - docs/components/reasoningdetailencryptedtype.md: - id: 7c94a00c5b1e - last_write_checksum: sha1:dc3719ca804f71cae4ea2fab5c69e5fdd6ee355a - pristine_git_object: c574453756cfe8a0b11155d8267ab3d82736c4ef - docs/components/reasoningdetailsummary.md: - id: e3376a9e2eee - last_write_checksum: sha1:52f5acd636cad24a90127d208e9f680f01979333 - pristine_git_object: 1a6e291928060e8df20e9655f6382048eccb031f - docs/components/reasoningdetailsummarytype.md: - id: 158ee2616b70 - last_write_checksum: sha1:18e9a212106b11407027d66c899b6e3ed0271344 - pristine_git_object: 6de96b93584ce0fdacd35a8e29907e85e6cc05e9 - docs/components/reasoningdetailtext.md: - id: 6c40c8515f9f - last_write_checksum: sha1:ab77e33177aab0a1d50c1b5430990d7eb6006858 - pristine_git_object: 52b113399c11cd4de5bc89875714452e6a788ffd - docs/components/reasoningdetailtexttype.md: - id: f1f8a16d1bf2 - last_write_checksum: sha1:fef97ea7ffa115a973e97000d3ae7a79266c8684 - pristine_git_object: 2a56e429c7736198136c527b5a026e9cf674de7b - docs/components/reasoningdetailunion.md: - id: 4f4ffac94960 - last_write_checksum: sha1:ee76cb356764894216247d29a2fcb4bbaffeb2b1 - pristine_git_object: 015b016c641583cebc499d826405c71f4e0a86b2 - docs/components/reasoningdoneevent.md: - id: 610fec27fa67 - last_write_checksum: sha1:8455dddf6f10abbf68cfe0704f6b1ae20c6401c1 - pristine_git_object: 5681555465e949d20ce1e3676757cf8407185a89 - docs/components/reasoningdoneeventtype.md: - id: 4cf951ef736e - last_write_checksum: sha1:e2e8bee66451ecf37dc65b38d919318f06899bf1 - pristine_git_object: 31d997aa9e0721cacdebfeb79ce3428d5ec79bf0 - docs/components/reasoningeffort.md: - id: ea6dba24a061 - last_write_checksum: sha1:53d8315d1f29bca1071672fbe583cad08f1cec81 - pristine_git_object: 225df68e53d3632bcd740e4f821d4f14233be403 - docs/components/reasoningformat.md: - id: c0483881ee4e - last_write_checksum: sha1:45038411b97c73c37fa000694770b06d13b0eb4b - pristine_git_object: 16654f0baf3850c248f3f13175dfc95ea794c8f7 - docs/components/reasoningitem.md: - id: c9f6a9187222 - last_write_checksum: sha1:9636ff42739babe7771b61dd105dd739ed18cdea - pristine_git_object: 5f15f758daf56a70ea09d08f2653c3e15aa7a8ee - docs/components/reasoningitemstatuscompleted.md: - id: 2b082c1445db - last_write_checksum: sha1:866fa1bb8b3f8d1d68ff689a2c4f715dfdf4ea70 - pristine_git_object: 32a3e88cdfd13a8f13415ebc4994aca952e5207e - docs/components/reasoningitemstatusincomplete.md: - id: d6e7e8ff830d - last_write_checksum: sha1:aa4a4fab7958b0265b34d96702b574ce8bb8d2c2 - pristine_git_object: 494c5e53f21a6bc34f7eaeec53f3d144c750eb3e - docs/components/reasoningitemstatusinprogress.md: - id: 5e35190c8ae4 - last_write_checksum: sha1:9bf16645391f87571b5a2032bf1dab032ac5fd96 - pristine_git_object: 3591f71a2809de9de19096943df7418ed5244978 - docs/components/reasoningitemstatusunion.md: - id: 2776fa9436bb - last_write_checksum: sha1:ea654d7c824d785c0c9ce42cca776775fe496f37 - pristine_git_object: c4a9a0e2ceb72cdba4fd6ef72aa7f039050cd1fa - docs/components/reasoningitemtype.md: - id: d6495b934f4f - last_write_checksum: sha1:10fb39eed56fa8e6c87d24fbd4f263fd0a80807a - pristine_git_object: c14b732036c588a59aee3b04f8bec51d9a58c140 - docs/components/reasoningsummarypartaddedevent.md: - id: 3297c69f1031 - last_write_checksum: sha1:6b1458b4d5819319e256ebf1517ea582a02cf384 - pristine_git_object: 38e8a644d74f02cd42b032419f88673876aa53e7 - docs/components/reasoningsummarypartaddedeventtype.md: - id: 3a4846a7c613 - last_write_checksum: sha1:bd6003eeb746078a313b7f27c4560aa2c33ecb29 - pristine_git_object: aa5ebb968e19fb8c96c0fab86ba3f4d8e697c459 - docs/components/reasoningsummarypartdoneevent.md: - id: aae02dc325d9 - last_write_checksum: sha1:7a63641014b358f068eadd984666a43887188685 - pristine_git_object: 6d17994d8b92e04e8a1578754324f514ca00554c - docs/components/reasoningsummarypartdoneeventtype.md: - id: 0630358b5fb6 - last_write_checksum: sha1:ce572a34e1cf9977e00bfca4838093088732772a - pristine_git_object: 9fec4ad23bad6f3f2e62ef6529859c58f9c70fd7 - docs/components/reasoningsummarytext.md: - id: c221ba8e3570 - last_write_checksum: sha1:62a0facc4c3afacac9c4bdfddb11387eea43b2ad - pristine_git_object: 9786305e20e3eafc8a2628e04edbe8981f08ed99 - docs/components/reasoningsummarytextdeltaevent.md: - id: af44f6e43997 - last_write_checksum: sha1:a6d737a401b8826f8d512af74043b7158c915d02 - pristine_git_object: c76001aa709deb724c766c7b1d8a7b8b080842a9 - docs/components/reasoningsummarytextdeltaeventtype.md: - id: cd79224d89a4 - last_write_checksum: sha1:4b1ac85310044496ef2b073786fce9a83d922be0 - pristine_git_object: b8d5ba75fbd46032fa02bdacad51a31225ad7fd4 - docs/components/reasoningsummarytextdoneevent.md: - id: 002e9b6317d6 - last_write_checksum: sha1:e7db0e468f38a4ec8303ac7a824ceffad5621fe7 - pristine_git_object: 1b1a217d8297b120751418ff0cbb86f8a752090d - docs/components/reasoningsummarytextdoneeventtype.md: - id: f398db687eb5 - last_write_checksum: sha1:771287f4db2462e770c576c243e836a6991390f9 - pristine_git_object: a241b1f81f3c9c26dea5bbbdc6fa37a19541b712 - docs/components/reasoningsummarytexttype.md: - id: 7579578d3af3 - last_write_checksum: sha1:bbae6e3bc66ffc4661ac12c300fbc2061588733d - pristine_git_object: af36e333e2e50af756433ceffb26f2eb08442b61 - docs/components/reasoningsummaryverbosity.md: - id: b7eebec4d7cd - last_write_checksum: sha1:4e73d230d13f73db44cb9282a40029154a127565 - pristine_git_object: cc36f39ba426e6e453162f8b7af7c067db604aba - docs/components/reasoningtextcontent.md: - id: 4178daf4c506 - last_write_checksum: sha1:029583e3e4ab024e55feffdf6a6949e48bd8ea17 - pristine_git_object: 500d7a1a932018966b1409ca75d0847bef8e1335 - docs/components/reasoningtextcontenttype.md: - id: 22b777e7bb71 - last_write_checksum: sha1:a43be1428333ef3082148054dcacb73b4b7a4ee4 - pristine_git_object: f3646d44686e7d48c526d8417b0a56db35d7290d - docs/components/refusaldeltaevent.md: - id: 9c64cdf1cac4 - last_write_checksum: sha1:8610f12e1fa4af528f2dda1d734b16f70ab70a99 - pristine_git_object: e791265cb95569755e82f8ec8d69885b6e43a27e - docs/components/refusaldeltaeventtype.md: - id: 24a36da3d484 - last_write_checksum: sha1:ab1a0ada35eb3123f18f64416ef9c9f1e415681e - pristine_git_object: 8aadcc15109d8163d6632b1a4ddf87314641e12a - docs/components/refusaldoneevent.md: - id: 66de77a0628c - last_write_checksum: sha1:2536f951d8c10846a6039f163055675ef703dff2 - pristine_git_object: d46662429754f1c006600e8f327244971c8d66d1 - docs/components/refusaldoneeventtype.md: - id: c4000667a2c8 - last_write_checksum: sha1:2ff86281263010d78e755cdd7289f5daffe05cbf - pristine_git_object: 7035e9e9bc9752c39ce6152d4691e92a55f34aa4 - docs/components/region.md: - id: 38a8f57aefad - last_write_checksum: sha1:a5bda39be649ced37c120ce277841c37985c5db7 - pristine_git_object: 0206a524803bce4112b0a9a88254a0b81dcaeab6 - docs/components/requesttimeoutresponseerrordata.md: - id: 25804cfd7f36 - last_write_checksum: sha1:fc01cafdce0dc5ea0e3def122b7885ab7afff9ed - pristine_git_object: 2e062ef576233d063d8117cdb312e2d88846ed33 - docs/components/requireapproval.md: - id: 4b47c7f7eca3 - last_write_checksum: sha1:4c86c2c85fbc89164db23754f283e5f9bb17e367 - pristine_git_object: 3da3106bc61497cf6f9f7f1b7283516d83c2f958 - docs/components/requireapprovalalways.md: - id: 55b258963d0c - last_write_checksum: sha1:ae288dd0e2e6c79d0742ae899b05901c87337137 - pristine_git_object: 327ede05f1747ff4b354d36d5862c8d80def5c10 - docs/components/requireapprovalnever.md: - id: 0492eb1833e6 - last_write_checksum: sha1:6bca2b6eb5f2a564173ae4a3e468c61e3293a002 - pristine_git_object: 7cd7f146635d6a24361f1b881ccbe4e1828e3abc - docs/components/requireapprovalunion.md: - id: b6f5054b7776 - last_write_checksum: sha1:9d6c60556b5dee2b3e581934a7e3d48b60034c57 - pristine_git_object: cc964d62c8f74f43102b289a0613c9b9b928405d - docs/components/resetinterval.md: - id: b03f377616f1 - last_write_checksum: sha1:1e7d12b699c50af0d04cce4cb73efe48cf32f49a - pristine_git_object: 0bb2e7cd4a22f1d0e52d75180639dd9125c0b542 - docs/components/response.md: - id: 2b40822178c9 - last_write_checksum: sha1:385337549929814b68441066e56ed7daa6183344 - pristine_git_object: 068fed8b0a212f1bdaacafa80310d07fe7ee1935 - docs/components/responseformat.md: - id: 21aa2dcdc770 - last_write_checksum: sha1:2ea5efe6bbf68d068fdf992ae335cc4fc2fcf7d7 - pristine_git_object: 86cd00504691f2fdc33549cb33e9b07d0c31dd3b - docs/components/responseformatenum.md: - id: fef1c313ab3d - last_write_checksum: sha1:935d113cac8fb79702adb5bc30c7540035ebb4a1 - pristine_git_object: 89912bf57d12ca881110486c0ca69342d38accd4 - docs/components/responsehealingplugin.md: - id: a9a3b6d3e0c1 - last_write_checksum: sha1:ba75992bae3382339f5f1e654a91da4cdd1f7eda - pristine_git_object: 0a90c208633e8b379812e7742ccaee711b05d0e4 - docs/components/responsehealingpluginid.md: - id: af80ec154093 - last_write_checksum: sha1:d5a3b91db105d63b61714b2bc638901d15e0dfca - pristine_git_object: 27004e94c62657639578572814955300bf60caa4 - docs/components/responseincludesenum.md: - id: dcdd5e53c3a4 - last_write_checksum: sha1:154df040e05c81e46dd8dd235fff354f41b7c8b5 - pristine_git_object: f69d88622286c505b54c290978c1ecb7b2e1562a - docs/components/responseoutputtext.md: - id: ef76a9bd7078 - last_write_checksum: sha1:8705b80d6a3db7ccdac8ed5a0fa63f2daf3a548f - pristine_git_object: ad73bf9fb78d3bbce3398fa6c89d684b1aea5abd - docs/components/responseoutputtexttoplogprob.md: - id: e1cf9d75cdc9 - last_write_checksum: sha1:79094726662b2d0757b9cd79178e63ac4691c1b7 - pristine_git_object: 73e27f231572c70cb205fed1fc8e21674046016a - docs/components/responseoutputtexttype.md: - id: eb2bc6b65d8f - last_write_checksum: sha1:103072feebd30b09d458646db4d0f4350a4c9a5d - pristine_git_object: 8c8a3d72507b265e29d24e7792edc352487c76ae - docs/components/responseserrorfield.md: - id: 0352cb1ba5bd - last_write_checksum: sha1:19734f3e9954c51112e3219231c2de6df552e3a6 - pristine_git_object: e21193bbab68ee5dfdb0a113e26ba70f82bcab55 - docs/components/responsesrequest.md: - id: cb5cd99790f3 - last_write_checksum: sha1:ab9017177687f0f272ff43fa0238172d526878ad - pristine_git_object: 9ea0e1056bd1e0adce85cf9c39af993c1aae5e59 - docs/components/responsesrequestplugin.md: - id: 20da7be12bb9 - last_write_checksum: sha1:0bb97c99ec4b7fd13321427b9aff9a2d8bb6d288 - pristine_git_object: d9cd71dbad8602ccffe96635c6e0950fccaabc1d - docs/components/responsesrequestservicetier.md: - id: 79d0f5c6bdbe - last_write_checksum: sha1:759cbf960f90a2680f905be11049e8f88cf6ecda - pristine_git_object: 9eff92befce7294a62c1beab6f47cf037a215885 - docs/components/responsesrequesttoolfunction.md: - id: 834bf2b22f82 - last_write_checksum: sha1:d7719be37affe12852b150ffaabe6dbfaccf6ae7 - pristine_git_object: 98ae0961e2afdbf95cdc71e2eee23c9c06972889 - docs/components/responsesrequesttoolunion.md: - id: d6a807777d03 - last_write_checksum: sha1:4a4794e3b931e824f43ff5590e0ed94f539b5140 - pristine_git_object: e57db617fb2807f716ce62195dfc96d5c34e828a - docs/components/responsesrequesttype.md: - id: 5bd80a5ef99f - last_write_checksum: sha1:96aba92528f15b2e26760ec90539b8fd7a0e9cc3 - pristine_git_object: a1b8e6cfcbd056ddb1daf6fcf7f217afde717698 - docs/components/responsesstreamingresponse.md: - id: 5d93a59c671a - last_write_checksum: sha1:7fc7227e197939bef3c858dff903899922871187 - pristine_git_object: 49042a626076feb210b0f9ea38404bd7a1fc2d2b - docs/components/routerattempt.md: - id: 5444722011a3 - last_write_checksum: sha1:27a4f026961813e1714009c0248e10841ef23c01 - pristine_git_object: fbcb54690c8f245dfd518ff8bf0b86e50c1c464a - docs/components/routerparams.md: - id: c76ec52146b5 - last_write_checksum: sha1:1fa168fa76be11fd84bcdcb2beefe3323a2c0c40 - pristine_git_object: a76b529f381742a56fc9b4720016023bb2d84156 - docs/components/routingstrategy.md: - id: 43ec0d203f4c - last_write_checksum: sha1:7a52d9b52c61317a0b6c886adc920995550950c3 - pristine_git_object: 42c33d595afcaf94acfb4b04e188af4b5e266ac5 - docs/components/rule.md: - id: dbcaf58c98fc - last_write_checksum: sha1:8f3d1a647870ec092677bcff48ded8123b387c9f - pristine_git_object: 5fda8b8e205bf5bda431c5bad8f32c3e014ed1a0 - docs/components/searchcontextsizeenum.md: - id: ba037b375d32 - last_write_checksum: sha1:1802fbb5223f07b0db2e7503e12f59647b3608f9 - pristine_git_object: 75d3a14d662e8a753b6f8c02082582d16d854226 - docs/components/searchmodelsservertoolconfig.md: - id: 4b60c7b1f071 - last_write_checksum: sha1:dc167ab001813af5bc0ae1769fe3f0ea15a75087 - pristine_git_object: a3dc6194e6abc9a0cc62bd9e20b7131fe106ab36 - docs/components/searchqualitylevel.md: - id: a4e6b74956c7 - last_write_checksum: sha1:027c0155e4ca55866ca5ef9cc4851b3df09f5cb2 - pristine_git_object: 4b8fd627a27f792e0e88e0afe406d7a552143f48 - docs/components/security.md: - id: beee40001fda - last_write_checksum: sha1:45b7b8881a6560a468153662d61b99605a492edf - pristine_git_object: 2e0839d06f821dd97780dc22f202dedf23e4efe1 - docs/components/servertooluse.md: - id: e304ebc583f7 - last_write_checksum: sha1:99e277666646ff89adce836927c58d9021fa6677 - pristine_git_object: 2532d4cd15c0a21efce64ce42719d6b24aa0a063 - docs/components/servertoolusedetails.md: - id: b14e315828c5 - last_write_checksum: sha1:2e4e747062c990a502a208c1c90382305e428fe7 - pristine_git_object: fb12e181963bb9eada3294d7a605b076f695ab58 - docs/components/serviceunavailableresponseerrordata.md: - id: 6d65ecfd7ad3 - last_write_checksum: sha1:c0e9357b45a58f3da2d3520b502cec7dae5f3446 - pristine_git_object: 797c8310a34ec5ac85628fe7d60706221f14e573 - docs/components/shellcallitem.md: - id: 7c90af9ed20b - last_write_checksum: sha1:cff1a19c10dae4fc68503ede7de302401bb676e3 - pristine_git_object: 770148e5a9eb0f7d52ffa3f3ebbe0e6396f9d460 - docs/components/shellcallitemaction.md: - id: 966c83480abc - last_write_checksum: sha1:c8aa1528fafe1a7130a4b43faf90b6daee3f4e11 - pristine_git_object: 5e0455dc912e22c53d313ed5261530528d5efede - docs/components/shellcallitemstatus.md: - id: 3686c616a4ce - last_write_checksum: sha1:5a462123fffcd6f4b60efe48d529739e32e246f3 - pristine_git_object: 62af9a8bf9f79ebddbec1ddab799b23156fb8315 - docs/components/shellcallitemtype.md: - id: c193046e306d - last_write_checksum: sha1:6343b1cd900ef6726449a15a2f4967be36c324d5 - pristine_git_object: 4bc6539fe90491885319b8bf597187c2f15ab8c4 - docs/components/shellcalloutputitem.md: - id: 7c8d9a8d7145 - last_write_checksum: sha1:7dd6d238883f7e70f5b08b077788bcfa1521aed7 - pristine_git_object: f5c1081bbb1f26458d9ba51c78309185220d53fb - docs/components/shellcalloutputitemoutput.md: - id: 3d5419f14a4e - last_write_checksum: sha1:929da03678fe61046fa1ef3cdb462981d3f90048 - pristine_git_object: 47c542cf09298d5bcd97b860d907f05a51fd17ec - docs/components/shellcalloutputitemstatus.md: - id: 4d98e96563c7 - last_write_checksum: sha1:88a3edc33171508aa9d35d9b145c992e00394d33 - pristine_git_object: 84c418c6101b4096a723aa749a226f7f78de644c - docs/components/shellcalloutputitemtype.md: - id: "070444798601" - last_write_checksum: sha1:f210535e0c6e9daf9b7759ac2e39ba968f18acb6 - pristine_git_object: f6d8055010dd9a16f8782e543809c37efdddb93d - docs/components/shellcallstatus.md: - id: be740b54a4e1 - last_write_checksum: sha1:2e1f280e6569a2f61d6f01da005a305fa028e783 - pristine_git_object: dad7011f973dd74f1c8861646b144a34e499337e - docs/components/shellservertool.md: - id: 3e196aa5ad05 - last_write_checksum: sha1:0019a7a2fb5879826ca7db5b779c3dd8a4fcad68 - pristine_git_object: 3441e6b088fa6b063f308ae20f62fdbe3133c461 - docs/components/shellservertoolconfig.md: - id: 5554d6e13211 - last_write_checksum: sha1:8b3c2f61e69dd323ee68cbcac927fce1e74b5e5a - pristine_git_object: ae12ad791cd5fa7a58888f6321be6835d159a849 - docs/components/shellservertoolengine.md: - id: 993a495122a7 - last_write_checksum: sha1:c8ef15b36c43a587cfc0ceed11e7542bd6515351 - pristine_git_object: 779361af63de499abb699349e9dc72d151c43f22 - docs/components/shellservertoolenvironment.md: - id: 3f55c90141e0 - last_write_checksum: sha1:504ab93dbacbd06423aa17f3aa53e729c47a2c32 - pristine_git_object: fbeb69293a339d7bddc1e7f874b35cecafdcdbfa - docs/components/shellservertoolopenrouter.md: - id: f7717ab697b1 - last_write_checksum: sha1:f73e65cb25fd10686349f4a2c15b58eea55ea82f - pristine_git_object: 82537f2b5dd34b6a04913a6a5337819cf5e18266 - docs/components/shellservertoolopenroutertype.md: - id: c4d23c750571 - last_write_checksum: sha1:e6107df8c352862d9ff0991768803cea090ce28d - pristine_git_object: 0a67ec31e1f41f5f4c47db26bb174a65cde14bd7 - docs/components/shellservertooltype.md: - id: 2086eb6391e0 - last_write_checksum: sha1:cd5bcb2096f1315814b3e1575d9b61c65a7a707c - pristine_git_object: f93562afef4e0a5650d347c4e02b69703cef8029 - docs/components/size.md: - id: e4d18c7f0385 - last_write_checksum: sha1:3ee0ddd204fe2b2758b0ab883a37916d9af2ca43 - pristine_git_object: 4334c6b14cfc9af110ca8818ee954a7048ff7331 - docs/components/sort.md: - id: 063e11fe2d35 - last_write_checksum: sha1:c8046f6bc1c8c61e823f49c846fe7ee6af3d0cdc - pristine_git_object: 4b07bd1be51b737783b69c8b3d71725fd4484a25 - docs/components/sourcecontent.md: - id: cd398c147ce2 - last_write_checksum: sha1:fa4c5eb6413b1b3439019994e24aeb1555b6db0b - pristine_git_object: d1c78e0ac7ea698f51c656b0e273878f1e434de1 - docs/components/sourcetype.md: - id: bd6802987652 - last_write_checksum: sha1:4584a8d072c0977ab588a830991c8c0ebe0fc285 - pristine_git_object: 7a5e671a65aae56cebe75e622bd37a6187bd74d6 - docs/components/speechrequest.md: - id: c5cba48286f8 - last_write_checksum: sha1:956140ea1f1ae63bf64fb9ca7e300c836c2c3eaf - pristine_git_object: cafc4863b5ddb822f56577f9261d8acc3b23803c - docs/components/speechrequestprovider.md: - id: ced2f821fced - last_write_checksum: sha1:a7776e99fa108cff7503a505629410431b406784 - pristine_git_object: 8ff96a40984f7e52c277dde4e4b84c7f0c2c1446 - docs/components/speed.md: - id: 90e63e8b808f - last_write_checksum: sha1:92580f4a6da348806dba53839ecc2c37e28e887b - pristine_git_object: e6a8e43475b211bb297606475c64371eac0ea9ba - docs/components/stance.md: - id: de29c9dfaf9f - last_write_checksum: sha1:dea71169cc0952b4ccc4b6a9dac2b6ab105d55f5 - pristine_git_object: 99b44b33449f95bc5d476036c9cbd00a29634deb - docs/components/stop.md: - id: 0d74a157c3ba - last_write_checksum: sha1:f1b797e3188274e4411a26f0934c1d455bd85bbb - pristine_git_object: c36d91088664634eb753f5029f6f5b444fa92b78 - docs/components/stopservertoolswhencondition.md: - id: 769cf0cd25f3 - last_write_checksum: sha1:58c37fc0bdfa1a3c7db9bcea2361caf5c2a5dbf3 - pristine_git_object: de9322bfef6487670132b126f5fb7ac99729e51e - docs/components/stopservertoolswhenfinishreasonis.md: - id: 7e749e31ca25 - last_write_checksum: sha1:be9bacefd9c297b7feb841c18343ce3b2b9fa2f4 - pristine_git_object: 800d87e74e3ff6da39e6294e7f637cf7505aaaf0 - docs/components/stopservertoolswhenfinishreasonistype.md: - id: dd74a3118de9 - last_write_checksum: sha1:9c71e6b15c1772de990a026ff99339796a74d941 - pristine_git_object: dc28f19962ad5ea449165df1164a6057cd44ee96 - docs/components/stopservertoolswhenhastoolcall.md: - id: e41cddb64798 - last_write_checksum: sha1:b65b8143157a46355cdcfc22e266e74d41cbc8be - pristine_git_object: 880c6797f884bea550f85aeae4cdae73eba27a2a - docs/components/stopservertoolswhenhastoolcalltype.md: - id: 51be701d2bdd - last_write_checksum: sha1:0c38bd9e75e755ce69f31b12d58ba27a1831749e - pristine_git_object: 2e4e6dd94feb03f060a6c5b90c5b9907ed92506d - docs/components/stopservertoolswhenmaxcost.md: - id: c15f4ac3297e - last_write_checksum: sha1:723b21e1a3216ec0c9a6c11eeda2c837d204dc9f - pristine_git_object: 5f1fcd59c181c18f8d210e6f98e40a77fb342dec - docs/components/stopservertoolswhenmaxcosttype.md: - id: 0e8bac1cf9f4 - last_write_checksum: sha1:6dcc9c57204343ce2713796b6178aadd8c579375 - pristine_git_object: ae3b084d1cc40ac1532ff38bb4e1ae3d708684eb - docs/components/stopservertoolswhenmaxtokensused.md: - id: 917b0e40081a - last_write_checksum: sha1:845570febc3bf81b79a9f95644b20f2104a86f14 - pristine_git_object: 08592938585ef5b4d1c4649c7025675d686ff48c - docs/components/stopservertoolswhenmaxtokensusedtype.md: - id: d105a1a72d0b - last_write_checksum: sha1:5a7bfae491cb5701ba74a81d6f5718fdc7294989 - pristine_git_object: d123cf300e4ef8618f532297422dd765c414a518 - docs/components/stopservertoolswhenstepcountis.md: - id: f62d9180e95b - last_write_checksum: sha1:2108b3ba7ddf3651fa57f5832d3961d0fa71e8bc - pristine_git_object: 6a04d819646907264c86bce476e00be165a6936a - docs/components/stopservertoolswhenstepcountistype.md: - id: dc639252cd87 - last_write_checksum: sha1:28b4861705aef19b8a99f766614bd9dbdfc9b308 - pristine_git_object: f42ef66eb75dff242524963317e00ead891c5451 - docs/components/storedprompttemplate.md: - id: 3d993ee9614f - last_write_checksum: sha1:71634e702b280adfe115e8bd6a2159c9eab2107a - pristine_git_object: 0b3d0bcfd7082915b45ef9a4a8e74422857dd665 - docs/components/streamevents.md: - id: bdfd7bf6c2b0 - last_write_checksum: sha1:bc6b66905697ce2589ab6ea247b1e834d6e0bc68 - pristine_git_object: 639fb4cd758757c7978a545c0373526a2fef01df - docs/components/streameventsresponsecompleted.md: - id: 072f9ee89867 - last_write_checksum: sha1:9f33add33825fc28ad93f36c26638728fc66712b - pristine_git_object: 6b54a3a71aa8ab520f1fab362b3161a9127b65a9 - docs/components/streameventsresponsecompletedtype.md: - id: ae6f4d1c656a - last_write_checksum: sha1:3b4a811a64fa72506ce33739e0967cc50d7635ca - pristine_git_object: ddfe3706869b6ba6c789baa92fc9e66080f2a80e - docs/components/streameventsresponsefailed.md: - id: ebfa5a8944e2 - last_write_checksum: sha1:92ee353537f9b1e02ef27f619ec94dfbed5c2114 - pristine_git_object: 06831d0d4ca5868c7e58a4f70809573901531fa3 - docs/components/streameventsresponsefailedtype.md: - id: ce5db8088931 - last_write_checksum: sha1:e6547cd19f15667aa269e864274223eff2479c47 - pristine_git_object: 9125dac025d67a9b69e11924f9a825ac447a25a8 - docs/components/streameventsresponseincomplete.md: - id: 615fa03678b5 - last_write_checksum: sha1:224c6ff052180c2e89f0e5a80ac298a1721cafd6 - pristine_git_object: 7676de4da6daeebec1424619a24083adcedd4857 - docs/components/streameventsresponseincompletetype.md: - id: a7ca0c85090b - last_write_checksum: sha1:bc6e0ac3818e418e766e8fe182a352e58cd3c41c - pristine_git_object: df61d8e41d68f39dcbf97e315b1c9a6975052d7b - docs/components/streameventsresponseoutputitemadded.md: - id: 28063376bbd6 - last_write_checksum: sha1:d84fd33ceae3aec2af312c307dbbda470731dbda - pristine_git_object: f03926c09d433fc5c50602a4bcf8131a5369d0c7 - docs/components/streameventsresponseoutputitemaddedtype.md: - id: 2c10b4c3cff6 - last_write_checksum: sha1:a2681759bd42f5d1efcd7418d4696b3e91469ff3 - pristine_git_object: 0b946d656ae917db5b24fe4573ebc44b1dd2d64b - docs/components/streameventsresponseoutputitemdone.md: - id: 2f634ca953f8 - last_write_checksum: sha1:fc6ec88f01fb4c233126535ca52f2993b054b9fb - pristine_git_object: cb73fd1340c48b1f9d67b146d987e9031b35f0e8 - docs/components/streameventsresponseoutputitemdonetype.md: - id: 1436a667cd8d - last_write_checksum: sha1:0d87b3b89f440a45cc887362809ea2f183dbebb1 - pristine_git_object: 9549068a77ad8f70f93dd6a911fc90982bb70ef0 - docs/components/streamlogprob.md: - id: 7a144e910288 - last_write_checksum: sha1:447ce32765ca1afdc8bbe092b3d97fd0b48fd324 - pristine_git_object: dd537cd00feba3ba461fbac6f2070bdfb1c88f47 - docs/components/streamlogprobtoplogprob.md: - id: b2f58ab0ba4b - last_write_checksum: sha1:38b5fc345aff1c89059d223f85b31a717aa29257 - pristine_git_object: 4f2e093dd4ace184096b017431053be92051d471 - docs/components/sttinputaudio.md: - id: a5385ca71d31 - last_write_checksum: sha1:57761225a6dff5c64ce2665b2540217a79ef49fb - pristine_git_object: 30f9e955a9f6959e2d5ac10ab5217283d6dbb0f2 - docs/components/sttrequest.md: - id: d8b35448e247 - last_write_checksum: sha1:1fbc9b9122417ac52db79870ca3cab8f066b867b - pristine_git_object: 5cb4441df65c4a469e4189ff72a3c16e0e2b44eb - docs/components/sttrequestprovider.md: - id: 7d5372214ddc - last_write_checksum: sha1:4e9537032283416751a1fd5cce41513d9c7b6899 - pristine_git_object: 8a0cf5047b57f735a8013388f5103f8a7c21f4c6 - docs/components/sttresponse.md: - id: b2b5aa72221b - last_write_checksum: sha1:50d1ac0fd4dd2455318ff68b8329d48c5436beb8 - pristine_git_object: bd49b0c41d764c6854d760cd7a7738e94e6e9df1 - docs/components/sttusage.md: - id: bda939de1537 - last_write_checksum: sha1:e11351ee3e6d4a0470f28a611080c00e9eed11f0 - pristine_git_object: 8d8525a4e7947322cbc5b35d82f87d76d7157b24 - docs/components/subagentnestedtool.md: - id: f1ac0bf22f13 - last_write_checksum: sha1:9c9c34831e5d2b73421281ac36cc2100d32d4f45 - pristine_git_object: 52cee326ba52e795dd864616e975da730b397630 - docs/components/subagentreasoning.md: - id: 28eb0e1a766c - last_write_checksum: sha1:0a2d377998ebc796f48259f9d81031aa3d62eec0 - pristine_git_object: 3e49330ffc6e7ae403873cfe3e8297ad188bcafa - docs/components/subagentreasoningeffort.md: - id: 068a2b1e59c4 - last_write_checksum: sha1:6dbeef8db7e15799fd0f87d4965ba5613a388396 - pristine_git_object: 57b95be94ff3162b0601124a9d6d9b49f49eecaf - docs/components/subagentservertoolconfig.md: - id: 07f1740a203f - last_write_checksum: sha1:3175e6b1db4977f98195f30c6e2391092bc017ff - pristine_git_object: 45a261d6ce97463045aa6d90765720108722eb99 - docs/components/subagentservertoolopenrouter.md: - id: 0049c5a944d8 - last_write_checksum: sha1:70d3153bf5ff0d5c78747a6e684a126917fd032d - pristine_git_object: f695a981599a6e45d91f4e6206010c8602884bb4 - docs/components/subagentservertoolopenroutertype.md: - id: bf827ad8b352 - last_write_checksum: sha1:fcb3cd3c4edefc7071ed2c71b7801567b1f883cc - pristine_git_object: f28523e50df8342437db36e0a98bffbfa69fefd0 - docs/components/supportedaspectratio.md: - id: 435dd9a15912 - last_write_checksum: sha1:25a608572d10d4c76eb9e4f45e16494bea931120 - pristine_git_object: 3601360f723ac37ac09e4b5fcb22b1198089a0c3 - docs/components/supportedframeimage.md: - id: ee9feca3fec2 - last_write_checksum: sha1:4ae34fbda72b5e31ea60cbd20b1a970bfca30056 - pristine_git_object: b2d0581008abf1dfee20454bfa7f0379d0ac9bfb - docs/components/supportedresolution.md: - id: b093756351e8 - last_write_checksum: sha1:1a1922f0e6b53ed4a83ad1877c318e2c0f53fa04 - pristine_git_object: ffb37fabf1622a890eff20193ffc86677a299f2d - docs/components/supportedsize.md: - id: 8322ab1a4113 - last_write_checksum: sha1:b037d4ca8c8a904d32ce03c73082ef2e55332d0f - pristine_git_object: c0f8f57e0192934d7cd0473b66f921b4452c7e27 - docs/components/syntax.md: - id: 0cf5ab254bc8 - last_write_checksum: sha1:632fc2775ec4066a2b1ee403579ff59bdddb4a91 - pristine_git_object: 4b82eb64344981f49f6a8fa220eb817427f4de78 - docs/components/system.md: - id: f1ffffdfc6d7 - last_write_checksum: sha1:1eaeac4ce1ea4ea1be7b7cf0a96273b045208e87 - pristine_git_object: 2ce86be589fcdc3d210cd50c2373cd59a5e4c503 - docs/components/taskbudget.md: - id: bedfcbf92d70 - last_write_checksum: sha1:c7add9b6d8e40f8303dc9575c51f21c333ad8883 - pristine_git_object: 097d7e4af92079998b9d9a1c0f0b0d55e63324e3 - docs/components/taskclassificationitem.md: - id: 86b268b60a54 - last_write_checksum: sha1:7f07577fdff0a45be7f186d4cebff4227be4c928 - pristine_git_object: e03f5457debc455787309feea466d7cffd97ce31 - docs/components/taskclassificationmacrocategory.md: - id: 98a4c75f676e - last_write_checksum: sha1:63c894b788adec15f2df8e0e8dbdf97dc5b94c24 - pristine_git_object: cdfd3111becda570309e4a471c522fa7b02d07f6 - docs/components/taskclassificationmodel.md: - id: d4b9a4653049 - last_write_checksum: sha1:3ee634a155a1b53602eb617e3afffc09dc18cb68 - pristine_git_object: 741953d15da9a7bcfcbc85ae7bd6ae954d88b96d - docs/components/taskclassificationresponse.md: - id: 2d2564e94621 - last_write_checksum: sha1:49ed0f9b59669a390346d22fa5c18e8d09964e07 - pristine_git_object: 285c5cbcef93a7aed10565461c2f6ee71367686d - docs/components/taskclassificationresponsedata.md: - id: 8aa33a036184 - last_write_checksum: sha1:1304391a25af40ebc87b37a62653d4775cfa24bd - pristine_git_object: f674f29f1d324be9237f9d90897c998a78cbe439 - docs/components/textdeltaevent.md: - id: 339fe3591c0d - last_write_checksum: sha1:97aed7ba0e23221806738f4ed7819f8aec0db957 - pristine_git_object: 0929ae6c0924c9c18d7251b5a313fa9e1833b20a - docs/components/textdeltaeventtype.md: - id: 5974fc3de118 - last_write_checksum: sha1:e1528095a4d640ed17fb13afabb333dddc6d7429 - pristine_git_object: 9cf69c3b33abbe4d7deb38eb9b9c9636c31c45ba - docs/components/textdoneevent.md: - id: ff45b02ca7a4 - last_write_checksum: sha1:3d08617548c5be1c7a59cc5acb6694a94c04e013 - pristine_git_object: 6162d84b58909f01fe1f5aba123caf56cd407148 - docs/components/textdoneeventtype.md: - id: f956af59ac8f - last_write_checksum: sha1:8e6b985ae16c0f7d56415e3502bdcd73e698c1d6 - pristine_git_object: 5c73058b054429983632f0542af4fc0fb50300c5 - docs/components/textextendedconfig.md: - id: 669e1815f825 - last_write_checksum: sha1:7751fbe499ffee299268428faa3a3c63a5541796 - pristine_git_object: b876df7514e8427c7eb7bacd42461924d5b0796f - docs/components/thinking.md: - id: a93790b9404a - last_write_checksum: sha1:6a58a4baca88c3412b6ba1fafa59d32cd10ab9b6 - pristine_git_object: 2bc38abbe21e1f575fe29747077211f91c9b0330 - docs/components/thinkingadaptive.md: - id: 6576c38e3b02 - last_write_checksum: sha1:4e5fdf88d78b04721fdc942c70b67b5f52b41f2c - pristine_git_object: d6b0d7552450c71e2d0f8a12c4beae592e730574 - docs/components/thinkingdisabled.md: - id: ec30237cdbca - last_write_checksum: sha1:73296b3a0ab7efc43f175096d7dafb46eeb96557 - pristine_git_object: 78f2ea53080eb2bf0cfc292e1539429f6e1451a5 - docs/components/thinkingenabled.md: - id: 28a220a73365 - last_write_checksum: sha1:784cb7e75b383ed2c288716830d701f2563feba8 - pristine_git_object: f8c28844eae476d93d80f9bb89812df998fe7988 - docs/components/timings.md: - id: 458f7a6290a7 - last_write_checksum: sha1:2fb6a4822a5d3046868380d5d1e4a1a6fd096ce4 - pristine_git_object: dd5a0d0fbd9e962afc1b88cd96cf9f563c356ca3 - docs/components/tokenizer.md: - id: f1ad3417d8d1 - last_write_checksum: sha1:4223f630f7d880b9288fb654f67817560fb2dbd8 - pristine_git_object: 3811d6eda7bcd0aee90a46b9091b729852d23b10 - docs/components/tooladvisor20260301.md: - id: c326f487709c - last_write_checksum: sha1:be03e557eee5ff2bbf363444af62e84848d28db8 - pristine_git_object: 387df6bd3e0fa12bbd9103cb75dc8c4052d1fbac - docs/components/toolbash20250124.md: - id: 2d02b2cc59b0 - last_write_checksum: sha1:b997a5d74adaf0799de43bb2e463f618f39a83d4 - pristine_git_object: 368ae7eb1017d84e7d7c5614acedc43c05eae2a2 - docs/components/toolcallstatus.md: - id: a3331842b25f - last_write_checksum: sha1:f1385923978aa4292c9db1baf735295706f4f3a2 - pristine_git_object: e3aadb1a488df23daa3344fca333bf3fe7637e4f - docs/components/toolchoice.md: - id: 0f8673cd3359 - last_write_checksum: sha1:c0b7546b9f2a2b4dde765c886acf6fa8bf087ed2 - pristine_git_object: 81c1acf0b116c9fbd7160fcc0bec16e4ff4f0bc9 - docs/components/toolchoiceallowed.md: - id: 515dfd66aa38 - last_write_checksum: sha1:5729b49ee5f1736fc43e8046c57ebe65479b6cae - pristine_git_object: 89cd22af3eb6da27984126ba7d6fd292ac49617d - docs/components/toolchoiceallowedtype.md: - id: 1609bc274da4 - last_write_checksum: sha1:10c591cedf1beea432a9ed7edf540a1fd62f9423 - pristine_git_object: 31f2f939e02ed27bdec9cbae6e3b9fd54b0876f6 - docs/components/toolchoiceany.md: - id: 329c45e7c745 - last_write_checksum: sha1:0c5e06a797fde8289d1853427a97414cb77cfa6c - pristine_git_object: 1d97dd327e0378ae7afbd3f2a3f63a94373944f2 - docs/components/toolchoiceauto.md: - id: b0195e996d2d - last_write_checksum: sha1:7f423eb8288f1d74b6d5c8529c5827f2d46276ab - pristine_git_object: c5329d208bd06ba16d83d6b211f5c77c6c4af1d5 - docs/components/toolchoicenone.md: - id: "609093552207" - last_write_checksum: sha1:48f0085a77627460207f8334ac08ab44a9a2674a - pristine_git_object: 3d214f4174c3656770e45e6cb65509f75c1ed335 - docs/components/toolchoicetool.md: - id: 4b4670f42f5c - last_write_checksum: sha1:a24cffff41c12ea968de471e69c3830d37c33b4b - pristine_git_object: add9cee29d2ddbdb99dd6ea55b23bd45fc2a7359 - docs/components/toolchoicetypeauto.md: - id: 77428d02228f - last_write_checksum: sha1:afeed4369f26f8d5eac62dfc13766a1c8561d7cd - pristine_git_object: 90186a165b861b87eba3a4ff1e1a9815e8836336 - docs/components/toolcustom.md: - id: 5c4157c3303f - last_write_checksum: sha1:4d555f784044439e3680bdcea3c95a4ca56f9f12 - pristine_git_object: ad300a37c159de397c2411245075845155580b23 - docs/components/tooltexteditor20250124.md: - id: 87d4527bdea3 - last_write_checksum: sha1:711d221372eb8b269a00db38aa39b8eebe8a3b7b - pristine_git_object: d32af256dc582c7545bea980275fc7bcf5325e7a - docs/components/tooltypecustom.md: - id: abeed67b2d9c - last_write_checksum: sha1:b31b9b207ca5418d12159dd15f6044310a66f934 - pristine_git_object: 28fae13674075451b3005cd4110d3962e5acf543 - docs/components/tooltypeephemeral.md: - id: 23f21a98cb49 - last_write_checksum: sha1:6537f1fa1044b6fc1db76fb295c033eaf93509ec - pristine_git_object: 29a7af8f74b5116ab601ec1a1d962fd0df4bb53c - docs/components/toolwebsearch20250305.md: - id: d17a76b3778f - last_write_checksum: sha1:aec669a083c731392638f96d2ec1e6fe713a4a2b - pristine_git_object: 7235ad0a64e64abed4a46b445b8fc439a4fe146e - docs/components/toolwebsearch20260209.md: - id: 8c37573043e7 - last_write_checksum: sha1:d5a0312ccaaeae431e94f1e1dedad4ffbec938eb - pristine_git_object: 709358efecf567ac1ea63d19f5e04cdd0ff893e3 - docs/components/toomanyrequestsresponseerrordata.md: - id: f23681a41b53 - last_write_checksum: sha1:e5b3d8c0bced377d2da5cd4826d4fab9e45df3ec - pristine_git_object: a957677d324419e4de813b33b88a76667d3ca940 - docs/components/topproviderinfo.md: - id: c9e56036dd80 - last_write_checksum: sha1:4b25308beba5c14f49058889aabd27bcf025c184 - pristine_git_object: e66d615faf440dba26e666f28cb740a477df6e84 - docs/components/tournamentstats.md: - id: 0be10d528a1a - last_write_checksum: sha1:38e369f7141807de906f2af88d0c4956884319c6 - pristine_git_object: b27126b18386e224874a4186e801bb6c4fdcf818 - docs/components/traceconfig.md: - id: 639fd1f6f967 - last_write_checksum: sha1:560d3f57a9f103eee587ab1f260548161658675f - pristine_git_object: 95932dccc7672845937b71347c587b6910b3a68b - docs/components/trigger.md: - id: 026137ae5dbc - last_write_checksum: sha1:d5b5ea6e1cc4672c0c3f5ee7be0f496a465f3c6e - pristine_git_object: 01ff8134eea326b88d94714f12f1f53ac88281ad - docs/components/triggerinputtokens.md: - id: d923daf78fe4 - last_write_checksum: sha1:482b299cf9750de13143bc0d53544ccdf9bf0920 - pristine_git_object: d8c29f1015c9da62c444e68582fc8e0fd72e69a7 - docs/components/truncation.md: - id: d7a54b499339 - last_write_checksum: sha1:3e9994693b154d14afe2e6cf5382ea956dd92c2e - pristine_git_object: 5a04bd971f948fc59f1f35aedd09406a078c81a4 - docs/components/type.md: - id: e97521853030 - last_write_checksum: sha1:bbb845cc877102b35f5a5f8bd974a5fbda8358ee - pristine_git_object: 6eaadffee54251674359022b19b8e7ab020a8a3d - docs/components/typeadaptive.md: - id: 415c776df244 - last_write_checksum: sha1:e4d1e4450c22724c3661a14d5b66774ee78e0382 - pristine_git_object: 6103c75608da665a8d3c2408528847d21229f246 - docs/components/typeadvisor20260301.md: - id: ffd939ffb0b6 - last_write_checksum: sha1:698eec2380c468672bf776f6d606c3a52832b079 - pristine_git_object: 32f33c6aa08f6be52970536b59bd225d5a4d8950 - docs/components/typeany.md: - id: fd248b591992 - last_write_checksum: sha1:e40950c40b38ba6f4f81b56cf3b98ac9466cf6ea - pristine_git_object: 459a918b93d9d44647f77836951f555ece286883 - docs/components/typebash20250124.md: - id: 91dff659ac27 - last_write_checksum: sha1:9bc2ecc5f2d5eb7a0088484ce80e2ce8806b6ab3 - pristine_git_object: fa531097d7e1e2497c4eeb5c47d6811ac5ba1b00 - docs/components/typeclearthinking20251015.md: - id: ef48de5e490c - last_write_checksum: sha1:7ab65dd273eb4b0ac10842b5a64fd8377c1a856a - pristine_git_object: f5c79c944359459d0942765f3621641a28aa00b6 - docs/components/typecleartooluses20250919.md: - id: 182fff5b5397 - last_write_checksum: sha1:542821bc2faa4046a792684ada71bc82226a93af - pristine_git_object: 875d6f2b1976376534d27e290ff01b536e958cca - docs/components/typecodeinterpreter.md: - id: a0ddc54bdcdc - last_write_checksum: sha1:0ce1975a7bfeeb5bd2499dfd265528be8481351d - pristine_git_object: 761e09a30b291600b670f94f41c404f40c81fec6 - docs/components/typecodeinterpretercall.md: - id: 0753f817b4ec - last_write_checksum: sha1:1f256664635f1a8ea45367cdd40d5e4f92a46418 - pristine_git_object: bc24fd4a7a4e7c6af170ee257707568d465a3833 - docs/components/typecompact20260112.md: - id: 92d18a8b1a30 - last_write_checksum: sha1:da9568595613708e28728578ded7f90ff2c4a0aa - pristine_git_object: 94f469437cbc98cc3260a44c2c021052ad56910c - docs/components/typedisabled.md: - id: 89ec4d0fd6e6 - last_write_checksum: sha1:3b077a12247487c47132ea576c581e7a495951bd - pristine_git_object: 769369775df8f0c985322e7c9c7ff322337c2262 - docs/components/typedocument.md: - id: 945438b35b55 - last_write_checksum: sha1:78e673159ab6d4f5699bc6a4591f70e2779686f6 - pristine_git_object: c53b6cd016af5118f66afe5c2dd4a014f3afccb8 - docs/components/typeenabled.md: - id: c2d08c3615d8 - last_write_checksum: sha1:a2b02bbe0b013ba7f62963deffaa63ef0863807a - pristine_git_object: d3cda22bc8b31d5742d4d064d2ee898283d41d3c - docs/components/typeexec.md: - id: 9332f4c34355 - last_write_checksum: sha1:81d4fc42cffcaec7c2e18fc66f0e1dd5a91e8c0b - pristine_git_object: 4ff9323d12cc4a955ea055d422197294cacb66c2 - docs/components/typeexit.md: - id: e6da6ba8165a - last_write_checksum: sha1:597b0df8a353af666d26de06addbfb1ef77b40e1 - pristine_git_object: e3d9e438353136453e5792dd7a71f54f86e06323 - docs/components/typefilesearch.md: - id: 75b395ec49b7 - last_write_checksum: sha1:80dc01b6e9862ce234d31d6b571ff6b61ab2db2a - pristine_git_object: 36e3406f0b0d3ff96f949a4cac4b15f9081094f2 - docs/components/typefindinpage.md: - id: 1ad664e7de56 - last_write_checksum: sha1:10a3f3d7d83ea85fd1e8bb6cd4bb442ddc548e29 - pristine_git_object: 14fa7857b732f987fce03ce6672ef11cec4f06da - docs/components/typelocalshellcall.md: - id: c01a4da422b7 - last_write_checksum: sha1:93cf3f4729dd2013bed102155df230927b46ea62 - pristine_git_object: 248bd685cf8ee49668fd66f214dd790fa355af19 - docs/components/typelogs.md: - id: 2db9d386c665 - last_write_checksum: sha1:bef7fb6f13f0e7078fa25821b7d5787733569a52 - pristine_git_object: fda0dd30852f4d091b1e8d62590ed83bc1839e27 - docs/components/typenone.md: - id: f5c65d139cc1 - last_write_checksum: sha1:e7e2f691060a401594c6b6827f5097e36226198a - pristine_git_object: 65af7247aa09fc9ef7deb0f3d88cb5cf0f27a93b - docs/components/typeopenpage.md: - id: 3e349476bb3c - last_write_checksum: sha1:795aceda2ea4559886aa768e536a738a42f49cc7 - pristine_git_object: 37b24080fbf349299ebecd8f7ee42a62c5c84de6 - docs/components/typeredactedthinking.md: - id: 66da1f8a99f0 - last_write_checksum: sha1:acb0130a119170e4f4433de545b5b7f62edc9906 - pristine_git_object: bcd0eccc17d3fc0720f95d041c1bbe1f9e97bba9 - docs/components/typeservertooluse.md: - id: 39a145bfa9c0 - last_write_checksum: sha1:a063583667dc896c09ad7a4a409a55ab30e06f39 - pristine_git_object: e44e231f3d6a6e7ef575f446ce3128b55b309b50 - docs/components/typetexteditor20250124.md: - id: 0c9ccc78eae8 - last_write_checksum: sha1:6cb62ec0d396f6414fbc1d53be2a3d1b7297032d - pristine_git_object: 40faa5bd85ef933c9aabb75c0cf83fcc48487d01 - docs/components/typethinking.md: - id: 7d284aad692f - last_write_checksum: sha1:16c9e397b9cb3d4fe3d7a76a8d6f0a68b3d69b66 - pristine_git_object: 4e3ebaa8ba503a56182e514efda0544b99375522 - docs/components/typetimeout.md: - id: 5db9cd9d485b - last_write_checksum: sha1:04a185b298997a51d771bbc2adc017e22876eacb - pristine_git_object: 2690019f056788b51a8ab206e70a11b4181113ff - docs/components/typetokens.md: - id: 6bf6e7a52300 - last_write_checksum: sha1:e4e01d19bc76ff6c141be19dafb8fc8604cf1e04 - pristine_git_object: c8349b0862f0547272bf328b316ad77390eccfc2 - docs/components/typetool.md: - id: 552d9661651a - last_write_checksum: sha1:b70fc049771f74855f88ca30a01ac8324a5f516b - pristine_git_object: 0a511f95f8523ee79f13cd6a943a04099eb6b59c - docs/components/typetoolreference.md: - id: 1a0a545b1ed5 - last_write_checksum: sha1:2209200b2a8aea60a1ffadea024ef7d5b9804ed1 - pristine_git_object: 598202dc2075a5eea769929213e5995ccb663472 - docs/components/typetoolresult.md: - id: 51cc4a5bc7e7 - last_write_checksum: sha1:ce85158b3f5966cd01dc25a2e6fecd4cf49e3b5d - pristine_git_object: 111cb61d65b8bd4ce815f9b24b1d715d1ba31195 - docs/components/typetooluse.md: - id: 92ea28c0ab2d - last_write_checksum: sha1:7b7355f56691372080eaf2fa90e39dbdbb1dbcc0 - pristine_git_object: 6d60b12d2c31f3bed496904947bf2c392ce16314 - docs/components/typewebsearch20250305.md: - id: cd28bbf34d94 - last_write_checksum: sha1:caaccf4519225800895cf2ba54d76cf16d8f1201 - pristine_git_object: 25066f5c8e75a1bb7b7b547e14821373e47d22e9 - docs/components/typewebsearch20260209.md: - id: e41c600ae535 - last_write_checksum: sha1:610fa0656c1b9536ec0b0078af995aa30b0efabc - pristine_git_object: a9713155317f6f816c98df3f8f38dcca62a3ddea - docs/components/typewebsearchcall.md: - id: d4647ca78da9 - last_write_checksum: sha1:0abbaba9c6c9a3722f755516331a80d5a1e7aac6 - pristine_git_object: f0a4b732e87cc1880ca26a5c8981552488ebaeeb - docs/components/typewebsearchtoolresult.md: - id: f75b0d386cfd - last_write_checksum: sha1:12aea02e87d46a2d8c58416efa6a8117c586e3b6 - pristine_git_object: 1fac4a2b15c8e3fa13e1a8c7ab3adeb11b9cdebc - docs/components/typewebsearchtoolresulterror.md: - id: 1b0e21594b13 - last_write_checksum: sha1:744a99475bea73bedefd3960f4afe9e85a72ff7c - pristine_git_object: 104a793b64aacf93fbe0cdd341be8642bc5979ef - docs/components/unauthorizedresponseerrordata.md: - id: 79b657be05c4 - last_write_checksum: sha1:69e58ae8931fc723bbb4aa1212e50b97a83db709 - pristine_git_object: 1db2a3a9378d0eeb5de39f1d6621e69bbb7e0953 - docs/components/unifiedbenchmarkpricing.md: - id: 2c0b1127a84f - last_write_checksum: sha1:536d10a0997b62e031564acc91dd3d1dede8ae6b - pristine_git_object: 02271ae5d1e6836b02869391fbc7a08df47aaa31 - docs/components/unifiedbenchmarksaaitem.md: - id: aa98383cedbb - last_write_checksum: sha1:0c5a943891afc1617252650b539aacda66219cb3 - pristine_git_object: 12ee0f9d6c843cabbeea35693eef407c7727e818 - docs/components/unifiedbenchmarksaaitemsource.md: - id: a055d68005b2 - last_write_checksum: sha1:a2d31b611ef768ef91be865e6ad137219baa49c0 - pristine_git_object: 9c7155b69b81eb5b72455656962cd477716a5527 - docs/components/unifiedbenchmarksdaitem.md: - id: 97ff97a53af6 - last_write_checksum: sha1:7e75867184c7835316e3dba6c41f99915d8f66fe - pristine_git_object: 3b882c36e525b3f547b77796a644d7a533d3e275 - docs/components/unifiedbenchmarksdaitemsource.md: - id: e45e347cc983 - last_write_checksum: sha1:7d8c239a56a8fcabf6c8633fd174c88d21bd612c - pristine_git_object: 5690f32ab463b163e96353931423c22499ac17ab - docs/components/unifiedbenchmarksmeta.md: - id: eda2de5d8d6b - last_write_checksum: sha1:defd88dbce795b757a855c25953109f91791ea61 - pristine_git_object: aced020dcc3fcc5c659bca9070063417ec3496d9 - docs/components/unifiedbenchmarksmetasource.md: - id: 093d733c42fd - last_write_checksum: sha1:e820ca0846602261b47e18ccca1005042ded4024 - pristine_git_object: bf52e964cd5ad79dde98693f436788f1e7c1a764 - docs/components/unifiedbenchmarksmetaversion.md: - id: 883a12af05e5 - last_write_checksum: sha1:df710f97d758bb6403da1438fd81221a03142e64 - pristine_git_object: fa7abb7a34e41e9bba65d7e902d1bffbd431a7ba - docs/components/unifiedbenchmarksresponse.md: - id: 711086447b69 - last_write_checksum: sha1:6278d07a5e342097572f380e22c0af1c88070a05 - pristine_git_object: 1fa09b414027fbf850446167276ccc554f5446f0 - docs/components/unifiedbenchmarksresponsedata.md: - id: df6d6262fae1 - last_write_checksum: sha1:42427d4695c2a5c5c66233b358442cd62e55e2e0 - pristine_git_object: 58d4d7d8c3b5943e09024f28b0444097ea6f8bbb - docs/components/uniqueinsight.md: - id: 8f721a7538ef - last_write_checksum: sha1:d1955a3237b8047e074df6a6cf0e158beeac10c0 - pristine_git_object: 3395cb6ae241647ad498206ba1672bc3e4a1f7fc - docs/components/unit.md: - id: 0b0f1341f4ee - last_write_checksum: sha1:b9ff7dec614b495c5512b9228d018dda7d78fdc9 - pristine_git_object: 42e2fb33a744ffbb03cbae27c94401c51f0d83c0 - docs/components/unprocessableentityresponseerrordata.md: - id: 6a36f0c9d959 - last_write_checksum: sha1:b7adc7ae81b79cb1436c8f85b45283fe52320d81 - pristine_git_object: 9ccd3c05cd75915c70aa542bb16e2a8f77bb91cd - docs/components/updatebyokkeyrequest.md: - id: becd5448c41c - last_write_checksum: sha1:dad56bab9cafa3ab09b991405b99890dd8ed311e - pristine_git_object: 3ba251530ef4197679144f0450533cfae53896fb - docs/components/updatebyokkeyresponse.md: - id: 9c195fcdf7c8 - last_write_checksum: sha1:c1400c74ef85a28d1518dfb7e4155b207f4ccafe - pristine_git_object: 72b248c783a837f608d0f26e3f5131ec8ef656cd - docs/components/updateguardrailrequest.md: - id: 5a0fb143eaab - last_write_checksum: sha1:7e86cb67d68d86de79ed2a09e5bfa9bade67a524 - pristine_git_object: 8a5ae8e2eee5af62d829b80dc312e799efea2e5a - docs/components/updateguardrailresponse.md: - id: 311d3e7a185a - last_write_checksum: sha1:03a1e96329ab0131421009b3998829ca0ff4d8da - pristine_git_object: 338512bc5662726c1f9ff37ce027766df603e4ef - docs/components/updateobservabilitydestinationrequest.md: - id: 09fc92bba8dc - last_write_checksum: sha1:bb43e703f91c5eef0a65bbc0c9db3355f0211097 - pristine_git_object: 0112efe4cb80ff21b24f2dcdd2f9cecfdee15fa5 - docs/components/updateobservabilitydestinationresponse.md: - id: 7551cf74a0b6 - last_write_checksum: sha1:aa6b4016d0db43f9f7c8e1b8e984c3349338eb0b - pristine_git_object: 6b3b9ab84b3cc98d6648bfbaf48399311ae68a70 - docs/components/updateworkspacerequest.md: - id: 0fa61bf22fc1 - last_write_checksum: sha1:75b0020fcacd32f5d0a5c286f6aacf5e16629222 - pristine_git_object: 1a32c6cc0ac510fa2bd47a81360731a10e8e46c5 - docs/components/updateworkspaceresponse.md: - id: c8e4b8fbf004 - last_write_checksum: sha1:4e63930baddcd5f65ac3d196921b1a45447a4fd4 - pristine_git_object: 186cd5625964da06544c8e8c64f2b42d14e4c85b - docs/components/upsertworkspacebudgetrequest.md: - id: 57e1c9eb8e8f - last_write_checksum: sha1:0559515a8ae1582cc6982427af87fd2db1212e07 - pristine_git_object: fe0db6174a474e9a11f1e3fc16b59f4083f01298 - docs/components/upsertworkspacebudgetresponse.md: - id: 6cee3e174986 - last_write_checksum: sha1:d79979dc9629620dc7d61e88538da20284b70efe - pristine_git_object: 158cf6425e205280a67416bb0eb07c265e7c244a - docs/components/urlcitation.md: - id: 02c4f88e5f51 - last_write_checksum: sha1:ad99ecbc1692453215c8ee9a79fe1ae6a98a52f2 - pristine_git_object: 385629f965d79dc4da084784236a3d9a50072066 - docs/components/urlcitationtype.md: - id: 7631f8ba867e - last_write_checksum: sha1:6723ca63815f15e697b2e8ed1febd1bc0da0beca - pristine_git_object: 2b6e38f54f447f8fc794d3c35c1a0bc690cc4d2e - docs/components/usage.md: - id: 15e3eea02540 - last_write_checksum: sha1:2f9b8740c46b8e1a69dc9ad0b891352ded5e70e2 - pristine_git_object: 76a1d443818ff4471133dff00127bfed468f3eea - docs/components/usagecostdetails.md: - id: eca6fb6e3ba5 - last_write_checksum: sha1:368d21231a591747d2340e023b6983c195da4aa8 - pristine_git_object: df2c8ace4895ed1a54e919643d4cd3c9187b3d59 - docs/components/userlocation.md: - id: 29641029acf6 - last_write_checksum: sha1:e2295be925d9064a6125f5ba48a692a345ccd247 - pristine_git_object: e06fd727345b790473b48236b9248418cbf3ca79 - docs/components/variables.md: - id: ad5d1b284346 - last_write_checksum: sha1:30ebb41e8bac9a8d817b2c0ab0a9e9fded4a73ee - pristine_git_object: 0698d06289a06a6cfcd35f7069f2ef64a0aa0e25 - docs/components/verbosity.md: - id: 0a9da5ac382d - last_write_checksum: sha1:76ec453c1e767ce0f8c76afc0617cdc7ff29b60c - pristine_git_object: cf10c9e56352e1ef074e794b915639774a0de872 - docs/components/videogenerationrequest.md: - id: cacead3ac9fe - last_write_checksum: sha1:5f2a97129c791a736378af0331c8800da3e555d0 - pristine_git_object: 8306cca5a6a8740243cd1bc49409bfd4b8e58891 - docs/components/videogenerationrequestaspectratio.md: - id: 8183ceeab79d - last_write_checksum: sha1:8aad3355b02e6578e57dc64355c6e51fcb44f763 - pristine_git_object: 16659f24b21051064e5fc6addbda9ebe73650a01 - docs/components/videogenerationrequestoptions.md: - id: 6d200b026e3d - last_write_checksum: sha1:0b25700301c18aa273ec8f564d20e53064296e36 - pristine_git_object: 91b1436ae06dcdd8b699bf8ea4f96c5daea1d027 - docs/components/videogenerationrequestprovider.md: - id: e2a64e74f555 - last_write_checksum: sha1:f0461ead71e8c146e9ba4fcfd1cdf3383828f125 - pristine_git_object: b7e2128738d513fcbcadf9ffaec2e655c4e26419 - docs/components/videogenerationrequestresolution.md: - id: 96bb24160b25 - last_write_checksum: sha1:c5180c8900165f2c87fe36de22f6d5e695371dfd - pristine_git_object: 1af61111d11241b9c536e60ed23ffdcf4a375d33 - docs/components/videogenerationresponse.md: - id: adbbd66af4bd - last_write_checksum: sha1:52c73fc2047792e3194f316e3182a96f8c7b85f2 - pristine_git_object: 547f9b54b17ebeedc0c566fcafe94729fe5c451e - docs/components/videogenerationresponsestatus.md: - id: 0a331c7f4b7e - last_write_checksum: sha1:a8ce41f7e0a7705f003de671e29bb7ac7b320676 - pristine_git_object: bcde5432dae5013cab462aac0369c2dff823f87f - docs/components/videogenerationusage.md: - id: cb8b5821f432 - last_write_checksum: sha1:58a8026e2941e2f600deedbcb53b3291fc0e1443 - pristine_git_object: 3fa07286f36acbe1da47693095cee40bbed0e017 - docs/components/videomodel.md: - id: 903775781ac3 - last_write_checksum: sha1:57ceaa8e35d7fa680d60cfde192ccf533f7a287a - pristine_git_object: 6d5b334bc3301dab11d1d8ec1a436d58cb8fcaac - docs/components/videomodelslistresponse.md: - id: 6a46f08aab47 - last_write_checksum: sha1:63812cb97f0ba13e4e9e0e524fb82edccecca061 - pristine_git_object: 45a68af199ccff5747b446511dd9fc1c550a4d34 - docs/components/videourl.md: - id: 8e3963a8a140 - last_write_checksum: sha1:0417712247858caa6c2f97a88af261c1df28e492 - pristine_git_object: 5bd5dec60112a90b0446b741a0605c8f86810e4b - docs/components/webfetchengineenum.md: - id: 7e88b8695736 - last_write_checksum: sha1:72e9ed36b036c9941a4c794792a0c178612b9e68 - pristine_git_object: 3b14fb1be02252d483c5a5aabd9b3925c97acc49 - docs/components/webfetchplugin.md: - id: 6db78951ca01 - last_write_checksum: sha1:c87f9026861d2440d6fc26fa43683faf6589321b - pristine_git_object: d14046ff7191801dc0baf1644825501ea7b341cf - docs/components/webfetchpluginid.md: - id: 3471fca5a6e4 - last_write_checksum: sha1:fbf3474fe1f77e30179bc491c2a6a232f450dad9 - pristine_git_object: ca2c54ce2cc82f23b39fc813496fd8e227f32d07 - docs/components/webfetchservertool.md: - id: 16f65007e382 - last_write_checksum: sha1:377497147ada29f671b0713981227fb8e1dbf7db - pristine_git_object: 2152aba006b34b1d758e75cba8cf141d7af54223 - docs/components/webfetchservertoolconfig.md: - id: 96f1a4842e80 - last_write_checksum: sha1:f6af2cfd146b482617e9f1f2c2744cd51f3eee49 - pristine_git_object: ef5c85c64b9e12c17694978820702418d272aa76 - docs/components/webfetchservertooltype.md: - id: 23175d499624 - last_write_checksum: sha1:7072da0ec7dac5426abd235fea4347695ab176ee - pristine_git_object: ea6c00679c7118ddcb43185fc5f34ee01c148be2 - docs/components/websearchcallcompletedevent.md: - id: 8c338a61bc9d - last_write_checksum: sha1:b46bf9e0c87df24c83fba70f4a0ca91648680c22 - pristine_git_object: 7e6a5f174cb429ee9d6b655c2d167b790029f03f - docs/components/websearchcallcompletedeventtype.md: - id: 1a502d610554 - last_write_checksum: sha1:56512eed2eaff1c4cddda33efbaeab3dd2322e5c - pristine_git_object: d62999f7bc2df383fa86043fc57b563175844420 - docs/components/websearchcallinprogressevent.md: - id: 31189749d1bf - last_write_checksum: sha1:0f869934eaba165fbd6253c960413f03f9112814 - pristine_git_object: d4701a43a722261c86f9dff43180c8c5ec145a54 - docs/components/websearchcallinprogresseventtype.md: - id: 15a11ab4c4b7 - last_write_checksum: sha1:f9d645c8458d7246b351f653c7058d343e53f640 - pristine_git_object: 41ae71672238c0c6e34302f7b692ed71d315dde6 - docs/components/websearchcallsearchingevent.md: - id: b182331a02b6 - last_write_checksum: sha1:7a911e2abc45c00fd91a0c187d3256aa88f50aed - pristine_git_object: 95d1b4e6cb9d5c649252977d600be9888534af1f - docs/components/websearchcallsearchingeventtype.md: - id: 652bc30b0248 - last_write_checksum: sha1:debb8eaed5f86bac53f74f3e61380b2235470795 - pristine_git_object: f1771d0b194da9cadcbe7176c43059189745af44 - docs/components/websearchconfig.md: - id: 3fcee95e24a6 - last_write_checksum: sha1:a0f40cc1b3eaac5400ef08a41abf4cb3197b63d3 - pristine_git_object: 9d49a0dbf79dd8042939f2b1282863c623a295c9 - docs/components/websearchdomainfilter.md: - id: 47d067b8286d - last_write_checksum: sha1:bc0207fdf5478614ee90906ce70c42e57506378d - pristine_git_object: 49047767ed450538e956901a7a1bab92099a9493 - docs/components/websearchengine.md: - id: ec8b8ee1236a - last_write_checksum: sha1:888cad8aaad95b2303bc85a8baa09276ee391607 - pristine_git_object: 8772c8f29a972acaefab0adc329db053ae7dde62 - docs/components/websearchengineenum.md: - id: c7543e4c8464 - last_write_checksum: sha1:1793a4a3cb9a9517b99a6640640d0afbe791197e - pristine_git_object: 8a28ed0821e632fce98f29e8041f99d35616017c - docs/components/websearchplugin.md: - id: d6baf3aa0a96 - last_write_checksum: sha1:cc37dce50cf180ddb4d6ece96993600f0d73eff2 - pristine_git_object: 9f5b99bc633585ffa43baea8a53d371b05261a1c - docs/components/websearchpluginid.md: - id: 0b025727cb2e - last_write_checksum: sha1:b8da5b1cb0bcc0e2e067e6d09f5e2b51a77d0592 - pristine_git_object: b0913dcfee22f1204335350b9b9bca75db27c821 - docs/components/websearchplugintype.md: - id: 027b51292738 - last_write_checksum: sha1:4a13256166d1e2f00901f55e8500e66686730b07 - pristine_git_object: a64310784046570184cdec6d848897351c112b30 - docs/components/websearchservertool.md: - id: 92cff6162ede - last_write_checksum: sha1:1f082ae55d53189151ae477c9aee041db4c59945 - pristine_git_object: bad50a618e5bd9cea960a2af560e73eb4355c552 - docs/components/websearchservertoolconfig.md: - id: 03a09e9ae532 - last_write_checksum: sha1:31b03cd6d5d462ac27e385df8d76389921e15aa5 - pristine_git_object: 130714a171340c5f0ec321dfa3f8686313441f39 - docs/components/websearchservertoolopenrouter.md: - id: 34b36452e3b3 - last_write_checksum: sha1:c3676ba15e24d124c35c69ed20af393f10bc111e - pristine_git_object: 94a42fd05fbbd0453d936b9ac4b52f97c8ff0d95 - docs/components/websearchservertoolopenroutertype.md: - id: 709a7a44c3c9 - last_write_checksum: sha1:a2b894302d879e185fdad29ab6911c7a9b72f6ca - pristine_git_object: d126a4d405d71415b5b467b17810f2d97148d463 - docs/components/websearchservertooltype.md: - id: e16d860cb061 - last_write_checksum: sha1:505ba5b2c7ccccd75f531f163f5077916e2f1c63 - pristine_git_object: 13b6311489f87d206fe37c2b6446f7b0e8626547 - docs/components/websearchsource.md: - id: 5b395a085271 - last_write_checksum: sha1:e267ac945598e9f5d6004c17aa4379da17d18f27 - pristine_git_object: 1a71cf6dbff45789196f28a2acbdb0c7a3d199b9 - docs/components/websearchsourcetype.md: - id: 45feda8e9988 - last_write_checksum: sha1:bbdaeec6e80d646148f777b1cfc403131ad64eec - pristine_git_object: 4e69352b3dc18b87383f39a643cc04f7f7085752 - docs/components/websearchstatus.md: - id: b43113e03655 - last_write_checksum: sha1:b94a253e70c37b3c6aebaeb73b9956335e0b97b8 - pristine_git_object: 53303ec32abcff22251468692cf0aaacd746e307 - docs/components/websearchuserlocation.md: - id: dd5e502d8105 - last_write_checksum: sha1:745b267e89093e0381da08a657f7ed57df85fa18 - pristine_git_object: 678c7653c10d98a575a20208d824170418a1950f - docs/components/websearchuserlocationservertool.md: - id: 10b54200c690 - last_write_checksum: sha1:e2121866212d004cb58952bcfe2fc71c1d51245d - pristine_git_object: b5fe52e94455874fca43426e9802363658284874 - docs/components/websearchuserlocationservertooltype.md: - id: 9418ba6655a0 - last_write_checksum: sha1:195a53255f2c1f20a1dd978730b9b772c7f2d987 - pristine_git_object: 4a651edf31ac91e41fe187540f9082fe7b28d7d5 - docs/components/websearchuserlocationtype.md: - id: ac432a0db67a - last_write_checksum: sha1:6b322242229459f409a83243db53ff8069fe1a3f - pristine_git_object: 8213d86aa4dea092924605829dce95a1f31b0897 - docs/components/workspace.md: - id: 0a15ff43e01c - last_write_checksum: sha1:a44aaefdf977be3defda943f7a0a6b78726a2e10 - pristine_git_object: fc03d550582e7ac86ba51c17bcb5568961b7e631 - docs/components/workspacebudget.md: - id: 198f3bbc68f1 - last_write_checksum: sha1:11ae43ff3f27368b1df208a59ac59c1a63cf71cd - pristine_git_object: e81bbc2599570fa6ac128589339ce9fd4ee39780 - docs/components/workspacebudgetinterval.md: - id: fb5636fcf587 - last_write_checksum: sha1:f76896980f894a79caeafeacb10be4702865fc67 - pristine_git_object: 9e4108b48e17662f6f238eeccbe2c0a5edac6993 - docs/components/workspacemember.md: - id: 250baf73019f - last_write_checksum: sha1:d0079b9edc10857c5d2fd55b8122851e235dec21 - pristine_git_object: 31e122462373cfbb603a4e35d88810743e9e585b - docs/components/workspacememberrole.md: - id: b6a965f120c4 - last_write_checksum: sha1:3315f44ee8ccfccabfcf89f32cb7d585864593be - pristine_git_object: 00592d06a5c490ccce759f0b259f756f3f11c104 - docs/errors/badgatewayresponseerror.md: - id: 32126b40d635 - last_write_checksum: sha1:223852bbefa4599b01ff0e8e716cb7216231c99e - pristine_git_object: 5bd359e8668e33d05ec94cdde74c51206a047dc7 - docs/errors/badrequestresponseerror.md: - id: 557cbbed2def - last_write_checksum: sha1:9ebfd0bd854fb3be7bbc9cbc6a49869f874caa75 - pristine_git_object: 6bb5d84d7ebcf391108ed791db32bebf16e37d2e - docs/errors/conflictresponseerror.md: - id: a6291cc4fcfb - last_write_checksum: sha1:7f65dd130bb9a265070827fd2cbccd34faaef440 - pristine_git_object: cebaddbb10025814671f5f33b8dcdcedc19b5acf - docs/errors/edgenetworktimeoutresponseerror.md: - id: 2e06bbd77e57 - last_write_checksum: sha1:5dac0d2c35bc6f172cf34f89be8c8bb50311a722 - pristine_git_object: 3720bcc7c6d7b8e30fb81336aee6e56efc202d55 - docs/errors/forbiddenresponseerror.md: - id: 7decb227f487 - last_write_checksum: sha1:1ed86d541b2413d207f720c6723cb12231ef9904 - pristine_git_object: 8015439adc3dbb0fa36b2f2d470d518e10d538a3 - docs/errors/internalserverresponseerror.md: - id: 7e8ff7f684b2 - last_write_checksum: sha1:d2dba8365a2592a3c5b2053e6df9aba954f6ab5c - pristine_git_object: 5db18a9b30b04f9e85e989cf93af56f0c13205ce - docs/errors/notfoundresponseerror.md: - id: 24546e4ae2b1 - last_write_checksum: sha1:3489bbfc7d8524f7bc00416d368d08c88cb693b1 - pristine_git_object: 3f377475b54b415589c2f495c6c46dd424d111c6 - docs/errors/payloadtoolargeresponseerror.md: - id: 11b7364bb388 - last_write_checksum: sha1:49e52c253b21fafc9c7ed83b392b601a2db2e9d3 - pristine_git_object: 5027338f1f76f8eec7e121e3f89a907c0fec1764 - docs/errors/paymentrequiredresponseerror.md: - id: 1df8bf21f2ec - last_write_checksum: sha1:438c021020ba04a6c6356a49b10101f4948290da - pristine_git_object: 974318969fccd04206b3dfe1e45d9300e11df85e - docs/errors/provideroverloadedresponseerror.md: - id: bae15be73247 - last_write_checksum: sha1:c58d85a79ac15626d09d2f13ca2596f4d804fa9a - pristine_git_object: 7a2e57818215a8202cc331c9e4ea718996fc334c - docs/errors/requesttimeoutresponseerror.md: - id: 8d026980f8a1 - last_write_checksum: sha1:3447ecfc92466e9de0e2265e0d084ba9b3edf662 - pristine_git_object: 4029799436c103d71c9d121762666b0c36f8e77a - docs/errors/serviceunavailableresponseerror.md: - id: 4673e5ccf763 - last_write_checksum: sha1:5b4c28adfc9b5f12aad217a77536ce413c72ec0f - pristine_git_object: ac2fed91a62ad9e15c353bc71a90822ddfff2e65 - docs/errors/toomanyrequestsresponseerror.md: - id: be0bd7d3b18d - last_write_checksum: sha1:d645a93709eee394d9e70ee740c4feeab9aaf450 - pristine_git_object: 294f69579f46ea917d03236b5c6123c3681819cc - docs/errors/unauthorizedresponseerror.md: - id: 500194829c27 - last_write_checksum: sha1:17503cd8d5eeec97b9d674b9a2bdcace9902e5a3 - pristine_git_object: 50d78da46455cb36f7dd14165dea80e77e542717 - docs/errors/unprocessableentityresponseerror.md: - id: cc0e37e6516e - last_write_checksum: sha1:dfef75a5f9094b0d9bfab11d7ccfb2bbf371bbb2 - pristine_git_object: 77b55729e28c297a11737222fea74063314f5cee - docs/models/internal/globals.md: - id: 9c173b87f41f - last_write_checksum: sha1:eb08bb4e1e88b4fd1740cd6737a7f5752a101c85 - pristine_git_object: 5b30448a3426ad7642d4e814f231b6970a1ec214 - docs/models/utils/retryconfig.md: - id: 4343ac43161c - last_write_checksum: sha1:562c0f21e308ad10c27f85f75704c15592c6929d - pristine_git_object: 69dd549ec7f5f885101d08dd502e25748183aebf - docs/operations/arena.md: - id: a9de99ef2b33 - last_write_checksum: sha1:e512fec90170ea812bad81c221a6537e2ef92f15 - pristine_git_object: 1714dac53f131a38cd5cb11e270e5500b0740280 - docs/operations/bulkaddworkspacemembersglobals.md: - id: 6cff183f93a1 - last_write_checksum: sha1:39941ebc9a51b0189aed03680e2168e25b7c9692 - pristine_git_object: f4a5325dcf71a943b6b1d01679587f2b0b291fd3 - docs/operations/bulkaddworkspacemembersrequest.md: - id: d8246fdf3e0b - last_write_checksum: sha1:156694bd17ba999b2ce0886da7153e7d349beea7 - pristine_git_object: df933fdfe35d136462f083cd40afb3d997171024 - docs/operations/bulkassignkeystoguardrailglobals.md: - id: 10cab63c9a95 - last_write_checksum: sha1:5c7983931ef784a72f7dfec732eb7809d352c313 - pristine_git_object: 1b45a8531b22e0412e5e23d8d3491930a208f73e - docs/operations/bulkassignkeystoguardrailrequest.md: - id: 17f1b1837a1b - last_write_checksum: sha1:715a1938733348e231c60adeba04a092ab98128f - pristine_git_object: b179068885d6054fb62a8d980a736de77a79eb4c - docs/operations/bulkassignmemberstoguardrailglobals.md: - id: 5d30b7e9c735 - last_write_checksum: sha1:0830f7c17c8ab7961e54910742628de069d22871 - pristine_git_object: b970409d4cd5c37ada32927921add3b2b0f013c2 - docs/operations/bulkassignmemberstoguardrailrequest.md: - id: 6d6c7e9ae12f - last_write_checksum: sha1:8aa5702d46c01c87db1df7624b5125ee9bbc8edc - pristine_git_object: f15474f24f02a38716f8c83f74a501a3dadef26a - docs/operations/bulkremoveworkspacemembersglobals.md: - id: eca056a05e51 - last_write_checksum: sha1:eb2295ca61d2b6f430119c3e42a3cda4958b2fea - pristine_git_object: e2a1edc52f0035b6d0f55403fc5ead2e351f2499 - docs/operations/bulkremoveworkspacemembersrequest.md: - id: ac8eba8ae2ab - last_write_checksum: sha1:ca7f3d49baa41f7996bff82eb7a6cae01fb3275b - pristine_git_object: ee134f45349379dd00569354b8aaa2a6d1aed373 - docs/operations/bulkunassignkeysfromguardrailglobals.md: - id: "491635767122" - last_write_checksum: sha1:06e7a6b0f052e73e5cacd480e3bff8ab7756d0b0 - pristine_git_object: 8472ab41760bcb0767280a0af1b4c2ac27ba4ee1 - docs/operations/bulkunassignkeysfromguardrailrequest.md: - id: fece8f279cf4 - last_write_checksum: sha1:55f7ca24a3fdd43a4699213b51174bb5b235a3b5 - pristine_git_object: eb2cae6eadb71d04625eaaee1b5953397a922aab - docs/operations/bulkunassignmembersfromguardrailglobals.md: - id: 0fcd5a2477df - last_write_checksum: sha1:82475eb0c237f8fa9b1672684bc441c5ef5beb95 - pristine_git_object: 5df6bb6d4a2f35ddeefd0064318d867dbe4f078c - docs/operations/bulkunassignmembersfromguardrailrequest.md: - id: 682c7ea4ed8e - last_write_checksum: sha1:964acf8bb04f507c264602c68c77cc1d59c268d5 - pristine_git_object: 31832c55a3f01279e7609124fe1b02e640f6af51 - docs/operations/content.md: - id: 33ab0eb04a0b - last_write_checksum: sha1:c4d2c8081f9275dae2e19c1d5ce3074325a4d5e4 - pristine_git_object: 22aef15930d1f88538534310e6304c0aae726531 - docs/operations/contentimageurl.md: - id: 8e6b0dcac568 - last_write_checksum: sha1:0a8701c28d0de7adef8ac51053bc5f701a26aca5 - pristine_git_object: 7fedfe3061beb273e5beb8893ad16e0b6feb34ac - docs/operations/contenttext.md: - id: 01cceb61d42f - last_write_checksum: sha1:7e1d73bd30584d55f4b116737c15d7c73cdf6a3a - pristine_git_object: 522f4978a3c4e1d1c0d197b541fc57e745b7d4e7 - docs/operations/costdetails.md: - id: 777b240173de - last_write_checksum: sha1:b2748fc0cf305791446f5f217947d82bd74a8350 - pristine_git_object: 58a1aa8485130f8b49c633dfef0439b83a5f239c - docs/operations/createaudiospeechglobals.md: - id: c67d64f11ad7 - last_write_checksum: sha1:a0026b1caf2268dd4a79177fa2bb630eca1498b4 - pristine_git_object: 0fbd4f1ad17604e5e31b457c0e3073d5389539c8 - docs/operations/createaudiospeechrequest.md: - id: d3139a0713f5 - last_write_checksum: sha1:dd894ff1ac1021c4202c1e8197f2a7b5d7d856d3 - pristine_git_object: c1ca2b7336e47fe365a59cebb643e9a780d44e7e - docs/operations/createaudiotranscriptionsglobals.md: - id: b58641464e34 - last_write_checksum: sha1:cfc998017937ba731fbc1584d199b9668d8e08e3 - pristine_git_object: f505a7180aca4ca2240cbecfab2bf5d464c6be34 - docs/operations/createaudiotranscriptionsrequest.md: - id: 9a2ff1044ad2 - last_write_checksum: sha1:de442d138768324f36e046817b44719ba4ac6274 - pristine_git_object: 8fc1edc9df06004768f5dfa12f1f2fbc5d02dfad - docs/operations/createauthkeyscodecodechallengemethod.md: - id: d598c7da9363 - last_write_checksum: sha1:3b81340adcf218991f7829e692e64f484763de2b - pristine_git_object: cd496b740a0d914d6bf01b0b8c734440719a7126 - docs/operations/createauthkeyscodedata.md: - id: de024dcd716f - last_write_checksum: sha1:426b07933182096ad16766e8e7c630d04d841878 - pristine_git_object: 23309c756a702fc275ee80203355ac81a3cc7a9e - docs/operations/createauthkeyscodeglobals.md: - id: dc07458757e2 - last_write_checksum: sha1:56a8ab12e43378b06746682f6ff831f9edb18452 - pristine_git_object: ab7e4e55f571f6299de54543c004424e37cd4090 - docs/operations/createauthkeyscoderequest.md: - id: 7cbb14ff950a - last_write_checksum: sha1:fc31d57a0b91cb76c150ff359c25b9d4ea239205 - pristine_git_object: 6dc06174a0f72d4b4d0f22bc88a3f8a941e7666f - docs/operations/createauthkeyscoderequestbody.md: - id: 402f2065cf8a - last_write_checksum: sha1:2d5fa5f4aa05e78535b8b90a2d73667b08d38dda - pristine_git_object: d37c21942ce85a11a1be7d9f8ed11279e2255554 - docs/operations/createauthkeyscoderesponse.md: - id: 6c92952aa6b6 - last_write_checksum: sha1:9f9f0dd11d268a8bb27e9f6f99ce41da757e23fc - pristine_git_object: 8951a7ad215a64f23e5510b216b921b5c66d002a - docs/operations/createbyokkeyglobals.md: - id: 0a27dcaca263 - last_write_checksum: sha1:9f87d6f4c4d4d6ffb067f3b0ce0903eff44f6f9f - pristine_git_object: c21b83643818552bb4eb163702160821ece0ec8c - docs/operations/createbyokkeyrequest.md: - id: 90ead629163d - last_write_checksum: sha1:c335d0b21af453917aedfb235e86ed9a9b29329c - pristine_git_object: 75282c50c48b157cbc9dcd9c06692ad2b1ecba8b - docs/operations/createembeddingsdata.md: - id: b2123807ad9d - last_write_checksum: sha1:0d1867d420c85221d76dad11143ffb836c66cd6c - pristine_git_object: c473e71e3ebbdd11adb1c7728048ed3f638838f2 - docs/operations/createembeddingsglobals.md: - id: 57210fb0e38a - last_write_checksum: sha1:82fd92d8da52017a2e7892b5611af5168fe65a7a - pristine_git_object: 13b9e13d3c25a43c492fae346593bbbc46b52580 - docs/operations/createembeddingsrequest.md: - id: e680f1daef8d - last_write_checksum: sha1:e3c7fe36419ff4d4bbe1863758d36f475aa0172e - pristine_git_object: 9b7a73a661c2906bd071dabd90a6c273d19e2125 - docs/operations/createembeddingsrequestbody.md: - id: 1dc1b7920b56 - last_write_checksum: sha1:e47df5a1f79d110f04cc5c032bc51ce06f35db36 - pristine_git_object: 9ea89389ed108b5cd93815054337619e4138231a - docs/operations/createembeddingsresponse.md: - id: 1314e0c18f0d - last_write_checksum: sha1:3585e9e490549efb1a71dfda28e0faa41b79eeea - pristine_git_object: 4c379be00bda8bdaa67de03470f76141803cd62c - docs/operations/createembeddingsresponsebody.md: - id: eb2fea5ac750 - last_write_checksum: sha1:52e719372697ab752bd9913606432527e08cd5bb - pristine_git_object: 1ff75cb8fa59d2b7b756ea07e9f5849995b62435 - docs/operations/createembeddingsusage.md: - id: 2dc99973f6c7 - last_write_checksum: sha1:292de8b3a80697b56a961d2eb7f97d54dd29c4ae - pristine_git_object: 639fb7e305ff27786b6ea858b425e36aaaf20252 - docs/operations/createguardrailglobals.md: - id: 34f5b2a17330 - last_write_checksum: sha1:a43fb357b9c08974befd14a79da7623e72bc3245 - pristine_git_object: 862c3641250154a3e227d020738f893d316d391a - docs/operations/createguardrailrequest.md: - id: 2d8932b329b3 - last_write_checksum: sha1:e03ea14af1abe30c5dc38323a824a91fa817bc2d - pristine_git_object: 74958a262f7d16b3cd8166b0a80a832d44b3df03 - docs/operations/createimagesglobals.md: - id: a5e3bc55fcda - last_write_checksum: sha1:46b4241b2368ab79160dd347eae68445df55d0cd - pristine_git_object: 5b67f3639d1cf0a543f9f9930d1cae61b423c4e0 - docs/operations/createimagesrequest.md: - id: cdafaa0c3856 - last_write_checksum: sha1:17f63228061ce2f31c6631edb2536255ffb129b9 - pristine_git_object: 26a6d04520f3711a61a53f121c89e2f4cbd693cc - docs/operations/createimagesresponse.md: - id: 42e21d45bf02 - last_write_checksum: sha1:1d13ca55ce05a64da61acdfe71d878d91df777f4 - pristine_git_object: 58bc07e6d75f13d766e336b9f868a8486d52d187 - docs/operations/createkeysdata.md: - id: 903a6d611ab2 - last_write_checksum: sha1:78eb64a7cc6deeb3959adeb0ca705826f5f47005 - pristine_git_object: e60eaf9f45abcfdba122a7b04d1c66be31af48fa - docs/operations/createkeysglobals.md: - id: 15dd52d4443e - last_write_checksum: sha1:032800ca0e8b56a1819431b9b27fa09a5b4b09c9 - pristine_git_object: 6fea46171bad0253ad1bbf47ffda4eba140b2019 - docs/operations/createkeyslimitreset.md: - id: d2e99ed5a672 - last_write_checksum: sha1:1fd9511db6c28a2a7c6968ff0157f4e33fcbc982 - pristine_git_object: 5d1659c4ceffd5282b3fe7a4c106fff641af722e - docs/operations/createkeysrequest.md: - id: 57f03f411f99 - last_write_checksum: sha1:16e94df473652f8f4438f519ffcf7b8c238559ba - pristine_git_object: f587de752afc6f5f82d55ba4b80f6d59336db24a - docs/operations/createkeysrequestbody.md: - id: 9aee51637cee - last_write_checksum: sha1:dbd509a932f74e85a237fa1f4a2fab4c78af6c89 - pristine_git_object: e63e997bf3d6eba579db664fba80bd295c145f17 - docs/operations/createkeysresponse.md: - id: 42bb3427e12b - last_write_checksum: sha1:e113e49e9b3aa54f0d8021d13be59fc533830a7e - pristine_git_object: 91744f3dce817f96d0f5bb44af9988f4c54feac2 - docs/operations/createobservabilitydestinationglobals.md: - id: 5d04001d9dd4 - last_write_checksum: sha1:08ec40545e26db7b90f2d29c087f485bf6cba9bd - pristine_git_object: f6dbf1e02de879b2f2f5e2873b7ac311a6cd7044 - docs/operations/createobservabilitydestinationrequest.md: - id: b8af7ad57eab - last_write_checksum: sha1:ebf76d176db49f6dcd8b7cea933006d671ad04e8 - pristine_git_object: 37828e9e81d70f7df4cef3e34bc3388bf15a2513 - docs/operations/createpresetschatcompletionsglobals.md: - id: 24849c276ba0 - last_write_checksum: sha1:d8083152fad53bcf5f27f753e07fa4f9d1ef6567 - pristine_git_object: a7fd674b0d04a19c059452656b52579eff342197 - docs/operations/createpresetschatcompletionsrequest.md: - id: 3793b30f5163 - last_write_checksum: sha1:4733d12274632c718f8eef9e1956d843ffc15e02 - pristine_git_object: 1c5163aaed00356c7c9843adfd6ea25227f2f1b8 - docs/operations/createpresetsmessagesglobals.md: - id: 26efd69591bf - last_write_checksum: sha1:f08ae40a0e765f3e2fd372d9ddca086059af24da - pristine_git_object: 52fb2642e2de1e7583273f5fa8974027612572f8 - docs/operations/createpresetsmessagesrequest.md: - id: 901c27e4fed4 - last_write_checksum: sha1:1205565ac74a7b732dbea1a3e7a44c5a4e6d20f4 - pristine_git_object: 5d38bb0442f5b580eece56e7a26df6ce5bfe8bf2 - docs/operations/createpresetsresponsesglobals.md: - id: 4e82c55bd48a - last_write_checksum: sha1:5013dad752f28dbf0ce175fead64b947ea4501a1 - pristine_git_object: 0a102fb9f72ade6b8c57d2da849dca1e5f890103 - docs/operations/createpresetsresponsesrequest.md: - id: 44fdbe26701f - last_write_checksum: sha1:73da0511dc38879192337c75bd21a60bc74d311d - pristine_git_object: aacd56ad9f5c8e4bad0802a8c6eba00b97e36dbe - docs/operations/creatererankglobals.md: - id: 46c967a0d2ba - last_write_checksum: sha1:9dffe3342695ec66163cb83423f441d527d4e561 - pristine_git_object: 8651948c5053890686a408a39dfe62e1ecb62714 - docs/operations/creatererankrequest.md: - id: e0a2523b2d23 - last_write_checksum: sha1:2071d69e87661cd661b951bf24ef36a6971e560a - pristine_git_object: cd88d08f3a6d71c88f56912d5a739b59cff0804d - docs/operations/creatererankrequestbody.md: - id: 8456551b3ea1 - last_write_checksum: sha1:80cb06901c4dec44c0a0f77880307235b2695645 - pristine_git_object: 4fa5cb9b85bc3343a9a6b91a425d3dea606a1d15 - docs/operations/creatererankresponse.md: - id: 1b5f55b55e69 - last_write_checksum: sha1:426209e05c118111316d4486c9cba821bd88ab77 - pristine_git_object: 0b28bf7096289a1ed51ef83ccbd06641efe5fefb - docs/operations/creatererankresponsebody.md: - id: f1f58657dfa9 - last_write_checksum: sha1:b845d6dafa286dc879ebc16d32586b061744634c - pristine_git_object: 57159c5385db02707ad1fc38c701ffea818b0d84 - docs/operations/creatererankusage.md: - id: 1e5c3b94d7d4 - last_write_checksum: sha1:b868206dafba854b524d1a4f1f2f283628fe28da - pristine_git_object: 42682414d583eb0c2cb26ec7ebbe302e969d980d - docs/operations/createresponsesglobals.md: - id: 9ea14f11bfeb - last_write_checksum: sha1:9586d395012468f47af06b82c7fd6f71b52bdb9c - pristine_git_object: 265872cbb44f436ced32612e7d880ad31d3fa41d - docs/operations/createresponsesrequest.md: - id: 98a355410675 - last_write_checksum: sha1:944f01fa8b720b943632a555d728c9a76d873671 - pristine_git_object: 87238b0b77a7ad408b560adbccc541afd8fcffaf - docs/operations/createresponsesresponse.md: - id: a3d80d6706a3 - last_write_checksum: sha1:b02dd81018eb73c7761a32ead8011abff17d9962 - pristine_git_object: 5c515b1d273af54ccbf5e3d32b1677cbe867a1f2 - docs/operations/createvideosglobals.md: - id: 356f4c73b7c4 - last_write_checksum: sha1:c639cea73f4e6c596f5b1fe567fa9b0c584caa6d - pristine_git_object: 5a2167c582c16eb6d2811f5e5af20246798fd110 - docs/operations/createvideosrequest.md: - id: b8190b2b48e4 - last_write_checksum: sha1:ccf223bd7e2958b01032fffc328ba43f0e6bf260 - pristine_git_object: c9ce4f85e23827bdd48ebb8bf00525343eac73ce - docs/operations/createworkspaceglobals.md: - id: bb43600a84d0 - last_write_checksum: sha1:431ed0e1519765d8b94d50ac991a64f6e6241513 - pristine_git_object: 1f46dbb7552fe39db8fdf7209d9d5287f808bfa4 - docs/operations/createworkspacerequest.md: - id: 9aebad99652f - last_write_checksum: sha1:26e3648e75871274c27e60ed42715d7434223819 - pristine_git_object: ac92a748a5524ccb683ffb32dce19de3714a0e37 - docs/operations/datacenter.md: - id: b08a21cce65c - last_write_checksum: sha1:9f399d250c42bff63295881990961f871a36b8a9 - pristine_git_object: 51549248259fddd4e7822f3ceda9f972adfdef86 - docs/operations/deletebyokkeyglobals.md: - id: 1d1c3a465a49 - last_write_checksum: sha1:f32106a0fc76aa4d3cb69534d5ce194b89307559 - pristine_git_object: 4c6957088dc54ca56dee767ff12dbefee4699a40 - docs/operations/deletebyokkeyrequest.md: - id: 0f7d1a3cad77 - last_write_checksum: sha1:31a3faafb0bed58823054afcd7956cf9e3881266 - pristine_git_object: 0ddbc912f8cb861cee8e1806d1324541e0e637de - docs/operations/deletefileglobals.md: - id: 47ec2f40c8e9 - last_write_checksum: sha1:06807ac545024567e53306d34c2d065536ec05eb - pristine_git_object: 9b34d571d0fd52d1dbe1d6c30ff1fce3accb3d34 - docs/operations/deletefilerequest.md: - id: 9e780e5a62c8 - last_write_checksum: sha1:d402693b03224324a6f71a13b510a7176d53a322 - pristine_git_object: 6fc40ff3b1ec6999d5ee5af3c974a410c7be3ef0 - docs/operations/deleteguardrailglobals.md: - id: fc24ed3e100f - last_write_checksum: sha1:303b76381d6ae26e8d39c5470d35bfbbbb5df0df - pristine_git_object: 8b3caa0462646cb84d12e677169a29c2f535620b - docs/operations/deleteguardrailrequest.md: - id: f746c227ab1e - last_write_checksum: sha1:f2ae275087247cb5df753ba94a6a922304ee7fa5 - pristine_git_object: 14aa025d53ead8b0c2f7d64b4a25bc2424261622 - docs/operations/deletekeysglobals.md: - id: b6346fb0dd73 - last_write_checksum: sha1:6e15f083ee437e9ed5f60702bdfb893b0b863d53 - pristine_git_object: 0bbd49855930a9f997e1f7a6941e393e4b1dd987 - docs/operations/deletekeysrequest.md: - id: 604f8b4a8be7 - last_write_checksum: sha1:70312fb7dd966699ade23b4ce1d865ec241ea648 - pristine_git_object: 61b97141c70a2a86eecf5a492e59dcd131ec8f25 - docs/operations/deletekeysresponse.md: - id: 843ae03c4c33 - last_write_checksum: sha1:3e34ea65b5397e4d1203306e4a08f12023ebfba2 - pristine_git_object: cc7cddbdde6e0f31ddbec25b8a01e7ece0b8e04c - docs/operations/deleteobservabilitydestinationglobals.md: - id: 320854972cd5 - last_write_checksum: sha1:cd2b58536565b300ac1b8a1963809a5eabb1bdb2 - pristine_git_object: c4a9578900390adc5977342a0f6872ad5703d5f2 - docs/operations/deleteobservabilitydestinationrequest.md: - id: f6e046bcfc29 - last_write_checksum: sha1:73e6898e9509d0cab70df26d3ffe4ab74fd01af5 - pristine_git_object: 538528d0c188a3e3b295a61231d017a23c13e923 - docs/operations/deleteworkspacebudgetglobals.md: - id: 87689e418851 - last_write_checksum: sha1:cfdc49f941d57744c2601377bf478c2a8f2c3e21 - pristine_git_object: a42b7035a7917b3cbc26c523c855df8318980500 - docs/operations/deleteworkspacebudgetrequest.md: - id: ecdaa4b4aea4 - last_write_checksum: sha1:98f66bb1fe0910b84528bbf9d284eb01f409060b - pristine_git_object: 1528dd7d7f64808af792b1f424989eeb508a8aa9 - docs/operations/deleteworkspaceglobals.md: - id: c9f40cc89b0e - last_write_checksum: sha1:4131177651ca5ad33b7160b2f4b8ff74e2233152 - pristine_git_object: ef29294eda583f20fa40d5a544537cb72f1e98d8 - docs/operations/deleteworkspacerequest.md: - id: bd62f5b93ebd - last_write_checksum: sha1:8bd64edf9b0684036c34ab258b95914d46cf8520 - pristine_git_object: 980bab8fc4db27e0e7ef13f8799e0abd3ce8054e - docs/operations/dimension.md: - id: e9f30dc36c7a - last_write_checksum: sha1:a8598023d4ff603ab6a4fc630eca4aff603b417e - pristine_git_object: f1211356413148df1ac44fa0e80cd42d2d6e9df2 - docs/operations/direction.md: - id: 7ba091522c14 - last_write_checksum: sha1:acbf6523b76ae4f9eb60cb9f61c525300135992b - pristine_git_object: 339195f5b5e267ad8dfe3d912169130ca7205fa6 - docs/operations/displayformat.md: - id: ad242fff7e06 - last_write_checksum: sha1:1b2aee0301442f0d1cd0cc187da805775033cba3 - pristine_git_object: dd278a8c74326eb0b1636e8d1c74bd24b0cfed31 - docs/operations/distillable.md: - id: ab4b4fcec736 - last_write_checksum: sha1:11ce4c3bdfd7a3aca4e94e2bbf81318acd845f9e - pristine_git_object: 77fb765c6ac1a5588d6f96fdcc0d3f57635f72c8 - docs/operations/document.md: - id: 640b715eb2a4 - last_write_checksum: sha1:e5354408ae5ad862afda9ee12e58ae51ee2b99b4 - pristine_git_object: deaad6c3d45766316174ea050f127401f31b1c93 - docs/operations/documentrequest.md: - id: 08ce1217bc41 - last_write_checksum: sha1:4c57c2ba76821c5d40267660da2d061abe55c297 - pristine_git_object: a55fbb16dc7f4404fd56275df881c72fdb57d723 - docs/operations/documentresponse.md: - id: 1dbe219e966f - last_write_checksum: sha1:aae01d1323240685b2f38f0409b18530fbe8193d - pristine_git_object: bb8bfba10d72c9a749611ba87413df6f06e068af - docs/operations/downloadfilecontentglobals.md: - id: 40cf7c83ef44 - last_write_checksum: sha1:85802c7eddba33133a5d3913a23db467049fb01c - pristine_git_object: ba3fc09c424898cab0279dc5cf8abea7c3fba7af - docs/operations/downloadfilecontentrequest.md: - id: f23fbce569ce - last_write_checksum: sha1:f3a2a8aafd962f49a181f7ea6518c4b9780cf422 - pristine_git_object: 31be67d10cc2e2f7964f9bb5dbb608d9375cc973 - docs/operations/embedding.md: - id: f269f99ee6d5 - last_write_checksum: sha1:37c64f7daf2ddca055feafab8df92acd112976f3 - pristine_git_object: f6344cab1c59e1be2b221d42c09ee4fe4ea8b69c - docs/operations/encodingformat.md: - id: 3ccae4d8f099 - last_write_checksum: sha1:7b7792741089194d996848dccca2144db1e2ca3a - pristine_git_object: 7f532c1c211071ca34ca8d2fa9296a94af0192c4 - docs/operations/exchangeauthcodeforapikeycodechallengemethod.md: - id: df7142dcee15 - last_write_checksum: sha1:abf90e37d86ba401850965e0837d590fa7cd7d14 - pristine_git_object: eec31e8c5e222b872db0c53aef3dac3889879b5e - docs/operations/exchangeauthcodeforapikeyglobals.md: - id: f25fc784d760 - last_write_checksum: sha1:3ba6407369e5bf7d202eeb18036af247392ac51b - pristine_git_object: 91c87730d951c0b1d89bb4f876e3b2552127af81 - docs/operations/exchangeauthcodeforapikeyrequest.md: - id: 88d7fb3e304a - last_write_checksum: sha1:88d2ce3d649aec2ef9b61bbd370f124cb0539c70 - pristine_git_object: 05bbc427c28921582f5bf67af31c6eb685502bb0 - docs/operations/exchangeauthcodeforapikeyrequestbody.md: - id: d4dadfc0846f - last_write_checksum: sha1:0a2aa24a4d45ed66e6b2c39e47f684ef4bdfb65a - pristine_git_object: 6361a13cacd0f7e6d72eba0e7fd912cde7251a54 - docs/operations/exchangeauthcodeforapikeyresponse.md: - id: 62e36bd89583 - last_write_checksum: sha1:f1f06cc15b7bf183358c6de9aa6351b70ca5e8bf - pristine_git_object: 11975e02a266c09b4c6c77409c7e8a42fe7cb537 - docs/operations/file.md: - id: fb72601b883e - last_write_checksum: sha1:ade4d3c908c664a07a3c333cc24bc1bfb43ab88b - pristine_git_object: 37cc418f9e5189c18f312c42060fd702e2963765 - docs/operations/filter_.md: - id: 99a428faae78 - last_write_checksum: sha1:50fd6effa0c74b5da3f11c9a62ad18f418f74904 - pristine_git_object: c6abf133fad31236d881d4ee0d6364691d209818 - docs/operations/getanalyticsmetadata.md: - id: 33ceb2682f42 - last_write_checksum: sha1:58248c8e08a19c77e1b7a1269928e7e1e9fc7a7a - pristine_git_object: b9e1c5a16c11d4d4d6697c15ee90ff17e6928e4e - docs/operations/getanalyticsmetaglobals.md: - id: 470b157773a5 - last_write_checksum: sha1:85d2f05090d37ec85f5a9be647326a5dc2a03c22 - pristine_git_object: 532cfc24f8768a637d5da91d8dd7fd9744fae665 - docs/operations/getanalyticsmetarequest.md: - id: 6ceee9c0ed9e - last_write_checksum: sha1:8c17007bc351f887b4ca09a836c691b829bde461 - pristine_git_object: 751b08b78b201239f5a98ab606e8222f1638b4c3 - docs/operations/getanalyticsmetaresponse.md: - id: c18398ae7125 - last_write_checksum: sha1:8e7f71dc5ca06ffe4033f47bbe33ca2ebdeb7e72 - pristine_git_object: b21d5534d8ad35fd0a5bbdd3136b63ae0c75423d - docs/operations/getapprankingscategory.md: - id: 598b9ca46294 - last_write_checksum: sha1:74d76e21a39a083a6ab179002648ac218724b902 - pristine_git_object: 4d33545692c4cfd7c4bcac32bccb812a08fa7eee - docs/operations/getapprankingsglobals.md: - id: 6cc30d444669 - last_write_checksum: sha1:b0e0a24c467a13814a96971210a82d462825b208 - pristine_git_object: 7d92111badf45247134c84f13cfe5f823f000d7d - docs/operations/getapprankingsrequest.md: - id: 9578b7b3d5a9 - last_write_checksum: sha1:c8160407c9423397deb77966250d630ff0ff4035 - pristine_git_object: 0d36b5103163108872a278ec906169b238637dee - docs/operations/getapprankingsresponse.md: - id: 197177f42a08 - last_write_checksum: sha1:083fff141eba4473501bf2c5f8e3b077399cc281 - pristine_git_object: 69f3a432383f6823843958ae5cd6a4b300867b64 - docs/operations/getapprankingssort.md: - id: f6276c91ff17 - last_write_checksum: sha1:9c80418c5384e63542ea16aa336c3bfe54c23b64 - pristine_git_object: f0d402fbc8b66cc075706e056fd152e41e141c3f - docs/operations/getbenchmarksglobals.md: - id: 18c553c31212 - last_write_checksum: sha1:99f5c115ff5fd28f04cb80fe4dfa280f12c7c68b - pristine_git_object: 215e03e822bc8d9945711a5b08bdb1790617dd3b - docs/operations/getbenchmarksrequest.md: - id: 0a40a540bba0 - last_write_checksum: sha1:8102900af82a582c56bb903d521fddf4bc7bea8e - pristine_git_object: 3bf4626faebe849aa85814be508bc820c74a0868 - docs/operations/getbyokkeyglobals.md: - id: 82a8cd8db21c - last_write_checksum: sha1:4490949622267f537def903fa3efe64142925739 - pristine_git_object: f2fe5e4320b22e90fda49f1476cd4a8a5a5a4f26 - docs/operations/getbyokkeyrequest.md: - id: 0415f890e75a - last_write_checksum: sha1:0ee7c46f0cbdd349f1b17a1e2275bc7a6aeaaa54 - pristine_git_object: 99b01898e72b7fcd892c7fae0707a295e36aea2c - docs/operations/getcreditsdata.md: - id: 57e01e9078b5 - last_write_checksum: sha1:0f1d133fe4045e1b1d0e494e54bbb02b76d16607 - pristine_git_object: 9ba4582d555e52c1542c1a1660434dd987ca5407 - docs/operations/getcreditsglobals.md: - id: 83a1f9872049 - last_write_checksum: sha1:f0d59e9efe86e551f1a5ae616ccdf92cfd195860 - pristine_git_object: bb29d2dafec61744be14e47cd7b3c08b6ea2c23f - docs/operations/getcreditsrequest.md: - id: ca7cc8201079 - last_write_checksum: sha1:973b453d2a248ad281a95309de874c1fca385fae - pristine_git_object: f86e9758b6715315067659ed0adb0c6f4d94b92d - docs/operations/getcreditsresponse.md: - id: 9dd4a021eebd - last_write_checksum: sha1:36204666197a35bd352d2e2414f2d993748d01e2 - pristine_git_object: a58a336fb17cd33196da51df89c7803ba0cba363 - docs/operations/getcurrentkeydata.md: - id: e357cfe8cdcc - last_write_checksum: sha1:fa6a289f008033a17c6dc0c78d2536cd8996b1c0 - pristine_git_object: dc97980a9d3769df52334def41931e1281d82fb3 - docs/operations/getcurrentkeyglobals.md: - id: 9d0a1314955f - last_write_checksum: sha1:3aaff7ab31036ad4edb525577759ec52c430e180 - pristine_git_object: 905f7d1dd7692126131c8dbb99a5204b39b06f4b - docs/operations/getcurrentkeyrequest.md: - id: d1cc7ac5a986 - last_write_checksum: sha1:f3df133d4942e098df43ef7b6d2bb4ac91a5b2d4 - pristine_git_object: e20974606ebe165785b5c3cf7a392d3acefcceee - docs/operations/getcurrentkeyresponse.md: - id: 37af8951de4d - last_write_checksum: sha1:1e62836ec19a8aad8b0dcafd7799b71250a5c6f7 - pristine_git_object: 2855d5b95d41a494bc7ffa9f85c74ff27a46ca96 - docs/operations/getfilemetadataglobals.md: - id: 2d5d096e7f7e - last_write_checksum: sha1:9bb4324ec2eb4bdc590dd11587ffd8382b03fd27 - pristine_git_object: 75e2f6c313dd6b7b10e85312cb696e0d9d99175a - docs/operations/getfilemetadatarequest.md: - id: b47b5ebc4684 - last_write_checksum: sha1:8650f381ccdd0b4f936c1d54e36496437548f6e2 - pristine_git_object: dbb1ad6578af3d162e73adaa1f3a1937eddebf69 - docs/operations/getgenerationglobals.md: - id: 0d6e856c5861 - last_write_checksum: sha1:b5236815132dedf2b595fd520f1753d5ec8bb6e0 - pristine_git_object: 842003596b344b8b0ce3d74f0eb05e8157b4a4de - docs/operations/getgenerationrequest.md: - id: c830d67c6a95 - last_write_checksum: sha1:508adc1d9d3a03a5b6d12515ae9dd8f0b5b1c2e4 - pristine_git_object: 8c54a7a47635c68bb980670de08a748d076a401a - docs/operations/getguardrailglobals.md: - id: 6cf14d555b8f - last_write_checksum: sha1:025d0a3b53ce5603d5d262a5db3ac54b5ce981d0 - pristine_git_object: 63bf9d69b85cad246cd1d5a2ba4ae47d9c6c4566 - docs/operations/getguardrailrequest.md: - id: c105f1324d76 - last_write_checksum: sha1:a0b3242a5fd017bdc1819eadc5e74b40b8e7bc2a - pristine_git_object: ad49c823ffd11b46d8a8ce2a67eed5bd71d09db8 - docs/operations/getkeydata.md: - id: 4fba05263947 - last_write_checksum: sha1:914831859afa885b63cf4d8a252ae16997007438 - pristine_git_object: c5a3db6f9a847b1fafaca37b04e58e0f63cf77e0 - docs/operations/getkeyglobals.md: - id: 7f990e0efc1e - last_write_checksum: sha1:12dcc44c433951cdd8c4136ae1a70702e2b3e47d - pristine_git_object: 585d2a336f873f80afd427063fe3d845be885adf - docs/operations/getkeyrequest.md: - id: 1f6e344b43eb - last_write_checksum: sha1:13b09743107d4c21db602e1befb1623eae7aa04f - pristine_git_object: b7b0a302d24d5964ce5a4bd24672d766362564cf - docs/operations/getkeyresponse.md: - id: c145b1a0dd5f - last_write_checksum: sha1:c315584d278f8f91f4437479ef8e95ce48b3130c - pristine_git_object: 72e8055b7d9b0de224ea423fab24a5614d6e9da3 - docs/operations/getmodelglobals.md: - id: 8bf42bb29760 - last_write_checksum: sha1:015159b3fab18f2122ba256831314a96c88085de - pristine_git_object: 5c12ffab153909fbf0b235c63500d36f09bc6259 - docs/operations/getmodelrequest.md: - id: 81d572026a85 - last_write_checksum: sha1:87ba489a1703e58e49c19ff6f29a416f9441a378 - pristine_git_object: ebc160f8b88bbe2208da932a31248fa0eb726d83 - docs/operations/getmodelscategory.md: - id: 30e7c8fb695d - last_write_checksum: sha1:aab2e450286bc960f0aa5a856e29b6b2f2feaaa1 - pristine_git_object: 79ab890961ecf7cc92cd970881feaa8ad3aeb594 - docs/operations/getmodelsglobals.md: - id: 61588f3029c8 - last_write_checksum: sha1:f1565d45f3d06f070a8bc5ebe53d6205656b4b3b - pristine_git_object: 9533d03cfb8ec3720fde4833d7260f4f645d6786 - docs/operations/getmodelsrequest.md: - id: ffb89fce8262 - last_write_checksum: sha1:e0c12cf541942cea4c3d1a7e79950a7cf47314d2 - pristine_git_object: 57de7f795dd1817c42f20c705d3e679009f3ee32 - docs/operations/getmodelssort.md: - id: 0e5bc10b2c1e - last_write_checksum: sha1:f464ed4731a978219a5e9b10263a8a69c8b3273d - pristine_git_object: 6c9f2b7e02cbe8fb4bc6fded0774533ac04941cc - docs/operations/getobservabilitydestinationglobals.md: - id: 00303cf00619 - last_write_checksum: sha1:ae437bab3d6cd3996eacfbb713f9b29385eee1c9 - pristine_git_object: 66c60398544681aea2ef847648b6b1b6b7f83000 - docs/operations/getobservabilitydestinationrequest.md: - id: a182ef732e42 - last_write_checksum: sha1:5d0d08269002a80e0cb73523ad75571569c1b7be - pristine_git_object: f74d79fd1c0ff58fb95812dcb8821eaa601f8275 - docs/operations/getpresetglobals.md: - id: 16601428a948 - last_write_checksum: sha1:673254046620888b4af338fc40a08fc70a7f5935 - pristine_git_object: 40f699f420beb6c7f0e27661e0c5380d404d703c - docs/operations/getpresetrequest.md: - id: 07d2d7c15e84 - last_write_checksum: sha1:2fa6def5b8bd8e1d4472888c6efa64b4c0b829b6 - pristine_git_object: 9259ee30ef6f0ac62c18bc7952c056d1b32a1d03 - docs/operations/getpresetversionglobals.md: - id: bae9f8e30de3 - last_write_checksum: sha1:b29bbd392a7f21787c3dcefd678a49ad98f675e9 - pristine_git_object: b3666ad4ff09a4ba377795c0dd57e41324356b79 - docs/operations/getpresetversionrequest.md: - id: 7f6e78a91e0c - last_write_checksum: sha1:373d2ee03e10912fbf4e495ad6ac2890fa0a4bbd - pristine_git_object: 4ceea402bf2a1acbaf26ec89d40bb57f27a8dac3 - docs/operations/getrankingsdailyglobals.md: - id: 4c35125b5a55 - last_write_checksum: sha1:95e16bf72ae618cd5089666e89b8c6b37a8ffdc3 - pristine_git_object: a75e324e4f708bd186de38f2bd1ffb5df19df11c - docs/operations/getrankingsdailyrequest.md: - id: 4418b400973a - last_write_checksum: sha1:9941d12ab4bf460c95756d511f9339a17383e113 - pristine_git_object: 59be90b2aebcf81f507dbea4cea1496beb9c5454 - docs/operations/gettaskclassificationsglobals.md: - id: eaf1910aeda8 - last_write_checksum: sha1:3902ca1f10b2247b71a868dc5a2789fba1328983 - pristine_git_object: c0f672452f4e7e1bdc24388e61a01c3f8a763b1d - docs/operations/gettaskclassificationsrequest.md: - id: 5d0a91bd9531 - last_write_checksum: sha1:45c9c66b1fc95916b7c7c0924cea6120c372a308 - pristine_git_object: 3970eeeea4f1689144161d9d5b0dc79f9a50af01 - docs/operations/getuseractivityglobals.md: - id: 39aded6fc0f1 - last_write_checksum: sha1:53ccc45e0783444aa97f4e051b6ac6edc3acc588 - pristine_git_object: a67a41d74952a5d50a22e2c080f7f89fefd1993a - docs/operations/getuseractivityrequest.md: - id: 114457542fe3 - last_write_checksum: sha1:a227cb2f2e7dacedea35660a62782d35688b5756 - pristine_git_object: 302da8dc897995610aed1ff03ffcf2d882c9adaa - docs/operations/getvideosglobals.md: - id: ac6874f74ef9 - last_write_checksum: sha1:d76755afe2595aa9fcc2bb498bfe0c779282c35d - pristine_git_object: ea3a74389060aa5eb44ff3edfda609e490833bbc - docs/operations/getvideosrequest.md: - id: 2eeac3b6576d - last_write_checksum: sha1:9f6eec582ec3a568a6e14f57a687f0d360fc9748 - pristine_git_object: db40577d2526f81edbcc38cef6517c598a98bc7b - docs/operations/getworkspaceglobals.md: - id: c0101897f893 - last_write_checksum: sha1:5ac92be2d4cd79c39bad1ed47a4e689ed44f3769 - pristine_git_object: 1bd5e0856557b36ea222bd2b685557bb0c75a7f3 - docs/operations/getworkspacerequest.md: - id: 6443ed4f7ead - last_write_checksum: sha1:c2ada6583e276f2a6c553b24053453853207b302 - pristine_git_object: 8b59d2daf235f8af09bf4664c8080ea7a0e5b3e2 - docs/operations/granularity.md: - id: 1a397e2c8a0f - last_write_checksum: sha1:612977bfd1a843139f70131bb345e7ec4d45ca4d - pristine_git_object: 8ced62dd4e058a108a2e059bcfee3f801e5cb605 - docs/operations/granularityname.md: - id: f5460a07f93a - last_write_checksum: sha1:efc55ee0c73eaa090d0bca648fa58bba39559537 - pristine_git_object: dd9a9ba9845690442ef2158545ea9a3ac7a7b4b5 - docs/operations/headquarters.md: - id: 3ccf7adf2542 - last_write_checksum: sha1:24ca86fa6e2ebabf4cb034f6e368901e5041ccc7 - pristine_git_object: 64ba03100172260705398517008edab83db1a1c1 - docs/operations/imageurl.md: - id: 3cc93f7b5a2a - last_write_checksum: sha1:f4f5ef46de9b16797c9779a2b2fefaedfd144c6d - pristine_git_object: cd90c034360cc55772c9953ee29524292f7fd9f0 - docs/operations/input.md: - id: c06b700f96ae - last_write_checksum: sha1:427fd4eb7f9fb9fb06ba0880b40a6ef8ac2ea81f - pristine_git_object: 455985900b46a8d308c755ee0f060bf32c93fa16 - docs/operations/inputunion.md: - id: 8bde108b50c7 - last_write_checksum: sha1:e671ac1a028be0528b5273dd61b8deea5c3f9451 - pristine_git_object: 655cca3c9dde2904f47187955063ed1def505e47 - docs/operations/listbyokkeysglobals.md: - id: 97eb1fd15ac1 - last_write_checksum: sha1:7c545f4b2bac2dc7c814cbeb0ce3ece4e8338f9a - pristine_git_object: 9bd9dcc5a67a8361541150beff1fd3f67873220b - docs/operations/listbyokkeysrequest.md: - id: 2616eb6c184d - last_write_checksum: sha1:5cf5f6e129d99ea30797d3523ba69915d1057bda - pristine_git_object: 4a8bb4188542896d96807b154ed1423c12fb0f52 - docs/operations/listbyokkeysresponse.md: - id: 15eaf6a6fa23 - last_write_checksum: sha1:8f688dc5041a88fa5417a4d58471c1c9399decd9 - pristine_git_object: 0e6a3cf7bce0fb030a0bd8f2c3c9d0e076490504 - docs/operations/listdata.md: - id: 3a3029670d40 - last_write_checksum: sha1:1384605ff96cc0e7797d7dd2ff42752fe980d91e - pristine_git_object: d2a0b36ca2cbc9e297beba6471f7838b12b0b783 - docs/operations/listembeddingsmodelsglobals.md: - id: 29c3a9629ff7 - last_write_checksum: sha1:a8b2d679ac7a558761e4289233d31084f4f7663e - pristine_git_object: 20150d7765210b3c5baf1fa3ecd1c2f50eecd163 - docs/operations/listembeddingsmodelsrequest.md: - id: 0f177abf51a7 - last_write_checksum: sha1:01e31efadca654393b158a6fbb21f7ed8db9318a - pristine_git_object: d3628eb9a4c4f75d511bad66af17942e2212f92f - docs/operations/listendpointsglobals.md: - id: 80acd2ab5391 - last_write_checksum: sha1:7f209fed5c7d0c7b41e4288a1a4f685c0a0bca05 - pristine_git_object: 5a8118765497e987ccb2ece257091931d6db1c64 - docs/operations/listendpointsrequest.md: - id: a3fb6a6f2c84 - last_write_checksum: sha1:d044d07943c5fe4ed46ed8292c88eac0a43ec3d4 - pristine_git_object: 49dea4f8a6e4609aadad28dd43f0963f4c6c8a49 - docs/operations/listendpointsresponse.md: - id: cfc28fb4b9f6 - last_write_checksum: sha1:93ba9653230f96a61c30adc5964b7cea0f931c06 - pristine_git_object: 130c76834bae2d44f58cab77a99f7a5d72b1ea8d - docs/operations/listendpointszdrglobals.md: - id: a2c6a0214809 - last_write_checksum: sha1:7992ef1026f739604835fbab28c5fdf28b8dff63 - pristine_git_object: 6abb940ea82d1562e0e0d915a229f40120e65963 - docs/operations/listendpointszdrrequest.md: - id: 6dabe97bb447 - last_write_checksum: sha1:98569a89d74aca1ae5c47fab1976c9fb9dba7ae5 - pristine_git_object: 727be2cdc85666532208ef7c84927440f1701421 - docs/operations/listendpointszdrresponse.md: - id: 37a957da8f54 - last_write_checksum: sha1:6892fe1fc31da14493b937171caec5f0fabb8daf - pristine_git_object: 54cf662af701995f7c04272d932f9a2e2731beeb - docs/operations/listfilesglobals.md: - id: 7714f717b38a - last_write_checksum: sha1:1c33d490023fc17efa93535eb6a9216c892f791f - pristine_git_object: 7de49096c3a1c04634f297ac6477e5293febb539 - docs/operations/listfilesrequest.md: - id: 2110213173a9 - last_write_checksum: sha1:7ec4380dca8eb27e7af711c6eacc232a981517ea - pristine_git_object: aed56276f9f1a086b43d8011a7d0baf8775f17a8 - docs/operations/listfilesresponse.md: - id: 2f635c7a9991 - last_write_checksum: sha1:f1702087ae5a485f124b8dc4d83d9c8d8172eb06 - pristine_git_object: 371188d710b21e568e6405528febcb034c6c4b55 - docs/operations/listgenerationcontentglobals.md: - id: 86c60d8ee820 - last_write_checksum: sha1:6bb5e89777b8f25572237af5065a15ff5abea244 - pristine_git_object: eb76ee2d7e2516c9942be0fb3a1fe38177741f71 - docs/operations/listgenerationcontentrequest.md: - id: 2fd43266dedb - last_write_checksum: sha1:e9831ae9536176f944df36910bcbcde652545a6d - pristine_git_object: a025996eecd9ddf89a1eb10a5931becdc58983bc - docs/operations/listglobals.md: - id: 32d30e56f680 - last_write_checksum: sha1:6b2661b1a208354794ee9f591c7581526d4641be - pristine_git_object: 53064e43a4cc24c142195b662f4dec2ba7218081 - docs/operations/listguardrailkeyassignmentsglobals.md: - id: c1e1fe669380 - last_write_checksum: sha1:58b3d4cc562e3cf74fc46213db5792aec38900c3 - pristine_git_object: a9cc4a39cec08240575910f54e2d3066f013dca5 - docs/operations/listguardrailkeyassignmentsrequest.md: - id: c841f466ea37 - last_write_checksum: sha1:7084ec7cf9a90757bcd5180b2a3d78e90624264c - pristine_git_object: 1873ab97b35a1ed0b2af8a1bbffdb3bb4a6ca340 - docs/operations/listguardrailkeyassignmentsresponse.md: - id: 1d97f15080c2 - last_write_checksum: sha1:4ed00c4ac409a79c9d8a11cd528584b792208cdc - pristine_git_object: 3ce3be710fd904fdfcdf63fb7fc9428993df8f1f - docs/operations/listguardrailmemberassignmentsglobals.md: - id: 104391661d20 - last_write_checksum: sha1:fca243f432ac5f1e46b991c83b4ae0ac76a173df - pristine_git_object: 58ce40eb9573bf958f8063767bb57235c3d9595c - docs/operations/listguardrailmemberassignmentsrequest.md: - id: c2181183ceb0 - last_write_checksum: sha1:949f302f653c130fa4d7c683b6999a26ad85bf63 - pristine_git_object: 962eb0c3abb81b9dfd2460b541950118579ae869 - docs/operations/listguardrailmemberassignmentsresponse.md: - id: 3148eb3110b1 - last_write_checksum: sha1:3c12490bf06aab3053f5a05295b2147f85942ede - pristine_git_object: 766effbcc369983252d95e837f67082dd1f9ff91 - docs/operations/listguardrailsglobals.md: - id: ce7fe6f64d6e - last_write_checksum: sha1:14bc637a0e4375919159b6d2be79fbacde3d70b6 - pristine_git_object: 4a623f2b7664346b324037e5e099cc19a22e0f99 - docs/operations/listguardrailsrequest.md: - id: c00416201071 - last_write_checksum: sha1:e73c3a5dab8af65b85eafbacaa9c3e7bff99ce3d - pristine_git_object: e6f8126048b2344f42c86d1df9e472b9b0618bc7 - docs/operations/listguardrailsresponse.md: - id: 0e85f301aa5c - last_write_checksum: sha1:69b2d4440e668dc9e76ebad86d5f70227276a31c - pristine_git_object: c2e3510e7d805915eb9f493ac6cb092ec1a9d9dc - docs/operations/listimagemodelendpointsglobals.md: - id: 24c447cf0391 - last_write_checksum: sha1:bc2e0cbf57b211cb37f3d0ec5e22a4e4ad8de12f - pristine_git_object: 8ac861e3954206f311e935cb0f555c430bd48f65 - docs/operations/listimagemodelendpointsrequest.md: - id: 4e63ace27269 - last_write_checksum: sha1:d8362d4de0204a7ee118c106e6150a89bb28c039 - pristine_git_object: 27647dcaee248f17d21e6f1d6658eab1a7bbbe1a - docs/operations/listimagemodelsglobals.md: - id: d44612742724 - last_write_checksum: sha1:4016d7f2b457583473315913e4056de5c9b0bf3b - pristine_git_object: c3edbe39ee3c886c9a45d511442aa6f6a8cf4801 - docs/operations/listimagemodelsrequest.md: - id: 3b796f3db657 - last_write_checksum: sha1:9a49a00fc5847eca4f41a90b552ba1622982c1e7 - pristine_git_object: 2732ff2195c83246c0cd67cf88f2c5e528354936 - docs/operations/listkeyassignmentsglobals.md: - id: eb16fba53032 - last_write_checksum: sha1:823375a0dc84574748befda39821c790b469a6b4 - pristine_git_object: 6c0713d69c8b9f3d7532681b73857042bf0e6474 - docs/operations/listkeyassignmentsrequest.md: - id: 0d0d4d33f476 - last_write_checksum: sha1:24232750e6497d8670cc36d73957cd6a79a574fd - pristine_git_object: 4902d03ad6d0aa0f304f99c997ebcd816540aced - docs/operations/listkeyassignmentsresponse.md: - id: "973479296236" - last_write_checksum: sha1:a89918b7355e48a0e8946fd89bba5bd2e38f6357 - pristine_git_object: a083a11699fdc01328172073f6c5b11643491b6f - docs/operations/listmemberassignmentsglobals.md: - id: 4df3602b0efb - last_write_checksum: sha1:0e4513ed008550da90164df2dffdb82abb49b5ad - pristine_git_object: 7d4eb65315a19218dcd5c31e6ae67e68fdbc897e - docs/operations/listmemberassignmentsrequest.md: - id: b5c1c04b18fc - last_write_checksum: sha1:d8f4c537908c139b257c203f501085a0868df064 - pristine_git_object: e58ec65dd9087228d5e073ecb67d89df3ebd2132 - docs/operations/listmemberassignmentsresponse.md: - id: 4dad56275a0a - last_write_checksum: sha1:e0534935d968cf8af6497cef949e2ec8f179229c - pristine_git_object: 6ee5e606e476ab16db887de01ae94ce3aee2a181 - docs/operations/listmodelscountglobals.md: - id: 9d155afe292c - last_write_checksum: sha1:ad8222615eeb5f22a7dca9ad6008a97146fc22ad - pristine_git_object: 1c3931a3a1a06dd9862e488831586e56bed16030 - docs/operations/listmodelscountrequest.md: - id: bf7590298817 - last_write_checksum: sha1:41e3343e2082a2e1382fd7613bc0777ba2b02a1a - pristine_git_object: 02da5e2e3cd9d5dec1869d249ab348f1a613a16d - docs/operations/listmodelsuserglobals.md: - id: 69b5549f78e0 - last_write_checksum: sha1:55c10638b71726fda9336b32f2a2464392e25cf6 - pristine_git_object: b8ca3d373c3dce695fdc39be820d932603da5912 - docs/operations/listmodelsuserrequest.md: - id: a1486d2c099d - last_write_checksum: sha1:ca2fe8bbabe38b295a91831841f45eb8fa5c4bdc - pristine_git_object: 68b87e323737c9c05b2976022c6012fd6f0eaef3 - docs/operations/listmodelsusersecurity.md: - id: a5b7382e5fb8 - last_write_checksum: sha1:c4de0a5a996b4ad48cf50e0f5f35db05c882c574 - pristine_git_object: 3d42e13fcb006322664b3458e5399483ad0b73fb - docs/operations/listobservabilitydestinationsglobals.md: - id: f97e8b407351 - last_write_checksum: sha1:18ce351edf724c073d1a7e48cec4a4d1fe3344c3 - pristine_git_object: e743e9fcb59eed90783d6e02c525c9203000ba00 - docs/operations/listobservabilitydestinationsrequest.md: - id: fe42600264e2 - last_write_checksum: sha1:2c9fca29d3666dd8a0a6831ac171c3870bc8611f - pristine_git_object: 823bd375a911d42d6748a48a1475f737b9b2cbac - docs/operations/listobservabilitydestinationsresponse.md: - id: 27e52198d1cd - last_write_checksum: sha1:7bfd16e81835713d3c4da71b96e50dec3b2c44e4 - pristine_git_object: 2ca4b2b0b7fddcc9539f0c76ad9dd3c116c58d15 - docs/operations/listorganizationmembersdata.md: - id: e2cb8741f8f1 - last_write_checksum: sha1:2ca75ea8dd657b6cf33236ec7e3949215b958a8f - pristine_git_object: f4fcecaff12922aea5cad2a0e14415794dce7842 - docs/operations/listorganizationmembersglobals.md: - id: 01c9c4a98f1f - last_write_checksum: sha1:4a3bd5fe1fee29c52df34521ac1b05727aa92991 - pristine_git_object: aa080033b790fd4ccb16d01c64118aed5a66a156 - docs/operations/listorganizationmembersrequest.md: - id: f382354b10d8 - last_write_checksum: sha1:39a624c237163785c5a73aed88305e4d0a943909 - pristine_git_object: 6f90ae081bfe98aac40e7e632dcc9c324d797ecf - docs/operations/listorganizationmembersresponse.md: - id: b7cd9449d176 - last_write_checksum: sha1:f163e031babdf6a3db3e669b821578099ecd2441 - pristine_git_object: 240d8d538434110c7b972520ec373cb177e46feb - docs/operations/listorganizationmembersresponsebody.md: - id: 573a08dc9d96 - last_write_checksum: sha1:89cd76c6935cda7cbdb00de704b1d527e4eb0a14 - pristine_git_object: e5aab441b87284d7d88749950848db12655d48ef - docs/operations/listpresetsglobals.md: - id: 8b1acbd90059 - last_write_checksum: sha1:3202f46cae6be4ddc4cf4793402758a0b91385bb - pristine_git_object: 49f3ea321bc305055cfacfe22bc7590162f84cc3 - docs/operations/listpresetsrequest.md: - id: 4f1702eac3bb - last_write_checksum: sha1:78cc97678a40641d64c291ad016f78bcb247f9d8 - pristine_git_object: 90feb2a1c95a3b2203a48c465ecb8b29977cd407 - docs/operations/listpresetsresponse.md: - id: e827d8fa2c98 - last_write_checksum: sha1:f9bd37493c87f1af317dfc6fad181ee9365b5116 - pristine_git_object: ca86773926c8b90ab3073fbbf0db3344f74d5d51 - docs/operations/listpresetversionsglobals.md: - id: 9516dc5fe50d - last_write_checksum: sha1:764278af18b61c431efd16395a46e092fd77f4bb - pristine_git_object: a0b5d7e47938af709b3a5c95367dd690971bc6da - docs/operations/listpresetversionsrequest.md: - id: dca09de93f73 - last_write_checksum: sha1:b99790793d146acf534f8f9d5d9926373943ea03 - pristine_git_object: 689a4865feabcd144c977564149501f8445656d0 - docs/operations/listpresetversionsresponse.md: - id: 104b7871a717 - last_write_checksum: sha1:5ae0a5da5820f663c25ca583e955e2036bf61df4 - pristine_git_object: 10dc6e5f3ff5b5871062ac992a01ee3c3586819c - docs/operations/listprovidersdata.md: - id: 576de3a80e5e - last_write_checksum: sha1:2f5a3edd32a37e17be34bd07faf0b89b14f8a08b - pristine_git_object: 5179c87ea3ff01c0f5a36120cd5142c7196cec78 - docs/operations/listprovidersglobals.md: - id: cbf10c70be68 - last_write_checksum: sha1:00b1bc3b8b9781a6f71972c0975609a1cb6968e3 - pristine_git_object: 6aacb32d4be29dc18e901006356312491546e505 - docs/operations/listprovidersrequest.md: - id: 5beadbcc088f - last_write_checksum: sha1:3d3a5d51ab7f692658cab920debde2d3abf2aa6e - pristine_git_object: 9e96cc6d4d53196ac572a65150e6b1b1fcfaa976 - docs/operations/listprovidersresponse.md: - id: 749bf65c2ab2 - last_write_checksum: sha1:20b1f0862ecb643295b8e495178fe8d72d9077ac - pristine_git_object: 922cc65548995e12edbe83abf86732c4190c7a97 - docs/operations/listrequest.md: - id: 40bb7fe37ce6 - last_write_checksum: sha1:dd1cdb3c672fb456b05afa8c838bfca5e7a4f2db - pristine_git_object: a5646bdeb6412940b9f6f2320315d9f1f58788d6 - docs/operations/listresponse.md: - id: 14450e1d6614 - last_write_checksum: sha1:e432e29d3c7de8517cc16b59b958134ec561f09c - pristine_git_object: 255d266cb4cee8057210f820e560bba25858b82c - docs/operations/listvideoscontentglobals.md: - id: 5e356abaaa50 - last_write_checksum: sha1:476094e7c2920e0e3056d4995c4f02a450eab79d - pristine_git_object: dc3c375e02be84568e95cb4bc6ce766f81f5714f - docs/operations/listvideoscontentrequest.md: - id: a03dc9d02574 - last_write_checksum: sha1:a895bbbbb64b8a1e300bbae942196c52e86741c6 - pristine_git_object: a729b3d4582f4b596ef1535a9e69a7e426de2d03 - docs/operations/listvideosmodelsglobals.md: - id: 286327d3b747 - last_write_checksum: sha1:eb199755e6b166a947a8fed9462fcf061264889e - pristine_git_object: 305081b9fe45addf7f6802273992ee2b465e3257 - docs/operations/listvideosmodelsrequest.md: - id: e0e776f67adb - last_write_checksum: sha1:0d590826439a800f340367b6721265535827aede - pristine_git_object: cbd65ef6238a8b9bb2c36bc37cbdb5a5e181d3ad - docs/operations/listworkspacebudgetsglobals.md: - id: 2b37a411913a - last_write_checksum: sha1:04d18dd7fc16e7c773b846ac52f53eba0812854f - pristine_git_object: 38c41d7d85d5d2f2e26be4b02ae73244be9331c1 - docs/operations/listworkspacebudgetsrequest.md: - id: 06f1f49eb154 - last_write_checksum: sha1:b47f9ab876ac1aa8ee262bf1c7b6fda45fd3c4a4 - pristine_git_object: b2620e8e9338ff1be84a1d29ca487036a286c4a5 - docs/operations/listworkspacesglobals.md: - id: 4ccdc202de01 - last_write_checksum: sha1:3eade1075e3b0f917a9afee3da18cfebbc4ac886 - pristine_git_object: c5967dd23490646d0a10ffa24df8aa0bab712c9f - docs/operations/listworkspacesrequest.md: - id: 93bf2ba40fbd - last_write_checksum: sha1:c0d073a290e63ae12c5099d38abc89f87d6ca525 - pristine_git_object: f46ba571e6e7cefe535e9a429ed811978fe697a8 - docs/operations/listworkspacesresponse.md: - id: 54505a70bba7 - last_write_checksum: sha1:4f3cb764af31985161832976edf2fefb97c0cdc5 - pristine_git_object: f817644945c1182df48c2166fbf931e91ab34b36 - docs/operations/metadata.md: - id: d37b5c1d5589 - last_write_checksum: sha1:14fbbcbc61e874a7c3805d7d751892c734598532 - pristine_git_object: 62820591df404a67c63db6e3b3e942181f7dfa40 - docs/operations/metric.md: - id: 28da9e6f159b - last_write_checksum: sha1:1ee79f025dc62cf1bf26ffaf2a957debc4941acc - pristine_git_object: 7d56bf29feb132b5ecdd648201df3c5d732469cc - docs/operations/object.md: - id: baee3544844d - last_write_checksum: sha1:2fba5ecf3f93c90460a972666d6acdfb597cafad - pristine_git_object: 39e8c0b8d9a5e406a04a4636556efc03072ee441 - docs/operations/objectembedding.md: - id: 7a144a9c7a29 - last_write_checksum: sha1:5f009bd24fd951128cdc546a6a5c937ab0426387 - pristine_git_object: 4f8c20dd33dceafda3362119a1cfb1e5133810d1 - docs/operations/operator.md: - id: 2d98ce506f05 - last_write_checksum: sha1:e33c1a9f2770b16f88bf4516c7865868f2c0f868 - pristine_git_object: 2b1578ec5c2ba5be50fb3b5d6bfd850652d08b67 - docs/operations/operatorname.md: - id: 0c45b73c6cca - last_write_checksum: sha1:6b23abc74ab1eaf13c230d445c642ad0a169e59b - pristine_git_object: 03a40abd4069d8b762c146d23f76d8dd7cc93130 - docs/operations/orderby.md: - id: 1f56e147192a - last_write_checksum: sha1:9058eff01fac823cf53501fe8b3b5ae7246aef99 - pristine_git_object: 1fea03103fc771a2b98ba707d5021345697a9ae5 - docs/operations/prompttokensdetails.md: - id: 4e204e79631e - last_write_checksum: sha1:253a012fe630387ab4de4461bf797cc8cd7a09c7 - pristine_git_object: 56c454715dfb32bf210dfe8031e7145fd4c2c83b - docs/operations/provider.md: - id: 9d89f101fabf - last_write_checksum: sha1:471f657da16aeb9befb08e98183f85eb92dba405 - pristine_git_object: 487ab7b109aa3bbda8dc7e8f200e858f2771c629 - docs/operations/queryanalyticsdata1.md: - id: f5ead5b95530 - last_write_checksum: sha1:a55813c57010d0613c1e70ee1a9232fdcf98775c - pristine_git_object: 055291f2e192b8c846b85f04ac19212389d227f0 - docs/operations/queryanalyticsdata2.md: - id: 245e11bf5e6f - last_write_checksum: sha1:6222d56149ac857620007ff12a279bae421127ee - pristine_git_object: 6b787c3d1885278949ce64404b48e48374c90cde - docs/operations/queryanalyticsglobals.md: - id: 373ab736c5db - last_write_checksum: sha1:f3cc24044abacc9b184e6fb61b1c5cb86f8be0eb - pristine_git_object: 9f9d4a101658eb5a210c95578a1c1f504db3069f - docs/operations/queryanalyticsrequest.md: - id: 17bd5ac6f41a - last_write_checksum: sha1:8e60085008d0b24ced809aa589c73208cba08f60 - pristine_git_object: d8c88120bf89df54fc08efc3de0ae50c291cad39 - docs/operations/queryanalyticsrequestbody.md: - id: d462ba943863 - last_write_checksum: sha1:d61b9cb983826a5e4dc9c5fef29e29d7c3ccd848 - pristine_git_object: 87a4d54f500b26455023c24ac6b5f26b9efad510 - docs/operations/queryanalyticsresponse.md: - id: 662c24789418 - last_write_checksum: sha1:88a8ceb4ceaad18c15e6b22450205d1562b17064 - pristine_git_object: c079f10e99e8ebed3047b7a128523d606a3b4589 - docs/operations/ratelimit.md: - id: 55ccfab9dcb0 - last_write_checksum: sha1:ba383320e312bc87bd156a5d338f3d973376ec02 - pristine_git_object: eeed3720e0eef6a871483dabd4a345495b466339 - docs/operations/region.md: - id: d0bc61dedd4a - last_write_checksum: sha1:bf44dd639de860bc02404edc99be98a19c4e0c00 - pristine_git_object: 36a51ce0097c2ad065ee0b0331d90339fcf3a6e5 - docs/operations/result.md: - id: 432b3cd4c69c - last_write_checksum: sha1:ec5cacde47270f2b163116b6b38820cfaa285dc0 - pristine_git_object: f06fc0e434bc96c8f29c6eb97e5a165b3df0434e - docs/operations/role.md: - id: 361efe189fd3 - last_write_checksum: sha1:b636196d23d598f27a7b39d5db1e9faa3a0cb072 - pristine_git_object: af35a0b8e024895cf26f5fb6a9bec2cffef12ee4 - docs/operations/sendchatcompletionrequestglobals.md: - id: 4ca845a0810c - last_write_checksum: sha1:da4e80f313c65f3534117604e4cb79de3516ec20 - pristine_git_object: 3256c024465d68f376df1e9498da94ce756bf320 - docs/operations/sendchatcompletionrequestrequest.md: - id: "220604035185" - last_write_checksum: sha1:a8cf41b291730959bba08061e98eafe3953cea1f - pristine_git_object: bcb4bc42fd02fc674979172477e52b509b0c4daf - docs/operations/sendchatcompletionrequestresponse.md: - id: 354b29241c52 - last_write_checksum: sha1:baf6f1195eeabcb4742fec427127f2c33ffd9b3c - pristine_git_object: c4ba8c79c6ba3021472583b922c3ef01c4115bf4 - docs/operations/source.md: - id: 8d5b4a7ef752 - last_write_checksum: sha1:7ecc37abdbb6b9ac5e6bc3bac1254d4b5b4a6f2a - pristine_git_object: 244d7c7eae58985137b5615d4b4a0a9c552f1a00 - docs/operations/subcategory.md: - id: "169243175101" - last_write_checksum: sha1:ddf3195ab7768df3095efa4cc86ea7b5ca3504f3 - pristine_git_object: 912cc5d754a041cfdddbad5c704505a3f7da1cec - docs/operations/tasktype.md: - id: f741399fcc2a - last_write_checksum: sha1:e3b9c5b4a2b103ee4c7f60e7c8eb25b8a351c970 - pristine_git_object: f978421391efaf8d7b0b449cbcba9b82a93d182a - docs/operations/timerange.md: - id: a5ee8c05a917 - last_write_checksum: sha1:00b61805899422b836494a24088ec33674316714 - pristine_git_object: 1e0e56f92f9705e14c9ab6ebc68e3d7eb603d128 - docs/operations/typeimageurl.md: - id: 433d2dc21947 - last_write_checksum: sha1:24b83d5212d95f5e5ee95d1b9e47059613126ea1 - pristine_git_object: addee7e98752ed799d155ae114551ba3c0f9ad9f - docs/operations/typetext.md: - id: 58e69601e3dc - last_write_checksum: sha1:5abedb25856f0e45ef9b80e42cf6fe4aaeca0741 - pristine_git_object: fb9c2cfc86821cc2713c143ada5094af0e775f08 - docs/operations/updatebyokkeyglobals.md: - id: 59d64e39f999 - last_write_checksum: sha1:3ad9ac30eb6ad60221451b2fbe10c4fb99780516 - pristine_git_object: c832d953d1968bf3eab6e934cda62cdc4484943d - docs/operations/updatebyokkeyrequest.md: - id: 91d2def5a18e - last_write_checksum: sha1:3884824fc49b8f5eab9919adaa3a446ad6fa1aab - pristine_git_object: 17d7eb959595a02720a6abc31b33a67265139a32 - docs/operations/updateguardrailglobals.md: - id: eb4357a0714c - last_write_checksum: sha1:3ebdcb875989055d04737285abb527a8ea30720b - pristine_git_object: d72ffed2d70092f83e5af65f6abc80e05590121e - docs/operations/updateguardrailrequest.md: - id: 655370b0fd4c - last_write_checksum: sha1:daa57018bd9010c6fdf08fa4bbb9fc5c5b193dc3 - pristine_git_object: 58ac81b1a12447b17d1da21f1b2275b32e2c2ca7 - docs/operations/updatekeysdata.md: - id: 989d7ddeeb46 - last_write_checksum: sha1:81679927eccfbb9957d4cc3454668f9cc60458dc - pristine_git_object: f1ef38208b77ffa7eabeb448a4d6b7894315dcb0 - docs/operations/updatekeysglobals.md: - id: fe06e9820a16 - last_write_checksum: sha1:bc44e1936abe8d3ce77e223aacb0326143a4a812 - pristine_git_object: 4588f44c69c7090c1ab11e9d2dd250118ba7703b - docs/operations/updatekeyslimitreset.md: - id: f5958b3ca67b - last_write_checksum: sha1:181e6d509793e869bb7433021c5ebe8133c4d511 - pristine_git_object: 7a91c14c09527cf868aff6fa189db2b2fd6d83c9 - docs/operations/updatekeysrequest.md: - id: 37aa3abce627 - last_write_checksum: sha1:71e83687cd5bb68a435099abde4f46a0ab146ce7 - pristine_git_object: 1e35e33405525e49a37be85790ccb85b92676050 - docs/operations/updatekeysrequestbody.md: - id: fa955b3d03f9 - last_write_checksum: sha1:f0c0f65294750db25925a036f987d7e4bc48f1a1 - pristine_git_object: a6130fd788229ee52843ebbb537b1a9ef6601278 - docs/operations/updatekeysresponse.md: - id: 594f08a35b03 - last_write_checksum: sha1:4590d0a24f313d60e4e7e18688eac54e755151a1 - pristine_git_object: 8b5ef1fca6768575bb49ed510fd83b27c77db805 - docs/operations/updateobservabilitydestinationglobals.md: - id: 95291996394f - last_write_checksum: sha1:48edaafebdaa82f0fa05780afdce3c5480fb5be3 - pristine_git_object: 4bd59f0388e042854c46523a6ad813564d3b0c6d - docs/operations/updateobservabilitydestinationrequest.md: - id: 2446c57b28ba - last_write_checksum: sha1:fb2caf3523357d21bc35946e1f48d0dd98edeb7f - pristine_git_object: 6ba312fd9fb477a10e57eef62c519130c17f5136 - docs/operations/updateworkspaceglobals.md: - id: 1f2cac8a13a4 - last_write_checksum: sha1:aeffb26e2ce0ddfe37f1ccee67035ebe9041c673 - pristine_git_object: 5835a41ee1c7a0e557a7282271e8d31230b54e82 - docs/operations/updateworkspacerequest.md: - id: 719c33978f4d - last_write_checksum: sha1:3ea95e60674f4d0380f532123c75579855ac00fe - pristine_git_object: d5bd345f6faefd5e2448b7e6c6c15ae58df7d0d2 - docs/operations/uploadfileglobals.md: - id: e6a061691838 - last_write_checksum: sha1:941faa7b58e39cdc3a0e54ccfaa9d2e4dea7674c - pristine_git_object: 49b2442475be39e51f009fed49e7735d305e06b1 - docs/operations/uploadfilerequest.md: - id: afe31e35e3ec - last_write_checksum: sha1:1f4254b0494cb4bf33bdd7a07b374cbf057c1e0f - pristine_git_object: b80c439e24b92151a6cf871b4043a7d2e2bf5532 - docs/operations/uploadfilerequestbody.md: - id: e6a8c28ec386 - last_write_checksum: sha1:004454df6c98ca21a802bf9da7eea64abc7cb70b - pristine_git_object: ac4e22af61da02419948c154cc56a7dc70fdac0f - docs/operations/upsertworkspacebudgetglobals.md: - id: 5c15b78ea24b - last_write_checksum: sha1:359dde44e5034a4e0b2c82d1d2fc06e57cfb408c - pristine_git_object: e8edd34168f94c47ceae197919544d80d5270738 - docs/operations/upsertworkspacebudgetrequest.md: - id: 27cd86e52e73 - last_write_checksum: sha1:519a919466a3e0d539b5dd5a102a21b759346573 - pristine_git_object: eac53ae1b18f2e0906457156142fe01ab834a25c - docs/operations/usagelimittype.md: - id: f83f3fcb36f8 - last_write_checksum: sha1:9c272d9908a57fdbd2b376e13c8fd226e7d4ce65 - pristine_git_object: 0d9e7c83f5ae8bab7f5f5cfa6e48805c00f56f40 - docs/operations/value1.md: - id: da0cfd1e3204 - last_write_checksum: sha1:15f7ac312cfb90706ad16389a07271eeb1935027 - pristine_git_object: c3266d083e14f24d48fa234f49c49ec9ae268fa3 - docs/operations/value2.md: - id: 3f4c8217513f - last_write_checksum: sha1:683e88a1e77074bf96c4ba1e83ff18661388b775 - pristine_git_object: d72862bbc8003f609b439ac5a7c0904ecd1649a3 - docs/operations/valuetype.md: - id: 20b3a19cf0bf - last_write_checksum: sha1:3ee651ec1a0b12ed21c222f856ed351e99ce36b5 - pristine_git_object: 9b4d37e44d3b989fe6b9bc47c9e35a9e09cdc5cb - docs/operations/window.md: - id: cae9b0c9da39 - last_write_checksum: sha1:236895b24731096eb1e95b8d4f88fb4ee485ee4b - pristine_git_object: 7b3ba482648c212d9ebb3dd3285fdd86958ef051 - docs/operations/zdr.md: - id: 7b519776696a - last_write_checksum: sha1:9c7ea16d0ca7b4105190e93e583f145fb9c8b8f4 - pristine_git_object: c97bcf8826ee67a7b62c427daf0b541030785c46 - docs/sdks/analytics/README.md: - id: 4c84abb05030 - last_write_checksum: sha1:2af2b879b1945ad9293b519ffa87579393608031 - pristine_git_object: 44f78122819ded7e472e28ebcf37dd8812707097 - docs/sdks/apikeys/README.md: - id: e2bd25998427 - last_write_checksum: sha1:626c856e422b77914d461ed5fa86c94053dafdaa - pristine_git_object: d3fbe9dfcd49510ee05f82b2ad115359d46eed37 - docs/sdks/benchmarks/README.md: - id: 61c16262af9b - last_write_checksum: sha1:e3030fe550fa8bb1d3379692f9633b5f8e98be99 - pristine_git_object: 7a4db0f13ee00f246b5f13887a023fc70a3b74df - docs/sdks/betaanalytics/README.md: - id: e037af84b386 - last_write_checksum: sha1:78a1ed27ae55ac9b6e6926e2587adeda0de65aa3 - pristine_git_object: 7f19e372b77803949f2afb8dd86b4794556e9c7e - docs/sdks/byok/README.md: - id: 511ba2ae7a1b - last_write_checksum: sha1:451e316d1a15cea3c43033a9eb0b3989be9fd43d - pristine_git_object: acb77887ae8d7612f039ae319b5654d2e03c9e26 - docs/sdks/chat/README.md: - id: 393193527c2c - last_write_checksum: sha1:0b40d973610ed193d6faafc7f4f0bfad06c78225 - pristine_git_object: 08b736f0782487ac73f87d4f008079ebc00eab48 - docs/sdks/classifications/README.md: - id: ba3b1f5de071 - last_write_checksum: sha1:9bfc60644eccb737e3a3c64fe7c4bcb80bd63e61 - pristine_git_object: 85a0d0b4329b9e3954b27187389dbf5e8e77ea06 - docs/sdks/credits/README.md: - id: 81608135c0ff - last_write_checksum: sha1:abca02bc25760be47f80100a7cce6bb711202aef - pristine_git_object: 1837ff59343eb87482e8750c1fb5d2b5f89aae6a - docs/sdks/datasets/README.md: - id: deb5d90f4faf - last_write_checksum: sha1:c09c0c118def84591a90132f77b67f40ae9e3d1e - pristine_git_object: afcf796dfd4d793bbfe7bcd3bdd81e5fe908de94 - docs/sdks/embeddings/README.md: - id: 15b5b04486c1 - last_write_checksum: sha1:c2ed15521af31873f56e7813292aa30c5adf94e4 - pristine_git_object: b649f5b605ffcf156e773840dd28b9eb7c9ac147 - docs/sdks/endpoints/README.md: - id: 80d3fa9f5f5b - last_write_checksum: sha1:8eead5232f81561abe5a4d37c74c9a69a5de0387 - pristine_git_object: 2ce96e9a6eedf3a64256cd848615e9c4fd76c0af - docs/sdks/files/README.md: - id: e576d7a117f0 - last_write_checksum: sha1:ec0f9444f9d8a657caf6bbae2cc08805d4e6f17a - pristine_git_object: 687d0fd1d678b125fb0d4dcaa6cd20512707849e - docs/sdks/generations/README.md: - id: a7d12ae95fb1 - last_write_checksum: sha1:70dbb18cfaff95cf5e398fed34ef969a683964d5 - pristine_git_object: 7fd647d02bfd29a3c7a5da0487761e89f308f224 - docs/sdks/guardrails/README.md: - id: f72b38a5a2a7 - last_write_checksum: sha1:359f450bfeb9b1a3436b85a446a7529b76118c25 - pristine_git_object: 4b79890caa9a8296cdbabf550c66b4952f59d0c2 - docs/sdks/images/README.md: - id: cc752c3524d0 - last_write_checksum: sha1:51f80f2eb736d11fcdc1368df1a4b54c2476c695 - pristine_git_object: 7737857e7d4c450d333814536cef0f6554975d18 - docs/sdks/models/README.md: - id: b35bdf4bc7ed - last_write_checksum: sha1:0c8c328bdaad985f129d8f4427f83415db883e38 - pristine_git_object: acaf3e22219706da100b2f1ea35f6ac5f4ee74ba - docs/sdks/oauth/README.md: - id: 80ad2c1a7b62 - last_write_checksum: sha1:3590ea2a886254f74575d5a803b8be3aa5f7de90 - pristine_git_object: a99fae69d502c4249a72145eea286d404ef81c3e - docs/sdks/observability/README.md: - id: bab967736831 - last_write_checksum: sha1:88065c2ad18b9ab74228a89bac655b05dbc11991 - pristine_git_object: e96d64dedb5332296e09bf5e34e83047f610ba17 - docs/sdks/organization/README.md: - id: 69e4232b8432 - last_write_checksum: sha1:3aca4d3971ef8e049ec6c66d4dd160cf110529b1 - pristine_git_object: 867781001d3d7c6e755bcd3024268d831d154732 - docs/sdks/presets/README.md: - id: ead9668ae1dd - last_write_checksum: sha1:dd895ffd401b378c4d6de8cfff3bcf55af781364 - pristine_git_object: acd8279d19eacab7957c440ed14834e8573539fc - docs/sdks/providers/README.md: - id: b02aa45c0093 - last_write_checksum: sha1:576c938477d66de01f39db88b50caea41a6812d3 - pristine_git_object: b414ebc8a9ea57045833409e5deaa8aa21d283d1 - docs/sdks/rerank/README.md: - id: e2b361cec1dd - last_write_checksum: sha1:f66a436b50733a6a5867d4be0412b1909f99fc33 - pristine_git_object: a558abc06eb1e3251ae6a7993245f8e6e0ef3b2a - docs/sdks/responses/README.md: - id: e717bad14f63 - last_write_checksum: sha1:2fa7c76ae6c364248526d04871db0c16291bf60e - pristine_git_object: c9601f17bbd48441521f947aa7e312d2689f6b0b - docs/sdks/stt/README.md: - id: 0806154492f9 - last_write_checksum: sha1:a8b75526dac340b813f687081fab11165dec3d11 - pristine_git_object: 99c5b7996c65d09da7a83c9de11b3e4a98442e71 - docs/sdks/tts/README.md: - id: 0c425074d09f - last_write_checksum: sha1:dc5da92e8d50ff1e5b91bb4571bf900aaf7fc5f5 - pristine_git_object: 1543931c82477df894cca5b2a2e32838bc66bf5d - docs/sdks/videogeneration/README.md: - id: b6dbf7b0729c - last_write_checksum: sha1:186dc73b0d741c97bb92c441ae7c99809e43449f - pristine_git_object: 393bdc66fbf85057da5811936439c48ad03a2322 - docs/sdks/workspaces/README.md: - id: 1f5b051a6380 - last_write_checksum: sha1:c5ed18ad453c4cdc032fa5f2a81d7b93b36bdbab - pristine_git_object: 6a5d5e09c3fb9006efddd9ca32a72e0353a390f5 + docs/components/aabenchmarkentry.mdx: + id: 35ebea5f13ae + last_write_checksum: sha1:a870589d8fa8dda11eaa5007cbc5fdf8214e2ac1 + pristine_git_object: 172d96463883f8a74704b07443ee3e84c83ec4e9 + docs/components/action.mdx: + id: c1a4c8fcde0c + last_write_checksum: sha1:d4eae2bd7609ad645a0c4781ee18709d24e719d3 + pristine_git_object: 50cdd412a25f1d6f1e2bb236c6dd6e59ab66474a + docs/components/actionenum.mdx: + id: 80a6e5c8e11b + last_write_checksum: sha1:fd6ff66bb4a43dd71b399b9c5be55f79624b33bf + pristine_git_object: 9bed0a58221b443b943524232117bdc43e6c4014 + docs/components/actionfindinpage.mdx: + id: befcd5c03c7d + last_write_checksum: sha1:ff6b2e91ba48cbbdecd7ce7d75b9f109948de19c + pristine_git_object: 59aaf44e25f682681726605ff49dd1d6dc140adc + docs/components/actionopenpage.mdx: + id: 50bd86f8f935 + last_write_checksum: sha1:0a6a482d2c7899fc7d680fd94ec1211fec2c7a7c + pristine_git_object: 6bf4cb4127eeb0989ba22d937afd181e02534aca + docs/components/actiontypesearch.mdx: + id: 44bbdd6ceb5c + last_write_checksum: sha1:042ff5a1bcc7a4a3c79819591d6dd4870881cc9d + pristine_git_object: dc49d753ad25e6dcf9265946f3a87a8bffd46d4a + docs/components/activityitem.mdx: + id: 20be851aee8a + last_write_checksum: sha1:03ce9c177882d8b0edbea014961061af81b50360 + pristine_git_object: 0910645c06285f1ef165198c24f6fb9c3b1a8d7c + docs/components/activityresponse.mdx: + id: 5886155bc810 + last_write_checksum: sha1:64acd6c3d2db5593d8359474c4e2e31e4db62453 + pristine_git_object: 6edb98e874664ab4349034ca3d0c5874f761fe9a + docs/components/advisornestedtool.mdx: + id: 71464b7dde39 + last_write_checksum: sha1:85f6613d57b23cb14b06e5bd9ee717dd7a0076cb + pristine_git_object: ef547673c81dad35eef331883e7b06c16f28a76a + docs/components/advisorreasoning.mdx: + id: c4f80ddfbd1b + last_write_checksum: sha1:9e16412ad2176b95e0c995efeb0850318ec58d37 + pristine_git_object: b33ef5366b30a11dda8f28fcc8a44bdfd5511d46 + docs/components/advisorreasoningeffort.mdx: + id: 16cca6bcc9c0 + last_write_checksum: sha1:ad0c073e2f0fd5cb0cece557282959d13c1eea6a + pristine_git_object: aa427b33bd2210325fc468dcce935c9ad2da4096 + docs/components/advisorservertoolconfig.mdx: + id: 21d52f2c8a42 + last_write_checksum: sha1:c998886f93312eec86a7747ad12d095c20fbf64f + pristine_git_object: 123fe8790d1b021480efb9e7da3176cdd2736f00 + docs/components/advisorservertoolopenrouter.mdx: + id: ed2fd64f9766 + last_write_checksum: sha1:d0c85e7d14ded4e6686f9463bf6a1460ce9267df + pristine_git_object: 928a0b80faca7f5e8faa898ebe1634c9a09c15f9 + docs/components/advisorservertoolopenroutertype.mdx: + id: 037d49b1a02c + last_write_checksum: sha1:1ef65dad1b6f74dad67829f8b67d65da6144922b + pristine_git_object: 95bf97c81f4b519b1abf0b8ef96d5344140ac182 + docs/components/allowedtools.mdx: + id: bc9b06183311 + last_write_checksum: sha1:9b19ddb249037404d76b5c8f7cd8b40e20cf598d + pristine_git_object: 14377fe6a97ef654eb28836afc9d8923350e9d88 + docs/components/allowedtoolsunion.mdx: + id: 6fbdaf871602 + last_write_checksum: sha1:821681b0933436cb8ef4cac8070296a3469b1b02 + pristine_git_object: 239bb4825ee58ed57edd87e8f2ec886268433483 + docs/components/always.mdx: + id: 349d3a763e1d + last_write_checksum: sha1:1e1169e637c785565ecf0646c29f812b9c6b3551 + pristine_git_object: 539af0bb96a6b31c2c04f449aa9951c6066f2d15 + docs/components/annotationaddedevent.mdx: + id: 772ab3c03c65 + last_write_checksum: sha1:25c44358075e5dd94e1b8229e684203216b07ed0 + pristine_git_object: d05a06237e63ed95a9fb35b9e1d9e54dd97a319f + docs/components/annotationaddedeventtype.mdx: + id: 14f2eb561997 + last_write_checksum: sha1:c2d3663907d09f4bd8248d715384f3c45e18e241 + pristine_git_object: ad9a606318c037d4fce78642297cd490ddd64878 + docs/components/anthropicadvisormessageusageiteration.mdx: + id: ca0effff715e + last_write_checksum: sha1:66558840a0330602b3e022e9686b3f2f8529b959 + pristine_git_object: 0d71d36579c70fd1a3d33b51e466a411a6077fd0 + docs/components/anthropicadvisormessageusageiterationtype.mdx: + id: 3543a7aa7c29 + last_write_checksum: sha1:d8888c96d3e548802b7d71d262fcb2221375a669 + pristine_git_object: c13a23d75f73da4651f7b5927f1d1cf4293601fe + docs/components/anthropicallowedcallers.mdx: + id: ab91fc216815 + last_write_checksum: sha1:6f70b8ecad86a2769552cff8bb791483a89ce7cb + pristine_git_object: 8cb662d874c67e557153b3e3437412caefbf1af7 + docs/components/anthropicbase64imagesource.mdx: + id: c8a5127d3b74 + last_write_checksum: sha1:0fe260c697183f4b5331ceb087e6010ccedc1b87 + pristine_git_object: 31e75cf2b519c27e38bdf5fbe03484a64db1982e + docs/components/anthropicbase64imagesourcetype.mdx: + id: 9f2cacfdde04 + last_write_checksum: sha1:80dc1820c0fec6cadf4ffa0dd4166552444dc11f + pristine_git_object: 9aa0663b2ef2feabb8d7894cc497b40d9f617ce0 + docs/components/anthropicbase64pdfsource.mdx: + id: e8c4cb6182c6 + last_write_checksum: sha1:65e7081f4f85e8720b6b5201c47333afa8e10b6f + pristine_git_object: 40f0426303483ec62902dd9a54eea37768d2a5b8 + docs/components/anthropicbase64pdfsourcemediatype.mdx: + id: e1949fdb10d4 + last_write_checksum: sha1:1dd37473566479acacd8b50b1c0166e0217774af + pristine_git_object: d20725c1f9638fa00c6d0073029ac68dd9782e77 + docs/components/anthropicbase64pdfsourcetype.mdx: + id: 1c0b189eb6e4 + last_write_checksum: sha1:cef0696d19df555ac5934ae55f4230571699f8a0 + pristine_git_object: 44deb61a813fde8473d34e0a14ccaef643467e0d + docs/components/anthropiccachecontroldirective.mdx: + id: 5671704f9917 + last_write_checksum: sha1:03d0b8bed7d5dd448141a09c4515594bcc7ef3f2 + pristine_git_object: 5f755985a972da22e96483e3807cb2029ba18989 + docs/components/anthropiccachecontroldirectivetype.mdx: + id: f5d844d35b58 + last_write_checksum: sha1:9e513498c44431258e61e8fb25537d8f6c5d4f7d + pristine_git_object: 5b35ca5eb2aa6611d5c6889986aa94a4071867a5 + docs/components/anthropiccachecontrolttl.mdx: + id: f047a00a8826 + last_write_checksum: sha1:7731c7cecebc8d0ea5d779a811809d4d570ed7c1 + pristine_git_object: bd3e799f85c07638dff4daf50d361bc718c47b0f + docs/components/anthropiccitationcharlocationparam.mdx: + id: c40e539e0fb1 + last_write_checksum: sha1:bf7cb3fdf2b38b00e4b026e7c0304d9e308cbb75 + pristine_git_object: 5a68da5540c99b154267f8de0c1b43532df2cd0f + docs/components/anthropiccitationcharlocationparamtype.mdx: + id: fb368c51e96e + last_write_checksum: sha1:0e987851554c13b9066772aabc5b7866a4edcaea + pristine_git_object: b4a606b53f264451f413f43d357d847d0999e6cb + docs/components/anthropiccitationcontentblocklocationparam.mdx: + id: f4549718f116 + last_write_checksum: sha1:3169c74fc108e980f8b2f47dbc2ba13b95c74065 + pristine_git_object: b0353d9cc0241b43cdec01be6111e3b7ca8ff2f4 + docs/components/anthropiccitationcontentblocklocationparamtype.mdx: + id: 70b1c02579ed + last_write_checksum: sha1:8de858319539ca2a1a66e59d74d60cd380ccad10 + pristine_git_object: 7c3d03d2357b9bdee42d24ff0d85725ab107635f + docs/components/anthropiccitationpagelocationparam.mdx: + id: 78b8f9392f6f + last_write_checksum: sha1:7e14d2b9ced1ccdbc493a0c2d61630018ebdd85c + pristine_git_object: 137db690f89cdefd486e9e0759b38417bca4623c + docs/components/anthropiccitationpagelocationparamtype.mdx: + id: 600fbeec8753 + last_write_checksum: sha1:dcc72105e3f4c5f50ff39092ad82dc511d65e73b + pristine_git_object: ebe0335b3a26503e24ffa142fb1c3907c5e23600 + docs/components/anthropiccitationsearchresultlocation.mdx: + id: 40f569d8ec6e + last_write_checksum: sha1:503cabd5f211da0e9681f802b63e6a242069e3eb + pristine_git_object: 4766fcaadfbff64d65a1b3fbffd3ae95cf8fe435 + docs/components/anthropiccitationsearchresultlocationtype.mdx: + id: 100166b3a8b6 + last_write_checksum: sha1:deed2eb89dc2d1c20b084e4e4c0a2c74b4f84b7c + pristine_git_object: 096cc0d6ce515592417e620b1340aa3b4ea02638 + docs/components/anthropiccitationwebsearchresultlocation.mdx: + id: 95ef98e8c423 + last_write_checksum: sha1:033b55c4b6e7cf6161a5d059d89ba0cd506d0d0d + pristine_git_object: b03268fdff9d48c3e99696ec02c0636c5d23871b + docs/components/anthropiccitationwebsearchresultlocationtype.mdx: + id: 1d41c18eef52 + last_write_checksum: sha1:a18a6f783fc84d86afb56b21cf08ca9d74297b0a + pristine_git_object: 9cb6d29da30e11fd653a9bb5a06c6f7592ea56c8 + docs/components/anthropiccompactionusageiteration.mdx: + id: 9bcca00fbe93 + last_write_checksum: sha1:7d79a2bda26c860d3da4882bf4c8b4e044d2ed56 + pristine_git_object: 2f0a28b5a960f7943b7ed5b3cff99e66af1238e7 + docs/components/anthropiccompactionusageiterationtype.mdx: + id: 9a374fa59115 + last_write_checksum: sha1:9227f0a88d72dba58bf45a6b6458ed460f790680 + pristine_git_object: 2b04c2483fceacf8300bb872ea0eed600970d160 + docs/components/anthropicdocumentblockparam.mdx: + id: ece98dcf04f6 + last_write_checksum: sha1:5a05c624a5a134bedac12d687f51621448627daf + pristine_git_object: 5a24251490513dca5c64fa3f8b29c80eafdcd331 + docs/components/anthropicdocumentblockparamcitations.mdx: + id: 474518ae0167 + last_write_checksum: sha1:798372e77425fd7127a318c75247ce44e6f1dbfd + pristine_git_object: c8b4d39a9ea29a180e8f0294bea2c59199ad9301 + docs/components/anthropicdocumentblockparamcontent1.mdx: + id: c9673121dead + last_write_checksum: sha1:a1afe1bee9f2d69e69c102d2c2aa2e2e951086dc + pristine_git_object: 151f550d3652849c20b3569c60b1864b73ba9e6f + docs/components/anthropicdocumentblockparamcontent2.mdx: + id: 7101c47f90bd + last_write_checksum: sha1:747034b2efad9fcf44a65c29a51582778c3240bc + pristine_git_object: c2330d41c96d003f46cfb2ef4c05cdc53739be91 + docs/components/anthropicdocumentblockparamsourceunion.mdx: + id: 0fe41665501a + last_write_checksum: sha1:b986c4111210ece695b40750d8006f103caf5735 + pristine_git_object: 644c8db7053f3a75bf33bb2430c53183bfca2e22 + docs/components/anthropicfiledocumentsource.mdx: + id: 3cf4c2213084 + last_write_checksum: sha1:1f490c185f0c5599669591755da9bd6500406812 + pristine_git_object: 9b1f7560f374cc909c2ad8fefd2256ee30d21f0e + docs/components/anthropicfiledocumentsourcetype.mdx: + id: 911db198eb3b + last_write_checksum: sha1:491e11043880ae4e97048c0a7eb3b878214c7d83 + pristine_git_object: c86bc52963eca6a9de705f418c56d17a4bf8ebc6 + docs/components/anthropicimageblockparam.mdx: + id: a85ff43edd3a + last_write_checksum: sha1:b2324840f7be26004674f2a59f5d66122b75437a + pristine_git_object: 2d95dd47a3b3f4551cd4a148f4936057a40587f5 + docs/components/anthropicimageblockparamsource.mdx: + id: 82f05c79d5cb + last_write_checksum: sha1:0939a26da32a1d150a58d6988b9ef8bbd49bacf4 + pristine_git_object: 7a6eede7854ed53befd8988077bef7e0b715c150 + docs/components/anthropicimageblockparamtype.mdx: + id: b696c47f8715 + last_write_checksum: sha1:3c6aff8307fbb3e3af1dddecfcd0a5c00c036eea + pristine_git_object: eeff0ef379acc11269fc0ffa844f0fcee5d0d11c + docs/components/anthropicimagemimetype.mdx: + id: b518aeb3d276 + last_write_checksum: sha1:8829e45ddfca9a783b12141c24e2dfb19383923c + pristine_git_object: c89e385a2dce4dfe40f5f83e2a2d7b697ef661e4 + docs/components/anthropicinputtokensclearatleast.mdx: + id: a5500be92534 + last_write_checksum: sha1:0c07d15b46c9182df56675c09406420066870c0d + pristine_git_object: 0c85fad247264e767809bf9ddddabbfaba3229b3 + docs/components/anthropicinputtokensclearatleasttype.mdx: + id: 6e95ee572274 + last_write_checksum: sha1:6a0bebe7d7d7242a14b6d65b4267b019cc5499db + pristine_git_object: 315dcc84d5c04957b2f0d68b667a0a0b902a36cd + docs/components/anthropicinputtokenstrigger.mdx: + id: 344c9265efa4 + last_write_checksum: sha1:431d4d0eb52f9e6d0c27f7ae0bce2d53f1848932 + pristine_git_object: 72fe90a578ac686e3ebb0b361b22035eb13f652f + docs/components/anthropicinputtokenstriggertype.mdx: + id: d4de58548475 + last_write_checksum: sha1:c371f8d3fdadcc84fe2a6451e3dce096a71448b3 + pristine_git_object: 2b0b01f8e3cad9bbe847881844feee8f0ac1347b + docs/components/anthropiciterationcachecreation.mdx: + id: 3d219e812746 + last_write_checksum: sha1:604cefcc9984ff6aee5c889c0e7054830753a0fd + pristine_git_object: 29b33e64aaf405c0010f7447d9997ab65f9d7951 + docs/components/anthropicmessageusageiteration.mdx: + id: ad0c79d5feb1 + last_write_checksum: sha1:88a599efb8922898bc6a8fa0ca730e1ec0f39eec + pristine_git_object: 01ec99b0eb087e090b93fd49ef82301bcb2c05b8 + docs/components/anthropicmessageusageiterationtype.mdx: + id: a81f0a0a59b7 + last_write_checksum: sha1:ab20ab633f28620f517212774313dae763dc2ce4 + pristine_git_object: e8cb0341e0acd625e35f151db84f0aab7a51e3d6 + docs/components/anthropicplaintextsource.mdx: + id: fab547d404e1 + last_write_checksum: sha1:31f76997c99405badc149bbb4ed51ebb6ac4a4b0 + pristine_git_object: 3a07d04fc3591e4d6be991d74ea2fc5c8238e9ef + docs/components/anthropicplaintextsourcemediatype.mdx: + id: 7035f2cd2d84 + last_write_checksum: sha1:2bd9d29200f68be7fcfee2fefe41e16b3308ad9e + pristine_git_object: 2c017cc57bdab1be88b343c456221724a9f9cf7d + docs/components/anthropicplaintextsourcetype.mdx: + id: 6e7d778bbb64 + last_write_checksum: sha1:7bc64373f6ef127247b59329f49d3718db308f94 + pristine_git_object: a538343b4f3fca39a44d3f208e702c482978c4f8 + docs/components/anthropicsearchresultblockparam.mdx: + id: 5c62b24b2c58 + last_write_checksum: sha1:a8acf36f4eb32d7d01a906f889f9c76e36786f24 + pristine_git_object: 517785e7ab5c58a8e41292572d2d581a0a0e3df7 + docs/components/anthropicsearchresultblockparamcitations.mdx: + id: e6a0db284ce9 + last_write_checksum: sha1:20a8315824e11129d12d4d5c441e9fde3691a1f5 + pristine_git_object: 107bda3275f8d6ac6cb1cee9e2bef961807fd7fb + docs/components/anthropicsearchresultblockparamtype.mdx: + id: 06be14681704 + last_write_checksum: sha1:8371b32dcf174d3381f46d198aef3445bb22c8b5 + pristine_git_object: 302faea5f574d9bfe746ee1241d03ddf9d39bce1 + docs/components/anthropicspeed.mdx: + id: 1227dfabccec + last_write_checksum: sha1:0ba0013465693c68ce5820446a42525416df92cc + pristine_git_object: 6f1e9ce880a0c3173ce7af4d14c8508b686b8ebc + docs/components/anthropictextblockparam.mdx: + id: bded5d409e91 + last_write_checksum: sha1:5c8b4dafc14fafa615c888b9cd207bac55ebb585 + pristine_git_object: 6d00495d81a02e202e2ae1346439d734a75df8f0 + docs/components/anthropictextblockparamtype.mdx: + id: 7f03a13234b7 + last_write_checksum: sha1:12c7718c5c0da4561914ed95dd6853873568bd05 + pristine_git_object: b6b0d6f9022f2046c713d768125927e22ecc9431 + docs/components/anthropicthinkingdisplay.mdx: + id: e068ddf6374f + last_write_checksum: sha1:47d00b51a96ed72da8986432bdf46d7e1e9225b3 + pristine_git_object: e30b6f747c5fd1194beef3483a254f81afc2abfc + docs/components/anthropicthinkingturns.mdx: + id: 795200cbbc8c + last_write_checksum: sha1:9b3125daafb83c3a8843cd07224670f352b8ac40 + pristine_git_object: 9c9202152d4688ed2e7c5c311c6c85d8362f08d5 + docs/components/anthropicthinkingturnstype.mdx: + id: 58b7f8554e4d + last_write_checksum: sha1:6193e98647de03e888bdfedec1c18a2c36de8a07 + pristine_git_object: c1034a4153765eb307c650c27e85b0832263b934 + docs/components/anthropictooluseskeep.mdx: + id: a80174ecc369 + last_write_checksum: sha1:b05b93553bbb32cef5150f79e1c2f0ca55298e5f + pristine_git_object: 56a3b082a60c9f8517cc21e606d4720bc300cd99 + docs/components/anthropictooluseskeeptype.mdx: + id: adb454cd03b9 + last_write_checksum: sha1:41c4c636f0d482e14c5895f125df31cdcaae98b7 + pristine_git_object: 55631753337c9ddf8b23af3989cc21a5e47e9649 + docs/components/anthropictoolusestrigger.mdx: + id: 4b0e4988821f + last_write_checksum: sha1:2c414a4792ada35dfaf13fa9228daa4564228308 + pristine_git_object: ddf146336404c8a41615a0867ccf78b68b59e750 + docs/components/anthropictoolusestriggertype.mdx: + id: e4f717265714 + last_write_checksum: sha1:9434fb13f4730a9a0983d8a063c034d4c0ed4654 + pristine_git_object: 0f4676272480c2cb37707b6294189def4fba3770 + docs/components/anthropicunknownusageiteration.mdx: + id: ad8bddddee13 + last_write_checksum: sha1:48f2ec21cdb27842b41f4a7a9ed5116efdb2a216 + pristine_git_object: 9a298f5071bcd359257e4cdef2bcac07d7b9e32b + docs/components/anthropicurlimagesource.mdx: + id: b1a4b26bd6a2 + last_write_checksum: sha1:48cd15680bc4a4167322bdd533d3bb1b5825126f + pristine_git_object: ac91360511b9d4352dc891b3732048a610d0f02f + docs/components/anthropicurlimagesourcetype.mdx: + id: 05696c6ed74e + last_write_checksum: sha1:5d351eceaad58632bf7fbf61a9499c956a45cb1d + pristine_git_object: 86b72b871c03a39e314f1ea6bc74d622e619225c + docs/components/anthropicurlpdfsource.mdx: + id: ed22f90fa1d7 + last_write_checksum: sha1:bcbc3db138d2acb0eaa6400c5d39d8adbde5d5de + pristine_git_object: 50d60b95a3c2bb393a6453523a8c1d8115a4f40f + docs/components/anthropicurlpdfsourcetype.mdx: + id: 1f4c02e2bf5b + last_write_checksum: sha1:857d5e6b5220b5821255038846c0dfc9b6907e98 + pristine_git_object: 717ed3b5cbda8cbd83e3c497c804f0efa9e29448 + docs/components/anthropicusageiteration.mdx: + id: 3310bf2eed94 + last_write_checksum: sha1:f3faaf7624149614de715e245ea4c667e433ecb9 + pristine_git_object: 0ae331c1d87201007d6f2da04cb03d911004e0e6 + docs/components/anthropicwebsearchresultblockparam.mdx: + id: 0eec50f08630 + last_write_checksum: sha1:51ff39d85073da0fa458f6f4b6e837c4298aa0d3 + pristine_git_object: ddcfad3966ea8e7e0553f9eec96c1fafe5f624ae + docs/components/anthropicwebsearchresultblockparamtype.mdx: + id: c0b4c6f50ed5 + last_write_checksum: sha1:0f6fb484091a5915b19a4b6f4223619219e67bb2 + pristine_git_object: ed07bc52c2409eeb97f0ea548ca0dc0e15e1c2a6 + docs/components/anthropicwebsearchtooluserlocation.mdx: + id: bca2587d7144 + last_write_checksum: sha1:0e366c190891756a9f4c21e01ab348f686d8c94b + pristine_git_object: 0096c9dc4b5624da3231c80f579af1ddb974e049 + docs/components/anthropicwebsearchtooluserlocationtype.mdx: + id: 804f3ec181f9 + last_write_checksum: sha1:f3017ffb67a0781d23ab853352e72fc1c73452bf + pristine_git_object: c0387e05711d85511538984dbf5eef3cdcd820fc + docs/components/apierrortype.mdx: + id: 2f73a03b8af9 + last_write_checksum: sha1:ef4dab4b1d653fe3c2719576c9cd037b8c998ea1 + pristine_git_object: 53c45463b67a1365c2700f73ddb7330b048e79f0 + docs/components/apitype.mdx: + id: 1a902c4c05f3 + last_write_checksum: sha1:a9f2bc6e9eee1a1834a8209e5683037894aa59db + pristine_git_object: 185a0faa93cb1332684421f556cb15ec06d81543 + docs/components/applypatchcallitem.mdx: + id: 00fd75573009 + last_write_checksum: sha1:8650be12909ab98cefc237e3499b73d9a79cf3d3 + pristine_git_object: 69bc2b8640a58837b896694e456a966a6b6cb9da + docs/components/applypatchcallitemtype.mdx: + id: 60f2448e3f7c + last_write_checksum: sha1:42c3944dc0214f1a6e2298efe4650a3944c014ae + pristine_git_object: 23ee1f224fc5f612565f585325711b247fe73d5b + docs/components/applypatchcalloperation.mdx: + id: d8a2db634407 + last_write_checksum: sha1:bef8f39a18f3a724facd92da02746e56d6abcfb7 + pristine_git_object: 2159c8161efd3fc52885005a1bcde3723ef70db2 + docs/components/applypatchcalloperationdiffdeltaevent.mdx: + id: 1127d6e114d6 + last_write_checksum: sha1:170f7c5e374d7460492a836163d9140cb6300722 + pristine_git_object: d8c4af6acb413455799566592a3a2e919bb1399a + docs/components/applypatchcalloperationdiffdeltaeventtype.mdx: + id: 8427f957f111 + last_write_checksum: sha1:ef85bd0dc72fc6b2d1cbc9534a4f458f73347c0a + pristine_git_object: 9647bceb873bdbb759225b22446463e4d7e0cfb5 + docs/components/applypatchcalloperationdiffdoneevent.mdx: + id: b8a781256a05 + last_write_checksum: sha1:9f4e2b24a03785550e7e4678395555791ebdd2f2 + pristine_git_object: c722bd49551f3dd6daffa501e80e6ded919c4bd3 + docs/components/applypatchcalloperationdiffdoneeventtype.mdx: + id: 64b044b951e2 + last_write_checksum: sha1:b71b4192a50c857a4f897b40b01d385468f81e96 + pristine_git_object: 9bddff0f87b9abaf62ffce6ce34848d088bfe02f + docs/components/applypatchcalloutputitem.mdx: + id: 319e0ff92320 + last_write_checksum: sha1:098176e4b514affe2c0576953ea7dac4a7f69f91 + pristine_git_object: 6ef61a86a7cb6fcf6c38430326686241d47a1daf + docs/components/applypatchcalloutputitemstatus.mdx: + id: 21243e5bc7c4 + last_write_checksum: sha1:a50d28b9cbb8b483c456c51c378c9c1ad0e61a40 + pristine_git_object: 435847d24468b3b6a91333d5c16f8bb6113dd863 + docs/components/applypatchcalloutputitemtype.mdx: + id: d7e5ae4c0f1a + last_write_checksum: sha1:998f9cf4f96177d258fb5898fc407617d516286f + pristine_git_object: b0adb3c30faad74e9d5a87533fb0ca2d84f31894 + docs/components/applypatchcallstatus.mdx: + id: 3447fcc69da4 + last_write_checksum: sha1:c3baddd0dab5e6e8aeb8ed151cdf946047214fda + pristine_git_object: 13f21ea1e699e8ebdbad0ef02d8ac79312605394 + docs/components/applypatchcreatefileoperation.mdx: + id: 21db5a91351e + last_write_checksum: sha1:d983e8d15c9b776441a14a3587c2d44892af5e92 + pristine_git_object: 37aa1921b19ef1b2cc64d2525bfea15d3f08755f + docs/components/applypatchcreatefileoperationtype.mdx: + id: 6d42700db0f7 + last_write_checksum: sha1:8859456f8b81bfc0004b2bb560b6ef6e305fb95f + pristine_git_object: 7a95b9f6f55b2ae9ffeb4024ddf756b77d2a0a55 + docs/components/applypatchdeletefileoperation.mdx: + id: 5e7f1e7cecfc + last_write_checksum: sha1:ab8019a74b87d52e5c3fe1dbae27ed7bf99a1c21 + pristine_git_object: 49463ffa8f2068878116a768021afd24b62aa845 + docs/components/applypatchdeletefileoperationtype.mdx: + id: 6937c4db9bbe + last_write_checksum: sha1:40a3a2c790d3cdcff0d6795cffae632e7d74ed61 + pristine_git_object: 8866b2a2d65abd4b301ae7dd8e35952b850f9c88 + docs/components/applypatchengineenum.mdx: + id: a307df2529f1 + last_write_checksum: sha1:d3b5e286881d66a6c6ab9b796ff611d7180c3eee + pristine_git_object: ec6e50782a8bc7ca4a4c745ee75481aa3cc14aff + docs/components/applypatchservertool.mdx: + id: 7c6b48cc9e29 + last_write_checksum: sha1:7c4af0800a07de672bc8fcf718c1a859a5e25d4c + pristine_git_object: b8c80524bb8be02190b268f08254abb1e3ca878c + docs/components/applypatchservertoolconfig.mdx: + id: 88b564f86759 + last_write_checksum: sha1:e94902185668f6ef969a32d3bd05cb81d5b1737b + pristine_git_object: 1ec1793d367ed99e395745d650ff9adf1038c413 + docs/components/applypatchservertoolopenrouter.mdx: + id: d0dd549b2947 + last_write_checksum: sha1:7ca81fb0e93b24ee6ac76a28122b3f4703beee99 + pristine_git_object: 98531bfb794572a28440da99c407e030d82f0a4d + docs/components/applypatchservertoolopenroutertype.mdx: + id: d0cf7bbd0a04 + last_write_checksum: sha1:1216b3c33d85c37bf2f27009dfb4a02607070ceb + pristine_git_object: cfe1c7868eb70fd55558d683118d2c9b95da9879 + docs/components/applypatchservertooltype.mdx: + id: ee204374e74d + last_write_checksum: sha1:6514db808d355806ddd65ada0f3987dbc5dcc67e + pristine_git_object: e97bf57ae9c3f2f04511355100ad7e82ec379600 + docs/components/applypatchupdatefileoperation.mdx: + id: 0a3def9fcda0 + last_write_checksum: sha1:d5834ddb9b2774c0800609dd8ba719a9d1eb52a4 + pristine_git_object: 458f786721701cd75966fb545d4b1a3023395c84 + docs/components/applypatchupdatefileoperationtype.mdx: + id: 409472b929a5 + last_write_checksum: sha1:0b3f4a732cdc59daf00ec264cc75f640747f9b31 + pristine_git_object: d76a0f84ab88089a8e523fb54729fe8858d8eecf + docs/components/apprankingsitem.mdx: + id: 4e4110a60add + last_write_checksum: sha1:831b12332a6c649f9bc4d1beedeec784f623e386 + pristine_git_object: 08cc35c0a08268f89507a8e05432b7c3a075d3b2 + docs/components/apprankingsresponse.mdx: + id: a88c9a36c7ae + last_write_checksum: sha1:d6e4d441acee693ade65d6c24bc94884d6305ac8 + pristine_git_object: 06ea87da92af18eb4cef9c2ea501ff57045e121f + docs/components/architecture.mdx: + id: 2092a26b770f + last_write_checksum: sha1:8f179b922fce777d3229ca524750ddaabe02fc91 + pristine_git_object: 277a0da557d67e40f91a9a2bb0fd318f5bf9f9bf + docs/components/audiourl.mdx: + id: c457db82a4ac + last_write_checksum: sha1:eda63702a1bab370efe326a661950ea0b864169e + pristine_git_object: ef98b1de499df79940ccacaf5da0be2d635b104e + docs/components/autorouterplugin.mdx: + id: 4d62f9b36bc2 + last_write_checksum: sha1:b0058abe56fb36523cac5296b6124fa84cb006a2 + pristine_git_object: 6fe8acaab8a38a767f710aebbc3390ca9022417e + docs/components/autorouterpluginid.mdx: + id: ea9862a88ce8 + last_write_checksum: sha1:51d6cd6296501209ebc8b721adb3feadeb798f9a + pristine_git_object: b3395732b1e9de51a13d9c4952c1876f6c9827b2 + docs/components/badgatewayresponseerrordata.mdx: + id: c7d6d22234b0 + last_write_checksum: sha1:4aef24007fd61cc6e64dc2f67030f1ce28a6a258 + pristine_git_object: df2de9f107779203990c42a3335c0e61e98af3bf + docs/components/badrequestresponseerrordata.mdx: + id: "143714074251" + last_write_checksum: sha1:6d1d4489e3f58e8ca88dc3c0262f52a9e303e4df + pristine_git_object: 3afce5ccf17f7bf1112513a9e186a2b44fae6d3b + docs/components/baseinputscontent1.mdx: + id: 67873741fab6 + last_write_checksum: sha1:35d42d9c20a3f2c2f48f7e51624680052802fbd6 + pristine_git_object: e0824c06099830cf6502d71a98926a84be27fe5f + docs/components/baseinputscontent2.mdx: + id: 347dbce23259 + last_write_checksum: sha1:cc4a642a5cdb86679b3747c980844c457be677c4 + pristine_git_object: 079aa0b32257632d646e85afb48c3e2d38620393 + docs/components/baseinputsmessage.mdx: + id: a2c89b56ff2c + last_write_checksum: sha1:158dd9adc64d4c3cd675f226f22509972c478cf1 + pristine_git_object: 0c00444a9d685404fd06f8fbad92da6115140b0e + docs/components/baseinputsphasecommentary.mdx: + id: 13cb24429a56 + last_write_checksum: sha1:e6dfaab64ca8eb1c07d3835d694a30185b0e8f1f + pristine_git_object: 78b77b356cc46a76a7ceb20d1930045ac1e426d5 + docs/components/baseinputsphasefinalanswer.mdx: + id: c5ac71fc5265 + last_write_checksum: sha1:f878c1bd6481f40814fd59d0703eb3a644ce4fb5 + pristine_git_object: 0ff0427fc96c7640817e5130d195796f20b05685 + docs/components/baseinputsphaseunion.mdx: + id: 0a2128c06411 + last_write_checksum: sha1:5dae76acbeec0a8a1613f48f98ee8e7ef7fdf1fc + pristine_git_object: 5a0578435dcfff203e6f8be5e869bda7dc018db2 + docs/components/baseinputsroleassistant.mdx: + id: 0db596de2098 + last_write_checksum: sha1:3bbbc88af5eb3853264c6b472348eb6385d67cf3 + pristine_git_object: ebf4315e93f5bedf773d2368d13f71f3d7fb6fa8 + docs/components/baseinputsroledeveloper.mdx: + id: 7506f1e50a30 + last_write_checksum: sha1:33d8df1602a3761403f59b8b771f571f8d250389 + pristine_git_object: edbe6df5f2858dbaabab53b48d3e4a399bba2d3b + docs/components/baseinputsrolesystem.mdx: + id: fa080b344039 + last_write_checksum: sha1:3d54d8ada0a2908350305debb35e1ceeb680d11b + pristine_git_object: 5d94f023c315f4e1340ed6334e2dcd61a7181557 + docs/components/baseinputsroleunion.mdx: + id: 82e0b25e5de1 + last_write_checksum: sha1:be482f41c4ea6a6a5918b51de590575361651c8b + pristine_git_object: 31607b26739ba19138c9559dfa9c598da83ea936 + docs/components/baseinputsroleuser.mdx: + id: f18ba0e11110 + last_write_checksum: sha1:15f239e21e81dc30ad9f9f9fbc83eb966b2cd93f + pristine_git_object: 2ca95da4096dd3ae5e08f5416cb770abce5ecea7 + docs/components/baseinputstype.mdx: + id: 5a9e2145fd5d + last_write_checksum: sha1:becc319e0aa24b015e19a144455433a180980b26 + pristine_git_object: 6bb25bd0a4211020cb14661b95fae6ca5366677c + docs/components/baseinputsunion.mdx: + id: 4a9f9aa3a775 + last_write_checksum: sha1:176bf9b20015a91650a825f9c10b7384637e678f + pristine_git_object: e006bcc0c1b5c3cef08302490ace5418a3489eb2 + docs/components/baseinputsunion1.mdx: + id: cff794940c38 + last_write_checksum: sha1:8e14c3c03333ce594563b02552753215b4f93e84 + pristine_git_object: 633bd16e1abe0e3894c12f551761ad1a9da37d5e + docs/components/basereasoningconfig.mdx: + id: 3c6f03de40b1 + last_write_checksum: sha1:3273f4dc1e6af65f58aa87e4b97bdab579f65f8a + pristine_git_object: 628251998a3571d2b89225ac5a707f372c5ec143 + docs/components/bashservertool.mdx: + id: 664dbaf53aa3 + last_write_checksum: sha1:0b276c752d22836d67b31aab477b4ebba24c17c1 + pristine_git_object: 09464da84a2c1e57d9c6d7abda98254de075a858 + docs/components/bashservertoolconfig.mdx: + id: 7c7f1dd1cc47 + last_write_checksum: sha1:8d566ee18106ce2ff562d5adb0a0f87a59aba68e + pristine_git_object: 967974c047982a57c544e0533f251b200edeec2d + docs/components/bashservertoolengine.mdx: + id: d0779ee68ded + last_write_checksum: sha1:68e15335058a5c91b1e3fc74efa5e5d3767ad0fa + pristine_git_object: af3c05c5f760a6ea6178f90c6551809c106a9701 + docs/components/bashservertoolenvironment.mdx: + id: 028fd5ff37b7 + last_write_checksum: sha1:2e6e9420400f6c9a149dea51f05e18c0d43b755d + pristine_git_object: d1c6a2d8288c5e17642ae15eeda6b77eb17c0ac6 + docs/components/bashservertooltype.mdx: + id: 73f42e4bc945 + last_write_checksum: sha1:599705c7ef520285d8da9e5510109846aa7fd332 + pristine_git_object: 539a7c32200bef803260226e81f3225e9529688e + docs/components/billable.mdx: + id: b983fa757056 + last_write_checksum: sha1:80d142a13e98a8f13da2850753282adf2ff59521 + pristine_git_object: a907902b407eac76aae4cbd5ce4814b36168123d + docs/components/booleancapability.mdx: + id: 514674d4ad70 + last_write_checksum: sha1:1421e43c3d78989f55da2cccb79fee62d20f87cb + pristine_git_object: 74ba072818bc46d5e390155892608628188e8123 + docs/components/booleancapabilitytype.mdx: + id: 9fde49928d3a + last_write_checksum: sha1:6746044145b81e2480e6f2757db714a467f0d1f8 + pristine_git_object: 9c583fdf315b6ac8ad38f254d932aaadde8c7ded + docs/components/bulkaddworkspacemembersrequest.mdx: + id: 92f44877345a + last_write_checksum: sha1:98e0c96a7ea1e43172ef8d71527de4c5368daa42 + pristine_git_object: 6773678759b3546fe71f0fd3f933083f6ba75c88 + docs/components/bulkaddworkspacemembersresponse.mdx: + id: 025552ef9ad5 + last_write_checksum: sha1:17789b08b7bb66de389eff2df8d69384789ebb0c + pristine_git_object: 4550429c5fd489a705b13f2a331800327a3e6269 + docs/components/bulkassignkeysrequest.mdx: + id: 7a23fc6e5c6c + last_write_checksum: sha1:1a2b112b1f9c2d62de91f2226813222835980c83 + pristine_git_object: ce5a37d8d8008fb6ad1522d0aec06ac8acc0ae82 + docs/components/bulkassignkeysresponse.mdx: + id: 8a8fa3606343 + last_write_checksum: sha1:acc37bf1d880ab371366782e9b20788fd6b6e4e7 + pristine_git_object: a9f54e53b50035701b003e1111e1e3686a1dd4c7 + docs/components/bulkassignmembersrequest.mdx: + id: c328ee1814d5 + last_write_checksum: sha1:6a8e7b833e1b77dffb41bd7fb96284483f548979 + pristine_git_object: 272a74b2a7dc99dacca3ce1102b722ac54579de3 + docs/components/bulkassignmembersresponse.mdx: + id: 13246b6a2fa8 + last_write_checksum: sha1:644593e93e57abc72e18094f1d6e3be0e21fc72c + pristine_git_object: fb4f9e2b8a31a2f4f2f11c9f61672453e410d71d + docs/components/bulkremoveworkspacemembersrequest.mdx: + id: 870d98a00042 + last_write_checksum: sha1:0402d4d47418f0c1d7a28ac6ebbbce84cbd89c8a + pristine_git_object: e05a95672ae69de6b901fa9c6d6b756e2443a0b5 + docs/components/bulkremoveworkspacemembersresponse.mdx: + id: 5cc37edfd35e + last_write_checksum: sha1:74d5d820105c95b3a9dcb9e44086f91a7b606c8a + pristine_git_object: a4537109a54950ee2f9946510f39649d879de69d + docs/components/bulkunassignkeysrequest.mdx: + id: 8752e2f524aa + last_write_checksum: sha1:a021c436ce117425f75144ae12cb4da4708c1d97 + pristine_git_object: 53506dd9c53a765c54d11b9ad01cb158bf94bada + docs/components/bulkunassignkeysresponse.mdx: + id: df60f21e1dbf + last_write_checksum: sha1:9f4a5f2bcec4fad73f25cf3a25822764771903ed + pristine_git_object: efa2bc14bef5e61c03928a32e708d77e62cf5970 + docs/components/bulkunassignmembersrequest.mdx: + id: 8d4ff00ba329 + last_write_checksum: sha1:e4da9162320c05575f90b0ac102e24ca5e0b07cb + pristine_git_object: a39b1c2183de3401f50635840a96a0725bff8160 + docs/components/bulkunassignmembersresponse.mdx: + id: 178540139aa7 + last_write_checksum: sha1:ad5069bbadec3af5848a625fdc2e924d8d484624 + pristine_git_object: 1907c82620a110d10f957470da820d0a8f5dde72 + docs/components/by.mdx: + id: ba68e75edfab + last_write_checksum: sha1:403af1a9a0e45871f7ce46d9c0c35e5bfc469bd2 + pristine_git_object: 8dd2b456e53244a5eaf7e3e957b00840f6fd9601 + docs/components/byokkey.mdx: + id: f67303c7207c + last_write_checksum: sha1:034c0336049d87ffc6bb4ac2825c02513a7f25a6 + pristine_git_object: 151dd8398dc818ff4d26d6859d25efd202d03917 + docs/components/byokproviderslug.mdx: + id: 6ea70819f6d8 + last_write_checksum: sha1:5116cfa7ed1f8270dfc9d277d3cc0ee02b147c44 + pristine_git_object: 439563d0fe5440c4f0127337f39ddc403f63ae06 + docs/components/caching.mdx: + id: edc8a0f8f37f + last_write_checksum: sha1:b4e6619f389c1440555ec567fbdcddbc9976e63e + pristine_git_object: d9c719912c5e82aa2bf9b02c54fb03c8d448ef83 + docs/components/capabilitydescriptor.mdx: + id: 34ac0e581d79 + last_write_checksum: sha1:62ee9ccab6cec4572383cef654997ab4106d4676 + pristine_git_object: ace8f22b972273bdee620a9981abcb0cc46d994e + docs/components/chatassistantimages.mdx: + id: ffb19be9dace + last_write_checksum: sha1:cbcf9e1fb04e660786ad38a273b852cf84504f9f + pristine_git_object: fbd1a4de84eb0bc24ba322e18afd95c5dfab82f9 + docs/components/chatassistantimagesimageurl.mdx: + id: 2c8e2ee8441d + last_write_checksum: sha1:38785ea38bca7de912765ac627fdad31863167de + pristine_git_object: 8a36279a112a3f8efc1ee770cb250e510674e7e5 + docs/components/chatassistantmessage.mdx: + id: 8ba2a16f77d2 + last_write_checksum: sha1:adc7e210e87fe8dad751970b4c459e07818b02b0 + pristine_git_object: e2b637c750983fd50b89f4a305a982a4e77c7d6e + docs/components/chatassistantmessagecontent.mdx: + id: ab4dd265daa1 + last_write_checksum: sha1:911775e0061c32e7b6501c25a783c743090129d3 + pristine_git_object: c335554a976734059173a256e2e07c59f638ee23 + docs/components/chatassistantmessagerole.mdx: + id: 6b3ba6abcc49 + last_write_checksum: sha1:5129b49f15061be42bf604476a8e1fdc972faf0d + pristine_git_object: d0cbbf9a78a8db255187cd255ffe516ffaa38d84 + docs/components/chataudiooutput.mdx: + id: 06141b4b285c + last_write_checksum: sha1:1ac2afdfde5da6c2487e10b7c52de3efe7e53d26 + pristine_git_object: 54812b591531add33369295f87cac329c59d0fc9 + docs/components/chatchoice.mdx: + id: 8775e5a97030 + last_write_checksum: sha1:51acee80190b1ab730e1a2db84dda2d21f79d08f + pristine_git_object: 6143931304608275bf36b0fcbb3a77a3538279e6 + docs/components/chatcontentaudio.mdx: + id: b40b6e1d4ef6 + last_write_checksum: sha1:b373e5f4445fac42fec4ce3a7219731e9a767d7d + pristine_git_object: 4fded9376abfe49b35c1e438cb1e59a1a56fac94 + docs/components/chatcontentaudioinputaudio.mdx: + id: f873c3bfc488 + last_write_checksum: sha1:ef1ccc56ed8e65c3b4353585d1b4b24ead6ec0c8 + pristine_git_object: 06fd6a6c7f598656dc1d14a8743474c0645a3187 + docs/components/chatcontentaudiotype.mdx: + id: da3cd956274e + last_write_checksum: sha1:09d3f72fe287cc303ca6682389915a8fcfc27cdf + pristine_git_object: fdb10076d12248abeacfae19a1bd647d4a838eaa + docs/components/chatcontentcachecontrol.mdx: + id: 215e2356f770 + last_write_checksum: sha1:cf9c5e64dcedcccbab8d79499bea7bf76e86b1b9 + pristine_git_object: 250fd47f76c936c2e979b55caa6d4fb17b4a26ef + docs/components/chatcontentcachecontroltype.mdx: + id: 93c1e9a9146e + last_write_checksum: sha1:febb0b8575ef8fc009f71312d8fed2b596cf6d28 + pristine_git_object: 71ebbaf86ee2982b6d2e2d1061f6fc26a144b7c0 + docs/components/chatcontentfile.mdx: + id: d8848251040e + last_write_checksum: sha1:79363873860e9454bb96fc3e09ebba1944b26fa4 + pristine_git_object: ae0bb19c659e2efc3d430b7432f07ec291925f29 + docs/components/chatcontentfiletype.mdx: + id: 4f4228795d0d + last_write_checksum: sha1:f38c6ca62a813bf688a607ee41576bf19be5d74d + pristine_git_object: b9b0634218111d6f5e84e1ac5b70aa0392849235 + docs/components/chatcontentimage.mdx: + id: 4d78d1bf6e98 + last_write_checksum: sha1:0d88e934d173cceb2bbf370cc47cd3cdce5387d9 + pristine_git_object: 1dc21599163a0c96dd9eae288b2fdf4de4bf94a6 + docs/components/chatcontentimagedetail.mdx: + id: 03ad7cc96976 + last_write_checksum: sha1:1e6aacf1e34cb67a3787b946cf5fa8b3ca9b8553 + pristine_git_object: 7935e4a90eaeaca6c1ab7a1a31140d7862ecbfa7 + docs/components/chatcontentimageimageurl.mdx: + id: 52caf7838985 + last_write_checksum: sha1:1f95a709ddbdfedf760a974d4ae504adc66ebe54 + pristine_git_object: 814136649641907a449fba88824026e42544c44e + docs/components/chatcontentimagetype.mdx: + id: b1ca1ebc5e79 + last_write_checksum: sha1:3880c25e09d68e4f7dad8b8f195a6569fa899d78 + pristine_git_object: 628241008aab1daaa3c4b796a8c30b2f8b6691d5 + docs/components/chatcontentitems.mdx: + id: 76baba99bea5 + last_write_checksum: sha1:3dfd9b23c37193367c9ca2c9f4e2b777a5389bd6 + pristine_git_object: 92c9c5c2ce23807bac9756e55803057921c34f24 + docs/components/chatcontenttext.mdx: + id: a2436d6c5c1c + last_write_checksum: sha1:dfda97beb6d5cdb859b9207798e34ed7ed4691f8 + pristine_git_object: a59dafe92bfb650c89244eaa89f00690fd8282d3 + docs/components/chatcontenttexttype.mdx: + id: eb29ddb48a88 + last_write_checksum: sha1:154a7cb1f0dcdc0ff60b5fcfe1ce5e86e08bb72f + pristine_git_object: 3f8ebf166ab10692349622534f846e1434dd94c1 + docs/components/chatcontentvideo.mdx: + id: 97f75c8e37e4 + last_write_checksum: sha1:544b7d4d458147d04485999a7fab0e54b03e1a37 + pristine_git_object: b8a1d5ee3df3e7ad02845285854411d7da83a0ea + docs/components/chatcontentvideoinput.mdx: + id: 9c532e9e6277 + last_write_checksum: sha1:84a6017411931c941afeaff1f21b73719deb0d2b + pristine_git_object: 7b80ce52b58467bc0d5d2c9f254b0ddeaaf1c03e + docs/components/chatcontentvideotype.mdx: + id: 55a566b293e8 + last_write_checksum: sha1:0989b559350a1399ce249828d11b48749f376d18 + pristine_git_object: a784c584cc684ed1f07155ea6ca2b027dac51aef + docs/components/chatdebugoptions.mdx: + id: 6e90350c5b3a + last_write_checksum: sha1:d82e7036fd0f0ca6e210bfbebd73544a6e9f3b46 + pristine_git_object: eee9489fd2c3f15a7cc6525688a5b0cd12839e10 + docs/components/chatdevelopermessage.mdx: + id: 36556ee902ee + last_write_checksum: sha1:3ad4e33a7aa81ff3174df9bc4416a706dfa2221b + pristine_git_object: 05d422366ab8123f4488df014cc733df83366adf + docs/components/chatdevelopermessagecontent.mdx: + id: 0f36d5e7c6ff + last_write_checksum: sha1:fe6c792d0d0f647b8894543c23df0d59a34f3c54 + pristine_git_object: 9828d6d86c08fe6c5588a8eb879d5ecbb212d245 + docs/components/chatdevelopermessagerole.mdx: + id: ded4269f5027 + last_write_checksum: sha1:cf1ad00e836b3525ea5e03c3f58f074f7e9ccc4c + pristine_git_object: db5c7d49ff22588f7ef3d67bcac0996525bef113 + docs/components/chatfinishreasonenum.mdx: + id: 08f18ef0359b + last_write_checksum: sha1:ac1cc050eab292b168ea6307c3206f8c3041a624 + pristine_git_object: 1449d172e7e2a21ca187603cff331cf6e88622e1 + docs/components/chatformatgrammarconfig.mdx: + id: 6f844bfcaab8 + last_write_checksum: sha1:3b06375cd2300c9a525f0a1a669d17f3f8a4aa1c + pristine_git_object: 8595b86421e9358b343984f05dbb9e909189d041 + docs/components/chatformatgrammarconfigtype.mdx: + id: 8afc3b0c53f8 + last_write_checksum: sha1:f86f220ce930d1a671b8c702bdea25dcefabfa94 + pristine_git_object: 9b479f4efdecfa74ed55207183a0bce5d4d38f5b + docs/components/chatformatjsonschemaconfig.mdx: + id: fddf166f727d + last_write_checksum: sha1:454f73f794c83adb2b86edc7bc9cba8b322405de + pristine_git_object: 565e33485302c05e328215c33e59fd8414b340b8 + docs/components/chatformatjsonschemaconfigtype.mdx: + id: a468c96dd2e8 + last_write_checksum: sha1:2e086a538fd2f8f4ea8d762cdada480db695b1a0 + pristine_git_object: 076ff6d74b18fef40ec7834e006e0753c3f93a51 + docs/components/chatformatpythonconfig.mdx: + id: 715c6afe3312 + last_write_checksum: sha1:3fcad4a74e09c875ef06784451b503eacffcbd1c + pristine_git_object: cd0ab7ba16c7116e04277d05f61a3b530bd19b72 + docs/components/chatformatpythonconfigtype.mdx: + id: 8593572457a9 + last_write_checksum: sha1:2a1386a233596ed1bdfd8b72bf4a860749c5a8df + pristine_git_object: 5949043705855790a5029cd93de4350ec2b56c1d + docs/components/chatformattextconfig.mdx: + id: 10644d676a7e + last_write_checksum: sha1:ecea852c1ae33f0c9bcf98025af11d205d5f7151 + pristine_git_object: a539cad56ebf149e68e7a7a257ea85a7ad11bc63 + docs/components/chatformattextconfigtype.mdx: + id: e770ff8bf5e3 + last_write_checksum: sha1:7ae36e7288f3a06d1afa256473a6e62b9f9c3904 + pristine_git_object: f5cbc93e1277fe0ed97bb520e331a58837e91ab4 + docs/components/chatfunctiontool.mdx: + id: 13433a4eb5b0 + last_write_checksum: sha1:c00f06f8a13d6d99f7d1be5b0509f9bcc8d1c04a + pristine_git_object: 5b8e5f47bb4798e364f3f9d5511c00d5826b79a6 + docs/components/chatfunctiontoolfunction.mdx: + id: b9f813a5b0c9 + last_write_checksum: sha1:1daf25e4f31b7013fcbcd43f86678ce1548c8423 + pristine_git_object: 7619eec425176b875101f822b806ff98a5d991c9 + docs/components/chatfunctiontoolfunctionfunction.mdx: + id: 59c7a37a65c9 + last_write_checksum: sha1:671313b618e2e45e37f94494b8bd88822aa4220a + pristine_git_object: e4a50d554a3b23d06c5f2f6e0ec6ee7202d48ab7 + docs/components/chatfunctiontooltype.mdx: + id: 6b715d511146 + last_write_checksum: sha1:052e19c72306c62984069c9546a4bf8b886984da + pristine_git_object: 97fa5f43749ab221d87fa37b3b86d1492da4cbec + docs/components/chatjsonschemaconfig.mdx: + id: a5484dbdf56d + last_write_checksum: sha1:e6d1980a8fd64f9b6c6c6e5a69f5a9d93d1cb745 + pristine_git_object: 9d355f0ac86084432f766c087f2cf4bd610e62b6 + docs/components/chatmessages.mdx: + id: 8d256772dcb9 + last_write_checksum: sha1:695f1bf1bb3ac6df1147ce1a2c83474257d4b528 + pristine_git_object: 54e55e019264004d79b9df6af46cd1f4915999dc + docs/components/chatnamedtoolchoice.mdx: + id: 952284b280fe + last_write_checksum: sha1:d6aa4a48be132ce6c30bc58423800e4ce029e115 + pristine_git_object: 1c98093bfb533ffad6b97adc78fb099af0c3a792 + docs/components/chatnamedtoolchoicefunction.mdx: + id: 8c2f974fc167 + last_write_checksum: sha1:292f2c6121d400e80fbc86c75fdf33ca8f496976 + pristine_git_object: 1824174f9583a565016e56f0b4e6ace8dfe9d10e + docs/components/chatnamedtoolchoicetype.mdx: + id: d11d15b7bdff + last_write_checksum: sha1:a49921708b0df92415f937015c2f4b7829ab9df7 + pristine_git_object: 0368099314b29e95b99c991ee0ac4321f2c5b299 + docs/components/chatreasoningsummaryverbosityenum.mdx: + id: 5ff03a849a53 + last_write_checksum: sha1:ddf8b1f3f5966f8abdc3eb7bc17953910b8b8d08 + pristine_git_object: 220be03bd674a257c2064c0455104959b3974a35 + docs/components/chatrequest.mdx: + id: 055812be14d8 + last_write_checksum: sha1:77fcd137afe54399a3eba5f08cf6e0ffda8cc242 + pristine_git_object: 1cc4f0f490833b0defa14840b69ea02f90820770 + docs/components/chatrequesteffort.mdx: + id: 703c73252ebd + last_write_checksum: sha1:243510f188071a3f317dc06a07fbcfcedd3cf821 + pristine_git_object: 643c118fe458c24cdaeca90edceadf1c7d1c9cc2 + docs/components/chatrequestplugin.mdx: + id: 157782a43de6 + last_write_checksum: sha1:c918d35c8f0d9796fdaf78cb9d55a6c866d05413 + pristine_git_object: 2ef1d9e43930650344033d25272c4d3d97923169 + docs/components/chatrequestreasoning.mdx: + id: 8f0176992b3e + last_write_checksum: sha1:84576cd6513f125955685c7bdfe315ef886160eb + pristine_git_object: d9a271d74a0c6981c08fcdcdf8a2a74f699bc5bc + docs/components/chatrequestreasoningeffort.mdx: + id: a8ac4d0f36fd + last_write_checksum: sha1:7cf50deaeb4a20ca64352b8713479059834e5f78 + pristine_git_object: 648e271855d957af7003d1dd3607116ab6f71ea3 + docs/components/chatrequestservicetier.mdx: + id: 3037649ffa34 + last_write_checksum: sha1:a132287a3f537373e974e7f8acb9c1f8e243cb04 + pristine_git_object: 66c2cd5c615d778b267d7559902f6de8a0098c48 + docs/components/chatresult.mdx: + id: 1d855f0d207b + last_write_checksum: sha1:1327c59b5dd13f87488f8076e97ca36b2e93c22f + pristine_git_object: 94e3c0ce6c01fd6b28edcf40097e6f70fa0dfe01 + docs/components/chatresultobject.mdx: + id: adc07397bfc0 + last_write_checksum: sha1:0323dc5815ea2b95d85785afc089cacd90cb13f0 + pristine_git_object: c4c06a38d03376d299e600ccb6a38366591e9694 + docs/components/chatsearchmodelsservertool.mdx: + id: ec9b3ca3d315 + last_write_checksum: sha1:e7f3249dd039f6b9fceddb66df5beaa242d60297 + pristine_git_object: 18b2f4e1abf5e15856b145d10f115e21d408a213 + docs/components/chatsearchmodelsservertooltype.mdx: + id: d25af3887fc8 + last_write_checksum: sha1:66bdd26ab553b532c252739060331dc6ca6a3c8a + pristine_git_object: 8a51a6070c8fdbca4894de0d3e67dea1a5037a73 + docs/components/chatservertoolchoice.mdx: + id: 22a01eb665cf + last_write_checksum: sha1:b54861f4d954f83fdd2fe9332ed58a6463f3d2cf + pristine_git_object: 9eac8152d29e30dcb16bd15f31f9a990ba256e9e + docs/components/chatstreamchoice.mdx: + id: ea662a8a9eae + last_write_checksum: sha1:6bf345f32853451fe9652ed2da78b826435e237e + pristine_git_object: d6bd70fb2627a85b2db13a1f23c179f2fe3ad194 + docs/components/chatstreamchunk.mdx: + id: 90a2741f18cd + last_write_checksum: sha1:0a60882651fbfdba6ca61aee439ecf7087499188 + pristine_git_object: 3adbd9896f88520ec5a3c54596a8f8ec20e1110b + docs/components/chatstreamchunkerror.mdx: + id: 15ce1e8c2a5d + last_write_checksum: sha1:adc488f464df961a969a36414ee90988e2866a6b + pristine_git_object: e04b55b0600b503f7d7187570292cf921048d307 + docs/components/chatstreamchunkmetadata.mdx: + id: c32533ecffc9 + last_write_checksum: sha1:b332ce15a5c7e81f34fca147b231fc6b9c212de3 + pristine_git_object: ce80e38c1df1dd7774096271559af9f2c989e5f0 + docs/components/chatstreamchunkobject.mdx: + id: b566ee7bb2f4 + last_write_checksum: sha1:1cb93b5078ce2455393cf172ee43d354b50f983b + pristine_git_object: e07fc2435544618a76a5441f1f9e2e145947a864 + docs/components/chatstreamdelta.mdx: + id: 188dfce87802 + last_write_checksum: sha1:507a45ac53e78c5a09d48fce151063c7fad2de1f + pristine_git_object: ca45ea3ce93365b817f4ca368d61d4b8b77d3080 + docs/components/chatstreamdeltarole.mdx: + id: 6b8c4f06d157 + last_write_checksum: sha1:e8c45d5a04b527f5ab6bf30f1305ca1b7605cd61 + pristine_git_object: 775d363caff96d015ad428416a5e2ec32aebed24 + docs/components/chatstreamingresponse.mdx: + id: e665f10d3cb0 + last_write_checksum: sha1:e1bc6c8e0df28960fe7918a51ba0a559e5821e95 + pristine_git_object: bd7543c94f09476c0ddbb8fd1c155eb426509a75 + docs/components/chatstreamoptions.mdx: + id: a76f428f0434 + last_write_checksum: sha1:a1ee0e5018db17348cb6702bf7080a3e78a72b44 + pristine_git_object: 430faf2a02d4c10fe7ccefdca40ea2c91cc1f160 + docs/components/chatstreamtoolcall.mdx: + id: 5b4e47f83a5f + last_write_checksum: sha1:ecff98d60c6edd21b366227508bea9c81be6a358 + pristine_git_object: beba823a602bfa21f133ec36f25b77c2d3ca7289 + docs/components/chatstreamtoolcallfunction.mdx: + id: 8de9998dab50 + last_write_checksum: sha1:6c0616477ec7c8cb344590080a39e8af0623f18b + pristine_git_object: 12a71db2d909d1854ec90933fbe2f0a1b9d7ffed + docs/components/chatstreamtoolcalltype.mdx: + id: a4c2716de3fb + last_write_checksum: sha1:1e16ebd9114cc6ab2d76351eda5846441fc40ba0 + pristine_git_object: 602231cf40fe0c66347bd13dd158bd75741c0759 + docs/components/chatsystemmessage.mdx: + id: fd74aa853b84 + last_write_checksum: sha1:d557a333aad0038c561b6b419fbec6cd75cf462e + pristine_git_object: 7f6ccc99352eaaf80e6340b99d1188ca7d39cc0a + docs/components/chatsystemmessagecontent.mdx: + id: a26e029e8e60 + last_write_checksum: sha1:475985246731f53936fe0e0b4d6557c54f201ed1 + pristine_git_object: a8bda9f06821cf3a122564b674b6f1273a11138f + docs/components/chatsystemmessagerole.mdx: + id: 87ed2a5e080d + last_write_checksum: sha1:2865a40286913d1de566dd4fdc81eada6a3b4fb2 + pristine_git_object: 968ecf2c8b7548e152ba542566bb4a98fe86ba25 + docs/components/chattokenlogprob.mdx: + id: 5d735052588d + last_write_checksum: sha1:737a020cd12400ea211b3e6f549953f8763a37a3 + pristine_git_object: f6b39af96cd92ca05e9bc4de4d6eaba8f72c9a4d + docs/components/chattokenlogprobs.mdx: + id: a8c0e9c829f6 + last_write_checksum: sha1:bcf9509aa69c6afd29cb9bbc1639ac97de52d916 + pristine_git_object: 068610e7a5bac08962aaede44cc9c56d1da6c483 + docs/components/chattokenlogprobtoplogprob.mdx: + id: d3bb66d49800 + last_write_checksum: sha1:5363ecca055ec746ceb39c04f5a8be203bedb7f0 + pristine_git_object: 89813675b93dce806c0625545a12371352594bac + docs/components/chattoolcall.mdx: + id: af8cc07d5140 + last_write_checksum: sha1:f13edeacd9e460a441d97190529db86b52bebc7c + pristine_git_object: 09bffc9d997d82042e4a97d96418128967c70176 + docs/components/chattoolcallfunction.mdx: + id: 1bcb25f823b2 + last_write_checksum: sha1:6857812b9124716db1bb629f14131751d9c3f523 + pristine_git_object: bf3ffcadc2210e675f139ffd5801ca2734d39595 + docs/components/chattoolcalltype.mdx: + id: c0a1ae1f59f1 + last_write_checksum: sha1:dcc0410b953bd41bd0ade29da25dc91301c0436e + pristine_git_object: db90aff34845aaf8cb5dcad3af5effff344ebe9d + docs/components/chattoolchoice.mdx: + id: 5e3190912c16 + last_write_checksum: sha1:fecbbe6410dc873387278ea7cbcdc64357bee0b5 + pristine_git_object: c80ecdaa11084ab575ee0896985b96d788dca4f2 + docs/components/chattoolchoiceauto.mdx: + id: feef0a445cb4 + last_write_checksum: sha1:f1bf80cc718a4d48be3aa4209e16d8a70b8a3d2c + pristine_git_object: addf7830c0a24e0fbad548fb236642a438569a99 + docs/components/chattoolchoicenone.mdx: + id: 8f6d0364c4f8 + last_write_checksum: sha1:8cd5553585d0e10cd69fd3b9cc21aee53413194c + pristine_git_object: edaefb9c80e0583a4b60d8eccd59448a8b06096e + docs/components/chattoolchoicerequired.mdx: + id: 394a50a16154 + last_write_checksum: sha1:a5d8bbfe544260d91524844815ec8b2254ddf495 + pristine_git_object: dfea698bb9acc2f15d97fc7e718210c3af158e93 + docs/components/chattoolmessage.mdx: + id: aac7d2928086 + last_write_checksum: sha1:6ba16fc7b94b3572d1fa641af35f0258eff61127 + pristine_git_object: bd39bbff26078e1d2f6de1b515bc2f8f93b2b218 + docs/components/chattoolmessagecontent.mdx: + id: 0525fac7a946 + last_write_checksum: sha1:3f7e96c86946f546e35656058dc63b3f509154fe + pristine_git_object: 1282e856de24588709a2397fc1e5671eb6d79fa9 + docs/components/chattoolmessagerole.mdx: + id: 333428c22814 + last_write_checksum: sha1:334d3743fda7feeebc1e35220713c58c816ba7a4 + pristine_git_object: 48386287b072381a9b59de6ae804b0ffbbab221a + docs/components/chatusage.mdx: + id: d7c2bc8b3eb2 + last_write_checksum: sha1:7f8bf402accabcc12f92b52bf6101cac3ef0363e + pristine_git_object: a45747f57783767d91fe66f212525f7578d7345c + docs/components/chatusagecompletiontokensdetails.mdx: + id: 0274e721a9d9 + last_write_checksum: sha1:77e7b8ae3c4456f4284f4fbd0093d00fdefd06c9 + pristine_git_object: 6ac1392b3ff42d4b16a57ecf3cc8ea8d95ff4cf6 + docs/components/chatusageprompttokensdetails.mdx: + id: 6fb50e68afdd + last_write_checksum: sha1:aec3ca006672155fed1ab6058eaa13cb50216947 + pristine_git_object: 0f5dac4b58b1dea0603c6415d2db7424130056a1 + docs/components/chatusermessage.mdx: + id: 3d49e3d3af58 + last_write_checksum: sha1:a8f9e8d29fac70185f8ea785564746b50b287a30 + pristine_git_object: 3b6546aa3a6d0344444c51376a3beb1671870501 + docs/components/chatusermessagecontent.mdx: + id: ce4b41077e72 + last_write_checksum: sha1:f94f38e6f677ff3f2f5be8686c085e32789d31f2 + pristine_git_object: ddf804c43fd2237026991c2ac3dbbb94ad9a8b9a + docs/components/chatusermessagerole.mdx: + id: 6efb281f8696 + last_write_checksum: sha1:ef431c77c58f00fa242c1bae969e057bbb405ae6 + pristine_git_object: 11d6c22059efcf4e3b0d6b15b39a67678adc7a4b + docs/components/chatwebsearchshorthand.mdx: + id: 40f0c0a47ef4 + last_write_checksum: sha1:a469a44e9c0e07ed77fb17302c25b51a5a8b962a + pristine_git_object: 942103ab9977faed1ecf76509e94acd48cef57f7 + docs/components/chatwebsearchshorthandtype.mdx: + id: ce16c0139963 + last_write_checksum: sha1:1637ce5dac9fc9c87df3793d46a4eff33282e0a3 + pristine_git_object: 6056c49814eafac5ca7ce25eb0da8413a358c8be + docs/components/citation.mdx: + id: 9a5f3d4dc85e + last_write_checksum: sha1:e87496dfef2b1f10bc75744fb01cd8c56dc36e1a + pristine_git_object: 9e503681992fded303416915b21d3e23d1296dca + docs/components/cleartoolinputs.mdx: + id: 4e474b90f4b7 + last_write_checksum: sha1:2574803d7adf914b3f90850fbaea1af2cf6eaed5 + pristine_git_object: d5682fcb62d709606d7e073a9447621cc6da7a68 + docs/components/code.mdx: + id: 1cc125f1dfa9 + last_write_checksum: sha1:4a06fc3c63211ff7ac30cd5012663f58d077d3ec + pristine_git_object: dc6776c36813b18fba2613f5cfaf147acb229a90 + docs/components/codeinterpreterservertool.mdx: + id: d828abe3a52a + last_write_checksum: sha1:8eafcbabe4084b286d34a7b2e7db0f99ad547727 + pristine_git_object: 952662124240d5f9493a5d801ad02907145115ff + docs/components/codexlocalshelltool.mdx: + id: dc18445a3e36 + last_write_checksum: sha1:10129d74f399bce935b3c24b7ee29e53a0406376 + pristine_git_object: f5b8e9d3c4d1e135769036caf4d0c0d4b0394cf0 + docs/components/codexlocalshelltooltype.mdx: + id: 44763fa09429 + last_write_checksum: sha1:645f66a48115bc1864b79a161b8bd697c792898d + pristine_git_object: aeeea69fc2548198dbb4ccd5982f605071d59ff8 + docs/components/command.mdx: + id: e2c4f1baea03 + last_write_checksum: sha1:4eb6c6bb504554581d238672915750e1f0cd4441 + pristine_git_object: 8a2adc33e4a201f48cc802d12dd0154dfa674aa9 + docs/components/compactionitem.mdx: + id: 26c52557072b + last_write_checksum: sha1:5d5e9a7ece815c6cc9aea6cb3b484e8d3a7e0321 + pristine_git_object: 7fb1a632309091019e4f2622225c07f926e42b1b + docs/components/compactionitemtype.mdx: + id: 688981b39855 + last_write_checksum: sha1:70bb56c5e1b6352f709a63c98103e99c379fc86c + pristine_git_object: 335f2a6ac2acfb1afb7523e7e12970b8e8b2e0c4 + docs/components/compoundfilter.mdx: + id: 346617a04c59 + last_write_checksum: sha1:dd66c088cb5d39ba87db9afae711eaaf7f809479 + pristine_git_object: 6c3f524e199707154988ce99b87571208f3fe488 + docs/components/compoundfiltertype.mdx: + id: 68e76416ad08 + last_write_checksum: sha1:036009180583ea8f72bb76671566ec4d5d2e4162 + pristine_git_object: ab1137191a1f5d0a971c05fdc4cf9a526f597863 + docs/components/computeruseservertool.mdx: + id: 4276b38e93fb + last_write_checksum: sha1:3185088a2bf62deb4be775f44498de8a47d7cc0d + pristine_git_object: 3021debd985fbc08ffa78a4bbee9fd4e1a7c5d9b + docs/components/computeruseservertooltype.mdx: + id: e4aadaca19bc + last_write_checksum: sha1:d7024f63ad66f7701809f41907d35f4b08e21c2b + pristine_git_object: 37199a7b510c1e9fcb61566fb1ca2dc3d6a5428b + docs/components/conflictresponseerrordata.mdx: + id: 2d7c53cec517 + last_write_checksum: sha1:6e51b6140225812c676e85b0524bff270269c534 + pristine_git_object: a48176a70b127e973cde593c8a4169b9ac6e6d31 + docs/components/connectorid.mdx: + id: e2bb5ba7cffa + last_write_checksum: sha1:38d7e2bf323f4e87c0f8283a0a998698a605380d + pristine_git_object: 783b14bf824bbea150ee4aec34250a08b47a0d10 + docs/components/container.mdx: + id: da487bbb3fca + last_write_checksum: sha1:001edbff08751a63d05df57795c796ae2a39c3ab + pristine_git_object: d82379ca39f22b63a6ae19c3ca67e50ed5fe55e8 + docs/components/containerauto.mdx: + id: 9c816f0f356a + last_write_checksum: sha1:f281d8a1138f0b4f71eb3cb92663d4246d4d0d9d + pristine_git_object: 00e55b66a5ea22e92742f1bc669c12bbdbef3c0e + docs/components/containerautoenvironment.mdx: + id: 650b2f4ccef7 + last_write_checksum: sha1:001869d2818fe3dc3d890364d05f884e8030b808 + pristine_git_object: f902de7beb69ab7afaf4df8d03b3440f77f57b9a + docs/components/containerautoenvironmenttype.mdx: + id: 1e247d70245d + last_write_checksum: sha1:66636ec50e7863bc4c8f9fb4f95b1e895f429b97 + pristine_git_object: 1c99ecd1ca87bb0ff50f541f157ab9c1db071372 + docs/components/containerreferenceenvironment.mdx: + id: 80d581804fd7 + last_write_checksum: sha1:525283f0d016b0385786264f87e2a1257c53b9a9 + pristine_git_object: 28843b0f3f7515a773906b34f3a50db189e5f74f + docs/components/containerreferenceenvironmenttype.mdx: + id: 3baa9f801f17 + last_write_checksum: sha1:e41a1c97b5ed7ef5e404bff0f2a7a65bd262ac17 + pristine_git_object: feb2c4481125b90f3994b57f38f58b1b97743cfe + docs/components/containertype.mdx: + id: eb63c7c4fcd4 + last_write_checksum: sha1:f01f5f7b9f3291c54ba46b4836041fef32407b53 + pristine_git_object: 9a8e9eaadebb36e2836d73c4ed1867c5f1e564e7 + docs/components/contentcompaction.mdx: + id: 1923f9db3cff + last_write_checksum: sha1:59526732df9d4b5a69f3a79d1210493dff8d8898 + pristine_git_object: 39acf3a7dc4de67d2eb07a4e21e33e6cfdd2091f + docs/components/contentfilteraction.mdx: + id: 11728ebb9679 + last_write_checksum: sha1:c2e70a8136e1af5a9a0e2abd930e5cd3bdb880a1 + pristine_git_object: 8419defc10e832b66662ad7a87e56f57c3c691e2 + docs/components/contentfilterbuiltinaction.mdx: + id: 08bebf2def2b + last_write_checksum: sha1:74b4771533db4f1dedb3403d6b5ea9bf0486f55d + pristine_git_object: 99919bdcad18b5ecfcb2f9c4845b577154e78073 + docs/components/contentfilterbuiltinentry.mdx: + id: 0d811c0a46a6 + last_write_checksum: sha1:d5e4e053ab43277896291cc9c9d67c40d6cdcbb8 + pristine_git_object: 5bdb1f6af9ce5a6a39e02f8069aec14bb261fcec + docs/components/contentfilterbuiltinentryinput.mdx: + id: 87ba5e6ba529 + last_write_checksum: sha1:8ac4a21b68b34a1ead858b19d4933ea0f9cd964f + pristine_git_object: 28e250251c5033e3ee7fe7c142e474d4b3ec2993 + docs/components/contentfilterbuiltinslug.mdx: + id: 80b519edd96c + last_write_checksum: sha1:746f45dad594dadabdcdbc87dfa3377fc588b852 + pristine_git_object: 273ad6cb49690c8abc1620a6f4dd65f3ccf87789 + docs/components/contentfilterentry.mdx: + id: e5d65035c6cb + last_write_checksum: sha1:451e759051c72d90ef986c9b40caa30d1eea6d84 + pristine_git_object: c8165e83a8164c1e41179a5a05a38c381de9600a + docs/components/contentpartaddedevent.mdx: + id: 785ea6a90328 + last_write_checksum: sha1:4c9ed7cb9761710e111042e03a4faff3cba51767 + pristine_git_object: a62904e2cb6e00fe75ce881d36a01843032d80d9 + docs/components/contentpartaddedeventpart.mdx: + id: 41d3289761f0 + last_write_checksum: sha1:5697e7fd84d91d4116d80821042022084220ea3b + pristine_git_object: 3590cb4f71b91c92f2c195126d4dd785753cb9a5 + docs/components/contentpartaddedeventtype.mdx: + id: 6f660edc43bd + last_write_checksum: sha1:51183ace2c919980d990ab19af73b77d676c5946 + pristine_git_object: 91a231d419af8011c0400a913e9ac438a63ef51b + docs/components/contentpartaudio.mdx: + id: 2895373f695a + last_write_checksum: sha1:68053664b6f8e87af636e973fe52c6351db79f4c + pristine_git_object: 1a97cd731c0d2f5571840081da56747ade120017 + docs/components/contentpartaudiotype.mdx: + id: e97475ce2cb1 + last_write_checksum: sha1:50cfd4efaa763005ed354da2c2b45154af2d832b + pristine_git_object: d6ad2b7d07dfa72ba184986fe43a3e2bb440bb33 + docs/components/contentpartdoneevent.mdx: + id: d8d53f578378 + last_write_checksum: sha1:2ea459e142ebae05cc623d1c4f3b12dcf57d9142 + pristine_git_object: 39c9384930ee92c41986fb94249ccf4eb895d8c5 + docs/components/contentpartdoneeventpart.mdx: + id: 3bb86f388b48 + last_write_checksum: sha1:c3381701cb70c497a2c70916d2068e6fb8a5055d + pristine_git_object: 7e45ad214d819ffbb2df9f2c76da0a915ba4abe5 + docs/components/contentpartdoneeventtype.mdx: + id: 565fa38e1d86 + last_write_checksum: sha1:f79fb2c499ef24095a02a81862b315b5a09f36ff + pristine_git_object: 7a93ea3f012605963fd7a066963c70218a9f44ab + docs/components/contentpartimage.mdx: + id: b5d4950ed410 + last_write_checksum: sha1:c1af7cce75c46f3f768a491df080441d8b171810 + pristine_git_object: d4adef71081482d111bd1387bbadef7bcac54b1d + docs/components/contentpartimageimageurl.mdx: + id: b6741faa446a + last_write_checksum: sha1:7fd507a1c40a96f374fa338a79e636afacb804f5 + pristine_git_object: 248d1b880edf9fc622ade36e33237201ccd2615e + docs/components/contentpartimagetype.mdx: + id: aea0e155b985 + last_write_checksum: sha1:2012ce8173052b4140c76ecbaa095181270d6397 + pristine_git_object: d2984506de54111db28b3387916762e98623b4ea + docs/components/contentpartinputaudio.mdx: + id: 584ebd7b9ad0 + last_write_checksum: sha1:e6b852ed5cdd29dec833addfba5be10fe074c0e7 + pristine_git_object: 08619de7fa9d517d98344316c3162ae847613fe6 + docs/components/contentpartinputaudiotype.mdx: + id: dad953db74a4 + last_write_checksum: sha1:e8eafb76c24944c6ea96567daca309f7368bbcf1 + pristine_git_object: 4d3a748201d3da9c6daa85032249e8b5a0acee3e + docs/components/contentpartinputfile.mdx: + id: 43f9b6926266 + last_write_checksum: sha1:b3db7d6aea7fb2a480725a3780f4af9061e71c9f + pristine_git_object: de674503defec34b9f7b430211c7ecc44dea80a6 + docs/components/contentpartinputfiletype.mdx: + id: 7c9a8b71f4c0 + last_write_checksum: sha1:107ce0734e87c17488145b4fd974bb8ab8234cf2 + pristine_git_object: 3b0cca0be113a45c304aac54cf109734ea816a5c + docs/components/contentpartinputvideo.mdx: + id: 4e63a9425c80 + last_write_checksum: sha1:7ab2640320e1b09333a587949427c37315fcf5a7 + pristine_git_object: 0d846f378dc17965b83b2ac47e6af9735dbc9dd9 + docs/components/contentpartinputvideotype.mdx: + id: ac5cebb93ef1 + last_write_checksum: sha1:2079cd2ea05945c25a110ea8ca9163cf60000af1 + pristine_git_object: ff1648bd1a0128eed1bd35475c937a91d010a17b + docs/components/contentpartvideo.mdx: + id: 49e036bdcbd3 + last_write_checksum: sha1:12038569da87be45aa991dc15f050158c4496acf + pristine_git_object: 058640db3db2cc09c44ed822356374538c90775f + docs/components/contentpartvideotype.mdx: + id: ab6408bf1c86 + last_write_checksum: sha1:82173fea2284d4e965278c80fd952aad54ebbe57 + pristine_git_object: 24b7dfa708d009a8263c9ee36b97520509d1ecba + docs/components/contentredactedthinking.mdx: + id: 1807faf0124b + last_write_checksum: sha1:ddfee69368735db2412078f92fec8c0af5a2c58c + pristine_git_object: f9c4eeefa07fcc73839934dd6b3d403fe7539da3 + docs/components/contentservertooluse.mdx: + id: 7b676db3a465 + last_write_checksum: sha1:65f0643d0a7af0e2ef8b4f2dc9a336b5a34b135c + pristine_git_object: 527a1c1ae4e8df68528db2404024b67348ab4b6c + docs/components/contentthinking.mdx: + id: c23024acf25a + last_write_checksum: sha1:f3a989b8eb7a38f2705324263796f49a7e1722b6 + pristine_git_object: 8c9a9246c03beadee004dc71d2519862070cad1a + docs/components/contenttoolreference.mdx: + id: fe1e54c845d9 + last_write_checksum: sha1:8f69b7d199fd1ed2948927b93b6f9facf50e3ee0 + pristine_git_object: f07b01d7d44cc717b67e5648283c659fc02c72fa + docs/components/contenttoolresult.mdx: + id: a9a083b8900f + last_write_checksum: sha1:1a0bb46e6c27779f1f88da7eb87d0ae04acd62af + pristine_git_object: 4abde669843735aeb36b10c6a5992f8d6509cd40 + docs/components/contenttooluse.mdx: + id: ad7fb52d642b + last_write_checksum: sha1:47f463246904b67a444c6072b1d927c1c6c223de + pristine_git_object: e29dae101a0e629b6cfa1473fc22d732e646ef55 + docs/components/contentwebsearchtoolresult.mdx: + id: d2401cf2f6b9 + last_write_checksum: sha1:b24e06b9ba722674a7fc4116eba838657914f166 + pristine_git_object: a2664d14e56d9f5ada405cee06d7f745e1a5a47b + docs/components/contentwebsearchtoolresulterror.mdx: + id: e53d83e87e2b + last_write_checksum: sha1:22dd4ec3f699feb7d8f22abff79623b427292e35 + pristine_git_object: c944724a99b7f7d4a9b5de4dc478f1e15643e20a + docs/components/contextcompressionengine.mdx: + id: 684ea7e73a30 + last_write_checksum: sha1:b093510814e6d7a1911104a6a5911e789b689759 + pristine_git_object: 42f20bd61681b650c17cc062753e557c8dd0525e + docs/components/contextcompressionplugin.mdx: + id: 15099fe81c39 + last_write_checksum: sha1:07aa2965c3700d22e97d492fafd625fc430d51cd + pristine_git_object: a502a991a0ed1413f2358c1490aaa15d4154176a + docs/components/contextcompressionpluginid.mdx: + id: 5134b610fa66 + last_write_checksum: sha1:54b05cc44a4b00376866ae343eb7391610080619 + pristine_git_object: fea81b2ffabc35c1025a1c8fd7d3261c039b3fc8 + docs/components/contextmanagement.mdx: + id: ba18678d8673 + last_write_checksum: sha1:fde34a2fa88b30b60877c341de2039232ae1c0bd + pristine_git_object: 521afd6c88d56d73be85f1ed9768ed5f826854d5 + docs/components/contradiction.mdx: + id: bb27f66efcae + last_write_checksum: sha1:7595d35ecf46d4b6f407d5e31c8e8b4f746066ce + pristine_git_object: df0f53d79f8acca641d7f13a00c706f2c7883752 + docs/components/costdetails.mdx: + id: 15349f1e1877 + last_write_checksum: sha1:90a330bfa37e208bcee6615af2ee7535c4416a26 + pristine_git_object: 753493b8d505e9317dcaca6fc897da7e30e91d0c + docs/components/createbyokkeyrequest.mdx: + id: 2af3019aa2a7 + last_write_checksum: sha1:cd7ec119da30ea0b5ae12e150355d2ebc3069809 + pristine_git_object: 3eaa154fa0f401f51e6f24d01140da9adf9320d8 + docs/components/createbyokkeyresponse.mdx: + id: 73f247dc0e33 + last_write_checksum: sha1:c4dbcd1ccaf3465a42c9370ce785d1be420eda5c + pristine_git_object: 67494d04412539e0cb0b406ef4e4cce61b3a6c87 + docs/components/createguardrailrequest.mdx: + id: c1a768f054c0 + last_write_checksum: sha1:8e8d8f957c48303ea3eb1955c182b26e8c2d5729 + pristine_git_object: f26042f6c6a5c769f5c13030df4f9e48a8077e6b + docs/components/createguardrailresponse.mdx: + id: 1477eebdf505 + last_write_checksum: sha1:5b260347acddb3d10bcb9283673646950b4b3c6b + pristine_git_object: e876cac85124ae1a612a2611c11e7039a7eed07a + docs/components/createobservabilitydestinationrequest.mdx: + id: 8d942a601a6e + last_write_checksum: sha1:8bed1fb299e0fb1961ee90a07274a0803c977958 + pristine_git_object: a3435fe0c498da2ef18fe16d0afab27b813d3595 + docs/components/createobservabilitydestinationrequesttype.mdx: + id: 0cb269425077 + last_write_checksum: sha1:f8608dbed4fcc4407be03f34d5a5ab50c5cd085e + pristine_git_object: a3f9ac29f6a4edc5a63c4a6b18c5b86754c1f945 + docs/components/createobservabilitydestinationresponse.mdx: + id: ce5ac8963efc + last_write_checksum: sha1:de29327c652aebd154ae071bcce530d8c1518012 + pristine_git_object: a6654f0998c2afe7f22e5647afd77c9bd374491f + docs/components/createpresetfrominferenceresponse.mdx: + id: ed0298bf47bf + last_write_checksum: sha1:01fc963af14788ca0453a09fe4f7a60e4420244a + pristine_git_object: c31f263d23205ebfa16eb7e4ae5f33a11fb19764 + docs/components/createworkspacerequest.mdx: + id: ea85d6684017 + last_write_checksum: sha1:3fd0555fe82dbdff103995079630e6bcb7503795 + pristine_git_object: 3de1021e362e3a910e0e35842e6f1cdea15cdca4 + docs/components/createworkspaceresponse.mdx: + id: ee0c0ca3257e + last_write_checksum: sha1:64ab0075fcdd724938755204443051ad0c41100a + pristine_git_object: 85596ef5870f1faa8a4faefe07470a30fcd83451 + docs/components/customtool.mdx: + id: e8963a9be6e2 + last_write_checksum: sha1:9321bedb7d51af8f98dfe098989747d92a3f8db8 + pristine_git_object: 4da535856e50542d30be28e12f1802519ffba50b + docs/components/customtoolcallinputdeltaevent.mdx: + id: 015e22f6e954 + last_write_checksum: sha1:f73d21dcc65f4e0b15ec5d546806e6c8f4d1205d + pristine_git_object: 4ff3cab6462170546bf5ddd7068b2fe43929ed06 + docs/components/customtoolcallinputdeltaeventtype.mdx: + id: 2d9f203e7a21 + last_write_checksum: sha1:5e75d5504900fa25577a6d2c2af679254068383f + pristine_git_object: 55bd172b3aaf0199ac61533c785e57cb1393726e + docs/components/customtoolcallinputdoneevent.mdx: + id: 4307053d8389 + last_write_checksum: sha1:a5299b5cec7fda9ab74702560c3529c526e19d03 + pristine_git_object: 9fa94a133ff180f99381a83b4687f4e3910346ab + docs/components/customtoolcallinputdoneeventtype.mdx: + id: 2c39202a6733 + last_write_checksum: sha1:78748e4b1f86dca06ac8d7af9522b02056b35a1a + pristine_git_object: 8f1998f649043b4b2c6eab0ed51df960be63523e + docs/components/customtoolcallitem.mdx: + id: 3936d690b05c + last_write_checksum: sha1:26f5b677acfa7a9934e2843d8455b67413b79079 + pristine_git_object: fc18f9890ff9014d08a110e16e581280b3c09a72 + docs/components/customtoolcallitemtype.mdx: + id: d69cfea1fb83 + last_write_checksum: sha1:25c64017876c8e051f178e87fcd94f47f19e6bc8 + pristine_git_object: 3d905dbff9faea09b8635ea1fb7d4e15739f0a44 + docs/components/customtoolcalloutputitem.mdx: + id: 5e73a74f3035 + last_write_checksum: sha1:57af58bb1af5d2d80192851faf332bed7f882338 + pristine_git_object: 2e8dd6506b8710955d62b207ab2d65c97ff31786 + docs/components/customtoolcalloutputitemdetail.mdx: + id: 98d0eb9ba782 + last_write_checksum: sha1:6b999396a15a6d94be34e30e7f25eea3afef1790 + pristine_git_object: ba63c6e461e3e083730d6a14666263355c7a9a24 + docs/components/customtoolcalloutputitemoutputinputimage.mdx: + id: 35c913e2c5ba + last_write_checksum: sha1:01ebc7a20d532e09e7660689bd7406567aaf3e04 + pristine_git_object: 830ac246df500f3e4376c3eeb08c8b856e4ec504 + docs/components/customtoolcalloutputitemoutputunion1.mdx: + id: 083fd9d40955 + last_write_checksum: sha1:a1e66b4441b36a0b0383da6eb2be1c6f97ef1066 + pristine_git_object: e3d8498bfff28700601076cd05cf265d327b4dea + docs/components/customtoolcalloutputitemoutputunion2.mdx: + id: b2640c7f341f + last_write_checksum: sha1:1da60c3906c15ef0d54a47cdcca9c742f1793c6d + pristine_git_object: 10e3c5e6151b7540604f0fe43941bb3bf494bf09 + docs/components/customtoolcalloutputitemtypecustomtoolcalloutput.mdx: + id: 9aeafc9c0118 + last_write_checksum: sha1:5b1f4ee809d675b439fff5b77313d166b426c355 + pristine_git_object: abfec635180255e23d4c5c0faf7662f90e2c92a0 + docs/components/customtoolcalloutputitemtypeinputimage.mdx: + id: e3c38138e53f + last_write_checksum: sha1:679e601744c73d99f5afd57c0de521914497aa82 + pristine_git_object: 821cf8bba27d169ca2a950faca297f432222192d + docs/components/customtooltypecustom.mdx: + id: bd47414fa7f5 + last_write_checksum: sha1:308434644c3f96ca5e4084d22f5877b17c45a153 + pristine_git_object: 10faea80751d21dd80b6faf879e725c181b5749a + docs/components/dabenchmarkentry.mdx: + id: 51d39703b62c + last_write_checksum: sha1:b43feaef797627d56eab0a98c9424c2cc6d95007 + pristine_git_object: 63238a9c49055db8169aa639fb75d4b23e9826ec + docs/components/datacollection.mdx: + id: c29a8011151c + last_write_checksum: sha1:e4f8c70da5562a17752390debc0d3540c594d2b9 + pristine_git_object: 307b625ad02378014bcaa5be4c21e32708edf9cc + docs/components/dataregion.mdx: + id: dac6201df667 + last_write_checksum: sha1:830cefcb39b706616204c58ce65457b15347efd9 + pristine_git_object: 07ebe2f4eadd59e2282d204442bcd87ee4dec3a9 + docs/components/datetimeservertool.mdx: + id: 709ed5cdd4da + last_write_checksum: sha1:2920ba9d11c4c1600dfdd4293442407b4482cc0f + pristine_git_object: af483becfb66c99449a88e9265568f4824e428bd + docs/components/datetimeservertoolconfig.mdx: + id: d05bf1be275e + last_write_checksum: sha1:2656651872fae642b7933e54078b1d2c946b0b88 + pristine_git_object: f2c289a398ebb8f4248462cb483d1cb4759d1866 + docs/components/datetimeservertooltype.mdx: + id: 8250df00c843 + last_write_checksum: sha1:addf1f380a24cd6f8b36a572d99c5ee28e483fc1 + pristine_git_object: 23b3fdfc750fcb578ab751f7726f5fa8ba854b80 + docs/components/debug.mdx: + id: e3700a58e527 + last_write_checksum: sha1:a7899e5645dc429606bdb622581c4a2f6fad61ad + pristine_git_object: 5aff6df42e4d37cb363d64e5b854d64843d761e0 + docs/components/debugevent.mdx: + id: 6ca5a59f1fa4 + last_write_checksum: sha1:a70e1632f9ce13d2829e41fb60b75dec7ca2043f + pristine_git_object: 1a76e56a4273928dd20e3e46965643234733e3f1 + docs/components/debugeventtype.mdx: + id: 8b6b222a5da7 + last_write_checksum: sha1:e37576941ec9e2cb4fe176277bb02b9cc86f6f48 + pristine_git_object: 5d2d4dc2ddfc8d88c4869242498affc0b46f969e + docs/components/defaulteffort.mdx: + id: 13b9d543d674 + last_write_checksum: sha1:3a64d36689446d36d4bd1ab08f85f16c0aac2c2e + pristine_git_object: 1e867684ba127492528485c864e121e67d5f24f6 + docs/components/defaultparameters.mdx: + id: eb9e41a380b4 + last_write_checksum: sha1:5c82a5cf6bd1b0b115d772590e6925f808f4c0e7 + pristine_git_object: 6c502ac4c12dc4d032466e3e0d124d708831c77a + docs/components/deletebyokkeyresponse.mdx: + id: abdf89311ee3 + last_write_checksum: sha1:4d42c424a2f62d17b7aecc813f171a83dd6b5b6e + pristine_git_object: f1c80d26580b903f6997af5a9328216be8af7e7b + docs/components/deleteguardrailresponse.mdx: + id: 4b5aa42babb9 + last_write_checksum: sha1:85c65956be5b333b233ada31f980a73eb580f9b8 + pristine_git_object: 36069a9639aef5294e8ef81b5e96d169b01e5b07 + docs/components/deleteobservabilitydestinationresponse.mdx: + id: 0f606ad36822 + last_write_checksum: sha1:99269cd4a1958da8aa09cb828709ca8a734541ff + pristine_git_object: 4d572b68887b463586c64afbe73498fe70b7f8d3 + docs/components/deleteworkspacebudgetresponse.mdx: + id: 438cab4d21cf + last_write_checksum: sha1:ee3e008f82c76693cb018712a921bcbf32bd28fd + pristine_git_object: fb5ff101e1f218a3d67fc3efd2bc2e1956041f06 + docs/components/deleteworkspaceresponse.mdx: + id: 6b62c9e33dc0 + last_write_checksum: sha1:aa78e7ac3832b5e3033a19ed3d666b4193488b66 + pristine_git_object: 93b4da47498148fa2d3fb1a488d05b0560fa5214 + docs/components/easyinputmessage.mdx: + id: 71bd8b4dc7d7 + last_write_checksum: sha1:3bb172d1d6eae554456fa5228ae6a4b792264577 + pristine_git_object: 60e935b6dd892eb12905a4d38d92edba37f0c06b + docs/components/easyinputmessagecontentinputimage.mdx: + id: d9c28bca7c9c + last_write_checksum: sha1:118666ad8993025c9b405149e92a40ff1efe9ae4 + pristine_git_object: 502f118250862c20fbd5f8427389bb06a5f60020 + docs/components/easyinputmessagecontentunion1.mdx: + id: f0f84e4a62d7 + last_write_checksum: sha1:ee6d451a988d7ad19acf9ce1763fe3b12e352125 + pristine_git_object: b650861b74772c18a502c327b5dff2c2313c6402 + docs/components/easyinputmessagecontentunion2.mdx: + id: 09220b3ecbc3 + last_write_checksum: sha1:da94562d574e94aef7f867c727e4b5bfc6289f6b + pristine_git_object: 02c13eb50df50e79ab55dfe849134e9d3a54b260 + docs/components/easyinputmessagedetail.mdx: + id: 90d600df4441 + last_write_checksum: sha1:f14122e0f3fac97cd0912731ab2050b931af36bb + pristine_git_object: 4f052972320daa0e9df0ed47450f3eb2df5c1ad2 + docs/components/easyinputmessagephasecommentary.mdx: + id: cd12923eab93 + last_write_checksum: sha1:0220e90eb8da4b1a227232e0afdca173016584cb + pristine_git_object: 6c91d1640002778720bf058a8f75026eb1bc8b3a + docs/components/easyinputmessagephasefinalanswer.mdx: + id: ad11b5a222f9 + last_write_checksum: sha1:f90583cfe2e1b5424aa3ecca175ae9f68d11d65e + pristine_git_object: 4c9f6073f10a6884afc98101ee398df33fa00fef + docs/components/easyinputmessagephaseunion.mdx: + id: 1b6ac9af1803 + last_write_checksum: sha1:32c40092a97e059a7f519d5e575ed3dceb4d0f89 + pristine_git_object: 6f56b1adcf81b84d88df0432d096eb479789ac87 + docs/components/easyinputmessageroleassistant.mdx: + id: cad68aa52f41 + last_write_checksum: sha1:4df19f7b18540801bef2f5a5ad355d80e4326c15 + pristine_git_object: ad75b1436f97f914134280f45a7ff058a64ea3b0 + docs/components/easyinputmessageroledeveloper.mdx: + id: 2af223fbe312 + last_write_checksum: sha1:13dceb8b714291dce808100cdf7509aa1e87858b + pristine_git_object: 1c5e3b100fb0866056e90aecf52fcc96f49f56b4 + docs/components/easyinputmessagerolesystem.mdx: + id: 122bf2ab9785 + last_write_checksum: sha1:20ebc74c18684d12639ee102b24ba216d378498d + pristine_git_object: 2baab7193c84adaaeab0cf7db118f42725a9674d + docs/components/easyinputmessageroleunion.mdx: + id: 9a28108d99ce + last_write_checksum: sha1:487f42b885f739086d165b3207de61ae241a5190 + pristine_git_object: 27659d87b3c8a9f935f990397a261c5fc4280f37 + docs/components/easyinputmessageroleuser.mdx: + id: 1a8e020cb65a + last_write_checksum: sha1:56ce9b410b83f6b106e3321fc51dee106a971baf + pristine_git_object: 2d5933ca87658c07552dd678d1fe5328d6eacd0a + docs/components/easyinputmessagetypeinputimage.mdx: + id: e81ae19bdb64 + last_write_checksum: sha1:9e65e183c8d42454cb814ee95649958420732b84 + pristine_git_object: f7d504e774ac018ff37bb304a5731e6ab7742b4b + docs/components/easyinputmessagetypemessage.mdx: + id: 37ec98988a63 + last_write_checksum: sha1:aee7e8b7d057fe7581977db622ca68a5fd7c19c1 + pristine_git_object: aca189151b5ad31a7d600b2a2e30be006ed649d6 + docs/components/edgenetworktimeoutresponseerrordata.mdx: + id: 31b2d23325c4 + last_write_checksum: sha1:d8d52abbcdd092079d0af840deff1b72b22c3228 + pristine_git_object: 66b365f4cf76c649c5c98072d1550d79c885335b + docs/components/edit.mdx: + id: beb780c4a3d4 + last_write_checksum: sha1:1ec0390664caa39f049254733104bb18ca11a712 + pristine_git_object: da55b43f7914f2b82219914169414b4876dc289c + docs/components/editclearthinking20251015.mdx: + id: c0ecf2bb43c3 + last_write_checksum: sha1:92f0c84b274d854368e033edefec6bc0fedf0c9c + pristine_git_object: 0796f7cdb8cf7498f4c77e9a749c7f0f75fe1d64 + docs/components/editcleartooluses20250919.mdx: + id: d8b581c8ed3d + last_write_checksum: sha1:0b5819f318ab86e0b43c242e07397a5ad13fa01b + pristine_git_object: a8a31837f22ddcd5a90dc108964aec3e8a94b609 + docs/components/editcompact20260112.mdx: + id: 7123a54635de + last_write_checksum: sha1:b5485c685eca10db230886100fa089e0535be69c + pristine_git_object: 09c8fd6f6aeedcf1ae3046b88f0171c9953fc37b + docs/components/edittypeinputtokens.mdx: + id: eb40c458515d + last_write_checksum: sha1:b85ea056036bbdbbcd4e0adea9dcd9a7dc695c51 + pristine_git_object: b876816efb61e12af7f25bf72f0447adbfbd810c + docs/components/endpointinfo.mdx: + id: 6dcdfc7379a9 + last_write_checksum: sha1:2c5fc2144a44e919bda2929fd9dbb10f64641ced + pristine_git_object: e525afd1a47a82b73e0f78ae25de41c8871c61f6 + docs/components/endpointsmetadata.mdx: + id: 28860bdbee28 + last_write_checksum: sha1:75f9c7ca1d90b46860c958b2495a569e3ce0e126 + pristine_git_object: 4add6ebfc73d7edfb30a7d8a363aad0ceff19117 + docs/components/endpointstatus.mdx: + id: 5e4fa96c840d + last_write_checksum: sha1:4d2ccb7fc0d20c8a0b72db3a55a8228169891b6a + pristine_git_object: 72c5b4fb8441c2a4337dc9906fa81b01bb92f126 + docs/components/enumcapability.mdx: + id: 33c7a0f315d5 + last_write_checksum: sha1:08338d742893cb3966cd12cee49a5d80748b3d63 + pristine_git_object: 4c04e707a98671dfaf3c5d1563ccd169e6d04fe7 + docs/components/enumcapabilitytype.mdx: + id: ff781736c1f3 + last_write_checksum: sha1:b85c33025d37312667a669a2fa8771b2f0065e41 + pristine_git_object: 1b43e9ba3a50d3ea814e584c50293291a9333a1d + docs/components/environment.mdx: + id: 10d9f9dbcaf3 + last_write_checksum: sha1:415cb68d86a5d9bfd2ddb9bfa3ecd2794870721b + pristine_git_object: c08a3d8fa9bad83e57d5baa9be9995f30b16a24f + docs/components/errorcode.mdx: + id: 0d3bc0f8a92d + last_write_checksum: sha1:ad3ff0627e50e0b51140afaf8fa9b08531f5e9c4 + pristine_git_object: c177e3075bf9bf8b124fc5bb0c54eff0a2a75ae6 + docs/components/errorevent.mdx: + id: b8087272db82 + last_write_checksum: sha1:af1ab64010fd36ba6711e26788244afcbf35d9c9 + pristine_git_object: b09b8411e07b50ead3c0ef2537a3ac40c021f6c6 + docs/components/erroreventtype.mdx: + id: b365b7815bf8 + last_write_checksum: sha1:65fe2b66aeb7f8e46a4c1a1e6ee826495fc86b71 + pristine_git_object: ffc147c8c082c000a355063292275d381b130b42 + docs/components/event.mdx: + id: 83efd2dabaa9 + last_write_checksum: sha1:82c3b4882ab31a90147ffe5c0f5d3011ef6ba3cf + pristine_git_object: 3f077ae59db00c0a92cdaa90ddf24860dcf0c3c4 + docs/components/failedmodel.mdx: + id: b19eb588a22c + last_write_checksum: sha1:647182170d99695cdf4985f8b4e423765bbf6d2c + pristine_git_object: 70d6de50d74b3d3a16f2b90ae5ff362c4d77a9d2 + docs/components/fieldt.mdx: + id: e7b48abef959 + last_write_checksum: sha1:e535734499fa6e4afcc05ba296d0c54f49b2388b + pristine_git_object: a021f257ecd8e43605e8559dd69c0c8a4fed4c99 + docs/components/file.mdx: + id: d4f9d0d9fbd0 + last_write_checksum: sha1:73520bf00e1d5f1ee3830178b1c2e6ba35d95db2 + pristine_git_object: d332b47b59ec1d41ff24e24ff7206a58797c07b1 + docs/components/filecitation.mdx: + id: 857aa356ad65 + last_write_checksum: sha1:2a8a17ea6253fe54b63918b3a6f2b0206432191c + pristine_git_object: 79ca7438874aa25cf91e0559b1c889bfb7ed4b35 + docs/components/filecitationtype.mdx: + id: ecd342f3c43d + last_write_checksum: sha1:6ea8086b8c4c00c18e68f2f7e676d0b7a0500fe2 + pristine_git_object: 2450e43778e482e31b4ccf29287d0a029120ba5c + docs/components/filedeleteresponse.mdx: + id: 5f7dc2e707ae + last_write_checksum: sha1:586c8e036c9bd5bff72f8ba8c817527997ee2c53 + pristine_git_object: f9fa432587770f2613bf1fa4354e66202d15c83f + docs/components/filedeleteresponsetype.mdx: + id: 5f7a73962d48 + last_write_checksum: sha1:ddaf4610d5e53795b50cf54bdfb59ce7f09a43b8 + pristine_git_object: 978f7962bbd31d7427d9abf4af239efd5ae16226 + docs/components/filelistresponse.mdx: + id: ca063283734e + last_write_checksum: sha1:05fbc7f5d1656f7ba4b41fa3c4071fdf20ff9c72 + pristine_git_object: ec3829978213a2daea4ced16b4c30405c3687532 + docs/components/filemetadata.mdx: + id: 1de063910c9b + last_write_checksum: sha1:97e9ea9294549ec49126fead9f95bdd2aad8af61 + pristine_git_object: cfb23fb248c4473425f52bfb4576a09951163d75 + docs/components/filemetadatatype.mdx: + id: 334463560a36 + last_write_checksum: sha1:8fb5050aa4a7dd6395c24ecf4dd3bca517494b31 + pristine_git_object: e67003057312f7d56f3b3ba0197a93624755175b + docs/components/fileparserplugin.mdx: + id: 083d2a50302f + last_write_checksum: sha1:a5be0e9c85ac7f425996982662606fb34b25fbd3 + pristine_git_object: 2a74948b2d91279a67e87e6fd941f5fc01c8f502 + docs/components/fileparserpluginid.mdx: + id: 7d737c676412 + last_write_checksum: sha1:e5f121638cdf28a930d1b2bc6bc296fe5694355f + pristine_git_object: 092654bb43e283576c1e3cbdaa8b5060ed1fdfff + docs/components/filepath.mdx: + id: 39b591177fbe + last_write_checksum: sha1:39849185c3a432fd233d32205cedfbe7a6fc8102 + pristine_git_object: f6d81e7b4b6683de342af59481920c06087d9f70 + docs/components/filepathtype.mdx: + id: 5051caffff88 + last_write_checksum: sha1:84b7b63066020a2a297ce511261f272767df2c10 + pristine_git_object: fa448d3f72ed18b2a8894a949bbc8df5dfebf281 + docs/components/filesearchservertool.mdx: + id: 5d9983161437 + last_write_checksum: sha1:29b0b6df7c1cead82c312595d8809e5a3234562f + pristine_git_object: 573425f380bf20d06487bac7749e3f4a0786f747 + docs/components/filesearchservertoolvalue1.mdx: + id: 64c038ff374b + last_write_checksum: sha1:16c205ab4e6070838b0cb688991d6407f1b02cc9 + pristine_git_object: 769ec98426b4a9f92a002ce6bf4792afbef9a24c + docs/components/filesearchservertoolvalue2.mdx: + id: 2b477049dcd1 + last_write_checksum: sha1:e6d7bff818ad43690daeb4a41b2b30b5895d6a04 + pristine_git_object: 570219253720d0f7f682e6b5a8b510ea60abd066 + docs/components/filters.mdx: + id: eb61c97e25a7 + last_write_checksum: sha1:4e20881809ca6f0e0ecc3d572919f96f7ba4088d + pristine_git_object: deb052770e7585652dd39a43529707e84c190572 + docs/components/filterstype.mdx: + id: b465aabe216a + last_write_checksum: sha1:5aaca37571b9afb4102d1d6b0641b34daaa8cb4a + pristine_git_object: 172ba4b91998fdb10fafcdab1a6d2ae0ec8a1f20 + docs/components/filtersunion.mdx: + id: dd890414ed4e + last_write_checksum: sha1:926caaafa4e689537dd7800767f0449d4c19d7a2 + pristine_git_object: 263dda89b5a2dd3bc1a409fd4530c613adadb169 + docs/components/forbiddenresponseerrordata.mdx: + id: "760721125246" + last_write_checksum: sha1:3abc15cf5c47ac6d2dacd679f19ab8c1fa563c9d + pristine_git_object: 6876df07cc049ac7216134da25218080135d6cf2 + docs/components/format_.mdx: + id: 0282154286c4 + last_write_checksum: sha1:4f930bce8f946d3995606f06c63421b0378f7b1a + pristine_git_object: 76b8e33d8a8ab77f7be501b004987aac75c302ac + docs/components/formatenum.mdx: + id: bdb6c3cefc9d + last_write_checksum: sha1:1de529936d4e211cbfa09a34f1b96c7e322f4fec + pristine_git_object: b8cb0845d0b3b8353913ac90a4bfe4da5d5cc610 + docs/components/formatgrammar.mdx: + id: 4eb257a94238 + last_write_checksum: sha1:d56a813316c03ba7adc39c28a462d3076e72c9e8 + pristine_git_object: 27fb6f5f6d49287fa4813b22992c9162a0dfba9b + docs/components/formatjsonobjectconfig.mdx: + id: 1675097eea85 + last_write_checksum: sha1:8432f7dc560ec33af97f8affa6dde8dbad8d23fe + pristine_git_object: 376faaf43281f56a8a8c09698ca1bde7a2d81f49 + docs/components/formatjsonobjectconfigtype.mdx: + id: 4514227c0898 + last_write_checksum: sha1:f3b7c73f57b6abaf2408cd0155ccf3e1c429a641 + pristine_git_object: 54307d61ebda1db4d9ffd7aae74d6a9d18ad27f5 + docs/components/formatjsonschemaconfig.mdx: + id: 14f44a8b7add + last_write_checksum: sha1:6d80c68eca8da41172f9bfe8470e088662e1c184 + pristine_git_object: 12224f310fd12056567710d43dee83a7fabf0cd8 + docs/components/formatjsonschemaconfigtype.mdx: + id: 440019abbcee + last_write_checksum: sha1:4fa1c94297eec8b9f6395f3bc7db844f63eec222 + pristine_git_object: b5a4ff25b47226c69ad7f3875e8c4b0acb347414 + docs/components/formats.mdx: + id: 5bb176c6cf37 + last_write_checksum: sha1:a69fe91edb6148730ece9c0271984d76efaa7483 + pristine_git_object: fc3b36888b3d89dded2a2d884f2cac25c9d2410a + docs/components/formattext.mdx: + id: 5ab83469a10b + last_write_checksum: sha1:422aa15de0b55c47d899b5cec15ffe6e1b5da213 + pristine_git_object: 61d6f3b9e3f595547391ce2c09b462187cbe4f1f + docs/components/formattextconfig.mdx: + id: 01d80e60b1aa + last_write_checksum: sha1:f202b5a0707f223e13de2d0a4d57f431c35f2235 + pristine_git_object: 798671326c0c5c0a077e79e17935992130738430 + docs/components/formattextconfigtype.mdx: + id: 78ac8ef29e5a + last_write_checksum: sha1:43ac364b9f18d66927d4f8c97468a4229093705c + pristine_git_object: 4d236211da8d7263e1be7bd9d077902d83d3e2ee + docs/components/formattypegrammar.mdx: + id: 189cc7136c7b + last_write_checksum: sha1:b7ab518fc4935259908a520ffbe6517d173d9e53 + pristine_git_object: d37196e66d056dabe2a2c2cd7770f14735313cb5 + docs/components/formattypetext.mdx: + id: 51f699e26fae + last_write_checksum: sha1:6708cfd5bad2a610540680e683020f21e7111822 + pristine_git_object: ed61eec17b3285863045a1629b74fa5225b0dd1c + docs/components/frameimage.mdx: + id: c5ada3767f6d + last_write_checksum: sha1:05ca5e4bdd5357dd8799652142ae81c895aae620 + pristine_git_object: 46b4b985d25cfa97bdcdb67245450dc1b4936508 + docs/components/frameimageimageurl.mdx: + id: 4e2e0585c368 + last_write_checksum: sha1:16fd77c3afba87c39dd1e7426800c17ba83248d7 + pristine_git_object: 713a81f1d90efbaeb1b5cd276551ad83f2d45f75 + docs/components/frameimagetype.mdx: + id: 80a2f3324333 + last_write_checksum: sha1:602febcd65ba3b346bca4989068f7c117872c24a + pristine_git_object: a27b6a6f5cef9c35e78f9f1179cc636caf0b5869 + docs/components/frametype.mdx: + id: 4ab07ff3071f + last_write_checksum: sha1:f847f0b700c6ef363ee6c5a2d66e367cacd7863a + pristine_git_object: 7144b8675abe41fa9b576174e702475189291692 + docs/components/functioncallargsdeltaevent.mdx: + id: ecc6d6613582 + last_write_checksum: sha1:b1cc3e1f2ccc6cdc2d87c0cfc17523d9b8cfd10e + pristine_git_object: e28936efffa02588ef23fc8d3bec7a6f12ef1466 + docs/components/functioncallargsdeltaeventtype.mdx: + id: daaef103a6c0 + last_write_checksum: sha1:b3ad75a7ad97dfc0a1758b8f2042abdd2308f5ae + pristine_git_object: 27b17963a9bc6e4026ce2c9786cd229ed39f83cb + docs/components/functioncallargsdoneevent.mdx: + id: f838d9ca1d90 + last_write_checksum: sha1:de0e814a2cd373b6126eac1c60bd61340e6bec85 + pristine_git_object: acc25e399de003e1052b4d6877f3dfa40b54f32f + docs/components/functioncallargsdoneeventtype.mdx: + id: bcb0ea9e0c1a + last_write_checksum: sha1:edadd822daa0b46eb73a529c2f958af26ed030dd + pristine_git_object: da8e18a164f2bd77e34b42d88e0b553edfe8a9c3 + docs/components/functioncallitem.mdx: + id: 6cb0afdc292f + last_write_checksum: sha1:e9c1e74fee850ae488ea789133c7fbac4a42c717 + pristine_git_object: f1082d7352418d9e0055cfff070ddfb33b44ce15 + docs/components/functioncallitemtype.mdx: + id: d41eb56d2b5b + last_write_checksum: sha1:2b5ba9f95bbac58d31ca72fb29d8398a90c68f86 + pristine_git_object: ebe7c4534ae98d6bad16be51ae67f3d7b68a6de3 + docs/components/functioncalloutputitem.mdx: + id: 046aa205440e + last_write_checksum: sha1:c7c60e48e384e8b45827f80325ea71b3f8563263 + pristine_git_object: f48aaeabf846bf1480225074595f61d6fd77df1a + docs/components/functioncalloutputitemdetail.mdx: + id: 5f3a3e7a265e + last_write_checksum: sha1:173f1dabec2c3aaf8bebe06cf63e27a568d5f0f1 + pristine_git_object: 086e8a674c4fe4174eb1129b0aa33f785dfe6044 + docs/components/functioncalloutputitemoutputinputimage.mdx: + id: 0b40b0d89709 + last_write_checksum: sha1:5a890674261391c3100592a20cbcd175dc96060a + pristine_git_object: 55bb222509ed9d751a7675dde367f8a699a29760 + docs/components/functioncalloutputitemoutputunion1.mdx: + id: 69d70ecfbda9 + last_write_checksum: sha1:4e8c3d4459c55ae088b9c6de3ac5f67cec1c42c3 + pristine_git_object: 3cea7c430981983c5483fbddba103c1e9e144afe + docs/components/functioncalloutputitemoutputunion2.mdx: + id: c4953b99bca2 + last_write_checksum: sha1:69f8715f2b8d305759dfc75f7e56c247b9e25e26 + pristine_git_object: 92b4c4cca1f9a587654cfff97c93f6c66f99fa6c + docs/components/functioncalloutputitemstatus.mdx: + id: 2649c00d0618 + last_write_checksum: sha1:781a211478e77770e68be20fbaf9c5f26f0cac9d + pristine_git_object: 870e40ce63b742d63581c686f04900b3cc1e1703 + docs/components/functioncalloutputitemtypefunctioncalloutput.mdx: + id: a1c1ac8a378a + last_write_checksum: sha1:766416f347f68a55e2b4ef1c3861add60157c0ff + pristine_git_object: 7085d8cd474a4fa2f41e915375479f2220c47853 + docs/components/functioncalloutputitemtypeinputimage.mdx: + id: 13902448e7ad + last_write_checksum: sha1:0b3d0f3e8cbe4f93445d07ba65cceebe365933da + pristine_git_object: eff3701c44c58f6c8a93badff21969b939089a4f + docs/components/fusionanalysisresult.mdx: + id: a3d19bd18149 + last_write_checksum: sha1:07be09bbe40db29df2ab80183aca39136b575dcf + pristine_git_object: 461abd3405a1f3625b5aba440474f5b8f438e0b5 + docs/components/fusioncallanalysiscompletedevent.mdx: + id: c0bd92da771d + last_write_checksum: sha1:47e2810628a394ea1d0266e2e7454ad43f656f17 + pristine_git_object: dc3640ff8add5ace3d6dd14a3edf1262556d6d22 + docs/components/fusioncallanalysiscompletedeventtype.mdx: + id: 6ea6b2bc49c5 + last_write_checksum: sha1:667bc54812dff48413bb3ebcb4144aa5de5202dd + pristine_git_object: 897efa69c65c240777c2639958db44191cf6ccd1 + docs/components/fusioncallanalysisinprogressevent.mdx: + id: f3845ebae84c + last_write_checksum: sha1:829d05a50b21a4b30b67a869624f1224fcc52e9a + pristine_git_object: cd16c26cae8bece70bb9cb566a6f16b63d4f4534 + docs/components/fusioncallanalysisinprogresseventtype.mdx: + id: dab80e9a7de4 + last_write_checksum: sha1:c9bb3b13718e05441f746c08f79d9cc15eeb04bf + pristine_git_object: fb1d6412a7c75bb957c54897587ee971c2c9aebb + docs/components/fusioncallcompletedevent.mdx: + id: a4f04b10042b + last_write_checksum: sha1:52cbc0a43ec0f9088f6bf7744d5d3248c16901af + pristine_git_object: 400524487eeaf4046db9000faa8ba533b8c4d834 + docs/components/fusioncallcompletedeventtype.mdx: + id: 46e2ebfd9619 + last_write_checksum: sha1:e7698cac298f7c89b00198824152165493ac8a30 + pristine_git_object: 7061775b1179a55405f847308429b94ec0a245e1 + docs/components/fusioncallinprogressevent.mdx: + id: 18fed096cd7c + last_write_checksum: sha1:a9abc32cc5cd39d7bb58f5d5ad748b48ac589471 + pristine_git_object: 8f27a2d07ba201543e8e76d46b185ebd65d74cfb + docs/components/fusioncallinprogresseventtype.mdx: + id: b4a2909435d6 + last_write_checksum: sha1:5071f20ee849ae136e898fc13af0ff97e3886ae0 + pristine_git_object: eec9b0a365f403bf44f433909bd14c9ac460aeba + docs/components/fusioncallpaneladdedevent.mdx: + id: d057a87a3e8c + last_write_checksum: sha1:0b1ee3d638082e813d029e5936cc2abc3a779e88 + pristine_git_object: 260884b7d7acf74c0a534f5b4ac91130b1c24878 + docs/components/fusioncallpaneladdedeventtype.mdx: + id: 439f8569c5ad + last_write_checksum: sha1:04872f0173e07a8099f1e8511a7ba31af1a3c3db + pristine_git_object: a2c258432c4c154324004cee9c5eb359e1405b8f + docs/components/fusioncallpanelcompletedevent.mdx: + id: 6ca3150d7b87 + last_write_checksum: sha1:71afecb28178165d7573c2193260983db5296698 + pristine_git_object: 1d115a6afd9e94bae0441d912a68c15f07eb1732 + docs/components/fusioncallpanelcompletedeventtype.mdx: + id: 3a0224f9e3f9 + last_write_checksum: sha1:ec654c25c231f49c7865ae264e9417e09617a239 + pristine_git_object: 1cfc97de5a70c5fa838186957e72cb8d6379d950 + docs/components/fusioncallpaneldeltaevent.mdx: + id: d10c40350eee + last_write_checksum: sha1:0385a1d9565e20b5febb162a338956792bc2582e + pristine_git_object: 3f8a569b750dae18aa84c4bc1576662ca7650952 + docs/components/fusioncallpaneldeltaeventtype.mdx: + id: bb9c81fcfb6e + last_write_checksum: sha1:963e7feec1c73d00f7ef3928473ee76aa63a55dc + pristine_git_object: 1d067fe04ea2a955e5f1e0b931058628fd1fe302 + docs/components/fusioncallpanelfailedevent.mdx: + id: 4e0cbbe370d8 + last_write_checksum: sha1:acf69a3356a8b1952aaf32fe1d43bfd8fb5455d3 + pristine_git_object: a6c9fa53521862aec14a0831164192af41b60285 + docs/components/fusioncallpanelfailedeventtype.mdx: + id: 2d4b21d9cccf + last_write_checksum: sha1:876066a290046be2a6bc514834a64ca72ad8e786 + pristine_git_object: 4ccbf5743ef17486b9590e78be27e224d5a2af9b + docs/components/fusioncallpanelreasoningdeltaevent.mdx: + id: 13029b972715 + last_write_checksum: sha1:fed6eb065bafdb04f8156d58e500ec1ea3e511d9 + pristine_git_object: a25d4c0eb52a591709d8228d455222087d5404e0 + docs/components/fusioncallpanelreasoningdeltaeventtype.mdx: + id: 958e4995e762 + last_write_checksum: sha1:737823fa9ee15d8e007720937517c3117d73fd49 + pristine_git_object: 7b7d7a350209a88f9a688d1fab6d88fc4754664e + docs/components/fusionplugin.mdx: + id: 91c7b4638c7e + last_write_checksum: sha1:d6cb2d143277157399b5c8560827b4e5f92c1931 + pristine_git_object: 47df2cd777c8b157b4df2ff942b9af80b36dd697 + docs/components/fusionpluginid.mdx: + id: 2b90bfd2d611 + last_write_checksum: sha1:8111a4424197eb86dfccedfdc798d1a2b5a1c39e + pristine_git_object: 07ef9cfd59a0aedd18e5f1a0206c65f471ceb29d + docs/components/fusionplugintool.mdx: + id: 075d6029e74b + last_write_checksum: sha1:bcfdb9296fa9f3d97a496df70d45b12129f15ed7 + pristine_git_object: 3c29bc4bd3bdf7037b9c3aa894180b8e4cae6098 + docs/components/fusionservertoolconfig.mdx: + id: 87976811b0c3 + last_write_checksum: sha1:dc0f4c3cd6409193662d17304c0dfc2eb28f6efb + pristine_git_object: 68527081664f78ec050036db30091158a08bd5b6 + docs/components/fusionservertoolconfigeffort.mdx: + id: f5ce0fbc94aa + last_write_checksum: sha1:4ce09a069b4eeae41ac1531027cf97dc4139927f + pristine_git_object: 8ba9e2e9776f6f5ff13255a95514f68003ed066c + docs/components/fusionservertoolconfigreasoning.mdx: + id: e2814e0ec2ce + last_write_checksum: sha1:2cce3523a6ece5ff53b99e7508e95283d69e5f51 + pristine_git_object: af7105baa0ce972bfccbae84a2ec91ae50ae6333 + docs/components/fusionservertoolconfigtool.mdx: + id: cb4b076ea8f1 + last_write_checksum: sha1:41f637f2abe226ae7db2206ba3656c64815efad7 + pristine_git_object: ec79aaa4c0af8b3ee59c5b786f3c9ea88c5e7502 + docs/components/fusionservertoolopenrouter.mdx: + id: e90614058484 + last_write_checksum: sha1:ca700c405e7a9cb2d5f10932cd1413b0192c8527 + pristine_git_object: 6f4149fb710f4d73e562190483469ab7c79f84fc + docs/components/fusionservertoolopenroutertype.mdx: + id: da7e7bf8b425 + last_write_checksum: sha1:e3b47af2ce0438e276c4669ddbeb373dedc8cd07 + pristine_git_object: 51199c32af27a46659b1c3d5a48e5ba11912dca8 + docs/components/fusionsource.mdx: + id: 9c98ab0aea5a + last_write_checksum: sha1:5718b311bbd7315cda6723e16da7f06eca0459f4 + pristine_git_object: b305413e07a9922a150dfb23e65164f7d2166495 + docs/components/generationcontentdata.mdx: + id: 030f8930b5df + last_write_checksum: sha1:84792e91bcca8347a02d62672fa755bd7c607cbb + pristine_git_object: 1e4a22a040cc50e6700e7a2a9786e812e88435ef + docs/components/generationcontentdataoutput.mdx: + id: a86cb8cf8b22 + last_write_checksum: sha1:3ddde7d4af4ff46aebf9c585f0fb4d2a4a452bea + pristine_git_object: d497eb12b1565177425a3b77996c12e540110b31 + docs/components/generationcontentresponse.mdx: + id: 6961bdcaae0b + last_write_checksum: sha1:e4c7d5fcddd8c9ad181766e24a2b3b62c1cd1f5c + pristine_git_object: e214221d00eebf62201405e60c28a40d7f568e57 + docs/components/generationresponse.mdx: + id: b3a5579b9919 + last_write_checksum: sha1:95b41bf6ced0933321650bd2c4413106974766da + pristine_git_object: b876dce8ca019098465106bf05b11c5e0b9536f0 + docs/components/generationresponsedata.mdx: + id: 5c92bc415596 + last_write_checksum: sha1:8cd76e87e6167f3a97841e6de1a4ce4507e7f7de + pristine_git_object: 6dfd6191d083367490287508ccf1e4a239f13139 + docs/components/getbyokkeyresponse.mdx: + id: 451f36940fbd + last_write_checksum: sha1:d5e3f4ef481598c92e4e4842442eeeba8a2627e9 + pristine_git_object: 5730056ada30b50ff129f1da9e021fe69310d5b7 + docs/components/getguardrailresponse.mdx: + id: a5ffd4aa91ea + last_write_checksum: sha1:511fa1f74b06e6f9c8b39ec95dbd976d31daa3fe + pristine_git_object: 7a49600a95781a703124f690ab3440201b3613fe + docs/components/getobservabilitydestinationresponse.mdx: + id: fc89b94d297e + last_write_checksum: sha1:43e6002bcb78df9ee766e6d97c08a6b238f8cae5 + pristine_git_object: efce02e6b84011ecee5c2ccacffb835229febd25 + docs/components/getpresetresponse.mdx: + id: c0c979f8e40b + last_write_checksum: sha1:370381ce62ad520180a59c7659ba0f72a4a1cdd5 + pristine_git_object: 2af502a128b6f8dac61654f17c62e72c56122554 + docs/components/getpresetversionresponse.mdx: + id: ec319a1ab019 + last_write_checksum: sha1:e3378700484df1b9d94e39e1dc1c1bb92490f3cd + pristine_git_object: 6c3040281b154c953a524bed1bc45f1c6a8c4a40 + docs/components/getworkspaceresponse.mdx: + id: c8d0c4683019 + last_write_checksum: sha1:d659e4cebde3a9a14eca14c4a95f1e9e53e46f06 + pristine_git_object: bb16c1fd514e8e4d4f98dfbebd3a29bcdf8ee192 + docs/components/group.mdx: + id: 7a304030a713 + last_write_checksum: sha1:e7ac1a81dba9420ef0ca16b53648812273505a3b + pristine_git_object: 34495da0d0429ae52773d520030bb2b0807bc206 + docs/components/guardrail.mdx: + id: 91791d4c83b6 + last_write_checksum: sha1:071ca3eb0a6f158e4107d7f337c3f7a8e6ac95f8 + pristine_git_object: dc72fbb152e23a7e3903e9aa6479e68baf10f556 + docs/components/guardrailinterval.mdx: + id: ccedea0ab250 + last_write_checksum: sha1:08342a9cceb4f7a5dc0b574a429d46af9d9a13f4 + pristine_git_object: 9e0a058e6a19b68f470eb0938670dff51b47f4b5 + docs/components/ignore.mdx: + id: 2714aa9d51d7 + last_write_checksum: sha1:fd8114687442350261ba507cd41d1f0ebb067928 + pristine_git_object: 8ba131528ef679ebd2880be85b7732ad5a078174 + docs/components/imageconfig.mdx: + id: 455a9f530ea8 + last_write_checksum: sha1:3ec5e8ac11e823479e41115da31aae29d2a1cbd3 + pristine_git_object: c838dbe65d84a9674c7afbf0f7be2d311a255733 + docs/components/imageendpoint.mdx: + id: d7d1514fbcd6 + last_write_checksum: sha1:4219b8a98eb20856cd545f891757ae12d1d52807 + pristine_git_object: 29fa84c13547f8fcd2741bd23b00ab6200bf2959 + docs/components/imagegencallcompletedevent.mdx: + id: 16f72f044ccc + last_write_checksum: sha1:3a9dc797d5ed3b3833321247a556897d9fd8a7e6 + pristine_git_object: 2ca428b13cbf504d9c5cf11df4ab9e5eb656b567 + docs/components/imagegencallcompletedeventtype.mdx: + id: 8c2e366aba77 + last_write_checksum: sha1:1521f78cff4ba35951ca9b6196828f4212591fc5 + pristine_git_object: ca8fa217c3925b7ace5235e44e8945eaeb825b5c + docs/components/imagegencallgeneratingevent.mdx: + id: bebca59d9a4b + last_write_checksum: sha1:93d10d87fa11c25e0fdcb65ff10be85da1c3c9e1 + pristine_git_object: eb3a1af69393089b6d0b406aa194837d241da359 + docs/components/imagegencallgeneratingeventtype.mdx: + id: 813a4ee9ab5c + last_write_checksum: sha1:105fd27a8cb9e92cff896a60006849e623145f9d + pristine_git_object: d89b772038fac7a3a929194836d3cfa1b7eee1e3 + docs/components/imagegencallinprogressevent.mdx: + id: a1fff3931313 + last_write_checksum: sha1:a11d0a6268b3b5caa62e69f4adc9514c4c20d1d9 + pristine_git_object: 72ce2bb45580faad3429dddd82273dba8f741498 + docs/components/imagegencallinprogresseventtype.mdx: + id: d6a5a3193c96 + last_write_checksum: sha1:f530ffad689403173e1e56e74e71f588e1682bfe + pristine_git_object: 865edcac7cebf2e97eca5f67b6f0cc20b9538218 + docs/components/imagegencallpartialimageevent.mdx: + id: 65578365bc26 + last_write_checksum: sha1:c63aaf9e3f9b7939e12e5ecb3a0e088c15874506 + pristine_git_object: a3b82a920807ae051f59a439f91b85e44f9ca17b + docs/components/imagegencallpartialimageeventtype.mdx: + id: 51c2429f9951 + last_write_checksum: sha1:66bbf663f778a1f69c31d04f9c7b1161401b28fe + pristine_git_object: 8eb6786a519936cce87262623156a61e2f645c38 + docs/components/imagegencompletedevent.mdx: + id: 2b1b82b2ff79 + last_write_checksum: sha1:3d4e28577da1d6ee353a8f3bdacbc45e8a1c043a + pristine_git_object: 90ddd67dae34e0fed8c622edf27638d47709f3f7 + docs/components/imagegencompletedeventtype.mdx: + id: dd9998bc9093 + last_write_checksum: sha1:a7d7c52d0a7c5128a40fd9f1524e8b6f372a9061 + pristine_git_object: df5a9a53d2ea20bb548913c902b0bffdf2dc5d15 + docs/components/imagegenerationrequest.mdx: + id: b093cb0f5e81 + last_write_checksum: sha1:68096752052ef76c094d2e49782962a0facad4d8 + pristine_git_object: 1d6369db6d2d6de74df8a6d7366ba627a5389a70 + docs/components/imagegenerationrequestaspectratio.mdx: + id: bda89377f32d + last_write_checksum: sha1:9cc231ee222c01ce471ecff3804a9e5acb8a054f + pristine_git_object: 2116ac419e420262dc3a03b6460ec51c985dd1cf + docs/components/imagegenerationrequestbackground.mdx: + id: cab3c6c6dfc6 + last_write_checksum: sha1:ea6f2fa5f8f63600e2d1a67a784e6a93cf295975 + pristine_git_object: 8501680bcfebabb3af52b518c01f732d18282120 + docs/components/imagegenerationrequestoptions.mdx: + id: 2245ece0aaf8 + last_write_checksum: sha1:ef565300c4aaaacf991f0ecabb2dade678494423 + pristine_git_object: 26f3f1ecd8f4865034e81ce1eca81552d90d70b8 + docs/components/imagegenerationrequestoutputformat.mdx: + id: 380f12bf77bd + last_write_checksum: sha1:afb479dc34118828e988888a8f49e7a5a50a45ab + pristine_git_object: 4901416246fb4e34fc9227d3dc0bbbc08aa717e2 + docs/components/imagegenerationrequestprovider.mdx: + id: 8b592ddbab98 + last_write_checksum: sha1:c67183fc76f6e46530829fc5b85b8c164a4c2557 + pristine_git_object: 51188d0f86b2208ae9dc3d797ce3595961162602 + docs/components/imagegenerationrequestquality.mdx: + id: 7699c7fce91f + last_write_checksum: sha1:e0c8abee1332b182aeb1228b9c7a7f4cec83e99b + pristine_git_object: d6f8b5bec84207d47a6c9e47a5c0ee901c7a555d + docs/components/imagegenerationrequestresolution.mdx: + id: 5dcb01b22e48 + last_write_checksum: sha1:c53e03ff5d6cf292acc6702a75bc8b09db116e46 + pristine_git_object: 4d9385e8f8bebbc916ea152992747b1af5de1519 + docs/components/imagegenerationresponse.mdx: + id: 094e477544e9 + last_write_checksum: sha1:3f998b412d3227450dc500b78c2e227385ddc6d7 + pristine_git_object: b6e0e2c0dadc42fd0fbfaeb9b81f12efb62ff051 + docs/components/imagegenerationresponsedata.mdx: + id: 1afc55d56268 + last_write_checksum: sha1:04d65c9889436bc57b88dc1e9e98765f86d9da29 + pristine_git_object: 78ec1e139b813231ed78ecf7f337cb277180b7a8 + docs/components/imagegenerationservertool.mdx: + id: "299013078656" + last_write_checksum: sha1:663ae715382f7f22890ea81a43ddb3cd0c07cf6b + pristine_git_object: c290753ad894940926de78e89ec89f19f71b7370 + docs/components/imagegenerationservertoolbackground.mdx: + id: d42f0c89a96f + last_write_checksum: sha1:1e06585c90c3fd1fbe38bbf24d2c382cfe5f0738 + pristine_git_object: 208f2a3f3108d1d74d7000b10422a6930437bcec + docs/components/imagegenerationservertoolconfig.mdx: + id: 1a5797a495e3 + last_write_checksum: sha1:e14700acb142c1035cb95a91aedc4d384d7e0b04 + pristine_git_object: 3fc78f9b04fd2624804c6c0f2f13393d72a4130d + docs/components/imagegenerationservertoolconfigunion.mdx: + id: 9c9b67c84754 + last_write_checksum: sha1:dc2781e674923e113c2e73fab18686e8495e1d61 + pristine_git_object: a3b6a156a4bb01df6a3ddb4710504d2428ca0888 + docs/components/imagegenerationservertoolopenrouter.mdx: + id: 589f9a433e7e + last_write_checksum: sha1:eca7b04fe2d9d7fd52a630a74780962cfd16997c + pristine_git_object: 0caf29cf47519cf46480e2e478429a3bfd6ba5ed + docs/components/imagegenerationservertoolopenroutertype.mdx: + id: 37745407ed6d + last_write_checksum: sha1:51da31cdc1f1d5719e1e5a669d8ca3eefe0d4a5c + pristine_git_object: 8151a459a9d8089d64f9236f554c74f764593691 + docs/components/imagegenerationservertooloutputformat.mdx: + id: 330a7fb24966 + last_write_checksum: sha1:980e372ff80d7465f1f5a9333481f98c0f831667 + pristine_git_object: f19e909e7e1b862fe7f31454203f852f72028d1f + docs/components/imagegenerationservertoolquality.mdx: + id: c9904709d879 + last_write_checksum: sha1:a8da01f3476375d3615262068d6a3d2fb2afa854 + pristine_git_object: ab9a21795de0f70adb55361c39b280795f1a583d + docs/components/imagegenerationservertooltype.mdx: + id: 167c286f0c9a + last_write_checksum: sha1:6f2a9208a6ce068f3884933ec47c2118eff64bbf + pristine_git_object: b677030fbb87a091f68f14eceff243afcc8720a3 + docs/components/imagegenerationstatus.mdx: + id: f6faa22834f7 + last_write_checksum: sha1:b576a26c15c796599bda01d656621f3b408a4fbf + pristine_git_object: cabf0cccfa7d7bee9faa823d66650bc395220966 + docs/components/imagegenerationusage.mdx: + id: 0f8faafc5148 + last_write_checksum: sha1:be2ebcd80f3299ec6e38bf8c580ac5e28ba67d85 + pristine_git_object: be9fe8ffa3ea8829bf61cbbdcfd5f1a17aad439d + docs/components/imagegenerationusagecompletiontokensdetails.mdx: + id: 71ecb25e164d + last_write_checksum: sha1:f0843acffd7d7540b07bb384f299557e7309950d + pristine_git_object: 9c56a843cd067e432d9bdd09291e10b3eb4bfbac + docs/components/imagegenerationusageprompttokensdetails.mdx: + id: cb55411b0067 + last_write_checksum: sha1:38b7a082d8c225351211a7b4473291d662ebbb66 + pristine_git_object: a00b1254724080c9b26012b397bffeb4885fb67b + docs/components/imagegenpartialimageevent.mdx: + id: 865cadc17d8c + last_write_checksum: sha1:9d921f6dda0f0aa406ac9589b024211d666e1b9f + pristine_git_object: b081c1148f0cd5e38587f52efcd82402833c5dfe + docs/components/imagegenpartialimageeventtype.mdx: + id: f75641b904db + last_write_checksum: sha1:71f197de28081be5757e4f8ba341f1a3cbed3741 + pristine_git_object: 89e2495f687e323761fe3227c9b66a4a79513d4b + docs/components/imagegenstreamerrorevent.mdx: + id: a2298c4cb0a0 + last_write_checksum: sha1:d53fecc0d40ebd120e370a2d4a83561c044cae32 + pristine_git_object: befd44245772ca68b156b7ca8c06e5da27005bdd + docs/components/imagegenstreamerroreventerror.mdx: + id: 927575e8ae9a + last_write_checksum: sha1:594d680e5d8050e5620238e5ea457d6617a051f6 + pristine_git_object: 8539997c094d61bbe4ccab90d9118dce5ef8ac08 + docs/components/imagegenstreamerroreventtype.mdx: + id: 4aebc0906c32 + last_write_checksum: sha1:cc721e8cb94394423b023926244b51f981a1840e + pristine_git_object: dc1d52997ba58bd62e44c145f3f954ff619d95b9 + docs/components/imagemodelarchitecture.mdx: + id: 605b7d0df8cd + last_write_checksum: sha1:4d1003bc766ebe55e79e172c1f959ccb3b945487 + pristine_git_object: 6842d9d695c103dc85f93fa899cb2646c5c2d62a + docs/components/imagemodelendpointsresponse.mdx: + id: 831c40b45635 + last_write_checksum: sha1:fd1f51f3157ff364b9c61def7734a5321eb66400 + pristine_git_object: 7d3ec9ccf30af829cede2a042052f85219c1381e + docs/components/imagemodellistitem.mdx: + id: 84bc3a818e8c + last_write_checksum: sha1:3ef04fbb970ea8f28af6e954bad4b168a0af7519 + pristine_git_object: 633c99be2493e8546eba3d02539567f1aa90d1cd + docs/components/imagemodelslistresponse.mdx: + id: aa9f0050f23b + last_write_checksum: sha1:c29180c08d47da5238a26b92b9806904f6f88237 + pristine_git_object: b5d695bd126df56bf6b58635855629585b76505b + docs/components/imageoutputmodality.mdx: + id: bbdf54215a95 + last_write_checksum: sha1:10bd9287d10686536a2f0d49bba5fae96b4ec773 + pristine_git_object: 52ec9d78ba530720587f29cd7412daa84de346ac + docs/components/imagepricingentry.mdx: + id: 349c100297ec + last_write_checksum: sha1:a8e0dc272363e755f035d77d5920553b5b6edbd5 + pristine_git_object: 8381e7e712183249bd838da2fc3951756555b167 + docs/components/imagestreamingresponse.mdx: + id: 69e8d792ed0e + last_write_checksum: sha1:8b5ea25f12c5267b8db48e6e7524163c48f09ebd + pristine_git_object: 8aad6cc3403b2d0874a7b591248988f3089d33ad + docs/components/imagestreamingresponsedata.mdx: + id: 4376edf71a13 + last_write_checksum: sha1:5e6ed13b281270c672168c506b36d7e3b16789cf + pristine_git_object: 104002712c11896019f0ef05708333ce6631d4d1 + docs/components/incompletedetails.mdx: + id: d83c063d7285 + last_write_checksum: sha1:b24c3be63176609c48ae9b19582c520ba1683ce7 + pristine_git_object: 7c1490a5fa42012a60428023229ca9980b0602f6 + docs/components/input1.mdx: + id: d94dc7f66d38 + last_write_checksum: sha1:c645ebd86b024620cdbfe93dbeb7f35bb4a36840 + pristine_git_object: 43245bc1076bf43c18fab7c40cd27b05ed837d9e + docs/components/input2.mdx: + id: 09d21fcac31d + last_write_checksum: sha1:d19fb7762524ff6849f39b1cb270a917910b1e70 + pristine_git_object: 5dc5ade73a81471f6af86d4b5e460b05675e175b + docs/components/inputaudio.mdx: + id: b82595fd87c1 + last_write_checksum: sha1:625e374c14ab462de002dd76049c568de4449910 + pristine_git_object: 54aba1db860570e63e2c176705a3e623d6e28bc4 + docs/components/inputaudioinputaudio.mdx: + id: dc49d96d2907 + last_write_checksum: sha1:a89196f4257c89359f4cf2966e2e329c724dc7a6 + pristine_git_object: 29ec9c922a6409e3b6de59222b5d8508b2d059f6 + docs/components/inputaudiotype.mdx: + id: 7a27b29fad43 + last_write_checksum: sha1:71efb65f0fb6eddaa35c30bbf1a3a07af4539591 + pristine_git_object: 9fadef3e1a933c24342705e48452ba7635b8ac48 + docs/components/inputfidelity.mdx: + id: 2e4fee8a959f + last_write_checksum: sha1:f6643baabee131da4bbd8b493f480913c7c292e4 + pristine_git_object: df80baab3b64b8ece9f4922ccbab3623deb41092 + docs/components/inputfile.mdx: + id: 43d8ad1a407c + last_write_checksum: sha1:232a7b31db9ea77c78b203db257bbb9a63aeb3b9 + pristine_git_object: 2e4a15d5c0f08b37ce441c476eeacafa99f8c7a3 + docs/components/inputfiletype.mdx: + id: 3328065140ea + last_write_checksum: sha1:f1075ecf280ac98a16eaa0c3e4624d71c5c3403b + pristine_git_object: 15dd4af786386589c96dae3757bbd0be0c30ff5b + docs/components/inputimage.mdx: + id: 2e7cfa5069fa + last_write_checksum: sha1:3f6d268739884e923eb1f26dc906ff81e00d31c8 + pristine_git_object: 294eb9b52890b2247b6f0bf4cc64b15c503aff27 + docs/components/inputimagedetail.mdx: + id: e0f846215c0f + last_write_checksum: sha1:b3c873c60884089778476b6c88a3d16b5311d312 + pristine_git_object: a20099452d2e669648d342bc04065b06b9cf29d6 + docs/components/inputimagemask.mdx: + id: 033b801659d0 + last_write_checksum: sha1:d932479db9f92bb6fbebe9b61fb8178019fd1ecf + pristine_git_object: 74ce00775a9ca69cbfd16340c9662df451066df0 + docs/components/inputimagetype.mdx: + id: 74ad50005674 + last_write_checksum: sha1:f2fe452162811ec4f2a5325418a75c68d7bf4218 + pristine_git_object: b1eb47e7bce4b12ede72357940618aeed02ff4d7 + docs/components/inputmessageitem.mdx: + id: 24a2f3588676 + last_write_checksum: sha1:2c5512df8a161c5988e76722415cc8894f6fce08 + pristine_git_object: 0a2f6e5d23a03c66e723da5779da9ce9d58e1b19 + docs/components/inputmessageitemcontentinputimage.mdx: + id: a07208b1eddf + last_write_checksum: sha1:dfb1c800e9a26b5b5d289a0b94f7c6bb3c2f5154 + pristine_git_object: d029dec16fd1143fa35cc5383f6bdce9feafcbf6 + docs/components/inputmessageitemcontentunion.mdx: + id: bf1cd325720c + last_write_checksum: sha1:6b1cea3884e1ea54028c1acbf9059b58ee7a27af + pristine_git_object: f64ba6e9c40bc382e06867c10c726dc7c11b7054 + docs/components/inputmessageitemdetail.mdx: + id: 04bd4f9248a9 + last_write_checksum: sha1:c7081ef01efe8819f72d4672df054d730b0a0827 + pristine_git_object: 58974a1e6d82933924b850a802232ea3d5ab0e9f + docs/components/inputmessageitemroledeveloper.mdx: + id: c352e4b2723a + last_write_checksum: sha1:2b4ecd3f6a577ab834327d26e22d341c844fdc2a + pristine_git_object: 32594773a1bd66f8539daff310d049a48fc099c1 + docs/components/inputmessageitemrolesystem.mdx: + id: fea9c8716c78 + last_write_checksum: sha1:8c092af06965fcb6416b93d90299ac0204d91519 + pristine_git_object: 064277e0c54b928dc6c52689bb90b2e9f947f330 + docs/components/inputmessageitemroleunion.mdx: + id: 8578d7afaad8 + last_write_checksum: sha1:9b89bcb1d4cbc808b7f263d127f1c6097717c0d8 + pristine_git_object: ae0a911e1327d4056002657afc9fbdf931bb59e6 + docs/components/inputmessageitemroleuser.mdx: + id: 6d239f9460a2 + last_write_checksum: sha1:4db31d646da1d1a902f3bb876ac22df770689944 + pristine_git_object: 972c913ab860f614e52716d93be41fb4f04be14d + docs/components/inputmessageitemtypeinputimage.mdx: + id: ecf839cab864 + last_write_checksum: sha1:89a28327a08ad2a2c1ca7b6e544d9b172d19073c + pristine_git_object: 03fdcb0b6169f1e6ac65df087d7db7a829f43ec1 + docs/components/inputmessageitemtypemessage.mdx: + id: 970c66796bad + last_write_checksum: sha1:8a4cf12ac00b9578eedf4a7450e54a0a5c2f5b93 + pristine_git_object: 7b8d6b3b7603da2e32b55b4c2a1c1f3ec49c69c1 + docs/components/inputmodality.mdx: + id: 3c25d3e68f37 + last_write_checksum: sha1:da74c88c99fccd4906633e2cfc5d29ddb7297158 + pristine_git_object: 37302a3f153c65e1c6e2596b76dbc47a6a93e1c8 + docs/components/inputreference.mdx: + id: f23a98f7a3b4 + last_write_checksum: sha1:036e6b05d18541d912d739ff3785fc8c99efdb2e + pristine_git_object: 8332cd08018255c15d027281c9c6996df5e08b80 + docs/components/inputschema.mdx: + id: 4cd0b1f16cc2 + last_write_checksum: sha1:c71a5e5f6eea8441960e87e4f94c460757622b9a + pristine_git_object: 0adafb654189b45c31afe6f9f924f94a2649bb6d + docs/components/inputscontent1.mdx: + id: 4d067cae8934 + last_write_checksum: sha1:63fc75a1cd64347bbd378217fca9d0f6f760aba3 + pristine_git_object: 99897ec8c711b6137748752885004a9e4256e6d1 + docs/components/inputscontent2.mdx: + id: 5513e35476b2 + last_write_checksum: sha1:8d160b5993bc22233500428ef257a496557a3e8e + pristine_git_object: 2cfb9792fcba74c7d8baccebb3751ffac9c88ba1 + docs/components/inputsmessage.mdx: + id: 8187d4987ebd + last_write_checksum: sha1:cb5e14bd64190feae73408111aa97509c339da0b + pristine_git_object: 60f7bd2f3f71f659746917b9114c09fb3dbca65a + docs/components/inputsphasecommentary.mdx: + id: 60d1aac83135 + last_write_checksum: sha1:6876e0b49c7c8d92c4f56fcba61b511accf19a6a + pristine_git_object: 1c08b114f0629b742efd6c8f80627b66995dc368 + docs/components/inputsphasefinalanswer.mdx: + id: 434258e8320d + last_write_checksum: sha1:2d451ed92da6f8f62d14055b3264182902a9323a + pristine_git_object: 6dc3c8e07fe4b9849cec18a1ad7f54f7b9d0f374 + docs/components/inputsphaseunion.mdx: + id: 61e40e9bc963 + last_write_checksum: sha1:c210807ab5a55a80d7f7e4c97a29e96a059e2ddb + pristine_git_object: cad0670099b36ac101d02c0370b0f3407fca26a0 + docs/components/inputsreasoning.mdx: + id: 4d87fe5d05cd + last_write_checksum: sha1:fa74176f24f50aba66bf707549a7c803e918f4b4 + pristine_git_object: 60e9a1a60a62f2b6a9be5174e1b3d54c9f9371b1 + docs/components/inputsrole.mdx: + id: 0ab483c40a1b + last_write_checksum: sha1:6466387fa9658cc53b278d915be3cef012597acb + pristine_git_object: e6e13f32b3608cf2ad039d24d2edf81f1bab043e + docs/components/inputsstatuscompleted1.mdx: + id: a3936d0a936b + last_write_checksum: sha1:a8e73d3a431425fc4fb64d027021df1ec099a68e + pristine_git_object: b19646a76344e1235ecf01afe4c171300f4a3973 + docs/components/inputsstatuscompleted2.mdx: + id: 399ab7daaa98 + last_write_checksum: sha1:4ad30bcbf75c488d0d06bc53ad2180241e2dcfbc + pristine_git_object: 6830af4d32bd0fa03b56d3eda4461c424b9f666c + docs/components/inputsstatusincomplete1.mdx: + id: 34ec54b595d4 + last_write_checksum: sha1:418fe3e49374eb2968034dce797827aa2dc95465 + pristine_git_object: a022485c8ad97130b348bc591ff76193697f2b26 + docs/components/inputsstatusincomplete2.mdx: + id: 920c4aeb2120 + last_write_checksum: sha1:86d97c8cf60643ccdf0679cee62662bb28e2b1fe + pristine_git_object: c84f517be1ca9a39a8355704047e998fe901156f + docs/components/inputsstatusinprogress1.mdx: + id: 430457359ed3 + last_write_checksum: sha1:89088e3738df0a43e5755c7537afccbba09659bf + pristine_git_object: 4f9a03c20be2f67f4fa292b043ff1da55b890de6 + docs/components/inputsstatusinprogress2.mdx: + id: 99e4678f2b15 + last_write_checksum: sha1:78dee2253b302817fb7e12690d62cbee88150e00 + pristine_git_object: ded7acc1e4be1b1d5c76f075ff63d67fa0193003 + docs/components/inputsstatusunion1.mdx: + id: a4b286a62fdb + last_write_checksum: sha1:c4cce32f5602c845350afbdc57ba0fa2dfbaea4d + pristine_git_object: 7b59ecdf92d6f50776a017b01423c2c23b5d1b1f + docs/components/inputsstatusunion2.mdx: + id: f9e28f254633 + last_write_checksum: sha1:40d474f03742879c23e62efba171f6c8fc760e74 + pristine_git_object: c82be8e044c5c29fad07a5f9ac8d4da5948c5b74 + docs/components/inputstypemessage.mdx: + id: 2ba71e113d79 + last_write_checksum: sha1:5050ad339d38af566534203897b6fa3380ed236b + pristine_git_object: 1a8200c4b2f181c10a3aee86a2739891e8c980b6 + docs/components/inputstypereasoning.mdx: + id: fee733f8d7f0 + last_write_checksum: sha1:f8726b71b8ada6d2474047e526c0f978e08448dd + pristine_git_object: a585778e1df15723a50d3d9535c27b9e4be7d405 + docs/components/inputsunion.mdx: + id: "011522549903" + last_write_checksum: sha1:33dbbf16f18d97ff625cf548a92c0ac478a7fe91 + pristine_git_object: 33aee92c61bf7ab9beded4e193f50a2c08462378 + docs/components/inputsunion1.mdx: + id: c216609d21ce + last_write_checksum: sha1:2b16bfaccb9d6901c140145e6caafaaa476e6446 + pristine_git_object: de84f4c9dd8d18b4568051a2a83f35e052a26f14 + docs/components/inputtext.mdx: + id: c8a97322a50a + last_write_checksum: sha1:5462885a683c2ca29551281c9fcf3ad1bceb0634 + pristine_git_object: 5ebcb8365d9d55c2032d5d4739ceeb30831d1ebb + docs/components/inputtexttype.mdx: + id: 91f958925357 + last_write_checksum: sha1:42a8d9a6d3506e02f6024592691292b7ac255075 + pristine_git_object: 18baf9c9090c0696427dfebf69ed7e12a8fd77af + docs/components/inputtokensdetails.mdx: + id: 1b569c720e5c + last_write_checksum: sha1:f6b5b4912a20dfea2515994f9656374d3fc56676 + pristine_git_object: c58b1d023f8ebca70e803c0128b0ade367b4ae35 + docs/components/inputunion.mdx: + id: 94f68c6e9582 + last_write_checksum: sha1:85c3b78897569c4572f3fc43f6b1143c293b452d + pristine_git_object: 53081e479fffa519e65d4903e895381506bf688e + docs/components/inputvideo.mdx: + id: 174b24b8f614 + last_write_checksum: sha1:a00cacecd2fc9e7679a18e99f8070ee4497947fd + pristine_git_object: a303045f5dcaca6830fbaf648b44a0c048603ab8 + docs/components/inputvideotype.mdx: + id: ec9d78e69f7d + last_write_checksum: sha1:baaddfd1bc97d6bc885fcf33c436b5dfefff8d29 + pristine_git_object: 31cfd35391d548fbb94f6df1303e76b057b6c369 + docs/components/instructtype.mdx: + id: 4e1ceba5a654 + last_write_checksum: sha1:2efe0463c8d0ed63159bbcc8cb8c21743800b88e + pristine_git_object: e3e71d16be9294f68ca671f76dbcc8b6d8ecc749 + docs/components/internalserverresponseerrordata.mdx: + id: 9a443dea63c5 + last_write_checksum: sha1:6abe1098c9866188738c24b9d07fb1440c831a24 + pristine_git_object: 4db529f2f7d510aa971abeac76232281546a38ca + docs/components/itemreferenceitem.mdx: + id: e6a76e3841f0 + last_write_checksum: sha1:715bc829e2cc02c156eb742a88145113fbd7449c + pristine_git_object: 5d91c205adfe99da0e355985afe808ac8e66d918 + docs/components/itemreferenceitemtype.mdx: + id: 4a97a0028d93 + last_write_checksum: sha1:a80dda1fb6cc098102c643649ac1fac2c9df4bb9 + pristine_git_object: 74c61e5f750e2df770862017b6b406065398ca9e + docs/components/keep.mdx: + id: c3da64331e76 + last_write_checksum: sha1:f58b4b0416619717f16b37897c0cfe19bdac2362 + pristine_git_object: 4a4da75aff6c8fcea3c3d2269c99e0a9c62ad973 + docs/components/keepall.mdx: + id: e8d72870a08b + last_write_checksum: sha1:9864f94e04a0411d1073741e9fe31d7fe3c21d80 + pristine_git_object: 8f65526d93915457236227842ae50be031fd0e0c + docs/components/keepenum.mdx: + id: 3ee3fcc5fe79 + last_write_checksum: sha1:043573e286bc900925be92e1ebe00a14167d4063 + pristine_git_object: 7790630b5cfb76dbe3527e71a23f809dc21bfe36 + docs/components/keeptype.mdx: + id: 381355e7a9b0 + last_write_checksum: sha1:757294dcf376127b5cb8ef8224b848695c9b2c7f + pristine_git_object: 99cde727d78d8a158b1d809de1841e083507f13a + docs/components/keyassignment.mdx: + id: 6ebc78938625 + last_write_checksum: sha1:cc00184ca2e96cb429788698d7be2111a2ea5fad + pristine_git_object: 3c18ed0fb80fbc8cfd45667af06cdecde6a907d5 + docs/components/legacychatcontentvideo.mdx: + id: fd222b8b9445 + last_write_checksum: sha1:c77f3069be68b3a8fe5757bf31626d73606de778 + pristine_git_object: f1d4b3d542cadec3caabd2fbb99f8769221e37ee + docs/components/legacychatcontentvideotype.mdx: + id: 6ed2500f1a33 + last_write_checksum: sha1:191077107def4be932273d87f6e81a2b3aefc412 + pristine_git_object: 63991d9ba8aedd15e34bdc73c8f99fbdcda2d037 + docs/components/legacywebsearchservertool.mdx: + id: 0b47ff5dd0c4 + last_write_checksum: sha1:ef83a0b10997f5e4b739804c64100360e6dc2f32 + pristine_git_object: e966af5dc1c57d2628f6392e923e7cf8b9f29188 + docs/components/legacywebsearchservertooltype.mdx: + id: 192fa7358f3b + last_write_checksum: sha1:c82facbab1f9b4f53e06a6e3986b886f2a9b9b00 + pristine_git_object: 3bb4205e59ddb7d332e8d900afd2ee5aaa120dc0 + docs/components/listbyokkeysresponse.mdx: + id: be41921e1cce + last_write_checksum: sha1:cc039aaf6927478fd3d3db9eb6a1f84c51e9caa4 + pristine_git_object: 4e7fce4c206a1d335298f04fc0a77a0c98c00b5c + docs/components/listendpointsresponse.mdx: + id: 1aeb90d09e63 + last_write_checksum: sha1:f1191182b486926d410b238e95fc17b0f0c205bd + pristine_git_object: 2687145f938c790c9ea9601232818b2114cd0db8 + docs/components/listguardrailsresponse.mdx: + id: ba740952e77b + last_write_checksum: sha1:5a75d264da7e1074ccb5529bf06dce343db5a8da + pristine_git_object: b62bb9a80c43de00da33184f8917adf248d45959 + docs/components/listkeyassignmentsresponse.mdx: + id: a7c5b3a2f509 + last_write_checksum: sha1:251ccf1d69aec53e91a8ad243516d8d22d4b71a7 + pristine_git_object: c6806c4ab2664c34e7e33ca1bebfe62cce73569d + docs/components/listmemberassignmentsresponse.mdx: + id: 54da8b0a1cbc + last_write_checksum: sha1:1a24b49586e33b6ff2bb38efff99a46aa9e9bb79 + pristine_git_object: 9e72b130eb39b37b04d20b3aabefe6dd3b99c23e + docs/components/listobservabilitydestinationsresponse.mdx: + id: cd603cde4c15 + last_write_checksum: sha1:27e13153336bab53e6a0e4ec56c12b2cd881ef9a + pristine_git_object: 912c6caf6f1687c0201521fa3b65c64492c6fcb1 + docs/components/listpresetsresponse.mdx: + id: a2774fdc050a + last_write_checksum: sha1:1797db57ed0b6daab7da6ee61004899f4c01004d + pristine_git_object: da04cab090a9e71771b5f2a82148e279d978dd46 + docs/components/listpresetversionsresponse.mdx: + id: a6eb4fad37a7 + last_write_checksum: sha1:b6e1c0dacac17485fceedc43c19f73684c950149 + pristine_git_object: 768df799d61dcc27510f108d123d4182e8f9eba3 + docs/components/listworkspacebudgetsresponse.mdx: + id: be60b3aa222d + last_write_checksum: sha1:5e5e015f7957686bce403d8f176e4f7f9eba9b47 + pristine_git_object: 27bb746a556432a1d423634c0d2f55e384de7859 + docs/components/listworkspacesresponse.mdx: + id: cddf2b6dd8bf + last_write_checksum: sha1:e5f4cc01853d9fa8feb77140d976d64ebe5b1d45 + pristine_git_object: b78013a42a1ecdd045a22b5166db12fc1fc2c762 + docs/components/localshellcallitem.mdx: + id: 4fd75c6167cb + last_write_checksum: sha1:79dfdbd525136f87bc1f7d07d55c3abfffb19eee + pristine_git_object: c3ce8fe8268ade1ac51cdf8958666a8aebeea8fd + docs/components/localshellcallitemaction.mdx: + id: 7b1de6b70edc + last_write_checksum: sha1:f8b2f71517adc098efbe61d8dd78045b92cd8054 + pristine_git_object: 584d53921fdc4463e44d80a75a316aa710f1e901 + docs/components/localshellcalloutputitem.mdx: + id: 785248d5a428 + last_write_checksum: sha1:81eed95472bc4d2f87e3c28c519e82fb75e8eebf + pristine_git_object: 99fa6e2a4948f502bb295af937883a3f2c18c205 + docs/components/localshellcalloutputitemstatus.mdx: + id: 35259ee549fe + last_write_checksum: sha1:bcb4e74975c086a2267475ae2954631951feaad7 + pristine_git_object: 35fda260302c26b059ca748fc7804d9feb7742b7 + docs/components/localshellcalloutputitemtype.mdx: + id: 01c195fe37c8 + last_write_checksum: sha1:8aaab04cfc173280814aee66b0eb176cb162765c + pristine_git_object: e67622cfe09af3ad183090b653716b4aed97a9b2 + docs/components/logic.mdx: + id: b28a174aa390 + last_write_checksum: sha1:ed602f5db1f575de70d02186c857340dc491af43 + pristine_git_object: e9b7b000e766329851f0c1fc0a4805e74b8dc6b2 + docs/components/logprob.mdx: + id: c2e49761789d + last_write_checksum: sha1:7461a6ed2ebd7d111f3a6c2ed9051310643a6962 + pristine_git_object: 6345da5c5881bd02c31a53afacce924bab7dede4 + docs/components/maxprice.mdx: + id: 4c021ec1bf65 + last_write_checksum: sha1:3d6adde1002316d1880a95f5015889f052eb217a + pristine_git_object: e1892e259e3cb8de57bf1582554878549c8b9261 + docs/components/mcpapprovalrequestitem.mdx: + id: a77961ecf93d + last_write_checksum: sha1:3adf3b4a8fb19ba488420fefa26334fd9efa6246 + pristine_git_object: d02d66656b563e91723e125ccb9a8dc7d3db3920 + docs/components/mcpapprovalrequestitemtype.mdx: + id: b4ef5028ec47 + last_write_checksum: sha1:eb72d54550ff1d97a305a53d1dc7dcb14af2aa1b + pristine_git_object: dd72c2a9e90f13d33d80faf97fa1cf312d25ab08 + docs/components/mcpapprovalresponseitem.mdx: + id: 49c472b51b96 + last_write_checksum: sha1:a713479e5aace467a6c93d6aac12fde5c2c848db + pristine_git_object: d67c1e405001960842d04e3fd31a83c0f4a9783b + docs/components/mcpapprovalresponseitemtype.mdx: + id: e1ada0a7d6f5 + last_write_checksum: sha1:7ac26ee40276a37c28fcb7616399f5ec13635d46 + pristine_git_object: 4bbaed26edb62e2c671b09348e5fe5f0e8ea4a33 + docs/components/mcpcallitem.mdx: + id: 6b694279da31 + last_write_checksum: sha1:cd9329d7ca20c966b29f7e3a544d41465e1cce52 + pristine_git_object: a025e7da660bc760c72964335bd600371edbf7e6 + docs/components/mcpcallitemtype.mdx: + id: ac24e6fa49a8 + last_write_checksum: sha1:c66cd7093df7ec0deac9c479b14cd3dadac11d47 + pristine_git_object: 8e6027553c3cadd56957a3a5e946351b959bdd6c + docs/components/mcplisttoolsitem.mdx: + id: 3340f4b5fcbf + last_write_checksum: sha1:512a4933478a87149eee50bf8839cb3dc8c39f30 + pristine_git_object: decba2cc8470f7751ac025ad9cc9cf195243a7c1 + docs/components/mcplisttoolsitemtool.mdx: + id: eaafe6825d42 + last_write_checksum: sha1:781dc6f0f15681d6a521fc6882d736f3cbfb2794 + pristine_git_object: d73292f539ff9baed94cbafa56b0e401b1cce838 + docs/components/mcplisttoolsitemtype.mdx: + id: f6a66bf29b6a + last_write_checksum: sha1:d6b36cad9e7fe3020168dda96352fb637d19bd35 + pristine_git_object: 633df50c25056c04f81ffa9500857ff3b9e5852b + docs/components/mcpservertool.mdx: + id: af4fb76dbf07 + last_write_checksum: sha1:0232a086c6b2ce8d1d3419420faf6a20baa4936d + pristine_git_object: 70f05198182e71eb71ef986c49acea65031c003c + docs/components/mcpservertooltype.mdx: + id: a3ffc7c06762 + last_write_checksum: sha1:66ee790a2feff588d942a104eaccd58ef4b79259 + pristine_git_object: b86c9a1a7b6c3a3f3d51533aee21b27bbc7af8c2 + docs/components/memberassignment.mdx: + id: b91e68dbf87c + last_write_checksum: sha1:38512558186ae584eb7de3954873284b1f781cd6 + pristine_git_object: 589bcb61c72b35c62b935d72e3cdfa533166d3d5 + docs/components/memorylimit.mdx: + id: 9265ef3d0f1a + last_write_checksum: sha1:19580835f051bd4a97d1d272d3a6dbc882e016f2 + pristine_git_object: 11421f055f1c2312710b637f72378d63e9df1d8b + docs/components/messagesadvisortoolresultblock.mdx: + id: 5a07a5b7964a + last_write_checksum: sha1:7c07658f4384e1ca5ad30f33da19cdb1093c9dc4 + pristine_git_object: ae6b8d91163f69ebb9495697002029e8ac117780 + docs/components/messagesadvisortoolresultblocktype.mdx: + id: 3a0dbdde87f0 + last_write_checksum: sha1:157db05989f1ae8fe2c02064998a74cb55420fe6 + pristine_git_object: e15e5c95e01572a3fc7d59ff16dc4bcc5d695447 + docs/components/messagesfallbackparam.mdx: + id: d7e026fed5f2 + last_write_checksum: sha1:e2d6138202f6f55f4a17478bff2a13a3e6001cac + pristine_git_object: acb608428580d878f911d7c166c4651a58073753 + docs/components/messagesmessageparam.mdx: + id: 816cdd6ac883 + last_write_checksum: sha1:1632139846752d09a080a715525b127deb43e2fa + pristine_git_object: 698d1f4bb05f92e5bddebc948f04bb806c2411f1 + docs/components/messagesmessageparamcontentunion1.mdx: + id: 811f79bf91b8 + last_write_checksum: sha1:72740fa5031fb64e07428df970b3c41feaf8daf2 + pristine_git_object: 3c0a29ada0324939822807c2fc3007b3ea178688 + docs/components/messagesmessageparamcontentunion2.mdx: + id: 34ef0b8ae9b7 + last_write_checksum: sha1:b4f7b49df6f60b741ea71b13a71f0bc967b03323 + pristine_git_object: f50498dbfd0163b053e37e0b0256ab6bb43336e8 + docs/components/messagesmessageparamcontentunion3.mdx: + id: aa4353a5c3e9 + last_write_checksum: sha1:a0db5da340e7095ef3cd31bc88b3aedd139677bf + pristine_git_object: aacfcabc1908dd56355bd5059c8d896a7f5266fd + docs/components/messagesmessageparamcontentunion4.mdx: + id: 0cbf68d37ca2 + last_write_checksum: sha1:78cc4e1944f81a93cbe863fd533981ec1d838f71 + pristine_git_object: 41beca7be323b219a39dbc8383341b43f7416f80 + docs/components/messagesmessageparamcontentunion5.mdx: + id: 103a9b1bc479 + last_write_checksum: sha1:8082efc20a4cb6d09750ac74b4db5a4f224d7032 + pristine_git_object: f7bb2cc53c8b844fe5f28f7cfa6c864f94994ddd + docs/components/messagesmessageparamrole.mdx: + id: cb1721b92cd6 + last_write_checksum: sha1:3f5c7431c6635c667b17e7b176b7dd4ba6f6777d + pristine_git_object: ff70af302614222cc836cb8347c73b071ef7d4ff + docs/components/messagesmessageparamtypecompaction.mdx: + id: 5194bb4cd379 + last_write_checksum: sha1:817f941770a847e3683c28fcb2a6237321bd2561 + pristine_git_object: 371458c5cbce70c0ff25e7da7703feeef8482d34 + docs/components/messagesoutputconfig.mdx: + id: 4f36aa4862b1 + last_write_checksum: sha1:f5ce07d1d0cccb54cd23587265a28960a918b46d + pristine_git_object: b5ce8e91138ac3cacc1955b32a3e5775c96ecd79 + docs/components/messagesoutputconfigeffort.mdx: + id: 4eea6d60aba7 + last_write_checksum: sha1:bee3c5c3dd1beac6eeee074f484dd2ba32e1a20b + pristine_git_object: 5de3f3fc91b9d1c301c8b5d01ebd80acabf1dfc0 + docs/components/messagesoutputconfigformat.mdx: + id: 6295b9d1e1c3 + last_write_checksum: sha1:83631a2624668b151b07bd84a485206eb52d2005 + pristine_git_object: fdec2e474dceaf742a71a9042724c94720e115e5 + docs/components/messagesoutputconfigtypejsonschema.mdx: + id: fbb3784021b7 + last_write_checksum: sha1:ac721bbfc3aeacc74104fa841e3f57376c4799d8 + pristine_git_object: cff8f3938a8bd5699d1111a6b1a926518d868da5 + docs/components/messagesrequest.mdx: + id: 762dd6b894c8 + last_write_checksum: sha1:8e06b3369eb4dee0ab5fee504e444cb5be1f2f3c + pristine_git_object: 2b25d420887ade7549b1848592fb24ed622b54f1 + docs/components/messagesrequestmetadata.mdx: + id: facdcaeb2576 + last_write_checksum: sha1:42bf112bc4f6d259c589906fd5f67c5342ab4c2d + pristine_git_object: fb2a55630750a5c10fe509403c6d95cbfa8373c5 + docs/components/messagesrequestplugin.mdx: + id: 45918e4b5c26 + last_write_checksum: sha1:955d6b458b4cc3b30b3a3a20e07d832ce72f1365 + pristine_git_object: eaf4fe4fcbe67dbaacdde671b7774b00e0e31d42 + docs/components/messagesrequesttool.mdx: + id: f9dc5aede7ad + last_write_checksum: sha1:4b0df6f8636e4882112549b4f036f9b54d99439e + pristine_git_object: e6fae8228c3d685d6cfe815e3c24fa53fd642ff7 + docs/components/messagesrequesttoolunion.mdx: + id: cb1be4df3cf7 + last_write_checksum: sha1:f3afd12d5ecb4ceb5a4209dd03594abb8dcd626a + pristine_git_object: b24e866b9c3842956daae6c28351e0643c29fc49 + docs/components/metadatalevel.mdx: + id: f564e5e9a7d3 + last_write_checksum: sha1:e51f09243a346926c426f53b07865f5ed145511d + pristine_git_object: 6025f743b09271172bd6bc22801cc51d73513980 + docs/components/method.mdx: + id: 52eb604d9844 + last_write_checksum: sha1:a1671e63404dd1f194cf0704138919c10a9ca6c6 + pristine_git_object: 90145e7861da0ef5f30900bff09539fe2e1bdeb8 + docs/components/modality.mdx: + id: f40fccd34eb7 + last_write_checksum: sha1:bdebebe3627c62469a2911d40a29e75f6e508f47 + pristine_git_object: e1d39ed87a123b73a5e54104a9408a3645c07d11 + docs/components/mode.mdx: + id: 2359278fefff + last_write_checksum: sha1:83de45c66339ab29177c96f4092ff606bb0147cc + pristine_git_object: 4efff0eb410ea2e84c9d86e24fed19b438b4184d + docs/components/modeauto.mdx: + id: 5a492d91b5a7 + last_write_checksum: sha1:bf621d185f90a6822618a2866a389aef3c999e26 + pristine_git_object: 432f9b632b00dbc6e7cd8a87908df962923bf3d6 + docs/components/model.mdx: + id: ee338c3cef0a + last_write_checksum: sha1:0e670e45c767644f2445d870b05242b3bac4e7e0 + pristine_git_object: e8757cbafebf799b6f162a2b9d7a2aff95c67e4d + docs/components/modelarchitecture.mdx: + id: fe77e4816f6a + last_write_checksum: sha1:dcf6b88330ab80e643cb7e9b962489a85783002b + pristine_git_object: 3035c9bac4573c0b1a70f9b463ba1a0ce8cf36e2 + docs/components/modelarchitectureinstructtype.mdx: + id: 4064f8606ef4 + last_write_checksum: sha1:172862da64039b2e61ed05b24fbc4c0e219ef9b5 + pristine_git_object: c8d02132963a140b2d71c982b09bec0eed30d042 + docs/components/modelbenchmarks.mdx: + id: a56406a8820b + last_write_checksum: sha1:556248629a58731cd01f96ad5972f9d09c00e8af + pristine_git_object: f9d4890de1167d8a1fbef33478ab3de57b5396ab + docs/components/modelenum.mdx: + id: 354b0a829212 + last_write_checksum: sha1:52c95ff24eb1c1f0a797e99f1915a218f9f22758 + pristine_git_object: 815fb46e5e07168841ed484059450e5e9cdf3a49 + docs/components/modelgroup.mdx: + id: 8f246164d34c + last_write_checksum: sha1:2954097c66c1dd56fa0440a501630275a6cfebea + pristine_git_object: f5c67b141d1a889f0c71f5bb9cb92e52ee3fbc79 + docs/components/modellinks.mdx: + id: 2b4568c3a642 + last_write_checksum: sha1:3f09c6e29fd5719c3a46899a7bf0cf4772697411 + pristine_git_object: 2a62599883ac616cd2bd5f66f6a4cdb51daa9989 + docs/components/modelreasoning.mdx: + id: ddcdfc7d47fc + last_write_checksum: sha1:5519baaeab6eac63b4f1eaa04805c7b464bd1b96 + pristine_git_object: b8d23642d12c1497fd62d94afd9c1f32f4e3b59d + docs/components/modelresponse.mdx: + id: 5a9393d9fc35 + last_write_checksum: sha1:cdf21cf9e88de5290bd144894643d03af7a9957e + pristine_git_object: 9ced330616524c84e80c01cad9a5c3edb1f01b10 + docs/components/modelscountresponse.mdx: + id: 74d50ecbad3f + last_write_checksum: sha1:a4678447a082cfce7da588eef61ddb5e3b46c066 + pristine_git_object: 104a32fd78e3e526a700ee572b3fd0d38142397a + docs/components/modelscountresponsedata.mdx: + id: c0ff644852aa + last_write_checksum: sha1:d522384cb0b2d238f71e90a39db682637addb8e0 + pristine_git_object: 9e1b9145d0352d47192a8427975702517923ef66 + docs/components/modelslistresponse.mdx: + id: 1880eae9f45e + last_write_checksum: sha1:660d60c5fb6e99883437e7e30da3586cbf35b57e + pristine_git_object: 140ec11b65ad7ee9bd3b3fd7933d21a49af3561e + docs/components/moderation.mdx: + id: d145b88b8b67 + last_write_checksum: sha1:ed7cedc44d3043ef40007d3135774d168b30683d + pristine_git_object: 74bc3fbb631e6f8a7d1f37012bb7e591cf73c21e + docs/components/moderationplugin.mdx: + id: ea978b62d906 + last_write_checksum: sha1:73ebbb6a87ad97692684328e2f0ec2320b132314 + pristine_git_object: 0fd2af65ae189483a1ef823b92f1f35a30210ae2 + docs/components/moderationpluginid.mdx: + id: 29c8c434a766 + last_write_checksum: sha1:4a235ce1a8d4ff74997eff7724353ac59e0b16d9 + pristine_git_object: 0d006f3bad01e739b9f879fa80b370896823103c + docs/components/moderequired.mdx: + id: 2eca4c9b202f + last_write_checksum: sha1:e56b20273681e2213908a0fd644312bdba567501 + pristine_git_object: 5ccf31affe032c4dd663eb63d34d9cabf2948397 + docs/components/multimodalmedia.mdx: + id: 3e5915b35809 + last_write_checksum: sha1:cb80fcefe313a5ad2f1c9a0d10ede281de94d2e1 + pristine_git_object: 9b621c1cce740dc43907bb986816e1eec5dd1996 + docs/components/nameadvisor.mdx: + id: 6898c8bf3d7c + last_write_checksum: sha1:6f709e45a864c33983c27251b70f2b6e4b35ec4b + pristine_git_object: e7df77cc45a770938d6cc6ecd1458a17abbd166a + docs/components/namebash.mdx: + id: bd0cc59f80b0 + last_write_checksum: sha1:63ea02d5ce209d316aefd1628ad03e92c90df033 + pristine_git_object: d6efdde4f36aafc14fa58dcc6b8e50f0d1284dbe + docs/components/namestrreplaceeditor.mdx: + id: 736fbbfc3973 + last_write_checksum: sha1:862e18830457a1d4b98062ea58b73a2c9d08131f + pristine_git_object: 5dea596eef6bebddd80300cc2dc8eeb641506fee + docs/components/namewebsearch1.mdx: + id: 6e77fbfdffac + last_write_checksum: sha1:cbbddb1724aff471233aa2e2eccffc6568a504c9 + pristine_git_object: 41ced4e2fff47aefbc3b51e473b84868a3335241 + docs/components/namewebsearch2.mdx: + id: fb5e85bb77da + last_write_checksum: sha1:50190d6fb52c7d673ef87f34e39c620460cf932b + pristine_git_object: f6803b05fdd0332c58b0d07e2aa819de4a8087c5 + docs/components/never.mdx: + id: 7c0a5248748d + last_write_checksum: sha1:aea21cab9eaa32c13bc278bfd7dbb1ec41127091 + pristine_git_object: 37ce7d3651f9c1bf5b33165c28e08db630e95bcf + docs/components/notfoundresponseerrordata.mdx: + id: 7c59a9c21347 + last_write_checksum: sha1:132aaa6966fc55237f9a4d1926a761b6dfbeec85 + pristine_git_object: 1fed737141362b74726a09d7500ea75bc6c9048b + docs/components/observabilityarizedestination.mdx: + id: 8ab5c92ec9b5 + last_write_checksum: sha1:a61629804fb1a6417abc56ebffab80ce4f957715 + pristine_git_object: 9eefceee787aa10f465bb15c1cd4c62ec163a5ee + docs/components/observabilityarizedestinationconfig.mdx: + id: efaf5bfd1406 + last_write_checksum: sha1:1425f56ed1f045643b3597c10f7c827969b4d2b2 + pristine_git_object: 9a4f66bee6ff5872e8b8c8991894b986b5b3c3b3 + docs/components/observabilityarizedestinationtype.mdx: + id: 33afdc84a045 + last_write_checksum: sha1:f40c4dfa0473b9e429014e4d60c152f7f392b5d6 + pristine_git_object: 8fb879fb1be791e16ed3c2d1340983ff3e48aca7 + docs/components/observabilitybraintrustdestination.mdx: + id: d4fb2aa6ff1b + last_write_checksum: sha1:5b6aad4cb8f7a08f089a2ddbb85501f28b1c820c + pristine_git_object: bd21dcc2f8d4c5295cda66d505db9a4127de3be2 + docs/components/observabilitybraintrustdestinationconfig.mdx: + id: 03abfca35bdc + last_write_checksum: sha1:c0ec75b1f1d28d62abe12c9ccff5d32bb98d8ad6 + pristine_git_object: 56fcb623259ad1ff1f18717a0c60f61c14f28724 + docs/components/observabilitybraintrustdestinationtype.mdx: + id: 4c2d5128f76e + last_write_checksum: sha1:d2c5b1b6ec8561e09c30a82add623d93153e155d + pristine_git_object: 2686027052fc88669dbe1f261baacbdeed41a895 + docs/components/observabilityclickhousedestination.mdx: + id: 22672c72a47f + last_write_checksum: sha1:390cf60319cb199a49f9029044eb5cc4164ef19c + pristine_git_object: 1791dbf32bc671a4e17725e304de6d78da499387 + docs/components/observabilityclickhousedestinationconfig.mdx: + id: 31969c4f79e6 + last_write_checksum: sha1:581b45aab6174219694069db5d2dd187aa3c081f + pristine_git_object: 8135b0f9c2d554388911c676dda6267320a94a4d + docs/components/observabilityclickhousedestinationtype.mdx: + id: ec4a466d4fb8 + last_write_checksum: sha1:ac8b55b98f1cad8f07f10bca277e6a0c8f40c1a0 + pristine_git_object: c450839c8b4d42ad1d2d075a948136c9dc9ac853 + docs/components/observabilitydatadogdestination.mdx: + id: 9069b48e8b03 + last_write_checksum: sha1:f0c2e0a4742245f258aa9783f63d4246dae4a889 + pristine_git_object: c3a06316261b38619ce3e1fc677e8c7bcc87f209 + docs/components/observabilitydatadogdestinationconfig.mdx: + id: 5d9352581ce2 + last_write_checksum: sha1:41095359e9daf0344c5117c01b1f7fb4e97d2301 + pristine_git_object: 56d22797c321911afa0f133fa6db8857d216aac1 + docs/components/observabilitydatadogdestinationtype.mdx: + id: 0136bc2eef34 + last_write_checksum: sha1:b1fdf5fc623076f9b5347d50743091f763fe3675 + pristine_git_object: 872d16f1872c13732547fd416ec0093564931cd1 + docs/components/observabilitydestination.mdx: + id: 2b5b371b62ed + last_write_checksum: sha1:eb15fe342436bb49fe24b4884c5989564149716f + pristine_git_object: 3fcbba14f1e9d35a5b5f2aac22d4b4827a6ae149 + docs/components/observabilityfilterrulesconfig.mdx: + id: 7693db9b58d8 + last_write_checksum: sha1:e0ebf1b44bd0174e38fafee60ed17eca07c1606c + pristine_git_object: 46330428534ffced625fbd3b3a3b2da5f1a156d1 + docs/components/observabilityfilterrulesconfigvalue.mdx: + id: 7c5b26ae20b1 + last_write_checksum: sha1:f8558110d2cff9d5e3ac036fc7befacb12eaf105 + pristine_git_object: 6b335f615687720e4590e73578de2d4e9096b8b2 + docs/components/observabilitygrafanadestination.mdx: + id: 933526705b96 + last_write_checksum: sha1:75f67fe00561d8a7f163554ccec092903698df55 + pristine_git_object: f0c1cfd903a76d5ab3a5e399877db18ddf7262d0 + docs/components/observabilitygrafanadestinationconfig.mdx: + id: 6dd26838a8ed + last_write_checksum: sha1:5ecf3222dc5ab0e308e7e43fa0eea88e0c00902a + pristine_git_object: 34d561c251e395579d822517eb66c16ea58e40c1 + docs/components/observabilitygrafanadestinationtype.mdx: + id: 7d9da767f675 + last_write_checksum: sha1:5f8dd4cf514d4ac44f6c9213ccafc8ea56a7d256 + pristine_git_object: b3a87a6bd089fdda6ef0b1b82ac9a7fd7f7b8686 + docs/components/observabilitylangfusedestination.mdx: + id: a937f11e1a22 + last_write_checksum: sha1:585cafae4074fa2aa7cdd0adeb76d8246fbd78f1 + pristine_git_object: 5364c6337d550cd2c5ddaf5e7be43ef244bb2624 + docs/components/observabilitylangfusedestinationconfig.mdx: + id: eb6d8b96b9db + last_write_checksum: sha1:a272574f6faa764dbf291efe1852d5a4680c903b + pristine_git_object: cabadb292a975b6fa035902add980fb9725e4e34 + docs/components/observabilitylangfusedestinationtype.mdx: + id: 4a764f5ce59f + last_write_checksum: sha1:e1b0a4f27ff27d996b5660a8feaa418503b31f31 + pristine_git_object: 0a0ef90a75966cb1e6a01cdabca55e2854a2e65e + docs/components/observabilitylangsmithdestination.mdx: + id: 3c019b2baadd + last_write_checksum: sha1:e864a5c5d762a558a1540594e309410d06a5c298 + pristine_git_object: 20e1a3eccc78372ed5a0e4eac6395da47abd6a3a + docs/components/observabilitylangsmithdestinationconfig.mdx: + id: e8ba506f0bb6 + last_write_checksum: sha1:9c000b6149bfe5f00602042e1a3230a72ae989eb + pristine_git_object: 0a1f76e5a65f850d24249758904e2ef2f891ce2a + docs/components/observabilitylangsmithdestinationtype.mdx: + id: c4fb36b04de9 + last_write_checksum: sha1:f8e3fffc9c6845bd3823b60fa68dd0056714a949 + pristine_git_object: 4cc128c9afe496eb949236875b79455d15cc1365 + docs/components/observabilitynewrelicdestination.mdx: + id: 51f825f7492d + last_write_checksum: sha1:efca650011f54525bddbead3fb3e4e0fff8d4147 + pristine_git_object: b04a7f805638297f076ae79db9daf7e534d385f7 + docs/components/observabilitynewrelicdestinationconfig.mdx: + id: 1bfa0e65f66e + last_write_checksum: sha1:bb861670f63dcfdd47f92ffe04d26ce4020208be + pristine_git_object: eb8542dcaec0ea0522b2f457175b4ab5802bf5e5 + docs/components/observabilitynewrelicdestinationtype.mdx: + id: 6f4ae194c250 + last_write_checksum: sha1:2c09a75277f2dc29052fb4a8b729cc90bfb319f5 + pristine_git_object: 8f74ec6c80b673784e6663faced904afed9e73d7 + docs/components/observabilityopikdestination.mdx: + id: f79bf0519b07 + last_write_checksum: sha1:81c620cb22af1764b9fe47a1ee912b8c53979128 + pristine_git_object: 82ab82d0849595cda0ba3fcdb0d47baadcc7d071 + docs/components/observabilityopikdestinationconfig.mdx: + id: a29272c1315e + last_write_checksum: sha1:afe9c9dab6b21c068e5629c4823b09b1ce076086 + pristine_git_object: ce71d1f16aaa639d7d96426af48dc2af87d89faf + docs/components/observabilityopikdestinationtype.mdx: + id: 0bceecd35ff8 + last_write_checksum: sha1:c7308d1a0354e5c42e3f1c39bf800118eabffccb + pristine_git_object: f7689374cb3fa75bfb790b12a737b10941fc9e57 + docs/components/observabilityotelcollectordestination.mdx: + id: fbefa5ba48da + last_write_checksum: sha1:baae534f030f73723a2fdeb02967bd2f5ec64144 + pristine_git_object: 43f3a5129313ccdba4d6515ab4dc5aa24f3bb481 + docs/components/observabilityotelcollectordestinationconfig.mdx: + id: 204fa4b1365b + last_write_checksum: sha1:21ffeb7874cfe3cf90ee0521f3cc21a23b2c9f4b + pristine_git_object: c0e46e241cc2b7fe0d0e9bbe911c62eab30ee5a6 + docs/components/observabilityotelcollectordestinationtype.mdx: + id: 130ee89d27f9 + last_write_checksum: sha1:bd099fbb43d7f0170267758de0467d4593194bbb + pristine_git_object: 04d51fca83de0cd45e5341d5eafef87997644e08 + docs/components/observabilityposthogdestination.mdx: + id: 602ebbf459aa + last_write_checksum: sha1:14f91996137492259dbc21338f98c30c47f8a493 + pristine_git_object: e6b8ee1b2e21f6210f13ec59b3346a3fc06f897f + docs/components/observabilityposthogdestinationconfig.mdx: + id: f70e6155227e + last_write_checksum: sha1:ae7c844f4507e8fc571f10e8f23ebae6f4ef5ad9 + pristine_git_object: 2c0c48deeb694c89cafd831c48a2030cb10fadb7 + docs/components/observabilityposthogdestinationtype.mdx: + id: 5209ca48adc6 + last_write_checksum: sha1:dba3e9b074cec77f77da6f7da0e534c218790a81 + pristine_git_object: 15d5f4b204b6f11123e889347b9bca9d4c1bf774 + docs/components/observabilityrampdestination.mdx: + id: d282b8093450 + last_write_checksum: sha1:4b8c40ae8dc8c60523ec372f737eabaacd411500 + pristine_git_object: 78218365803f4ccd7050713a6909e04c87c81534 + docs/components/observabilityrampdestinationconfig.mdx: + id: 508afecc801d + last_write_checksum: sha1:0303440d4c32b655e5eae672157859c3f5a3d842 + pristine_git_object: 809d417c91a79d4b8ebff6841a30eca77d0b3699 + docs/components/observabilityrampdestinationtype.mdx: + id: 2d02006eccdd + last_write_checksum: sha1:af701535002f70b8876ecb56eb496eb59a7d3720 + pristine_git_object: c344370154af3e48ab34d83bceeec80c163e8b4e + docs/components/observabilitys3destination.mdx: + id: fcfdc787f494 + last_write_checksum: sha1:60ec25f2f2466fc343e530c9023410e274d66f16 + pristine_git_object: 14ec127b3a65635ef1bfbbf0bc2d91f64ff80629 + docs/components/observabilitys3destinationconfig.mdx: + id: 040367f19dfe + last_write_checksum: sha1:063638b494568601ae5043fa24f40cbac6a1b641 + pristine_git_object: 3974209559c2b3f15d0a3108b9849815a3dd97bb + docs/components/observabilitys3destinationtype.mdx: + id: 8279c13af28f + last_write_checksum: sha1:10cea4da23cb74039112d0a531eee503e1a760df + pristine_git_object: 0ef939a6bbce82c2610a94f31a126bc62e32b382 + docs/components/observabilitysentrydestination.mdx: + id: 9a5494b91636 + last_write_checksum: sha1:73be2892119ac49f3aaa43724cf7845cd0160d85 + pristine_git_object: 6f37f7dcbd8d5784787e1538c78504a59a84603b + docs/components/observabilitysentrydestinationconfig.mdx: + id: 4b59b787f138 + last_write_checksum: sha1:77957ffe6671ee13d885296e609bca1f6e6bfef9 + pristine_git_object: 99f775de08a04b932c0457f787e5f8762255edf1 + docs/components/observabilitysentrydestinationtype.mdx: + id: d672633feb56 + last_write_checksum: sha1:097a02f803a87398ea07aa4bab307624ea8f7487 + pristine_git_object: b4948a38975913b3ad4cd50b494566af44854935 + docs/components/observabilitysnowflakedestination.mdx: + id: 50eb5d73c736 + last_write_checksum: sha1:179d196d7ed16d2dee94590b38bd856155d8e9d0 + pristine_git_object: 0cc7f73d1ded5ca0e6ae32ce6b9f673633fc1ccf + docs/components/observabilitysnowflakedestinationconfig.mdx: + id: 61daa1944898 + last_write_checksum: sha1:aba368fd00883f348c77fcee080414ec433a6dfe + pristine_git_object: 5ad320cb4111244bdfffc9e1080c29f10b00fc8a + docs/components/observabilitysnowflakedestinationtype.mdx: + id: ce8232e3dcd7 + last_write_checksum: sha1:1f91ffa3e55e4570d5eda35028be5c61c30cb44e + pristine_git_object: c3cc873227fc32fff3a1aeddfe7852856057f095 + docs/components/observabilityweavedestination.mdx: + id: 16c45cebb51d + last_write_checksum: sha1:cf3779fed0094cd4b9c6ad15c9b4a24e44ac443f + pristine_git_object: 4f9d6b16f6e7f7ad54de5755e14b559205cd103a + docs/components/observabilityweavedestinationconfig.mdx: + id: 27ab1f4389f1 + last_write_checksum: sha1:26f0010d5e544c9856f09b63136ff4584cc3443f + pristine_git_object: 89007854843754a046a22d92bb06ce667a2f6c5c + docs/components/observabilityweavedestinationtype.mdx: + id: 7549df35fdb8 + last_write_checksum: sha1:10c26524f121a3197d9f7914a2383ec6545a0cce + pristine_git_object: dcaffb2070e7203e06a6747111b6df950465b5ff + docs/components/observabilitywebhookdestination.mdx: + id: ac114793a610 + last_write_checksum: sha1:43788ee2fb614098a1c7f6b122c89b46393fa50d + pristine_git_object: 6be7531c12764bacdb38857b0a2b6d2a412880b0 + docs/components/observabilitywebhookdestinationconfig.mdx: + id: 3f56a0517583 + last_write_checksum: sha1:50a935198381531354a979579be97e2f61f1ad46 + pristine_git_object: 8dab0b1a2c58a1cc0d7b1d37d6290d7b5d67473a + docs/components/observabilitywebhookdestinationtype.mdx: + id: 35262d81b0a1 + last_write_checksum: sha1:53220ed66cf059d9f06df81b7f5bb0f2d87f5283 + pristine_git_object: bf3c27b8d2da352bd80bb18179159839e69b9b0a + docs/components/only.mdx: + id: cee5f91a1c3b + last_write_checksum: sha1:abccbc4844ea73ff3641b1aa2a98bdfaebf8d216 + pristine_git_object: cc284e22005d61c156fac73624aee6ead3c1e9eb + docs/components/openairesponsecustomtoolcall.mdx: + id: 090c07768006 + last_write_checksum: sha1:34b7e423654fb097e3420b2fa3ef010f15821796 + pristine_git_object: 6d9191222ade0008f12d5aec84360968df2283ab + docs/components/openairesponsecustomtoolcalloutput.mdx: + id: 9e53ff4a7904 + last_write_checksum: sha1:9314c7cf5a9117b1c26201d8ee75dd28a1caf880 + pristine_git_object: a5539655b48f3cb259c5bde189e5719821a6a8d2 + docs/components/openairesponsecustomtoolcalloutputoutput1.mdx: + id: 2c8d666e28f0 + last_write_checksum: sha1:b39bf98bd1fce83020b1fbddfccdd32c6b21bf70 + pristine_git_object: ef5467e6b1ea32dc02f2a69106e66be692c2049c + docs/components/openairesponsecustomtoolcalloutputoutput2.mdx: + id: adbfe07a7048 + last_write_checksum: sha1:c080081a6787bafdcf2fe30317d5f7fbd2feb5aa + pristine_git_object: 74b5365606767e924efb43bfe6adfb94fe769ade + docs/components/openairesponsecustomtoolcalloutputtype.mdx: + id: c7081c9d38f7 + last_write_checksum: sha1:a1b8f7d6c6cf82d1beb1c022823c99db9d9f7590 + pristine_git_object: 6ccce45954ff2fbeaba4e96fd392d1f8b2178fe8 + docs/components/openairesponsecustomtoolcalltype.mdx: + id: b5607ef7db1e + last_write_checksum: sha1:60b1a11a88b0226ca8fbd12dc405c10c06bf7182 + pristine_git_object: 8c38bc0f267a36c61128b1a5d747a56ff4aa6564 + docs/components/openairesponsefunctiontoolcall.mdx: + id: 8e50b2457c3b + last_write_checksum: sha1:050ae2fecc3831e37a7e830e0eeab1043fdbabf2 + pristine_git_object: efdbbbce90ebc1aa26129d87a523551e531949a3 + docs/components/openairesponsefunctiontoolcalloutput.mdx: + id: f1e4ed07af7a + last_write_checksum: sha1:b5a9a215a1276803c32408bc06352858385c571f + pristine_git_object: 0ccfaaf0986e90e5b3218a00a8328534e69f67eb + docs/components/openairesponsefunctiontoolcalloutputoutput1.mdx: + id: 6bbcb4b25cfb + last_write_checksum: sha1:faf30716bb6661c1cc97642fa68ae5c8dc100c62 + pristine_git_object: b2fb9df7287f57f751ffc8ff884cce42a9136cfd + docs/components/openairesponsefunctiontoolcalloutputoutput2.mdx: + id: a30dc783a954 + last_write_checksum: sha1:dcb728bab175422b8a381bcdea9facad4434f5f3 + pristine_git_object: 3b498b5916e80bbd8284d6ad7f7a608b066f044c + docs/components/openairesponsefunctiontoolcalloutputstatus.mdx: + id: 1f929cd48053 + last_write_checksum: sha1:9a7a2baa176ec8490c559d967b3342319bbc76ad + pristine_git_object: d5e7af39351d80dce8b586ea4295be6af05d8bda + docs/components/openairesponsefunctiontoolcalloutputtype.mdx: + id: af38067ccadd + last_write_checksum: sha1:b189125d1756e152441fced6a22160169b8bb1e5 + pristine_git_object: 16e5b2059e4c6c58c603aaba63cf085af0966e7a + docs/components/openairesponsefunctiontoolcalltype.mdx: + id: aad74378a805 + last_write_checksum: sha1:427d28b49c2627514b7839467cde6f2ef761559d + pristine_git_object: f0e32f3d580a3d58d76c5971a51620355b1a8874 + docs/components/openairesponseinputmessageitem.mdx: + id: 4365eb14c0af + last_write_checksum: sha1:c80742f8d9e9b733f5a5560fe93db78c3e5d8aa6 + pristine_git_object: 8670ec0c1ceba7acbe3a9aab9700dace6b2dc0db + docs/components/openairesponseinputmessageitemcontent.mdx: + id: 42f22eb9ea08 + last_write_checksum: sha1:79813cc4c1045a8002ccd39448632f15097ca043 + pristine_git_object: 560a4f512ffe385e7862cabd3beeef56742deb9e + docs/components/openairesponseinputmessageitemroledeveloper.mdx: + id: 354a5e52097a + last_write_checksum: sha1:df668fd6f62d07fdfa87a4a9ec091e177b1aadb1 + pristine_git_object: 8470f14769e2574983e46722ca09111aa9d7eaed + docs/components/openairesponseinputmessageitemrolesystem.mdx: + id: 3cf7fcd91c53 + last_write_checksum: sha1:e0075d99727448ecdbcd86c07d612232a3445d41 + pristine_git_object: a09674ed7c710927000e69334a30072d6a515a94 + docs/components/openairesponseinputmessageitemroleunion.mdx: + id: 18c70a57ec16 + last_write_checksum: sha1:d53194b341651e2b89d3f84fffee18768411d89e + pristine_git_object: 6551653278a2ad5c84c991e1ad5c7764fbac35c2 + docs/components/openairesponseinputmessageitemroleuser.mdx: + id: 0f616589fd7e + last_write_checksum: sha1:e544596d6526f4fa95e9bdf085d374bbb80442ce + pristine_git_object: 23b5d7ea73a47770ad90851e5de00cd6c5c8c362 + docs/components/openairesponseinputmessageitemtype.mdx: + id: 2de72066c7ac + last_write_checksum: sha1:de56f2cd143ce17f4dbab03191250964c57ae371 + pristine_git_object: 27637b7529d59adb678f2a5e790f06912e519fe2 + docs/components/openairesponsesannotation.mdx: + id: a2b85cb38acd + last_write_checksum: sha1:81a5fb1461fd6fc3847e1c23081ba5766010a58c + pristine_git_object: d5de3b268a5fe11da4c319484275c11172f73b37 + docs/components/openairesponsesrefusalcontent.mdx: + id: 6b2bd400f001 + last_write_checksum: sha1:bdcc7cb44b94cfbbfc080297137e85ce3c650f62 + pristine_git_object: c687dab4615ca48c1db2fbfdb0418b579f804494 + docs/components/openairesponsesrefusalcontenttype.mdx: + id: 4d70b1eca59c + last_write_checksum: sha1:24556b36406657a9c815a71882a6aa057650f499 + pristine_git_object: c1d90a539a7b10cba3b8c7ec8ebbf7071bf6e6c4 + docs/components/openairesponsesresponsestatus.mdx: + id: 22623069aa36 + last_write_checksum: sha1:0c44abd5fec0c6702799553d524a995e33bf5f50 + pristine_git_object: c833b87ba94877d704dc8764116d279a29471a0c + docs/components/openairesponsestoolchoice.mdx: + id: 4156ab7daa19 + last_write_checksum: sha1:ecc7b89750ba054e1e4c408ac5e86a9dd0a73e43 + pristine_git_object: 71090a1f7247835c51b672ae4057187fc5ec8473 + docs/components/openairesponsestoolchoiceapplypatch.mdx: + id: dbdb13f3a8d0 + last_write_checksum: sha1:cf61eed7aecc03d05eca9629b8ee3656372daacf + pristine_git_object: de012d5c168b0763a2b2fff9a00d5d34b845dcf5 + docs/components/openairesponsestoolchoiceauto.mdx: + id: 30f3f3e19044 + last_write_checksum: sha1:b8ccdc3327f5a8998a357cc99ee2c339afbddd3a + pristine_git_object: b91f4fb1f892322ddbbadda1cedb8c669a89e79d + docs/components/openairesponsestoolchoicefunction.mdx: + id: 12f0d5d04d1f + last_write_checksum: sha1:a4428b66e82235bd239e51d723d6d534678e2639 + pristine_git_object: e08dad52c7a851de97687c60e94fa1dd80a35b88 + docs/components/openairesponsestoolchoicenone.mdx: + id: 3636f7575483 + last_write_checksum: sha1:d124bdea6201f63f886d83bd8dea283e2f6fe37c + pristine_git_object: 8b1df8053f6c68c0ceb69341d1e27e9b0cae899b + docs/components/openairesponsestoolchoicerequired.mdx: + id: 3ad4c6f93639 + last_write_checksum: sha1:59981ac32511436b058facc5d2830abef9834c2b + pristine_git_object: e7f185a45631dc2623b62d02833d3d661c533748 + docs/components/openairesponsestoolchoiceshell.mdx: + id: 780b1faefcfa + last_write_checksum: sha1:c414237e6ca1e7dcb7c86f379fbe6796e1594313 + pristine_git_object: b0451b76a479800d966fac7ab31919bac84245ff + docs/components/openairesponsestoolchoicetypeapplypatch.mdx: + id: 15c65c41c459 + last_write_checksum: sha1:cc9a95b93a8e3f9c68ef62bde32e56221d019099 + pristine_git_object: cc32b5a198eecbb840ee342600e15b72d22a7a07 + docs/components/openairesponsestoolchoicetypefunction.mdx: + id: 7af73ce96576 + last_write_checksum: sha1:a6e4b52675ccb209efa9c2f7d8ac56748940faef + pristine_git_object: 39952ef36e891c0c2adfe5b61ad7547ac21d2d07 + docs/components/openairesponsestoolchoicetypeshell.mdx: + id: d8fb253885a3 + last_write_checksum: sha1:554d64c515a9d71da41978f7c7bbf1b5e245cb7f + pristine_git_object: 9c0bbd8453c45e8aff72bbd4d93998614d26bfde + docs/components/openairesponsestoolchoicetypewebsearchpreview.mdx: + id: 7734884d242c + last_write_checksum: sha1:9ab03b162a73deb6d0214b4eabefdc736c4c96ce + pristine_git_object: febd1eda5293e1caec2eb186c518d26630a1b767 + docs/components/openairesponsestoolchoicetypewebsearchpreview20250311.mdx: + id: bb894c25d22a + last_write_checksum: sha1:d0ea85ce8fe2ee96eab288091e3c5df1da2f60f6 + pristine_git_object: c23dcea302163ffa59370b90019d208072d619f5 + docs/components/openairesponsestoolchoiceunion.mdx: + id: 830a36f3265c + last_write_checksum: sha1:a3fcdfc71e4ae46473d290ed6ad09f540ffdac79 + pristine_git_object: d44bdba389cd431c9407de6ad9cb1fe5776b8601 + docs/components/openairesponsestruncation.mdx: + id: 2d9d105e2a92 + last_write_checksum: sha1:cfa41ac9ec20131a32ebcc5bf1831fc1173eec09 + pristine_git_object: 58f86b3f5daa1fa9712ca436ea350513e187eb61 + docs/components/openresponsescreatedevent.mdx: + id: a6e32fa959a4 + last_write_checksum: sha1:3ff3e7a7861f3f0d80af0d5f9024a5a41d7e1429 + pristine_git_object: a0433fe2d1c665e7748367f0a2bde9f36aa32bdf + docs/components/openresponsescreatedeventtype.mdx: + id: 178d703388d2 + last_write_checksum: sha1:4b1d854a6d9a642ceb77be2e384bfb760366c9fc + pristine_git_object: 0bde4b814329ff9bb3459c75dcc4d1ca22a700da + docs/components/openresponsesinprogressevent.mdx: + id: a1e40ec742ea + last_write_checksum: sha1:98062e87795a2f78762b3e4d018cdd8ced693e4d + pristine_git_object: a2e79d407cd69493f33bcc1027f6a84d617036c9 + docs/components/openresponsesinprogresseventtype.mdx: + id: 8f2fa117be62 + last_write_checksum: sha1:b998f6837eb1f042c8446182684284641190b32f + pristine_git_object: 09effe2d3fe45536c8b0aa0f23c02ce19b15f62c + docs/components/openresponsesresult.mdx: + id: d0fed85674d2 + last_write_checksum: sha1:2ffbf6a72d81a6bc5585fe5b71c9e57a89694118 + pristine_git_object: b987eca82266acf1fac32040d53f940a69ab9766 + docs/components/openresponsesresultobject.mdx: + id: 93b1fcc70132 + last_write_checksum: sha1:7579ee1bb9e0d20c55cf54a8ca2ccbc950d2921d + pristine_git_object: 53ba3e6a9b38896d18e2aae4bf7c6f90e3e1fac9 + docs/components/openresponsesresulttoolfunction.mdx: + id: c9aad3ae216e + last_write_checksum: sha1:38309bc74e68d78d62aecf694a729c3e500bc343 + pristine_git_object: f0fbd6bca8f844a1d6d6a8a00bd0c781197adba0 + docs/components/openresponsesresulttoolunion.mdx: + id: d43b7e93f04a + last_write_checksum: sha1:33440dfcc702449e15a78d9e196c6641249c60e3 + pristine_git_object: 13ed401ca350f15de4d6dcd4f0ab49de644daf76 + docs/components/openresponsesresulttype.mdx: + id: 59f334d128a7 + last_write_checksum: sha1:c74e9c086d4911223620a11dcd45c5eb9b9160fb + pristine_git_object: 6ef2ae2c930d1279df1f2f68348c8bf3583c2a7c + docs/components/openroutermetadata.mdx: + id: 355be2e7788c + last_write_checksum: sha1:c5ed476aab215597dd1af37fe1fd7e99a0ac6c88 + pristine_git_object: 812ccb2b90388d191c2866eb3c2ed0572d0181e9 + docs/components/openrouterwebsearchservertool.mdx: + id: a553315e2543 + last_write_checksum: sha1:9d85c2945ba2713fcbe49bec28307372bb8535e0 + pristine_git_object: 3842a52e2465ab9d6441e37fd22470fb222cd5ae + docs/components/openrouterwebsearchservertooltype.mdx: + id: a844dbfb5f6b + last_write_checksum: sha1:f2f3e3e75da8d42443fc5617b0d9ea7ff674a8e2 + pristine_git_object: 6f2a785c1fad869fe4c9c32e3e10e280ecf3b660 + docs/components/operator.mdx: + id: f88a0ae3ee7d + last_write_checksum: sha1:196dfc00e44fa232c6e4f0f496f265a163ffe66b + pristine_git_object: b4df5fb4757522576e8452d88f22499cee204278 + docs/components/order.mdx: + id: ae1a6aab00d6 + last_write_checksum: sha1:efc73cd83c8f4e0095ba6901df6dc95349b822a2 + pristine_git_object: edc1ffcd263a4fffa0d4d5b7da1e2c0315a61cb8 + docs/components/outcome.mdx: + id: dc555505ef36 + last_write_checksum: sha1:5e99185f9d49f3f404ca4e54ef84d0cdbf31546c + pristine_git_object: 98279af1570063f5a0124fa4f575ed58b215c517 + docs/components/outcomeexit.mdx: + id: 760b3faffdf7 + last_write_checksum: sha1:6fbd92f244db4a275245f12d405faff18a18bc01 + pristine_git_object: dd9bda681ed90bb67dca90944f04ed6e6711b3e6 + docs/components/outcometimeout.mdx: + id: 4ee5cced97d5 + last_write_checksum: sha1:e81aa94e0d5d2fd30894499ac6b1d33cb329427d + pristine_git_object: 6fe515d1498ffc5e6a0abf4a4ca3f7984af90573 + docs/components/outputadvisorservertoolitem.mdx: + id: cd80a2ee4d39 + last_write_checksum: sha1:75846501525d089fbf5f2d3beb0da6fe795c7eda + pristine_git_object: e89c7434f9bdbc8d3b449a713687575233b3fbaa + docs/components/outputadvisorservertoolitemtype.mdx: + id: 639f864d0dd2 + last_write_checksum: sha1:232e7b5cf8544bb070f171dc376148207a5d41f4 + pristine_git_object: 2d7fd488eea8ab3c8dd7e104f6efdbcffea8cdd8 + docs/components/outputapplypatchcallitem.mdx: + id: 6d1131aeede5 + last_write_checksum: sha1:061da7f8450fad4465b25261959e5d05ff7c5fbc + pristine_git_object: 2a02c6e3de7b30bc48d3a3b8c21444c8b191c04e + docs/components/outputapplypatchcallitemtype.mdx: + id: 013cc1fd41d1 + last_write_checksum: sha1:26a8f3d9f9e85b60a7dd317304f08abacf2da20b + pristine_git_object: 17a39e683c5db9dd5934de2baf6c76af44cb6a58 + docs/components/outputapplypatchservertoolitem.mdx: + id: c73fb5b689f4 + last_write_checksum: sha1:9237c757ba0ebd1735b00fbb362d0f2ed22d0e63 + pristine_git_object: b27640e16c2d47f021d1ad704079b50b70ce4c5a + docs/components/outputapplypatchservertoolitemtype.mdx: + id: 8819a4128df7 + last_write_checksum: sha1:cbfca03c03b33ab4a6d7e382664b14a8fe7eaa4c + pristine_git_object: ad79a325e74efc6cc08ad7ffc794cecd0e7eaa15 + docs/components/outputbashservertoolitem.mdx: + id: c17c44c991b5 + last_write_checksum: sha1:7d04159d7f2b51c2df50eddd58362d71dc0ec3a5 + pristine_git_object: c039dfa53c36c853fbbb8bff1b6a5bb02be00f84 + docs/components/outputbashservertoolitemtype.mdx: + id: 584dd317e6ab + last_write_checksum: sha1:558e35bae6619f511da32758b7642bc6f000c95e + pristine_git_object: 801e62ba5508c0ca6915d95de6c39fd51c0209fc + docs/components/outputbrowseruseservertoolitem.mdx: + id: f95c82cbb289 + last_write_checksum: sha1:e0ebc47c8389fff3978ad2a175e24bffb988592f + pristine_git_object: d8f75dc43208f263752a7f4c053c626ce41215ee + docs/components/outputbrowseruseservertoolitemtype.mdx: + id: 5c02fa1fcdec + last_write_checksum: sha1:f536cc69540b92c242a44de74a8fa979b62a65e8 + pristine_git_object: 4e1ac848efae9e52849329f14d2b9ff2f14933bd + docs/components/outputcodeinterpretercallitem.mdx: + id: 167ec714574b + last_write_checksum: sha1:5e16eae1eac9685d1e71bf3802129068a4f92fae + pristine_git_object: 08f28041e498e979b7bd81d87644030a038b5e14 + docs/components/outputcodeinterpretercallitemoutputunion.mdx: + id: 8e4dfeaae6c9 + last_write_checksum: sha1:87d64144954ae95d6e5bfc5ce8746e49aabe1fc3 + pristine_git_object: 02e6c2ca8d7c3ae31c6489585f651b0029648bbe + docs/components/outputcodeinterpretercallitemtypeimage.mdx: + id: 03ff0b62333c + last_write_checksum: sha1:c23cbcaa9dcf7dc9c38819be58b9a117722e0821 + pristine_git_object: c901280c878c987f81b6f0ad29747baac0039e69 + docs/components/outputcodeinterpreterservertoolitem.mdx: + id: 4d2814954b22 + last_write_checksum: sha1:f2e2fb1a45947bf9456ec890932769bf954e1cc1 + pristine_git_object: 3b97b10ffad9a5af50db59784f06eca20ea1c9fd + docs/components/outputcodeinterpreterservertoolitemtype.mdx: + id: cf833580c013 + last_write_checksum: sha1:00e55bce1f414f5d2f8e8bed708c748df40e4967 + pristine_git_object: a9b4162f9f3bf8ffb3d12cbc74bdbf88fa5f9ddc + docs/components/outputcomputercallitem.mdx: + id: 0ebf7b2288b9 + last_write_checksum: sha1:8411096c03dd62829511efbdffb52a92eedc9d06 + pristine_git_object: 7d0669ae4dc6f0dac3cb540360c8bbb42d7fdc09 + docs/components/outputcomputercallitemstatus.mdx: + id: 6d6e5a1c9d51 + last_write_checksum: sha1:253fdb05674ebb78103ab548e331b9ed4b5a8cd1 + pristine_git_object: 7d7e680bf97191a328fc92d45e24bc0dda1315fa + docs/components/outputcomputercallitemtype.mdx: + id: 16a00a59b73d + last_write_checksum: sha1:4dc674f3415e21faecc6f0f7f6ad5d6f5bd81b78 + pristine_git_object: 072ec0fda99640b7b6e38beba759a4c61bf5d0b8 + docs/components/outputcustomtoolcallitem.mdx: + id: 60c140410cf2 + last_write_checksum: sha1:7b6ff8fcb310c3d33c5860e3682d1536ce5dc829 + pristine_git_object: 6cc163b664a79eb72ce15ad37b4cd1bf7713543f + docs/components/outputcustomtoolcallitemtype.mdx: + id: 35808b916d0f + last_write_checksum: sha1:2774efac476d4f040b9137cbaf4fc6a63e53662a + pristine_git_object: 9bf4d0f91880fb15d6156859b8ac2afd5df9594e + docs/components/outputdatetimeitem.mdx: + id: 470853c662d9 + last_write_checksum: sha1:16024ed7fffacfd86308b168c7c3a0c8c85be750 + pristine_git_object: c698d7e6556b968190e9ba7e122aa23ed648d2e5 + docs/components/outputdatetimeitemtype.mdx: + id: a8219ea3cbbe + last_write_checksum: sha1:7eb09027b473e745dee4f4fb533c6e3cc2ed7321 + pristine_git_object: 62bc0076806110e866d63bf477349fe9753bdf3e + docs/components/outputfilesearchcallitem.mdx: + id: 16f4409e4148 + last_write_checksum: sha1:cea281505d546eae43bb93dca7c8856a24a5764f + pristine_git_object: 9b9ef44453543dde30bc432c7c37d379fcf5b01d + docs/components/outputfilesearchcallitemtype.mdx: + id: 5d80dfbea99b + last_write_checksum: sha1:c770d198b631c697bf97ba4b8de924a93506ec78 + pristine_git_object: 9109c9a400c4c2fec02314b55fdb536b138f3c1e + docs/components/outputfilesearchservertoolitem.mdx: + id: 033e5c89b639 + last_write_checksum: sha1:131563e37809f33e606858b99314df33bb0da8ad + pristine_git_object: 2095688caff936ea5c9a3e0e099d4cbcdccb7dce + docs/components/outputfilesearchservertoolitemtype.mdx: + id: 7b77e3515472 + last_write_checksum: sha1:f50a8d6620bbf95e43dd8b6c221ebe8f01b1cd32 + pristine_git_object: fe499bd21f3539752b0091907a0b3dd5c55b5d76 + docs/components/outputfunctioncallitem.mdx: + id: 1d62f9e67c2f + last_write_checksum: sha1:6642104468672708caccef16346f824b51264670 + pristine_git_object: 86a1cd0d85064d5befa583ca69d39412683c90e4 + docs/components/outputfunctioncallitemstatuscompleted.mdx: + id: 9adee8d9044e + last_write_checksum: sha1:dc89eadf1d22b60e9724132c025b902c515bba72 + pristine_git_object: ec84cfaf3cb52650dc675862275d4948f63ec0df + docs/components/outputfunctioncallitemstatusincomplete.mdx: + id: 01bfc266b11b + last_write_checksum: sha1:eea0a7f6f085d850e712525a3ca4f2bec9ee6534 + pristine_git_object: b95a0a0344aebbe74164b379ad3cf1b8cede02f6 + docs/components/outputfunctioncallitemstatusinprogress.mdx: + id: 49699892993a + last_write_checksum: sha1:0cbeee31dcfa098a1278f5f44c7fc2cb46ede977 + pristine_git_object: 7204f29b0ca4e9ffb0164b19d6394c4de6362889 + docs/components/outputfunctioncallitemstatusunion.mdx: + id: 032eaf121751 + last_write_checksum: sha1:d1133a2a0258047c769ca9c6bce709afda014df9 + pristine_git_object: d4cb118508c4931e8dc3389cd9d02b98c71c7ea5 + docs/components/outputfunctioncallitemtype.mdx: + id: cbb88dd0dc5a + last_write_checksum: sha1:e2ae4e411c58ca859cecc745f78da50f3c824aca + pristine_git_object: 700af387aa2f0f827ef4775f69fbb3900b075899 + docs/components/outputfusionservertoolitem.mdx: + id: bc7c73cc3100 + last_write_checksum: sha1:53565a2c163e9aacdb4f786ef71fc65063b60137 + pristine_git_object: 996340e483ed52e0faaa69bb38aded9bcaa6d5b2 + docs/components/outputfusionservertoolitemtype.mdx: + id: d5337e29a21f + last_write_checksum: sha1:133446222202e08ffceaa5944185842c21078830 + pristine_git_object: 5b050d8db3ad7195c2c6bbc93638be95edbb1624 + docs/components/outputimage.mdx: + id: a358b7233cd2 + last_write_checksum: sha1:029463bda2ddf51bd399d5ca95c2747ac1140c14 + pristine_git_object: a7b8246372bebf6dac66833399060cd6566c109e + docs/components/outputimagegenerationcallitem.mdx: + id: bd80e7125993 + last_write_checksum: sha1:1e70465d2ec2dcbc8a355b65c99a00e64452ee8f + pristine_git_object: d9926094c502c781907800ed9de915196be95cd9 + docs/components/outputimagegenerationcallitemtype.mdx: + id: a0eaa69b4531 + last_write_checksum: sha1:830ce2c76ce7eba0bd72dcf058e0694ebeca9eac + pristine_git_object: bb97b950d2d81aae3c143d43ad562f820ed49e65 + docs/components/outputimagegenerationservertoolitem.mdx: + id: 0084a32d49a2 + last_write_checksum: sha1:5f3d551b663ccce0e8aad9a484fdfec018ae9bb1 + pristine_git_object: 516d44bad56ed22d001d4459deb96b3565d3e8e4 + docs/components/outputimagegenerationservertoolitemtype.mdx: + id: 7a776acb2987 + last_write_checksum: sha1:eead9d15e523ad237d238d4070708fee85716ed7 + pristine_git_object: 6296f5a2e802e66093a3a39cec4c5c198286f33a + docs/components/outputitemimagegenerationcall.mdx: + id: 67a6cf2d566a + last_write_checksum: sha1:cc606d3aa9217b3c52cd733b0848234ec34bef05 + pristine_git_object: a9c86ddb3504b3e3714ffe4babb5a9c5a6870b25 + docs/components/outputitemimagegenerationcalltype.mdx: + id: ecd36a8eb320 + last_write_checksum: sha1:f24559d5f041bbad338effc43db33d69e0f02336 + pristine_git_object: 7e12c2ee3da68966a14d19207b95699c7b57d1e5 + docs/components/outputitems.mdx: + id: 876e956be23e + last_write_checksum: sha1:870898ed6e0c717f62876dcefe2dc3126528ea1a + pristine_git_object: e85451a343f8047639bc179fa4dbd70bce22f3b0 + docs/components/outputlogs.mdx: + id: 89bf8506e4fe + last_write_checksum: sha1:8b2efe9f4117b7b3d44eb16813e8ed88fc6d1ebc + pristine_git_object: e6eb732cb2cf1a73385b3d6111a1e1b810eca30e + docs/components/outputmcpservertoolitem.mdx: + id: 78e33fe9943f + last_write_checksum: sha1:b64c87e227cf51037bc59aca8fb82b2ed0dd2f4c + pristine_git_object: d11d1e77640fc72fee5b2bd122a527032f0d7c8d + docs/components/outputmcpservertoolitemtype.mdx: + id: 73eee5101369 + last_write_checksum: sha1:dbd204ff01694d6ecab08faae07aeef5a78cf2a9 + pristine_git_object: b98202d9a57066e51e0a8cffc48f9e909708915c + docs/components/outputmemoryservertoolitem.mdx: + id: 92da20c0ab0a + last_write_checksum: sha1:1d1afea177009f6ca75f6125d8048a4700495a63 + pristine_git_object: f6fdc65d1058d426edaa5a069c826ff4e626d2a9 + docs/components/outputmemoryservertoolitemtype.mdx: + id: 7abbcaea1834 + last_write_checksum: sha1:f3c98d03ac6bca67329e32b7792d4171e53291b3 + pristine_git_object: 6a65103cc12c8f78fd72f3085d1a5cf194b22c1c + docs/components/outputmessage.mdx: + id: 52a861e9201c + last_write_checksum: sha1:c01b85f5c1e9673aa02e4f9813c3316d9fa17915 + pristine_git_object: 9cd8a403f1d5a68527e9b7e6468fc601f0a3f852 + docs/components/outputmessagecontent.mdx: + id: 0a868ef4580e + last_write_checksum: sha1:62cef800826c3ad8511b19b743fe9bda62523c33 + pristine_git_object: 04594cdaf89b701bcad3c4c77a4ff4404c68acdb + docs/components/outputmessageitem.mdx: + id: 0f4cb0124f16 + last_write_checksum: sha1:dd04ecb089b19f492bedad4c8a3a357f80819b56 + pristine_git_object: f02e8d23c2936236db0564fc684861f3d41ff996 + docs/components/outputmessageitemcontent.mdx: + id: 9414efcbb76e + last_write_checksum: sha1:7e082b845736093b5e4b4f351d249e9584ee3c9c + pristine_git_object: 3fe04b2f00958e389d35c91ce504a3fb328d3b6c + docs/components/outputmessageitemphasecommentary.mdx: + id: a5a1afe30018 + last_write_checksum: sha1:ff8240097fb01ef8ea7fe2d4f98616e4104adf2b + pristine_git_object: 67ae51fbc51a516418d5a137bb9341fe0addbcac + docs/components/outputmessageitemphasefinalanswer.mdx: + id: 8c29c9d66500 + last_write_checksum: sha1:907276384dc283b6e97429fca7b03dd4d54a4174 + pristine_git_object: 5fded9ec805ec6809a35967d8129ba5bff55651a + docs/components/outputmessageitemphaseunion.mdx: + id: d42d20f5c741 + last_write_checksum: sha1:62a982d5a04ec6a560fe18b736e7115711891964 + pristine_git_object: 39b73fbecbac7efcd2de1bcc341d6202783a76c0 + docs/components/outputmessageitemrole.mdx: + id: 0076b0462103 + last_write_checksum: sha1:49a65f5d386b5bb7541c6a2585db4f7d6999846d + pristine_git_object: b6456e41a3e71c115e15df189a901aeb20981c09 + docs/components/outputmessageitemstatuscompleted.mdx: + id: 5aab7edc20a8 + last_write_checksum: sha1:a26fa8980e08eaea39a74f8568ee6885efaede8c + pristine_git_object: 43f950c097d1e3fdd72a28d885369282fd480084 + docs/components/outputmessageitemstatusincomplete.mdx: + id: 274882ab4e68 + last_write_checksum: sha1:a2398a31a553bbd39e67371d81996335d07bb671 + pristine_git_object: 7191dab240422ff9002eefe27690a4fc5b440191 + docs/components/outputmessageitemstatusinprogress.mdx: + id: 0c4ace488b6e + last_write_checksum: sha1:6842ba5fafac9eaaffc8e1cd3c447697ff6dd168 + pristine_git_object: 978dbbc11a9f25a3a7709945f973617070471e62 + docs/components/outputmessageitemstatusunion.mdx: + id: 0249d099c34d + last_write_checksum: sha1:f6e96b1ed600c5c4dd0e47ee0b472d788d252842 + pristine_git_object: d57364607a625e0d3eead9764d57deec53b07fbf + docs/components/outputmessageitemtype.mdx: + id: b704b67dc850 + last_write_checksum: sha1:844de87858d78af7e5f12f86f25f98f9e19d85f3 + pristine_git_object: 8baacb4bf4fb852670cc43109d6d23d5517d9497 + docs/components/outputmessagephasecommentary.mdx: + id: 9266d7be360d + last_write_checksum: sha1:02c85ee928cb4c2df0ed16008ce92f7c3e310787 + pristine_git_object: c03db0f9f6d5de8c4b009558ee7cd540545c5154 + docs/components/outputmessagephasefinalanswer.mdx: + id: 452c24f64d8f + last_write_checksum: sha1:0c758fa9b27b56567756587665e3b1cee2609f8c + pristine_git_object: 47d6cfd6d192f9a86bf5277aa7b47e4579cf9b29 + docs/components/outputmessagephaseunion.mdx: + id: 6ab2b3682d45 + last_write_checksum: sha1:89e73d889f5588756c23906a04d71fe7c02d965b + pristine_git_object: 67491fda04ec1cb45a62de528ed4f0a712730553 + docs/components/outputmessagerole.mdx: + id: 6ecc03d81311 + last_write_checksum: sha1:de182e3dbd969d702ee21461bd60b0c123eb5581 + pristine_git_object: 342943e3a076544a8c0ada37b7cc9ef013758956 + docs/components/outputmessagestatuscompleted.mdx: + id: 82623cb752cb + last_write_checksum: sha1:6cff869c99628cf9afd8fc0aa493c65f01a8bcc6 + pristine_git_object: 8e7698d17673cc77a22419d8c12d26a2e40db6e9 + docs/components/outputmessagestatusincomplete.mdx: + id: a8d17582d806 + last_write_checksum: sha1:5cf26a5864b3dd6e3d00a5d631687a377779c08c + pristine_git_object: c492398c4454d90eeb3d8500349f07661cc8e8b6 + docs/components/outputmessagestatusinprogress.mdx: + id: 733bc5d69ff7 + last_write_checksum: sha1:f8de1367ef55fe717b84d72cef9a2b68b66e4f3c + pristine_git_object: 94ee4f9f6651bf6e6e77efd958619a1e3c2ef2e2 + docs/components/outputmessagestatusunion.mdx: + id: 00523fa52f2d + last_write_checksum: sha1:393c0ff130da92fd43560276d922f563678965b0 + pristine_git_object: 46b30d64bdedba1e87fe77cce5ef8ffcbc3ae621 + docs/components/outputmessagetype.mdx: + id: dde791add74e + last_write_checksum: sha1:a0af53cdc69a9b8a35089f2972a9bb836415166f + pristine_git_object: 5f80faa24ced13304a685894f4f01553531f0c3c + docs/components/outputmodality.mdx: + id: d0e5e32d8485 + last_write_checksum: sha1:ab35ad2a3d1ef1b6b024be920d78d538450fb563 + pristine_git_object: f052813506aab38d5d746aa56096d1d05dec8bb9 + docs/components/outputmodalityenum.mdx: + id: ff4d9d7b9e07 + last_write_checksum: sha1:a9bbd20b85b23f8d3affe92d5c8b0a6d5b717142 + pristine_git_object: 2d9b6fc6d382ef371eb85f9c53f0a6d7130f7668 + docs/components/outputreasoningitem.mdx: + id: 820bd777266f + last_write_checksum: sha1:33efff22e99dd52d274e791933388fdaeb91c582 + pristine_git_object: 761085bfaed3b4dc6552ce497187245ebf87bd95 + docs/components/outputreasoningitemstatuscompleted.mdx: + id: 4211cb7f6844 + last_write_checksum: sha1:ce479409162a27538c9ebd0af573b6550d3d47a7 + pristine_git_object: f2e1877843ad527cfc003ef73228b3aec4e3ac7f + docs/components/outputreasoningitemstatusincomplete.mdx: + id: 573245933df0 + last_write_checksum: sha1:c871f5bd332ea307230c6743cf9a7be86cf16b5f + pristine_git_object: 0e81c76a33976f137efc1f18ecc6d70c8f2be3db + docs/components/outputreasoningitemstatusinprogress.mdx: + id: 9e5567f63022 + last_write_checksum: sha1:aabc618a5494dd6c5db010d5fdd3d2951e586729 + pristine_git_object: 07a0760b47478bdbd7dc4a9b16de8fccdd35acfe + docs/components/outputreasoningitemstatusunion.mdx: + id: b54642d50143 + last_write_checksum: sha1:f2c20f63392d155b8752e12b80cd686acf70e08b + pristine_git_object: 276711e0e5f86d04ca013a8467cc0886b1404a89 + docs/components/outputreasoningitemtype.mdx: + id: 1e5d4f5baf49 + last_write_checksum: sha1:9485238c0606e8ffae88a62f95f062179dda48f7 + pristine_git_object: 241c03053c7755774953081a52b76746ca01b52d + docs/components/outputsearchmodelsservertoolitem.mdx: + id: c0cc08dcfe8c + last_write_checksum: sha1:759d8a4da3c1230747bd19ccdce9b88e9f7551dd + pristine_git_object: bb1946a0ea7acbacdcd5263b97cb681abb6bcc5e + docs/components/outputsearchmodelsservertoolitemtype.mdx: + id: 3c077010a876 + last_write_checksum: sha1:fa3bbc7841d41adbebfb43246bfb9d7404280a1b + pristine_git_object: 80904602e8e35699fce804be328b522c7b76bd8d + docs/components/outputshellcallitem.mdx: + id: b9bf31512bf2 + last_write_checksum: sha1:e1a1a10f771bddfe434645a01dc395f768389e40 + pristine_git_object: 994c3c01f230dd29d47df507fbed3f067e56f1c1 + docs/components/outputshellcallitemaction.mdx: + id: e37067fe9cd1 + last_write_checksum: sha1:2d3b53d5f5d2a4bcce027d55a3b36f78d13ab197 + pristine_git_object: 2e9c76f3ddc587666d2bdde16c78dcb6a9d7dc22 + docs/components/outputshellcallitemtype.mdx: + id: 7ba8d1e50207 + last_write_checksum: sha1:dbe98e5fa0030de9a0f36149b78dbab26d309aa5 + pristine_git_object: 6e25f4cdd42f706845c834921a44a7198a09c2f3 + docs/components/outputshellcalloutputitem.mdx: + id: 2ce46fbb594f + last_write_checksum: sha1:0386175dde77211ad62fef7da9365c518de62984 + pristine_git_object: b8fc79b3a0fac24dd0637837426283675e4d87c1 + docs/components/outputshellcalloutputitemoutput.mdx: + id: d3e6fe7ad91a + last_write_checksum: sha1:12d8f0d5576898fed2328396c52d6dad7c859dbc + pristine_git_object: ca3f63fd3395cb4abcb6f884b16fd9d2b969a30d + docs/components/outputshellcalloutputitemtypeshellcalloutput.mdx: + id: b3771721488e + last_write_checksum: sha1:a2f348d70becceafa08d4d0ebd5dabe7a0395e3d + pristine_git_object: 2bfc5b85b0a0962d951930f1fd22bf3fb230750a + docs/components/outputsubagentservertoolitem.mdx: + id: afeb6acde438 + last_write_checksum: sha1:36325a1dafb79158eae8b60a27cda59c6a56f25f + pristine_git_object: edc8261cf9839725dcf0a28c6a5224787b57a41c + docs/components/outputsubagentservertoolitemtype.mdx: + id: de66682e96c0 + last_write_checksum: sha1:73a7ed6acdb716d85e1cd3b83517f12dcc5ee393 + pristine_git_object: 19c0ebb0500e07eb2d3126b9740dcb598178c3b4 + docs/components/outputtexteditorservertoolitem.mdx: + id: b55291433671 + last_write_checksum: sha1:e32aa0251b472a7f51de8220eed826ae3e9ea511 + pristine_git_object: 2739149f3a9522bf25a4080d3f181aad575c8ae5 + docs/components/outputtexteditorservertoolitemtype.mdx: + id: 94b307d080ed + last_write_checksum: sha1:9343eda429965c70ec38b664d32037b1e765029c + pristine_git_object: 73d44035fd5cfcac99b42e34c2568f5f0367bd13 + docs/components/outputtokensdetails.mdx: + id: 5a130ca4fc23 + last_write_checksum: sha1:c1b5e6a8dc5a416b85c05ebf4ebb0dc5937ae03b + pristine_git_object: 9c9b6d5923e87acc8d5abcd3ab587324fcda9cdc + docs/components/outputtoolsearchservertoolitem.mdx: + id: 7106fbb89729 + last_write_checksum: sha1:8001d2a20f8a6cb262cd06cf9926034af39c4b2c + pristine_git_object: af768f21a1d5357ae5e038de9ac0c49cc120fdda + docs/components/outputtoolsearchservertoolitemtype.mdx: + id: 2b67e805a2ae + last_write_checksum: sha1:7d4b330d471721610a9ac7d9f44684fd1a099f7b + pristine_git_object: 49c6685751d4ebd497b66734c421f906862d9f57 + docs/components/outputwebfetchservertoolitem.mdx: + id: a13b752a8d99 + last_write_checksum: sha1:ea99fa695f1db73632c1258a7f58ce0ad37a1195 + pristine_git_object: 9c045b8b4f8234da7f0df0734097872bfb1a2576 + docs/components/outputwebfetchservertoolitemtype.mdx: + id: 9ba9db22a4d3 + last_write_checksum: sha1:ab7d41e97f1e83f69ea312673ad23a09255dca7c + pristine_git_object: 909b5a9d76aa8d35d543c6d26b297a4fcf1b44e1 + docs/components/outputwebsearchcallitem.mdx: + id: c79fb1d179e3 + last_write_checksum: sha1:24d7061a66250fc3576a7c1c7f28b85f8e8c9d8d + pristine_git_object: 3a389a5fa8751c88ebd8727d612df156f9f5f8de + docs/components/outputwebsearchcallitemactionsearch.mdx: + id: 68b8fca747ab + last_write_checksum: sha1:98a76009fb8bc87c3b2f20dcf56af177cdff2826 + pristine_git_object: 8a3bea409530f781a0fc0108e43276e9a38328c0 + docs/components/outputwebsearchservertoolitem.mdx: + id: 0b0f98b9ac54 + last_write_checksum: sha1:e405bff48ef850c2d3fe416f857cf83b69596d23 + pristine_git_object: b7fb42bba9891044ab52955ae6aee6c0d84bc776 + docs/components/outputwebsearchservertoolitemaction.mdx: + id: a0269d265fbe + last_write_checksum: sha1:a5ffa656a464af15548437c19e92be6aef7bfdad + pristine_git_object: ca6a895cf6b2ffb67a5bef0b3c83b57b30021a2e + docs/components/outputwebsearchservertoolitemsource.mdx: + id: cfbd41edea19 + last_write_checksum: sha1:f5fa04bcca698374114b6132b959c498d18d478e + pristine_git_object: 5c1f410d3bdcdd7601454b38fe6698c933eca5f2 + docs/components/outputwebsearchservertoolitemtypeopenrouterwebsearch.mdx: + id: 4a035da1ded3 + last_write_checksum: sha1:eb864713561ae630ee1b8a76fbb4a329bfacf541 + pristine_git_object: c2d2d4d122bb8bef249d27286a9814c4e6386cd2 + docs/components/outputwebsearchservertoolitemtypesearch.mdx: + id: cec5ec5cee40 + last_write_checksum: sha1:59d8a25ff09e8b30c3b2ea7c4bfa6f63aea0587f + pristine_git_object: 569551439c2e174e6fc54eff2286081205211652 + docs/components/outputwebsearchservertoolitemtypeurl.mdx: + id: 590ae58aeae3 + last_write_checksum: sha1:9840459347943e716a48cc5947086a063c3e53a0 + pristine_git_object: 7bcc872b70da2f1c7edb03ffddc8e96363e8a3d9 + docs/components/parameter.mdx: + id: 732881d0420c + last_write_checksum: sha1:b07251b79fea1c46ace40815bec04c3f6945959a + pristine_git_object: eef5a5c4a33f4a956032328641888fc336a5a55d + docs/components/paretorouterplugin.mdx: + id: 92e7a1e63fd0 + last_write_checksum: sha1:0d27d564e181cecd6570c92ce027afd447518536 + pristine_git_object: c7ff4bd17a8c4fa61b9a02abad2257ce6c931dc6 + docs/components/paretorouterpluginid.mdx: + id: 1142f2f64cc8 + last_write_checksum: sha1:6e5b2bd86e73db92a9b4b93f014acb57cc61e1ae + pristine_git_object: 7e0cdb5cd39b7790758dbf2d6e4240aeefd4f491 + docs/components/partialcoverage.mdx: + id: 2c16d0d10bdc + last_write_checksum: sha1:3db7723280b039b38be0b8d95d02eed9527acdbd + pristine_git_object: 7c7807b235f0b46e7aad32d047b19b9d223fbcd9 + docs/components/partition.mdx: + id: e1ef1b74cf4a + last_write_checksum: sha1:d88f2a894236140f3497f828efaf3d178997f5d8 + pristine_git_object: c61b4bcedbe8bd7306ded6bc263128087aa4362f + docs/components/payloadtoolargeresponseerrordata.mdx: + id: 2ea2198798f8 + last_write_checksum: sha1:98c67fbe3ab45540e878852c690e3aa5df72a2ad + pristine_git_object: 3d55fb22f33c851cc1f6bbf4bb52c65bb479d2e6 + docs/components/paymentrequiredresponseerrordata.mdx: + id: 7c3cc66a62e7 + last_write_checksum: sha1:b7f48b734f5190c78aa520439aff6471a2b474bf + pristine_git_object: 2dc83a9d5afb9dbb568fe489bf5cfa58b0a60fcd + docs/components/pdfparserengine.mdx: + id: 4413c8716154 + last_write_checksum: sha1:bfe77eb11094614101feca1ec050b90edda29cd7 + pristine_git_object: a78f4deef8d90e1faf6ce17cabc2861f67dab3f1 + docs/components/pdfparserengineenum.mdx: + id: 937cec38065c + last_write_checksum: sha1:0e77257831ddae3b13ce306b793df8579759fb85 + pristine_git_object: 69ef2938b2418e0765119552bed776574e4d7385 + docs/components/pdfparserenginepdftext.mdx: + id: f30f6e6b18e8 + last_write_checksum: sha1:7d0cc4b2dddb1b727866281d6182b25e6b114ae2 + pristine_git_object: b1b3339738178954671b03c208cb9ad217a0e5b7 + docs/components/pdfparseroptions.mdx: + id: f7c78d1276d0 + last_write_checksum: sha1:3f17cb303c2d084cc2dfe25f78b649c2e77358e0 + pristine_git_object: 2e830520967ac2fe4644b1401d6d220889a20de5 + docs/components/pendingsafetycheck.mdx: + id: 82aba5742fed + last_write_checksum: sha1:a7e4ba3cf447aa2794189fc4d741529cee9d82fc + pristine_git_object: 4d484ee8eff2a8e946eeaea44256c3f5977a8e8d + docs/components/percentilelatencycutoffs.mdx: + id: dbba9b9c0335 + last_write_checksum: sha1:41329b859a3972bf11f534bcbf3ff843c11f42ce + pristine_git_object: 60b8ab278d0c9497e95054a8817ad5a11fd23ea7 + docs/components/percentilestats.mdx: + id: 6d04941b9751 + last_write_checksum: sha1:97382b4befbdcc45a05b8d515c8220480562dc19 + pristine_git_object: ff5277c9c4a0927ce8af12eac416e73d0368994c + docs/components/percentilethroughputcutoffs.mdx: + id: 5ed0945b3483 + last_write_checksum: sha1:75469331593bced83bfe98408caa584b939c95bc + pristine_git_object: 86ea312944a50501fd307f41c471b2462adeeb5e + docs/components/perrequestlimits.mdx: + id: a503880c4645 + last_write_checksum: sha1:a971ac638f0c8885577b1165909c8d5ef6b77e1f + pristine_git_object: c03fb6fb692b8af0f720a70f36b214cc8c36b785 + docs/components/pipelinestage.mdx: + id: d61180ec88b0 + last_write_checksum: sha1:d49a71a6279ca655210b5d5c2317799e3ac6c97e + pristine_git_object: fb000252497e0c2405b948b80d2e56e460fac96f + docs/components/pipelinestagetype.mdx: + id: 3c54779ba868 + last_write_checksum: sha1:2e5611cd5f6c1ce35c979a1046b142c66895f9aa + pristine_git_object: dbf6cac96b22f374bb90a50206cf8f0a10a5c8bd + docs/components/preferredmaxlatency.mdx: + id: 8ca10c660593 + last_write_checksum: sha1:606748118011316ae4563b9afe99105f61968053 + pristine_git_object: 0c78ef7a9fd64d51b1b6dc981d6d609b74beb1bf + docs/components/preferredminthroughput.mdx: + id: 395a738d1f59 + last_write_checksum: sha1:83fabc28a3caf621d3abe6e1202922b00278e594 + pristine_git_object: 348b570390ecd6845e362a4984ecd563daad710a + docs/components/preset.mdx: + id: 9069cdfaddbc + last_write_checksum: sha1:87eebf424e40efb670c2bc0f617c903a6f9d3da5 + pristine_git_object: af18885fe3cc9a11fa73f5366f9530aed8732750 + docs/components/presetdesignatedversion.mdx: + id: 600f3d47dfc9 + last_write_checksum: sha1:387d8e514d995d0d5a35b77a90693972d4aeda97 + pristine_git_object: 0db549178d21f9cd5ff214ac21909bcf90d1e531 + docs/components/presetenum.mdx: + id: 5c9d69c551a8 + last_write_checksum: sha1:5d1fdd6337d62463657cfbae4a58abb21cedc03d + pristine_git_object: d4ae3a8992c31daf56310ec01d089eb862ed13b3 + docs/components/presetstatus.mdx: + id: cb4faf64ee85 + last_write_checksum: sha1:7a2f2619305e77274fa23eb6a68e17c122a0fb38 + pristine_git_object: 7eafb31f6b1fe451200cc8b2dfcb19e174b26ead + docs/components/presetwithdesignatedversion.mdx: + id: 81a043aab111 + last_write_checksum: sha1:3479d7565adbf6d6095e50ae3e966affcacd88b7 + pristine_git_object: 56d189d99021af45f7fa6fb143af33d7d08cedcb + docs/components/preview20250311websearchservertool.mdx: + id: aeecb65a50e0 + last_write_checksum: sha1:9cd7cb2fd03fb0fb42684a3e00b072045d1974ee + pristine_git_object: 51a09f1717d612fcb41f0694f55e699f619e86b3 + docs/components/preview20250311websearchservertooltype.mdx: + id: cedcfeda38d6 + last_write_checksum: sha1:f7ac2913cc8c24d851c06d02c06742f9fe435084 + pristine_git_object: 3669d05ce38327fa9b3d9a8c66c1de208a5f30e2 + docs/components/previewwebsearchservertool.mdx: + id: 2695e6e2fdfb + last_write_checksum: sha1:3279699a9827cc33c871fd15ab6af0129605760f + pristine_git_object: 66b4f3f11418bba6015197b38d12ef65d3fb061b + docs/components/previewwebsearchservertooltype.mdx: + id: 4b6373295164 + last_write_checksum: sha1:b28bae247d5a91d62f9be9877cd6f437628be49e + pristine_git_object: 6d4539916fa939a5acaea395be41b0627629cad5 + docs/components/previewwebsearchuserlocation.mdx: + id: 2a874697fab9 + last_write_checksum: sha1:c4693dc83aedfaf95cef18538f626338309d5368 + pristine_git_object: 1695e40497a7178618edb5a5bbc4814e18aa1aae + docs/components/previewwebsearchuserlocationtype.mdx: + id: 35ac43fbcda0 + last_write_checksum: sha1:ac447a848769901eb347e8d4ab81494a79d4101f + pristine_git_object: 414a5204c691ee0766f05498ff467eeaddebcb6c + docs/components/pricing.mdx: + id: 6816d700f8b1 + last_write_checksum: sha1:ac5c56af4e56eb98da5686e33a224950dfbb8207 + pristine_git_object: 78ac34b5053103dc4261c2fbeb9833f97ef109db + docs/components/promptinjectionscanscope.mdx: + id: 27b252a0e798 + last_write_checksum: sha1:a8947423372ce9b2edee232b8da4aa0afe5c6619 + pristine_git_object: 1d91d32cd0bf4b64699bbbf05a7e95ab835b10cf + docs/components/providername.mdx: + id: aa3a4904b228 + last_write_checksum: sha1:0ed72fc077d1a2641c8013c782fa7797282337e8 + pristine_git_object: f7cde44d7ed6638b63f3f5c3921096cd368c1b1e + docs/components/provideroptions.mdx: + id: 2697807524fe + last_write_checksum: sha1:e1d6db7e6b3ed82bc19a6ece557566273f9a4b93 + pristine_git_object: b15b96fc074273c0d83e59b9b69c64ce8dfb48d8 + docs/components/provideroverloadedresponseerrordata.mdx: + id: dc500cd14889 + last_write_checksum: sha1:6c1d551db4083f1d0bc429baa1ce472d2c085331 + pristine_git_object: 05bcfceecf3e74def73684391a76fa68829271a3 + docs/components/providerpreferences.mdx: + id: adbdfaa46438 + last_write_checksum: sha1:d0f7b534fbaed359e2f2abd736bd669367371462 + pristine_git_object: 750d3a21ada3133dba71217f0444c2064b2ff081 + docs/components/providerresponse.mdx: + id: 36e1a24f90b6 + last_write_checksum: sha1:8cc7665df40a74a5df41e654e7824b6cdd8a2155 + pristine_git_object: 65abb901a8ffeeafa89279f5e15d885cbaa297ec + docs/components/providerresponseprovidername.mdx: + id: 2fc17b61e546 + last_write_checksum: sha1:3c9ef87051135f7aa37e89b7b952aed3b8e2c13a + pristine_git_object: 85c97ab96bd1c209a131187986528ea636e81256 + docs/components/providersort.mdx: + id: d73fa13eeb95 + last_write_checksum: sha1:b7e9e6842741e3433d705bd576f2ac5383f00134 + pristine_git_object: cbfa63e4d31ea7c545d69ce2a7de281a3ece9828 + docs/components/providersortconfig.mdx: + id: 9ca776e56c1b + last_write_checksum: sha1:6e4c1559eef9ee1369886cca6708b01b93d685bc + pristine_git_object: 5aa8e90a6761d61aa63204bc3aa73f4481449d3e + docs/components/publicendpoint.mdx: + id: ec4843ef5d86 + last_write_checksum: sha1:3cd9799262a806acabefeaee43d5069fb58ab4c6 + pristine_git_object: 53b22a2c5d91fdc4ee5e39d7013b09b748d763e2 + docs/components/publicendpointquantization.mdx: + id: 9b0ec1bdfe07 + last_write_checksum: sha1:c820b5a85f593030702969f8bce4d81358d222dd + pristine_git_object: 4498d08fd82f26a210eeed2b9659e6a0b321f9ef + docs/components/publicpricing.mdx: + id: 61fb18b7ff94 + last_write_checksum: sha1:41c3b03c9eb4883d41e128e1b2d549ddb608c317 + pristine_git_object: 0d8f6cf2cca158ec93dd8afdc29c0cb377053fbd + docs/components/quantization.mdx: + id: 9d062e4ee362 + last_write_checksum: sha1:4cb3588933fe1ca8592669f8ec1bef1cf0986e28 + pristine_git_object: cdbf8d73f319e091b6514c6bae0dc8bb56fd8c96 + docs/components/rangecapability.mdx: + id: 8c2d6524bd62 + last_write_checksum: sha1:e583c16a52c5811d882ddbe20cee0a7006035356 + pristine_git_object: 34425c50e04ff9fb85da6f81aadd9ca65f9d8715 + docs/components/rangecapabilitytype.mdx: + id: ed9a27bb5417 + last_write_checksum: sha1:357127ec16001090e00bfc05c17573fa9f271783 + pristine_git_object: e4d767dd892763484e2405ebfb181788c04b73e6 + docs/components/ranker.mdx: + id: ea49a60d49ac + last_write_checksum: sha1:6539c0a8a78cd39e83642afa1f92283d4472bcae + pristine_git_object: 7a7b811afe39d052513a657b6b0cb4ab2d8fe0f8 + docs/components/rankingoptions.mdx: + id: fc7b9b20f341 + last_write_checksum: sha1:56211ab8b5c3c2d46d31a99b80cb4252ea7f596e + pristine_git_object: 2f3d38a040d8175b63d0a1423445bc6ec887fad0 + docs/components/rankingsdailyitem.mdx: + id: 96e15ce0fb39 + last_write_checksum: sha1:3fc5a1df6b1a451227535d17c26ea27ea0fcc23b + pristine_git_object: b2e760295879653eb491f6b171ad5f2399b3e1e0 + docs/components/rankingsdailymeta.mdx: + id: d6d04480acfd + last_write_checksum: sha1:53f7947281343750c6a014c66887c583d0186248 + pristine_git_object: cdc00fcf749f1108164269a8db7ad76b5d623a46 + docs/components/rankingsdailymetaversion.mdx: + id: 1de73fde8cce + last_write_checksum: sha1:990f056c1ab068eddecea25d1e8b54d4e27d5e02 + pristine_git_object: 274452757b0df087a5fca9c903df92ca7d59eb9a + docs/components/rankingsdailyresponse.mdx: + id: eaa8d80ab494 + last_write_checksum: sha1:01550caa8b17d53d661fb8eec86f7dd6536f3e2a + pristine_git_object: 13cf299dbc8c505fbc8e691add26341779a692af + docs/components/reason.mdx: + id: 0c3e75430162 + last_write_checksum: sha1:d46f2a9cba528c56bafb3150b3debcb7a138c2d8 + pristine_git_object: 99c4a374a4dacb8e64c8a1cf5efb815fb177e22d + docs/components/reasoningconfig.mdx: + id: e5500b541923 + last_write_checksum: sha1:0356f9e98a2ae7ec83b1c352994ced8cddeaaf79 + pristine_git_object: 819b0830608d88a227d9457f4189d7b1112c39d4 + docs/components/reasoningdeltaevent.mdx: + id: 2ec3838c029f + last_write_checksum: sha1:15dccf12992148893efb3325d86be310d339fda5 + pristine_git_object: 2c29c423cb24ac01b61cb3e6eed2b2bfb7facee2 + docs/components/reasoningdeltaeventtype.mdx: + id: 96184b7986c3 + last_write_checksum: sha1:b7d150d28d29a72074c4a094a8bcaed7c1c80909 + pristine_git_object: 6c358d0e153e45a3deb9468d715f876561598a8c + docs/components/reasoningdetailencrypted.mdx: + id: 7bf862724f88 + last_write_checksum: sha1:23b0b825b177db6d7ee539cba858f2de2e1a7740 + pristine_git_object: af4cce611927af3fb6910e011ec682f3e31b8a28 + docs/components/reasoningdetailencryptedtype.mdx: + id: 7dea8887a486 + last_write_checksum: sha1:92808e57ae938c7cfaf7d5ab1dcc2e411d887108 + pristine_git_object: 3779ebb04af32b9188d75c4c910752f6ef31ccc6 + docs/components/reasoningdetailsummary.mdx: + id: 264cd49526bd + last_write_checksum: sha1:73d7efd548b4a457454ebf381f159797ddc91970 + pristine_git_object: f0ad47f1dfe3359cbdedaa8bf869a8e1fd0c1b27 + docs/components/reasoningdetailsummarytype.mdx: + id: 7a022f3244e9 + last_write_checksum: sha1:4f4225c81b7d7a0bbd1542f158c87a9fc4967ba2 + pristine_git_object: 7061072353ebec80f873d6a6e1fff9e4cab7273d + docs/components/reasoningdetailtext.mdx: + id: ab46bdf1fecc + last_write_checksum: sha1:193705552c7526be3cc1cb7a549a5250273a576c + pristine_git_object: 54a6696ff20603346cac8dedbf4c2b264346a857 + docs/components/reasoningdetailtexttype.mdx: + id: 06604321ed1a + last_write_checksum: sha1:93b10c0a74c1ca105c9d06c31a30a1a5547ba998 + pristine_git_object: 4b94f542433728f6cf9adce6be943b7be90dbd41 + docs/components/reasoningdetailunion.mdx: + id: b79bc447eaff + last_write_checksum: sha1:93c29cce21e4ba625b7299ecc8891d1b1fa7ef87 + pristine_git_object: 49ac02bee627aed7cc041917d432dd368463827a + docs/components/reasoningdoneevent.mdx: + id: 3183f11559d0 + last_write_checksum: sha1:b2ab6eac3b93629f1643c518dca3e7274d4b17c9 + pristine_git_object: 6068c9df014c7b9521d249c6db593fa3fcd30beb + docs/components/reasoningdoneeventtype.mdx: + id: c594e155bada + last_write_checksum: sha1:33c39a9156e69f6408a8a567945da63df0e20a77 + pristine_git_object: 55393ca53e8d952919e429f7bc5a2f8762a7adc8 + docs/components/reasoningeffort.mdx: + id: b2f39931f1a8 + last_write_checksum: sha1:f4d71419143fde97e5a1cca31603b030f49b008e + pristine_git_object: 2cfb4301a444ee320895855dd98311aaca93363b + docs/components/reasoningformat.mdx: + id: ad8b386fc1e9 + last_write_checksum: sha1:4c324f1a8828a549ea5106b08b5de95691587f86 + pristine_git_object: 704d0542d4b1601b7c0e67a8fd21837b701276a7 + docs/components/reasoningitem.mdx: + id: b878124ede47 + last_write_checksum: sha1:f740ab591ad89130eb9eefbbc507dbbe8a92195b + pristine_git_object: 1afe6189619054be6b509bbbaa51abc0084848e1 + docs/components/reasoningitemstatuscompleted.mdx: + id: 691c02c0f311 + last_write_checksum: sha1:ecb1dbba577ea1e3ae7d8df659e51e0226795e09 + pristine_git_object: 431f14fa12dda7caa53dac731aef76b1bc0c778f + docs/components/reasoningitemstatusincomplete.mdx: + id: a96f6f2a5d11 + last_write_checksum: sha1:cceedc4a495e0bda85cfb6dcd84aa26d16e97eea + pristine_git_object: 6c2942a33589ad8c4a2ce9fdf74d9999940dedcc + docs/components/reasoningitemstatusinprogress.mdx: + id: 556eae7029e5 + last_write_checksum: sha1:a224088882e2bd072fd350e7e11a53a47a02e030 + pristine_git_object: 3bcf01238f78b530d1d54c89b36ecde2d08a51b6 + docs/components/reasoningitemstatusunion.mdx: + id: f61d530754ae + last_write_checksum: sha1:000b1aac403965ec14f49393a519f924d08e6e48 + pristine_git_object: e6ea6285c74adcb99196a02816705af97ca69e01 + docs/components/reasoningitemtype.mdx: + id: e8641738e2de + last_write_checksum: sha1:3e48a910c91face268f4856b29513a839387908b + pristine_git_object: ce469f036c494a9b65a2f9c6cba2a00d84ea27be + docs/components/reasoningsummarypartaddedevent.mdx: + id: f8185d70cec5 + last_write_checksum: sha1:ea2de8082c5aa7e86313a4e22caf7f800d76988a + pristine_git_object: 277f61694ce38c290be3b1b59fe2fc6a93ded250 + docs/components/reasoningsummarypartaddedeventtype.mdx: + id: 287026fc4fd1 + last_write_checksum: sha1:4218cfaeb5692fee8894542a41f170e3b66a2bf5 + pristine_git_object: 6b1f94bd6b95e9c772ea8b1f23a89fcab72d01f2 + docs/components/reasoningsummarypartdoneevent.mdx: + id: 956627e33125 + last_write_checksum: sha1:0b90575bf63633f10733bd2575d00c4efcccd131 + pristine_git_object: f648a1e1bc4be59bee9533e55713459f09eecb85 + docs/components/reasoningsummarypartdoneeventtype.mdx: + id: 6f7fd024080b + last_write_checksum: sha1:63700123f9615bbe2fd2630ca9f8a5b3dff11401 + pristine_git_object: 74d96535b176bb2d7cde99a220788f179a93cbbe + docs/components/reasoningsummarytext.mdx: + id: bec34612b49f + last_write_checksum: sha1:75cde8f4a0255ecc98bbbe8b2bb96a8fd800f55e + pristine_git_object: 0a97676ea682c22f97860605d56547efc5653dd0 + docs/components/reasoningsummarytextdeltaevent.mdx: + id: 26a5d6aa1490 + last_write_checksum: sha1:20a098efae128dc6ed31af9380c1afef376fa037 + pristine_git_object: 204b30efee119e862c98942d36defd671b4dc71e + docs/components/reasoningsummarytextdeltaeventtype.mdx: + id: b50054957f10 + last_write_checksum: sha1:083b44e1a93aa49032a947e667c4dd90365a7845 + pristine_git_object: a7ac9a93436e7b8a6a48d780c5339b1adf1aca54 + docs/components/reasoningsummarytextdoneevent.mdx: + id: 6b6758cbe771 + last_write_checksum: sha1:68d6e6d0c31d809f4b6c7dc628dab03b6db236cf + pristine_git_object: 540a20cea1f72668a18f117bd21e9c5d3f81bb2b + docs/components/reasoningsummarytextdoneeventtype.mdx: + id: 4ef745dbe0ae + last_write_checksum: sha1:9fc6f7f3ec2bc08751242b587050232163b6197f + pristine_git_object: 64982e79bfbe0b227ec81c134cc784b1a43cb75a + docs/components/reasoningsummarytexttype.mdx: + id: f8223e4931d4 + last_write_checksum: sha1:4ea3dbd342ab76027102377c212b7ffea462d0e1 + pristine_git_object: 4768528308252140417214f989c3206e59a9232c + docs/components/reasoningsummaryverbosity.mdx: + id: d41ff78d159b + last_write_checksum: sha1:220aadec8d70dea4ed681f404a96c6cf6227407e + pristine_git_object: a62813b9ae2720e1409205cc1b3b848e9068a9fa + docs/components/reasoningtextcontent.mdx: + id: 68c13c37bbf1 + last_write_checksum: sha1:1b324cabe714d7145f67fd710e0d5f2811aa296a + pristine_git_object: 6fbaeeed46dbd907900ab331e48715314fc04ebd + docs/components/reasoningtextcontenttype.mdx: + id: 889d0f7c9bbf + last_write_checksum: sha1:1091eddb7370abadf0cb898eb82439ea67932b82 + pristine_git_object: 9724b529b0c42063dd25638672fbe19249b4520a + docs/components/refusaldeltaevent.mdx: + id: 2e54cae49929 + last_write_checksum: sha1:0992fb070f815f9fb16bcc9eef69ee1a6e78fb74 + pristine_git_object: 046947a1cc61edaff0cd993cf7933445eaa6c60b + docs/components/refusaldeltaeventtype.mdx: + id: 0bf1d07f3cb7 + last_write_checksum: sha1:d67b53de4bd50e060ec6b6a4b90d12b2b99f4bec + pristine_git_object: eb1088e8934f46630484a6045eadb5c956aec713 + docs/components/refusaldoneevent.mdx: + id: 906d3a461c5d + last_write_checksum: sha1:470ba4b967b7e82b9965baaa048efadfe38be295 + pristine_git_object: ccc2709f3c646f54d6ed65bfb2832299a074aec2 + docs/components/refusaldoneeventtype.mdx: + id: 4f8136a055a8 + last_write_checksum: sha1:d205c02bb074a52f492a81ba76b3568670fc1334 + pristine_git_object: a6e370bd6787ea1a068791e331b4c894666dabe3 + docs/components/region.mdx: + id: f2abab6453b6 + last_write_checksum: sha1:9db11174ef8a40a144f94ec1d18cb4500fc66871 + pristine_git_object: 51b26cc819421478797a67e192f2c8952cab45a4 + docs/components/requesttimeoutresponseerrordata.mdx: + id: 6f984fda78d6 + last_write_checksum: sha1:b730dd6e83db69efbba25f05cd1c0f76f7297e1b + pristine_git_object: 71579d93bbc9647c3057821314ed3eda9b8626d6 + docs/components/requireapproval.mdx: + id: a207e0b4b049 + last_write_checksum: sha1:48b763f7ee9f04e2986d74edfd952ce6f8f97d3c + pristine_git_object: 79583bfa0935e0885425fb4665f08a02fe07de60 + docs/components/requireapprovalalways.mdx: + id: d1a6759638cb + last_write_checksum: sha1:2fc22645172025eb9a591ea117922730649d1fd9 + pristine_git_object: 520f072ac3cb27bc17febba34ff704d16133f8b3 + docs/components/requireapprovalnever.mdx: + id: 6dd7ca812306 + last_write_checksum: sha1:3ec72ee929c0d529ccbcebb22d52da5097f415d6 + pristine_git_object: 0e65abee2cd9ce152b68dbe3180739ea36b949e6 + docs/components/requireapprovalunion.mdx: + id: fd80c94f61ca + last_write_checksum: sha1:866cc7d438af77925b5ea6ae7f17283826ecc1c4 + pristine_git_object: 9ff15b470d192a2717e19f15ef0154de10522615 + docs/components/resetinterval.mdx: + id: ef4f6969df8e + last_write_checksum: sha1:e47284974689070a1dd9c82195e4588fe9ffe17c + pristine_git_object: a22e20430c548554994bd3e8371b19cf8027784d + docs/components/response.mdx: + id: 08f49f31e8ab + last_write_checksum: sha1:13b3e031d4aab706503a23ff99528813ec14698d + pristine_git_object: f12a0a04d9dc4430ca6180c8507360d9bc7494cd + docs/components/responseformat.mdx: + id: 9b8deacad550 + last_write_checksum: sha1:2ca93510828412e375f9903be2c92bcefbacd177 + pristine_git_object: 29709effcd49176f32b4b99f9a37ed1309231549 + docs/components/responseformatenum.mdx: + id: 60f6138df415 + last_write_checksum: sha1:b3d58b45db884f8b051be834701ee3166bfb13cc + pristine_git_object: 0b7c4b07a2162050d564e6947d060d1b22241817 + docs/components/responsehealingplugin.mdx: + id: 5bf9b8008e95 + last_write_checksum: sha1:1aa7dc7146a93a215d275571233ee63902a6e155 + pristine_git_object: 8b89cfa96d79562d7b77bc5eaa58ffec95f00187 + docs/components/responsehealingpluginid.mdx: + id: f51ceb263180 + last_write_checksum: sha1:db7f0f7081aaf350395b55d15553b771ac559a74 + pristine_git_object: 0dce5ceee2929e6ef2817fd622093fbfe5ca75f4 + docs/components/responseincludesenum.mdx: + id: 3fa11839bc55 + last_write_checksum: sha1:045a1ca6f744774bb1a4f777c9d661faf6021e44 + pristine_git_object: a5cb010354b5dff2d5751fcc0ddd5fa1b0563168 + docs/components/responseoutputtext.mdx: + id: ff47b80fc46f + last_write_checksum: sha1:c0fb299b188e91f92766079b16b94dafe96b5ccb + pristine_git_object: a6879aa83f0c9507fb6d31c75f2290f239e4b420 + docs/components/responseoutputtexttoplogprob.mdx: + id: 023ba8fe0238 + last_write_checksum: sha1:c7587a1afdd80387ff7a7e285cd9509c5d059dbe + pristine_git_object: b085f188727b4333f46de226aae4467ddb8fb453 + docs/components/responseoutputtexttype.mdx: + id: 3c4fe7ccb317 + last_write_checksum: sha1:62c6558f6d82310cd4238271a07372d51a2ffdf7 + pristine_git_object: aa7c89233d761c71c471d4f9ee808e648e683fcf + docs/components/responseserrorfield.mdx: + id: b6154c03e4c4 + last_write_checksum: sha1:1226c11459e0aab4601c395235bb4aed55c9c602 + pristine_git_object: 996cffee821435729436d7f29bce4333f4900382 + docs/components/responsesrequest.mdx: + id: 0dbcef40a4b1 + last_write_checksum: sha1:6349c1560ef2f55875ce6d926e42117d1b069cee + pristine_git_object: eb2f6540a39471b65545174c8f5658303868f00f + docs/components/responsesrequestplugin.mdx: + id: 4d550c41c85f + last_write_checksum: sha1:ab9d1e6c062cd51fc976da6ccf393e9974171f7b + pristine_git_object: 7121cf5ea925e054ff60296a7d7ce2ecfceb4d80 + docs/components/responsesrequestservicetier.mdx: + id: 5000ee5983ff + last_write_checksum: sha1:97a6f6dae00368174adedb8bd994aa5c23d0a550 + pristine_git_object: 51f9b5996e0a3d693726e27c3ac8095b926091ef + docs/components/responsesrequesttoolfunction.mdx: + id: dd0c817d15e6 + last_write_checksum: sha1:884bcbda9812577a8ff36fa962d33421e13da3c1 + pristine_git_object: 5f6cc606242e0f8343c7bef1d54e640fef620a80 + docs/components/responsesrequesttoolunion.mdx: + id: 96bafa5d19b1 + last_write_checksum: sha1:dffc61ec70129b12bdf684ccd82c48fd88fcd089 + pristine_git_object: 504c087337285b6612ec9e203d561985b45d7db2 + docs/components/responsesrequesttype.mdx: + id: b2720876d384 + last_write_checksum: sha1:9ed21e9f3c79e3936a4f6bc9df24eea499cc1e56 + pristine_git_object: bd4d080a74641b4a2018d2cbddbd16daa3ae7b0a + docs/components/responsesstreamingresponse.mdx: + id: 5eefe41f1850 + last_write_checksum: sha1:06ac8357212098a2e461592ff4cd29ef9e7e1fe1 + pristine_git_object: a9e4e2a7461ba24eedfd00740bf4522607e64a04 + docs/components/routerattempt.mdx: + id: 372598a145ed + last_write_checksum: sha1:51d8aee604f0093ea6df2df0fd73f02241190f70 + pristine_git_object: a082fd19fb49f23a7b87c8bff4339475d2ceb54e + docs/components/routerparams.mdx: + id: 48b1835a3807 + last_write_checksum: sha1:3edebb97271f1405f8347235a7f58f9ac018ec8b + pristine_git_object: e5316d7870bbb825b96980dc2488bde156bde638 + docs/components/routingstrategy.mdx: + id: c74229969aa6 + last_write_checksum: sha1:dc0caaa60b7c88580668cc4393486f13b3b6e636 + pristine_git_object: 02852267fa52361a11f7732afe1e7818105196f0 + docs/components/rule.mdx: + id: 652b4ec56a02 + last_write_checksum: sha1:9e98bfe08cdbc0e13635a26c52a1d11003041b78 + pristine_git_object: d585c3be57a8c3843d6712c747983fbcdb692d17 + docs/components/searchcontextsizeenum.mdx: + id: b6b9a99acb5f + last_write_checksum: sha1:177016c42a56a7a8dcd40caa7e9105ca7a6ea1cc + pristine_git_object: ba86ee34516bcebcc90eed390c5f5fae197ae564 + docs/components/searchmodelsservertoolconfig.mdx: + id: afffad2845a2 + last_write_checksum: sha1:4c205a6c239561b5813ec9202abeeef9e4e41331 + pristine_git_object: fb2f7f7c53004cfee264fe37346b88af5cf7d61c + docs/components/searchqualitylevel.mdx: + id: 0cbced049b6f + last_write_checksum: sha1:106b7467c7ab738c7ce04ab44d83a91388dc0808 + pristine_git_object: 09c661196e0bbf039ff1e117c55aa1981ca1ef4a + docs/components/security.mdx: + id: 126e702b7c97 + last_write_checksum: sha1:3fbb5c3145b96472437de6e6384ae222b0ae5210 + pristine_git_object: 185abbfd59b8369f9e7475ab4cd7acdfc58962a3 + docs/components/servertooluse.mdx: + id: 0431e1259d43 + last_write_checksum: sha1:79bb35b65254a9df9804ccdc89a84ceadc72a811 + pristine_git_object: a90fbbefe76853f92638f4ae7ad63cf67951efc4 + docs/components/servertoolusedetails.mdx: + id: 5a7d75562dec + last_write_checksum: sha1:28d1fa7491c62f6fc5592fc8092afa9cfaa0b4f5 + pristine_git_object: a9f0d64b5351c9d5f5839b29c8c8c9c79a2d0c3a + docs/components/serviceunavailableresponseerrordata.mdx: + id: 72f01d77e774 + last_write_checksum: sha1:7b53cfdd92a87ef0b70e0b5f7d2031e73bcbe033 + pristine_git_object: c4f86510dd56bef5dd5cabb2587ebe6f04bfe983 + docs/components/shellcallitem.mdx: + id: 172eabd6add3 + last_write_checksum: sha1:8648ce1b124e619f8ee36f29ad17d6f05bb2d54e + pristine_git_object: 02c5c8a8803a5302755cf8aea534a75ee5144381 + docs/components/shellcallitemaction.mdx: + id: cbd26fb9049f + last_write_checksum: sha1:e1f76bee9ea1ac27ffc7bad531335b55de3110e4 + pristine_git_object: cca3bb6149631c73acc99918017138a85d707256 + docs/components/shellcallitemstatus.mdx: + id: d212b5774e0f + last_write_checksum: sha1:676d928f202fcef08ac3043f374d7b1233fe0793 + pristine_git_object: b6ec73cdd2e1360daa475564b254479f875aaa0c + docs/components/shellcallitemtype.mdx: + id: c198ee9e7382 + last_write_checksum: sha1:933fad7f148c81a73de7bf0d6f2083038fc0803b + pristine_git_object: fe8aa0d80f56454a4326d74c8ee8a7793427312d + docs/components/shellcalloutputitem.mdx: + id: 3c692a7914b0 + last_write_checksum: sha1:deda355e7fbab3d845fe343c9253a1d304f59c73 + pristine_git_object: e4456b9caf3dfb944a968140d5d2ac0d08033ec9 + docs/components/shellcalloutputitemoutput.mdx: + id: 85a0aef86180 + last_write_checksum: sha1:10743226453034a964c7161509f4b14e0a132bda + pristine_git_object: 9d4855758dd00d9ec1d0ecc32f0e274073756c4f + docs/components/shellcalloutputitemstatus.mdx: + id: aaef41438132 + last_write_checksum: sha1:0368af73f91840e63378168ca74b9d5197c5eac5 + pristine_git_object: d1b61c6d1baa184fc306ac13f47fae2f0bc04c57 + docs/components/shellcalloutputitemtype.mdx: + id: 13012771fc34 + last_write_checksum: sha1:0bd6909e931eeb3ab3a22dd98b9a51c67f1d0dfa + pristine_git_object: 90b55526b1a545847174a6e147f8bbe91908d22c + docs/components/shellcallstatus.mdx: + id: d5afd9396cf7 + last_write_checksum: sha1:146c3774e082cd8ca9c11aa97d22ed9de7ee2091 + pristine_git_object: 27aa179a9bb5ece860b84cd59185921a0e229516 + docs/components/shellservertool.mdx: + id: 9cddc1b96409 + last_write_checksum: sha1:ea5b02df81d67cbbba97e7b538f59024137db3e9 + pristine_git_object: 0f55c3798873d7c5583fd06187cb7a9566bcc5b9 + docs/components/shellservertoolconfig.mdx: + id: 5958cff854db + last_write_checksum: sha1:8b6bd8f0e38c574f64e0b13a333fd80fca807043 + pristine_git_object: 5f24f1a8895e63426351e0bcb2d75fbffc06045b + docs/components/shellservertoolengine.mdx: + id: afea02c824ea + last_write_checksum: sha1:2c179cb81f553cad5ebf67e42230b011a4e01b7f + pristine_git_object: e5a091195d590f88c5e7afb9f7da62af4089b54e + docs/components/shellservertoolenvironment.mdx: + id: eec9a9690588 + last_write_checksum: sha1:bcceae5f7d385a575fdab19210c7d2f4632459a9 + pristine_git_object: c61d1889a25e5879664c12c6a7b07a57047684ac + docs/components/shellservertoolopenrouter.mdx: + id: 5c8be5a98197 + last_write_checksum: sha1:7cfa877d119578daf4624ee04b361b87bf6bda0d + pristine_git_object: fa031486ac8634cc5fd84a6c001f1af01b1fab97 + docs/components/shellservertoolopenroutertype.mdx: + id: c5ef6fc964a4 + last_write_checksum: sha1:9c5463f6c610069752149860746ac4f92fd18d78 + pristine_git_object: 9c46cc1009cef572e34719ee09eb7bb3afb52b49 + docs/components/shellservertooltype.mdx: + id: b35cae5eacec + last_write_checksum: sha1:6865169ff4445d70d63c674092812b47236f213f + pristine_git_object: 1c0dd3c44cfce8b531e7d89e3db6b2787f060984 + docs/components/size.mdx: + id: 21d53f42f1b5 + last_write_checksum: sha1:543c159668e36a35b0d6f2357e4b9cfda44ce2f4 + pristine_git_object: 707abe9890dce5df4f29843cb2b05cff5d9f280c + docs/components/sort.mdx: + id: 2423f4a05690 + last_write_checksum: sha1:3443886b2481e8685a1c390530dfd7b763d9f237 + pristine_git_object: b12340f49cd6973329dc305d88b7190bcb5c163b + docs/components/sourcecontent.mdx: + id: d211413b56ad + last_write_checksum: sha1:e9ec235c28760da429e35fea006321e7a697e5c4 + pristine_git_object: 792f40542b86ce988d9257810717679468db825d + docs/components/sourcetype.mdx: + id: 77262fe83449 + last_write_checksum: sha1:9f290862f832b501a96456226ff1f18431f74c50 + pristine_git_object: 5d617cac37f7b364f4dd0640246e97c34351d824 + docs/components/speechrequest.mdx: + id: 06e81b0433f6 + last_write_checksum: sha1:0c8b9aae49356145aa960740cd88e620b511ec6c + pristine_git_object: e984d1fcbbc242679fbd51f142bd9de711833a50 + docs/components/speechrequestprovider.mdx: + id: 4f78ed0394c4 + last_write_checksum: sha1:99d94c6b01dbd3e875c213584f97c7dca545a6a9 + pristine_git_object: 3a95d19f4a88dbd0c96cec7cf53d9264927a3c0d + docs/components/speed.mdx: + id: 4fd1f2823924 + last_write_checksum: sha1:c6815d115b55b9409052f9d1d1d16bb1d7197763 + pristine_git_object: f120cfef4c79cf5913a6c86ceb327c2b76e64016 + docs/components/stance.mdx: + id: 6eb0f13ef2a1 + last_write_checksum: sha1:64ee44794873236df5419e4f63e4963898ce6627 + pristine_git_object: 3a93298ea9bc10f11e468d2eb33c2bd8e7e12f40 + docs/components/stop.mdx: + id: 338b29992e2d + last_write_checksum: sha1:6f2df577e3400448f42393a716630ea5db75664d + pristine_git_object: 0f147f6e0e0f2a55ba73df5e4f5f76a47288bafd + docs/components/stopservertoolswhencondition.mdx: + id: 5fdb9a5c17ee + last_write_checksum: sha1:fd59b93bfdf655a268171fc4f35170cbffa72f47 + pristine_git_object: 34d7863a7a5fe022dbfc6a534ae4e4d39bf8f54d + docs/components/stopservertoolswhenfinishreasonis.mdx: + id: edb3bdd7b6b4 + last_write_checksum: sha1:4d7053fbed217b38a60a9f8d62a64a6bf0a7c07e + pristine_git_object: ef2f143f73407e97cc0903b038b73632f2864a45 + docs/components/stopservertoolswhenfinishreasonistype.mdx: + id: 054aa7a9d125 + last_write_checksum: sha1:07068ab51ebcf9b9461f38d1b12749a01020011e + pristine_git_object: e54b4fe34e5d05f8643f135b2ee43ad83878d35f + docs/components/stopservertoolswhenhastoolcall.mdx: + id: a0e65079ca2e + last_write_checksum: sha1:7255c505cafc4d9eda613cd38098c329fccd7aad + pristine_git_object: 890af332ed5920b4e3e0842a0d1b282fb67df137 + docs/components/stopservertoolswhenhastoolcalltype.mdx: + id: d6881cc09fdf + last_write_checksum: sha1:f11f18e4ea5ba0d21b15367bcc6e15778aa533cf + pristine_git_object: 9b1a468cc36f433ba7fb2c0aa79650ba39f9523e + docs/components/stopservertoolswhenmaxcost.mdx: + id: 3d5f190bbd28 + last_write_checksum: sha1:33b384261388809634674326d26e796b0b0cbf1b + pristine_git_object: 11ec52648be118f1d13af01e042dcfc2b602490f + docs/components/stopservertoolswhenmaxcosttype.mdx: + id: c2083926e9db + last_write_checksum: sha1:c9d19b690b52680526df5ecd9c401694923f70f4 + pristine_git_object: 34953abc6de6ed5c79b5d279ac28eeeda9971919 + docs/components/stopservertoolswhenmaxtokensused.mdx: + id: 9cdc05daefc1 + last_write_checksum: sha1:c108a4ffa96be65bbf23cc325bbbcf72eda120d1 + pristine_git_object: 33d4618b464d6a6fb0f663c9b36f1895a4cb6962 + docs/components/stopservertoolswhenmaxtokensusedtype.mdx: + id: 09a14b719a59 + last_write_checksum: sha1:4dcd3a9fd58efd9bcfdf81ccdb95c31f521e1512 + pristine_git_object: 3818d9bfe79ed84f643f0c83acc52a9a6b17f843 + docs/components/stopservertoolswhenstepcountis.mdx: + id: 5f6cb922fa59 + last_write_checksum: sha1:06ef76461cdc29ae8aa8a5a6b6b258a185a610b9 + pristine_git_object: 0544b66ff99affa86cd06afaba1ed7aea932e60a + docs/components/stopservertoolswhenstepcountistype.mdx: + id: 41af6b8d6e37 + last_write_checksum: sha1:7eedd4d3ae889303ccd0d7d69ca2319d1741c51f + pristine_git_object: 709393f4936cb176e8a7ea5c9406b63512a4ca91 + docs/components/storedprompttemplate.mdx: + id: 750a712bd91a + last_write_checksum: sha1:92052028678ac2d4b905b0f646976dc054288bf3 + pristine_git_object: a9461bc3e848e3554a6101ec4c43988cf1239576 + docs/components/streamevents.mdx: + id: e9baa20de483 + last_write_checksum: sha1:6f55c435eea76405b2fd0e826d1fae0b3e6a3680 + pristine_git_object: 149400c47139d6908783f1dd9cfd2700a211bfdf + docs/components/streameventsresponsecompleted.mdx: + id: f7c112325f05 + last_write_checksum: sha1:968fdb7b3f668c102b94eb4069ea389b196afd1a + pristine_git_object: cd399518e63843cdca98e49ab9bfccc57166e43f + docs/components/streameventsresponsecompletedtype.mdx: + id: eade599586fb + last_write_checksum: sha1:bb7f8b52b58723b63784282fc23bff82a96ce715 + pristine_git_object: 1854d017509749ea4056f864374f8609a60e2e3f + docs/components/streameventsresponsefailed.mdx: + id: 145096a2bdaf + last_write_checksum: sha1:7ddf65a8ebbd3a48f40b32b3f568ac3043d9ec44 + pristine_git_object: 4c53cdcc151caefa0cd608d055e1c9af0d87f34f + docs/components/streameventsresponsefailedtype.mdx: + id: bb4fc1534206 + last_write_checksum: sha1:904e6d2b6578234a38eecf125187a6c73dfbe312 + pristine_git_object: cbec95a0f963603cdf9f877151b5a1c0fa916680 + docs/components/streameventsresponseincomplete.mdx: + id: 4f76d6544571 + last_write_checksum: sha1:4e52e8ba4f13ad9a1c7e312b4456e350f43f09b4 + pristine_git_object: b493c3ea9d40ca4663ce4b3b26311575e5c18fbf + docs/components/streameventsresponseincompletetype.mdx: + id: 2c820f020fa7 + last_write_checksum: sha1:51ddac4fa44dc865b81e9606911f8a056d2f1ed9 + pristine_git_object: 1d886a31947bb57d58b175af018d271dd08efcdb + docs/components/streameventsresponseoutputitemadded.mdx: + id: 91fcf7f96bcb + last_write_checksum: sha1:0a5b3aa4666b452e5750a161b39e397133139785 + pristine_git_object: 8121198a7c0b70e5c68c9b389d800d2a42aaaaec + docs/components/streameventsresponseoutputitemaddedtype.mdx: + id: "264576670340" + last_write_checksum: sha1:25052672d9b9ea1fe2562adbb4be939c3e251ad8 + pristine_git_object: acf8df9004a0ca2f9398705fb8c8264e78342dfe + docs/components/streameventsresponseoutputitemdone.mdx: + id: b5ee1c8831c2 + last_write_checksum: sha1:a52e215c4c85ac9e061d76342e5886d29a7e9786 + pristine_git_object: 5d02fd8ea8745be6f1b4a217892f1697e00fc6bb + docs/components/streameventsresponseoutputitemdonetype.mdx: + id: 2fb7934965aa + last_write_checksum: sha1:a5fc58c7a48c29f682beaa9f30accf1a620dd670 + pristine_git_object: 7671de0f55c2bd170b86ffb4682ad9e456a11522 + docs/components/streamlogprob.mdx: + id: 67598a2734a4 + last_write_checksum: sha1:b68b954c4c0233a97565785036243d8fd31870d1 + pristine_git_object: 398824645fa342aa7ff2da54600d4a8759b83f0f + docs/components/streamlogprobtoplogprob.mdx: + id: 512e44d2c601 + last_write_checksum: sha1:fa643d79e608574ac0210dbdebb293cae1d0af33 + pristine_git_object: 972fa7f69f80fae904b94b8a10bbed2fa7bbf1c1 + docs/components/sttinputaudio.mdx: + id: f4fc56cf1641 + last_write_checksum: sha1:816a73a74abbff305ca8405d04870595d525b7bd + pristine_git_object: 70a2660b7c0bc35aed96124e1faa3852b3117054 + docs/components/sttrequest.mdx: + id: 6a5e33cf6dbe + last_write_checksum: sha1:6fefcb5b5dd513388709f62acee929cde6bfb8ee + pristine_git_object: 198ca47de64cf983930c58cc618d3ef8c15d74a8 + docs/components/sttrequestprovider.mdx: + id: d8b1bac8e745 + last_write_checksum: sha1:e15551eddbe4c1f7c4515fa556d4873075512eea + pristine_git_object: 5eebff082dc885ed94ec0e6ceed8446c2ca104ae + docs/components/sttresponse.mdx: + id: a421f69065a0 + last_write_checksum: sha1:3bf5f6d14c6e2586808ee5a0db3cd911af03ff7c + pristine_git_object: 9a61014568868a1f08581e5b7580feddaf379f8c + docs/components/sttusage.mdx: + id: 11bce3b257f6 + last_write_checksum: sha1:a777bc390f180c1163612213633f2150a9566313 + pristine_git_object: f0b56839c067ce29024888f689d379ed83f86ff4 + docs/components/subagentnestedtool.mdx: + id: 12547a9efd5f + last_write_checksum: sha1:9141ce608f42d2c53e89f0e8e108252227a7366f + pristine_git_object: f8c149bf1aad26099c739360e137038a9e0e2295 + docs/components/subagentreasoning.mdx: + id: 2e412fc3ecc2 + last_write_checksum: sha1:095e527fa9f146290858b2c98b6a8ccc11755e37 + pristine_git_object: 17ee212d76548c12b456eef6c7ee1e92330478d3 + docs/components/subagentreasoningeffort.mdx: + id: cc922bbdeeeb + last_write_checksum: sha1:c41a98510c6e46da0cbdd0f1106d4595b8e63c22 + pristine_git_object: 6ff0d51d2b5668291fb70f4cd5ad649fe3f4f6fc + docs/components/subagentservertoolconfig.mdx: + id: f7fa49016554 + last_write_checksum: sha1:ca1963d4e1fdf93899b06c47d3b82662e4cd5a45 + pristine_git_object: 3ce20c0c2fe0e438349c42e9edf60f2047ae976a + docs/components/subagentservertoolopenrouter.mdx: + id: 8ede88c6400a + last_write_checksum: sha1:2c6d5bf4755ade31c622cd4a4658d874e77042fc + pristine_git_object: c50f5bf89454fc4ce29845ba8a16cc94c9858f19 + docs/components/subagentservertoolopenroutertype.mdx: + id: 36a519fbf209 + last_write_checksum: sha1:14f4bf5f550f0dfddb8bd950e000ed431a5470e9 + pristine_git_object: a93cd73684c2a51b27f8a1e13a09f980a676567e + docs/components/supportedaspectratio.mdx: + id: 236a2016da06 + last_write_checksum: sha1:638d1fbeb7e634fd924c4c1c92a0cc69f5291635 + pristine_git_object: ae925e49dfa250f27a1376567ed705c123aef3a0 + docs/components/supportedframeimage.mdx: + id: f34dfb27d78f + last_write_checksum: sha1:a979de72a67038af692d17cdb379b1d58e7ad0c8 + pristine_git_object: 64a19c185569b50eb0a3363b472c1c28807493f2 + docs/components/supportedresolution.mdx: + id: 4dab32379c4d + last_write_checksum: sha1:9b1c448644f808e8a5c888108c174574a1a31fea + pristine_git_object: ea274d2a7ef04a6bb8c56105e2274d962081246c + docs/components/supportedsize.mdx: + id: c38f709222bb + last_write_checksum: sha1:8b721222c2bd5b4de7f6fa84b909ffe145e06536 + pristine_git_object: e221cb32a5810c96165b8e0a5e6a955738ee275f + docs/components/syntax.mdx: + id: 0e7a97e89dd7 + last_write_checksum: sha1:f3317e2b7efd9ed8d3317626429b481c39bd56f8 + pristine_git_object: 62827a82d782671ed82209a07c3e5fe45d0c8392 + docs/components/system.mdx: + id: c12fddb7dc3f + last_write_checksum: sha1:fe84fa30543a8883abdbcf4fb6ef4d7936264576 + pristine_git_object: dbe433a69894078703441c765cecb0fe9508f44f + docs/components/taskbudget.mdx: + id: d8ef865b7ef8 + last_write_checksum: sha1:42460b389a954ffdabeab826d86a568932bc5836 + pristine_git_object: c98814d6f28a69a0e97fcf7cb57a55710bdc2513 + docs/components/taskclassificationitem.mdx: + id: aeac8f9fc6ef + last_write_checksum: sha1:4b11a69d3431763ab8893ca3cd300fad6c50cc2c + pristine_git_object: 905d90909e4ca1ebf23788e908547d317c45b498 + docs/components/taskclassificationmacrocategory.mdx: + id: d8faeb1866eb + last_write_checksum: sha1:3fdede5ad55103f7bc8285923ae59c5504297f90 + pristine_git_object: 1f45abf4cf3a64bfee61d75bb37266d2810b25d5 + docs/components/taskclassificationmodel.mdx: + id: d353dffe67fe + last_write_checksum: sha1:687cae9c2faeaf7a78369c8cb5fa5f8d810e7cc8 + pristine_git_object: 137c9bc4a2d64d9a598f678d91b9df9166f5bfcd + docs/components/taskclassificationresponse.mdx: + id: 73f2878bc0b7 + last_write_checksum: sha1:47dabfd5f462102b1da0123a49ce2da6da2b2ef5 + pristine_git_object: 40e0bc7f5d2839fd0bf51cba48f1748216808aac + docs/components/taskclassificationresponsedata.mdx: + id: 1acdab4dc53a + last_write_checksum: sha1:0d724edd4627973eb325289ad9411c6260f9540f + pristine_git_object: a22f20ac9d5c3b1c2c8bd92290c53cc23bf98df3 + docs/components/textdeltaevent.mdx: + id: 6badc3960bcc + last_write_checksum: sha1:f75988b1ac07ac21c455d798bdcdf57c3235cdd4 + pristine_git_object: 8214536b8bbe7bf9494b6dc989234abc09a39c57 + docs/components/textdeltaeventtype.mdx: + id: 4b1bcd9fb2a6 + last_write_checksum: sha1:4cb8d245bf1c46d62a04df81d600676ca73fd2fd + pristine_git_object: 13ece4933e2ed3a37004e9ad6dfdb39f3de2e08a + docs/components/textdoneevent.mdx: + id: 3b22c48d308e + last_write_checksum: sha1:c084bb4235cf09d1b76f7081eb1fa1373bd491ed + pristine_git_object: d2d166000dc6596a6d5b0f69d05319c107496096 + docs/components/textdoneeventtype.mdx: + id: bb12ccbbc7d6 + last_write_checksum: sha1:6ca22dace0fb5e7dd05b700d6e32d3ed807df1f1 + pristine_git_object: ce3ac0ebdc75725ec2ab945251c819a0144353c3 + docs/components/textextendedconfig.mdx: + id: 061069626d8c + last_write_checksum: sha1:c2fc0a4e7fe5c8817e26afe1a646e3e9593d3a86 + pristine_git_object: 04c08c1d74e51e7902360962f7bda67b70746feb + docs/components/thinking.mdx: + id: 8d7292f65441 + last_write_checksum: sha1:747fc54885c54d140e7c398d5fd5de79606ce248 + pristine_git_object: 2a631dc98969c3dd18eff57cbf4d630ce39dfe53 + docs/components/thinkingadaptive.mdx: + id: d3e5fe2a4135 + last_write_checksum: sha1:4582d6ef23b1e21fba755de8f75cd6d49675fd94 + pristine_git_object: 970ce43cb7364b35d06aa17346d9396e95f405ec + docs/components/thinkingdisabled.mdx: + id: cf4dce085103 + last_write_checksum: sha1:0d5c4141cae38ef701eb469c9cdb838c3737420f + pristine_git_object: ef2829f67a7bb69b05b3322713c87a46d5e725cb + docs/components/thinkingenabled.mdx: + id: 453ea2c27cab + last_write_checksum: sha1:ad555fb37bfcdb7e7ac537df4de7e028c71aed00 + pristine_git_object: 533ba7c8fa879e91e3134d65f5f0282aca3ba170 + docs/components/timings.mdx: + id: f8f7eb6e6313 + last_write_checksum: sha1:4061554783746bdb572dc5eb4ae678a677fc6c5e + pristine_git_object: 8d52bfaecf3fa301b6e9466ed356adb0b9202085 + docs/components/tokenizer.mdx: + id: ef12023b8d33 + last_write_checksum: sha1:207a75b5e4a8301a6cdbd39605c0f398bd13e305 + pristine_git_object: 54a7627079b16a50865cf6f2224abe36870c95fa + docs/components/tooladvisor20260301.mdx: + id: df2858dddd07 + last_write_checksum: sha1:94a6e30c4bc7ff7771b99d3f09c87604423b2847 + pristine_git_object: ee1f63bc170b35e5fb8da3390818160a2b4b93c6 + docs/components/toolbash20250124.mdx: + id: acc36fba0c55 + last_write_checksum: sha1:b0e3ad180f48dba955ae20481ae6ef55ace6b18f + pristine_git_object: d9f17ef27ea42b2251c85ffdd230af45f7293c75 + docs/components/toolcallstatus.mdx: + id: e79e5ffbe798 + last_write_checksum: sha1:338789050d562f0ac596d6a94783307e27a634b2 + pristine_git_object: 71119be6746c87da4f46f192496bd269cd98128e + docs/components/toolchoice.mdx: + id: 332ea8495fd5 + last_write_checksum: sha1:b65725095b022d7262f293076866841ec32f3c68 + pristine_git_object: 4a4be403a109154164a55c4a1d2b05f82f5b97bc + docs/components/toolchoiceallowed.mdx: + id: 2e62b54eb471 + last_write_checksum: sha1:a8c96649c4ba3e5cef672c74974fb5cb5aafc99b + pristine_git_object: b33a149ed34b20fc275c5d77f836e14b8b490d5c + docs/components/toolchoiceallowedtype.mdx: + id: bef41aac6932 + last_write_checksum: sha1:00e69b23722c812ea28a000ba48fd6ae140fcc1d + pristine_git_object: 898ee05034c185fae78fd71f8e5d402480c6962b + docs/components/toolchoiceany.mdx: + id: 4af3ccbde819 + last_write_checksum: sha1:0111f4cdaf62f04d616822ec48e936314e52cdf0 + pristine_git_object: 444b701550ffe69731ce410ba95a31d68261d302 + docs/components/toolchoiceauto.mdx: + id: dfdf03af8bec + last_write_checksum: sha1:3d6faf08e2c0b73a86dd5b6e01214b40f375e18c + pristine_git_object: 8759b2ff57e6e53cf04a01a02f7b7970d9e2c7f0 + docs/components/toolchoicenone.mdx: + id: a65f80fb91da + last_write_checksum: sha1:561f5d9c0cf863b470e54961fb76a80dd96268a6 + pristine_git_object: a042d8988f10a8cc18359547049853a409ad116b + docs/components/toolchoicetool.mdx: + id: 909ad21233d2 + last_write_checksum: sha1:1d54c7dc7ebecdc917f17ec7a49c60e66b2c7bde + pristine_git_object: 08139fd78887214b913d7afb2c34f098bdc73b22 + docs/components/toolchoicetypeauto.mdx: + id: b0c6cb5d3fcb + last_write_checksum: sha1:e86baaa3d57e24bbf7b4501888ddd9652aeaa89e + pristine_git_object: 6817216b64de42e834ab68a072287701e621daa8 + docs/components/toolcustom.mdx: + id: b3ea2dbc7af5 + last_write_checksum: sha1:dd0734eb86cbbba753632268613a2f2ebc8e8f78 + pristine_git_object: 57073f649edd84b26f2395c46aef55c86e31ed4c + docs/components/tooltexteditor20250124.mdx: + id: 58d2a6f35f9f + last_write_checksum: sha1:bbc36d5c8d48b8971fed82553489759ca2379c0d + pristine_git_object: 0fe06a930a6a67a5a007185f892422f232389d3a + docs/components/tooltypecustom.mdx: + id: ac3c7f5f5fa6 + last_write_checksum: sha1:bfbecb3b4e70cb8a4aa0379246f4ffbaae71b341 + pristine_git_object: f5ff9bfa009e34e0326ff7ef88e82082e54b20cb + docs/components/tooltypeephemeral.mdx: + id: b005ae7a4f69 + last_write_checksum: sha1:cb0079eb8c5809a9f76abb6349ad8a23e7f0c8f0 + pristine_git_object: 48e6f8afc2a41ccac4be220dd5d5d475a4d36b71 + docs/components/toolwebsearch20250305.mdx: + id: e583eb0b3bd1 + last_write_checksum: sha1:59297ba6e78d528a5a6cc0bcbefd1301c21af308 + pristine_git_object: 33510135de4236e72077c4acb6c8a8c65fe5f647 + docs/components/toolwebsearch20260209.mdx: + id: dfc99c1c297c + last_write_checksum: sha1:e3adde8067e2e5e5504165e7b8ebf1ca743d8352 + pristine_git_object: a70393e56b803a455f0ea3e82d9270ee84fed5fe + docs/components/toomanyrequestsresponseerrordata.mdx: + id: 282b92f982c7 + last_write_checksum: sha1:976995e37e897805df9f3f50c0aae39e41447822 + pristine_git_object: 09697e35761a40ad45f0715e05d25a9f57d30b31 + docs/components/topproviderinfo.mdx: + id: 869c6745d5f7 + last_write_checksum: sha1:6e10b9871f7eb7bf986ef79542e2eaf956a24cc1 + pristine_git_object: 76323666a17efddd3cad64a4803afe612d375e1c + docs/components/tournamentstats.mdx: + id: 4e7cd43c4bf4 + last_write_checksum: sha1:fcf38c7852517cc1ca206d8252d6965a3a6aef73 + pristine_git_object: bf6cd57c58962523bd7ba842c71b39305a446bbd + docs/components/traceconfig.mdx: + id: 61aafb246ddf + last_write_checksum: sha1:22a923aff3d5ee121860116be8f5ae79dda77aa0 + pristine_git_object: faeac4da1a7bbf70947da8fcf38246bba718b149 + docs/components/trigger.mdx: + id: a19ce9db8778 + last_write_checksum: sha1:b5b28ed637f381b8778df75d590a6845b901adb7 + pristine_git_object: 2c9910c80c69478dae82130d15fe5ea79ed2911c + docs/components/triggerinputtokens.mdx: + id: 976c883cc61f + last_write_checksum: sha1:08a2c96b4935b69f70b0b324351f93dc57df4c16 + pristine_git_object: 45784f009f3b4278413cbded0f51ca9f0888bcb3 + docs/components/truncation.mdx: + id: d338e8ec18bd + last_write_checksum: sha1:c8bc50c016758d48320643ce2965fedba9b1e3f1 + pristine_git_object: 6b46b4c151e73cf9efeb4bcbfb0343258a0ed9d5 + docs/components/type.mdx: + id: d15dd4f8a580 + last_write_checksum: sha1:9ab10f9a767e94d7da3f931b62a4f5bc36da9e4c + pristine_git_object: 496e8a8d4ba6503aa036e780f6aac53e5e049df4 + docs/components/typeadaptive.mdx: + id: ed021c787cd5 + last_write_checksum: sha1:bb6b3619ca5b6877ddd66dda0a2cb799c989ad33 + pristine_git_object: 01eae6d76ebf42187c1dcbeaa43288f5df94e8cb + docs/components/typeadvisor20260301.mdx: + id: 6b8fbaf1abe6 + last_write_checksum: sha1:a8d7df683cc00996868f4a8f16d43f5171f9786c + pristine_git_object: 92220371000c3ec2476ecbeaccc4f095d25a997e + docs/components/typeany.mdx: + id: b3bd6b0de96e + last_write_checksum: sha1:7d4c65b6740216e057d36ea498509249d9c97354 + pristine_git_object: 658b179115ff4db7f09c792544b5fae73a480520 + docs/components/typebash20250124.mdx: + id: 0f1fed4892ca + last_write_checksum: sha1:b57f67ff665ddf959a9078d1fcbd2b1eb9df7a6d + pristine_git_object: 02338a09349f6a610ed5313dd972a509b088b518 + docs/components/typeclearthinking20251015.mdx: + id: 67f48aa5899b + last_write_checksum: sha1:14110e0a9ffa2fd935e6d0cc8a0ab17021bf8114 + pristine_git_object: 1af8cc452c85ba10d50669082bfe65e5d2ed965d + docs/components/typecleartooluses20250919.mdx: + id: bb64f7361826 + last_write_checksum: sha1:20633eca21d3116ae57aedad18eca64e80141573 + pristine_git_object: 5be064a622f713124fcf746297a2dcdd76850088 + docs/components/typecodeinterpreter.mdx: + id: c93f61b0fed2 + last_write_checksum: sha1:13f5740aad556c24c2e9484da8e67e15b0d4d085 + pristine_git_object: 6af79caed7c31fa5750415ace82eafd7a2ad53c2 + docs/components/typecodeinterpretercall.mdx: + id: 9bad1b75289c + last_write_checksum: sha1:88de669f44eb1fb08ce07a972c635742fd80f384 + pristine_git_object: 374132b2a749b431e0860c9c0a7135ec61878ca6 + docs/components/typecompact20260112.mdx: + id: 6afc200110eb + last_write_checksum: sha1:67b122fb7d678523303b419575d85075c6cf260a + pristine_git_object: 8c90b7c0c4ccd514fd2b06a1e10c9879298978ef + docs/components/typedisabled.mdx: + id: 38f9c06b7850 + last_write_checksum: sha1:708a451e2d389c0c40fed9aa44a6186837103a4e + pristine_git_object: 65c2b6da67afde9dcf0cddf87d95465bafb054bc + docs/components/typedocument.mdx: + id: fa9ad2eb2436 + last_write_checksum: sha1:fe8fa4d17512f8263bea11e1e294e6079c223312 + pristine_git_object: 328ae7fcb9399517ec9cdaebdb94c435649922e2 + docs/components/typeenabled.mdx: + id: 2107f66972cb + last_write_checksum: sha1:47c1d819d31519b3d19a87f3389786d5c23206d4 + pristine_git_object: 52ed7b166a48116cbd5a6f950a50f3f180c62a84 + docs/components/typeexec.mdx: + id: bdffae9225e9 + last_write_checksum: sha1:adcee4778c3a095280c7e3541c1bfec21eba0139 + pristine_git_object: f35d6080ae445ba9cfbfd2a2bd75cdf3958a9f5f + docs/components/typeexit.mdx: + id: 231bf2edc972 + last_write_checksum: sha1:bd9c1dad3d5a571e77ca43b230885c8cf8ea740a + pristine_git_object: a1b9dbb3db0e85d68fee022a5d9626d9660f9b4b + docs/components/typefilesearch.mdx: + id: 26f10940b506 + last_write_checksum: sha1:08bc0328c13bb2364c99dc9094f0ae2eba46b48c + pristine_git_object: a3f18c8a20d24c2372a5255e23b19fc026a027f4 + docs/components/typefindinpage.mdx: + id: de31fbca93d1 + last_write_checksum: sha1:174ffebefe62a92ce23b56292c7bc0c70f1324a6 + pristine_git_object: e56d1f3c1a0b22cef242276d176d47894c4b848a + docs/components/typelocalshellcall.mdx: + id: 5bf492bd8ad4 + last_write_checksum: sha1:a66abfbde09ed71dfa93add4862e64b3b844d31f + pristine_git_object: 0af8acd63592cc7211fb13ed0ce921243b4f3c23 + docs/components/typelogs.mdx: + id: 9b6be157ecfe + last_write_checksum: sha1:da3b6998aa72148cfe7ff2bbef5ab6a438797784 + pristine_git_object: accf2ed99ce1962c6d1df51e0950841f3e41c16e + docs/components/typenone.mdx: + id: 1fbbd27c03b6 + last_write_checksum: sha1:003d0b57065e35457a5f365aec76783fd735125c + pristine_git_object: 797eb174cde7ef02e12c4379cb24208c1406bef2 + docs/components/typeopenpage.mdx: + id: 89a2b0de24a1 + last_write_checksum: sha1:1cc4fa33245f661d60f3f84b69fd7e520efc916f + pristine_git_object: e7e1d470ec3543c8c3a962bf9067d0b2f9e95f7f + docs/components/typeredactedthinking.mdx: + id: 04adae6db206 + last_write_checksum: sha1:3cbe8cf0cc55f1f67b552fa99c959e6d8b3ef577 + pristine_git_object: c02fa818a7b8c748126d1979eaf46d9f579b6a33 + docs/components/typeservertooluse.mdx: + id: 1247ec91e13e + last_write_checksum: sha1:426dc2920239071f856910e2e9b69493dd968f7a + pristine_git_object: 9c498fcc2aec9396db450b8ccf4296ac036af0a0 + docs/components/typetexteditor20250124.mdx: + id: 6104a1c13bf2 + last_write_checksum: sha1:041007e5b9c7d4ef048d0c380cdadedad4c6066e + pristine_git_object: 21cc14ae46b99547e0304a43c3f8b0333ed624f5 + docs/components/typethinking.mdx: + id: f2c53e514069 + last_write_checksum: sha1:aa074bdf3a3338e784c15b0315b124b360e9c05a + pristine_git_object: d2a690369a1e99d208acfd286221e27af361f382 + docs/components/typetimeout.mdx: + id: 719dbf6b334c + last_write_checksum: sha1:97c8ec16454e0abc9eb1e4dc271e8f4736bef54c + pristine_git_object: 8a9237d79d973b552b8a32c245ce7f3ea9d66a7f + docs/components/typetokens.mdx: + id: 35a43c3706a1 + last_write_checksum: sha1:237cb60d1b8ccb293e0e1d911d2010a02d17cb5f + pristine_git_object: b98ea9da912f1500a290c167ff26c705b52805f1 + docs/components/typetool.mdx: + id: f86dd3b2e318 + last_write_checksum: sha1:315ca10eda81bbf32e8d2e7d695598e09d80bfee + pristine_git_object: 4cef3b748c6ce9e9df0f407e2e4b4aca0c784e87 + docs/components/typetoolreference.mdx: + id: d3d5710fdc90 + last_write_checksum: sha1:c77fac65490534fec1463bcf75aa3252ddf9a9c2 + pristine_git_object: ac0f247ea9664d3c815bd094fa8cf570c62726e6 + docs/components/typetoolresult.mdx: + id: 07ae3f30e4a2 + last_write_checksum: sha1:aa2931bc195ddc15bd18d9fac6948f8f24bfbe08 + pristine_git_object: e7702ba4121c757b4f57d552a4f608bd4636e7b5 + docs/components/typetooluse.mdx: + id: fd677e8ed9eb + last_write_checksum: sha1:4ca40aedbae56b068f0b2e4b06a9f885c0411a6e + pristine_git_object: 6e4df39fe15fe8783509a79bae43d19783689ca3 + docs/components/typewebsearch20250305.mdx: + id: c5cd64905a32 + last_write_checksum: sha1:70d29a41edfb246a4e50bf98bfca9df61809d075 + pristine_git_object: 0eb55d9bee04b297fb97d45ca73536d3878481ce + docs/components/typewebsearch20260209.mdx: + id: e9da52a275fb + last_write_checksum: sha1:0199b41c05d93e272bc16f810d6a4c5915a0f05b + pristine_git_object: f9c864e42773897569d9dda09658306717fbb5cd + docs/components/typewebsearchcall.mdx: + id: f106073e7ccc + last_write_checksum: sha1:49a2fbfc2f23e1b0d5a0b06c3c83c1814faa4edf + pristine_git_object: 981349ba4f68bd68106c5604de599506315b3bdd + docs/components/typewebsearchtoolresult.mdx: + id: b8f83f24a5df + last_write_checksum: sha1:b8f03e26067f1299b775d15600559f6654733f3f + pristine_git_object: 1d9df7e9f1be8b0821a6e14f789438f9f89faed3 + docs/components/typewebsearchtoolresulterror.mdx: + id: 13d925cf7789 + last_write_checksum: sha1:5e9992e7fee86890fe8e1033f0b6bbbfc93e5776 + pristine_git_object: ff44734cf33cb8a24c20bbfb96dec9ef2ac504e9 + docs/components/unauthorizedresponseerrordata.mdx: + id: 74e10dac821b + last_write_checksum: sha1:5d05ecd86d6a093c6008c5fc80ff1d4093faf67e + pristine_git_object: 2b412cd70e911b8c1965a0197f6a5d6fe19dcaae + docs/components/unifiedbenchmarkpricing.mdx: + id: 65fd7d529047 + last_write_checksum: sha1:a79219ea4353fe6838ca5ad1350e2da1abeb33bb + pristine_git_object: 322906a434abef54a1d02cf8700c272fa6e9c58b + docs/components/unifiedbenchmarksaaitem.mdx: + id: 17da67bd22b0 + last_write_checksum: sha1:aebc8d03dec8e9c85c7aa87fe8547334297e504e + pristine_git_object: 0a22591fe6b7a32694c2c92165278da4f3473409 + docs/components/unifiedbenchmarksaaitemsource.mdx: + id: 181f24319290 + last_write_checksum: sha1:6b6b0883911fb085166e280f6f473337bf421956 + pristine_git_object: cf9d11cd0bbe2ca2fba8ce44b85d29ed6b32f78e + docs/components/unifiedbenchmarksdaitem.mdx: + id: dcd6a798328a + last_write_checksum: sha1:92c1b62516a4320315d6f886a2714eb47f826f75 + pristine_git_object: 95f66134be8fe2b94f9ba521e6894e2d0fc236e8 + docs/components/unifiedbenchmarksdaitemsource.mdx: + id: 6b5899e6a2c9 + last_write_checksum: sha1:d77003c307e4c82a0e521a02068a1217d37aa47f + pristine_git_object: a194185c8fda7c1377041151e57baf12b904ebfc + docs/components/unifiedbenchmarksmeta.mdx: + id: 7876023186a1 + last_write_checksum: sha1:a261008f3aad806ce06a1caf8bb9ca2df7a520f1 + pristine_git_object: ea52df6e00e46b6b3b21736ac5cf471f2965d1fb + docs/components/unifiedbenchmarksmetasource.mdx: + id: c6bc112e85a2 + last_write_checksum: sha1:0ab7afdb2f104c771c5850e05e45f3d116da9704 + pristine_git_object: 1bcb8e017d90d592e5838ad6c09c8bf67cf6d8f0 + docs/components/unifiedbenchmarksmetaversion.mdx: + id: 994afa2e9d2c + last_write_checksum: sha1:d113d8b5aedeecb78fccd3451e58b42428906a0d + pristine_git_object: 23ef4c9a45aea5d918e554f7868f772429ef364c + docs/components/unifiedbenchmarksresponse.mdx: + id: 713d03de2410 + last_write_checksum: sha1:b4145e36aca044cbbf6ee55583979669159d6da0 + pristine_git_object: ee48e645716b05d6473f5ba0199fb84264a44d12 + docs/components/unifiedbenchmarksresponsedata.mdx: + id: fd372e1c57e8 + last_write_checksum: sha1:6065c5a9cec604480837b4018fe94ef1cb6d4b99 + pristine_git_object: eb8045de9612900dea847a76e24965029dad03f4 + docs/components/uniqueinsight.mdx: + id: 02fd71bcb47a + last_write_checksum: sha1:793e90c78ab450e36533710d3fad6f4a75432e86 + pristine_git_object: 2dd2e0e312eae3044e8aa6ecb77210a8a9c9fa82 + docs/components/unit.mdx: + id: 0bdb46a190ad + last_write_checksum: sha1:e0d1ce7e9a1a44e61886cc706c99f412c4c31d12 + pristine_git_object: 83f68ad45191f3772161e6e74b618370f82b4df4 + docs/components/unprocessableentityresponseerrordata.mdx: + id: 7171837ab497 + last_write_checksum: sha1:47473559198e24e72ead5fd9ae6107d1c859ae6d + pristine_git_object: ef85de0e3899f1f4855e4a3dd7d7bf9df5157937 + docs/components/updatebyokkeyrequest.mdx: + id: db0862ec6814 + last_write_checksum: sha1:455ef2d62d3a47dc683e611a1e5b9943173f41d0 + pristine_git_object: fcdb0bb2f50a9c63912e5dd911039e1f5d3b05a8 + docs/components/updatebyokkeyresponse.mdx: + id: 9b4490c340b4 + last_write_checksum: sha1:e80cd233e3de3358ea447fc32844fabb9ba121bf + pristine_git_object: 335feb18256a83af9c732525307d1432a718f3a1 + docs/components/updateguardrailrequest.mdx: + id: 450912b18db6 + last_write_checksum: sha1:7f4d97114ddca06c474d4a47ea585d6119d7ec89 + pristine_git_object: 6127914dd10312a4fc00e387c9af8d2d2f1a7150 + docs/components/updateguardrailresponse.mdx: + id: e00dc0a0c6e0 + last_write_checksum: sha1:528476cf3a4f15900eb0f4d293498450f0b5079a + pristine_git_object: 9c95861831e9f31f54efd7d48d8f48eece10e369 + docs/components/updateobservabilitydestinationrequest.mdx: + id: b54091567003 + last_write_checksum: sha1:a49d260a3c096efeeda18b7f204ed6336c25aed4 + pristine_git_object: 1a6d04101d79b08a5993638272a569695d6151c2 + docs/components/updateobservabilitydestinationresponse.mdx: + id: be9661c3676e + last_write_checksum: sha1:c8fde493ab2c8285b0a800795e6106f2dbf3a63f + pristine_git_object: c7aba4370fef4f13a7640e16f1a5404bc640f78c + docs/components/updateworkspacerequest.mdx: + id: 9870d016bf28 + last_write_checksum: sha1:b798c6d985770a44b3db121bb2aa6cd983ad5387 + pristine_git_object: f7e959179cb3c4d74ad355125a253b88ef4819f2 + docs/components/updateworkspaceresponse.mdx: + id: b9779063a1b3 + last_write_checksum: sha1:729daaa0b8c1fb2d1857da765792f722f482e436 + pristine_git_object: 28f14c82933639dfc0375c255a91fa0967881dae + docs/components/upsertworkspacebudgetrequest.mdx: + id: fd79f23696a1 + last_write_checksum: sha1:9414b2f4067e9030768971e46b9d72b404fcd134 + pristine_git_object: ce9dd9f2d5cfb7d3aaabfa58687e4562ca7c0ed4 + docs/components/upsertworkspacebudgetresponse.mdx: + id: c06f43776223 + last_write_checksum: sha1:0ebd781f97d45b2b85b8bbc639f369a2d3bfed2b + pristine_git_object: 6c975bc498c17b2e732e06eb447c7001bc42a1dc + docs/components/urlcitation.mdx: + id: 30f4b4a19fd8 + last_write_checksum: sha1:bb9b6ff886f2ec6e039985276dcd724c08e19ac3 + pristine_git_object: 0386b33d888adf79e39cf88370468cc0dd874ea7 + docs/components/urlcitationtype.mdx: + id: 65cf0df11d05 + last_write_checksum: sha1:e0462d6e3d3b4d7772f765fd19b8c58f16d229b5 + pristine_git_object: c5fe94ebc3791026c16a9636c7d6077773297e19 + docs/components/usage.mdx: + id: d84b29a6ea8c + last_write_checksum: sha1:e9adc633c75f1e77e76fe32545662cc27c6304fc + pristine_git_object: c400fc42927885901a17ce82529b39c2cdadce6e + docs/components/usagecostdetails.mdx: + id: 95d8a52fead9 + last_write_checksum: sha1:d8b2597a2921b79c43fd30173a8c395cd60584b2 + pristine_git_object: 646988e4def5b952edb718a68bc8c85b39c4606e + docs/components/userlocation.mdx: + id: d197ccf2b36c + last_write_checksum: sha1:c7078ea2cd00c001dcef6ce68c790b9d3d718e2b + pristine_git_object: 2b1814dbe5bc4583007dd638b6a4a9c08c0c81ce + docs/components/variables.mdx: + id: 3312b9777716 + last_write_checksum: sha1:6ba9bb63173376b0dcb7ac22b859bfef3e3820eb + pristine_git_object: cd3d46d3af459e7b95090a8e74e22eed448b3fdd + docs/components/verbosity.mdx: + id: 8dacec626dda + last_write_checksum: sha1:77a815930df06dc0c0534ad059e49368be46d94d + pristine_git_object: 7dedd74d072b742dc84e8afafa3e2ae47dbded10 + docs/components/videogenerationrequest.mdx: + id: b92ddbd15ee4 + last_write_checksum: sha1:743e7c0116c988679d5d332d30e61835350b7cda + pristine_git_object: c624ac69002c061575e6bae9f4a1616a9be4058a + docs/components/videogenerationrequestaspectratio.mdx: + id: c14859c0d8c3 + last_write_checksum: sha1:4ad4aae702af1cd2ddee7b443c35c9b3df6824e8 + pristine_git_object: 67f56887bb4758559189e3e9e6123dff9a38df81 + docs/components/videogenerationrequestoptions.mdx: + id: 1d67160e7e7a + last_write_checksum: sha1:8f1c4b3b0a67cce0aad25ef560ca635a929f8784 + pristine_git_object: f3d6474edb250bfaecbdb3a1fa9c930e9587a46b + docs/components/videogenerationrequestprovider.mdx: + id: d6424dd5de9d + last_write_checksum: sha1:72aa46a3335220b579db56574ea179d150dbe2b6 + pristine_git_object: 63d009579e3822e439042152c3062db52e622fcf + docs/components/videogenerationrequestresolution.mdx: + id: b4287dc60239 + last_write_checksum: sha1:a3f036ac1637a950408f90bec2f628469b9efdab + pristine_git_object: 0b860ff3d717d0ec86fd0cf42a557cd7b0180d32 + docs/components/videogenerationresponse.mdx: + id: 3a932213188e + last_write_checksum: sha1:7d170bdf13476392c6c7e2a32c99ca7c1e17d436 + pristine_git_object: dd365941c8213459966629c69bbdd8134635b823 + docs/components/videogenerationresponsestatus.mdx: + id: 637442fde0ff + last_write_checksum: sha1:9368ca45d569e511e5faf18118efd7e3341473a7 + pristine_git_object: 5e612dc4b39b41e7d80b4cfc6942d730e650941b + docs/components/videogenerationusage.mdx: + id: 839f5b3e2353 + last_write_checksum: sha1:2fe8379d9ebf459b5dc44510ff6c5473be4c1e70 + pristine_git_object: 1916659065ee957050e522c051899e9e0c5b8d7b + docs/components/videomodel.mdx: + id: 7477360941c9 + last_write_checksum: sha1:cfb8b48981d4b96121011a288d965e5c1fff08fd + pristine_git_object: ad8a6c3f8e9de205349a5a33cead5e355e5b9228 + docs/components/videomodelslistresponse.mdx: + id: da08c4cf70a1 + last_write_checksum: sha1:a2a799c8769d23a55955a85823ec6e59a1c13b68 + pristine_git_object: 9199c3b3d19d8ada88382fa0d2cb2f0277ef3a8e + docs/components/videourl.mdx: + id: d08b4554c5c0 + last_write_checksum: sha1:7ae6976a0228f2bc89c4378faa7c2126b8477748 + pristine_git_object: 7cbbaeaa059c9bd9181ce53fa86817b66f675a0f + docs/components/webfetchengineenum.mdx: + id: 451a8be71be6 + last_write_checksum: sha1:598232963ff36f262ad7932e30e7fc89e495f910 + pristine_git_object: ee3957801804c250c113d79eedc6a389e325223f + docs/components/webfetchplugin.mdx: + id: 3bf8d3d97bb1 + last_write_checksum: sha1:e9bf63c441692594c407f9a3b4a68ab0d8a5d89b + pristine_git_object: f46512871f0085ea139c9c6df52876129ede63b2 + docs/components/webfetchpluginid.mdx: + id: 1ccbef91b255 + last_write_checksum: sha1:1925438961b3a21a8ca964705e684f0496996a32 + pristine_git_object: 962475a584e78c350aedb5f3134e4c1aa1ad1b7a + docs/components/webfetchservertool.mdx: + id: adf586974a70 + last_write_checksum: sha1:e0026c4aaa5d05a567dfb16224eb7dd3f8263da5 + pristine_git_object: fe93938c6cb8539b8b67d442a17c00ac086d169f + docs/components/webfetchservertoolconfig.mdx: + id: 91a9758a664d + last_write_checksum: sha1:1c319d3b2322905a434ad60a1e5422959f59efca + pristine_git_object: 1d52d81ac7f8c1ee44020eeece6cb5d1a053eb9c + docs/components/webfetchservertooltype.mdx: + id: 0f04046238f0 + last_write_checksum: sha1:2637a8bc828a4f0e2f028b27a3b06368f7c151b8 + pristine_git_object: d507399c49bbd3786ee88abd2f5fb8d761b82e94 + docs/components/websearchcallcompletedevent.mdx: + id: 350a1bf7690b + last_write_checksum: sha1:5e0bfb9d396b093721651c66643dbd51d9cded9d + pristine_git_object: 34bcc1fe4358ae3ac57119af2258d4afbf7adf01 + docs/components/websearchcallcompletedeventtype.mdx: + id: 8c9cbf82d0dd + last_write_checksum: sha1:5243fb23501a7c7655ca6218016548bd79120b92 + pristine_git_object: e1e9088e26cdcc4bf1a8fed2eb5f0110a07cf441 + docs/components/websearchcallinprogressevent.mdx: + id: 2e257ab60b45 + last_write_checksum: sha1:e6f50b8204641bd767343fa9e17a580065b4c8f4 + pristine_git_object: eaf3e60607cebd26079e7bb0b50bc9b5120eaecf + docs/components/websearchcallinprogresseventtype.mdx: + id: f8d21dc2dcd6 + last_write_checksum: sha1:c60711390c27bb544ba3bf7da1be1e89590c86f1 + pristine_git_object: 04ef37c8f50e6117c78a2379c38ea7861ba4b9fc + docs/components/websearchcallsearchingevent.mdx: + id: 12d2a63ebcbe + last_write_checksum: sha1:5acd5e40188568ac74a8000f3e95cf0717c491f4 + pristine_git_object: 5cd28105364cb5a439c5ee06af07bae536885531 + docs/components/websearchcallsearchingeventtype.mdx: + id: 378b44d122d4 + last_write_checksum: sha1:4aa0acca402e507e0f5b53f700b19e8440b7c4b3 + pristine_git_object: 6453f10f1843521ab57609e00cea4459984d565b + docs/components/websearchconfig.mdx: + id: 6d343d63543d + last_write_checksum: sha1:0a95768519dec7e4d01574b21f08c4f7feb7c1ef + pristine_git_object: 7fce2c52339b16ee22d21fd6983abf8dc8b3f5b9 + docs/components/websearchdomainfilter.mdx: + id: e6aef0d8853a + last_write_checksum: sha1:e537f3dea8da557bc1a96ac339099088041ff5ad + pristine_git_object: 7f963cd91692d20ac4615c5300d332b19ec832c0 + docs/components/websearchengine.mdx: + id: 2000e63cfaeb + last_write_checksum: sha1:495298bf169acc6e0adb86a97c5e412d371b1425 + pristine_git_object: 32467b812630ca2f6679393d7398144d49e8bbf2 + docs/components/websearchengineenum.mdx: + id: de0188abe418 + last_write_checksum: sha1:7931b92ee21a06057d273be6f52e15ec649ab20e + pristine_git_object: d0c7f8329d3c98def79ee10dadd5c63b0cb6863e + docs/components/websearchplugin.mdx: + id: 5cb313bf543c + last_write_checksum: sha1:90537e686b540148dc8fae0847e79552b3e72b9c + pristine_git_object: c4cbc7b9551c40b5845c91b20ec4dede18149143 + docs/components/websearchpluginid.mdx: + id: d033d5ea2573 + last_write_checksum: sha1:11622d868a103d09aa6a02ad5253f8fae2e90004 + pristine_git_object: 4e2731fc3c65857956cbd6acf8f2dc5566706116 + docs/components/websearchplugintype.mdx: + id: 421e1c81422d + last_write_checksum: sha1:d39ead4ac6060a5ea41de963e1e713af210f9c31 + pristine_git_object: 35edaa6c73e1f7c3731d7d5005897f72ca4ed496 + docs/components/websearchservertool.mdx: + id: cf9994f5aba9 + last_write_checksum: sha1:cc8bd65eb95f0a85c53c4d6f58281c70c28cff29 + pristine_git_object: 12501386ea51318cdadc2b3dcbe001800005f906 + docs/components/websearchservertoolconfig.mdx: + id: bb335e5d49e5 + last_write_checksum: sha1:0df601c9f454e72a8dc54e8f654201f8d3304f34 + pristine_git_object: f06444b67b2c7e6cd0a8790fe494d9a28ae0f7fb + docs/components/websearchservertoolopenrouter.mdx: + id: d1e3cf613d26 + last_write_checksum: sha1:014a351e3ba7d11d72eeb622e088215abdf7d4eb + pristine_git_object: 1e3301d318413b4d2f2cb5568d5e01da1b134e4a + docs/components/websearchservertoolopenroutertype.mdx: + id: 0868b45e29e9 + last_write_checksum: sha1:dd24a8e20fe1577d7c6d8fd4d65b32ec9456ba46 + pristine_git_object: 4a6088e9b6d38fe27f6f9449a9407224bdcd319a + docs/components/websearchservertooltype.mdx: + id: 043a6dca8ee7 + last_write_checksum: sha1:f6700362f96b7130ee4806ceabdf030293747de2 + pristine_git_object: 0a2ba3db67360d54f59a357027ebb0ca67394ab2 + docs/components/websearchsource.mdx: + id: 3ed4e793a3f4 + last_write_checksum: sha1:9888434e41b03d41c2d668ec6b1c939cc20e4853 + pristine_git_object: 870075f95e7bddd71785d1a9aebc82ec751226bc + docs/components/websearchsourcetype.mdx: + id: 3ddbc17b1145 + last_write_checksum: sha1:0a7c17767c867b60614f2557b738b090b811c82f + pristine_git_object: a7be3b3d7329f05b2811e9961bd15903541be69b + docs/components/websearchstatus.mdx: + id: 10ad5bbdde7e + last_write_checksum: sha1:9c9476967dc3135c6443efb573c474acab396a33 + pristine_git_object: d24fe5f411ca8e3bcbaad9e364d7e7613bc8aa0f + docs/components/websearchuserlocation.mdx: + id: 472951d8225f + last_write_checksum: sha1:7342cfe19e978ced434c23766ef8cd796198db49 + pristine_git_object: dccb9d9a12273edb53744a22777a64e6d0f3ec74 + docs/components/websearchuserlocationservertool.mdx: + id: 33dc2b3bb3ad + last_write_checksum: sha1:915d28609fce821be75c94f4bf185696ad904c05 + pristine_git_object: 98a2e0b608cd854c23c7ddc0e0badb0de30423b3 + docs/components/websearchuserlocationservertooltype.mdx: + id: 4b919bbed3b9 + last_write_checksum: sha1:022a1fdc4b98ebc6f14e6c79c5f98f7239ecae64 + pristine_git_object: e10fc7e428d0e3802bd33da844bce0ad241d553b + docs/components/websearchuserlocationtype.mdx: + id: 2df2844a96ee + last_write_checksum: sha1:1a58eaab78f5cfb3fba15aeddad9405b5ca13fa9 + pristine_git_object: e8a689098106c445424b89fe5baa348824f3a36c + docs/components/workspace.mdx: + id: eea9c32d09c4 + last_write_checksum: sha1:e5816ed055ce054c3e3579c4f3ffca7f2a44c34a + pristine_git_object: 897afc9c21843812ca8c08d3fdda1f891eb80e5d + docs/components/workspacebudget.mdx: + id: e941741a8d84 + last_write_checksum: sha1:c94db9e8e6518f8da147deddd13cdb76a34609fc + pristine_git_object: d9aa348c48cff32a404a4cd135ddcdc3aeae4631 + docs/components/workspacebudgetinterval.mdx: + id: 09ea43a006b1 + last_write_checksum: sha1:08c36a36f2d1529da4bcc1cb6ec26f89e5a5d3f7 + pristine_git_object: d6b8881a231b62710a462d3e95b63cba68216d6e + docs/components/workspacemember.mdx: + id: 488993b97756 + last_write_checksum: sha1:38c9308c483bd10a4bcb1af4e1d1ced1a1c9151e + pristine_git_object: 3e77b3d5194165ae231ac649e92d74a25d9b5505 + docs/components/workspacememberrole.mdx: + id: 61bd9cfaba50 + last_write_checksum: sha1:53d06ae2c195423e5c8e87e73ed33664c20ab65a + pristine_git_object: aa60a54ac2096800d7ac3d9b1130beeb9507428b + docs/errors/badgatewayresponseerror.mdx: + id: d60591f67794 + last_write_checksum: sha1:2c6bbb4b3b91f42e43bfc82ece58b32186ab6d6e + pristine_git_object: 62ce7a1a3bde35c8ce38409727739d8c9e6cc59e + docs/errors/badrequestresponseerror.mdx: + id: d595cba2d9a9 + last_write_checksum: sha1:9ce55e58857e8f87b9a69bccd2023fef9a4bbf36 + pristine_git_object: 5453987ea78be5e72cac82bb71023b40528c1cd6 + docs/errors/conflictresponseerror.mdx: + id: 130bd0076f35 + last_write_checksum: sha1:e996aed582dc99500d096ccb83cf68911fc40494 + pristine_git_object: e3a48471610ada9efeb64f8e3443999afa6833e8 + docs/errors/edgenetworktimeoutresponseerror.mdx: + id: 203457916ba1 + last_write_checksum: sha1:c33c9d83e9a29351bbd7b2b28a6556672ac7603c + pristine_git_object: 5e48d2ebad3bb46df3a4e0bf0b22313865fcc403 + docs/errors/forbiddenresponseerror.mdx: + id: 224f2ffa6660 + last_write_checksum: sha1:004c2860216b8b04b4362b928c509a54cced9f9a + pristine_git_object: c520471dddef3c548f5481114e12be90b7bd5788 + docs/errors/internalserverresponseerror.mdx: + id: e3cb72f51ee2 + last_write_checksum: sha1:330b24172967b4b0bc97b4d58a455d8075a0c339 + pristine_git_object: c4a95bf16f458aec79b343ea20006e05fbf87a90 + docs/errors/notfoundresponseerror.mdx: + id: a387a1eb646c + last_write_checksum: sha1:34bc6d1c3d39c2ffc1c83490364d675c032e0698 + pristine_git_object: c9c23ff0f6a2e8d17157c282cc6a9d7caa6de156 + docs/errors/payloadtoolargeresponseerror.mdx: + id: a2428bf1899b + last_write_checksum: sha1:57ade2f54c10306bc800eb0390197b6ea96d9805 + pristine_git_object: 06c96f02e63fc9d532d04cdf30b718594858663c + docs/errors/paymentrequiredresponseerror.mdx: + id: dddfbda01b46 + last_write_checksum: sha1:214872e286b95ac78f8806d8787d837b5536cec8 + pristine_git_object: 959733dad5b93a9265224c21c11e90795a560dcb + docs/errors/provideroverloadedresponseerror.mdx: + id: 86b8324f4884 + last_write_checksum: sha1:9148d265697baed5a75d52a5ba06f4c079add6ae + pristine_git_object: 44e71a2b362b2907eb75d19f8f0a715a4cd437d5 + docs/errors/requesttimeoutresponseerror.mdx: + id: d6a4789cc5eb + last_write_checksum: sha1:6d03c71193040f4229370eb7526f13149814617f + pristine_git_object: c7bdd746a3c0d98eab9c3d37cdb0f467013ec7e2 + docs/errors/serviceunavailableresponseerror.mdx: + id: a3536716f3f6 + last_write_checksum: sha1:b75ecc4a893b1688dd505df67b2b34e26fc92509 + pristine_git_object: 978785d13401de872aeeac3b206e1f330db5dee9 + docs/errors/toomanyrequestsresponseerror.mdx: + id: 86b383c731e9 + last_write_checksum: sha1:cb80997427e487d5cd2ffa80f629bf59743fd181 + pristine_git_object: dae39dad4f021c874b685558b8e59eb79301e154 + docs/errors/unauthorizedresponseerror.mdx: + id: 67ef9f36961b + last_write_checksum: sha1:7378c72dd35e5bcae7316ade30f6a53dbb74c35d + pristine_git_object: 5a1e49f8fd03ef86c17aae606516498e0cb2c735 + docs/errors/unprocessableentityresponseerror.mdx: + id: 83abdd4bab47 + last_write_checksum: sha1:b1ff6bfecf10def4eb3a1d3f5be9b9cbf13ce926 + pristine_git_object: f8c3a25b9388bdf08c42aebaefc8999f86444d6d + docs/models/internal/globals.mdx: + id: 97b492e9b34b + last_write_checksum: sha1:ddff7485f3cc1d9d01d082c38abe327e7ffee296 + pristine_git_object: 905f480d8b03c82343c8b1a8b8669898fa79e1bb + docs/models/utils/retryconfig.mdx: + id: eb84a3cc692c + last_write_checksum: sha1:3cc5ffa2cf98a80d59818495896591a5e2c807c6 + pristine_git_object: 5342a8f5681d437adc719527c45d23aac0ebe84c + docs/operations/arena.mdx: + id: fd0c961ea26d + last_write_checksum: sha1:48d0112803ed464cb9f9fe06d4b58f982f936522 + pristine_git_object: 455ab607b237f29dd06d6548926f8ee08be410aa + docs/operations/bulkaddworkspacemembersglobals.mdx: + id: f198abbe4de0 + last_write_checksum: sha1:ca25e8bae0fa1b09844c8ed66e174d7a8c06542d + pristine_git_object: a53ed3696251866af6412a052f44e6cb2d7665d8 + docs/operations/bulkaddworkspacemembersrequest.mdx: + id: 4d62073b9e0c + last_write_checksum: sha1:3a908b54a28fb6fa5b1ad620723aea7414870657 + pristine_git_object: 5b61022c5443a46904016af5a447dd0951639abf + docs/operations/bulkassignkeystoguardrailglobals.mdx: + id: "399016922095" + last_write_checksum: sha1:61c5b111db6c5d74b921a2a913ac0bdd396ad93a + pristine_git_object: c5e78a4b8f261e2cd00e2ee15ca6b378a2944dcc + docs/operations/bulkassignkeystoguardrailrequest.mdx: + id: d7bf7df426e0 + last_write_checksum: sha1:ed94697637c8864c2ac10e9db35195ee9c1cd34c + pristine_git_object: 47d8a382f1f51afdaa136d30df74f5c15a60e2ab + docs/operations/bulkassignmemberstoguardrailglobals.mdx: + id: 2cfaa8b1357b + last_write_checksum: sha1:9ac6311813331818676ade417d0c30084f7f7b4c + pristine_git_object: 4b04ca8a6fbf2cdfe731ce0698995e4a6baaf1c6 + docs/operations/bulkassignmemberstoguardrailrequest.mdx: + id: 3a83ef860276 + last_write_checksum: sha1:eb1497dea2e4e7f6d90b82773d5cf7f0a2a0076e + pristine_git_object: ede199d37a6e07c1123ad600d8a48f16bd6501d5 + docs/operations/bulkremoveworkspacemembersglobals.mdx: + id: 67680f4fc801 + last_write_checksum: sha1:f39994a84f399aef92e86e08ede88473aac0514e + pristine_git_object: 9b483f8f228020caee504c2962fe474c987c362f + docs/operations/bulkremoveworkspacemembersrequest.mdx: + id: 9703a19d26d9 + last_write_checksum: sha1:40e2797cb5830fa618aa89b2b011a827e40d6f95 + pristine_git_object: 40b348890ce0a1b843f60339109c66068228d42b + docs/operations/bulkunassignkeysfromguardrailglobals.mdx: + id: fbd7faa5cbbe + last_write_checksum: sha1:376917fa12688d4e2f74ee10070829be10d0a26f + pristine_git_object: 0fee944ad1c2df201e0d078e2d9af7b36a04923c + docs/operations/bulkunassignkeysfromguardrailrequest.mdx: + id: 717f9426ddcc + last_write_checksum: sha1:7a7e5cb2e4797d31799ec09fdb6a705a1d218a29 + pristine_git_object: fba4dbe777dd0960a8f2090ea0a662b9c088e14e + docs/operations/bulkunassignmembersfromguardrailglobals.mdx: + id: 1eedf1299413 + last_write_checksum: sha1:1cffc4707e13b9e22506e7736d06b996f8c17703 + pristine_git_object: e21cf59f2517ea21a281c5e6bb78d02e9e7b1e95 + docs/operations/bulkunassignmembersfromguardrailrequest.mdx: + id: db4a10e02011 + last_write_checksum: sha1:07a2b233999d732b3559f431337d40cbfb8acb18 + pristine_git_object: de22a4c7b44e291012ca85daacc77bde58afbfa4 + docs/operations/content.mdx: + id: 6f64feb2d798 + last_write_checksum: sha1:329d9719c9e25478666963df7b79710aa626d988 + pristine_git_object: 1df0aac22b125266e577419c135f63176473feef + docs/operations/contentimageurl.mdx: + id: 766d8d5a4601 + last_write_checksum: sha1:6334bbbb12dde58bbbace7feee85fbe50436dcd5 + pristine_git_object: d0e186ad162d7f0d0bbf68a5110e54f23e737d53 + docs/operations/contenttext.mdx: + id: 537b5f749941 + last_write_checksum: sha1:49c12ecbb5dfd1da81be814c3e70baa9c249d432 + pristine_git_object: 08e418f7bcf3cf8142171de78bedd0243bda6854 + docs/operations/costdetails.mdx: + id: a5015273e58c + last_write_checksum: sha1:90a330bfa37e208bcee6615af2ee7535c4416a26 + pristine_git_object: 753493b8d505e9317dcaca6fc897da7e30e91d0c + docs/operations/createaudiospeechglobals.mdx: + id: 9b19782b0fc7 + last_write_checksum: sha1:620e2236612f7cdf7dc23e0f975671e979d7e4f5 + pristine_git_object: 78fe3a35c7c813e4554c8b8d3e403f4902a17c32 + docs/operations/createaudiospeechrequest.mdx: + id: 097a81eed964 + last_write_checksum: sha1:1a773adccf87e107b0648cc0034e97613378f47f + pristine_git_object: 176fe2508bf060b22bf9f2c8c8fd158a96fef19e + docs/operations/createaudiotranscriptionsglobals.mdx: + id: 3a50c3fec9de + last_write_checksum: sha1:df0aebe1971befd5930236620a6ea94dbec73898 + pristine_git_object: 2427dcaa5a305401e2e863eaaa6a99bb53183c51 + docs/operations/createaudiotranscriptionsrequest.mdx: + id: 68a813383936 + last_write_checksum: sha1:a3ad7e4691917927539d6c614788da7f4d6b4892 + pristine_git_object: 63faa868b09ae95876ac3df06e039988a7433f9f + docs/operations/createauthkeyscodecodechallengemethod.mdx: + id: a0b8389b8278 + last_write_checksum: sha1:e1891262a1be872336e691be4dcedee58e95a407 + pristine_git_object: a3c062d141925239a4d66db37e4c2e8040489c53 + docs/operations/createauthkeyscodedata.mdx: + id: 96a3b71e147f + last_write_checksum: sha1:a49802a7d6ded38299eb5d2e18e8ad170fc468dd + pristine_git_object: 7089ba199783d6c5030b47b4a6fc10a42ddc8162 + docs/operations/createauthkeyscodeglobals.mdx: + id: 9a3b43a7dab9 + last_write_checksum: sha1:537fff7cdd69b9c37002a3a5da7970d1b32b589f + pristine_git_object: 4332a2403fb1c3b671a79402577634889335e7aa + docs/operations/createauthkeyscoderequest.mdx: + id: dc957c56c101 + last_write_checksum: sha1:1ab68fc71bb22041efb8406f58c34c12d386ae51 + pristine_git_object: cdafce622ad06d2835ea636cfd1ba7606a7c35a3 + docs/operations/createauthkeyscoderequestbody.mdx: + id: 976d7ed7ca9e + last_write_checksum: sha1:70c621322a830c6891c417b57820953aa4bf9d86 + pristine_git_object: 2b4c4db93adf3350cce0c884942bcf4c15b82a8a + docs/operations/createauthkeyscoderesponse.mdx: + id: e1f782dea5e9 + last_write_checksum: sha1:42377b77453fdc76d20455839f520abee7107556 + pristine_git_object: 5044f5777fcbceaac89ea96adc0ea769a9efc274 + docs/operations/createbyokkeyglobals.mdx: + id: e631e8e4e0fb + last_write_checksum: sha1:7cac52a36f1682f8fdcbe9c0425b0bd07a1a6375 + pristine_git_object: 7a4e3e75e1e56f2b24ccf59267fbf93b4ba61468 + docs/operations/createbyokkeyrequest.mdx: + id: 091fcb472560 + last_write_checksum: sha1:e19c5fbd990dc014fcbb3c307004323b9e656a45 + pristine_git_object: f8b09da30a16c39bd745dfd810353b2d887372a9 + docs/operations/createembeddingsdata.mdx: + id: 1bb218f30173 + last_write_checksum: sha1:47448375c4de6ee644e5069f33bb759a52c4cc03 + pristine_git_object: 07670e00c0d49d2e30cb3b94b2c321eaad49a657 + docs/operations/createembeddingsglobals.mdx: + id: 11cf622f54b6 + last_write_checksum: sha1:84a77bf7b6dd2233870b2af386f6d4bdd87d2cbf + pristine_git_object: 2325d62ebd4a28817cb1923f00fb05a74b905395 + docs/operations/createembeddingsrequest.mdx: + id: 1dba77aacceb + last_write_checksum: sha1:b78814e2fcc4db2ce6e1d55b2e4a326f1bbd330e + pristine_git_object: 6d20f0154de8502a6deb3686908bba8496747583 + docs/operations/createembeddingsrequestbody.mdx: + id: ce68e3b84ec3 + last_write_checksum: sha1:78942806d1371286f52486cd13b7881da11dc517 + pristine_git_object: a669d4e6b74d84f91888f9a8b354ad0b13c281a7 + docs/operations/createembeddingsresponse.mdx: + id: 4db044e7c8a7 + last_write_checksum: sha1:9b1ed48afb937e503da99a9d9f6c26ee036d84be + pristine_git_object: b845fd2c1cb8794159a4b5ee0ab0d315bfb567fa + docs/operations/createembeddingsresponsebody.mdx: + id: 6ae2fb67a8d9 + last_write_checksum: sha1:08b93de7b4453a67131f7a9699363391073b0b78 + pristine_git_object: 4efeda7aa813ebf97131645e6af8e49853731100 + docs/operations/createembeddingsusage.mdx: + id: 4f9205ca2bb9 + last_write_checksum: sha1:cda993a456ed0e22740a2d6d657dd499199e742a + pristine_git_object: 1050293af3353abc1dba846e61f3d6980cc126f8 + docs/operations/createguardrailglobals.mdx: + id: ce6e792df15c + last_write_checksum: sha1:6542508eed5dbd74bf6812b8cc0cc9cfd3157d06 + pristine_git_object: 89d6df049a07dd0c7fb980daeee97309cc3ce74a + docs/operations/createguardrailrequest.mdx: + id: 3d30aa9a4ec7 + last_write_checksum: sha1:0440e47100b0ce6309e6ea0d16b7e4e9be50ac59 + pristine_git_object: 906c993096e226923d9aac19bf0bb82ffd35936a + docs/operations/createimagesglobals.mdx: + id: 3eca6cb49159 + last_write_checksum: sha1:9ac3837e42882bcb0edab9d0d801c0893d53d3e5 + pristine_git_object: 98b5f6f8e4ff70e4a724f1a7563f4754af9d3203 + docs/operations/createimagesrequest.mdx: + id: "245236481860" + last_write_checksum: sha1:ed27f120e971b7441f47c0004ddf93cca4d9b215 + pristine_git_object: 5e9a2d730adb55e520be46afc169272181d301c5 + docs/operations/createimagesresponse.mdx: + id: 852027a00620 + last_write_checksum: sha1:f65739779d5b4cd6cbacf59817765623554abef6 + pristine_git_object: 77636052b24b9c8973895543fc9bacebe8459844 + docs/operations/createkeysdata.mdx: + id: bf8133a06827 + last_write_checksum: sha1:3c025c7db19baa791496ea014626ae736a694aff + pristine_git_object: 61f267fb3079b5d62c7359131825e9871cccdf92 + docs/operations/createkeysglobals.mdx: + id: ebcc738c53da + last_write_checksum: sha1:dcec0f5013ef76e33fc43437e5689185abf61cb1 + pristine_git_object: 976d57a664c3b1c252dc9e89996e69fd6262ab4d + docs/operations/createkeyslimitreset.mdx: + id: ebd66f656675 + last_write_checksum: sha1:f752d1a24614c55edb8547b24d245b3bdf3ced22 + pristine_git_object: 89738fb95036853c42687c40a753fddec78d8823 + docs/operations/createkeysrequest.mdx: + id: 4da7652df80c + last_write_checksum: sha1:eb2064be6cea0c4c35ca9ba42d28794a352501d6 + pristine_git_object: 9ec01bf61826e888c544e698af19baaa8c51980a + docs/operations/createkeysrequestbody.mdx: + id: 77bb49febf62 + last_write_checksum: sha1:6f150fbcbab58887eeaa41b37f2c511b6ec60879 + pristine_git_object: 37ca00af34f104adb27c9675861130e30fcca1be + docs/operations/createkeysresponse.mdx: + id: 08e825fab080 + last_write_checksum: sha1:ecbb7dd123519f348339649a9f038d44c24d12d6 + pristine_git_object: f5caa2c479c5b9fa1f2f0c5ee88b1c0057c30c1f + docs/operations/createobservabilitydestinationglobals.mdx: + id: de09999b6578 + last_write_checksum: sha1:3f7f4167ab7c14d54bac74001d241091abbb5939 + pristine_git_object: 778aba14227f36282c39c9a4785c39f4eed4f12f + docs/operations/createobservabilitydestinationrequest.mdx: + id: 495bf0f61d65 + last_write_checksum: sha1:673cc61125bed9f417e08c1ede0873fd9a345040 + pristine_git_object: 3c62d6ca484755b21657c0c499e12f88762be6be + docs/operations/createpresetschatcompletionsglobals.mdx: + id: 7dfa93149d0e + last_write_checksum: sha1:873cc7294e76df7cde050b31326d76970b131c23 + pristine_git_object: 47f3111585c9ebddf1b901bd83af5435f8bb77b0 + docs/operations/createpresetschatcompletionsrequest.mdx: + id: 39f1178223c5 + last_write_checksum: sha1:3a69a7b2dd97496c8eb4e9da41c0d4308da29b6b + pristine_git_object: c6bd7807763eea7b961d33013a53c7406708c246 + docs/operations/createpresetsmessagesglobals.mdx: + id: 3480905d3f56 + last_write_checksum: sha1:9a13fa917d7098a6677ea856484e949cbf276c10 + pristine_git_object: 278c5d1f8aff8c827bfd6fde514002d2131ff121 + docs/operations/createpresetsmessagesrequest.mdx: + id: fb3300b6e323 + last_write_checksum: sha1:af4a30cca664a4541f4284442048bac11c47b5fa + pristine_git_object: 71d6249edb1c7fb01a6fb87fb81e5ad626d1b0af + docs/operations/createpresetsresponsesglobals.mdx: + id: 88e0cbfc3d73 + last_write_checksum: sha1:d80f9d1e85e177cf07e66d04421929dfcbf02210 + pristine_git_object: 9d4fce86d1d1de2ce743164a3f46d47a61c954bc + docs/operations/createpresetsresponsesrequest.mdx: + id: 6f3505cc8829 + last_write_checksum: sha1:fcac68bcfe08ab50974d6b395244217e1731e4dd + pristine_git_object: 54dde0eb3c1b5ac1d83e5724e4d085f151d881ea + docs/operations/creatererankglobals.mdx: + id: 4cb9d6ca73a4 + last_write_checksum: sha1:6af3dafb586c07947123d4aa815cbd85212e4332 + pristine_git_object: e0e136ff279b76a3c927ff85bf5a8c46454f7d87 + docs/operations/creatererankrequest.mdx: + id: 945e0e3ab095 + last_write_checksum: sha1:c3b2ec46861ebf308300a4de1c47e0b080dc0db8 + pristine_git_object: f0d351fc5e1348b126ff9bdb7ca184405ede80dd + docs/operations/creatererankrequestbody.mdx: + id: 70e89df7dc65 + last_write_checksum: sha1:08cec5610e04408ed6ba5d9a2a02dc25121dac9b + pristine_git_object: b5640657b90287594f02c7c547637a208c5d63eb + docs/operations/creatererankresponse.mdx: + id: 1cc3705ce113 + last_write_checksum: sha1:9eabc300f420fc0b4177bc4527ff849a7f05366c + pristine_git_object: 2d6beaa11af27b90eb30b947ae09e4b42d67c8ed + docs/operations/creatererankresponsebody.mdx: + id: 644fcf9015f0 + last_write_checksum: sha1:ab893be11b175b17d107e1dfd3c2cb93b06d49b7 + pristine_git_object: 9dc87532b08b0e353edbf536b886cb3481f4a8a3 + docs/operations/creatererankusage.mdx: + id: 1a4c079d6547 + last_write_checksum: sha1:4f30623b27b0c76513b0411954e6674161933c81 + pristine_git_object: 66beef7ea2c9976553933fd4e1b0dfcede458576 + docs/operations/createresponsesglobals.mdx: + id: 2c7b20a60b97 + last_write_checksum: sha1:dd462e627e236e664aacb0c9eea5221711167779 + pristine_git_object: 60b3ee5d2d34539516415a6edcf2c9947279ffa7 + docs/operations/createresponsesrequest.mdx: + id: e7abcfe5f133 + last_write_checksum: sha1:f95f4e6f0fbcdc09935f95d51eee08592c9b0d10 + pristine_git_object: bd72e62c216e3d156639d7c36ea6241cba7f7a41 + docs/operations/createresponsesresponse.mdx: + id: 405549d19438 + last_write_checksum: sha1:a2ef51d1e93fe47903803316e036fe579ff69903 + pristine_git_object: a51a1e375e5ec80ff76a1e585477dd2f6ac43621 + docs/operations/createvideosglobals.mdx: + id: 84de29ff23d6 + last_write_checksum: sha1:b0e6bc84afd5b4bcdb3f491c64b3f5c15e74d187 + pristine_git_object: be83bcae410c1774dca5ede12e56fccf07e458fa + docs/operations/createvideosrequest.mdx: + id: 774cef074ace + last_write_checksum: sha1:98d8a617fec35a14e4c42446399e7e39304a0d72 + pristine_git_object: 2bb242fb936d2a148caba00ef2336e91b374451d + docs/operations/createworkspaceglobals.mdx: + id: 9bfc0abafbf9 + last_write_checksum: sha1:fa52011e5149bfd462745b9e921bdeb1c116ec4d + pristine_git_object: c85655e7356c063b464215ed66b7a0c545f52ce8 + docs/operations/createworkspacerequest.mdx: + id: b4975e319320 + last_write_checksum: sha1:bc45ec8548c8353bb942035391cf76f345367d6a + pristine_git_object: c4c5d7a85c470fb2c54aee1f816c0dd0b7da3226 + docs/operations/datacenter.mdx: + id: bf5ee96a37bd + last_write_checksum: sha1:c0e9c06f8a484108aaf5a39fcbf4bc712193bc0c + pristine_git_object: 03cecfd4ec0719a6f5a1b8ea3ae2480f76b650aa + docs/operations/deletebyokkeyglobals.mdx: + id: dd77cb8066bd + last_write_checksum: sha1:dd56427b351443a57a82eb5dbca947ff14252645 + pristine_git_object: fa05fb4e16ac69100faa6ccd7a45e4e287fa6778 + docs/operations/deletebyokkeyrequest.mdx: + id: 5f6e81896314 + last_write_checksum: sha1:2927f00b81e9bccb0d19ce46dfd3fdc23475eb4c + pristine_git_object: 7fdac9559bfcf2860dbd533e0d3ae974ab26f193 + docs/operations/deletefileglobals.mdx: + id: b95c49d91968 + last_write_checksum: sha1:1eaa5442be2df2702baf53f5dddedd40ce930fcc + pristine_git_object: 7cab840ae2623e4f8ccd5d34b4997e8243cd72d8 + docs/operations/deletefilerequest.mdx: + id: fa38696c8455 + last_write_checksum: sha1:7eb16774a8ae2220532b26d9f22e0bf84c66d539 + pristine_git_object: 3202a43f729c1d8699d46ef23f62074d04114e08 + docs/operations/deleteguardrailglobals.mdx: + id: f3c051209faf + last_write_checksum: sha1:1b12ecd3f259ec98d2377fceeb967163ddaba3cb + pristine_git_object: 0c506f590de345a5f884792ce0026862b61c3195 + docs/operations/deleteguardrailrequest.mdx: + id: a7b7e64c7fb1 + last_write_checksum: sha1:e993d4511c68b02e368f21a0b319b2068c6180b4 + pristine_git_object: ba80054b8619991e06ee23b1ce40a97692b15c77 + docs/operations/deletekeysglobals.mdx: + id: fd6447706ee1 + last_write_checksum: sha1:34725257cc7da12269adca861580e36ab2b82d56 + pristine_git_object: e89ca07d06154749b62757a6f0f8c3e4f12d35da + docs/operations/deletekeysrequest.mdx: + id: e86327cf7b7c + last_write_checksum: sha1:cfdb8b97deb4fcfdca215bb9308f35af15673fef + pristine_git_object: f7ef7a946fb16dd70800d19e1ca0278a1cdab69f + docs/operations/deletekeysresponse.mdx: + id: 1bfa5cbb0a5c + last_write_checksum: sha1:204ad6edf9caf90c97c8a345151a6c8749f51e4b + pristine_git_object: 5e83f2662630ab12bcee291939844451a213bf36 + docs/operations/deleteobservabilitydestinationglobals.mdx: + id: c76d2f794054 + last_write_checksum: sha1:148f6de31be77bc5067cf5428667ed4bab49e30d + pristine_git_object: 14ee5de06533c832070c74f4d6f27c2043e8ef6f + docs/operations/deleteobservabilitydestinationrequest.mdx: + id: 86192950ff34 + last_write_checksum: sha1:c39ee4ad159c25a9bb988a1b0b32eab4ea45f58f + pristine_git_object: 6dee392d1c4bbd32eda1cfac08e8daa1e3ad139e + docs/operations/deleteworkspacebudgetglobals.mdx: + id: c1b4f6dabfee + last_write_checksum: sha1:f2e30630f5ff69ba236f790def147e41e145ddd7 + pristine_git_object: f0aff81922ba7bfe738ac10ac7720b5f02e823f5 + docs/operations/deleteworkspacebudgetrequest.mdx: + id: 58dd48cc2c84 + last_write_checksum: sha1:962d94d374d48ef16de89151eb31d9e47df4c8d4 + pristine_git_object: 1073b36b91e5b87417dce1ea6b698dfc619dcfc8 + docs/operations/deleteworkspaceglobals.mdx: + id: 025d8a30e18a + last_write_checksum: sha1:acf30f3793da7067957595e3e103bed4c5fc4096 + pristine_git_object: c7f6f46cb7fe3707737c51c7a1ddb435be7fec2b + docs/operations/deleteworkspacerequest.mdx: + id: 189f48e44c13 + last_write_checksum: sha1:c70339065b01a136e26e797e4778d36a535b91ed + pristine_git_object: ba1a6161de90b0ebcb0ce62f3a95deeb7b4f1e2a + docs/operations/dimension.mdx: + id: b487fdd43b73 + last_write_checksum: sha1:eb74d7de28b0132eb9599a10b080291e8f81d4c0 + pristine_git_object: 3659423d80a40d89eb193f55099fea9480cc4026 + docs/operations/direction.mdx: + id: 52770d31c173 + last_write_checksum: sha1:106fc68d68ade35f65f54fbd79d0d310d7a9d620 + pristine_git_object: 0f57411072fee59d70a2753c015a55ed750e435f + docs/operations/displayformat.mdx: + id: 0bcd4e2cc7e4 + last_write_checksum: sha1:f473409aa6a76c7efeedb3be29cab7d90e336581 + pristine_git_object: a444dfd6c1e87f8f92fd251e131bc3c9152af07c + docs/operations/distillable.mdx: + id: df8da9cf9924 + last_write_checksum: sha1:52b30b85635671ef624f07f60ebd87d683312dda + pristine_git_object: 93477874d511c859f3ee4231bdfa4cd2e87aadd4 + docs/operations/document.mdx: + id: 1a504e2aca09 + last_write_checksum: sha1:1e30b267c156d32562c8feb5d0fe0c2bc15d11cd + pristine_git_object: 89efca13c84eb1ae5a5f01411ab3b74f2ed93979 + docs/operations/documentrequest.mdx: + id: 6f53d7771158 + last_write_checksum: sha1:e8d58e9d9db4e65c8cd2dca1c27bede5eb901395 + pristine_git_object: 4c0dd9f859b91bbb16be2ef66b7172152eed02e2 + docs/operations/documentresponse.mdx: + id: 341c9e73a4c7 + last_write_checksum: sha1:847b221d2a019253796dfef6fab0ee5da1422834 + pristine_git_object: 5dc0d7b0cd5f93f218882f150500b4fe4ae6b4f4 + docs/operations/downloadfilecontentglobals.mdx: + id: 0ada32f1640c + last_write_checksum: sha1:ed4bbd8ccded9c65480b84fdfb54582b5e606516 + pristine_git_object: 8415a66852abad293076598cc27010eddfcfa130 + docs/operations/downloadfilecontentrequest.mdx: + id: 04df99863d55 + last_write_checksum: sha1:5e6181d6eb82ac0b2616de79b2aecea9baa36c32 + pristine_git_object: dcb0cb35b97a8dfa539c246bed8756b3aa8bf814 + docs/operations/embedding.mdx: + id: 591dd7891964 + last_write_checksum: sha1:8c8196e7ea5cf8a0a43a4495d721e4fa19530ffc + pristine_git_object: 166a8bd49cf3baede0bf5b2b6ec21743f8fe00f6 + docs/operations/encodingformat.mdx: + id: 099473ef03ca + last_write_checksum: sha1:c9c5058c7e63b56beefe18d726003ccd57860191 + pristine_git_object: 6da2037d90613380a2a2668902a8260d250c5d06 + docs/operations/exchangeauthcodeforapikeycodechallengemethod.mdx: + id: c0511758f993 + last_write_checksum: sha1:e92de1cca53cd22483fdb90ec899034f51318489 + pristine_git_object: 388624202ecdbdff9adfc7021fc3e08cae1e4997 + docs/operations/exchangeauthcodeforapikeyglobals.mdx: + id: bee83bebcd71 + last_write_checksum: sha1:829c23ffbbe7a93920b29f67754371bada720570 + pristine_git_object: 3e9fa32319cff53861fbb6549fda34659d0a8686 + docs/operations/exchangeauthcodeforapikeyrequest.mdx: + id: 404d8c697747 + last_write_checksum: sha1:2355b4a897f05fd15a8982f73b8ba13e781d4a3a + pristine_git_object: a52648cdad21604389c9985e7596f3df52cb76fc + docs/operations/exchangeauthcodeforapikeyrequestbody.mdx: + id: 8003f6bc3b51 + last_write_checksum: sha1:34cffd849a4d4730a60337be4fc1d186ce40ebbc + pristine_git_object: 27265f4f71aae71dbbd5d1550357db78c7fcd554 + docs/operations/exchangeauthcodeforapikeyresponse.mdx: + id: 64162c7ece40 + last_write_checksum: sha1:ab0c02f32ff39de1f3da9604432708878cc932c6 + pristine_git_object: 2642f99d77ceb5007b1b863028d73c07e48dac67 + docs/operations/file.mdx: + id: 262d5e5a2457 + last_write_checksum: sha1:bb735203bac5677c946bf404bf1e516635d39efd + pristine_git_object: 0c3c666ca80b93b693bd9b4798d8f511738bf269 + docs/operations/filter_.mdx: + id: 79b9c7c02d3b + last_write_checksum: sha1:210f8d87b466cf10785abbd4cb2f9eb2c3e8576e + pristine_git_object: 3dbded7e52c79b46c586b5b459ef9febaf6f37f1 + docs/operations/getanalyticsmetadata.mdx: + id: 7c66572b759d + last_write_checksum: sha1:8ff4758a1a3b63116d55a83821dcb0c8012050f5 + pristine_git_object: 6eacfe52c70d16019f73e95081b0c34e99100b18 + docs/operations/getanalyticsmetaglobals.mdx: + id: 8bafe89a1a85 + last_write_checksum: sha1:6451b3dcd9b6394f0527318f7a7cc157ad5f7cb7 + pristine_git_object: a44950e1176e48753af03d09a4506dc489dd0924 + docs/operations/getanalyticsmetarequest.mdx: + id: 7cfc69f927ab + last_write_checksum: sha1:fd3237a80f14c82db51c19fb2f74e0fb4503540b + pristine_git_object: 9ca0cb3d97851806a31b2ed4ebb73fa29b580001 + docs/operations/getanalyticsmetaresponse.mdx: + id: 79b7e7689e40 + last_write_checksum: sha1:5d8e22e5c8f3c2711c493840f9b4f76c465b2735 + pristine_git_object: f2a6915c19d9ee5282902183ffb82ea4fc466392 + docs/operations/getapprankingscategory.mdx: + id: f533cbc2f61c + last_write_checksum: sha1:dddef3ed7370f63a996d8201282702598ba3823d + pristine_git_object: a40dd4f5196a4d8dae6b239f1d9919fc39a00f8f + docs/operations/getapprankingsglobals.mdx: + id: 9a85b1fd902d + last_write_checksum: sha1:d46a6c685861b6b4b3f76b9d27be658baf8004b8 + pristine_git_object: 0dd87c38f141db84e0bef92f3892ff61547017c1 + docs/operations/getapprankingsrequest.mdx: + id: bcd34adce28e + last_write_checksum: sha1:07836acd4dbcdaba0b4568e57d11bb00ed9583e4 + pristine_git_object: 48980600a276e5c3d71984a0f63ef6e9833d5a6a + docs/operations/getapprankingsresponse.mdx: + id: 78ec0c166748 + last_write_checksum: sha1:76d20b72282d029ef416eb608a3e63c176d09364 + pristine_git_object: 8353352de1664ea1c2e14ef7350ddc487dc796e2 + docs/operations/getapprankingssort.mdx: + id: 4d4c5fa80b4c + last_write_checksum: sha1:f32d425d8631ebfeb88abcb8f7e3a80e2559e51e + pristine_git_object: a9d72a3e2348b96a287c4ab584d317f565b9b831 + docs/operations/getbenchmarksglobals.mdx: + id: 8fcba55e06c3 + last_write_checksum: sha1:4336ce3b6aef620bad35ec56f076d3550243df73 + pristine_git_object: 679923bfbff14ca3bc63ce5d451089b1996e5c6e + docs/operations/getbenchmarksrequest.mdx: + id: 704fb5d64a7c + last_write_checksum: sha1:506d8cf7a2eed421ae52c60703e3400cdfa3a652 + pristine_git_object: c5acba5bb9a6a2ae287d03f0aef8da1bc49df8e6 + docs/operations/getbyokkeyglobals.mdx: + id: ac592fd40012 + last_write_checksum: sha1:1eac912896162f772846e2fe5e6f3b50ae8d20f2 + pristine_git_object: 02962c39488353dfd39f51d29d145d0ed5abcdbd + docs/operations/getbyokkeyrequest.mdx: + id: 13473d1c826b + last_write_checksum: sha1:c504ae8e40669d44dfa9b33a59b17dbe041dc7c6 + pristine_git_object: 7c25821298233727884352b886699753c83868a9 + docs/operations/getcreditsdata.mdx: + id: 24936b7229aa + last_write_checksum: sha1:04c170b75b9f943bcf4143ff49bffbace613744b + pristine_git_object: b0a60e0c1113ccb14912b76ee45c7b78d29405e5 + docs/operations/getcreditsglobals.mdx: + id: 0683a4060ddf + last_write_checksum: sha1:2fadb3446c67c94df90932244ce54c94928e7e23 + pristine_git_object: e31d9868da2d9eb67881b9141a84236074aadfc5 + docs/operations/getcreditsrequest.mdx: + id: 247f4981de29 + last_write_checksum: sha1:07f4f5563cbb3c670e1e2fe005b3ccded880254b + pristine_git_object: 6e73894ac94404b37f34526a43fd3dde2c1f159e + docs/operations/getcreditsresponse.mdx: + id: 4ad99e00c570 + last_write_checksum: sha1:8c55ba124c06064eaf758a9a3d61095870e7115a + pristine_git_object: 1f584bb9e540819ce7619172b06ad17edf8a8c34 + docs/operations/getcurrentkeydata.mdx: + id: 08c92577eb48 + last_write_checksum: sha1:1c2e45ddfbfb87e44a19f50f729a4942bf12433b + pristine_git_object: a73217d190349cf765961a1991eee4220ae77533 + docs/operations/getcurrentkeyglobals.mdx: + id: 2397dfa14af6 + last_write_checksum: sha1:59402ba0d664e5fab7daae4cea57dfc01e086460 + pristine_git_object: 784c3ac351fd37acbe2b4c47c34fabe6b539dcd5 + docs/operations/getcurrentkeyrequest.mdx: + id: 601da88b2df7 + last_write_checksum: sha1:b633bbeaa50ce7b0c171f0d380ac29de3eb4d071 + pristine_git_object: 720e0e050e35968f74596a1bd8d791dff97b2b5b + docs/operations/getcurrentkeyresponse.mdx: + id: 8b6709d01b8b + last_write_checksum: sha1:f2e184cd13408bc6e5776a6a286762ddd9880cc3 + pristine_git_object: 9b358b3316457f17649fae1f83f6bc808392d1cd + docs/operations/getfilemetadataglobals.mdx: + id: e4f16f1ce98e + last_write_checksum: sha1:f736518bdebac4aa8c9caf9071e0670885bd83b3 + pristine_git_object: 4b9270d76df3ac3ff1402b6ae3c5132d54c666fe + docs/operations/getfilemetadatarequest.mdx: + id: "092777656353" + last_write_checksum: sha1:460587859ae661d766c6e37a2eebf8bfd0b70cb4 + pristine_git_object: eee139554482af3a619776aaa1290bbe2330067f + docs/operations/getgenerationglobals.mdx: + id: 43ac280f4639 + last_write_checksum: sha1:1e3b8a4dcd3f112ae32edfca342dd01cc9bde7bd + pristine_git_object: 450a95a8459d989d93a5c215ed60a2abf93a641f + docs/operations/getgenerationrequest.mdx: + id: ebc796021e88 + last_write_checksum: sha1:2da89c791d70402bae2584ec788652faf81f1811 + pristine_git_object: 318c98012c3a56987e75fffcf066267c3f95cda2 + docs/operations/getguardrailglobals.mdx: + id: d8849aa95555 + last_write_checksum: sha1:a802cbcb2d24b1d4bbdc357da7fced803aaaa5ae + pristine_git_object: 3cd67137d69e6f556ef005674e41c83ae9e50da7 + docs/operations/getguardrailrequest.mdx: + id: 1e6b86bd352e + last_write_checksum: sha1:61e6cae3e157e329be3ea0f60ed28408f55b58da + pristine_git_object: 15bebf62bb77b99ccfbb68dd33a2b38d42d12b85 + docs/operations/getkeydata.mdx: + id: 6e826a999e6b + last_write_checksum: sha1:de6e522ebba30177bd7f5d8904727a4a67a959db + pristine_git_object: b41432d2311e2048a98077567e8b3f6ef35f78b4 + docs/operations/getkeyglobals.mdx: + id: e0e92d532c82 + last_write_checksum: sha1:5a61d6565f3977a90314a46626caa89a8ab97c32 + pristine_git_object: 59d0a567fe449a901f3f72ce13d2c5409be2c1b1 + docs/operations/getkeyrequest.mdx: + id: b822199da4af + last_write_checksum: sha1:d7e6b9e062d1b367b66a6125b3a7c4ea4a4b2cbf + pristine_git_object: 917f4073281196fdf9aa85f2d093ce3dd8b869b6 + docs/operations/getkeyresponse.mdx: + id: dd773bd25661 + last_write_checksum: sha1:037805f5241592eba4add92313f6d3f59a5e10b1 + pristine_git_object: 52562a4f8d6f51440e6f77e6088e06a48096b0cd + docs/operations/getmodelglobals.mdx: + id: 18648d7998ae + last_write_checksum: sha1:7d198dc0c69e793b6681e2f96a76b7d43431cd4f + pristine_git_object: e253e026571c8d6338f30c3f16238bd327cf8ae7 + docs/operations/getmodelrequest.mdx: + id: a1dedec7f5cb + last_write_checksum: sha1:9dd03394227751e01183040e8cbcdccc0303a235 + pristine_git_object: 860150ab6c9ab788cf7a301f166324858a4a6f9c + docs/operations/getmodelscategory.mdx: + id: 48f6993f8f09 + last_write_checksum: sha1:6e045772b0b54c0ebb2fbc9e336277c6c5f19bdc + pristine_git_object: 80c967a8fffe1ca9281b84453163783a68ebce28 + docs/operations/getmodelsglobals.mdx: + id: e9687224ab43 + last_write_checksum: sha1:2db140db026e8024d8bf2e63091e9bd29adef814 + pristine_git_object: e6beafcf11154033e2951ae58103041a2af946b9 + docs/operations/getmodelsrequest.mdx: + id: b2627beb1959 + last_write_checksum: sha1:d945628c6bc1fdad3b7732e0fbcefc241bd373c6 + pristine_git_object: 272e1449f6b0895e9311ba2f03c05edbf17dc225 + docs/operations/getmodelssort.mdx: + id: 3cfd33e60661 + last_write_checksum: sha1:0cc94491120ca9b9a92ac5d6181a51131d78b94c + pristine_git_object: 9a5681eb1112bdb27c7c6677b74a17ff2fb0a574 + docs/operations/getobservabilitydestinationglobals.mdx: + id: d7ba84a5b9dc + last_write_checksum: sha1:281603c38cce8aea9f289fc0d49a455b56196e2e + pristine_git_object: aeec24b090786961321731931648295fee510d7a + docs/operations/getobservabilitydestinationrequest.mdx: + id: 1e9d2ebca083 + last_write_checksum: sha1:2d2b10d8386ef072de32872841df001e210b84dd + pristine_git_object: 39b2655a6b6e82b4561b18678e4814179de7f2f6 + docs/operations/getpresetglobals.mdx: + id: f53749364fd0 + last_write_checksum: sha1:39cd5058e888946c2044c05c872d350bab5c100a + pristine_git_object: b3e3cb518efd431b8f07fdabbb4fcd51a024749a + docs/operations/getpresetrequest.mdx: + id: 88368deaa06d + last_write_checksum: sha1:2be1cd15da22768581cc979e5bbad0696683683d + pristine_git_object: 3738398908f81e0f5897a56411bc74619c04c1ee + docs/operations/getpresetversionglobals.mdx: + id: be6fdbd36a45 + last_write_checksum: sha1:537ddefa8e792fa1ab19b7b7ce5833d9ee6cd733 + pristine_git_object: 55879e9ba28b203a76ff9bfec2f9b0bdb517ae9c + docs/operations/getpresetversionrequest.mdx: + id: 970105a3a642 + last_write_checksum: sha1:001bb931da274741dca567c87c4149c11c5e67d1 + pristine_git_object: c7cf40110dc4a82e2d4abdd06e98d9a28637a016 + docs/operations/getrankingsdailyglobals.mdx: + id: 0f9fa155d24e + last_write_checksum: sha1:b3f58d600e4791419b37f4a8ec65869d59424f41 + pristine_git_object: 4bc1a2bf9e75dc1eaca4e1531a49dfbbea0dfb72 + docs/operations/getrankingsdailyrequest.mdx: + id: a83322d91eea + last_write_checksum: sha1:ee987639475df96010b6a2732ecf9c7b4cfd2472 + pristine_git_object: 1788b942b41cb5afa8bebb28c0387c2cc0381d50 + docs/operations/gettaskclassificationsglobals.mdx: + id: 14d0010b40f8 + last_write_checksum: sha1:6c967e8855540035a6f70fa895ceea0c9caf1cdd + pristine_git_object: 34e94c3bb8dfaf81a9243d097482f93ab08bc208 + docs/operations/gettaskclassificationsrequest.mdx: + id: b4c12a5cf637 + last_write_checksum: sha1:7f91cb78496179abe81547ed00168e0f0fc15a68 + pristine_git_object: acb6b4834361e285dfb35c137f2aef8d551c59dd + docs/operations/getuseractivityglobals.mdx: + id: 9cbf7459a650 + last_write_checksum: sha1:26d89a9bb9563265b796d096d7d2ddf892019244 + pristine_git_object: f31e13179ad9060fbebe2fc50ac6d6ca6d5b013a + docs/operations/getuseractivityrequest.mdx: + id: 61b93f5b1403 + last_write_checksum: sha1:684d952b0cad7763ea8c1261ab5b928a3b77bcbc + pristine_git_object: 6ff32ecb22719b7da65ec863fea77dc94bd30e53 + docs/operations/getvideosglobals.mdx: + id: 54e17c2b195c + last_write_checksum: sha1:e9c91baed62379fa5fa3c78e1047f2a99435157b + pristine_git_object: 7dfb4628191e338ba786e81774d4cb69152d54c8 + docs/operations/getvideosrequest.mdx: + id: 751150df8456 + last_write_checksum: sha1:dd91989f271487fe03882f979e24cbd19ef1d306 + pristine_git_object: 1b1c087538b67ecc69a464735f5af7bfbf777c1e + docs/operations/getworkspaceglobals.mdx: + id: 50abe112c1f4 + last_write_checksum: sha1:c01276f8bf7cc4708cd3e6eeea83c4ac9d97ccf6 + pristine_git_object: b3d863a26961c8bd70aacdc16af63335154249a0 + docs/operations/getworkspacerequest.mdx: + id: 10ca52ac760e + last_write_checksum: sha1:8edfdfe1c8deaf39b5a2d6088b4d7654d1f2cd95 + pristine_git_object: b9ee3b7202cdf3509b899ecb1fd8604c690d91c2 + docs/operations/granularity.mdx: + id: 2506cdfb4560 + last_write_checksum: sha1:4787c52312e8ea4369d246111d64a1576e3629ea + pristine_git_object: 8aa00fc17d55cd69ebbc8809649696fb3f29b7db + docs/operations/granularityname.mdx: + id: 94405df5bc6d + last_write_checksum: sha1:8411fa2c4566737be150bf3d64bb792f0a3eb650 + pristine_git_object: 9d6dfd531f49a6b16998c97e5749cf4ea761dd94 + docs/operations/headquarters.mdx: + id: 8b6a6ec3c5a7 + last_write_checksum: sha1:0dc87fcfec205555e2a9530358f304a3bb9d56d6 + pristine_git_object: 383ef28945fae37fdc69fce45b1f8a2903051031 + docs/operations/imageurl.mdx: + id: 293fd3b07d48 + last_write_checksum: sha1:60da856951b42feac34189d2b0067f434183832c + pristine_git_object: 693064d9726191f06ba4b94f890888fe16d28668 + docs/operations/input.mdx: + id: ddb6746565a9 + last_write_checksum: sha1:74287064fee8a49d89846619e4d2c28b1329f3e7 + pristine_git_object: deecee2141ec430736c4c5da4f74ee7eee476081 + docs/operations/inputunion.mdx: + id: fa09ca81a05c + last_write_checksum: sha1:6126fc355e98574f157b9b485ac850a0ec6f2a5e + pristine_git_object: 2394952123e253a775bb81426d6ee2d49911e97b + docs/operations/listbyokkeysglobals.mdx: + id: b77dfe46caab + last_write_checksum: sha1:203cef2704a0493a98ae74994baf54dd7789b998 + pristine_git_object: 67a37d54c875cac0897804741a900aacacd3ddca + docs/operations/listbyokkeysrequest.mdx: + id: 4e8166d10be3 + last_write_checksum: sha1:5eaf2c9cea4df88c16df3adb96b580a673490b67 + pristine_git_object: ed0a6574ed139fe227e45fb9e5d07bdf680afca7 + docs/operations/listbyokkeysresponse.mdx: + id: ad2f5a3c160a + last_write_checksum: sha1:8496c7f3080cd0ec5a42401a6cccfbd1be87968d + pristine_git_object: 213ea97a6bf34351ada3b72a70b7f7dcedfafe5a + docs/operations/listdata.mdx: + id: 949d8d9f5ac7 + last_write_checksum: sha1:5f8b3da3cfe52a23525dd37725dcec786a295704 + pristine_git_object: a35a3a39449f04a128480475a6b6fcba84221a18 + docs/operations/listembeddingsmodelsglobals.mdx: + id: b9243861091c + last_write_checksum: sha1:d9c528e4b7a94045e306b112a6b10c53205fe591 + pristine_git_object: fad77722bdedf3aa5902e0216dadbbbbb2331c66 + docs/operations/listembeddingsmodelsrequest.mdx: + id: 280530b63070 + last_write_checksum: sha1:aa92c46789315ceae419561330e80127280e9559 + pristine_git_object: 76c365bf04a9c5fc1f461b0eda0d59d0122b22fa + docs/operations/listendpointsglobals.mdx: + id: 12c08333c32c + last_write_checksum: sha1:72d0a3a54e8fc8cdfa2812fa929c08669dec9779 + pristine_git_object: 3e37c978ab25fa66fb056d5e2c16c460b12d0736 + docs/operations/listendpointsrequest.mdx: + id: 0e9e4edb0be3 + last_write_checksum: sha1:388d0dcdb47cef7da2d5216bfaf6eaf180f97db2 + pristine_git_object: ae60c3675f77fb7422e258682416dcb039a9c39f + docs/operations/listendpointsresponse.mdx: + id: 342e9c72ba2f + last_write_checksum: sha1:b398d996d1cb789b4e23ee19a90faef92ecd6570 + pristine_git_object: b3861b87c011781ff89d1e1ec9c9b603ca6c82cd + docs/operations/listendpointszdrglobals.mdx: + id: 6ac5eadde8e5 + last_write_checksum: sha1:c2de5b8884069ef0173168581bd0b6f7fc43fece + pristine_git_object: 8f47131ceb083a221443075f4d8b071a441dc974 + docs/operations/listendpointszdrrequest.mdx: + id: 79a986f37b56 + last_write_checksum: sha1:df4a5a38de99a5941cbca75491c988b5cd2ae5cc + pristine_git_object: 70f27d808c5135c8d7331f46d5858c8a1eee4d8b + docs/operations/listendpointszdrresponse.mdx: + id: f8d0c52ac714 + last_write_checksum: sha1:259ccd67ebae39f4ab027939482c3e337ba37312 + pristine_git_object: 31012e2cfce20ea33c3e4781f8db798e4f33d867 + docs/operations/listfilesglobals.mdx: + id: 1674db6bdeb2 + last_write_checksum: sha1:e387e5f7c8e60d7b5f47d84ccdc1132cc0efc45a + pristine_git_object: 5e86176bf6809f16e19cd7006288ea8d55911070 + docs/operations/listfilesrequest.mdx: + id: 86c9594f103f + last_write_checksum: sha1:e2231e9798368d5dd629bc1b92a0fa4fc88d2501 + pristine_git_object: 567c8a2e0864b4e4264ccce371f98e7377d2a4ef + docs/operations/listfilesresponse.mdx: + id: b2a0050d55de + last_write_checksum: sha1:a6b61a40a390cfd71e6b83fd6a75a106c9f8486a + pristine_git_object: ba3f4b56aed07f6d26ac7c9bd1d1dc21d93245d8 + docs/operations/listgenerationcontentglobals.mdx: + id: 37713baa8939 + last_write_checksum: sha1:f893103835ccc22cc34baa4dce22480a7c000f0a + pristine_git_object: 8096c174f094f2e67da5c47a37a0758dd7498078 + docs/operations/listgenerationcontentrequest.mdx: + id: 654686591d52 + last_write_checksum: sha1:4c09fea10323a1814ecb59f2c70a2faf4a730d2d + pristine_git_object: d1caecbb5dd74e62c7e8b3085e3eaf1a00ce793b + docs/operations/listglobals.mdx: + id: 2348b7bb3a31 + last_write_checksum: sha1:f37d23d79b54bd15e1e04e6bc5932e98d4abe15a + pristine_git_object: b13c7abdeef1d0c6fdfb5b362906dad389796de7 + docs/operations/listguardrailkeyassignmentsglobals.mdx: + id: 57ec45abd557 + last_write_checksum: sha1:7bffa6713c1eaf6ed91c47a840550f4f8175548d + pristine_git_object: 8b06bf79ef0136eebd08247c5e107c36713d30fb + docs/operations/listguardrailkeyassignmentsrequest.mdx: + id: 1f3612aa11b1 + last_write_checksum: sha1:536f4de3aafe2825993ede03269fc2f81135733b + pristine_git_object: 92b4303d57d5a92d09eccebe89ce29cc42f31cb1 + docs/operations/listguardrailkeyassignmentsresponse.mdx: + id: 5fdb6feb3568 + last_write_checksum: sha1:45a796c2f1733cfd4c45730337bf19bd1b2fc4f2 + pristine_git_object: 868475866cbe31dd0c2f39de0f6c0623202c24b5 + docs/operations/listguardrailmemberassignmentsglobals.mdx: + id: 5a6353376215 + last_write_checksum: sha1:107bbd24ed759d184e02e09e3823ea4980e88051 + pristine_git_object: 98c69e74c27079bb78f0d089a3fd53ee31bb2109 + docs/operations/listguardrailmemberassignmentsrequest.mdx: + id: 1917e0e3a204 + last_write_checksum: sha1:dc5920b96cf681bd8796a98ad172d415d4b2e4b5 + pristine_git_object: 740af2e6f0a003b11757222108b4dae97aaffc7b + docs/operations/listguardrailmemberassignmentsresponse.mdx: + id: 2ae2804974c3 + last_write_checksum: sha1:0552cfa576c655c577099be969e31d51d1ac658a + pristine_git_object: 3c19a6f1878c76159113d284f3a7d8c2e69a8a87 + docs/operations/listguardrailsglobals.mdx: + id: 176198c483ac + last_write_checksum: sha1:a5b4b960202dfb9845892c4583ea946eab0f3122 + pristine_git_object: 60d11dfac28f167fcd257a77239460b24687019f + docs/operations/listguardrailsrequest.mdx: + id: 99334b4d6619 + last_write_checksum: sha1:60fa8e18479e2995997fdb8c2e5dd0460179157e + pristine_git_object: 285cb55ce46435b741ac96d7f980a609067d432d + docs/operations/listguardrailsresponse.mdx: + id: b96388a22ab2 + last_write_checksum: sha1:0996fb66661b831820683fa58ca3c0819783aa1d + pristine_git_object: 519808b7794ecf8c5951991a0857cb27106fc130 + docs/operations/listimagemodelendpointsglobals.mdx: + id: ac044b2c8762 + last_write_checksum: sha1:b8b8e4ba63cd49b7eb1b58f0d01c0c43d6cd6a43 + pristine_git_object: ffac4de971311269df3f52da1bcb4e890373f543 + docs/operations/listimagemodelendpointsrequest.mdx: + id: c3a8c32e1213 + last_write_checksum: sha1:bcca7bd013ef888556ed7a02bceb2e6bc1b4f24a + pristine_git_object: 871687a00e5eea68acdbb0f93284abf4dde36eb7 + docs/operations/listimagemodelsglobals.mdx: + id: 4cf50935ac9b + last_write_checksum: sha1:a62af1875f13449a8431be24da505e93664ddbaf + pristine_git_object: e3ad1251b89f950243e48021433ae193f4f32b69 + docs/operations/listimagemodelsrequest.mdx: + id: e829f52a26d3 + last_write_checksum: sha1:cb8b441a4e0138861a6cf660367f674093844590 + pristine_git_object: 590e46d83ce8a470b44499464e1343584fc66805 + docs/operations/listkeyassignmentsglobals.mdx: + id: dabab35850ee + last_write_checksum: sha1:08629027424ce4f3ce6232c32f9534bedb714162 + pristine_git_object: a93efaec31ea64e16cf9a09ac88813f172ac9ba0 + docs/operations/listkeyassignmentsrequest.mdx: + id: 3732b309bffd + last_write_checksum: sha1:328ea504ac6b28ed54ac0cd6e79700da69bb7d55 + pristine_git_object: 449ce29f4869fdb1af34e99e17f84cd592ff0ac1 + docs/operations/listkeyassignmentsresponse.mdx: + id: 47ddfae598d1 + last_write_checksum: sha1:db21c52900652875d2ac4874de342a3b84d9b4dc + pristine_git_object: b26f687df2896a0dd19a691785e955aa2c2bfdb5 + docs/operations/listmemberassignmentsglobals.mdx: + id: 56bd6dc7fdd0 + last_write_checksum: sha1:e158a1bd8269bd8767fcc71933f4e1fca6026ebd + pristine_git_object: e5d123af9bbfc77d33bb5d418f3a2d01aeaeac84 + docs/operations/listmemberassignmentsrequest.mdx: + id: eb73c6f654c5 + last_write_checksum: sha1:d4724280fcab63a4bb9bfc8fbc1edb4f7c5efe8f + pristine_git_object: c49bcf39eb18ce07fee487e245125c212804deaa + docs/operations/listmemberassignmentsresponse.mdx: + id: ec7bd9eaadcf + last_write_checksum: sha1:594ec98db30067a16492c7ff17815ec332abeb8c + pristine_git_object: 0206ec09d46dd55f167558f0bd9251872d92e8c0 + docs/operations/listmodelscountglobals.mdx: + id: 53a4fd1bcaa0 + last_write_checksum: sha1:b4ea66aca7d27460aaeb13e778bb1a6096fa0e0c + pristine_git_object: 0daab751f0e30b136ffdd342831b3fc0cba5aae1 + docs/operations/listmodelscountrequest.mdx: + id: 8cc6953df79a + last_write_checksum: sha1:0cb72611fd3af9192c6f9ace893cf03f1c38a421 + pristine_git_object: 7791b12fbcf1bddfda2449a0396be5afef0ca674 + docs/operations/listmodelsuserglobals.mdx: + id: 199f6a8dda42 + last_write_checksum: sha1:4d1918ce9fa370cf27f0de2ad725033dcc5beab8 + pristine_git_object: f0a800135df0c6e4799128a4fbc901c576c8c6ce + docs/operations/listmodelsuserrequest.mdx: + id: 01537864056e + last_write_checksum: sha1:6a40c5348b33b01ac4dd2d5daac02fb237efc459 + pristine_git_object: 3b65b53fd19e841061b65013fe3adaedebaa5b68 + docs/operations/listmodelsusersecurity.mdx: + id: fa5ad15aebfd + last_write_checksum: sha1:daa5aafeecb31a35e7cb1bbedc70b722f6a675a5 + pristine_git_object: c7dbff35b7c3345c54c268f81a8ad4dac24cc5c3 + docs/operations/listobservabilitydestinationsglobals.mdx: + id: 3a51e19188e6 + last_write_checksum: sha1:fa7e365b06c4bdfcd6af99c72d23c4c63218e7bb + pristine_git_object: 40271fec1ebd01d287c48136738911b6d1a09349 + docs/operations/listobservabilitydestinationsrequest.mdx: + id: 0ab2d0dfb05b + last_write_checksum: sha1:5692febdcbe15275ab90bc9a29e9a51916c710c8 + pristine_git_object: c9f43abca5b0e275fbe27f254af681b80b77a88d + docs/operations/listobservabilitydestinationsresponse.mdx: + id: 7da9d153805e + last_write_checksum: sha1:d24fd1ff10e5422270e71b6a89f71cd1da952d59 + pristine_git_object: da49e5fe54162c246f3e194847ddb7faf88fa8da + docs/operations/listorganizationmembersdata.mdx: + id: d96ba08cbfe4 + last_write_checksum: sha1:d947bba247f864f0420d6184495be6b26845a966 + pristine_git_object: 2469c6aef198ebaa68c4d18cc8e09473504a315c + docs/operations/listorganizationmembersglobals.mdx: + id: 421fd4978d8f + last_write_checksum: sha1:1802b9d1cb7ea779930cf4ab1984235d08d5a315 + pristine_git_object: de31dc7f59ad20233f8c5de6f83a8b5b7fa2226b + docs/operations/listorganizationmembersrequest.mdx: + id: 080ced0e9b96 + last_write_checksum: sha1:3e75ad238a52eccb68fdde21a7404ead101f2ab6 + pristine_git_object: 8e2a8b90c065f170c41ccc6c43ae30985b005a80 + docs/operations/listorganizationmembersresponse.mdx: + id: b2f1b50be996 + last_write_checksum: sha1:40541c03ce17f8ef0abb6e7108524d269559c7eb + pristine_git_object: 5de552097eb9a6a6bcf271d3ce7e02f42052e3e3 + docs/operations/listorganizationmembersresponsebody.mdx: + id: e36aa6e41fc4 + last_write_checksum: sha1:f37f490c3663b59684b0cd71e6b2fb9a90ba16d4 + pristine_git_object: 56cd9c557ca4ea3fdceef083055cbfe9111562c0 + docs/operations/listpresetsglobals.mdx: + id: cb767dd10bb5 + last_write_checksum: sha1:ad554214669ab509edce05d52d3391c39cb0d44b + pristine_git_object: 73d98355a657b6bdfff959896d52e81dcf1db355 + docs/operations/listpresetsrequest.mdx: + id: e346ae8fa12f + last_write_checksum: sha1:a10c2669c9ed7c8cddae336edfb9810340755f7d + pristine_git_object: 165dbf2fb5db115c3f5696f0ae53d7341669bf0f + docs/operations/listpresetsresponse.mdx: + id: 70641d06b5cb + last_write_checksum: sha1:03ffba5a51581e31fe17f2cd32e5a1a0227b14e6 + pristine_git_object: 0bd7386a53aab4cabc81cddc4513f30972675351 + docs/operations/listpresetversionsglobals.mdx: + id: b44ac6e728cf + last_write_checksum: sha1:22fb467f53af1b9695413b01bfb56b85e533ab63 + pristine_git_object: f97938ef045d215a2b32a571bcb1e62f086c85e3 + docs/operations/listpresetversionsrequest.mdx: + id: 3ec15e417b29 + last_write_checksum: sha1:6f9af524a7a4cab53fd6fb1e47620309ed8d184e + pristine_git_object: 268fd9aa1d4e47013752ee851e0b527da1fd0893 + docs/operations/listpresetversionsresponse.mdx: + id: b6ecb3a03b2b + last_write_checksum: sha1:e44b07ff960b84e2b48a81627b4b90e1de10a52d + pristine_git_object: 794d77eb2d90d230d1abb28fd3b0bc895ba49ee5 + docs/operations/listprovidersdata.mdx: + id: 79d7624ebbdc + last_write_checksum: sha1:2159620f48a37374a43dc2e6e8880ec6ec2e1f63 + pristine_git_object: 10580e98d79315e499d33b48020dd1d250bcee53 + docs/operations/listprovidersglobals.mdx: + id: 1d2740569f3c + last_write_checksum: sha1:fc6441c1ccf5d2799a851d92ba3865fb8f1c9081 + pristine_git_object: 2ad08ac053c2954bcd9b8c05ae5987df134f89aa + docs/operations/listprovidersrequest.mdx: + id: 54a7007306cc + last_write_checksum: sha1:e2c9a820dd528cd3f2054096f30028ccd4aa9348 + pristine_git_object: 5514d81419c43f76554823f1217ba764cb1f6ef3 + docs/operations/listprovidersresponse.mdx: + id: 0d892052ba16 + last_write_checksum: sha1:cd343d5103e7739bcc1a69e59544c0b914db0d17 + pristine_git_object: 81b20bf491669a461e81d96ad4c5a4c6eebd046d + docs/operations/listrequest.mdx: + id: 2652e61cd671 + last_write_checksum: sha1:3f45b1614330e8e7ef7f0dbd58e898d544b09e93 + pristine_git_object: a48f6951d5b0e38eb791959348f76e1741e55cf9 + docs/operations/listresponse.mdx: + id: 0fbda0f81ae8 + last_write_checksum: sha1:ba97d1d6ae126c3e7a0e28d800705847377d2e86 + pristine_git_object: ffadcfc3029043df64d38ed75fe5047adcc9f7cc + docs/operations/listvideoscontentglobals.mdx: + id: 3332db3cd666 + last_write_checksum: sha1:a5c1c54148c4f70454639dc474aad4fe32b82149 + pristine_git_object: 4a27d350e57afc7609bf300cc9c29284c75df178 + docs/operations/listvideoscontentrequest.mdx: + id: f268ab3abad8 + last_write_checksum: sha1:27d2ad97328f414fd64000ea79ac957c55f210be + pristine_git_object: 0ecef072f317dbaab5d08f51758832a8728f1343 + docs/operations/listvideosmodelsglobals.mdx: + id: 4e0c92fe99b7 + last_write_checksum: sha1:60cd72be3e25d755cf253efcc989082cd7ad2ede + pristine_git_object: a7fc9b7b236e7aa3fbc3aa63571c78ac07d7e48d + docs/operations/listvideosmodelsrequest.mdx: + id: 57c6a047320d + last_write_checksum: sha1:1e0656e8189fbf068e87df399fbab1d18ec9bcca + pristine_git_object: 5bd866fda7f5c40255e4ca96c119cdd3dcbfc48e + docs/operations/listworkspacebudgetsglobals.mdx: + id: 945b47c5330f + last_write_checksum: sha1:b305f8026f098d98c80f7ff4d32c3d6e95c3fa4b + pristine_git_object: 88549dbdc9877f40b1115285cba906c838fe0cfa + docs/operations/listworkspacebudgetsrequest.mdx: + id: fbaf80b58271 + last_write_checksum: sha1:b9166455ca5f9dfbb1d692547ef54158685ece80 + pristine_git_object: f6101881f6a54e2b999a60c6c607b2e7bcf103dc + docs/operations/listworkspacesglobals.mdx: + id: 796f26dced99 + last_write_checksum: sha1:900a20b914fa6bf043585f1e0de3692510bab04e + pristine_git_object: 2a6be98ca184850ec13cade870ad4f4227b4ecee + docs/operations/listworkspacesrequest.mdx: + id: ecae2cf14ea8 + last_write_checksum: sha1:a4f6b770fbad23c6a5c3e467a914e7c0351ffa05 + pristine_git_object: b188a1a7101520b470b9ad831ce034ae815ad2bf + docs/operations/listworkspacesresponse.mdx: + id: 9c0a0733f9d1 + last_write_checksum: sha1:221d74185d13f295869a041f5738375c7be31a23 + pristine_git_object: d59e254c1f1552694d0f803b6b8222dd7f542dc9 + docs/operations/metadata.mdx: + id: 2dd433f031ce + last_write_checksum: sha1:78b9ed1337be24abd728a68bff41a10a0e1421cc + pristine_git_object: 33c6b11a53f8fda8c493350c83f8f81b138420c1 + docs/operations/metric.mdx: + id: 43ac1599200a + last_write_checksum: sha1:cfb8efa24bc87017aff709963270c9b414bc3483 + pristine_git_object: a1b3a3e10a8fc5042c341319692cb2a643cdd9fe + docs/operations/object.mdx: + id: 6fa1fcf5620b + last_write_checksum: sha1:3727111f1223b76f5a9f21c89fba6c59ea31d428 + pristine_git_object: 1bfe944c2456a33d0bd4f7a71094a9272621150b + docs/operations/objectembedding.mdx: + id: 7b3f50b8bbce + last_write_checksum: sha1:117a05f19125765347ad14820ef173667a7b681b + pristine_git_object: cd96e8c7a7669ec2320a1672eb70aedd7b5a17ef + docs/operations/operator.mdx: + id: 20ee6b4b086c + last_write_checksum: sha1:0c683aaa5927bbe8642d8dd15aae9db206db8d33 + pristine_git_object: f14d7d1a7d88b8e281aadb00aafcbccec23cc025 + docs/operations/operatorname.mdx: + id: cd9b4abc3c86 + last_write_checksum: sha1:80ba4042763e10684eebd2c8da7ea75416cd15f7 + pristine_git_object: 8acee540065370db1e6eb01bfa0b044a603e2fd6 + docs/operations/orderby.mdx: + id: 5465d93e546d + last_write_checksum: sha1:5f10a8fd8a9a7b55fc023e33bc9250f4d801af35 + pristine_git_object: 91c6769e0026aa486c3fb4a6672c3691b2a997aa + docs/operations/prompttokensdetails.mdx: + id: 346b38e82e1c + last_write_checksum: sha1:ece0f5c30ccaef159981265b3ac57381289e86b3 + pristine_git_object: 0f0b54e43577a8a835cd971f82e48c3921e3d88e + docs/operations/provider.mdx: + id: c75b3bbeeaa0 + last_write_checksum: sha1:c55d7af5c40483430e2debde39643c564ea19838 + pristine_git_object: 1b6b620243fb2472e1bfe2acc7bbb646b8a82a79 + docs/operations/queryanalyticsdata1.mdx: + id: 0e41beea77d0 + last_write_checksum: sha1:f9a349b4fee07f786180e94b45f92002bfae0e56 + pristine_git_object: 474b724d1f764895d6d117fdac2fe9725c8d3001 + docs/operations/queryanalyticsdata2.mdx: + id: c8d9aa23c8e8 + last_write_checksum: sha1:d9870c6532082640be02a08fd21103d51957066b + pristine_git_object: 669a0894f1ad8f3941ced34c9b050c838bd66b5b + docs/operations/queryanalyticsglobals.mdx: + id: cb09420b751e + last_write_checksum: sha1:7d80efa46a0a891ce600c6e33724cacaf71a4285 + pristine_git_object: d808bb3991c4dd52985a0b22399ab7674285597c + docs/operations/queryanalyticsrequest.mdx: + id: 31b3b2905859 + last_write_checksum: sha1:1617fdaabf9f16ddd5e8be702742d89d3760e114 + pristine_git_object: 5b3c7c98d8cee9aa77138996c3d9af3e2bd3127a + docs/operations/queryanalyticsrequestbody.mdx: + id: 1b8d33b6ac1b + last_write_checksum: sha1:bd5e4998875dd2b73f5b04749ae013f108119a50 + pristine_git_object: 79876b7e840eb330cecb69b748c1dc80bbb7d14e + docs/operations/queryanalyticsresponse.mdx: + id: 26c4b637ce33 + last_write_checksum: sha1:3f778b3125815a89ceae9aaa735ffc846fef3de8 + pristine_git_object: 6c45e21707d13bc9d815f869560108edbcf0abfa + docs/operations/ratelimit.mdx: + id: bf8418e811a5 + last_write_checksum: sha1:c66424d6d623dbaed03bf281ecc3776a9706b244 + pristine_git_object: f1aa5276e08870063dd5cf05731b703c3034cef5 + docs/operations/region.mdx: + id: bff19f8bb679 + last_write_checksum: sha1:1a743e8a62051c433127a609e131187a74e2a240 + pristine_git_object: 051bb4d1cdb3bdbcd87b29419a4a408f10bb1555 + docs/operations/result.mdx: + id: b68db2e6b7af + last_write_checksum: sha1:3ca42544567f285e78aa012de25ac52b5d082314 + pristine_git_object: 510072b9f3e6d9dec6bb430010085d3e284d2388 + docs/operations/role.mdx: + id: ee0d3c3547d7 + last_write_checksum: sha1:11ebdfcfbf9a1197a42516d3daa0eaa3e2955f81 + pristine_git_object: 9e1219b8c4da58c9ee1d0707aa809d3d3b54f372 + docs/operations/sendchatcompletionrequestglobals.mdx: + id: 8ad074be0768 + last_write_checksum: sha1:93462ef7b25e039e770050019663f6b41dbf4187 + pristine_git_object: 290c9540b23562b48b6060a9006611efe78619b0 + docs/operations/sendchatcompletionrequestrequest.mdx: + id: f5d3cb464056 + last_write_checksum: sha1:40a3a958a12d3c6a5b2739f879f49324b7f469b8 + pristine_git_object: bd3e6d5c14ab837a01c7b0388c69b9ce88492d50 + docs/operations/sendchatcompletionrequestresponse.mdx: + id: 8cb7359a629c + last_write_checksum: sha1:710032d2b0328c856d9cf6d6eca279e0b960ff6f + pristine_git_object: ed3d7a92aa56dde65beae92df86cf13120828823 + docs/operations/source.mdx: + id: 53486739ebf2 + last_write_checksum: sha1:01b8fb26c5211183dee2ba17f235531cba037e5c + pristine_git_object: 20b67f6c8f15960455f78cb1fd44c6d8a065ac84 + docs/operations/subcategory.mdx: + id: b3291e6c44b9 + last_write_checksum: sha1:2594ecd2302b9515e5997f4fbaaebba4a9a0615c + pristine_git_object: af1d9e961714b356ae1a7cd86d64ff636215bae8 + docs/operations/tasktype.mdx: + id: d3da8106d2d1 + last_write_checksum: sha1:06aede3448490e1fb77b5c1b758238a11ce1dceb + pristine_git_object: 7cdaa5db9c5d84013c3aeeaf1f7493c1768c1fef + docs/operations/timerange.mdx: + id: 03a218211f06 + last_write_checksum: sha1:3cdcfbfcdb71dcc17a0c3b4cd5704eac3718fa0f + pristine_git_object: dc194bad92caf2afd0759830559be89a8bafe5a4 + docs/operations/typeimageurl.mdx: + id: 66578c3ea6a5 + last_write_checksum: sha1:e3275995c5351075e0c4082a161891cf710b8fdc + pristine_git_object: 655e6725e598400009e8c53a72f28df6344c07f8 + docs/operations/typetext.mdx: + id: 1028e314e662 + last_write_checksum: sha1:21a2b31e9c9c12e1f1ea477ef497998cd4982b05 + pristine_git_object: 7f1519173ad9246262a680667ec1b2286e15e778 + docs/operations/updatebyokkeyglobals.mdx: + id: 5d2a09eb8596 + last_write_checksum: sha1:0916c04c06677f218bd4a5e19ad03feb0710e682 + pristine_git_object: 905abf791c1db3da9d3e5a639e7c0bce739a35ea + docs/operations/updatebyokkeyrequest.mdx: + id: cef280b21ee9 + last_write_checksum: sha1:86da6f664f74203209024032ed6c1281cb696757 + pristine_git_object: 546e001df35e2526f0e8bd92a6836be03cf7cc5d + docs/operations/updateguardrailglobals.mdx: + id: e3ce035d5a7c + last_write_checksum: sha1:6dc745162b36e08d38d6ea094282f5c45baf71f2 + pristine_git_object: 0cd4bcb1e034aa7d2c4b5884cffdb1986e5f202f + docs/operations/updateguardrailrequest.mdx: + id: b3a26bb527db + last_write_checksum: sha1:61d23143ea26684dacce468f671014cdfa4ab811 + pristine_git_object: b89a6072a0e463fdc6e8cf72fb69947c72771768 + docs/operations/updatekeysdata.mdx: + id: d398ba596e27 + last_write_checksum: sha1:082cc16d58504992f5ae5fc33c29a0992d8916f8 + pristine_git_object: abc5d4117786c10c546e078bf4d323aa16ca056d + docs/operations/updatekeysglobals.mdx: + id: b28932f180bb + last_write_checksum: sha1:1f5778b747552e491bdfff8ae6f24fa13d94e772 + pristine_git_object: 2b4abc3fc7e4ee68ce307d3c6762267cf6ec2ee0 + docs/operations/updatekeyslimitreset.mdx: + id: aecd0e37e02a + last_write_checksum: sha1:5ef348abbf2f43cd813b1318903c3142e70a92ca + pristine_git_object: d128ade18d926c0d95c4795841ece8eaee76c761 + docs/operations/updatekeysrequest.mdx: + id: 8e2d9fcdafd9 + last_write_checksum: sha1:da1d7f64abd5a99ff7ccfc5bed51ed58e0faaa85 + pristine_git_object: e6d3d7f0130773c07971473e1bc4e536b403a993 + docs/operations/updatekeysrequestbody.mdx: + id: dc55066cca3d + last_write_checksum: sha1:28fd19213cd690e7aec9fa106db1b835094a9d3a + pristine_git_object: b293f36e7709b7bebad59271db0885d29711c2d9 + docs/operations/updatekeysresponse.mdx: + id: a97d51fea627 + last_write_checksum: sha1:75dc503b775f15779c028dd43954c878c76d7675 + pristine_git_object: 942a8bf96ca51928e598d34fa497a58190cf0b5b + docs/operations/updateobservabilitydestinationglobals.mdx: + id: f85617547bfa + last_write_checksum: sha1:c1f4d1a72d38359c5bd04f2845a587d2ad09d493 + pristine_git_object: f5a0ba069a934b5f912f0f249614832c436d55a2 + docs/operations/updateobservabilitydestinationrequest.mdx: + id: d83497c7a77d + last_write_checksum: sha1:de57252c9ee61e445b637c961ffb2a5e16a8b6f7 + pristine_git_object: 16926383142c262c3c0f352bb40319fa48082fcd + docs/operations/updateworkspaceglobals.mdx: + id: 053b3b5bb1eb + last_write_checksum: sha1:975e76f8c53dc170a42ecf80d01474518dda8944 + pristine_git_object: 34ddab96d1fa3c6a7087e6503f8271fd9f09d99f + docs/operations/updateworkspacerequest.mdx: + id: f2e782002c04 + last_write_checksum: sha1:f04d312af9e3ccc5ce53deb68cb6ade27c300dec + pristine_git_object: 086cdf63dfdacf09da11a66301f90245ac7cbb0b + docs/operations/uploadfileglobals.mdx: + id: ec9ebdf283f8 + last_write_checksum: sha1:50f87018f87e3b469cd1f8a0795fc186faa0daa4 + pristine_git_object: 41aa595e25196c37fde92a5e7ec72a55d77c8472 + docs/operations/uploadfilerequest.mdx: + id: b4dafdae4a55 + last_write_checksum: sha1:bec419780da7e4692473dc623f7c5f869e851269 + pristine_git_object: 70188129763ff300a0f3faa45134f7299c9bdf39 + docs/operations/uploadfilerequestbody.mdx: + id: fde4cc558d95 + last_write_checksum: sha1:74a28c6834102e4511000ad118bb2892aa0d11cc + pristine_git_object: 4a9975fed03ab1d97c880283bedde17ce90906f9 + docs/operations/upsertworkspacebudgetglobals.mdx: + id: 08d7f90d9b03 + last_write_checksum: sha1:3fff3f45d7170916f5c4d12557a97cd9693bbac4 + pristine_git_object: 67a0d7d1d0adf059607b9a3af6564590d9621f76 + docs/operations/upsertworkspacebudgetrequest.mdx: + id: 52d731cc0309 + last_write_checksum: sha1:799249ddfb07a424dc30f5653dcc8c60a123ebc8 + pristine_git_object: 47fed589ac984de05fa549aa790c7e8aae98e342 + docs/operations/usagelimittype.mdx: + id: 5b5490f35b61 + last_write_checksum: sha1:70ef5b79b5514976823edf8da81f7bd8d9f93015 + pristine_git_object: 8541eefab0e7110d9a895d66bebd1779e456a264 + docs/operations/value1.mdx: + id: 447e93c2bc33 + last_write_checksum: sha1:b2c81e4b7897f8beaaed9e3891f2a77d57ef1734 + pristine_git_object: 4d269a48eefb02feb81b720b2b21cc298b1d52e8 + docs/operations/value2.mdx: + id: ebf32fddf22e + last_write_checksum: sha1:18f440dbfdcb2498771fe53a98b054d4d76f283c + pristine_git_object: f72dd54a6f1db3e758a924691b07ec17f38bc01e + docs/operations/valuetype.mdx: + id: 29a8210305d2 + last_write_checksum: sha1:5ea5c9a100089970356c552e3d9792c6657d0143 + pristine_git_object: 87a439af5a321a5133bcbe2e5cb5b15ca45a8e7d + docs/operations/window.mdx: + id: cdb33aa5c15a + last_write_checksum: sha1:36234c180ece9d264d313db08936d040af86cb8f + pristine_git_object: 52168404b9b71ed5151ac09d81cb9e148f1a600f + docs/operations/zdr.mdx: + id: 198b78abdff6 + last_write_checksum: sha1:8a61e4b23d0f7e8376b2227d6c87ca49a473f7d1 + pristine_git_object: f265978fdb338b412232349476bf1e874833c9f8 + docs/sdks/analytics/README.mdx: + id: 281aa5320be1 + last_write_checksum: sha1:04cc5064d83eda6623841e7052f0fe7de81c833f + pristine_git_object: 4e5df61630ce21da071bcc35a50a8cca491d6e4f + docs/sdks/apikeys/README.mdx: + id: 27fcaae1c346 + last_write_checksum: sha1:cf0d94f5457263da55ad5b310c06473db4f5ae80 + pristine_git_object: e5b775ce85d6766e7213de36d4f917892687e9e6 + docs/sdks/benchmarks/README.mdx: + id: 5b483a6770ba + last_write_checksum: sha1:580442b871377a1d5191d9d3d1f30b20667115fe + pristine_git_object: 072d78b5b5aedcdc34724557e76cc0fa03994fba + docs/sdks/betaanalytics/README.mdx: + id: 239279ebf01b + last_write_checksum: sha1:721b90a76008fa9876ce046a84a7b54bae0dcef8 + pristine_git_object: 716e4631b3b48e11081ed70ca5acc5826b8a6383 + docs/sdks/byok/README.mdx: + id: 17792f3b180d + last_write_checksum: sha1:18692d1b1454837b1592113fe1aaba1b1d37a805 + pristine_git_object: f1da2da04de257540172ce771ed1b665f0da9010 + docs/sdks/chat/README.mdx: + id: 1dd859c23fe1 + last_write_checksum: sha1:b6c104dc6b0c3461a2264a95d886f860e7277780 + pristine_git_object: 390ca7cf2ff70cf7a4273cd1c8c13cb58eb32971 + docs/sdks/classifications/README.mdx: + id: 4786130ef02a + last_write_checksum: sha1:87ea3518b4147ae7833b01da7be92d41a4b49df7 + pristine_git_object: bed5f74e5e8269cbba66943524ffa5206c933de3 + docs/sdks/credits/README.mdx: + id: 2ba51de8de3f + last_write_checksum: sha1:08de2963f78b645eaa14fa8511552bae2ddccd75 + pristine_git_object: 414ae2830c58add7ad904cc9ffc5b46ed65058df + docs/sdks/datasets/README.mdx: + id: 15e5ab0183de + last_write_checksum: sha1:91e92cf17fa0a3a1729a8777bad701e69aeed404 + pristine_git_object: 9cdcae1f6c83a4b1918d00c221f619978967f490 + docs/sdks/embeddings/README.mdx: + id: cd71581df291 + last_write_checksum: sha1:627e1efaacb2a29cb97e9d184ead987d95008bed + pristine_git_object: bf8b8c511bb6de4fcb0f24060788581aa51ef1a7 + docs/sdks/endpoints/README.mdx: + id: 62dfac9f7b71 + last_write_checksum: sha1:05fc24509aa174b336fbe7d1a95faf7beca9bca3 + pristine_git_object: 741c77c1982e1f7fc1c2352ce5199c921f9ee82f + docs/sdks/files/README.mdx: + id: 1a0c257e330c + last_write_checksum: sha1:475d99ba1b2bb8b2826cb43cc729753fbfc0acf8 + pristine_git_object: 5327882a8d7463846af3285afa1bd38432cec275 + docs/sdks/generations/README.mdx: + id: a754fecc8514 + last_write_checksum: sha1:e4276fe2f85be0fbafaf573fe58d17b7236d0652 + pristine_git_object: b29ea120367f5944c6a71e31f6c3d5e07ab4b798 + docs/sdks/guardrails/README.mdx: + id: a0cd4218b8fa + last_write_checksum: sha1:b6543c22a38aca53d7bfbc8d41ed482965fc3b3c + pristine_git_object: d164a1da79b0838bd68f0a6560a0317eb86e0226 + docs/sdks/images/README.mdx: + id: 534a6c102c4f + last_write_checksum: sha1:cdebfe56dd55af4bf9248c8a61366d1a6c6b894b + pristine_git_object: cb61de85f54743e18a3e9ff2a861ffc510af713f + docs/sdks/models/README.mdx: + id: 58f1ca464e0b + last_write_checksum: sha1:13cd9e4631b4e19a7db5ad93ce63d66358ffb935 + pristine_git_object: cc84c8d7382e6cee53ceb625344dadeefbb48b5d + docs/sdks/oauth/README.mdx: + id: 42b5079343d2 + last_write_checksum: sha1:60ecae1338bc4487fbb050b6044ddc08dd7d1685 + pristine_git_object: c8f7dfd9fd46b60a5814250f8cb2de313166e2c3 + docs/sdks/observability/README.mdx: + id: 75811527e651 + last_write_checksum: sha1:83e566a1ab2ca84c1139d44060b3740a9a543e1d + pristine_git_object: 869bf82e6c2a769a2017220c38e6a6ef1fd270fd + docs/sdks/organization/README.mdx: + id: f41b85542db0 + last_write_checksum: sha1:05a25a46b97551c8b92fbe3ec2eb736a562ca8bf + pristine_git_object: 6e199abaeb2f5269a885637d65bb176fd235a61c + docs/sdks/presets/README.mdx: + id: eeb505928d52 + last_write_checksum: sha1:6f71a463dd8d32e2a002e86c3ff37a44350b54af + pristine_git_object: 5e8523f49f3809d1a9f0af88342148d40cf8bb4d + docs/sdks/providers/README.mdx: + id: 5ea9af111324 + last_write_checksum: sha1:570b55655ee7602d3807c3218e450741f634eed6 + pristine_git_object: 7571e2581a73919541d9712f6c1f88f9c0d2b4c9 + docs/sdks/rerank/README.mdx: + id: 68cdfc7f7dca + last_write_checksum: sha1:e72927c64eb545386bb50e9d30e8092392f2eb0b + pristine_git_object: cd1b341b1b7c0284b9ba9b102bd8020e0d7ce707 + docs/sdks/responses/README.mdx: + id: abab319e080e + last_write_checksum: sha1:c93ea3f5b1bedad1e7ac32b47a28dc3fc1bc8bae + pristine_git_object: 03281f8cf709ebb9a81700ade4cf9bc0db665eb6 + docs/sdks/stt/README.mdx: + id: 190b0dc9a5d1 + last_write_checksum: sha1:7647525772ccfd7b3b3653eaca748e0e785941b0 + pristine_git_object: a5097c97cbefb52415e2c830b7869525e994a9da + docs/sdks/tts/README.mdx: + id: cd1132543884 + last_write_checksum: sha1:8930237642313a1db6fdce5f7ea2b0680dc7c5ac + pristine_git_object: ece7fa92f85b1d8f702ecf2855f7267120d4efac + docs/sdks/videogeneration/README.mdx: + id: 9a8fa04c3872 + last_write_checksum: sha1:7d3c54cf2daa98e25df18bc27cc4ca30b2b1f03f + pristine_git_object: 429ca7dad6a66516aec6bb1e674af1e09dc42dd5 + docs/sdks/workspaces/README.mdx: + id: 0c75d023ef6b + last_write_checksum: sha1:b3552fadeab957d102333c3ba7d69f7c6bae267e + pristine_git_object: cf4cc041104ab0bffd6a0c8276068616e104819c py.typed: id: 258c3ed47ae4 last_write_checksum: sha1:8efc425ffe830805ffcc0f3055871bdcdc542c60 pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544 pyproject.toml: id: 5d07e7d72637 - last_write_checksum: sha1:83883613f4ce5a35940a61255018ae96c5b161a3 - pristine_git_object: 2c73ae5647842e85c54240de3c2634ef1644c424 + last_write_checksum: sha1:09396501f993eff974d032f893f8777b2515ad5e + pristine_git_object: 8064de806ae7235f1d2e4e9af7e2ee60057f0b86 scripts/prepare_readme.py: id: e0c5957a6035 last_write_checksum: sha1:77f44b60b98bc126557ec27391f91dfba764bb54 @@ -6366,144 +6366,144 @@ trackedFiles: pristine_git_object: bea18a51afb92e94dd85c09dedd566cecd468288 src/openrouter/_hooks/types.py: id: 265bf3035ab7 - last_write_checksum: sha1:77f7fb66371bba9fb16a209de6ff3b76eb6a5ef8 - pristine_git_object: 07ace03229fd3267623c8f48665d2c3a67c3565d + last_write_checksum: sha1:60b6add35a1f0e631197e0fa54da49785143dacf + pristine_git_object: 86713cfea633e09d33b3d4e65281071fe20e6137 src/openrouter/_version.py: id: d8d15ad6c586 - last_write_checksum: sha1:9191ddd2824cab64aba72a37907c39c13bae5e7b - pristine_git_object: ae046a12bfe3757e47b922caa4ee98754663db43 + last_write_checksum: sha1:0a66803222e13119adf3f0159a762fa469916728 + pristine_git_object: ec5d51ee05aedbb8948714d3e0a34560dc1a9a4d src/openrouter/analytics.py: id: cb406b5aaabb - last_write_checksum: sha1:6d47d1ab3da9cb4ac9f0a2bfe442f1a82a614f35 - pristine_git_object: ea004eaf47a1a48622d4a4276fba1e329d5559ab + last_write_checksum: sha1:9e709b71dd0611056dc0cec6150b578defe32841 + pristine_git_object: ddb44a129e8f45e7524fe5615a23f1ccc70bbe71 src/openrouter/api_keys.py: id: 876fac88fff6 - last_write_checksum: sha1:9dc40b10044a433ab5718c6db5122648c9b1d44a - pristine_git_object: 6c2cdf75cb4578b25bfd7cd17bd99b982a4a2e36 + last_write_checksum: sha1:3148f6ca155d917643f21e9e505f3f478d79b464 + pristine_git_object: 76eafbc60f7d5375ff4d4199ad90cd5d8f93e3e0 src/openrouter/basesdk.py: id: c5733c5a1e12 - last_write_checksum: sha1:71f242fd9955e5a17a8d055e2210cc2708bb94fc - pristine_git_object: fcffdcc6eaa61a4b79f7f1f76458eeb27e8f896d + last_write_checksum: sha1:65769ff2cb5473f85b364c6213a0ddc8c68644ea + pristine_git_object: 7a562e21c7e66c9db666ead83748b73adefe4278 src/openrouter/benchmarks.py: id: 178d2ad8d706 - last_write_checksum: sha1:1a4280d54c5db249e7089d03c304f57c51765b04 - pristine_git_object: d29a685964300932a574e77d64558f7a34e97796 + last_write_checksum: sha1:d9ad86c5125ca8e42125fb886e86583fa3ea5b50 + pristine_git_object: 1b503c89b32b0381c93ee627e74428ae37286e33 src/openrouter/beta.py: id: fffdf54fd8f5 last_write_checksum: sha1:7999d9294e23e166c6b27236262f1fb40139a4d1 pristine_git_object: 9c02cc64163adf027507af763e7b612d3b704adb src/openrouter/beta_analytics.py: id: 81988b170188 - last_write_checksum: sha1:56eec7f30bf7d6cce1548863eae879b339b2a76b - pristine_git_object: 9db10e868aa38e1c38036d55416f7bb39c71bc0d + last_write_checksum: sha1:91cc3d033be8ad49f3d2a67e9dd1ead470c4016f + pristine_git_object: bcf5829eba6df16f8984b756a46c8836b799dc98 src/openrouter/byok.py: id: bec352462ae1 - last_write_checksum: sha1:1368b36fa52094caafdd2d9a50f6b4b762c8983a - pristine_git_object: e915cbb90c56bf622de74204ebc8e62cd4af92ef + last_write_checksum: sha1:14ffff34cdb97e81dd5ef9d7ba0f105b09b7ba48 + pristine_git_object: fcbfd1acaba89492d5ca7a58aa1126073d5cd5d7 src/openrouter/chat.py: id: 723fdce15c1d - last_write_checksum: sha1:045ca733908a82e099a0c2a76c6c498025827391 - pristine_git_object: a1894915bd32aee65f019885634eb7908970a046 + last_write_checksum: sha1:79e9c02b4a16cae3c202b5ae0bfd6cd1d0d6f89b + pristine_git_object: ab93b1be035fe591f6c8fac84b57ecad89ff5b1a src/openrouter/classifications.py: id: 4f2efc24b95b - last_write_checksum: sha1:9a80e34828aaa3aa2bb2ecca3b665d4cb454d68e - pristine_git_object: 2654cbc562cc83940a6713b68f3967cb3f9dcfbe + last_write_checksum: sha1:3ab6fcd9ef679cd2149ec8dfbb4a86109cd152ad + pristine_git_object: ad3d247954547814054c01989a2dff3d12b3e4e1 src/openrouter/components/__init__.py: id: 81754e97b3f4 - last_write_checksum: sha1:d82d36a0074b74d4556f1226230bc17565ec0171 - pristine_git_object: 581b01ca5299006b8b6596ea466a7b26810e594b + last_write_checksum: sha1:cccdd548ea87a1fc407f4777d55048ffa2a56bc0 + pristine_git_object: f3f0d61c5923a35b661bbb3a850307f2147e6ed2 src/openrouter/components/aabenchmarkentry.py: id: e2e0f0b48c82 - last_write_checksum: sha1:1b6b66672fb80dccdc39843a98bdef6d7d804364 - pristine_git_object: dcf36134b499bea29d47a0aa4df1eb2963955f75 + last_write_checksum: sha1:fab4d9a24d2cea937bb749d46c5f83941e99d65c + pristine_git_object: ad39bd9765938465f06b5422706fc867db11e468 src/openrouter/components/activityitem.py: id: 3bbe7d35f459 - last_write_checksum: sha1:32b873ba5c0a9dbf5f0cf32c0217ce17395ae69e - pristine_git_object: 2f00349d0523c4686115fb2039b6f8fe7043e849 + last_write_checksum: sha1:478bb399829efe851d28bf5124f35cd7ca522665 + pristine_git_object: a234e6ddf7aec8c7c3d6bd5e4118015c8fbff274 src/openrouter/components/activityresponse.py: id: 0bd8d79c3144 last_write_checksum: sha1:db8e3247cf9eb2c235d32949d36f7ae95870e8ed pristine_git_object: 1138e6f6bc025546a86877749ce83aca4c46499a src/openrouter/components/advisornestedtool.py: id: 768fcc6bad2b - last_write_checksum: sha1:199df787c5418a426e0c2104945f381890d461a2 - pristine_git_object: e21d2d2322aad32dabda485132c4046d2ec6de89 + last_write_checksum: sha1:9c4303eb7fbefd1d7200cd588e7ab7e55db791e8 + pristine_git_object: b661de1ec0b9a84d331d254e9f63656229d3f2ec src/openrouter/components/advisorreasoning.py: id: d5af5c19fc73 - last_write_checksum: sha1:db9d67036b51e37b98ea76b383528af3d48f6ca6 - pristine_git_object: a2ab43864d385b5554fc911cc9ee9ebe9893c10f + last_write_checksum: sha1:0fd32e4ff2d89f7cea861d6e691e82a7e1ff62f2 + pristine_git_object: 0b87e3c6bde34128215d2228f2349a44ff453a5b src/openrouter/components/advisorservertool_openrouter.py: id: 4442cd9ad387 - last_write_checksum: sha1:c1825628e0bbba268e5addad89e7abe6e45b2926 - pristine_git_object: 923d26368a221b79e489ab8bfa4356e05cbf2a5a + last_write_checksum: sha1:74597f510ec8044437d9a0f5abd6465152141c1d + pristine_git_object: ffec551949aaf877801193abb0dd8ed6d015453a src/openrouter/components/advisorservertoolconfig.py: id: 683887bb9db3 - last_write_checksum: sha1:2bcc6dfe509c99927ae841738dd58457f8fb79d5 - pristine_git_object: 4540be9c1c0935cc1a3c4c3445a272c4616abb8d + last_write_checksum: sha1:3a801b02cc92e02a00f0e26f377fb93a6893641a + pristine_git_object: d92e19f8e9bec36933cd3e5d7ccc1690f14b168f src/openrouter/components/annotationaddedevent.py: id: dc032c9ad744 last_write_checksum: sha1:8e5d49d2b57114df7f4559b611d40769e65f9f78 pristine_git_object: 597a5e01e843b06758f9c49b32d5d18d473dd106 src/openrouter/components/anthropicadvisormessageusageiteration.py: id: 121ee5a5d831 - last_write_checksum: sha1:dc0947f15ab23a783f4146c03b046351836300c7 - pristine_git_object: 86b0175b497b07f6deb5f31edf994183c891d1e3 + last_write_checksum: sha1:3c5f92c130f9ce8d291bb69116c822b64f6d50c4 + pristine_git_object: 7b83b750e97a5dc510e7b174473ab778578ba6fa src/openrouter/components/anthropicallowedcallers.py: id: b51c080db25a last_write_checksum: sha1:250ea2824392b7c385c4375a029a256f3d10afb4 pristine_git_object: 500de1c23584b0c3d341a266cae5b820ea386dec src/openrouter/components/anthropicbase64imagesource.py: id: e6a1034d5833 - last_write_checksum: sha1:4c1263288e19feb63ec62817f9ea77707958c746 - pristine_git_object: b49ef8cacd77d250f3aaa013a02fbf693d1bef16 + last_write_checksum: sha1:620eaa571df716582c5ff6477520355ae7d69f27 + pristine_git_object: 18b184048404fbe618885292b9977178804775f4 src/openrouter/components/anthropicbase64pdfsource.py: id: a4fa00bbe8ed last_write_checksum: sha1:a7ab626cc971478afac1d68b71c49b497e4b8662 pristine_git_object: 870c2e75705a43762b7aa2797e5b0cde4fe40d87 src/openrouter/components/anthropiccachecontroldirective.py: id: ffa72802cd82 - last_write_checksum: sha1:d1bb4e32bf3463f8d5c05c2aea74b2acdbf5134f - pristine_git_object: 4b2567b583ce4e52e0607a0fbdb15a1d617df029 + last_write_checksum: sha1:c73ec323b8d1e650f51d91f00b824804e4b9f6c3 + pristine_git_object: a9292b2d0dc104b016f7bc2600275d87fbd9ecac src/openrouter/components/anthropiccachecontrolttl.py: id: 2ec3e3546afe last_write_checksum: sha1:338e193bd6929eb6ed69da9bdb4e608e5db6121b pristine_git_object: 05a105c6e4f6c9037f953e4620576a8494645865 src/openrouter/components/anthropiccitationcharlocationparam.py: id: 6f6f0732b22f - last_write_checksum: sha1:a7d049bcc5d0a330259b3d9cf108bc9813f131bd - pristine_git_object: 08a89abd4ff0a298d2acb18ba2c5679ccaa9bbc1 + last_write_checksum: sha1:f06cdcdd405abb4222450f027fd38f29b05efbec + pristine_git_object: 4f0862e0351e9c829cc98c7e72037f095712a093 src/openrouter/components/anthropiccitationcontentblocklocationparam.py: id: 057124c0e6c3 - last_write_checksum: sha1:fa10a8053e547b3aa5b6acfee29f78dd49c77112 - pristine_git_object: 8763d42f5d83efc480dbb58dedeb54aeb4c12605 + last_write_checksum: sha1:d7e044721195f51ef8ce3b63296a83f0b4fc98b6 + pristine_git_object: 7bdfee1f4171c8e17b2d9b919bc8486c86fa4db6 src/openrouter/components/anthropiccitationpagelocationparam.py: id: "8776686778e3" - last_write_checksum: sha1:5d18922be6bdc1f6accf996602fc9927ec2c6bf7 - pristine_git_object: 24af0c24590fdfb65a1ba4a6ac88bb1f4482e1a6 + last_write_checksum: sha1:9a7144f078d7b404bf3d90eac0d3a16a24ba3bba + pristine_git_object: cbe0a66bb0fd32915d5f1379990f0b55b1be34e8 src/openrouter/components/anthropiccitationsearchresultlocation.py: id: 3bed26599605 - last_write_checksum: sha1:47a91f6d42c222e92ef50ed86dc086cabcbfe4d0 - pristine_git_object: 2c3548be8462d3940c937a5dead7d55454766bd8 + last_write_checksum: sha1:2dd310e399d7957ff933cd7163b7ca9f9fc348f4 + pristine_git_object: 8a90ed4f254de659efca56a8ad691dcca505bf1b src/openrouter/components/anthropiccitationwebsearchresultlocation.py: id: 1a120a6f2e0a - last_write_checksum: sha1:997517abf99c9f97c4c76936f92a95f40eb0cf7f - pristine_git_object: e64d16928a4efa5c07e431a317ec573963fe9310 + last_write_checksum: sha1:e4841838144a600bbc556aed274ecdd56aa2b51e + pristine_git_object: 4d061c61a4c7c6cee32194f7fe3ab9bebf00ec6f src/openrouter/components/anthropiccompactionusageiteration.py: id: fdfc1ef0420f - last_write_checksum: sha1:a30d2b6892509f226083dfd421f0b633ecc614da - pristine_git_object: 5b00555a9e606281c749d7d147ae58ca0868e396 + last_write_checksum: sha1:67b10e83d2fc7777319f6c51d4e5cc7539b9eccc + pristine_git_object: 50ad24f32ec87623c006381c477c46f44d84c753 src/openrouter/components/anthropicdocumentblockparam.py: id: 2c3093530540 - last_write_checksum: sha1:db21d071f7ea9b0597a83da88697c1bc11d72981 - pristine_git_object: 9aef9c761fdb61ab7c4ff753b4dd2023e27def1e + last_write_checksum: sha1:904f1546a7a69df231395f33cb5b1b71ae0c2611 + pristine_git_object: 686764bb6991204328c5017ab636e3d38a4f2f09 src/openrouter/components/anthropicfiledocumentsource.py: id: d824b52285d7 last_write_checksum: sha1:5d3c89e2d60df0116aed28d9a2274cf61536af41 pristine_git_object: 06ab054ee7227cb2186c19c108145d8e19646044 src/openrouter/components/anthropicimageblockparam.py: id: 71cab07562d1 - last_write_checksum: sha1:66f59a1cce48420768957b63bb84ab02da6c144e - pristine_git_object: 05e677372c952726c9cfdfbcbc80b04ef62c7b82 + last_write_checksum: sha1:7077151d8ef411a85bc3cdafb17ae7969c8bf7cb + pristine_git_object: 979d0464c4ef00aba59e1431a2bbd3568c411246 src/openrouter/components/anthropicimagemimetype.py: id: 2434bf06fc4f last_write_checksum: sha1:2016e4ef5d678a2af645d50cb02e022c3918d494 @@ -6518,28 +6518,28 @@ trackedFiles: pristine_git_object: 8ff4915a203908a5ae986f28357b7211590912d2 src/openrouter/components/anthropiciterationcachecreation.py: id: d8eff6dbf240 - last_write_checksum: sha1:54740194c3948b6066d700b47f54f9b42912ae15 - pristine_git_object: 9447771803562a9dc7c9509c87c63ad65a914757 + last_write_checksum: sha1:866b822649d4b03cced63686a99ca0d4335a7c4c + pristine_git_object: b32195ebb448bdbab0e35219afa6e5f03d671874 src/openrouter/components/anthropicmessageusageiteration.py: id: d94b609d7d8e - last_write_checksum: sha1:64cce42227c30259261e6c0e9958a17e2afddbde - pristine_git_object: 0c76c28951383fc04cc9a95224811a0692d058fb + last_write_checksum: sha1:6949f3d16ef26c66e909304d5fcfa4dad55cd74c + pristine_git_object: 49e169b42f244778d55f8b09908b76a1736488b6 src/openrouter/components/anthropicplaintextsource.py: id: ed38ef79c74b last_write_checksum: sha1:b6584da4f7255412f12de31e02c522fb84d4cfd0 pristine_git_object: d16f6dc9a2449185ef45731cbcd0a78c266745ef src/openrouter/components/anthropicsearchresultblockparam.py: id: bccb7c6b3128 - last_write_checksum: sha1:2917cf9fe9a10f160359e7f43ecdcaf7bf172ebe - pristine_git_object: f953ecdcfaf801ee1f89d23b3463642adbd85221 + last_write_checksum: sha1:aa8fcc04743f07cf8a72b3cbfaae212524101700 + pristine_git_object: 5925732967541b0d598ac249f372e5b18f975b0d src/openrouter/components/anthropicspeed.py: id: 7e39c29f3d89 last_write_checksum: sha1:19e37bf7ec082d89258f44674405811cc8a010ad pristine_git_object: 4f9c2bc739541b12c381e3d6265184af879cc1ff src/openrouter/components/anthropictextblockparam.py: id: f387daeeb940 - last_write_checksum: sha1:315ad4fb2c0cede75e5b8dfe3d8dcd4842a03322 - pristine_git_object: 38b493a385198c09105ea265b7df96d068a8bd15 + last_write_checksum: sha1:f58942e9bb462aa291affec04500e112495a9acf + pristine_git_object: ed10fdcf8fdb3fcc18a59ea6cbaa1035bb987a5f src/openrouter/components/anthropicthinkingdisplay.py: id: 5d63f1a15f67 last_write_checksum: sha1:388d60bbe78d3b848744564f91b31142d7bfc7e3 @@ -6558,8 +6558,8 @@ trackedFiles: pristine_git_object: 97aca7f4209ba9ad038b97e35b9b8b8cd0e6e168 src/openrouter/components/anthropicunknownusageiteration.py: id: e0c582be1ffd - last_write_checksum: sha1:7c50a515d361fdd0008f1c04a4babdcfe15c1b55 - pristine_git_object: 5bbd2e0feacf932a927422a0ea9667493d9904cf + last_write_checksum: sha1:e1480de604880eb711f691b92a53c93f784ac439 + pristine_git_object: 2bf0af881edb2ce3c4de011979d1827abc8af48a src/openrouter/components/anthropicurlimagesource.py: id: 291b4d476bb8 last_write_checksum: sha1:e6a8b32f053bfbe3debb8940b03135d1e8a00eb5 @@ -6574,24 +6574,24 @@ trackedFiles: pristine_git_object: a984e7a5e0de4d93e4a65582d97b8eb9c3b1a1ab src/openrouter/components/anthropicwebsearchresultblockparam.py: id: 7a85be31694c - last_write_checksum: sha1:a87c04e8e05b3424f44a8ed55225b1bcb05b40b2 - pristine_git_object: b9df82ce0fe6474b55bdfb8bc79b6fa4492f3546 + last_write_checksum: sha1:5a07a65d06ec00547fd81d5d80e79057114911fe + pristine_git_object: fbd558eeb550c32dc2bffdd12a5815e8f290fd91 src/openrouter/components/anthropicwebsearchtooluserlocation.py: id: 11ce6e19f6e8 - last_write_checksum: sha1:43e5b88a03a2c16cb48e58bc33090ff8934e47c6 - pristine_git_object: 888de6cb6bf49187c71e5b0fd2474cdc05f27e9f + last_write_checksum: sha1:fdd868a707022da7b015d09f9ebda5907939c6f8 + pristine_git_object: 194443c59209df1e181a0d750331dc7ab587efcd src/openrouter/components/apierrortype.py: id: 04798f000cd5 last_write_checksum: sha1:c504f52290f8fa4f49d73cbd2c8b4aa8b695e612 pristine_git_object: cb48803e55aa039bcfa8232328dd2874db8d73e3 src/openrouter/components/applypatchcallitem.py: id: 532887f6dcc3 - last_write_checksum: sha1:fd5ee933b7c7ab2160bc5dc95e967a67700201d4 - pristine_git_object: 1a5f1e022b2cfbea90c13746a0bc3dfad1328fa5 + last_write_checksum: sha1:c87ffa0059eefbdc6909548fe3999e1948954fd0 + pristine_git_object: 798b10eb6f7d278489b3513139bf7126f8338375 src/openrouter/components/applypatchcalloperation.py: id: d1e3d8983106 - last_write_checksum: sha1:a5404122c3cb4d91cb0f3096abca8d953caf0e33 - pristine_git_object: f0188f4465178b75362c6bcd0eb385d7804b1a57 + last_write_checksum: sha1:1a37ef1d590fb76ca84d1388dee339b14166278d + pristine_git_object: 444529466ac47a0dde7ed9c858b5f7371a88541d src/openrouter/components/applypatchcalloperationdiffdeltaevent.py: id: 59d7d1eb8040 last_write_checksum: sha1:6734b7c0e87b123d7b5c3967597967a41b42e54c @@ -6602,8 +6602,8 @@ trackedFiles: pristine_git_object: d03decfa67050aa2d35106caa46d4aadd03728bd src/openrouter/components/applypatchcalloutputitem.py: id: b412ea6dde1f - last_write_checksum: sha1:9056677a3c330dfcf563b8689a5ff348fc7c450d - pristine_git_object: 1b768e6e402356ef39d9754a1031bded2d9d6959 + last_write_checksum: sha1:a80dbf0ac1fe549bbb6f0bcf1e20c80d06a9cddf + pristine_git_object: 7d543c9b5f8a149de01b6ef9fb30a1e33e6c72e4 src/openrouter/components/applypatchcallstatus.py: id: e92aac2d606a last_write_checksum: sha1:c5cd7c843e94088b14774838c28a96ad291d1de6 @@ -6626,12 +6626,12 @@ trackedFiles: pristine_git_object: 0be07495eeb9ab2be9421d1a5deda27859865e57 src/openrouter/components/applypatchservertool_openrouter.py: id: 60c161a64fd4 - last_write_checksum: sha1:3c406ce2874327a95777f92b53996eba3403cc35 - pristine_git_object: 158c52b8fb174faa5f41a646453d24fdc51f780a + last_write_checksum: sha1:94512968af4f0471a320e061cf7bb2fcdf1f2848 + pristine_git_object: daf2de613539ace18f05ad7848bddf93d55ac0e9 src/openrouter/components/applypatchservertoolconfig.py: id: 57e332dc2e56 - last_write_checksum: sha1:d41203a12c96018db9821e6ec9431948e727cac1 - pristine_git_object: 61d5a3b48c1532da0ad50272fb4940ea729502cc + last_write_checksum: sha1:600967624e7e8b63052900e2b2ac19210bf46270 + pristine_git_object: 62209939f2244426eea63795a0a6ae1e6064a0e3 src/openrouter/components/applypatchupdatefileoperation.py: id: 73750662eb69 last_write_checksum: sha1:e3df65fa2392ca6b770c64009b7b79a6532a70f8 @@ -6646,32 +6646,32 @@ trackedFiles: pristine_git_object: 2ccc3d9be586133e5d5138c77eacefa243987fb5 src/openrouter/components/autorouterplugin.py: id: cf49add5d1ae - last_write_checksum: sha1:d507fa850102005c888956a1f6db60fabe61ffd7 - pristine_git_object: 665aaa0a7c00f99dc717c95f8bb94bb21f925ecd + last_write_checksum: sha1:e4ad3fb36054b4d0d05321f07fa025611e76c878 + pristine_git_object: 64a0715572155d0eb3bd297b886670e97837c843 src/openrouter/components/badgatewayresponseerrordata.py: id: f7a33d30d269 - last_write_checksum: sha1:338789c4e0dc85ac1c949f3b7d35127f7309bb98 - pristine_git_object: c1740ad4dfdd4c583b6fc1b4e85e1e0136bb4aeb + last_write_checksum: sha1:10101bc2689deb825e4d679096376666c6094ef5 + pristine_git_object: 08905537423555f6dcfe5325d62cdf371b3035f9 src/openrouter/components/badrequestresponseerrordata.py: id: 8a9249ed4bdc - last_write_checksum: sha1:5f8d4edb53ad9fa297aab2c3ece9d43190af0fcb - pristine_git_object: caaacbde392cefe0e8be9a0991b42fa653909bc2 + last_write_checksum: sha1:50745795ab618b1720cddd1e596bfd96e99eba4a + pristine_git_object: c59b958cb34640b4cc6329be5154480e4116929f src/openrouter/components/baseinputs_union.py: id: d85e19ff642b - last_write_checksum: sha1:12249be51b825a297fdd94b2ffd19fcf0d221707 - pristine_git_object: 25128bdb864052bcc6310b50d7dddccaa89a23dc + last_write_checksum: sha1:0d8178381a828cc9db2f7b7eb36e0b657f0e1d52 + pristine_git_object: 56b48e741547abaae734d07a4022808fb082f899 src/openrouter/components/basereasoningconfig.py: id: 8bd09a7e873a - last_write_checksum: sha1:c7c812629a7fc46f8064bc874b77424b30df9226 - pristine_git_object: 22bd982575db23648faceab9dbedf75fa1f1cb38 + last_write_checksum: sha1:1519371cc541bdec60a88b183b45717cd60d93c2 + pristine_git_object: 35d8ea7747973582b749e258443a1450e74a589b src/openrouter/components/bashservertool.py: id: 1c5881bea648 - last_write_checksum: sha1:d219a3a7a7b6437eca2cd0e4ed943e29225531a7 - pristine_git_object: a3021f927334a614ae7df011d85a9d089110a3c3 + last_write_checksum: sha1:fd74247241c7371ff595e3b5e8fb1cac31f66ddc + pristine_git_object: b2a50762374284e45d7850991774618c9367c488 src/openrouter/components/bashservertoolconfig.py: id: c8c5bf3fd9a8 - last_write_checksum: sha1:81677982839193e28247054976677c9a0b6b9420 - pristine_git_object: 4ccf38dd2b387e4446d55f152c7998b78871995b + last_write_checksum: sha1:d183602699550fe088b4c95bb0f351fd83b477f1 + pristine_git_object: 7bb32209eef6480a06cf0b951686520ca9d006a4 src/openrouter/components/bashservertoolengine.py: id: 4648c91620a8 last_write_checksum: sha1:a4bc825f816c6207d69d3ca51098d05d14b0d69a @@ -6734,56 +6734,56 @@ trackedFiles: pristine_git_object: 219148fc990faf0541310cf55cf11ffbcccc2e55 src/openrouter/components/byokkey.py: id: 94a3339e7dfc - last_write_checksum: sha1:18628a1bfee383851a284845bd810df629974fc3 - pristine_git_object: 033a6f367e4da3d56835bb0d593042f24bfa0930 + last_write_checksum: sha1:11e7b469b0d452443fbda99208bd1af4e020796b + pristine_git_object: 47ef267b5e0f7b615b0cd66018728e3f47440a66 src/openrouter/components/byokproviderslug.py: id: 6738a8516caf last_write_checksum: sha1:2b105bacb46fd7150af7f079241fab2ba6700322 pristine_git_object: 38050fde0204f069cb2568fafc91338a7051c92f src/openrouter/components/capabilitydescriptor.py: id: 368790a86f10 - last_write_checksum: sha1:13a2fe668fd9d3fdb2d6941cf7a14b49f8168066 - pristine_git_object: 3b40c65b1bd2d08a6d01c3ec69023bd64a72907d + last_write_checksum: sha1:a167551924ee82b4b5876a0ab698a45fe8c87a95 + pristine_git_object: a1cb577d9835d93914b06761e2cad3ceae2961e2 src/openrouter/components/chatassistantimages.py: id: 993f9dcd8575 last_write_checksum: sha1:0b6be31bb9c8b3bc8f2098af5b2bd12b62a710bb pristine_git_object: c7866f6fa8967c301f6aa11b0b0431384ab79556 src/openrouter/components/chatassistantmessage.py: id: 16355b51794d - last_write_checksum: sha1:262463011bb166384398cc28bb4ee158990c4e71 - pristine_git_object: 60b919a36d0f637df0e20d85d7b3dbc613828651 + last_write_checksum: sha1:dc84d9b000613474d9cdd0a9851fd16f105252b8 + pristine_git_object: f000d9086ad3ff80dfb47d1c4da15c745849f10e src/openrouter/components/chataudiooutput.py: id: 99984fd282ee - last_write_checksum: sha1:d6daea59d700227f24194133cbf8c08bb2f8d26a - pristine_git_object: 0ce4edfdee4b3f90d38f64e2d0c2ea861bda095d + last_write_checksum: sha1:d2f5aacb72a261437e357c10e5bd6af16cb61323 + pristine_git_object: 7b5a13be15078d37ba17bbb8f6778dbc4510ba50 src/openrouter/components/chatchoice.py: id: f511174c4629 - last_write_checksum: sha1:7c37937628dac76596825dffbeb2335bec99cc97 - pristine_git_object: 8651759272bdcf01eb65fbc7bd644e8c0aac8e67 + last_write_checksum: sha1:8b29e3308736e34bc8c0a8cad41dae13611d001f + pristine_git_object: c15a10e65fa8a31c2d99626820e783adb172d5e3 src/openrouter/components/chatcontentaudio.py: id: fae7bc57e73f - last_write_checksum: sha1:23f5a430c45dc89780b16c3f4d2dcf8df6f0fee8 - pristine_git_object: ad506c0e68b77dec2dfcc3acadc91a3c15a3927e + last_write_checksum: sha1:9c81e5b2600b24b12e9f1b257b5f779032bc4f6d + pristine_git_object: b937a2df121366183d40d9f124c9f1bf21b798db src/openrouter/components/chatcontentcachecontrol.py: id: fa34483583b7 - last_write_checksum: sha1:6c8e40f1358dccece301730dafd3eb00d4aea805 - pristine_git_object: 7263adce89ef130ad94504dd600ba19deeece3d6 + last_write_checksum: sha1:e34eec1c61fdbf41456cb25b3704f4f26c7590ac + pristine_git_object: e23d40503368f1c30d2bd3335b9196fea2094c51 src/openrouter/components/chatcontentfile.py: id: 2a747b8033b8 - last_write_checksum: sha1:f8ea4e6c0999d2ae59e1b6de39dd2bad07599c87 - pristine_git_object: e737cbd7318fb553946f2c5a9986a9630415016e + last_write_checksum: sha1:1203efad65c0e72e18fa600bd8ebbc72a82340fa + pristine_git_object: 07d3d043d87c42754ae89493b4cd6f91c43967c6 src/openrouter/components/chatcontentimage.py: id: 6897abcd5da0 - last_write_checksum: sha1:3e4d1947edd8b77f1ebd804e91423221e6d33682 - pristine_git_object: 45430fd36f0e76600b818778af749de0969ae34f + last_write_checksum: sha1:e511b166d8568787289e53486fef5faad6462a4c + pristine_git_object: 44c4909c0745edcd9a401f2c9354c5ddb0a3c952 src/openrouter/components/chatcontentitems.py: id: c4253e14cbd3 - last_write_checksum: sha1:e17966663f37a773e5ab5fc0c5e7e09f3ab9aef4 - pristine_git_object: cb153a030d300afe41950e098d219bbdce2bdcfb + last_write_checksum: sha1:37e2b4391a66d6676ceec464a762810a534d369b + pristine_git_object: 61415b0c78602a7fabc4bf7f62ac869bacf38195 src/openrouter/components/chatcontenttext.py: id: 5301d8af31e7 - last_write_checksum: sha1:34e58197e8536c49997b2f2ac68aa7c654dd17d2 - pristine_git_object: 4367bde935d5dfab2b33cb2aff89101790350be8 + last_write_checksum: sha1:8c30921c5e1530becb0f646866787aa3d1deab13 + pristine_git_object: 86d0a046b85b9caba7f628344d55febb71936ca9 src/openrouter/components/chatcontentvideo.py: id: 42859cb5a9f4 last_write_checksum: sha1:f60354c6602613f3f8628ca29330a6037fcf20e9 @@ -6794,12 +6794,12 @@ trackedFiles: pristine_git_object: 48b8e57ca95d7dd50e7172de375eadb6d052ad35 src/openrouter/components/chatdebugoptions.py: id: 03e05dcf9b0e - last_write_checksum: sha1:fdd09315ba85dabd93ef0c1e9911309d58c12374 - pristine_git_object: 777d93efafd1f357560467682bc13d33c98a160b + last_write_checksum: sha1:52d89c7c7ad343bd9d1dcc84a13f4091eb3510ad + pristine_git_object: 309df1015b07e05ad2d692ed73ef1224535e8582 src/openrouter/components/chatdevelopermessage.py: id: bcba94e8d19a - last_write_checksum: sha1:e9aebdfb1010b763874467a3c540b5588ec9ee1e - pristine_git_object: 175218a937ea755e521289b92486a7d67fdcb907 + last_write_checksum: sha1:2b4737de643f073848fc04d15a53d55f9dec9855 + pristine_git_object: 56dcbb97ee27d5cbb79616e6d039bee74b8d2e47 src/openrouter/components/chatfinishreasonenum.py: id: "331394791883" last_write_checksum: sha1:98f6b15af15986f5b3e9ac60c29bf9e5a70eeb5f @@ -6822,12 +6822,12 @@ trackedFiles: pristine_git_object: 7a6140f2b8afb0cde9b031322a4284c9cbce7e33 src/openrouter/components/chatfunctiontool.py: id: 1fcf92f8a7da - last_write_checksum: sha1:914ec1c354458da1d6634f12ad3f0149dd588f6a - pristine_git_object: e0f23b38e09fdac95768ba454244919f3d496007 + last_write_checksum: sha1:008f3de8033d1b64f741c4b8f279425a1ac5734b + pristine_git_object: 3525ecad7e6aead245dcc143e92857c9f7f85883 src/openrouter/components/chatjsonschemaconfig.py: id: d2278e414fab - last_write_checksum: sha1:69efa91d33e4767058c2d377814b820bb5104ab4 - pristine_git_object: 013154427936561c5aeb7180b325a033c26c23c3 + last_write_checksum: sha1:73791c8aa5f3dec4a25903dcc9c61118fc88a4f3 + pristine_git_object: 4b3aa418ffaa0a13a57301e54c932fc158c376f7 src/openrouter/components/chatmessages.py: id: 3425ec393ea1 last_write_checksum: sha1:e5a58c98ecacc9b4c72a147c458532cc78a7d898 @@ -6842,56 +6842,56 @@ trackedFiles: pristine_git_object: 8bbde153b53887e426989fd5b0486b6dc1122810 src/openrouter/components/chatrequest.py: id: 5e39eaefa9cf - last_write_checksum: sha1:eb9f865918863ceb12508060f3bc8605f3a9a87a - pristine_git_object: f60f367c641cb92d48bbc2873bba0704800165d9 + last_write_checksum: sha1:795fe5c66c8e44878d3769d1068d5591bd0a7a40 + pristine_git_object: 3ab5ba1d64a4f1cb214ff2428a6cfa31054d8774 src/openrouter/components/chatresult.py: id: 9062fe2935fe - last_write_checksum: sha1:b44dc25412b1206cc188d9516191a273d0f3e4dc - pristine_git_object: 85bb6c1a31b0f762b4a87928dc67114c954efaed + last_write_checksum: sha1:2ff1963c54e7e79500115c8549c8d395f4e336d1 + pristine_git_object: e91d16101cbf8b5a711b7cca945f22df34c966a3 src/openrouter/components/chatsearchmodelsservertool.py: id: e280d3720327 - last_write_checksum: sha1:d16ee5aeba32baddf132119bcc46cf390020da63 - pristine_git_object: 5c78164f31cfe7fe8d8e64f6b25e8bcf90084b77 + last_write_checksum: sha1:4fd2e8787d4c8dd0e85ffd2d945b9b685e8222f9 + pristine_git_object: e6ea5476493ccd7f2573b74c4e1bb2fce69b653e src/openrouter/components/chatservertoolchoice.py: id: eabe3865e853 last_write_checksum: sha1:67a9aec17ded5a161972cb77d09054c95eef4c5d pristine_git_object: 51b7a93a2f8db581f9d80803428d3ea8a19a73ce src/openrouter/components/chatstreamchoice.py: id: 356768c2edcc - last_write_checksum: sha1:bb475a522fedfb04084c1b6b0e7cb5d8a0d4cdad - pristine_git_object: 9166d93e4c351c7465ba67e2e7f4708038d6ef2b + last_write_checksum: sha1:a5a78ee48ac7eba3e3b353fa184ff5cf8239095f + pristine_git_object: 688a877f59a952691935907b0c49c9bd2bbaddca src/openrouter/components/chatstreamchunk.py: id: 16cdd8d4a3d1 - last_write_checksum: sha1:c3efdb1447546f143f33c51b8971fe0677828f70 - pristine_git_object: 1f00ab137cb7ede250f76d8bd0d1d50397c31927 + last_write_checksum: sha1:3a34fdfd8ef6736c1874fc6c5e6464dc8efff9ac + pristine_git_object: aec4bc5d54dcaf65774110e4eb0d1838d750136d src/openrouter/components/chatstreamdelta.py: id: 7484252729d4 - last_write_checksum: sha1:2e1a6408c51e6519337e01c394f4ce7695edf573 - pristine_git_object: 8d0c74c413e531eee7b7130e3cc3d9286a262229 + last_write_checksum: sha1:c7317ebedb5092f9cf645bb3f349edc547e7f191 + pristine_git_object: 6eb10789605e60d0c0345b0794f1f7711f1f1907 src/openrouter/components/chatstreamingresponse.py: id: 045cf83786aa last_write_checksum: sha1:9e087f1821b264bf59828aae7bd7f9c35b838d74 pristine_git_object: cf5a90d9a20e7221f68d66a3338a9526a0cd06be src/openrouter/components/chatstreamoptions.py: id: 85e752c7d55e - last_write_checksum: sha1:9e989c9b9282d3a014d3933e6d2227ca242ae1f6 - pristine_git_object: 48eb279a4e3d4e04c484f5da2feb90e49a585fba + last_write_checksum: sha1:d7d661e0383d4fa5917835a729be493f4f4a4a0b + pristine_git_object: cecb204b76fe64d7778394e00975e625741c5856 src/openrouter/components/chatstreamtoolcall.py: id: 7afc3bcd51e4 - last_write_checksum: sha1:a7d37d8e6e0fd2c6db08f2ab9dce9cfbe4be92b6 - pristine_git_object: 461213986d44d0e5e79e8f2bcce4ac1892f639d0 + last_write_checksum: sha1:7a10ce6c1c1f30a6b03076ad7147199a6d7fcbd8 + pristine_git_object: 936fefc210c5b6b9e94ea708035b085b59aed2f4 src/openrouter/components/chatsystemmessage.py: id: 72524b9ccaed - last_write_checksum: sha1:e2ebb6daa6d430843678c7102b2d7b542155a8a8 - pristine_git_object: a9e7bb12af12d0dc6592de4da55bdf23e854a76b + last_write_checksum: sha1:c959c5330a7ce6afbd1367da6ed8dca4bf539dd4 + pristine_git_object: 99beec8548456e1f72d01fce5f098d93616bd4b5 src/openrouter/components/chattokenlogprob.py: id: 6ddf9cf44f5a - last_write_checksum: sha1:e205f6e2e60d32d72f64ca67543b8524e5dd3c84 - pristine_git_object: 2a82b99eed3d853ea554205049989e048aea45e9 + last_write_checksum: sha1:75641fdaddc42fea10d46e9974c051f3393ff94c + pristine_git_object: 1a689698a4213f215d8dcaa4ce1aba831d9cf4c7 src/openrouter/components/chattokenlogprobs.py: id: f173ce5bcc37 - last_write_checksum: sha1:8656ce700afff96f866555500521923d274c5aa7 - pristine_git_object: 037f8b50e5fa0dca36a9754ff01db39b63950ab6 + last_write_checksum: sha1:0716d288da45384f8caecdd7197ebf80c24da55b + pristine_git_object: f450b8ee5394cac5f96b431db97eb34f5aadc612 src/openrouter/components/chattoolcall.py: id: 494372b36e05 last_write_checksum: sha1:892f2a4800d448de1f1735ae91e301a6475b5189 @@ -6906,40 +6906,40 @@ trackedFiles: pristine_git_object: 2ccba8386486b7a730816a9829b01754935a2e96 src/openrouter/components/chatusage.py: id: f224a054bf45 - last_write_checksum: sha1:b97beddfd0229cf3d993948cbad3bd45ca76d7fc - pristine_git_object: 8eb123a284d3fe9604c0f97ec225da377b0fbd88 + last_write_checksum: sha1:3cdcb6cbf944509ef966f90f7d6e3af967323277 + pristine_git_object: 1410ca9d1ed4032acb4a59569be77cea2fb4432b src/openrouter/components/chatusermessage.py: id: 7777191e729a - last_write_checksum: sha1:1ecc9101c05178427d73e455de4d679ac8d78015 - pristine_git_object: 9092aa329bdd58891c2c6f92a6d9c4228b37400c + last_write_checksum: sha1:6e9d3d1a827832b947bbb688a8f78f43aaaa9f81 + pristine_git_object: d5ebd465c8d843f4bc1f0763d136d31960ab2efa src/openrouter/components/chatwebsearchshorthand.py: id: 13091b97a3f6 - last_write_checksum: sha1:21a8e196d7c9d03202f8f124a306dfec61ee47b4 - pristine_git_object: f97f261399616ef7087857e422d044a4c6f38878 + last_write_checksum: sha1:5f0a816474fb5767093d1657410765d4904879d8 + pristine_git_object: 9d333c1da7bc71abf85294ff59f8d144312e19b4 src/openrouter/components/codeinterpreterservertool.py: id: a72c520afbf9 - last_write_checksum: sha1:f6123d9808c530e0b042e0a30fbb1a11a82096e6 - pristine_git_object: 67d4cf9e411c21528c7a5648e9a4c31e9f99e316 + last_write_checksum: sha1:89e529b98c4b42a9d573f9234ee44f702e8bfcb7 + pristine_git_object: 5705d69dd9befc2934968d159c161a5c9acd0e16 src/openrouter/components/codexlocalshelltool.py: id: 74a77b6a8b21 last_write_checksum: sha1:135cdc82ad9f65401da11274c786e471888e27e7 pristine_git_object: ea86f79f7e10d7584621fb804ac56e7bb79578ba src/openrouter/components/compactionitem.py: id: f1535c3a68c3 - last_write_checksum: sha1:b4922929d7588f19227f70092050063111a6cef9 - pristine_git_object: eb9ac6983a6423622c1f8f027b6e9a898c0374ec + last_write_checksum: sha1:c344678bd27fea9bae0da60dae93aff484483a20 + pristine_git_object: 0c6d74912168fc04a0d756e9fac3b914e0ca6106 src/openrouter/components/compoundfilter.py: id: 0cab72c7a3bc - last_write_checksum: sha1:8ff3005f188637f3a82bfb4c842ac1eed8fdb8e1 - pristine_git_object: b32ff67d3c2096c21d785a9eb037ff4bd293cbe8 + last_write_checksum: sha1:7bc0251dcf6c06f0fd00c9cadee2fa6a1e88ea82 + pristine_git_object: c80781ee2b1d3f3f7e2b0063b0fbfd16937039ac src/openrouter/components/computeruseservertool.py: id: 10d96ee539dc - last_write_checksum: sha1:62b38f9910153b95695824e7820f0f3bc2f85b35 - pristine_git_object: 8f6128f97f9b7ea70c3b4453aee67fb2bcde2db0 + last_write_checksum: sha1:ae5e0b764f246b7d8c65598cdd788cb890a8bdc4 + pristine_git_object: f8c70070d4069fcb7ad697a1d1012ea0a95c1a02 src/openrouter/components/conflictresponseerrordata.py: id: 212cdf3bcdda - last_write_checksum: sha1:ee91dc17cf80f2aa72eb976fdf60ad4c094ca45b - pristine_git_object: fdbfb1678062f33794f10f032a13f127c35a7db7 + last_write_checksum: sha1:95dd7cb791476d2d2481760f73aa5186a3a0a4a1 + pristine_git_object: 39276ad8ec6b05029b36b32fab7a81befdff85eb src/openrouter/components/containerautoenvironment.py: id: 0c41c2609d28 last_write_checksum: sha1:d6b8b06b51d5f0ffc28b1644843a8fa8a576d31b @@ -6958,32 +6958,32 @@ trackedFiles: pristine_git_object: d5ba92a250e53b44240e5dedb4473cbabafd65ad src/openrouter/components/contentfilterbuiltinentry.py: id: 8506c7d8aca9 - last_write_checksum: sha1:851b5909b1172792dca14b769907c01c0252499c - pristine_git_object: 294696be09b025418763830ade2f594898bf3b4d + last_write_checksum: sha1:40ccbb53ae8a8f1e14ea0ef87fe9a62d3227dcda + pristine_git_object: ae3d7d5a0eafdfd78e6ce5f1ebe6eb8c15b365f9 src/openrouter/components/contentfilterbuiltinentryinput.py: id: 98fd75740393 - last_write_checksum: sha1:4dad4352ad3f4d527ec7e5a6643b36a75eaa6437 - pristine_git_object: b51baca5c8e5517720f77eb928a1f5ad58ac0aa5 + last_write_checksum: sha1:4e5b2d32d259a3b19e1db9a522466957f9bea46b + pristine_git_object: 50a14b214439c74b201df7f4664653aeb3e4153d src/openrouter/components/contentfilterbuiltinslug.py: id: f222de10f841 last_write_checksum: sha1:130e56231d8a3a4fd16516bf7734097471118b66 pristine_git_object: bbc07e6bf29faada2c71a0fd44fdaf3286b94f4b src/openrouter/components/contentfilterentry.py: id: 149ebe184f88 - last_write_checksum: sha1:4e40edff6184741aeeb1f2c7416e9fbb451fc1c3 - pristine_git_object: 856522d0916c23cb1d2f6573a417958f15e34bcd + last_write_checksum: sha1:63dcb28479bc328253a4d102a6c191fa0e515394 + pristine_git_object: 882178bfe6217c6cf9947ca1ce9fe67d07830262 src/openrouter/components/contentpartaddedevent.py: id: a074d4f3e193 - last_write_checksum: sha1:016196b914b861c920e8cea01b04207bddd5e286 - pristine_git_object: 019b9064d04bf201e7599e79e605ca249bfab61b + last_write_checksum: sha1:ce0fc4800d5dae3328f0185add65758d149c5d4a + pristine_git_object: f6f49db019724dc58f2836d0539aa393d8c7690f src/openrouter/components/contentpartaudio.py: id: 27c65df752ab last_write_checksum: sha1:2cc9b156c69f4769f2277b8c8066791ab51794a7 pristine_git_object: 450ced1e1faed9dcc988279bae621546157aa0cd src/openrouter/components/contentpartdoneevent.py: id: ebc3878afbf6 - last_write_checksum: sha1:8394f718a55af4ff9b1b0f8302e974d320f8cf7f - pristine_git_object: 8a7f7380eb02f24f57819fffc03f8f06b70e3c84 + last_write_checksum: sha1:71cf847ec7a41ad93ba243ae60e903f9d8aefaee + pristine_git_object: 3cd3ed829d83dc03c0323a586e2fa1c0d7bf7a0b src/openrouter/components/contentpartimage.py: id: d6af351c330e last_write_checksum: sha1:22c7d09037d2aca7022a4e1e507d44d2eb051a89 @@ -7010,32 +7010,32 @@ trackedFiles: pristine_git_object: 7d5b6f700b28296f6879a4a87d65a794f3e96cb3 src/openrouter/components/contextcompressionplugin.py: id: 0262a4f96713 - last_write_checksum: sha1:288a9cf2f3b3a0d90a71ac60f4c4a6f03f6f2444 - pristine_git_object: 22758a015ceb978263246b58da19d382ae38938e + last_write_checksum: sha1:b2dc98af85d08deb61c90a5ecd9b20380a0db5ac + pristine_git_object: f6e8d18d3b51501a3a2b7d7527a64fa02b9b1726 src/openrouter/components/costdetails.py: id: 513b4309de6e - last_write_checksum: sha1:10436fdda1161f93c711bc0e758d9bb029a36ace - pristine_git_object: 7880cdc0b0ce6f4629616820c1e10997a7ce3468 + last_write_checksum: sha1:1308d1504b1f78427467c6bf58776f31baac2a2a + pristine_git_object: dbafc2878cb3185fac34919e2f789b26dc86f70e src/openrouter/components/createbyokkeyrequest.py: id: 238e868445b4 - last_write_checksum: sha1:b2059c1109dc8176e07584010f957b4feb18a124 - pristine_git_object: 1287f0a83fa8853b745bdf1b990cea4a8b1ecacd + last_write_checksum: sha1:c6523331919e4e590567d570ecc47ac51152a23b + pristine_git_object: 4202c110ce2032a2378b06202319731b1d74b1ba src/openrouter/components/createbyokkeyresponse.py: id: 2b6c5e13270a last_write_checksum: sha1:a7a2a40b9ac16a975a4c5ecc8802fc0b7785691c pristine_git_object: fcfd9d646f216fdbb715cbbaefa4382d75750b79 src/openrouter/components/createguardrailrequest.py: id: 34d69149fb33 - last_write_checksum: sha1:4d55f63837eb18cfc0cddf215896c02082453dc8 - pristine_git_object: 36bce65769a9cd0b1c0ff55ea7ebba19f3839c66 + last_write_checksum: sha1:4138e0c0ec26c3ec904a49846f9ed70f65227a0e + pristine_git_object: fb9dae6f51b5cd214cc05653f92014e87bc029ab src/openrouter/components/createguardrailresponse.py: id: b4e1bdf1de5b last_write_checksum: sha1:ae20a5e7425510c240e5697d847b1cae65940bd6 pristine_git_object: d6c4a4dc73222668daddc2a1788d314ff30e8fe6 src/openrouter/components/createobservabilitydestinationrequest.py: id: 58587fb98a32 - last_write_checksum: sha1:40e34d00fd653d5281f195e2a00ec8bbc52812cf - pristine_git_object: 65aab4386d68d49d7691d381d177455721dc4687 + last_write_checksum: sha1:b8a96311602687e9280550674d0d840f2916ad06 + pristine_git_object: b7bf9755acc084c2f17f3787dc5b70e354b0efe4 src/openrouter/components/createobservabilitydestinationresponse.py: id: 9a8561661e52 last_write_checksum: sha1:730054c12ad209d5f83b88825c946fd6f322e6e9 @@ -7046,16 +7046,16 @@ trackedFiles: pristine_git_object: ffdb3753adda06f3d93b505ab17657337c66067c src/openrouter/components/createworkspacerequest.py: id: 3785d9b207c2 - last_write_checksum: sha1:49ef014d2611e4c399c28d05763f5e1ad076b25b - pristine_git_object: e068f80885a98542edd9fef71c90ddc1647bf8e3 + last_write_checksum: sha1:26d39e88354ea17dc3a9c0156ddc8769dbae33a4 + pristine_git_object: 0596d01d9ef84ac315f8c1e1272dd16aa51517db src/openrouter/components/createworkspaceresponse.py: id: 986d9ff993c1 last_write_checksum: sha1:7e9028b437a9e33a7541ba222cf01e6629f5c74d pristine_git_object: 54c7b43902b4c72a43cf4ea1fa965edbdecb5304 src/openrouter/components/customtool.py: id: e83b0c530680 - last_write_checksum: sha1:df7d648e8a112d0b6222eb43edc62fa227c1f195 - pristine_git_object: d2437932aeb30a0ad8cf1a31192afa86dd89a8d4 + last_write_checksum: sha1:dd98af372d2b335ad698fee5400a45da2548eed8 + pristine_git_object: b7e376784645507cdcb45de88df193ebf28349e7 src/openrouter/components/customtoolcallinputdeltaevent.py: id: ee80a0e981a3 last_write_checksum: sha1:784ec213ebcf9a386aa3f0528602089181a5baa2 @@ -7066,60 +7066,60 @@ trackedFiles: pristine_git_object: 308a29665db6048780b3d9d3dad551110e002cfe src/openrouter/components/customtoolcallitem.py: id: 232ac63226eb - last_write_checksum: sha1:a1ec646d50681fa4106fb0ee63d2b4fc2f4084e8 - pristine_git_object: 486f76dc6d1207486f815919e9bb18354f418297 + last_write_checksum: sha1:2d78ca6daeaca1efb8e594327a972bcbd97c1928 + pristine_git_object: 3e47f14839dadbbf30303e0b1e703802a3eaedf3 src/openrouter/components/customtoolcalloutputitem.py: id: 533940b12cd2 - last_write_checksum: sha1:9702dd53b6f12e5fbc9b6d8d8b19fbaa4cb712a1 - pristine_git_object: c8201422a35e2c12c9e4321c3622f95f76a3234a + last_write_checksum: sha1:35d003dc2704b61038c6f776f59fff5d4c4e8677 + pristine_git_object: b80b24da37f0c0ace34a5d9e95e54e226086419e src/openrouter/components/dabenchmarkentry.py: id: 5f5745cbfe75 last_write_checksum: sha1:4416b41c6ca98d790893113ed5f6c3e0157e74dd pristine_git_object: 35a1a90cf109062a379cead396c3d7b94cc7f810 src/openrouter/components/datetimeservertool.py: id: 444350bd66f4 - last_write_checksum: sha1:ce9c7aba930c6a8764ca762052912d6533ccf53a - pristine_git_object: d98c3fd0b630abed2a013cb29e2382002949c1d5 + last_write_checksum: sha1:067ed533ffaecfcd1a0a210dda73856d2e076273 + pristine_git_object: 31a1f9079880f06fe82b0c0b2329689ca33efb4f src/openrouter/components/datetimeservertoolconfig.py: id: 96ac233137bf - last_write_checksum: sha1:0e20ce9fd09b64922e63b1bf37395bb80ea3e440 - pristine_git_object: 3eaaa33c3856a99254c617bcfe98693f31db1234 + last_write_checksum: sha1:517e732ef770053a80dbb1f471a0f9a00254f91f + pristine_git_object: 0858da197cbf8f41d4df6688a392eaca783a8700 src/openrouter/components/debugevent.py: id: 5ecad6212326 - last_write_checksum: sha1:437a5547042617c66b1e59e25388d77729dd28c4 - pristine_git_object: e163680e5e5e254a73a0646e4b562cd0b46065d0 + last_write_checksum: sha1:47eb04a24ca8c2c28bd554b1967cc1ffc35169a1 + pristine_git_object: 3346002a864567eb5d6b0601b4851c4190db64fb src/openrouter/components/defaultparameters.py: id: 548f4f885c22 - last_write_checksum: sha1:ed72fc048f61ec663361ab2206cd140c35971a0e - pristine_git_object: 26ed6c6d3d1615aa9b6130e1c751e0d72c138f3b + last_write_checksum: sha1:b4441a938ceb4511d0207256d0cfed6ca6d9ed4d + pristine_git_object: dccefb2123d06d6d9920e7035f21a8ab5e7b86a8 src/openrouter/components/deletebyokkeyresponse.py: id: f9a1e677521f - last_write_checksum: sha1:7e0f7e27823afde2d4c336e6c04bd8c182400822 - pristine_git_object: 19946d23691aa52b2c97b15bb262a1b9a0849585 + last_write_checksum: sha1:371aa071eb7da7c466521eed203e32e441c6abb3 + pristine_git_object: 3e3a7de0f0b5ad0657df890e2764c4437f0357e5 src/openrouter/components/deleteguardrailresponse.py: id: c3ac908331ef - last_write_checksum: sha1:8984f78ae6a2b3ee8b16d7f0018622ba725c1583 - pristine_git_object: f31843cfe4e36f3f6371837221b6966fabaa563a + last_write_checksum: sha1:6a5ca367dfad148ce7f01d14044efbef37b36d2b + pristine_git_object: 0c4b2ec66b592fb5be3ac587a5c6d60c84069384 src/openrouter/components/deleteobservabilitydestinationresponse.py: id: daf99e240820 - last_write_checksum: sha1:a75abfba1a9f68da81c513c235873049d25e915b - pristine_git_object: 376515665c29fb3aba74b18df0c722d8e6b4e9e5 + last_write_checksum: sha1:485d3e763c2edd7ccd69926e2ea872eb6d031fdc + pristine_git_object: 28a54ebbcd00a3b64b50c6f221b4e1e7856797a8 src/openrouter/components/deleteworkspacebudgetresponse.py: id: f9b733ad07c1 - last_write_checksum: sha1:a3af24b608183853aa1693f678b46cf1d0841d2a - pristine_git_object: 774a3ea237987fb9f78794678ec35fad50fc5641 + last_write_checksum: sha1:9bbbb1e27113d3ccebf7adf47b6554acf6139cb2 + pristine_git_object: be71670d56ec18a0a0e604a39c808b7a52e827fa src/openrouter/components/deleteworkspaceresponse.py: id: 5e45e8064f69 - last_write_checksum: sha1:4e326914693c0d0caf901651cf214f73df624f64 - pristine_git_object: bed459583970617979bb6aec394bfeb161274514 + last_write_checksum: sha1:fd6cebc186ef821f569a079ab7dd2bae2acdcdfe + pristine_git_object: 708dfac62530c5fcd29f6bb0be113dc34fd24718 src/openrouter/components/easyinputmessage.py: id: 72619a312585 - last_write_checksum: sha1:5d1d0bb1b9d9b1b219e59c38da859119e3e9419d - pristine_git_object: 60dabdac82555caed537bd848b2095d12ec19647 + last_write_checksum: sha1:6fe16f2a35b373420e6b5289132da3557a3daaca + pristine_git_object: acc023a14c9edefd377c7d213fa928fd046ec999 src/openrouter/components/edgenetworktimeoutresponseerrordata.py: id: dc53aae5b171 - last_write_checksum: sha1:5f40d76eafb399dfee5f6e5a8cc6eb94ecf3ff8b - pristine_git_object: b44fcaf3b15716035fc7bb13cac592f120e7afbf + last_write_checksum: sha1:cfbbb83051f349bedda3d81a81ef2d3aea2916d6 + pristine_git_object: 9e421b3c133cc1ad340ec2eff50e1b9b8d8750bc src/openrouter/components/endpointinfo.py: id: ce049670b5ae last_write_checksum: sha1:914f173c73fe1035e56c9acf4ad9e23555bde95a @@ -7138,8 +7138,8 @@ trackedFiles: pristine_git_object: 468dba815ec1bb9a06cbf8983c8f13f2c585db59 src/openrouter/components/errorevent.py: id: 8e87043bec43 - last_write_checksum: sha1:ca2fd0001394a54cbaaf07abb827184f58e1de9e - pristine_git_object: 83b6cd340292e31f23e5d4638e9e45753f612b7d + last_write_checksum: sha1:a8930d46fd48231b5350bc284c138c9264638fad + pristine_git_object: 0b90b1c374c54aba3b1129f296456dc301ccb185 src/openrouter/components/filecitation.py: id: ae9f50481422 last_write_checksum: sha1:3e94a2b7245fb44ae818f78168767980f41e6559 @@ -7150,48 +7150,48 @@ trackedFiles: pristine_git_object: ee75b85ee8d580fb1fb71bee31adbfd2552885c3 src/openrouter/components/filelistresponse.py: id: d0c949679c66 - last_write_checksum: sha1:8426dcfad214046837ae4d227af96bf75772f24a - pristine_git_object: 689329945ffca1f92e2283d4f0cf7ac4df1c55c4 + last_write_checksum: sha1:b0f20d6162369b24e09e5d9c5121077e2f6d3f3c + pristine_git_object: 3b40324c33b8a4fa19d3940a5cc797bf2f75d202 src/openrouter/components/filemetadata.py: id: 31b55c7f5dbd last_write_checksum: sha1:2543bac9ec9d7174e47fe375a5eb936fd5e5f720 pristine_git_object: e128dc9b415b5eb362a076ac1c1c59b500792c96 src/openrouter/components/fileparserplugin.py: id: 1120c86c0856 - last_write_checksum: sha1:a23fe386c1606aebe30057fec1d20516b5984f7e - pristine_git_object: 4c88871d5537324d62eedd0ab15204f1a279ebbb + last_write_checksum: sha1:9738be43f64002d681539c37cc3dd882a00670f5 + pristine_git_object: 28d11f1db89da075d07a2e97fd03e3e1df26b53d src/openrouter/components/filepath.py: id: 9e37fa73a86a last_write_checksum: sha1:65fe062e78f2716c180230379cbd3419f8b36e49 pristine_git_object: fc29881e08f5804dd5ba0ab66572d6c74f83e0c4 src/openrouter/components/filesearchservertool.py: id: 8ecc4d4a0ddd - last_write_checksum: sha1:59cdd1d8a27a94f52302d611952e2258957802d4 - pristine_git_object: 974ee97d94c9bed742537fdaae159554e752202f + last_write_checksum: sha1:f6de01b0ed57b987896035e7e21681ca7fe7f1f8 + pristine_git_object: 5f5b45a9f0fc9dc42d1ebde7ac80354be5f0b2bf src/openrouter/components/forbiddenresponseerrordata.py: id: 93ae47a0c337 - last_write_checksum: sha1:dffd1d7517d9ad6ce139089de52a0308c2b234ec - pristine_git_object: a758f01d6d46b68516167fe9b4989cdae25bd308 + last_write_checksum: sha1:1da3bc6a3399aa3539b27e96c400b23bb6fd188f + pristine_git_object: e790a632c692a86ef53ec0bb8d4fd41e99d4efd1 src/openrouter/components/formatjsonobjectconfig.py: id: 4b0126b22c9f last_write_checksum: sha1:9a42065639d0380af14f787748916a8ebb458599 pristine_git_object: a530b83d7202df8626a379619592e71c964eabf8 src/openrouter/components/formatjsonschemaconfig.py: id: 93c37c13510f - last_write_checksum: sha1:12fe39900dbf181a893b751663549a6fd48232ad - pristine_git_object: 4a08f89d026da9db0e46ee1354adf1156f0a28fe + last_write_checksum: sha1:290254893b21e72fa2735ed761b21d062f3b49bd + pristine_git_object: f748cc223bfa2ce5c63917c9343265c69ebcf749 src/openrouter/components/formats.py: id: 26f57c67a9d5 - last_write_checksum: sha1:addc98a1b6687d0edbe18bed1de17af4cf17e03d - pristine_git_object: dcf042155235b73273a1e0e5ef29a505a911e98f + last_write_checksum: sha1:b8d471e2e143264746f23bca1dfc12342d3f6577 + pristine_git_object: a1ac8c3e5cd7867483b647b1b7f756ee5fa82814 src/openrouter/components/formattextconfig.py: id: 2e01bed905b9 last_write_checksum: sha1:c192d45b9530804e6e75ec40829b50b9f1adf5fd pristine_git_object: fddfc9b96954944ee881adc12430c9cb38aa835a src/openrouter/components/frameimage.py: id: b0ed6cdd579c - last_write_checksum: sha1:6ca944c66b46bfef8a46c72e1d6958662b77af90 - pristine_git_object: 9e5aa13a34ab0d55be29560be0c2995661181620 + last_write_checksum: sha1:1a0daab524e69a8ce13f133f7ef7ccac857bdecb + pristine_git_object: 00319c889b8f1ea0a610026fb3cf964b3d472c5b src/openrouter/components/functioncallargsdeltaevent.py: id: 4e8187066efd last_write_checksum: sha1:d618e8c717d93159fd21fe457d03a85549498a71 @@ -7202,12 +7202,12 @@ trackedFiles: pristine_git_object: 613c2bbaec296ed9b0da13f249ef96b9314ff9ed src/openrouter/components/functioncallitem.py: id: 5e69afffd660 - last_write_checksum: sha1:0517e6c41fd95ca5252e59e0e618b96581ae3fcd - pristine_git_object: 82a1e6393654f4c9ff71ff2a9226f65898e365f4 + last_write_checksum: sha1:94c192e67b0c0c2cca046b8fc5caa296f0c0d9d8 + pristine_git_object: 8d9002fa30aea04624c233b970eb36001a764f40 src/openrouter/components/functioncalloutputitem.py: id: bf659aa04e7d - last_write_checksum: sha1:05314adb9f62ac4ace7eb3f265c5dce9350d2247 - pristine_git_object: 842269afc3af0e15d7a720cb87aed32ae2c40e8a + last_write_checksum: sha1:006096fba13309e9a89538fff78282c9766367dc + pristine_git_object: 0f61f4d39093773a2106f60211a1413ad0d001fb src/openrouter/components/fusionanalysisresult.py: id: 8c88c59e344e last_write_checksum: sha1:d1ca69c25b7e3ad67b93d94853e2054ed5e0258c @@ -7242,40 +7242,40 @@ trackedFiles: pristine_git_object: 223d8c97f88e2df5734d52f644ef633868d3a110 src/openrouter/components/fusioncallpanelfailedevent.py: id: 59fae63a6e30 - last_write_checksum: sha1:2dda55a36f728072bc5a6d9669b5bf03bdc51ea5 - pristine_git_object: e1ac791907e1930190b5559681a1b7ffea94fff9 + last_write_checksum: sha1:3fd6c9053f39a49eb78a5815db21ed152819e8ca + pristine_git_object: 3498ab2fab37702eb4f6fd5378db5fb5f267a3c5 src/openrouter/components/fusioncallpanelreasoningdeltaevent.py: id: bac5f1ccbeb6 last_write_checksum: sha1:5f358080a345ce85fb357b95f3e7487150f6a9dd pristine_git_object: 2836ce37ac58b2b90568bbd6247fa52b982ef131 src/openrouter/components/fusionplugin.py: id: c0b307f15bb0 - last_write_checksum: sha1:c9185b16495e4c4a4affe84485c13cbe06a844be - pristine_git_object: d019e1827c08f8d3708e890b7008145a4938587e + last_write_checksum: sha1:32d5b66ef009951e271bbb65455346bd6d090b8d + pristine_git_object: c04ecdcae607f61c7e2b4f5a1be03501cd53b011 src/openrouter/components/fusionservertool_openrouter.py: id: a1d6d3aefe6f - last_write_checksum: sha1:db6085cf3a96f2ff93707bd0209f59cfe153f467 - pristine_git_object: 5729ea0c31a0ce7283a77316282ea77c91f13ae3 + last_write_checksum: sha1:5946f3beb667144593dfb06796f51995ce8140ad + pristine_git_object: 0015e263bbb2d817af89780610cc8f25ff852e73 src/openrouter/components/fusionservertoolconfig.py: id: 0d1d229c531f - last_write_checksum: sha1:b0b2c44af496c446fd6bbf1396f1f97f696eff5e - pristine_git_object: 9d5ec202c11d21002eaa7b6724d62e0710c42522 + last_write_checksum: sha1:c5575780c1be8d9c66c13298d00a93ff004d386a + pristine_git_object: 5803dc6d2b2c74d2b7270233aef9d90524dd8d53 src/openrouter/components/fusionsource.py: id: ce20a4a9f32f last_write_checksum: sha1:2141dd1dd9396035bf8070878c9ec945331514c8 pristine_git_object: c60f29915ce3fed38a693d10b8c2de868f8ee728 src/openrouter/components/generationcontentdata.py: id: 0140215b5b46 - last_write_checksum: sha1:09e15ae2acc4f44084e2206ea51e6a06f4c5ee11 - pristine_git_object: 065679a3408bbfd07e86646a6b3aa135cd573973 + last_write_checksum: sha1:03d676ea95b0ac1d6e0f8e036c4e1c028fc540ad + pristine_git_object: 2005a3b5a63bd66175dbfdb93bf58e5c1d6cb0e8 src/openrouter/components/generationcontentresponse.py: id: c3f3f745a193 last_write_checksum: sha1:0a87a329f4b565c773d730ddc74595c6a0d64ddc pristine_git_object: b762f6507fe7c7456df88a9400f82587fd6d63c9 src/openrouter/components/generationresponse.py: id: 84d4e3e7da8b - last_write_checksum: sha1:1a0ae994291dab8c32afe0b129ceb15c588807d7 - pristine_git_object: 5c2e03b079308bea3194df1d176a04d63660018c + last_write_checksum: sha1:423511d795aa2e6bd3a9ba6030e56b9382092998 + pristine_git_object: 4016d8a89215e895229a8d79b2f5e2bc70fd0d0e src/openrouter/components/getbyokkeyresponse.py: id: ca3a8db80018 last_write_checksum: sha1:9b428028a01ffb73915a278096ca51bd1c660326 @@ -7294,16 +7294,16 @@ trackedFiles: pristine_git_object: 3c24129bdebdfb21f5d5b1f2e973b2efb3fbdf99 src/openrouter/components/getpresetversionresponse.py: id: 2175d9fa777c - last_write_checksum: sha1:cb5b03c3882ca42a654c54fcfac51745f307848a - pristine_git_object: c7fbebcf19b04a07eab66bc22732b25de0d3ad27 + last_write_checksum: sha1:200d7a21b0da01ee15de359057da7259e0d367bd + pristine_git_object: 122b9e8c5e75dcb27a5d6fa7a7f5c0c794241970 src/openrouter/components/getworkspaceresponse.py: id: d993d0c4c3da last_write_checksum: sha1:918535730d1c352bcc8fd2342e1c4cea89bc357f pristine_git_object: acda534cb0ced2a391479b720434cf0f57f46276 src/openrouter/components/guardrail.py: id: 67ee78dd06e6 - last_write_checksum: sha1:0ee86031c907b1fda6e8f6fc2f80d76db2534289 - pristine_git_object: ec0d13984df644fea39ef2e985116627aa2e7291 + last_write_checksum: sha1:d3c96a79c8f1b033378f4c2f21fd74c172457185 + pristine_git_object: b087dc33e958e24a59a4e04584d9af3d6538a990 src/openrouter/components/guardrailinterval.py: id: 01687fc135ab last_write_checksum: sha1:430f886f371b85777346de663202d62708cd84cf @@ -7314,8 +7314,8 @@ trackedFiles: pristine_git_object: d24d5e2bf337e19bb80a1aa24b8b27c93d67f1b1 src/openrouter/components/imageendpoint.py: id: 6466b0bedef0 - last_write_checksum: sha1:b619627cc7e24b774b1786f763b2d5c8db766e1d - pristine_git_object: 8d392046999ddf1f251215f892b6bb3371ed1e9a + last_write_checksum: sha1:631323f2b22eab12462b5951c1f07cea65fa20d8 + pristine_git_object: 7fe018a98be35b5b49e48aec938ac4223859cfb6 src/openrouter/components/imagegencallcompletedevent.py: id: cbf654faeb3e last_write_checksum: sha1:8fb3e34408dd8b167afc6aad641de9cc2483c9f1 @@ -7334,28 +7334,28 @@ trackedFiles: pristine_git_object: 5f17d77c25a82ad2bf7b1211d05ee665b6fee35a src/openrouter/components/imagegencompletedevent.py: id: 7a791a02cb5b - last_write_checksum: sha1:df249afb22b4d56c3493cf8ec506e7ecf06402a6 - pristine_git_object: e767efe399701e27924a1fa2e98d44d78e3715a1 + last_write_checksum: sha1:bd73865dd7ffd0ff9ec34b2edd484e4f0a3bde61 + pristine_git_object: ca3f68a4504570acfdc9c095ccdecfbb636c30f1 src/openrouter/components/imagegenerationrequest.py: id: f8291a7be9a0 - last_write_checksum: sha1:d44c19ab94704abc128c6172e0fe89bd0ba57fe4 - pristine_git_object: 6c0fe3e3c349ca204e3f6aa7a3f1281853c8d651 + last_write_checksum: sha1:5332c2cd26dbb93e94c927f20babe1d060388242 + pristine_git_object: 5d2a7e6371e56cfadd302a67a10d00deef0373cc src/openrouter/components/imagegenerationresponse.py: id: 53354cd0cbfc - last_write_checksum: sha1:073a770f1574629ec4e8ae59f6a365fbca9ace3f - pristine_git_object: 64b059a152dab4754cdece4fb2021249f76444a7 + last_write_checksum: sha1:8c42a25c58b589aad6031d2c1734eabcf1a1b143 + pristine_git_object: 7eddf64ed888d59494938f38e2b9035e7ba2b38e src/openrouter/components/imagegenerationservertool.py: id: 9c95bc975f2e - last_write_checksum: sha1:b7e0d9db78b0b7662cd34a31e593842cea5ef990 - pristine_git_object: dfcb122b1ce68cc165b0b86b603b658670320eff + last_write_checksum: sha1:f87c338c9b54030623f7f3e32f08a064e411f76c + pristine_git_object: 6e4cf9a3bd6eb13429a87a31c22864f56567e889 src/openrouter/components/imagegenerationservertool_openrouter.py: id: b7499cf15b3a - last_write_checksum: sha1:2a253a105b37e5e1b6b3b9345cdaf64ebe65f703 - pristine_git_object: c9609dbda39bbc43666c9625cf58baf469a6160c + last_write_checksum: sha1:37b4e32b48943100d6a3c894c514a9785e08c797 + pristine_git_object: dbae6498aa50378e218374978a5669eb14863dea src/openrouter/components/imagegenerationservertoolconfig.py: id: 76f45207c1be - last_write_checksum: sha1:065e1ab5d5e29f01bc86428ecb438ad9f7f9dc7b - pristine_git_object: 0fdc8f67a8af50e789e2ae73d647d9ba43b703b2 + last_write_checksum: sha1:9ad8a69110b449f362cca95a9b98358ff41390ec + pristine_git_object: 2458156e5adc142fc2eb8bb438f0ef4410c40ae7 src/openrouter/components/imagegenerationservertoolconfig_union.py: id: d1c630a1476a last_write_checksum: sha1:50d45b5a787e8cc9024c05b31e4113993ffe4038 @@ -7366,20 +7366,20 @@ trackedFiles: pristine_git_object: eb59bfd0d4b89dde72504f8aa57533c689474ced src/openrouter/components/imagegenerationusage.py: id: f51151e8dbfa - last_write_checksum: sha1:94b36c85779166c24486c3f8cb59dd5b5e96f227 - pristine_git_object: ddc1c84536c4579a40f3c58482dc0ad3dc74b5bc + last_write_checksum: sha1:810fd7e3dd1808d3c846fa4791ce3ba728dc32d6 + pristine_git_object: 83ae9b1bc1e7624550cf432b440c20ebe6eb16f5 src/openrouter/components/imagegenpartialimageevent.py: id: f88cea0c67fc last_write_checksum: sha1:2ee76cbb50b60ebe624bdfe0769a7bbdce047cd0 pristine_git_object: ad454de88a0dd65f464fb25a982d3c4060d17994 src/openrouter/components/imagegenstreamerrorevent.py: id: 15c890eb8a08 - last_write_checksum: sha1:3472a96f7a2855a043011f43d5a72eb51ebd5458 - pristine_git_object: 9396413a957395a3fb784b80a443f12cf35948cf + last_write_checksum: sha1:29a04e6dc39f00f7784cc9228348a3b6f129b416 + pristine_git_object: 80006d6d186baf7838a40a93839cdea5375256f2 src/openrouter/components/imagemodelarchitecture.py: id: 5f3e50733fe9 - last_write_checksum: sha1:207defb8e73dde6e8f0f431ddd1c26c00671cd8b - pristine_git_object: 5e93aaa1401ef96452bda0ff80d520b190968d86 + last_write_checksum: sha1:cc9bee6400f1b7b65ff1c86c5d6bcd5eeab03209 + pristine_git_object: 01f0cb5e15bc03592cca4d25a3d67ebb990dd433 src/openrouter/components/imagemodelendpointsresponse.py: id: f3d538d38ec2 last_write_checksum: sha1:e10cae58b2bb98ab1a0df6fc162f402ac1561d3c @@ -7398,32 +7398,32 @@ trackedFiles: pristine_git_object: 9c5a7a430aa6103cc10052b1d6c278181071180c src/openrouter/components/imagepricingentry.py: id: 58bd958fe130 - last_write_checksum: sha1:62645aeb8bd8ea04844616e6f21e7c863585a2fd - pristine_git_object: 8a8700461f2731e8ca7e1b62d6c41d5afc24d015 + last_write_checksum: sha1:9dd0062e577388192bf1664c5c00189d46f976a8 + pristine_git_object: 4e4c1cb067ac9184362a7284906f13c442cc152b src/openrouter/components/imagestreamingresponse.py: id: 7de5604ae99c - last_write_checksum: sha1:5ac700ab9ab34476b5831d438747e2ca89d0b9c5 - pristine_git_object: 74c8f0665e48d0442fd6c67e86bce01b3c948c6e + last_write_checksum: sha1:9148415c3a30065e7b1c373818a4d2ae4fc73ace + pristine_git_object: 877d1986f2a7e941f17532061468b5115a7b0d7f src/openrouter/components/incompletedetails.py: id: 1984e5246b23 - last_write_checksum: sha1:494eaf7185deb1ef3b12d4e81711a8aec012445f - pristine_git_object: 56dc0963b67dead0ad9f529fd7e3275e95af73eb + last_write_checksum: sha1:573c1e6509ff2a9e1224725ec74e69f1c720eb09 + pristine_git_object: 313c4e71ee7627cb0cbef4cef3d4923b4360fe31 src/openrouter/components/inputaudio.py: id: f8f101a46dda - last_write_checksum: sha1:93bf549be043e2a083944c3dc42912827efa4e43 - pristine_git_object: 00e2180bab28843dd022391c6985d4eca733a6a3 + last_write_checksum: sha1:c323d92f2fa9c816a3970b8d10b5ad025d223cfe + pristine_git_object: bb86cd0457cc66119ec6ec16bb9a76c04aa21c23 src/openrouter/components/inputfile.py: id: 19d9367db0d0 - last_write_checksum: sha1:953c4a25890b45eeb4f4bd56c619fc212ca03ff7 - pristine_git_object: 7a6dacdccea14227eed247b8c2442a79578608e1 + last_write_checksum: sha1:9023228b52b9ac6a301f753b897314fc87f27c14 + pristine_git_object: 96197cab114700e6069a4c291679a82804fb2361 src/openrouter/components/inputimage.py: id: 995d068f1073 - last_write_checksum: sha1:4fa2c93999bf024faa82d33f8f36856158cccf93 - pristine_git_object: c249efe66d797aac2bff3331387041b07f1edcac + last_write_checksum: sha1:c04dcb20e1eb3b22c1da233029e4a0c8502215a0 + pristine_git_object: 0e7edf2ba9a0c7cfa1e395b240ab55ada9bbd436 src/openrouter/components/inputmessageitem.py: id: 6c5260d62714 - last_write_checksum: sha1:22efb4355a4409f396b6d239df77c9a95d71b05f - pristine_git_object: 0a812fcfc111c04d875fe3d6d9209f7ef975a6c6 + last_write_checksum: sha1:98b5f65b95e9b984ed78a2555e58b33ded517f41 + pristine_git_object: 654f64256a1cc0fdcdcf60c22e0bdc99256fba5a src/openrouter/components/inputmodality.py: id: ffa999fb401a last_write_checksum: sha1:da607c1deed71fcc11d880b7cebe92471e2ec5d4 @@ -7434,8 +7434,8 @@ trackedFiles: pristine_git_object: a3d84a96f4553a320f5eee5d63f6bc5c244ab446 src/openrouter/components/inputs_union.py: id: 17d6239cb6a7 - last_write_checksum: sha1:eca7ea806a85fa773c405400b3315d683e437df6 - pristine_git_object: 04903b8142ac2c58379ec807c0086a13898bcba0 + last_write_checksum: sha1:08815eb3a06126d278916e211c150eecb290da86 + pristine_git_object: 334026a24394d6cbc4b7d938d0231bde1511fce1 src/openrouter/components/inputtext.py: id: a995ae96be99 last_write_checksum: sha1:0e30dbfa1813d3e69e0ccd2511f50080cce0fb6e @@ -7450,32 +7450,32 @@ trackedFiles: pristine_git_object: 4a58daf7d055e111ebf204b18ee413203f06b745 src/openrouter/components/internalserverresponseerrordata.py: id: 91397805fa13 - last_write_checksum: sha1:cb5655008ac7209608b832f0d28de8c21a0831c5 - pristine_git_object: 499f4923723d9e027cfc90e8481de44a123134b0 + last_write_checksum: sha1:5eda19511efdca45761dccc80cc678ee705a49f0 + pristine_git_object: 6742b2ecb43dab3f9d37e634cbc09650de79171f src/openrouter/components/itemreferenceitem.py: id: d3c42b5f11fb last_write_checksum: sha1:25fd74f1c34307a97931e1d2c138a1db347218ad pristine_git_object: b5a0bc16faa52f26d293eea18183e4d0b0bbb901 src/openrouter/components/keyassignment.py: id: 07a64362e7fd - last_write_checksum: sha1:769458eeb21e1b275a63ba7bdf70a60fe9506a8f - pristine_git_object: 1598e46441729cfac244f806248a72f124e289c6 + last_write_checksum: sha1:4b47a6f1ab4992ec81d7236ca28dbf94d3a4fbaf + pristine_git_object: d334197ca0822a32f5f98a7548b254a37ee7d110 src/openrouter/components/legacy_chatcontentvideo.py: id: b06bf8b4b644 last_write_checksum: sha1:13c50b1957251e4819fc8ac6545c64cfe940bc8f pristine_git_object: b5dd4d1a0d29169acd66c3b92b04dd9cf5291f79 src/openrouter/components/legacy_websearchservertool.py: id: 8b28b05b8756 - last_write_checksum: sha1:37cbbf1104b56c555401afe6263a7c67401ca3c8 - pristine_git_object: 963b59056bc54e6af6900756850f25a755baed2c + last_write_checksum: sha1:bff7d5ebd6a54d3a598aaaeccefd18a04bb9b489 + pristine_git_object: 5628eb8718f0a2fb6664a4e4a11e84a20409a991 src/openrouter/components/listbyokkeysresponse.py: id: d5f63cba5dd9 last_write_checksum: sha1:97cd54e94ba4996ebb43252ac31aa70511e0328c pristine_git_object: 3cbde84c8d3cc12e69b9788bd365dc39f9fa27b8 src/openrouter/components/listendpointsresponse.py: id: 7662d5774bdb - last_write_checksum: sha1:47bb7a70d674ab63a157333c6c11cd36f1f41a6c - pristine_git_object: de4f12152b4ff4ba981538c21fdf4567b7b6cdca + last_write_checksum: sha1:bb4c49e9a214e9282919cc712239ee7e48c53041 + pristine_git_object: 9618ef276af10174085e61119ce5d53e9849a1ec src/openrouter/components/listguardrailsresponse.py: id: 78fbd2689b5d last_write_checksum: sha1:d3103f2ff7aa2be788ef4aacf6a068497779cca1 @@ -7510,36 +7510,36 @@ trackedFiles: pristine_git_object: b70d4bbc7e84bc0f9ae3beedb8784bbc46aae9c0 src/openrouter/components/localshellcallitem.py: id: 0b6a39ef0319 - last_write_checksum: sha1:1f597aa2fc434cfef556f8c5f07f9402c1c99c2b - pristine_git_object: 00560d64813819940abefe8bf2ef88fd2ff6f5d3 + last_write_checksum: sha1:4969185e0d35909e8fb3597a16a71d3ce0977c45 + pristine_git_object: 5f661878cd074fc063a074cc90c830fb9ed827cb src/openrouter/components/localshellcalloutputitem.py: id: 762eac87313a - last_write_checksum: sha1:e77e55b6ba383571090b89807c486a2442470cf2 - pristine_git_object: c1fc1796eb8097b9a73a50f8927b7b5290e04f8b + last_write_checksum: sha1:4afbcd94aab30d63f7315d7590c5feff0e183add + pristine_git_object: 24a827a217bdb72ab7529b0948245eba2f1a2871 src/openrouter/components/mcpapprovalrequestitem.py: id: 30c0962de16a last_write_checksum: sha1:d823d5a2d589949bc94d4f76dde21f8654695272 pristine_git_object: 3c56ace657bb934609744a7055f0ed0e3b3f5431 src/openrouter/components/mcpapprovalresponseitem.py: id: b39dfe6b18a0 - last_write_checksum: sha1:ffcbf766b3d7997fac0755aa4c0092d8622512ef - pristine_git_object: 3231df92cdf6fc65cda2ad77243e0332aa504916 + last_write_checksum: sha1:a10d7a429144da649ca8218295f76f782e0da7a3 + pristine_git_object: 75dc3be4f7c24488c28233a5717191a0dcfe538d src/openrouter/components/mcpcallitem.py: id: e56a30943ca4 - last_write_checksum: sha1:b3105515c3f44e0c6a8e503cc1004235bcf334d6 - pristine_git_object: d593dd4020308ddd8b4191cf3afc2ae6163d0820 + last_write_checksum: sha1:8a7f13a8e9fae0a9460882b1babff33cfddb3089 + pristine_git_object: e5f3723605b0446a0a8b6b38acb9d528332fc5d2 src/openrouter/components/mcplisttoolsitem.py: id: f2dd3ab36ae6 - last_write_checksum: sha1:c5e513e2923b074ddf393946b831e7037ac1cbb6 - pristine_git_object: 305621bddb2ea4f663b694d17be70b6f99d38b50 + last_write_checksum: sha1:559bfa92486919f7e06191636602fa98470763c6 + pristine_git_object: 710c3db1513d3b12fc4c0899f899acfaa642573f src/openrouter/components/mcpservertool.py: id: bb8aeb03a111 - last_write_checksum: sha1:014b01dd6253437640d2b3fbd084cfddb2399073 - pristine_git_object: 2a2dce01b6afc66f15150a51245ed0a781347c0d + last_write_checksum: sha1:c263b8a5a2837971a0542b30d5358f75b528c85d + pristine_git_object: 2b0489b5e316cf3de65f823f3df062c56ac7000b src/openrouter/components/memberassignment.py: id: c11eba01a3db - last_write_checksum: sha1:db9d3c5dcd61a231f7c93bc92a5adce4a4811ad6 - pristine_git_object: bf257605d2a5dc41234cb9fcfdda939948b26388 + last_write_checksum: sha1:f62f58b6177b88e5d3bf5a580ee1a0c7487da6f5 + pristine_git_object: 7650d341b543e486d5b0a61afbaa9792aad14b63 src/openrouter/components/messagesadvisortoolresultblock.py: id: e36ad7b5263e last_write_checksum: sha1:4aeab70302022153c511d68625d64d91d699fd3d @@ -7550,32 +7550,32 @@ trackedFiles: pristine_git_object: 05b041967edf0ab2d8458f9f0fc3577f0a55fcfc src/openrouter/components/messagesmessageparam.py: id: ed8bbab6720d - last_write_checksum: sha1:0f53182e86a40e39319eba4da2cbfc14cbd97a3e - pristine_git_object: 2eb70cadb07a2fefe8b43146a22744ca9d8c8271 + last_write_checksum: sha1:4e5fb461702f78194596d7de570c7da25f05249e + pristine_git_object: 8a9738b371fb0ed0cd30d0bb7cc237fc7168eb92 src/openrouter/components/messagesoutputconfig.py: id: 54d1e297f740 - last_write_checksum: sha1:ced57d515995fb4a3fe9b8088dc212b5edf28a13 - pristine_git_object: a5410bd961e2ce450b97e6a5702a336731b2e0ab + last_write_checksum: sha1:01e41c73a07af6167f6934394f6e1f419f7ab878 + pristine_git_object: 9b033dd8570e1d71ddb61a63a4b320d3003bd3ef src/openrouter/components/messagesrequest.py: id: 72b1f339024d - last_write_checksum: sha1:da2e9563eb32013861d1c138ee3ed341cf77091c - pristine_git_object: 2ccd8d8f6441a0401323ea5bb80203cced06f12d + last_write_checksum: sha1:ea318958da35e90201812d01dfb04608212533b3 + pristine_git_object: e87ddbde100b658e3d6378cca6b123c8e162b3a9 src/openrouter/components/metadatalevel.py: id: 0eede47eef62 last_write_checksum: sha1:b4e7e6fc4e9016b65008e9ebbfcc6f018fe89ced pristine_git_object: 1257b38d2001f34078cd1b052c20264e81a95e57 src/openrouter/components/model.py: id: cef3adaa772b - last_write_checksum: sha1:53f544fe39ae08cde33f99c5d0bb4b6cc1555301 - pristine_git_object: c0345109fb1717ea27010605984c27e1137426fd + last_write_checksum: sha1:f38b9a67b113ed0772e1aa50571c884c64b479f6 + pristine_git_object: a76656cf0dfc106b6c1a80dac3b53d0114aa68b6 src/openrouter/components/modelarchitecture.py: id: b37ac27e512b - last_write_checksum: sha1:e1dd41aa140b2ca2c3bbf15abf74e034d42b0166 - pristine_git_object: 2da26c7abc1b7e2b895a056c72d90bf8c8efa6b4 + last_write_checksum: sha1:4cb5ae4ebd310085d58966528958f7183f2ca9f0 + pristine_git_object: 1fb1dbcc44f43ac47d0f3c8af94298235461399f src/openrouter/components/modelbenchmarks.py: id: efd0b01b6775 - last_write_checksum: sha1:3cd5ff77d780c3b9ddbeea46e345fcb77ba7a829 - pristine_git_object: 37d57a208efec04590ecbe69485e2b70a13dbcab + last_write_checksum: sha1:71dd3f1be37b6ea21345316025cb106488a9a4c9 + pristine_git_object: 466a8274140ec2d35bb15233371be4555a79e915 src/openrouter/components/modelgroup.py: id: ffb5492b0d39 last_write_checksum: sha1:75da0e0a977d4fd2908506683548c7a8c878b869 @@ -7586,8 +7586,8 @@ trackedFiles: pristine_git_object: c197cb2c527296adff2c3cfd9e49bcbc48087ce7 src/openrouter/components/modelreasoning.py: id: 58bb3f2d75e0 - last_write_checksum: sha1:d7decd330533b566bda99e6b4b5e120970cf61f1 - pristine_git_object: fa73b90a1b4b140d6b9ceb9ac284142c4d95e4d7 + last_write_checksum: sha1:d08257c7937f0b3cafa64c09da32ad86d1206239 + pristine_git_object: a757560d4f60c863dca160d748a01c91aab072e9 src/openrouter/components/modelresponse.py: id: 023136e6dedf last_write_checksum: sha1:af84587984cbe6341f59f176b08df43096ac48c6 @@ -7606,112 +7606,112 @@ trackedFiles: pristine_git_object: c2db9e78ad403cc9c27269d0be222ec85706446d src/openrouter/components/multimodalmedia.py: id: 0a12ae380c2d - last_write_checksum: sha1:2e35b4bec2402b723fd8deef7e2029917d7f2e6c - pristine_git_object: 2cd306cd65f9caf6333e7b1cc3e49ee33d250d21 + last_write_checksum: sha1:0a59453c9f9264886dc6d4474129b17ef9db6b5e + pristine_git_object: d71cb727cef8619b62b83f2b3a7cc9e18d8a60c2 src/openrouter/components/notfoundresponseerrordata.py: id: 6ebceef7a039 - last_write_checksum: sha1:b57cbe36f5a56241d3736f59a6a10f974751feb4 - pristine_git_object: 5b8ca0ce252ca2fc909770c5c338793b05877a91 + last_write_checksum: sha1:da12b33a06dfce17c97c999f32f8811d31cf669d + pristine_git_object: b7549df72da73d670f982fe20ef99434cbde4051 src/openrouter/components/observabilityarizedestination.py: id: 8926882c1d18 - last_write_checksum: sha1:d9dfd8b65cbb889188c000cf4dfee81f18a0e1ba - pristine_git_object: fdcc98dd16e3e38d4e3d2bea91139ee62ac41570 + last_write_checksum: sha1:6cbe740aa20cd27d81b5d5f4e229f3cb99520972 + pristine_git_object: d1fb60540d3025e8291ae44d11fa70292a03075f src/openrouter/components/observabilitybraintrustdestination.py: id: 432de20d1c77 - last_write_checksum: sha1:1ba768fc9387674e430704553c6f8e202f3396ac - pristine_git_object: 7980758411748f3fa6572b1d6cc4ce880f2cfb0f + last_write_checksum: sha1:cb07d68cd8e5ebdebd80df9002670edfbb387b03 + pristine_git_object: 37016dc2b49d4a53c2cd52693cca6b1c22a33a75 src/openrouter/components/observabilityclickhousedestination.py: id: 0bafb43cfee3 - last_write_checksum: sha1:435fbc1308f18b3de2fc9b1ac59bfbadda3e8ff5 - pristine_git_object: 7a65ddbf223dae22b08819f0f7d29d0fd719cfd9 + last_write_checksum: sha1:58837a323c39db28cf1d9f62a492581e11153b52 + pristine_git_object: 6281200824a518e2f99fb8b40812f950ea02e78f src/openrouter/components/observabilitydatadogdestination.py: id: 2b99c86aa089 - last_write_checksum: sha1:efc7eeb2eef9722dc913b8becb8145339a74f669 - pristine_git_object: 8043ffca2d6befe0d55f99f2680dc0eb006de93a + last_write_checksum: sha1:457bd1f4c85b6e63456f2975fb915aba7d293a14 + pristine_git_object: 40cafb2eefd976ca48e6b5c77b9b00b2cc2fc348 src/openrouter/components/observabilitydestination.py: id: f02862444a3d - last_write_checksum: sha1:5dfc984fe4fe009ecf28a8cb83f9ddbbd9e71976 - pristine_git_object: 340a94c501d3d3ad11f20cf4e8865af49a059668 + last_write_checksum: sha1:182ba82fb2aee3f33a975ce8eb2ef978bc0b46d2 + pristine_git_object: b7a1d2f385159ff27bde884ad290db7878ccdfb1 src/openrouter/components/observabilityfilterrulesconfig.py: id: 98476c1c326b - last_write_checksum: sha1:3e7a055391b5f2f279bd63fcc1fcb9c2758a620a - pristine_git_object: 25fc9cf1ba263cb0b3a2a6052053f1b36d0a8722 + last_write_checksum: sha1:2f0154d62e8ae85dfced48bfbc4d5430bddabc18 + pristine_git_object: 76f042e250255d33d9ed6626f1dd0be51f2fb4f3 src/openrouter/components/observabilitygrafanadestination.py: id: 36c8f26bcf6f - last_write_checksum: sha1:7da5854a2a876ee5de01748f335830d9b76a1bcb - pristine_git_object: 184ba8b4ca540d9d6e41d7602c98adb30f052d0c + last_write_checksum: sha1:d7fc978dd9c663490f1a7a8c12b07097d7985688 + pristine_git_object: 677a4cf65e3b058e7ef1f071d7f8bc5c01c61b66 src/openrouter/components/observabilitylangfusedestination.py: id: 46cb7e3719a7 - last_write_checksum: sha1:7a361db96534f6de202006e65d650f693f44b740 - pristine_git_object: a2ceb50a62032b228c3c5d88e43cf9e04e2968cb + last_write_checksum: sha1:0c2467b00f95fe865e9642559ec446c785f5ce03 + pristine_git_object: 961d42456fce6d3776f789b003cb80155c752e51 src/openrouter/components/observabilitylangsmithdestination.py: id: 90dfe215aead - last_write_checksum: sha1:deecad5a2a928eb50256121b2dbd22d129ca5d19 - pristine_git_object: cbde97094b8e38c7ba9dea8403370367053a2695 + last_write_checksum: sha1:6438444257ddcf7b0dd960b7c3c9def0d35c9a30 + pristine_git_object: 84d1b83002e6cf1f607640ffd9b5eeec1de36503 src/openrouter/components/observabilitynewrelicdestination.py: id: 6294b06c08ec - last_write_checksum: sha1:3e86bd883c890ae8bb49615717cccb6e52a123b0 - pristine_git_object: b0560ca9de4802cf7db780c8af9482bf03c31672 + last_write_checksum: sha1:196806cfff2c8f12ba1b6f9bb6633313e8cd3b5d + pristine_git_object: 3cae22bcb04d6094f03a12366172bb1977e8b527 src/openrouter/components/observabilityopikdestination.py: id: 404c6ff48b85 - last_write_checksum: sha1:ac0bc9ce725b0d1655128b8a799dc1271224c740 - pristine_git_object: eaf453b8df41874cb8cc700624d6573a39c030b9 + last_write_checksum: sha1:8d75f916c39e2edf1edd163863c35fdddb2cf154 + pristine_git_object: 1be42b17ae73de94549bcc95df4d21aae2c751d2 src/openrouter/components/observabilityotelcollectordestination.py: id: dc77f211456a - last_write_checksum: sha1:b7b74469814f54fd705e20f8ddc7a3698e338731 - pristine_git_object: f58eeb0e280d818eb10f1487f1d0d73f877d44c9 + last_write_checksum: sha1:9ba48f1c3485f2b25fad34418b3521a3b433d051 + pristine_git_object: 00e7086f0b662bdcd4bf9d00fb868a4b20c4ccec src/openrouter/components/observabilityposthogdestination.py: id: 3a9f4942fcf9 - last_write_checksum: sha1:9392b36c72f3a5bdb65c08c58f0ffa6e9d70496b - pristine_git_object: abee5d8177121baa58015df90b2a644b73ed6a4a + last_write_checksum: sha1:172b08b0319de0c958df70569fd72879f374c1a3 + pristine_git_object: 3062e97464b4fe247f74dd91854dcb030d045081 src/openrouter/components/observabilityrampdestination.py: id: 8559b9e7501b - last_write_checksum: sha1:2b808db5bda297b15e8bc63be5a7698ee08fcdd8 - pristine_git_object: f8e119cc297a620040dd7d35edc99d7ca54b15b5 + last_write_checksum: sha1:7982e1567132bc31a979208c7736734292e04c6b + pristine_git_object: dd28ccf7866ed9fb8d5c5c661a953bf4dbb15993 src/openrouter/components/observabilitys3destination.py: id: 2022d25fe7d6 - last_write_checksum: sha1:1e9c3b34e9cf23a8fcb751bf54ab35eb828d8a50 - pristine_git_object: 96ea2a8e90e13bef34e0a42ef09e09f3284571f9 + last_write_checksum: sha1:c05eef3b3b935f0f5889afa2f63d467965beb333 + pristine_git_object: 5c400317212875cb2656d9097838b8b5b3d04587 src/openrouter/components/observabilitysentrydestination.py: id: d27b8b37d1f8 - last_write_checksum: sha1:4a1ee1ed06b89d143a2cbb85e19818b3a591cc63 - pristine_git_object: 77f86c72f1182db88568c4eafb8422f23bec9a91 + last_write_checksum: sha1:b76c6eac97e52bf9543711d21ab575e97fe1439c + pristine_git_object: 2c1a346e9a0493ac54a69be42631f83f537daf84 src/openrouter/components/observabilitysnowflakedestination.py: id: 4e4136c11a0f - last_write_checksum: sha1:136aebb1696d75080861153d3fe3608895885604 - pristine_git_object: e6552f7abcfa18b702d31d6dc1a57a7ba31fa215 + last_write_checksum: sha1:d39b4fff4f9c39643e5cf02123540e3eb22e573b + pristine_git_object: 9dd853c88111c1f2f729ec82736832d1b391f73c src/openrouter/components/observabilityweavedestination.py: id: 6ee5e9677e6c - last_write_checksum: sha1:4f8991159946750cf3ff1ab9dd0364f9d204e241 - pristine_git_object: 8474c7c74b1dd40e82080f24960692b7085a5080 + last_write_checksum: sha1:a47c8b7e71a1d6095e6a2e55b15dfcc1fd8fd9c3 + pristine_git_object: 81e7305b843bd67a80917ec5698b430ab7c5f6cb src/openrouter/components/observabilitywebhookdestination.py: id: 2f942be86581 - last_write_checksum: sha1:a7c50d871c8d6ed60f6d999c60b2bf4d2ede5e9e - pristine_git_object: 3eced6d5cce8cda2d1798bea93e340c30b5a2c87 + last_write_checksum: sha1:03c3c17e3dea02893688ce46784f9ea8461bacc4 + pristine_git_object: 344abac0c40b1b4e21d986e70be1e7ee80fc2b4d src/openrouter/components/openairesponsecustomtoolcall.py: id: b1a8a20b6710 - last_write_checksum: sha1:3f2a04c33ec98b85b78daf38019ad29e77556b6f - pristine_git_object: a7c4d28268ea6f20aba851547de1ba49bc525296 + last_write_checksum: sha1:700948fc28ef6c2c4ae5774fc02e256fabbbfced + pristine_git_object: 8e86d12f007b0b0ea4762119eb16ea9eac5019bc src/openrouter/components/openairesponsecustomtoolcalloutput.py: id: 54a2863b76bd - last_write_checksum: sha1:eecd71438611310be3df2938cae7ad164a144b4f - pristine_git_object: 1fdfc5564527f668aaef926ea22784195be86660 + last_write_checksum: sha1:8f5fe8e7880c2302399f1406b467657c3b7b52b0 + pristine_git_object: 4cfede4cecef4d5aa4f80aff3d321cd4e1555b95 src/openrouter/components/openairesponsefunctiontoolcall.py: id: f201e89f8dcb - last_write_checksum: sha1:288f5a70d1b7227946d18e12e106445dec191965 - pristine_git_object: 2c0fa25be233851bcacb262a2a448320c95b595f + last_write_checksum: sha1:6cb86a7da1d9f11a1e9ad0e5d08173f85205ee4e + pristine_git_object: 2351f7f08aabcf15cc6ed810a537ca4638bcd8fc src/openrouter/components/openairesponsefunctiontoolcalloutput.py: id: 1440f5810305 - last_write_checksum: sha1:d24140b6566a04d5962fa967d28575c828502bf9 - pristine_git_object: 491f3fa16ca666e3509eaf389e803927c5c6e80d + last_write_checksum: sha1:dcccebe0945e97f1c16d848147a1e09070a91fbc + pristine_git_object: af8258c63d88899948741f0597c89203e461fea1 src/openrouter/components/openairesponseinputmessageitem.py: id: 90c7fe9366e7 - last_write_checksum: sha1:3cdac28f313ad612a2b31f40b4437c7067078305 - pristine_git_object: 5aedf6b16d685bb9048349dfdaef06b1c289dda0 + last_write_checksum: sha1:629ebc3b56ae4570554eef76220d9394d189ac0d + pristine_git_object: 3dedde3ce07be821316ef8b9eda0999071d5946b src/openrouter/components/openairesponsesannotation.py: id: 092d7d770eb3 - last_write_checksum: sha1:54d0c47c3486c15abd9a45622fa31607a946eaf6 - pristine_git_object: 1303f981ea1190c46bfcc6e538995a7a630fe4ee + last_write_checksum: sha1:7fed7001721d065ceb1644217e397d7c76ee7203 + pristine_git_object: 004a5d0f7a7466f47ac553beb0b27a79343c900a src/openrouter/components/openairesponsesrefusalcontent.py: id: e65dad8b00d3 last_write_checksum: sha1:5891412e704c1af0b69bdebf44e2555f6e8117cd @@ -7738,104 +7738,104 @@ trackedFiles: pristine_git_object: 08d990d8cc07b7928158fc55784cd9d613f4c58b src/openrouter/components/openresponsesresult.py: id: 78f7e33b19e6 - last_write_checksum: sha1:ab91e0c198cfeddefbf5b1b5b33e7bb9b08b948c - pristine_git_object: d53fb70ebbd7108d300c78b82ef884289ca6dc7a + last_write_checksum: sha1:f3d493060704b56a9f609d2bd26ae812f759fbf2 + pristine_git_object: 757158f7fb2b382532308b7863bbe591400fce4a src/openrouter/components/openroutermetadata.py: id: 87062f38be59 - last_write_checksum: sha1:5f69423c82ec021b04be5d518f2b75acf671dba8 - pristine_git_object: bc1d7f3bc726cfe0451e543ce7d8adde0d0cf305 + last_write_checksum: sha1:65c4b563aea67eb15f1fc6d859856a081a1cc78f + pristine_git_object: 09b552bda339d8fd4339b5acb5bfed31594a92c9 src/openrouter/components/openrouterwebsearchservertool.py: id: f5400a5de3cd - last_write_checksum: sha1:e1cd10158e15f88d5c2903b1508a42d4006f4f3f - pristine_git_object: 0f83d4405d1f2f7892dea255eac01aa34bd8ee2c + last_write_checksum: sha1:5b8eab2b521a639688131143ee39e513e6da524a + pristine_git_object: 73c09231284a8f982d7770a7a78fca403b374826 src/openrouter/components/outputadvisorservertoolitem.py: id: aa64bddfa26c - last_write_checksum: sha1:020c7b0593a1b20ea9d20bc408f636b5134cde2d - pristine_git_object: 0387112161d086667df5f53bd6b50c3fcba65d0c + last_write_checksum: sha1:b78d01e397edf8bfba32463a097e89f9fc0f9261 + pristine_git_object: aef6c89e87880fbc321285f5fc3a0932b14c90ad src/openrouter/components/outputapplypatchcallitem.py: id: a755b7e7b924 - last_write_checksum: sha1:85ee2ac5528e9a5799f76b77038b582266278845 - pristine_git_object: 14c02013831202f1de640a03d98c0203efb7e62f + last_write_checksum: sha1:bf8899f5f931b06a03c8c5e92307909a21dd29bd + pristine_git_object: 183c5517cc49967e483846fde66a888334aa4383 src/openrouter/components/outputapplypatchservertoolitem.py: id: e38119e7e094 - last_write_checksum: sha1:3f5d04634c8ea8f2877e8116c6b76a94be2dc695 - pristine_git_object: 96d4daccc1132eab3f6157549b853766303e7dba + last_write_checksum: sha1:898c5619f737c6d387df5ad4b389d1a24780274c + pristine_git_object: 919f2bb6ec91d62dcb223c15e2a25d2830b75ac9 src/openrouter/components/outputbashservertoolitem.py: id: 39d03767e214 - last_write_checksum: sha1:1f60c9358728a826bba8a6226f11deba788120d8 - pristine_git_object: 2b9fe1845eb56d368106f217c9944027868b6263 + last_write_checksum: sha1:4bec4680ba72e28bbf8d64abc72cd876222fd9fc + pristine_git_object: daa5bcc66591a1ecbc0328d25a8039cc0d70fe14 src/openrouter/components/outputbrowseruseservertoolitem.py: id: 73bff94d7284 - last_write_checksum: sha1:0428a118986766743c6ba142b7a68906f2fc8331 - pristine_git_object: 4e7aac5b5ff66ad429b406d62b8b6cec6824313f + last_write_checksum: sha1:6835f17b73a909e8a49ce9ba1257d43c62eeb690 + pristine_git_object: 3366466ab412cb62051880b09619babda8d200d5 src/openrouter/components/outputcodeinterpretercallitem.py: id: f3d69267994b - last_write_checksum: sha1:202fdff43e5e87df78451c84cde2966560932b89 - pristine_git_object: e32218266e3fa7b434a9c6b2a075c5e15e11c238 + last_write_checksum: sha1:19c1c83023a655dd2941baf6b8c3d6ccf37ada6d + pristine_git_object: cdf3d63b6bb7309da0c094232a08de2b8af9ad8b src/openrouter/components/outputcodeinterpreterservertoolitem.py: id: 628c3093647e - last_write_checksum: sha1:65f7bd8c941e9c16533c5cdbc309d46ebeb106ca - pristine_git_object: 50a002ff46a064755d5fde512da95f4d2397ef6f + last_write_checksum: sha1:a26aaf9a1ce42a37ff68404c98e62f76f745a10e + pristine_git_object: 8820add39183035bdecc5ca43448fe54a638dd36 src/openrouter/components/outputcomputercallitem.py: id: b6b688951964 - last_write_checksum: sha1:6277e30250e00908ebdf47710d20b9d7bf54e684 - pristine_git_object: 6d1009d4e2ce8adda879e3ba997ace6a25ece010 + last_write_checksum: sha1:a46bdc1ca42226d66cb63cbc5a912a1b8b6c1c0f + pristine_git_object: f13810cd113a0518faad0d890a5e8fca0e8b9e8f src/openrouter/components/outputcustomtoolcallitem.py: id: a5deb8d3fe6a - last_write_checksum: sha1:1ecf1244f7a1b542b3af8be19abb8259a295e952 - pristine_git_object: 5c3049d831dc561e2456a4b43269cdcee98fca1e + last_write_checksum: sha1:bde13f24234b1f3f4e70faa1738a867ca0d54044 + pristine_git_object: 07f9ca2043674a2e7727ecf665579ced80ee5834 src/openrouter/components/outputdatetimeitem.py: id: d7784d04fba3 - last_write_checksum: sha1:95710e9c510d4b205ae5c52e512377a999c5c1ce - pristine_git_object: e84df923deb29f9ff6c2595fb92d8cbead3cf3f7 + last_write_checksum: sha1:aa341f4d24991cfb5bd596707852b99d6336c95e + pristine_git_object: 379dd07b98d04f3279b933965133bd78f774fa6a src/openrouter/components/outputfilesearchcallitem.py: id: 61b88e4356a3 - last_write_checksum: sha1:a26855c34e42956077678a9c80c5472bdd478447 - pristine_git_object: 0c3c4ba7a473e037d8621fbf5de7d6bd69d1395b + last_write_checksum: sha1:432848dedf66c315d4b443f48514aa017acd7aa4 + pristine_git_object: e6a7eb5fd67aefc3057e3d7b3fe78d836db3ffbb src/openrouter/components/outputfilesearchservertoolitem.py: id: 9e99e5ff3288 - last_write_checksum: sha1:a961e64e1d2852f409e3696d07f5a461d938f648 - pristine_git_object: 1916f7da478607126180a8d7e25dcc56cd36c93f + last_write_checksum: sha1:92d8a86195e7438b174cdd5a919f6943f08f5826 + pristine_git_object: 5be878556b892a54a5931400f92d0f171224428b src/openrouter/components/outputfunctioncallitem.py: id: 516ed67b5406 - last_write_checksum: sha1:95288879078c977eb5cd2e63218ebffbc666ad22 - pristine_git_object: dcfc7a806fbf5794ad168bca00344b005e0d16ee + last_write_checksum: sha1:2dcba52e87aad59459a33bd5cd665a32c6372db9 + pristine_git_object: 13dc4afc3516bdb0590427677835c1d1590c9d9d src/openrouter/components/outputfusionservertoolitem.py: id: 1d798a2bb7ae - last_write_checksum: sha1:72cd3cdd5e1f505fe58c30949b4ceba8faf49644 - pristine_git_object: 0e8e4e6ed1d5e8c5fb613c6fb1c6beee033087c3 + last_write_checksum: sha1:6015789e687721a2f4c9313afa5ae564381920e3 + pristine_git_object: 78b73afecc9c83608207aa23b5f0996d1ec3d33f src/openrouter/components/outputimagegenerationcallitem.py: id: 48d20dc00e1c - last_write_checksum: sha1:6795b316ac97958ba4381cdd4d6cc6108d7bd1a5 - pristine_git_object: abaaa53610171f25ed9d814f355f9a600101b254 + last_write_checksum: sha1:8e69c6dfc3704621446b9025b092177a3aa1826b + pristine_git_object: f53fc0792634dc921e8d70237794b0683b328cee src/openrouter/components/outputimagegenerationservertoolitem.py: id: cb34639447d7 - last_write_checksum: sha1:21f58c84bea8a3ace8b91bba914e54cf62dad70e - pristine_git_object: a94bd0964eb714782858820e0db39afc28a0dcc3 + last_write_checksum: sha1:e544987af045a28c582d7b0abd877c3b75292193 + pristine_git_object: ae47b1b9a43823bc6f6f83bbc911aa8c0768152e src/openrouter/components/outputitemimagegenerationcall.py: id: 0b4cbdbd733f - last_write_checksum: sha1:f9ea61a170b8e516108d2d59b0e7df9d264d3aad - pristine_git_object: 897c4727eec2497fe15e5603187e24218c08ac87 + last_write_checksum: sha1:0ecc5cc9dad95b19cb6d4d7bb1dcdc8f2074b703 + pristine_git_object: 94af810bbdb87fb8c6800645354f7ec4dd067e7f src/openrouter/components/outputitems.py: id: 90f107de3116 - last_write_checksum: sha1:e262597f5269a4d4374500a0bc9b43701cc938fa - pristine_git_object: da3d920280394d094a6745d0770e57373df1afc5 + last_write_checksum: sha1:34b286c5edd5f0cc411d12a1efe6847d9ac1a7d2 + pristine_git_object: 0e3e405a8def2ae8b4367aeba1610f5a569abf9f src/openrouter/components/outputmcpservertoolitem.py: id: bb8c2536a58e - last_write_checksum: sha1:6cbe556b2268af0142d982007b273cc43b7605c7 - pristine_git_object: 259566184ef98b93f30329b961e8598da36f572e + last_write_checksum: sha1:28d33c9226ff4ce6871457fa1fae384b590f676c + pristine_git_object: 58c21511449abfea7eeb5b667dadcf011b936bdb src/openrouter/components/outputmemoryservertoolitem.py: id: 4b0dc2fc5f41 - last_write_checksum: sha1:452622e2debedac3ccaed0365ba612644d7ab8e7 - pristine_git_object: 204cc7d4f1e68e56852c9f3449a336ac516f3019 + last_write_checksum: sha1:2faed502f16ce3da8192ad19418f2e8c5b1f5e99 + pristine_git_object: a7be8fb12363ac8ad56892fdd53eff1823cf9410 src/openrouter/components/outputmessage.py: id: c6828e87dbd3 - last_write_checksum: sha1:04dc553699acda6552a0bc461c9eb74245b9670b - pristine_git_object: def0cb71f27238b4e3ea52e6e1eb3329cdc4e184 + last_write_checksum: sha1:6482b4450541a4e0a8f21d168240ca7787a7bf49 + pristine_git_object: 4fff8bd8bfef7b4836b83244659d12fe3b5b43fd src/openrouter/components/outputmessageitem.py: id: 97dec64e783f - last_write_checksum: sha1:0ef0488f60686e827be3a3f73d6d1f8b6808b850 - pristine_git_object: ec59a9d5b4c96843033bd73783a7b923fb741928 + last_write_checksum: sha1:00ec6be9de848f8e999b47143a6412e5319552a6 + pristine_git_object: 3a2a1f8c800da3f544943e7c75c26c367bdc9495 src/openrouter/components/outputmodality.py: id: 74c79e4cad45 last_write_checksum: sha1:a7e7205a3469166de2bd6649d94b8da6475cc3bd @@ -7846,88 +7846,88 @@ trackedFiles: pristine_git_object: ccd5283d0d31048059abf6ff85677b5d1f9f4b7b src/openrouter/components/outputreasoningitem.py: id: 0bc0568f44f9 - last_write_checksum: sha1:3c460a262ff94910ea443fa6ac7d3f6608c3209f - pristine_git_object: 50eff94f87fe82aba4fe330ee61e79ab885847fc + last_write_checksum: sha1:f9d305a4f98f5e52124410b587ee9fc8541f9497 + pristine_git_object: 46e8472bd73ac53a7362d86f8c7ec2ad0414e7c7 src/openrouter/components/outputsearchmodelsservertoolitem.py: id: ba87dc220c62 - last_write_checksum: sha1:f9682aae6fc8cafa19217af10d745180cacde1e2 - pristine_git_object: f94949d2e5aedf4873295efcdf87f0f5367c1d32 + last_write_checksum: sha1:ab0ce5d348f099e4ff76f6b49f5007bd480eff3c + pristine_git_object: b9f5ac2a2c060ebf5f4e348a8ad7523757f37b2d src/openrouter/components/outputshellcallitem.py: id: 9c6a586d3cac - last_write_checksum: sha1:b63e3c90c37f8a6b6d49d386f6417754a8ebad8a - pristine_git_object: d2ecd9f116e9c752bdef5b972f6a69ab9ee7e8a0 + last_write_checksum: sha1:5e15c61abee491ebe71071b5626cc9b2f9fbf4e9 + pristine_git_object: b5840770d05d730618b0314cb97dc7d49e43158b src/openrouter/components/outputshellcalloutputitem.py: id: 9962f4d291a9 - last_write_checksum: sha1:58a7a14968db8a009756f93f8b37071ee2b169a7 - pristine_git_object: fca6bbd43fe7716ba4ab12bd9ee9d016c3c62800 + last_write_checksum: sha1:4c661e84741d346a7d5586b5df1120d1609e86d7 + pristine_git_object: 18a1f6df264fe768bd78d5c4b7c1c030ecec7b37 src/openrouter/components/outputsubagentservertoolitem.py: id: 7480e835aa08 - last_write_checksum: sha1:ca9160c28b0f21992ad64925b587f13a4fee0756 - pristine_git_object: 35e06653f101cc5a4cd4cb173818e75fe2e52bce + last_write_checksum: sha1:c40f96bf2c5e27c2e6a4d91be46ce02461f6f2bf + pristine_git_object: bec70ef526ee26ebdfe6681b7366cb62d081e9a6 src/openrouter/components/outputtexteditorservertoolitem.py: id: 2a5dc9318fe6 - last_write_checksum: sha1:75ce53e78b352b0427acfb5310b2500ee76351dd - pristine_git_object: 6b7dc1cbaf7ed7d2943a8c336990c032a9c638a1 + last_write_checksum: sha1:fc1bf715ac0084d7390eb75152f0f27994654fab + pristine_git_object: bec8c97af1334b3cfe4631b5bf725e801720bcb1 src/openrouter/components/outputtoolsearchservertoolitem.py: id: fb4ec737039d - last_write_checksum: sha1:cd368fb2d7f2cff91351c5922291f025177b5fe2 - pristine_git_object: 45dfd93dab49766840806b9263ab64da9f6fe0e5 + last_write_checksum: sha1:63915305498f6bc6e2617ac0a0d42dc30a1b7470 + pristine_git_object: e9d0b14d646329a6d366939dd8c628245c8b3a0b src/openrouter/components/outputwebfetchservertoolitem.py: id: 2b12eb287cdf - last_write_checksum: sha1:1faafdadd295f064d2d39c12330f256abb2dcf46 - pristine_git_object: 71c97ae1ae222c114c3d0480b265031c47aa54a1 + last_write_checksum: sha1:60ec6ef59d691699c092120ea7dffed824197872 + pristine_git_object: 9b139a07d00c0fdee897f87e2336838f3a4130bd src/openrouter/components/outputwebsearchcallitem.py: id: 8c94cd441023 - last_write_checksum: sha1:6a078038a7059883f05accf9b0d59b7c065ce66f - pristine_git_object: 63fe1138ee646ae9cb5fd8056157207ab2885149 + last_write_checksum: sha1:80e10b29932f6f3bbcacdbdf98f00d2c4c4bc384 + pristine_git_object: fd19c842ecd8817dd85cb4146591eba0e90a9d23 src/openrouter/components/outputwebsearchservertoolitem.py: id: b1fcca0b3fd3 - last_write_checksum: sha1:a26e4a615a06a4e3e5841a6b69682694c5b2d9f9 - pristine_git_object: 7d63fc52581d5f5eaaef5509467ea7f37eec7c5b + last_write_checksum: sha1:fe18ea4e95294b30c6c22efd3941cd0cf660b94b + pristine_git_object: 15fb96b79c77ff9798139470e3d26df0b119a89f src/openrouter/components/parameter.py: id: d76aede00388 last_write_checksum: sha1:bfd3c5f0f386b8c743f724c52ba51d97e49a1757 pristine_git_object: 9aaebc4cb7eefdce97f37e89d6d719e524d148e5 src/openrouter/components/paretorouterplugin.py: id: b239c8e11899 - last_write_checksum: sha1:9d070d49f1983cee493ba27cba80c41e6133aaf4 - pristine_git_object: 6b12a70411a04b73112da5192baf0131b7f0ff36 + last_write_checksum: sha1:683d7762d520e3b9d08a3e976bc3bfd3ceca931f + pristine_git_object: f010e7df96d242b4b636a3112416a28b7a5845ac src/openrouter/components/payloadtoolargeresponseerrordata.py: id: 5209b3a61cc9 - last_write_checksum: sha1:ba13b793314af45716d3ed5572abaad213d01850 - pristine_git_object: ee1a068a86dbfe24300a5ee6220dcd90c6a860d9 + last_write_checksum: sha1:41c9cfe04f098a0f8c3971e6dfe490c27e783413 + pristine_git_object: e644b9411ef99f556f8a212cca6386c8c5459743 src/openrouter/components/paymentrequiredresponseerrordata.py: id: 9a2591c3e458 - last_write_checksum: sha1:351fc58b6c4d4411e75389ef73b7f20744383822 - pristine_git_object: 83abd1e8a1155c9b715dcb00ea854b65868cd2aa + last_write_checksum: sha1:7fb9dcb46077104a5fea8bf67f1205cd914cd2e4 + pristine_git_object: 2ddc388dc692422714e0270553fcf47b8af129f1 src/openrouter/components/pdfparserengine.py: id: 7de19e0839ba - last_write_checksum: sha1:8863b097a3f85ef7cb5c73101db8cebafac81a37 - pristine_git_object: 36c5f8f3b56ccd23df6f7a4bd30a6c834359fd25 + last_write_checksum: sha1:61749f514e36bd601e5e87dd043bd8132373b1ed + pristine_git_object: 324fa11748ead3b9ca4bf20ccd3bf4c9fb001ddb src/openrouter/components/pdfparseroptions.py: id: 704219f4af59 - last_write_checksum: sha1:ebaf4590ad78b4082b86fd9689ae447ab787a7dd - pristine_git_object: 4510e737dd18154f31fb91ea607db550c11f8290 + last_write_checksum: sha1:3c05b6604fb099f9f9cb2766c95f1776f527f980 + pristine_git_object: c041ce5a6b595b5a731bd97653b778830e58545c src/openrouter/components/percentilelatencycutoffs.py: id: 00ca8d5c0100 - last_write_checksum: sha1:81d6bd48f353122c5106ecf3a8540588876fb2d9 - pristine_git_object: fa8175fcefc672bad9edcc8612dcc447723a723e + last_write_checksum: sha1:9296ee4dc374853276f3a73b713c6e120c736f5b + pristine_git_object: 0680a1343209214f98777e6cfbe13d862d703f7f src/openrouter/components/percentilestats.py: id: 9c88efe57f70 last_write_checksum: sha1:c66a32149756893be4e46f16bf166cd9e36dd9f0 pristine_git_object: e979e11469df4f37098d5804ffd3e5da217468b9 src/openrouter/components/percentilethroughputcutoffs.py: id: 652397163aaa - last_write_checksum: sha1:409e8a4c017d03a4f852bdbfae874fd126a434d5 - pristine_git_object: 17b28ced7a9ad1df064a5509d55b1ead8cb2a4a5 + last_write_checksum: sha1:a97289b7fd364d4d4d55eaceb452ec0891e97359 + pristine_git_object: d4fad42e2a9de3a69093e54375086c2e23854ee0 src/openrouter/components/perrequestlimits.py: id: 5a170d7d1f2e last_write_checksum: sha1:9b269bd87a1f704a0f0fa731da57cb35bc960674 pristine_git_object: d572e3bfa6c8a55afa7d4f057fa17186652a98a1 src/openrouter/components/pipelinestage.py: id: b87ef92fdac2 - last_write_checksum: sha1:f3f59e51956dabc99e4006fba125ca1c334c5cbd - pristine_git_object: a5a763d022ed39dab6e7ab05ce28582d408d42de + last_write_checksum: sha1:3ced429ce8fc615df880ba5eda954b42f53329cf + pristine_git_object: ddecb911ec93889d93c0f80020370a023323df94 src/openrouter/components/pipelinestagetype.py: id: e84fda1bf034 last_write_checksum: sha1:ada3c3cbb5726f94c566c172bb3b682f0efbe9fb @@ -7942,32 +7942,32 @@ trackedFiles: pristine_git_object: ceb4be7e491c27a88e8c5987268e9cea098317e8 src/openrouter/components/preset.py: id: 13d4da7b6a00 - last_write_checksum: sha1:3e041a12828e5381280fe04b4a865658c5025796 - pristine_git_object: f1a974c26cef7c16c23f4812f8f43818f5ce1157 + last_write_checksum: sha1:dd78b534b89481c4c85f5f9b0ab61d1a0e5a0e4a + pristine_git_object: 9c2ceba75bfaeef2944108ca1b43f1f9dc7cd7c1 src/openrouter/components/presetdesignatedversion.py: id: de6fbdac35a5 - last_write_checksum: sha1:a581657de9f8ea01864d545cf33aa30fca30fb33 - pristine_git_object: 620f08f9b5c6a90fb633f9a7c7eac1579b961c4d + last_write_checksum: sha1:73b938d83aa874074acc6cc2f40cf8beeddc1d8a + pristine_git_object: 504c90eaf1414f42f25d1559dbf44e107f3cbf4b src/openrouter/components/presetstatus.py: id: e35ad4382937 last_write_checksum: sha1:e780890fa7c4d038ef24695e40748875ac58022b pristine_git_object: ded8bd39849de0f3dabccdce497157d5dec83058 src/openrouter/components/presetwithdesignatedversion.py: id: c79d75630cd0 - last_write_checksum: sha1:b2d4d09c7afbba3511e283c31d6b3b66ef90cdfb - pristine_git_object: cb5c91085cd5934b4f855a06a7c6e66c891cc32b + last_write_checksum: sha1:70b29008c23c5cc138b6261d4717c8c5174055fe + pristine_git_object: 6828e9dd037e51ac1409380429e4aa86f8446211 src/openrouter/components/preview_20250311_websearchservertool.py: id: ecfe1a37c34f - last_write_checksum: sha1:72e4f22d63e92e59e9fc25c94f4a740cafff4f80 - pristine_git_object: 89dfe4a5ae66cd8962926ada97c3f9af6cdca614 + last_write_checksum: sha1:51b131fca288db6925b444804158dd87f5e8b641 + pristine_git_object: b2ebdf07be0b3a2ef96fd7bf9fcce576d4687668 src/openrouter/components/preview_websearchservertool.py: id: 9c02777285ce - last_write_checksum: sha1:cdfe8de71406be25b83fb21f2c596005b76620af - pristine_git_object: a1e76de564452ca1da39c261e9c098ba911f7a9c + last_write_checksum: sha1:5a8cef31c58d98bfd7a9cc97671b9720c3306ade + pristine_git_object: 7decade6f14207bbfe9bc35a620406a7e681b899 src/openrouter/components/preview_websearchuserlocation.py: id: 40414eada27a - last_write_checksum: sha1:52707a8a06e2c03a4c671f909e42c6d1da6dabed - pristine_git_object: 72dd15242d7d35b2b493f90d0cdebf6f8a51d684 + last_write_checksum: sha1:0e241830bf9014e8ea814465c573711d8a7caa2c + pristine_git_object: 90bdb267893360608210843a5da0d5d68e80d41e src/openrouter/components/promptinjectionscanscope.py: id: e78ab231a530 last_write_checksum: sha1:f257e3ae2b6385cf758e891ba02601c435e92098 @@ -7978,36 +7978,36 @@ trackedFiles: pristine_git_object: 009c1401a29123f18887b48c03f9c2a8b11ca2b5 src/openrouter/components/provideroptions.py: id: 73dde6c8f359 - last_write_checksum: sha1:f53a3ec58bd7380337d7011ac312694692ea683e - pristine_git_object: 160b700e8c5f2824932928daad552979ef086bec + last_write_checksum: sha1:ddde99f94118559796f316a1f05de70060f3bee1 + pristine_git_object: d84b93dea4982ead0bd8a069cb0801a8e02447c0 src/openrouter/components/provideroverloadedresponseerrordata.py: id: 5b693682570e - last_write_checksum: sha1:41a977452d58b52cb9d4b3a85f4b7970529352d5 - pristine_git_object: f3d7756851495a1f1cdbf62fd62d20ff0ea07bf8 + last_write_checksum: sha1:1ebc4527736f1e174ab37c84bea8a169fda9f8b8 + pristine_git_object: c85a381a5f596fcbc2e3e599a65e8d03d62fabcd src/openrouter/components/providerpreferences.py: id: cdd58c8d664d - last_write_checksum: sha1:f3d54af0f02fd2ae3f2fd0aba05c77419f79562a - pristine_git_object: ce5d942a25ef1bda1af7d40e5c98418550fb34a3 + last_write_checksum: sha1:381d12826558a405f980ca338413e472296c12a2 + pristine_git_object: abbb3cb3d7d8946aabdbd5e6b07b2e45954f6948 src/openrouter/components/providerresponse.py: id: ad3887be54c5 - last_write_checksum: sha1:fcaede27042d7d3fc2252a8950903eeb298abcb7 - pristine_git_object: 5cad4c141cd79f69eeae90dd17063a9ba3538723 + last_write_checksum: sha1:98ca4edc575c9c99ba342a4a490268308a0ac4e8 + pristine_git_object: 757907b8bdc224a0b94835fcec085a9f85172d45 src/openrouter/components/providersort.py: id: 348e382bf494 last_write_checksum: sha1:57551507f95cd2e16ef995e1c13f859fd0726152 pristine_git_object: 7325f369b561dc4bbc73cdd97c72526c718d1085 src/openrouter/components/providersortconfig.py: id: 02719ff8dcd5 - last_write_checksum: sha1:349b29e136a62cfd3f7cba439fd958797ac4ee31 - pristine_git_object: 4e1073b4e3c10943c7035376f9984cd6559653a2 + last_write_checksum: sha1:d45c5195b22199a5f03a1a749a861f110c8a3a13 + pristine_git_object: 1798ae9dd8c2e4b629bb99cc5c643827895e8231 src/openrouter/components/publicendpoint.py: id: 848aa2ef9129 - last_write_checksum: sha1:2e389b5e4301174b4c8aaa5e0c679d6872ddd67e - pristine_git_object: a7d3e523472feb11203aa79bd081fa87c0ed6503 + last_write_checksum: sha1:d8788cb95c89974e6339ecaccc6202dfae871225 + pristine_git_object: 270a46db728bbf80ab3c89fde25d71c61f93434e src/openrouter/components/publicpricing.py: id: 96d115d83cc5 - last_write_checksum: sha1:1980193d2339dc13b08d1caabb235b0b8bcb8ce3 - pristine_git_object: 09a1bdd6ec5d204533288516de6d01ae20be218f + last_write_checksum: sha1:41f834b27573c1f621c99883d27e231a1384c846 + pristine_git_object: fc3f2cdb028345dbeda1c0a6a1493647286f1cc9 src/openrouter/components/quantization.py: id: bde317b3d703 last_write_checksum: sha1:96b042899bfb818f20d282be76ad37fc948a599d @@ -8018,8 +8018,8 @@ trackedFiles: pristine_git_object: 76fabc08d96646862e7a1618d39d84934a25b5e4 src/openrouter/components/rankingsdailyitem.py: id: 9aab72b1d643 - last_write_checksum: sha1:c753fd7363f424f144710ceb18456f882d7b6e6e - pristine_git_object: 7325fa4619692b4c395e6b6d068519bd37d4b063 + last_write_checksum: sha1:356cb98c9d721ada4faab5a6e6e8e80088f81f2d + pristine_git_object: 46a16b3c0cf8812c044b01b5916aaf87cc1d525e src/openrouter/components/rankingsdailymeta.py: id: 067dec7d316a last_write_checksum: sha1:2993b72319acc7dd79ae670539ce5dcea3dd9353 @@ -8030,28 +8030,28 @@ trackedFiles: pristine_git_object: 9adc8e68c6993b0490e8d14e1d2c0f15694dde97 src/openrouter/components/reasoningconfig.py: id: 754fc31a7b69 - last_write_checksum: sha1:ac6669cbfddc54d2305d8389881406dd7c79f046 - pristine_git_object: 6f390d64620676f40a90ad32fe54c03f7224faba + last_write_checksum: sha1:49e4159a5318afffc7be6061d809c91c6fe26924 + pristine_git_object: 7e37f18a825c059606ec701dd94dbdcd3343f2c3 src/openrouter/components/reasoningdeltaevent.py: id: 6de06228d1f6 last_write_checksum: sha1:efff164cfffbf6b89ab270ac4912243649149457 pristine_git_object: fce551fac40c914beb4d8db48ad8f0acde7c2212 src/openrouter/components/reasoningdetailencrypted.py: id: ae7d7526c9b5 - last_write_checksum: sha1:91114e68c6610a4d70a813ca3b188d5f1a02f238 - pristine_git_object: 0cfaff93983cceca55a02f8cda020db7a9024121 + last_write_checksum: sha1:df579e34f32d49b348ae1fc8e74904ac4edb03a3 + pristine_git_object: 0ba2daa8d62116e1122638e2c703e89428cd742d src/openrouter/components/reasoningdetailsummary.py: id: 53bda5c72dc5 - last_write_checksum: sha1:ad22f1d6a12836d5324048fd9965e4a9fd1b536b - pristine_git_object: ceab1ea50261bf588a3175889c1e9a439ff9643a + last_write_checksum: sha1:db665a5b9c7ca3be181719df3c81f07ce3c127ea + pristine_git_object: 21c892cca33d183be9be5609f29c363a1377662a src/openrouter/components/reasoningdetailtext.py: id: 62f254529b87 - last_write_checksum: sha1:1cc4802602df372dd93fe48a8d422768ee395cb8 - pristine_git_object: a21b8ede1b4c9405cec2d3b2937c8c4fc7ee6a44 + last_write_checksum: sha1:11f1a343ff00bc19ac05702a810b3f4c9aca5c7e + pristine_git_object: 49b08a205274f8aad7af7c5c910a7dbc73c12588 src/openrouter/components/reasoningdetailunion.py: id: 3326e0b80cdb - last_write_checksum: sha1:94b5f9d7b3f65acd1a77db4d4cb843623bef587f - pristine_git_object: 42ce66369bbd7e527e12cda8b48ba50971f8674c + last_write_checksum: sha1:ba9766e0906ce06081ef33e5889ca7c0af870e13 + pristine_git_object: 78e5924ea5aff2f91111acd8348907ff37c738e9 src/openrouter/components/reasoningdoneevent.py: id: 5d7fc847e949 last_write_checksum: sha1:456aa0d5bc1ca2e46d2dd494d3d0f78d77ca23bf @@ -8066,8 +8066,8 @@ trackedFiles: pristine_git_object: 3145901807a1b03565dab73b2738b14f27919f52 src/openrouter/components/reasoningitem.py: id: 4345f446ad97 - last_write_checksum: sha1:1b76e91974e6f37f29bc7db90d5d4207f7c333c6 - pristine_git_object: 43d3ff5e66c9c6761fb2fb78219452d77675dd04 + last_write_checksum: sha1:609a0510506f8dc70ca9cba07040b82ebdc9ec9f + pristine_git_object: 40ee3f6c1a1e249d988950ebe49d1ad6f8c05dc1 src/openrouter/components/reasoningsummarypartaddedevent.py: id: 006a060524d6 last_write_checksum: sha1:acd510a13e5cc8df7dcca38040af2be0a37a689b @@ -8106,28 +8106,28 @@ trackedFiles: pristine_git_object: e09987ebcd2b8c39d61a8a766655bd275d4e7039 src/openrouter/components/requesttimeoutresponseerrordata.py: id: 2c5f5ceaf22d - last_write_checksum: sha1:2173f6ce9aedc0f4afbb76167bae56d0db186ebf - pristine_git_object: 50be74aa7d8198c25ecf4d858077ddded9fb740f + last_write_checksum: sha1:d5a7d414013a59cb8ce0a82cda3309103dd9d597 + pristine_git_object: 0ba1a63f3d052eca0f3475c036feafe212d1e77c src/openrouter/components/responsehealingplugin.py: id: 06608e027868 - last_write_checksum: sha1:11dc1c5534543ffe4492fbaac23f6a264519a693 - pristine_git_object: c13279f2c2943981b51b5dac402c82c4a07f63e7 + last_write_checksum: sha1:f4ee2caaa09379c52353f8920109f5e3e95f2274 + pristine_git_object: 27f0ef5ce4737a56b263f8ce5f0a3973f1441c39 src/openrouter/components/responseincludesenum.py: id: dff573cddd73 last_write_checksum: sha1:71e46afb70c23cf988579d27b6df3ebf421f1684 pristine_git_object: 9da58c5b22cbe284a9fa130b63c7d8ead77669c5 src/openrouter/components/responseoutputtext.py: id: cbc203c3ff40 - last_write_checksum: sha1:0ead2b72e02365330f7aafcec8a81d51a849cd59 - pristine_git_object: b1c89ab1d6cd0305229efbf134e168e7e223f772 + last_write_checksum: sha1:c0c6ff17b402f0cbaf8d58add175f1026b0a4097 + pristine_git_object: 900bf08ec940565a8cbf55712a437775db00ca46 src/openrouter/components/responseserrorfield.py: id: 565a88fd70a1 - last_write_checksum: sha1:3efa77fc8cd3aeef21266d3dcbf47717f7856830 - pristine_git_object: d3c77624292ba0985104a6125e462c305a633d84 + last_write_checksum: sha1:2547f2be40063fd0c897edd541c38485ddbd598f + pristine_git_object: 1c7f8a0ef6bc011cd6196c4a4c77a94b1cbb6b73 src/openrouter/components/responsesrequest.py: id: 8c850080ec5d - last_write_checksum: sha1:20d13187b1c6e2530e2bcdaa7c3f551e99065121 - pristine_git_object: 683fab4a6f2fba854b0d920a787307f4977e94a1 + last_write_checksum: sha1:6b38eb5974b587c6aa930c88184dc8e3c1212335 + pristine_git_object: 0686331f05f102c12d80f1ad7d42c40044d1df98 src/openrouter/components/responsesstreamingresponse.py: id: 142379f3bd90 last_write_checksum: sha1:a48d6f3610f5d15248ef4d25a0d88a0a4a1a9db7 @@ -8138,8 +8138,8 @@ trackedFiles: pristine_git_object: d47bd379ad5b3e0e548581340f4afaaf54d1d8ce src/openrouter/components/routerparams.py: id: 4563ca5dc421 - last_write_checksum: sha1:c1d9388e903d23bdb4ab21334c9fe57c4d4db095 - pristine_git_object: ae952a332acd3de14461078bce81279c90dcd54b + last_write_checksum: sha1:8f9dc9a02a6a3a4f0131ad36d8d7cb2c4525a97f + pristine_git_object: 264be6707d18f8d48992c6c339a735401d51d79f src/openrouter/components/routingstrategy.py: id: 553fefb9814c last_write_checksum: sha1:5db57f3fb6368777e8c2713eba613830d4f647fb @@ -8150,28 +8150,28 @@ trackedFiles: pristine_git_object: 7faa97b80bfc0d362fd89c255adb708a4f7afc05 src/openrouter/components/searchmodelsservertoolconfig.py: id: 6a1174213084 - last_write_checksum: sha1:fbafd5baf44fa1f922a357a77ca0ce89eecc54d1 - pristine_git_object: 559ecad60dc51d3a30a5b40421fd0e1e5db2aaed + last_write_checksum: sha1:4e4cfb2275ef0d6410f9557ab6a8f28ac8e9ab16 + pristine_git_object: bec955b7d4d90d03e90d82c61320c6aa5e70b997 src/openrouter/components/searchqualitylevel.py: id: 8fdb148edfb2 last_write_checksum: sha1:05a1ae3b774381f4d20f62c02cd413125be4c321 pristine_git_object: 450aea60f799bd4eb7e8e53e9fa24a376062c62f src/openrouter/components/security.py: id: ae2ca334218a - last_write_checksum: sha1:e6bfa94172df4c823ed9dd83b9b2614e6890d462 - pristine_git_object: 1870d08b6911340102b37f396673f35e4c8b99f1 + last_write_checksum: sha1:4f739c60ede675286c18e898f4cc9505480897a4 + pristine_git_object: fce3d0742de43f714ec40da747e6dcf7ff5e4075 src/openrouter/components/serviceunavailableresponseerrordata.py: id: 606d51d201e8 - last_write_checksum: sha1:8b76218af34c1287190b8d4ac5d7fc3545bbbac1 - pristine_git_object: 0b28bb2db7b7c195366e992bb71c03ac30cf9280 + last_write_checksum: sha1:275a171422155df8447f1b250f0a8af61d266b68 + pristine_git_object: b6859e9f7f8b9ffcd41b62013816e8408be0cb25 src/openrouter/components/shellcallitem.py: id: 0b3b4f503413 - last_write_checksum: sha1:917b39b2347de74ab3040a1b4f1d0ed6efee4a9e - pristine_git_object: 892539bfbacf3ee6cbc4a2e834215f0d84db2ebc + last_write_checksum: sha1:30e23c3f175ce7de796559c5399b4fb0e67e387b + pristine_git_object: 3a5faf691f19ecba9d901040a9055c9d388d7877 src/openrouter/components/shellcalloutputitem.py: id: 54409ebc9cdd - last_write_checksum: sha1:5f26e4cef8b9e91e32f7d475d3b5e68ac87e9b03 - pristine_git_object: fb4b3007a890802b57b3433c56451b92a0e29761 + last_write_checksum: sha1:f77f853c44ac5a2cd384e828915f1cf5a2f7e980 + pristine_git_object: 872701b549bd8a6edee29931adfa86ffb87e229a src/openrouter/components/shellcallstatus.py: id: 3627230aad33 last_write_checksum: sha1:c026c8544f66c0ae9bdfa83b9d63502ee8f2907d @@ -8182,12 +8182,12 @@ trackedFiles: pristine_git_object: 7e26325a31eb3ed1dbd4323a0e61afc1f6bd885f src/openrouter/components/shellservertool_openrouter.py: id: 6ec5747cf94e - last_write_checksum: sha1:0ebabd7cc8b56974b1a2ab5d8c7a979b189626ed - pristine_git_object: 304313b820cff232b5f15758293fc16e480415fe + last_write_checksum: sha1:3612e515e486291bfc7e89d7a8a08fde5705407f + pristine_git_object: 0778136a1b4e03775ab17f69f3536f06e98e0cf9 src/openrouter/components/shellservertoolconfig.py: id: eab9ca1aa376 - last_write_checksum: sha1:784a1ef685b02abcbad5bb37be33fa3c86c9c579 - pristine_git_object: 35683098c15603e62032623494c36ab1d340e8f6 + last_write_checksum: sha1:50279d498af202473ab9ae77e170fb6a07aed523 + pristine_git_object: aaa115f0224c807ceeaac7a80358894409e7aa0f src/openrouter/components/shellservertoolengine.py: id: 8a1dda027cc3 last_write_checksum: sha1:d8dd2e5aa21fd779a52853a0c496ed7a16d99bc4 @@ -8198,8 +8198,8 @@ trackedFiles: pristine_git_object: 418953ba7366a6015934bf8795178d79adb03b89 src/openrouter/components/speechrequest.py: id: 2a9400167112 - last_write_checksum: sha1:da489c793ab8886a370ae9dd07a1bfaeed1e3a86 - pristine_git_object: 96f8d132f4a6e0ffff4187f5810b3b040d462d4c + last_write_checksum: sha1:110111aca3452c99b2c8ae365956737d935ae5ba + pristine_git_object: cb7e1b2a4626b9424b4c4c564a084d1ad2f15b3d src/openrouter/components/stopservertoolswhencondition.py: id: 2deeda4209ac last_write_checksum: sha1:581e0ee62776d42bf598b9f68b998faabfecd3ce @@ -8226,12 +8226,12 @@ trackedFiles: pristine_git_object: 85c82e9d2446cae784225165851af3bdcb468b03 src/openrouter/components/storedprompttemplate.py: id: 6be99e870ecd - last_write_checksum: sha1:6b7d17641d9e2b52010962cb586e32f99254db79 - pristine_git_object: ffb7a43e64bfef2809683fe60a5d17744ea345c3 + last_write_checksum: sha1:a2517acc28b7737500752931b8588cb07b17d06d + pristine_git_object: a27d8806096c5db215e83fc89b4700ff94d3078f src/openrouter/components/streamevents.py: id: 331636234c76 - last_write_checksum: sha1:cddb5b06cdaf9ad42dbb49ffa918b8cd19b36749 - pristine_git_object: 0761a9610b5a27a071785b4e8d849410aaf64623 + last_write_checksum: sha1:b049ae1a8dd7b46726b56557e2b7440182960a7a + pristine_git_object: cc94aff80f6eb55e18385bc4a80db2a881d238e2 src/openrouter/components/streameventsresponsecompleted.py: id: fd244f61371c last_write_checksum: sha1:011e0930c7994f64dbee78c0a4c2fa5d7167d8ab @@ -8254,44 +8254,44 @@ trackedFiles: pristine_git_object: f94015b84f011f33a2ef571d4789c87cf9dd758b src/openrouter/components/streamlogprob.py: id: b69b8f2bb578 - last_write_checksum: sha1:ebb53f7ee5acf6262f67574a27fd35b134691bd8 - pristine_git_object: 44e37608374c05189542fec1faaf76667ab55f28 + last_write_checksum: sha1:9324caa46d05d2cec47094c94a7873c96aac73d2 + pristine_git_object: 7c0cb667be23df067072f2d03b6ea7330e97ebd8 src/openrouter/components/streamlogprobtoplogprob.py: id: e39bb8998edb - last_write_checksum: sha1:cd5570f2a08ea1c0315dfcbc0e4d704610adca41 - pristine_git_object: 49f4ae2d09fa5d311465a0a77f7cede0f97f779a + last_write_checksum: sha1:aae5b69a7dc7ced3af224d28b6ab485ad33ff2ef + pristine_git_object: 79b6d3487431628f261a66e552bd97668ded59a2 src/openrouter/components/sttinputaudio.py: id: d59edf301037 - last_write_checksum: sha1:ee9580093ccb22ec4d5e2cdc6f9ddddd33d84d56 - pristine_git_object: d1b15b44f530c920110bc808980fc89a00e3c879 + last_write_checksum: sha1:758dcb0aa6ccf3f2dd73b8d8d2771d339a2fecc2 + pristine_git_object: 76c4b466e22e57b34098b587e95cb358089dd87c src/openrouter/components/sttrequest.py: id: 5fb1d469e16e - last_write_checksum: sha1:689a5d34bdde544d8452aebaab7b86041069dbdf - pristine_git_object: 7900460ece223b9c29f719b47911f39c1ecd862f + last_write_checksum: sha1:04621e286373ed7b188a3c171f83c93cb89c67f1 + pristine_git_object: d5497b98e6de245a4839b80079bf673be05d70ae src/openrouter/components/sttresponse.py: id: 2dc8eb8daaca - last_write_checksum: sha1:7af7b04e09abeccee24863ae133cf811e9453b8d - pristine_git_object: d50a8c428ddd5293b059d3d15bdf1e46b2306a27 + last_write_checksum: sha1:31cb20245662006e6459e662152c80e97778d77f + pristine_git_object: 19ff065a62373dfe9e0c97842d4ee173a175f5b6 src/openrouter/components/sttusage.py: id: abe8329af787 - last_write_checksum: sha1:213749fb8f5389bc607b75300b6fcff714c83b6d - pristine_git_object: c7661d13e6970fcb82970968a85d5e8507bc0c0e + last_write_checksum: sha1:4b7b79be71c2d1e392aef738a37d2d75f0bb29c4 + pristine_git_object: 1feb5db4da1422d55744c5a4bb10eabda6c50c4f src/openrouter/components/subagentnestedtool.py: id: 911a465973a0 - last_write_checksum: sha1:5b58207526a92f946b0ee20248d194f4289e2939 - pristine_git_object: 8e1417b1cf116bf26060143dcab214d2623bddcf + last_write_checksum: sha1:beb2209144b032e109c4afe33f440728423d7594 + pristine_git_object: 4a62a2c02e57b75a1c75c2198c9737cfccc0188a src/openrouter/components/subagentreasoning.py: id: 2715ebf26eb3 - last_write_checksum: sha1:ce0a8989c3e42612edf46770a0039aca05b949de - pristine_git_object: d2d508152e2a4339602d010776894f76210b3abf + last_write_checksum: sha1:79917bf44c183cbd5f7b9e9a9ce60ef288e4f0d7 + pristine_git_object: d34c619b85be547eaae9ae7f96fad370de5c0b43 src/openrouter/components/subagentservertool_openrouter.py: id: f08524c6985a - last_write_checksum: sha1:771b71aae9989727ea3564615f06da7f08431705 - pristine_git_object: a33e7690f45117da788ddfabe9ad4102ac3605d0 + last_write_checksum: sha1:0b2445fa5606a93513afcfb9ac4f451603022e77 + pristine_git_object: 51cf1e2c1b8603e4933bca7f8ec389a010d4ad4f src/openrouter/components/subagentservertoolconfig.py: id: a8425c790cb6 - last_write_checksum: sha1:a885325a7612357dbb9454400433cc485e6ca420 - pristine_git_object: 27bb1e45236dcdda4d14d5c09bac867d86cf1ace + last_write_checksum: sha1:f434a1ff30f069c379b1809edd62b0435998156a + pristine_git_object: eb9f276769106934801d88ce9d2c5c5c67fe1bc2 src/openrouter/components/taskclassificationitem.py: id: 86d4bab5ebf3 last_write_checksum: sha1:16176fda0ccd16b0be59bb5c4b74db78eae02f36 @@ -8318,8 +8318,8 @@ trackedFiles: pristine_git_object: 9bc3b1fd09ca7d4be981ceb7b10e14fb157dbb5f src/openrouter/components/textextendedconfig.py: id: 150a449e46de - last_write_checksum: sha1:81f539fffffee92247de216b1ddc9269b02fcd54 - pristine_git_object: 89224c7a342575e694ac269e1773c4c2a0ad5c07 + last_write_checksum: sha1:56b0dc5aaacd994dfa1f16900a4fe1b4eea2f222 + pristine_git_object: ffae73647f1060eeb9f46a4d331de6b9760dc5d9 src/openrouter/components/toolcallstatus.py: id: 32339139c3f3 last_write_checksum: sha1:a75631cdb460f190aa10d5557519519d1ef5fbe3 @@ -8330,76 +8330,76 @@ trackedFiles: pristine_git_object: 999b399bc6f5ad2be3bb87f813d0ed1fb5ec2614 src/openrouter/components/toomanyrequestsresponseerrordata.py: id: 4dc67ae011a1 - last_write_checksum: sha1:e30024f0469a52dd7d249f8bc3b8c2cd28212790 - pristine_git_object: 19fda103cedcccd94e8feac9ee0a069454b06868 + last_write_checksum: sha1:0c0adf2f729b6542380b70f82bf21d4cb5f97d44 + pristine_git_object: 2446e9664a739abb8216b6461997e51d9c069e44 src/openrouter/components/topproviderinfo.py: id: 0517ce43cc77 - last_write_checksum: sha1:5180e3c9ddd7aa2eb66276b46f4170c794ec508e - pristine_git_object: 475bda8f58fa58a990f06d935b3280ba91b2bffe + last_write_checksum: sha1:f99bf790e69be8c73a5680b9cfa0b97fc03528f7 + pristine_git_object: 6e119e6b3855709568f41ab53095c41aebd2cc5f src/openrouter/components/traceconfig.py: id: 19375fa88b9a - last_write_checksum: sha1:f8f931bcc35e0b4cd45669a77fddf7fab812da16 - pristine_git_object: 644b9be533d692ffc34a9fb5f563f69aa0438ca3 + last_write_checksum: sha1:431e9244c3205cb6def45359e8f60feb64a1d3dc + pristine_git_object: 5ef25d66b7c711b0324087c001b9eb013f798222 src/openrouter/components/truncation.py: id: 88f4e4be9fc0 last_write_checksum: sha1:69e1f9d19ad27b82d882031c100f8a607344f8af pristine_git_object: 1f8bea3c63592dc738f70d50eac8c69e2e755096 src/openrouter/components/unauthorizedresponseerrordata.py: id: 7d9755fc8395 - last_write_checksum: sha1:d614e72cc67bf6c4da7f57cf0f4367de726ec06d - pristine_git_object: 0fc3c7c3991891ae00ae2f624df78d21e0ae05a8 + last_write_checksum: sha1:522dffa2a90f3a8e03fcb966ad5c44ba1bdbc17d + pristine_git_object: b1fee6c3b765d5d2592a594a788c1a1c3882131d src/openrouter/components/unifiedbenchmarkpricing.py: id: b08adf1a31d0 last_write_checksum: sha1:e8d1cb425c61a7094f50a73e59cec6d64dc34204 pristine_git_object: bad387cea54fcab00e8a7fe54780dd97a29d72c3 src/openrouter/components/unifiedbenchmarksaaitem.py: id: cc8382ac1af5 - last_write_checksum: sha1:39fc6f0409234ec30e6bbdba2736e278abda8756 - pristine_git_object: a01518d4c996f16bd740489684b20a9682db0f0e + last_write_checksum: sha1:7c82b5274f6b8a9a89cfe2472af093bf23731a7b + pristine_git_object: 9e6db28829540fc20c08a6c1523980a5289bdf7e src/openrouter/components/unifiedbenchmarksdaitem.py: id: 946501943ce2 - last_write_checksum: sha1:22bbe61dd833db3da96796ebfdcd3141dd0ed126 - pristine_git_object: 0bb8159d555e263bd875bd42e1cf0e552c3573b5 + last_write_checksum: sha1:c554401eb1ef4fb597743004c4bcf77afbd059ba + pristine_git_object: bc4d5b68d8a9d2e5990b8e663857ee9e26a0e806 src/openrouter/components/unifiedbenchmarksmeta.py: id: ca02b44f633a - last_write_checksum: sha1:fdf3983fad9a3c119c88a1fe5e3d314787dcf248 - pristine_git_object: 6106104d5249ae04075f1905f330b5aeaaaeb02c + last_write_checksum: sha1:2c279a103b3634a6776209e96dc5e66494307cb5 + pristine_git_object: 36d695e2906102ac9fe51e24e8bd80c1e57cccc1 src/openrouter/components/unifiedbenchmarksresponse.py: id: 4f7bbccaba03 - last_write_checksum: sha1:f0775bb4427be9ad7c01942e5048a103647a78eb - pristine_git_object: 8f064226057a3d4d331cee102713813a208452cc + last_write_checksum: sha1:19f9e62d134ba7b680d1ddd5a889c879feef169f + pristine_git_object: 7145a0840a470a47f17ea8126012ff6c935e11c3 src/openrouter/components/unprocessableentityresponseerrordata.py: id: e8ca4a51f994 - last_write_checksum: sha1:d9ff0dea491e12d5ccb28607eb65f00fe8d694aa - pristine_git_object: 1c70ab3d8b23363543675abe5d3b3566aea113e7 + last_write_checksum: sha1:f9e13313f56f785b451364a4a41d692af67d2432 + pristine_git_object: 72a7e1d544432de700e38172425930ba6fcdef93 src/openrouter/components/updatebyokkeyrequest.py: id: 5edad69c278d - last_write_checksum: sha1:3eecf8d3d312f2b4182149cefada105817ebce75 - pristine_git_object: 9fa7cf678582d4bba8abca16fb8c85b455a13ebf + last_write_checksum: sha1:c4c5bb57979e5251e5423cfe19b22036a6f8cb54 + pristine_git_object: 865262ac26028a07c34a2d678882320af9f674fc src/openrouter/components/updatebyokkeyresponse.py: id: 31338080f7cc last_write_checksum: sha1:794d77355ae37451076a6b5754c6c8cc77063047 pristine_git_object: a3664695c9722c531f7694851da76e51c2efe4fb src/openrouter/components/updateguardrailrequest.py: id: 6a557cd822a0 - last_write_checksum: sha1:db8b40859e2bfd1621859c11221fa5f36c46e53c - pristine_git_object: ec5240af3f22a0f0594eabb321e8a2fe070dfcf8 + last_write_checksum: sha1:cbdb7d942739143b727a64ad5330116c96aa6402 + pristine_git_object: d80389ace4e8b02227c7b1fab4496789761a26dd src/openrouter/components/updateguardrailresponse.py: id: 7b068d26ce31 last_write_checksum: sha1:2b63cbb90747f07f775d9a22e80f74c67221fea8 pristine_git_object: df833960211cc7ed2a2a42fddbeafda0092e1c0c src/openrouter/components/updateobservabilitydestinationrequest.py: id: d7a39fe04386 - last_write_checksum: sha1:263118409610b46eec310464be179a5a70f7cc42 - pristine_git_object: 1709ecff0d5fee2a11eadbdef457cf4c017bcf84 + last_write_checksum: sha1:3a4279ca4f9680d2a4c41464b04ace5971a125ad + pristine_git_object: a344284f904d781583b0f493839fe11930b5afc1 src/openrouter/components/updateobservabilitydestinationresponse.py: id: 187c51d2b3a4 last_write_checksum: sha1:cadc62b37feddb4281e471d15627a9a1bef32cb1 pristine_git_object: 95abc42170d9ebeadee791d15c2bbc643720f1dc src/openrouter/components/updateworkspacerequest.py: id: 78d86b3b0a63 - last_write_checksum: sha1:0dc21aeddda84729d3fce7ef38e1cd5798eacf99 - pristine_git_object: 8271be1596210a1c6efcf3d5bd0f132ec1e7d115 + last_write_checksum: sha1:ff25d835cf026e5401004b26067c778c9e85fe38 + pristine_git_object: f1569fcf850aeb022abbc604d6b5e206d26db6eb src/openrouter/components/updateworkspaceresponse.py: id: 46253fa9690a last_write_checksum: sha1:4708e7e4cbfddc34ffc9ed4808a88bb5b4a61ebf @@ -8414,28 +8414,28 @@ trackedFiles: pristine_git_object: 9a475c8ef84a0d5e731d6245354a983c5b0fe503 src/openrouter/components/urlcitation.py: id: fe4578e64ea3 - last_write_checksum: sha1:af1ca23af13d8d44bdd093b44f7d9ed9e8683070 - pristine_git_object: 04aa99c21f2b8226e90c1c6bab0ca3d4722932ed + last_write_checksum: sha1:6c7d8e616c55f8239c7bf46ebf237fa536b6c462 + pristine_git_object: a0491cc8fd3bd9986146cb1176e27d5b9c9beb60 src/openrouter/components/usage.py: id: 965ca6748bf6 - last_write_checksum: sha1:5f86e0218099e33187e8238eebd3bf1aef5d6c74 - pristine_git_object: b140a02148be319bb2aeb0287bdd6e031ad6a3a4 + last_write_checksum: sha1:859ca57d253deee9ccf672095bbe59b52df571d3 + pristine_git_object: 62c5e14fb1646a51b213ce3b5f822d0dc75ad979 src/openrouter/components/videogenerationrequest.py: id: 70e3c9ff288c - last_write_checksum: sha1:1e17df29049bc37407c363437f28cd56504ff88e - pristine_git_object: 230d48746fee477d943c6b9b01bbe5242dc1c95b + last_write_checksum: sha1:bb81c3a4684e20898148e1415980457732da28d2 + pristine_git_object: 1f383a973b0d3f20605db372c24c9e9204c95d85 src/openrouter/components/videogenerationresponse.py: id: 541f1321b072 - last_write_checksum: sha1:051ace67776106616ec4c8e55cf2df9a99855d0f - pristine_git_object: ab182a8151bf251a7cb587e3a8dcf07337a468e9 + last_write_checksum: sha1:18c3aa7845f63a9614286b1a27b6098eae1c4951 + pristine_git_object: 2b0301ba6bf8c85efd8d85145cf39e4f0d8c5bcd src/openrouter/components/videogenerationusage.py: id: dded36eba597 - last_write_checksum: sha1:eb24fec1c15bc48a958af8c40ac51ac1edf7a3ea - pristine_git_object: 2b555be30b2462ae3065ed6a78918ba764289dae + last_write_checksum: sha1:a19d286bfda3ca9a373128c5118f3e6715060470 + pristine_git_object: c6f80ef4af6effc740beb6e0f1abfee653340717 src/openrouter/components/videomodel.py: id: a544a49f7891 - last_write_checksum: sha1:4d900058a40b08ca5ff6b1060c995befc79e9413 - pristine_git_object: 04170e1a7153868b8eef47234859263800b9c61d + last_write_checksum: sha1:783bcd7f4da21fc28da0e241eea621349e0fb378 + pristine_git_object: b5760b387fe91903005ba7f5346001cc15b51e8f src/openrouter/components/videomodelslistresponse.py: id: 2e9d1ce2cf19 last_write_checksum: sha1:b94977aa6941f7cf15c889f1b7cc69b50cd35856 @@ -8446,16 +8446,16 @@ trackedFiles: pristine_git_object: e4f9ca16aa1370113efe57ce1b4a3a1345a11b64 src/openrouter/components/webfetchplugin.py: id: 805ebc159f19 - last_write_checksum: sha1:b163f5009c5051b3af1e70ed5c5c5318b58d61f6 - pristine_git_object: 51bb7ff75edca06c3c72094b954da6a2eb587e24 + last_write_checksum: sha1:335f91ce69815c099393680a41d7d699bfdd4335 + pristine_git_object: b5b9fd4bf6d15320423dfcbfcbf68d88f7a6deb5 src/openrouter/components/webfetchservertool.py: id: f861247ea1e0 - last_write_checksum: sha1:76761dfd639356b765783eb5205226ec317a69c9 - pristine_git_object: cbd34b30aaef5cf4262526df86edc35287b10787 + last_write_checksum: sha1:3dd8b3e0c87b3615c30fba187ce353873b971924 + pristine_git_object: 41281b86b1f612cca0bcb6dfaccc63489042ca95 src/openrouter/components/webfetchservertoolconfig.py: id: 05cda975d2bd - last_write_checksum: sha1:49b23bf7e8d930bee11d9f4cc38765ddcc152b4c - pristine_git_object: 9b8cc5ce32dbde9b365e404efa3cecc12a981d53 + last_write_checksum: sha1:ba83fcd603576bbd2b7e36e40f5df4d9bd47f15e + pristine_git_object: ba34507f55158e509a76c60ccbd12d980d7f7f51 src/openrouter/components/websearchcallcompletedevent.py: id: a5818af2b521 last_write_checksum: sha1:538a39bf773415567086a28ff2cde66fd37ea763 @@ -8470,12 +8470,12 @@ trackedFiles: pristine_git_object: adceee794cf8135f5db3b2d741dc6e4de9c4e968 src/openrouter/components/websearchconfig.py: id: 3884d9509e8c - last_write_checksum: sha1:dc811c64e3524cc7e82b6582b2ef8266879bafce - pristine_git_object: 173266170f568db4643c24ab9094d0e9dcd20aae + last_write_checksum: sha1:c248e857a66dc84dd3bee697c38c5708f41d8b5e + pristine_git_object: 7478eed04a26073e0604c52d482f22df8fc9ef3b src/openrouter/components/websearchdomainfilter.py: id: 4a7307ed2ba6 - last_write_checksum: sha1:043839dada28f82b33f70534895e98e7ee6ce7f5 - pristine_git_object: 64d3c5f2138e19cbe4f4444e006ac826be48d808 + last_write_checksum: sha1:8754e3ef0b0c92fd72db36bbebada0d4fedb079c + pristine_git_object: 20bd1b8097661625894b73fb16eccbe5451e27f5 src/openrouter/components/websearchengine.py: id: 9e028088afc7 last_write_checksum: sha1:cd81a891b0304187d5abbb7e9972543333e51bf8 @@ -8486,20 +8486,20 @@ trackedFiles: pristine_git_object: aba36c1943f9b8e57d5e6f95d8b707263d95f738 src/openrouter/components/websearchplugin.py: id: 1d872d1792a7 - last_write_checksum: sha1:824232ea50b6befbbfae9537d44c42fa2b84b26e - pristine_git_object: 3c8e46d68d02d7b60ccfbfc9ebcbcc92a443bd54 + last_write_checksum: sha1:47e4951d6c60dc26e595ffd3e4eb032c5d3f3cf2 + pristine_git_object: 324037856d9c5a39675e4a2237eba61ac471dcee src/openrouter/components/websearchservertool.py: id: 32c7333e3c21 - last_write_checksum: sha1:9007ba9f7d118dd7dbd76337dd02958ba246c209 - pristine_git_object: bd0d3e0f376d973b578523860b9a3e032126fa5c + last_write_checksum: sha1:350594b998b01c6fcd074726458419f767e8446e + pristine_git_object: 353136f1fe350535582f8800b4c37b606eead82d src/openrouter/components/websearchservertool_openrouter.py: id: 3fcedc999f5b - last_write_checksum: sha1:81c68c3a06f55fee5b6cf18730f3bb0141d168a4 - pristine_git_object: c5717ed5a3d7adf2ef2777ed76233365c1d5b443 + last_write_checksum: sha1:d5c34450670513a4fed73afc86670fc77f19a247 + pristine_git_object: cac816de64f204cda6c706eee57f0d72b8b860eb src/openrouter/components/websearchservertoolconfig.py: id: ebdaa99d47da - last_write_checksum: sha1:320e97195a43445ed95326ff74030dff5e92723b - pristine_git_object: f48839e652a6ca5c851539956081107b74580c7d + last_write_checksum: sha1:5f9c19c63541cde91a2616be6ba8b90d6d96e39f + pristine_git_object: 8928f4994e491abd85589b6fc9a8e8b68726cec4 src/openrouter/components/websearchsource.py: id: a1fe81b68a7b last_write_checksum: sha1:fa30e5813682231d742fb6861f0fe92f655c8e81 @@ -8510,48 +8510,48 @@ trackedFiles: pristine_git_object: a607c88285f5f8b8e0f057750cde1b6cd14244df src/openrouter/components/websearchuserlocation.py: id: 26eff9609a46 - last_write_checksum: sha1:060077a0757338ae1b6bbd3d194b4771b6e08c90 - pristine_git_object: bdb5b03c5e524404f4aeb7123b0410b645ac8a74 + last_write_checksum: sha1:30cfffec9ed7c8c74a3e3efb721b8c2376ea1e3a + pristine_git_object: c2eacfc660e060ec6efb6ce4fd2a2f2e453081dd src/openrouter/components/websearchuserlocationservertool.py: id: 34efd6600d16 - last_write_checksum: sha1:d283241abfbab4b0d36dbba7b6ca227c0403e375 - pristine_git_object: bf4bb709e49cc25a82b441246ed709308a1360c2 + last_write_checksum: sha1:f81b1f856254c0368a9f207b898e2a24e2c1a2b4 + pristine_git_object: fda00ebca117e6d3accc21c5252351f77cf34692 src/openrouter/components/workspace.py: id: 682282304bd8 - last_write_checksum: sha1:ad9199698aa5679829b846839c25235b3039f457 - pristine_git_object: 583db0c55612de3aff4fcbad1983d489eed9bbf0 + last_write_checksum: sha1:748e9bb8f30836a9532e53ca99fa542d9e505039 + pristine_git_object: 14a3bf113337d9a6423f15449367b710eb37a632 src/openrouter/components/workspacebudget.py: id: f80c6983502a - last_write_checksum: sha1:309911d5acdd7e25aee8fd071f6e0b7beb6a3470 - pristine_git_object: 4f7d4793b398f3f352b91f7bcbc702bb9252bd95 + last_write_checksum: sha1:14f6ab02291a2222836247463c57ed42d568a6a9 + pristine_git_object: f5b0bc94ab254047f463f39337dc9a773afd76be src/openrouter/components/workspacebudgetinterval.py: id: 44cdcfecb7bd last_write_checksum: sha1:24f6ac0bea17f6fa1b609e6363b7d4ee828df302 pristine_git_object: f311c83dfdce68e803f5dc23e12c639ad0031be8 src/openrouter/components/workspacemember.py: id: b510f727fe9c - last_write_checksum: sha1:63595d8ce7e9df050f1bc97f7cf70b4215da09d0 - pristine_git_object: 9ece87803cfa8b3ab38c0dffdfbd8de176eaaed5 + last_write_checksum: sha1:cc6c8880763f294494616a3daa84c8822d4e3f08 + pristine_git_object: ad78361d147d2edb7b5772c14501d9c25a2000b0 src/openrouter/credits.py: id: cdc961937101 - last_write_checksum: sha1:2d49b088f5895c7d1b3167d6d99d304221812fb6 - pristine_git_object: 0a376fb8ee2df0be8546458e0008a2fbc0fd492a + last_write_checksum: sha1:7ac37671d3de537eb98f15239d531e3ab3928a59 + pristine_git_object: 791cdeba11d6c5e9e9381760fd8cd8ca86233b22 src/openrouter/datasets.py: id: 2378f80d1d6a - last_write_checksum: sha1:057b0dde4e051f2cf5cd9fd5b82bbe45eb8fafc5 - pristine_git_object: c483912549b3243f73b300bcea343914e66ef211 + last_write_checksum: sha1:a2941625198705ff1585bb7e8ae7ba5c110d43e9 + pristine_git_object: 04200589b12afe8bf67a158b99c7b9c11e4dab5c src/openrouter/embeddings.py: id: 0374ace39067 - last_write_checksum: sha1:8622e7717ef639f2ee452d295c4b2c957a2fe13f - pristine_git_object: d8426527b3d4f0d8b9398646f1b701b4cdfa7dc3 + last_write_checksum: sha1:bdfaf3f9ffa1e337c0cc62b5a956a53c7863f24d + pristine_git_object: 9f0b5ce3612b8e56070f8cc69e890aaeb98491a9 src/openrouter/endpoints.py: id: 465bbf2b7939 - last_write_checksum: sha1:fced76a1fcb464e0375bb2b0ba848535f34df5dc - pristine_git_object: 871bd5b1b9a164b36ae2047afd20cfeba88828a1 + last_write_checksum: sha1:0c4ec93f6309edfb7f009679c04f59fa2a62232c + pristine_git_object: f9537f6f4365d21e42c662bb995e88b7fb5a6f06 src/openrouter/errors/__init__.py: id: 366154d0d60a - last_write_checksum: sha1:84e5bdd52a3e99fd8bbbd718fa4f075ae0df4f64 - pristine_git_object: dc5ef68c20dea9461abf913779f5f0e21defc829 + last_write_checksum: sha1:6d4e463d60596f3eaf527d5ae08577a3b17337bf + pristine_git_object: cfe7cbb6a75e5b5eb3b25b630ca206f5654d6742 src/openrouter/errors/badgatewayresponse_error.py: id: 818c3605ce23 last_write_checksum: sha1:abf8470143de24b708943ca1fa0b7bcb2b4e84b1 @@ -8630,444 +8630,448 @@ trackedFiles: pristine_git_object: d858f3b578b189d20b89d0dfc1a6b829ff5897ff src/openrouter/files.py: id: 7baf7ee1f5b3 - last_write_checksum: sha1:8186736d2d9586f07ba2a236e9524f171c466ce5 - pristine_git_object: 6af040bba3f2bd74a5950e073ef02d0e9a3c473d + last_write_checksum: sha1:0835637e39ff5f43fd04f2b428c861c87d1963be + pristine_git_object: 0c46d08795e4f68a47d310d5636e004fd9088208 src/openrouter/generations.py: id: 70e1c21042bc - last_write_checksum: sha1:f7df8719bf188b05a29b8694e6c2db7adb262bd3 - pristine_git_object: 409e169fc5f43a0eea65b7568588c25c82abb46a + last_write_checksum: sha1:c513500d0aecefad46e4e791094672dd8a31e6f2 + pristine_git_object: cecdd21a8e07352f8fa8d44e9018e01dfd918a99 src/openrouter/guardrails.py: id: 705839f34e66 - last_write_checksum: sha1:137f03185776ee3f734609612e37aef1d3e2f178 - pristine_git_object: 50249a344d342b955acdcaf9796466b9e8c3a1d1 + last_write_checksum: sha1:e525be9e5746b7b1cb6d170ac74cce37f010004a + pristine_git_object: 4add1c7f1f5608569227ae476d820fa412e33745 src/openrouter/httpclient.py: id: e9311185443d last_write_checksum: sha1:5e55338d6ee9f01ab648cad4380201a8a3da7dd7 pristine_git_object: 89560b566073785535643e694c112bedbd3db13d src/openrouter/images.py: id: c4d7adf63ae0 - last_write_checksum: sha1:b936333eef102e8b53441ab985eb259c73712131 - pristine_git_object: e96036fee4a23a6b204dc00594e17e9ae875e19d + last_write_checksum: sha1:00ec5394bd5507e972b99d119ce27e8b3a0d47b4 + pristine_git_object: ebdec2dfff7323a1abe95b3143396cc0a91deb6d src/openrouter/models/__init__.py: id: ed73b93abb3f - last_write_checksum: sha1:fd931d5c2d58b5f9189cc897e038d6d78e362dab - pristine_git_object: 726fc5eb391035492b4bea383d91cb7e23da04d3 + last_write_checksum: sha1:932a790ae66ccd7d7022b39c659bcf72a664ebea + pristine_git_object: 77e06a0c81b1ba9619b7a61341015304d678abf3 src/openrouter/models/internal/__init__.py: id: b60fa9c4293c - last_write_checksum: sha1:5beaf7e5a713d3eead465c6edcfdeb7f8076175c - pristine_git_object: e7070a1222c2ed3fa3f6f54e6f122cae7ff9a449 + last_write_checksum: sha1:645614c353010830c3a28359d170ce3f3fea3c20 + pristine_git_object: a661631dcd716b1c9d45650528d6b038f463731d src/openrouter/models/internal/globals.py: id: 1e9d361b36b6 - last_write_checksum: sha1:2bd2439b5618dfdae8069269f37e726c4d6f8ab8 - pristine_git_object: 701741bbf61e70c9dd84199249f2aa1192c30a18 + last_write_checksum: sha1:e75583988683684a4fd8a5bcb0a1aaf4bff097ad + pristine_git_object: 5b741456655ff48919d17ffd552a6410f0587966 src/openrouter/models_.py: id: 4e1ae1fe5b98 - last_write_checksum: sha1:a7c6147e39e65b8f095216fa688db975b208c000 - pristine_git_object: fa1d34325bda6a2f8125735bb0b14231dfa218b4 + last_write_checksum: sha1:3c9aa7ec25ebd7cf7eb43a4d31cab845658fd484 + pristine_git_object: 02dd1c2072829766214cfdbcb9a3eb098f282e33 src/openrouter/oauth.py: id: 1948ce27255b - last_write_checksum: sha1:5e44e649bd946fb42c10b8a8f8fb9b6d894278e8 - pristine_git_object: 185de12d9f87d04c4fb7f0ca8c54dba9f62924d8 + last_write_checksum: sha1:8d6ba30594d5674164f045d6655914b801268f72 + pristine_git_object: d6a938412d5c82be874e958ba4a3043bd46284d3 src/openrouter/observability.py: id: 6a17f32d3f33 - last_write_checksum: sha1:1e31c36f61ec2a2c224c6ad0b0f5b2a09e758a3b - pristine_git_object: 37ee42a638f5fce69fc7db1e6b86efb51f381582 + last_write_checksum: sha1:760a86891fad356e60d36c619e02d7c710f10d70 + pristine_git_object: a1dea9b45650cc42a6f60447c032fa46b102839a src/openrouter/operations/__init__.py: id: 9afcea1e7161 - last_write_checksum: sha1:3c7911bf0b16974fea948f5f28471866c933f4d4 - pristine_git_object: 8bc044fca36a2e72d87795ebafe99c9f43e38312 + last_write_checksum: sha1:a652e6a05b4685dff3a016965467f2b90b862c05 + pristine_git_object: a79839770301dc301204149ff14f7f8945122b0c src/openrouter/operations/bulkaddworkspacemembers.py: id: e0ed56117619 - last_write_checksum: sha1:2b9c73dd8a24d6c479d50118a309e4e0969ca7ea - pristine_git_object: 32dcfea12b195a499c91c55aee78aaa0144e60e0 + last_write_checksum: sha1:5c44eb0d40fdece3ac084615f6c6082be4cf1d5a + pristine_git_object: daa5e7d796465de841eb4196cc453b575f38bbbf src/openrouter/operations/bulkassignkeystoguardrail.py: id: 6d8435d51d9d - last_write_checksum: sha1:2136b0223191e5d8159c77cff06845958930184e - pristine_git_object: e0401f525afe24f77e962fa5e64994b6c5ebe2ce + last_write_checksum: sha1:3fc81414be744f2f496ae26c4f0ff161e41808ba + pristine_git_object: 72a2a89db4099ce31090745e59dd0112c10f2ebb src/openrouter/operations/bulkassignmemberstoguardrail.py: id: 079706f81038 - last_write_checksum: sha1:7c8fb1abae40f33c8d467f73b3779503469cad1c - pristine_git_object: 80a1cb770eb34221c7691abb44849bb6db23322d + last_write_checksum: sha1:518a4f77ffd54d28cecf03adb4bcd42a6dbcdd24 + pristine_git_object: e3a4c9099b42ea25e84618e58eaf9fe9dae5d1ec src/openrouter/operations/bulkremoveworkspacemembers.py: id: b5f68d465d4d - last_write_checksum: sha1:1fbd3d2660a4261d12c97b464bc445f4dc24c891 - pristine_git_object: fe0ebfd7d6f5e748ba7105c848c94fe3ed6598ea + last_write_checksum: sha1:a798060d0316f356eba1ce9c75cc454a7233e8ba + pristine_git_object: f9a80e6a1aff29c2f531515a194fa9db31d7cecd src/openrouter/operations/bulkunassignkeysfromguardrail.py: id: 006249615b0e - last_write_checksum: sha1:88df9d073f73c7d1f0fb70e46a109b17f84f04e8 - pristine_git_object: 4f4862308bc488f32696cfe91a5110b7bf28ce39 + last_write_checksum: sha1:ae582c12bcc139e6fe9e5fca683aea01f87ed607 + pristine_git_object: d01945a57e80e66931cdfc22cde669f0db901b09 src/openrouter/operations/bulkunassignmembersfromguardrail.py: id: 8127aafae1ef - last_write_checksum: sha1:a4c24a2e84c611856ed0ea45168b31cd5b8e1dd0 - pristine_git_object: 3613dcf6d85a45e916983f238cd807695433b401 + last_write_checksum: sha1:7e1a34d0a1629bd6ed183a85b71a6897202a02bf + pristine_git_object: ff2fc0c099bd5ade18b89e6d39698293ae65e87c src/openrouter/operations/createaudiospeech.py: id: af9df6195878 - last_write_checksum: sha1:a3bd0bd212bfd34631dfd07b265f3be23e0ef458 - pristine_git_object: dae7b28a11b1c100ddf9c66f175d0d583a4506ca + last_write_checksum: sha1:5beec05ba93a68805ad27e05603265864a608dc9 + pristine_git_object: fe1cbc4a51e44f1e9cc5b618664b7a4d11a51bc5 src/openrouter/operations/createaudiotranscriptions.py: id: 53f76e1550e4 - last_write_checksum: sha1:f72d4be6f461aa2d12344394c1d8492f9018e035 - pristine_git_object: 01441144f8433569cb0846df23bbafc9b790a1de + last_write_checksum: sha1:80072ad426adddceec1d13756ba0c239cbad7014 + pristine_git_object: 4e8414f223370bff1e4f060919f36f70da6ec40c src/openrouter/operations/createauthkeyscode.py: id: 4253a437de22 - last_write_checksum: sha1:87f7a4f6bceb89cec0c961e4ed57a20918a0b603 - pristine_git_object: 344b269c059ecaf93f8858694dc85e062c7425b5 + last_write_checksum: sha1:874492b64266fcdc5a7f3cd988d71326b7796a5c + pristine_git_object: 84a5dc9683502288ce5ef4b508c8f13b1a396bf5 src/openrouter/operations/createbyokkey.py: id: eaeefa9fe0c2 - last_write_checksum: sha1:856828a03093b93a93edcc907531057f473e3447 - pristine_git_object: 523d24efa869d63a145167b94e811671b84c5cfb + last_write_checksum: sha1:7e371b512bf4d80820881e0dc1868cb0861ae2ac + pristine_git_object: d96c756e911994eaf6ef695a059f7575d69ff63c src/openrouter/operations/createembeddings.py: id: fe1160a960e9 - last_write_checksum: sha1:55a231d6e9a2f2a76c3fbc1f8af893e393e08bc3 - pristine_git_object: 6459cab7e1a597f5a1b24f690d845b4ee8809236 + last_write_checksum: sha1:b268603b5bade55ac49a04e3ce217858ab3174b9 + pristine_git_object: 699e98674ffe69fea3bd1b8df9383cd558884c19 src/openrouter/operations/createguardrail.py: id: 52ed4b2f5903 - last_write_checksum: sha1:119141c01d19df6b6d090b67f80145e3bf4d4d60 - pristine_git_object: 75b9661b38be99f2a067eda4051592111301bed1 + last_write_checksum: sha1:d4351fdd66f1fa2bedcfc9a974c7f4ff6c68a6bc + pristine_git_object: 15a2748b29de7795c7751cd6d9d171a85ead1d83 src/openrouter/operations/createimages.py: id: ef9b8b32ed45 - last_write_checksum: sha1:d88655f88d52b99844fd4bdd2a07554543f3ce65 - pristine_git_object: dcc89c263d4ade2a6cee42a3d42c343546cf313f + last_write_checksum: sha1:a1a8152a7c5a29004c17a9eed5b796a69dbe9db6 + pristine_git_object: 8216a656ec1412a034878e257bd9de9e94fa8da1 src/openrouter/operations/createkeys.py: id: 64ad31fdaa6c - last_write_checksum: sha1:41931fecbca34b228d5fe6230810eb6bf9271250 - pristine_git_object: 6d18cf707841629cc63ed2ed56aacd67f639a717 + last_write_checksum: sha1:1a2ca941bdd6ba1ca36ed801469564c5ae886e83 + pristine_git_object: aea3bdb497d2d0bc6d38bc8858eaccd15b3532fb src/openrouter/operations/createobservabilitydestination.py: id: ce29c303fb0d - last_write_checksum: sha1:b5e942c26b5cffe3a0fd0f44fbdde320f25305da - pristine_git_object: 3f22b575217335f5c8adc1bd1583c31a0920eba4 + last_write_checksum: sha1:b9dfa5198721adbca45f48b7fb632bee09780fff + pristine_git_object: debb2873f91e98e56a12c112f59f1c7634dfd4df src/openrouter/operations/createpresetschatcompletions.py: id: 946ce40bf5bf - last_write_checksum: sha1:221fc298430723f7899e0118a88aea00fcc76acc - pristine_git_object: e1ae37ed7a64ee216d45a45f16028f6257d89473 + last_write_checksum: sha1:89f255f235167dae2d4cd41ba0e8c49cab7026c2 + pristine_git_object: 2bcf91e05810e50c395875449e273dae5afb49ff src/openrouter/operations/createpresetsmessages.py: id: 62021b3fbcdd - last_write_checksum: sha1:79ce90ae1e5a1b792eec146bbcebc638675a8765 - pristine_git_object: 0b7172f2a37cb7fdcbe2a4b2ba98d73f0bbafc41 + last_write_checksum: sha1:ef33fadff276b4626c2ccc7d5f38361b33011f8d + pristine_git_object: 90392c9cc65b122ca8774c1935960f2888c64ce5 src/openrouter/operations/createpresetsresponses.py: id: 42f8d73c9c81 - last_write_checksum: sha1:71d1d253871a1184c8dfc9b96b2fbbac58d9f000 - pristine_git_object: 7dce093fb03ebc70fe263f21dde6c5e7c2ac47a6 + last_write_checksum: sha1:05916f443a7d08b3f5a86bec00b617e267f59e33 + pristine_git_object: becc8c5f5af5402ce510eda9784ba2ff675d6a94 src/openrouter/operations/creatererank.py: id: 99b5d368a168 - last_write_checksum: sha1:ea1518fd51b909230af090339f512d7f620d6e16 - pristine_git_object: 3e701dc377bc2ebc9a92261129a70952cdde4bc3 + last_write_checksum: sha1:a4d3ecf4ffa75b4d66563cefa86d1582624ae128 + pristine_git_object: 3786a979e8f38a527b3cdfbd08798f67948a9480 src/openrouter/operations/createresponses.py: id: afb834172b62 - last_write_checksum: sha1:4526e1e256c74c89f40e9e68074a52ce566b37a0 - pristine_git_object: 8f95daa0dff26dfbd6c0e19775665ef548102ea2 + last_write_checksum: sha1:3cfb72d6b7dc9c55dc3955b53b0a7326a11f4688 + pristine_git_object: a0925b14a4c830b168dd050798329cf364122091 src/openrouter/operations/createvideos.py: id: d52f6a4a3fe4 - last_write_checksum: sha1:12507b8087961d8efe67590e8c5b93f47a9d1a23 - pristine_git_object: 3892fc759bd022cdbbaf830f5f20f655131a6d90 + last_write_checksum: sha1:dbcf7068a23f48a5d4cfd9c8150206731a40cc9b + pristine_git_object: 237b8eb3903791681beb0ef12f6ec14a1a98b76d src/openrouter/operations/createworkspace.py: id: 690a809c4592 - last_write_checksum: sha1:897268bff3352aff34ba62f6622ee3ba17406752 - pristine_git_object: 1757be8d72bad9c0076d5492babb798eba2b5582 + last_write_checksum: sha1:9fa9c78f3885742f76db1a54deefdfd192fc9c49 + pristine_git_object: 15b96d1cdb7b54e4c9d14d443779be0b619b0e4a src/openrouter/operations/deletebyokkey.py: id: b1b2c6b06913 - last_write_checksum: sha1:c6e283d2af7bf36388aaf91b6bd433b1605b2ca8 - pristine_git_object: 08c3b34c3f8fe29087074fa2359080b3637af8c6 + last_write_checksum: sha1:90aad5198d43e289d99c7b2eb66353de7593a68b + pristine_git_object: 2148ca98c6cde1506783e9c5f2f522226a27e428 src/openrouter/operations/deletefile.py: id: 7035af059141 - last_write_checksum: sha1:0b9bc5395e72cb1a00240cae9643defcde0b4472 - pristine_git_object: 961175c5f8e02c50f4f2f20a3e0935f8bfad0fcb + last_write_checksum: sha1:4f596bb18e5215da2066466ec7b6be7374a64d44 + pristine_git_object: ea64b3b8d043b0c5593817d7e7a7abdbcc96cb05 src/openrouter/operations/deleteguardrail.py: id: 1fbdb98bbb85 - last_write_checksum: sha1:e245a5061592daf839d38caace9cc38abbce879d - pristine_git_object: c69e9ced3d22240edafbed449752f6d6a09fa649 + last_write_checksum: sha1:9205bdbe64c2902d51ac7c6bddc8677af5b14ed7 + pristine_git_object: a8c58e7fa8dd7e781d70c87ecc427f3fdff59ce9 src/openrouter/operations/deletekeys.py: id: 0bd72d53b0a0 - last_write_checksum: sha1:de3ec2a557ba007482a9d7ecaecef00cb6ead537 - pristine_git_object: 51d48818bce022ab5e9514ea48429e3aca75e997 + last_write_checksum: sha1:afcea9fd7d8e963f8a73c4f025b83bf6455dd45c + pristine_git_object: 998021c4bbe713d9a81ebb79348e6f9e246964bc src/openrouter/operations/deleteobservabilitydestination.py: id: efcdc4e7e19d - last_write_checksum: sha1:022cfc9eedb230a84c9994e788ebb074df8042d1 - pristine_git_object: 865b4d17b94571a016e9971f7288f2fb0747957e + last_write_checksum: sha1:975fb2edbcb96c6e890d1ed6ce2101ae261600d8 + pristine_git_object: 92560ae6d7ad4399f3f1f8a2bf9347ac5f0d7283 src/openrouter/operations/deleteworkspace.py: id: f92017ce65e8 - last_write_checksum: sha1:ac9aa22002cf938a69643dac44c38ab7d702c31c - pristine_git_object: fbfef8826b9993d95d355ec0335f943e97a75bda + last_write_checksum: sha1:4ed5d02547fd400d801117e13ae108f6256fc591 + pristine_git_object: b27b1bcfab51efa2b5c42021ad5580b6cec06204 src/openrouter/operations/deleteworkspacebudget.py: id: 4043f35925db - last_write_checksum: sha1:f3997826fa17abb166a08eeab99d3c27dcabb2a6 - pristine_git_object: 7b8d62d7e25a78951fdd6b24f40be4172b912351 + last_write_checksum: sha1:1b6fd5acfd6b53525c8dcff26148535d5acf0401 + pristine_git_object: b61191d8c3c9ab9da453e46c871231bda0e2628c src/openrouter/operations/downloadfilecontent.py: id: 6ff3d391a23f - last_write_checksum: sha1:a5848ffcbfeaa295c496e3a5a5527a7d236e6c4e - pristine_git_object: 3d4be3f79e0f677bd91164894c8a45d161bc6fe1 + last_write_checksum: sha1:0f210f7c9b84c8c8e3ab32ae4ad16b6169880ccb + pristine_git_object: 8da6ef059396e5e5127957f698930b4737470e1b src/openrouter/operations/exchangeauthcodeforapikey.py: id: 37bdd1517a07 - last_write_checksum: sha1:963c95a165a35ae235d9b03d31c4e029de0246d4 - pristine_git_object: 4e4295d69ef4c06a932c3141568c61cb72ebee4c + last_write_checksum: sha1:fb531dadbabcc38e5a57b0bd3eda846790fac93a + pristine_git_object: b6895f4b95be5ea3777e7b3004cd267795637bf9 src/openrouter/operations/getanalyticsmeta.py: id: 013673a37aa5 - last_write_checksum: sha1:decceaad3f96dfa3d433a8ca8a4e5fcf2c8b408f - pristine_git_object: bdec790c32149d39da2defaee9b2e0e27711e32e + last_write_checksum: sha1:800b8064b10a9323e0ab4e5b983df631bac8c2df + pristine_git_object: dc728a09fb420c00c185bcffec5fc2e2dab64d1d src/openrouter/operations/getapprankings.py: id: 5ffd23dafcc1 - last_write_checksum: sha1:c9011252cc7862d8c35b4ff2f3c82003c98953de - pristine_git_object: d19ef64ed4dcc19027c95ba19c9b37ed301ebb72 + last_write_checksum: sha1:e0744bc48799da7cccfcef8e5432c59a59aab288 + pristine_git_object: e5f42ea07b617b12dff18f2a067bef66a81f35e8 src/openrouter/operations/getbenchmarks.py: id: 5fb88644491e - last_write_checksum: sha1:03d0020dcfe87f6f0d8e9a36f6374ec4bba3f8eb - pristine_git_object: 480c2f31a1714ecdc1e83b34fb2a1fca0be5aa99 + last_write_checksum: sha1:dd712e430db5c813a352a711430da516f17381e6 + pristine_git_object: 493d52d35d2e11943a848c1186605425ee2de8b5 src/openrouter/operations/getbyokkey.py: id: d141452bd88a - last_write_checksum: sha1:16c33afc84cd0d3a68e977e739a59d14dfd3bd44 - pristine_git_object: 04945fd4eb11ee104cafcc6a06730b3f1c52a9e2 + last_write_checksum: sha1:d6d391b230d90f51945144e63e9c53772650bd7b + pristine_git_object: 6021faa4de45bfaf200eca955b62f4b5b3113804 src/openrouter/operations/getcredits.py: id: 83155df53da5 - last_write_checksum: sha1:8b1eccdc3313fb35c0d5fdbfe63dbf64f35d460b - pristine_git_object: 54ebfd677a4050866cb070a1889169842f08f08a + last_write_checksum: sha1:89afe99cd26e560d8dabb211bfe37f97e0f80f45 + pristine_git_object: 0c48cd8cb2742ed71558ea6d9cd488ccccd74e79 src/openrouter/operations/getcurrentkey.py: id: baf3e38db22c - last_write_checksum: sha1:9d59301c91d1a0056c8817195ea4e33d0ca68a08 - pristine_git_object: 2d26173fd7e4555e188999eee1e282e85b68c73d + last_write_checksum: sha1:9b319545564a485e70d13d5396a7e9a62cad1f57 + pristine_git_object: d0062378b98ef20bf17dcc00a219edaa1da24424 src/openrouter/operations/getfilemetadata.py: id: 408c34486769 - last_write_checksum: sha1:c8eec522d3109c0c9376729fa438af918b2c29ea - pristine_git_object: 6a7ddf0774a233d065042406ca2067bd7b684ec1 + last_write_checksum: sha1:d2c26949cad5e845994a582591f439ac052d3052 + pristine_git_object: 4614554b2cb444352d81ccb398f414a566b03f91 src/openrouter/operations/getgeneration.py: id: d7c64961334f - last_write_checksum: sha1:7c919236caf0943f145d584024a85bb663f0e911 - pristine_git_object: bf21d05e955bbfc62ed484b566555bafe0049e10 + last_write_checksum: sha1:c593bd5ddf5d9d0424a4b84401785cfddc90049f + pristine_git_object: 2799b1f4d7b5855af3b621dc1cfcd41a8a24fcb4 src/openrouter/operations/getguardrail.py: id: 9b3309b59c64 - last_write_checksum: sha1:f83b3d52731324d0bc87c382196b84713e77f6da - pristine_git_object: e3a2ca2914e9add5060e7efa73dd268d5e32a9a5 + last_write_checksum: sha1:76d3d0f15b487afef177e4b5148bddb814795b0f + pristine_git_object: 3d69c1678d900400234631c4ace61a9f8354efc2 src/openrouter/operations/getkey.py: id: d9769da90865 - last_write_checksum: sha1:511b994a0bd1241856b06184f05433bec3a16733 - pristine_git_object: d2370a94a10fadec861d31e6fd1a9b2566e94d22 + last_write_checksum: sha1:485773a029e23cbe69b3e303df82995df05c693d + pristine_git_object: a614dfb5191b329723e78255517cdbbc51985698 src/openrouter/operations/getmodel.py: id: 90c926cd726f - last_write_checksum: sha1:f09d4d15678f12e6110cad664349f392f3ef9ff2 - pristine_git_object: e45056283604220d3395365bedfbaa1d1df13095 + last_write_checksum: sha1:3ba2f12410841c49e329821b8eaec5f87d5882c1 + pristine_git_object: d5a47b01285b12f05d46240e253a934be63f0a00 src/openrouter/operations/getmodels.py: id: 5bd5dfcb0125 - last_write_checksum: sha1:36ec35c9ccd82c18555c383a5c495b4b12ed26bd - pristine_git_object: eb0f9558006e935a60cff6a401e960cf29f7fcff + last_write_checksum: sha1:6d13fdf573bd5a4ff65484e3358d36d5f5e17a7d + pristine_git_object: af887b941b69db369b1623fd2a19abeef6ef967d src/openrouter/operations/getobservabilitydestination.py: id: 15b49f22aca9 - last_write_checksum: sha1:89cbc1ea42d52efd81f18ebe90094c204fbe88ad - pristine_git_object: 3a79bcb425563eb0cbebc8103d20966f07173654 + last_write_checksum: sha1:351b050b646c9e2dbffaf27633cbd38b30047169 + pristine_git_object: cb8301dcc5299e58abad699c2e27b3e78c78d70a src/openrouter/operations/getpreset.py: id: 8819dbeb2074 - last_write_checksum: sha1:d42d0b432018ea72a6c924b5d5e949e8afebc22b - pristine_git_object: d0889139102d911511bf6013e6ed328d122181d5 + last_write_checksum: sha1:035b83ddf36d83cba7892aac4763ee973f0f83e8 + pristine_git_object: 95dbd5c272049df2b34ec7a511858b2d017e917c src/openrouter/operations/getpresetversion.py: id: 220006e17d37 - last_write_checksum: sha1:8854b742529106290bcc2600bc3a36f0bc8f199d - pristine_git_object: b76d22dce4db994d55b6db8d7f174d3378aa381e + last_write_checksum: sha1:b7a8663b5a480eb0dfc5ede991ed40600c35b31d + pristine_git_object: cbcc9abe2ab38d7e7bd3cbc79acfda4da6b630e0 src/openrouter/operations/getrankingsdaily.py: id: 61dd0325de08 - last_write_checksum: sha1:4a96c332bdd9d5e9bf86b7bed29e65f387ea52b6 - pristine_git_object: 2e3cf71acfb8771108bc32503a5b87860e5f2d91 + last_write_checksum: sha1:a5953f86dfb31e77024412d02cc56b7a485fdb76 + pristine_git_object: efa494faf3208ec621c97b156196a27b1c61b018 src/openrouter/operations/gettaskclassifications.py: id: ba6156d68acf - last_write_checksum: sha1:2806a5eaf999c66cc50e57fa258b7c6ef06bd340 - pristine_git_object: 793d2ca73527fee34611019499c0b5f51b361758 + last_write_checksum: sha1:c569572d21aa766ac542d5c535208e8b1caae503 + pristine_git_object: a8b610cad3ca3792798e40b31cada48b0ed3845b src/openrouter/operations/getuseractivity.py: id: 560a0e01c2c3 - last_write_checksum: sha1:88c8f4fe8019dc79934cf6b566111bf34d4adb08 - pristine_git_object: 3e29cdf18f4cb933124841e7685f2a6956dc4622 + last_write_checksum: sha1:91bbb6f67fd71874baf0c61b8004bfab589385f1 + pristine_git_object: 35ab9ca4d75b4e37483cd379f73afdbaf0b60d3c src/openrouter/operations/getvideos.py: id: a5f626467a69 - last_write_checksum: sha1:00f000b3fab29247f632c12bcdfe71a579a2ee6a - pristine_git_object: 3a120ed0aacd7ac94b3421fc1439e1308d53f83f + last_write_checksum: sha1:007242bbdda9cb2f7d02fb6a04c5aa000d317a07 + pristine_git_object: 33c1a6954f0a39db00ca6c6cb6f0f99b4696eba0 src/openrouter/operations/getworkspace.py: id: 2ead327ab15e - last_write_checksum: sha1:d9c6371c14333537e74d326634bc2ed2dbbeb76a - pristine_git_object: f4d279e42c326dbda828b4a875cd152cfa0ae14a + last_write_checksum: sha1:3dff8a41dc00770f6233f94b8233655f8310bc49 + pristine_git_object: 1075e4c49f582db35eb921aa25d2b2baeb803dd3 src/openrouter/operations/list.py: id: 3ced31e3804e - last_write_checksum: sha1:aeaae46cbe0e9403241e50baab791212404b29a0 - pristine_git_object: bf9965a274d7249abb169adb43c8358b1ee73105 + last_write_checksum: sha1:122d025a3a5ac362ee969b2b0d800876569943a0 + pristine_git_object: cc90375e9aac23107e57e18e6adecc38f544e185 src/openrouter/operations/listbyokkeys.py: id: b6dd42b3e05f - last_write_checksum: sha1:d0fdaf6fac9d2364ee0b092f5808b85e1e03421b - pristine_git_object: dcbff9f3f4f59d1617c9c793c9eb1a212c313905 + last_write_checksum: sha1:ca0276ecb273e8b62e43937369d7b059ad73d9f1 + pristine_git_object: 2ec07724128bf2fb6152e84694f31b4234279e82 src/openrouter/operations/listembeddingsmodels.py: id: bf749a1f23d6 - last_write_checksum: sha1:654a4e7e7b486f1d321eeb11ef7a7fa928e501a6 - pristine_git_object: a4042eeccfd06d6fb1e5de741f1eb25e29347654 + last_write_checksum: sha1:19ed80a098e6e1b43bedfcccb11b4c8d8794541c + pristine_git_object: a019232d0cfcaccbca305f9d9aefccd0a5023df9 src/openrouter/operations/listendpoints.py: id: 62b7a5f21dec - last_write_checksum: sha1:a6d36bd19eac1f2a3f1142ded3f7fc928230d633 - pristine_git_object: e1cef6f827b14d7d0a9a52348563e0afa80a02bd + last_write_checksum: sha1:1aa9ca7cc8e0376cc77fe81403e2664ecbd1abb2 + pristine_git_object: 6f25eff59336f48df0ac3c184cd0df135bb1212d src/openrouter/operations/listendpointszdr.py: id: 588bf206e92f - last_write_checksum: sha1:6d8e90c542ae6344e403767a3a4f8ec5d1d4dc75 - pristine_git_object: 23e735db74e27dc35e80b2f72cf386b0eeeb116d + last_write_checksum: sha1:dd1cc08d8779d71a9ad80e0ad764fea72b3fb846 + pristine_git_object: f5bd1f67dc835230e6d282e0500cbf3b5781eab4 src/openrouter/operations/listfiles.py: id: fd89527f4236 - last_write_checksum: sha1:76a902a7cc595f6c1949a73068c72ebc0afb7b41 - pristine_git_object: 834ff78375ff803f605ed95a3e3f86f5961b3bc6 + last_write_checksum: sha1:89b86758d80347b2ac21f01eae0a835884527c23 + pristine_git_object: 75fdf629ea1573a1bf6962a862cecaa7c050a4bd src/openrouter/operations/listgenerationcontent.py: id: 2f086d74631c - last_write_checksum: sha1:922e30991bb7b3ef69e2672a2b969d74ce0b838d - pristine_git_object: 8d195009671fdd52cc86795bc1612fa3ddb79364 + last_write_checksum: sha1:d2792123b36f31d0bcb2ba00e1843a1b04287983 + pristine_git_object: d57feee9926b76b03d1ec5ed8655cde8310b8192 src/openrouter/operations/listguardrailkeyassignments.py: id: ee9d33f4de6b - last_write_checksum: sha1:51cdc972a09b21dc3610b634bd0837a8d3b5b249 - pristine_git_object: 1278683af12aa38dffba0433813102017117f309 + last_write_checksum: sha1:6837feb62ec5d172f6588933821232ad73fa08f2 + pristine_git_object: e7a2c31fb2451fbbc836d1356d156db8e9a7a933 src/openrouter/operations/listguardrailmemberassignments.py: id: e36e679b02ec - last_write_checksum: sha1:d056cb9d72107ca518ce627a5af27a15c7644eaf - pristine_git_object: c9c8c3ec5ea6ebcf1e160aa1e3ec41390bcbdfe3 + last_write_checksum: sha1:de031b827a456c84a7d92790fca5ddd06780aa7a + pristine_git_object: 84076b7480837071db3d745f0fee690bd7809a01 src/openrouter/operations/listguardrails.py: id: c99a9e7be93c - last_write_checksum: sha1:f82932a120516264880ec2defa377bb03a56071f - pristine_git_object: f91db9e67fe3a10b2fffd681a517a65eee4df8c8 + last_write_checksum: sha1:c908e642caa02b7904355cc6dba6f2c4d9a83d1f + pristine_git_object: 461e691429a7daea86a57f6d08df1bf4e9f78833 src/openrouter/operations/listimagemodelendpoints.py: id: 40fd868ead3f - last_write_checksum: sha1:a59e2ecd4a27fe12141b7dd34befcae00c1d6206 - pristine_git_object: 15c606cc2a3a7a5c6825124c9ea09c7f9a9c31ad + last_write_checksum: sha1:2f4ba55f45f8fe4b5ce56cb6781fa8db455f8927 + pristine_git_object: 900b5b667c40d718a33233580d21de0b8dbf9fb9 src/openrouter/operations/listimagemodels.py: id: ad2131e4aa6c - last_write_checksum: sha1:aefb1c9ab70ad8d1e53e2bd636807c12f4c5744c - pristine_git_object: e5c89ce75ede0c49f529ffced4a041b1d05d48f0 + last_write_checksum: sha1:b5bbcbd02ce54cdc8bb1a2a3a424ca93c73f90bc + pristine_git_object: 01655ae02036acf433ec5f54fd1d9323a55f0684 src/openrouter/operations/listkeyassignments.py: id: e26c11d1bd3c - last_write_checksum: sha1:2c4e9b2dac5566beb3b4f1331686ec45c174e021 - pristine_git_object: ae0bfca10fb38c10916c0420f78d3adf3706f544 + last_write_checksum: sha1:bade55d5aaef4f6d9437c24f0bcb39b645af05ae + pristine_git_object: 2aee3fc4636c77ba4fcf5884a4000a1a04ee58a8 src/openrouter/operations/listmemberassignments.py: id: a993b5549126 - last_write_checksum: sha1:b234a47a5b0cfad0cb47377ade93531c194dd4bc - pristine_git_object: 55c93baaa92a759cd94969ba1e79aff33241cd3d + last_write_checksum: sha1:f0aab0c649c589a7d76cdaa9bbe4f0529ade66de + pristine_git_object: f8e0b658a596aaab401ff4feb3fa633f56f831f2 src/openrouter/operations/listmodelscount.py: id: d588d81b71c2 - last_write_checksum: sha1:53314179fa961048fec7f4580962167c29020de7 - pristine_git_object: 3d8a59ac661eba1ad0fd192e0b58513435641be2 + last_write_checksum: sha1:359fe33759ae50d8180ab793a32b42045a28e3af + pristine_git_object: 797af26e7d4985305600eb79b3ede8e78379d13a src/openrouter/operations/listmodelsuser.py: id: 16eb5946cf60 - last_write_checksum: sha1:bf9aee7db7762dcd082791962b962940dc7e16be - pristine_git_object: d25eea81bff3710243fca5874e934c024ab1f007 + last_write_checksum: sha1:f77768589018acd0395e98b9a313933872834d84 + pristine_git_object: 6070772eb28a5452620eb4ebebfa2bc5c2310a4f src/openrouter/operations/listobservabilitydestinations.py: id: 40d2ffa975ee - last_write_checksum: sha1:e6214f3e639b5495977cb32a9b8a3780e4b0f8e2 - pristine_git_object: 02233af5e6ecda1c0351d0b294c137ea0e3f5d3f + last_write_checksum: sha1:3f7de2adcba23902d0abc08728d82bb138fa93d1 + pristine_git_object: 465e357cbbb90b0d1be4f7e223332bc14e5deb71 src/openrouter/operations/listorganizationmembers.py: id: d40a3e0e2b38 - last_write_checksum: sha1:201eccb7b2352cfeba4e2fb05dc23ae2ebe92e6c - pristine_git_object: 6d918f6f02ce6f0690ec93314d5982f098738b27 + last_write_checksum: sha1:d36b77a9962c1808572789f535a04acb51e64685 + pristine_git_object: 15662f480a26a6b35a299d2845556ac4b8bbddf1 src/openrouter/operations/listpresets.py: id: ecdc7097aab7 - last_write_checksum: sha1:3739d378e7fb4142e0dbc5978bef54fbf2f77066 - pristine_git_object: faa98f18e5dde101dc43834814cf0aadd2866c31 + last_write_checksum: sha1:5f23af709ff305b4a1ddb26fd972a080a9c5d134 + pristine_git_object: bf21a246c75309e027a8ee69eb19f610a26af61a src/openrouter/operations/listpresetversions.py: id: 697cf707300b - last_write_checksum: sha1:ba246bce7d15d2e52fac15403891aca8bd86e391 - pristine_git_object: 48185b77921c712a4f32c17421a9192e98be8cd3 + last_write_checksum: sha1:47eabd5ac45fe37bc05f0c57faea512fcb6b1c05 + pristine_git_object: 36052fb3de83cfafd1c021ac8ebfa56110eb55af src/openrouter/operations/listproviders.py: id: cf6e2db15118 - last_write_checksum: sha1:384fc4522eedd74a186ed24077a116ef2b77dc42 - pristine_git_object: c4e51800a7c11cb8c6f74e485c0bec84016915ce + last_write_checksum: sha1:decee82d2b55738162cc47f02f56c592d53f9ee9 + pristine_git_object: 80bcd4b8e5d9e5f92ab4375175d6ee3a826a2e94 src/openrouter/operations/listvideoscontent.py: id: c27f9deb98f8 - last_write_checksum: sha1:d677eda0c9d826b1e9b391c27c3d9aca1f7c75f2 - pristine_git_object: 5ca3eefcbb9a2246615691514562083c63a7c213 + last_write_checksum: sha1:7eadc5d4d5f52469c09740d08f56970fafb407f2 + pristine_git_object: 410bfaa47422156064f54f6db11801ff6e335a56 src/openrouter/operations/listvideosmodels.py: id: 77ba4890284b - last_write_checksum: sha1:9bb93fb1d1d71effb5f4dc58cef9d7b2265a92b7 - pristine_git_object: d1497b8429e19d06cc674940e2641b3ed2222ca7 + last_write_checksum: sha1:52b9479599cef9511b68b6c1f5561a42a039bbe4 + pristine_git_object: 8ba436e2c6fdebf05777a000c7eb09586462a0af src/openrouter/operations/listworkspacebudgets.py: id: 1310fb7e01a9 - last_write_checksum: sha1:4d0ee7fb9e5b8344fa5ce67610f025e4ea3d5638 - pristine_git_object: 266dc8cc98d784363d63541ae064034d424f0d13 + last_write_checksum: sha1:83b3e498943e3c5a239e2c50e9d417b1f5d227fb + pristine_git_object: a65454da5ec6727d99312d56c64324edd8615685 src/openrouter/operations/listworkspaces.py: id: fe94c6f61835 - last_write_checksum: sha1:d8845cc07779359b6d9b29ff4a2367e8c8eeb942 - pristine_git_object: 236dc188826db184deca4a749dab47e58c3dd637 + last_write_checksum: sha1:2458a0c8d4834fa046496a68620b66c5ba55d927 + pristine_git_object: a242ff323f23dfadad254b76440114e66db4e744 src/openrouter/operations/queryanalytics.py: id: d76c63ff66f6 - last_write_checksum: sha1:98dad6fd5c6ea5ff4e6c8cc322f401b86f608335 - pristine_git_object: d994e559237bc03c0bb51c739ea351b1031d9d06 + last_write_checksum: sha1:7866c71f371c0dbf9e1cda9be336bbf1d0e30ac5 + pristine_git_object: 705a3eaf0ce3e1b7cc9af6f96dbbed4fe0f67f50 src/openrouter/operations/sendchatcompletionrequest.py: id: d9fee71bb577 - last_write_checksum: sha1:130a25fdb3f44490b68ca99153c0cccba25db87e - pristine_git_object: cb1c3b3a4fc4819a912f052fa779cba9fd0bb191 + last_write_checksum: sha1:0cba4011b8e305270ac30f88cb7ab59b6aefe619 + pristine_git_object: b065e38c8d449348c4d133004653607e4194da6e src/openrouter/operations/updatebyokkey.py: id: 486f4ea60120 - last_write_checksum: sha1:abf8f1f9145140813a1f96d90b728577f0ffaae0 - pristine_git_object: 1bf28a90e5f22a789112a93c9848f78233df156c + last_write_checksum: sha1:a170382e38c66128bddbe8ea18c034d1350910da + pristine_git_object: cf8b4ee9febb198afe12c27d03c72902eaa8baf0 src/openrouter/operations/updateguardrail.py: id: 6cfb33d7d40c - last_write_checksum: sha1:fa9ca7390db4e4b45d514f821c008748af8e4c8e - pristine_git_object: b3675a1d1a828f26750e5b7ac98fb7cf42ed49e1 + last_write_checksum: sha1:bf4f6b9899c176fa012acc607556a66d6e85a51b + pristine_git_object: 3787f0ce396fca69bdd7bce99d8054fec4dd23d6 src/openrouter/operations/updatekeys.py: id: 56fb213253a8 - last_write_checksum: sha1:d7eeeaae7c738016d176985c529b9a60df5f7966 - pristine_git_object: 8ea23655b38916560ec65dc2f37842812add7c3f + last_write_checksum: sha1:d859ba1d953fae4a232076e0c173491a3c89031f + pristine_git_object: 61a0eee34a0084c64f8fd69659cbb981a3a23d6b src/openrouter/operations/updateobservabilitydestination.py: id: 18e06708d1b4 - last_write_checksum: sha1:3384214864aaba28a6cdf2ddcd55aae16bef9a3a - pristine_git_object: 749f0f72822f811653a4b89cf491388ce284db2b + last_write_checksum: sha1:d490e19e8698ed5193df9d06673f975cb3a1410f + pristine_git_object: e2819c904941d06f664a29312d9515150412ac44 src/openrouter/operations/updateworkspace.py: id: 2e9960985cbc - last_write_checksum: sha1:88c11ee7a31bc5e2267981d882a01a2a71aafe55 - pristine_git_object: 4ab7929896a5dede1fa4cf9ce6acfaedd99160aa + last_write_checksum: sha1:0b74790d6673ca8bb8c203d97c5a6ce8128a16df + pristine_git_object: 4441056786e1495816e8dc057a29795e86380ab1 src/openrouter/operations/uploadfile.py: id: f9dc565da045 - last_write_checksum: sha1:6ebd83512ef670b3a9201aa8518267ba243a3070 - pristine_git_object: 579e1df65e14d2416c7bad356524f788f4705c67 + last_write_checksum: sha1:d73fad089275b4d32a718e63baf48926899f6bca + pristine_git_object: 29a37b944dfd1855409f064503e348ce50d13cf0 src/openrouter/operations/upsertworkspacebudget.py: id: 67d4a2962257 - last_write_checksum: sha1:9c22e7ab1812a88df9d8a291aeae6677c89778eb - pristine_git_object: 9e55fa4d95b147b80c3907ae03e76905563ca2a8 + last_write_checksum: sha1:e251aa9f18cef5e265ef4d65cfbda42af411d2a3 + pristine_git_object: 228942b37d54273e752786186a49bd1b4ed4a787 src/openrouter/organization.py: id: 6f4c63c416e8 - last_write_checksum: sha1:4ca00158cd6a4971e7a4cf6da1ef084da25630d9 - pristine_git_object: ad2e7f86b6138cf2b2137345155e2b3a5784fb46 + last_write_checksum: sha1:b60a04c6f8482981e03f69fb357c8c183a187225 + pristine_git_object: d24bfa86c4b67290033a18eced04435a3fc3d69f src/openrouter/presets.py: id: bd0c40379dcd - last_write_checksum: sha1:9072880166c0921a928c3898a91de6fab8d5bcd1 - pristine_git_object: 4ab1b9cdeb1929ce264f5d6d19c63f9f7231d6a6 + last_write_checksum: sha1:ff4882369524258936055676e9516ebeb68959d5 + pristine_git_object: 83085f60d38d0cb0b5540b8dd1cc1dfb7dc613ee src/openrouter/providers.py: id: debc4c48f149 - last_write_checksum: sha1:f39f155f26e6f5e4fb5b7e0f577a8c49536f6bb3 - pristine_git_object: 1c940641b8f61a395bf8a37f203a8fbb6ad41d4e + last_write_checksum: sha1:11dbc607825edee8dcc84b39ee8171e097c47acf + pristine_git_object: c1fd70812d86dcc34e9f111325c50b988fb4aa1f src/openrouter/py.typed: id: 89fd03eab092 last_write_checksum: sha1:8efc425ffe830805ffcc0f3055871bdcdc542c60 pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544 src/openrouter/rerank.py: id: 8dbc1be8d76f - last_write_checksum: sha1:c3dc646c7c7452d90b659c7611ba82eedc9a4b8d - pristine_git_object: 96401a2fe86fefe574e073952ca235e71953fbec + last_write_checksum: sha1:948125ce756a89cc0fb82dac1fc12b90cf2498b9 + pristine_git_object: 76378ffba1806e0ca66fc873db1a568be0becebb src/openrouter/responses.py: id: f2108fb635e1 - last_write_checksum: sha1:2d50009bcadc43406cab3a16fb72feca6c54ec82 - pristine_git_object: e80404c46cf9516ca4ad7bdb1760a810d5a3850e + last_write_checksum: sha1:9d6782aa347b58754a77cacbd85c3fec63febbac + pristine_git_object: 28b31f4ca269976764c47bd9a27f4d942e08f1d4 src/openrouter/sdk.py: id: ee9846c4c9c5 - last_write_checksum: sha1:d64c6bd75bb3ff1b610ab0fc5fee0b79fad100e5 - pristine_git_object: 8fe36b2268f2f87ce9e0cf5e140002564fe69e65 + last_write_checksum: sha1:2247537eca7f88a8f36e53fe011904b98569ad52 + pristine_git_object: a6a9afda84aa6a6c36bf3ea4ca6a04761ab86e26 src/openrouter/sdkconfiguration.py: id: 55773bb98d7c last_write_checksum: sha1:c01826125c31a8b8bc99d9d679782c8758fae001 pristine_git_object: 26433165a0b1c25d7bd3115b9b129b18f2dc9387 src/openrouter/stt.py: id: fc0c2f669423 - last_write_checksum: sha1:85b66bb07b0d906fc30f5077056fad632f34757a - pristine_git_object: 3b12f69849adc34582f75bb873ca1d15f562a187 + last_write_checksum: sha1:da4bb584de8f5e54ae6d9b6a5d07c3bc6cf41558 + pristine_git_object: a5f03a72b9dd5ad769366fb71c07c57d7510fc56 src/openrouter/tts.py: id: 5055d4b95f1d - last_write_checksum: sha1:4097f8545f7276c8d1e007e35ac90e2006300c69 - pristine_git_object: 66886a4afd9e8195f2e1910741b3ee7d2e2b13cf + last_write_checksum: sha1:727a19a0df768153cbe2d8351394a2e254f680ea + pristine_git_object: 68ae54d07c464e69738c16bebf77d06d0d7f2141 src/openrouter/types/__init__.py: id: 5eab536205b7 - last_write_checksum: sha1:140ebdd01a46f92ffc710c52c958c4eba3cf68ed - pristine_git_object: fc76fe0c5505e29859b5d2bb707d48fd27661b8c + last_write_checksum: sha1:f9ad14217f832e74f594285960125add50324be9 + pristine_git_object: faa268137bc01c9d08cfadc4797017db48747a96 + src/openrouter/types/base64fileinput.py: + id: 78a06688cf05 + last_write_checksum: sha1:1522687ae3398374c35710cad993a6e82b5ab99d + pristine_git_object: 862566fe2b1db830276b390e136e65090e5963d2 src/openrouter/types/basemodel.py: id: 369e2d46ed57 - last_write_checksum: sha1:615d0b364fa924b0fef719958df34596cc7c1ae2 - pristine_git_object: 231c2e37283a76082f1a064c7aae47f8ee4ee694 + last_write_checksum: sha1:10d84aedeb9d35edfdadf2c3020caa1d24d8b584 + pristine_git_object: a9a640a1a7048736383f96c67c6290c86bf536ee src/openrouter/utils/__init__.py: id: d2221baccf50 - last_write_checksum: sha1:5d88356c206a32c694ae113178ca6325a9fc612a - pristine_git_object: 87192ddef2589a7778f85e1cd715d6d1e61ae0a6 + last_write_checksum: sha1:823ec82074fd04545cce2ec8011d5feb1abbcd64 + pristine_git_object: 7d59884432525433dde5b893c3c6dcbe6e01a81e src/openrouter/utils/annotations.py: id: 8999bda9dad2 last_write_checksum: sha1:a4824ad65f730303e4e1e3ec1febf87b4eb46dbc @@ -9076,18 +9080,22 @@ trackedFiles: id: b95b8718acc3 last_write_checksum: sha1:c721e4123000e7dc61ec52b28a739439d9e17341 pristine_git_object: a6c52cd61bbe2d459046c940ce5e8c469f2f0664 + src/openrouter/utils/dynamic_imports.py: + id: bbd138b4ea9c + last_write_checksum: sha1:a1940c63feb8eddfd8026de53384baf5056d5dcc + pristine_git_object: 673edf82a97d0fea7295625d3e092ea369a36b79 src/openrouter/utils/enums.py: id: 110ef7d92d87 - last_write_checksum: sha1:786ba597f79dca6fbc0d87c591752bb8d775ecb7 - pristine_git_object: c3bc13cfc48794c143a64667f02e7949a8ce3fcc + last_write_checksum: sha1:bc8c3c1285ae09ba8a094ee5c3d9c7f41fa1284d + pristine_git_object: 3324e1bc2668c54c4d5f5a1a845675319757a828 src/openrouter/utils/eventstreaming.py: id: 521c9b089a6b - last_write_checksum: sha1:bababae5d54b7efc360db701daa49e18a92c2f3b - pristine_git_object: 0969899bfc491e5e408d05643525f347ea95e4fc + last_write_checksum: sha1:7d1dc68f8b48486ab646653aa05cc38752e1f912 + pristine_git_object: a8d4fe5cc88d3c7337339e1b36a61bbf7ca8c4eb src/openrouter/utils/forms.py: id: ea40240d85c2 - last_write_checksum: sha1:15fa7e9ab1611e062a9984cf06cb20969713d295 - pristine_git_object: f961e76beaf0a8b1fe0dda44754a74eebd3608e7 + last_write_checksum: sha1:a971cdb120ad3d416d296d5d0ad89e4808350a7f + pristine_git_object: fdf0dc9b2a67bca773eefe6b471498cccaa83424 src/openrouter/utils/headers.py: id: 27516e637dba last_write_checksum: sha1:7c6df233ee006332b566a8afa9ce9a245941d935 @@ -9098,28 +9106,32 @@ trackedFiles: pristine_git_object: db55cd38e1db5cedb7be0b0f51c0d8243de126e7 src/openrouter/utils/metadata.py: id: 9e56bbf6b778 - last_write_checksum: sha1:c6a560bd0c63ab158582f34dadb69433ea73b3d4 - pristine_git_object: 173b3e5ce658675c2f504222a56b3daaaa68107d + last_write_checksum: sha1:e703e5cbb5255144aacf86898d1420529afaaff8 + pristine_git_object: 5abddd588837ac297050ca3b543627faadb350a9 src/openrouter/utils/queryparams.py: id: 01286f49bf3b last_write_checksum: sha1:b94c3f314fd3da0d1d215afc2731f48748e2aa59 pristine_git_object: c04e0db82b68eca041f2cb2614d748fbac80fd41 src/openrouter/utils/requestbodies.py: id: 1273a1cf70c0 - last_write_checksum: sha1:e0a3a78158eba39880475d62d61be906625676b8 - pristine_git_object: d5240dd5f5efffabbd9aefa2f4a349511a9c75b4 + last_write_checksum: sha1:e1fef575283b7fe7fe2ad392dbbb3fb105309124 + pristine_git_object: 591415af8e64baa410627b507d2740afb5387d13 src/openrouter/utils/retries.py: id: c4cf78e73a9a - last_write_checksum: sha1:5b97ac4f59357d70c2529975d50364c88bcad607 - pristine_git_object: 88a91b10cd2076b4a2c6cff2ac6bfaa5e3c5ad13 + last_write_checksum: sha1:3585b891142f30a597fbf7a2f0340700babef8e4 + pristine_git_object: ca7b59efebbbd9545744d0207ef42725c4cc5143 src/openrouter/utils/security.py: id: 2fb038256ad8 - last_write_checksum: sha1:2ace8b34d8b3b0bb6bb3b12f5bd0ea3853807877 - pristine_git_object: 6996c79fd27d6f77a3d8224e81bbfbe798d20fc8 + last_write_checksum: sha1:780d572b5b3554ac39a20d6ece07b0977121fdd1 + pristine_git_object: 35a59a63030e1c6443c4819012d9157d88e32428 src/openrouter/utils/serializers.py: id: b163f58f6f87 - last_write_checksum: sha1:a0d184ace7371a14a7d005cca7f358a03e3d4b07 - pristine_git_object: 378a14c0f86a867ca7b0eb7e620da82234c0ccc4 + last_write_checksum: sha1:7485f1425b0661fd84836186570df90207eec6af + pristine_git_object: 1031ed930bad5ece220cf7416a56c29f40f0588b + src/openrouter/utils/unions.py: + id: c3e422902f03 + last_write_checksum: sha1:cd6201e6f43c51545a32f5bd4ac9f508e1ba0c29 + pristine_git_object: 2434640235f9607bd894361dcba872ceb5b26533 src/openrouter/utils/unmarshal_json_response.py: id: 3cf8a2573121 last_write_checksum: sha1:8e77f7d9ad09be56c5e97a3c3d5b16bd20a4aa0d @@ -9134,12 +9146,12 @@ trackedFiles: pristine_git_object: dae01a44384ac3bc13ae07453a053bf6c898ebe3 src/openrouter/video_generation.py: id: d0a90c1b8efe - last_write_checksum: sha1:a857083fe9fe2766e7c083dce8778a30dd0a0b03 - pristine_git_object: 14d0c5e4e7757eeb383e460784073b8f05accd82 + last_write_checksum: sha1:5d725868d1a14ca3d64562f0da54e9b130ff7560 + pristine_git_object: 4a82cde858211c0f5a01b08980cee0e9e3d0f52c src/openrouter/workspaces.py: id: cd6c533b1802 - last_write_checksum: sha1:7b1a29a2c1faa68ef30ccd0c8e61dfe535b90314 - pristine_git_object: 1b82a9360ac6b08cee12e674770f7681e2a5e6f4 + last_write_checksum: sha1:545a54d7d445ecb42e24c9b137362747e9d90651 + pristine_git_object: d22a8e667cb3f29570234bc057261a9082d69ee5 examples: createResponses: speakeasy-default-create-responses: @@ -9147,7 +9159,7 @@ examples: application/json: {"service_tier": "auto", "store": false, "stream": false} responses: "200": - application/json: {"completed_at": 1704067210, "created_at": 1704067200, "error": null, "frequency_penalty": 3967.09, "id": "resp-abc123", "incomplete_details": null, "instructions": null, "metadata": null, "model": "gpt-4", "object": "response", "output": [], "parallel_tool_calls": true, "presence_penalty": 7468.94, "status": "completed", "temperature": null, "tool_choice": "auto", "tools": [], "top_p": null} + application/json: {"completed_at": 1704067210, "created_at": 1704067200, "error": null, "frequency_penalty": 3967.09, "id": "resp-abc123", "incomplete_details": null, "instructions": null, "metadata": null, "model": "gpt-4", "object": "response", "output": [{"content": [{"text": "Hello! How can I help you today?", "type": "output_text"}], "id": "msg-abc123", "role": "assistant", "type": "message"}], "parallel_tool_calls": true, "presence_penalty": 7468.94, "status": "completed", "temperature": null, "tool_choice": "auto", "tools": [], "top_p": null} "400": application/json: {"error": {"code": 400, "message": "Invalid request parameters"}} "401": diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index b77fabd0..42273435 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -16,6 +16,8 @@ generation: requestResponseComponentNamesFeb2024: true securityFeb2025: true sharedErrorComponentsApr2025: true + sharedNestedComponentsJan2026: false + nameOverrideFeb2026: false auth: oAuth2ClientCredentialsEnabled: true oAuth2PasswordEnabled: true @@ -25,14 +27,16 @@ generation: schemas: allOfMergeStrategy: shallowMerge requestBodyFieldName: "" + versioningStrategy: automatic persistentEdits: {} tests: generateTests: false generateNewTests: true skipResponseBodyAssertions: false + documentation: mintlify preApplyUnionDiscriminators: true python: - version: 0.10.8 + version: 0.11.0 additionalDependencies: dev: {} main: {} @@ -46,6 +50,7 @@ python: authors: - OpenRouter baseErrorName: OpenRouterError + bodyVariantOverloads: false clientServerStatusCodesAsErrors: true constFieldCasing: upper defaultErrorName: OpenRouterDefaultError @@ -53,12 +58,18 @@ python: enableCustomCodeRegions: false enumFormat: union envVarPrefix: OPENROUTER + errorSchemaValidation: true + eventStreamClassNames: + async: EventStreamAsync + sync: EventStream fixFlags: asyncPaginationSep2025: true + conflictResistantModelImportsFeb2026: false responseRequiredSep2024: true flattenGlobalSecurity: true flattenRequests: true flatteningOrder: parameters-first + forwardCompatibleEnumsByDefault: false forwardCompatibleUnionsByDefault: tagged-only imports: option: openapi @@ -71,18 +82,25 @@ python: inferSSEOverload: true inferUnionDiscriminators: true inputModelSuffix: input + inputTypedDictSuffix: TypedDict legacyPyright: false license: Apache-2.0 maxMethodParams: 999 methodArguments: infer-optional-args + methodTimeoutArgument: timeout-ms + methodTimeoutUnits: milliseconds moduleName: "" multipartArrayFormat: legacy + optionalDependencies: {} outputModelSuffix: output packageManager: uv packageName: openrouter preApplyUnionDiscriminators: false pytestFilterWarnings: [] pytestTimeout: 0 + rawResponseHelpers: false responseFormat: flat + responseSchemaValidation: true sseFlatResponse: true templateVersion: v2 + useAsyncHooks: false diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 2183daa7..0a9d59a4 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,24 +1,23 @@ -speakeasyVersion: 1.680.0 +speakeasyVersion: 1.787.0 sources: OpenRouter API: sourceNamespace: open-router-chat-completions-api - sourceRevisionDigest: sha256:ed6981b24a0f8df827afac0f83d7dae4d8f7df331ae6e72664e03800cb7a0244 - sourceBlobDigest: sha256:5961e537bd3160eb3f541232a5e7cb43704fed5e9ce76b342c08f6c52d4fefe9 + sourceRevisionDigest: sha256:86c0ff20804c52cf4d1ecd247f6414b4209721628be768bb0e471fa8f2643a36 + sourceBlobDigest: sha256:203cdb354ce296155f3b322907ecf7b02345a894ef5eaa042c2c9c86a3f513c8 tags: - latest - - speakeasy-sdk-regen-1782660460 - 1.0.0 targets: open-router: source: OpenRouter API sourceNamespace: open-router-chat-completions-api - sourceRevisionDigest: sha256:ed6981b24a0f8df827afac0f83d7dae4d8f7df331ae6e72664e03800cb7a0244 - sourceBlobDigest: sha256:5961e537bd3160eb3f541232a5e7cb43704fed5e9ce76b342c08f6c52d4fefe9 + sourceRevisionDigest: sha256:86c0ff20804c52cf4d1ecd247f6414b4209721628be768bb0e471fa8f2643a36 + sourceBlobDigest: sha256:203cdb354ce296155f3b322907ecf7b02345a894ef5eaa042c2c9c86a3f513c8 codeSamplesNamespace: open-router-python-code-samples - codeSamplesRevisionDigest: sha256:d3f20480ea1c0bcb8d872ae696b7a8b2c16d1469ee95b6df12b03b7004ce1c9c + codeSamplesRevisionDigest: sha256:73cd7995d2c186ab5098f0824cad26228baf3c6c9e02400959dde933f8b38439 workflow: workflowVersion: 1.0.0 - speakeasyVersion: 1.680.0 + speakeasyVersion: 1.787.0 sources: OpenRouter API: inputs: diff --git a/.speakeasy/workflow.yaml b/.speakeasy/workflow.yaml index 3e9961b1..36493c14 100644 --- a/.speakeasy/workflow.yaml +++ b/.speakeasy/workflow.yaml @@ -1,5 +1,5 @@ workflowVersion: 1.0.0 -speakeasyVersion: 1.680.0 +speakeasyVersion: 1.787.0 sources: OpenRouter API: inputs: diff --git a/README.md b/README.md index 7af33435..9fdbe277 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ It's also possible to write a standalone Python script without needing to set up ```python #!/usr/bin/env -S uv run --script # /// script -# requires-python = ">=3.9" +# requires-python = ">=3.10" # dependencies = [ # "openrouter", # ] diff --git a/docs/components/aabenchmarkentry.mdx b/docs/components/aabenchmarkentry.mdx new file mode 100644 index 00000000..172d9646 --- /dev/null +++ b/docs/components/aabenchmarkentry.mdx @@ -0,0 +1,14 @@ +--- +title: "AABenchmarkEntry" +--- + +Artificial Analysis benchmark index scores. + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | +| `agentic_index` | *Nullable[float]* | :heavy_check_mark: | Artificial Analysis Agentic Index score | 55.8 | +| `coding_index` | *Nullable[float]* | :heavy_check_mark: | Artificial Analysis Coding Index score | 63.2 | +| `intelligence_index` | *Nullable[float]* | :heavy_check_mark: | Artificial Analysis Intelligence Index score | 71.4 | \ No newline at end of file diff --git a/docs/components/action.mdx b/docs/components/action.mdx new file mode 100644 index 00000000..50cdd412 --- /dev/null +++ b/docs/components/action.mdx @@ -0,0 +1,24 @@ +--- +title: "Action" +--- + +## Supported Types + +### `components.OutputWebSearchCallItemActionSearch` + +```python +value: components.OutputWebSearchCallItemActionSearch = /* values here */ +``` + +### `components.ActionOpenPage` + +```python +value: components.ActionOpenPage = /* values here */ +``` + +### `components.ActionFindInPage` + +```python +value: components.ActionFindInPage = /* values here */ +``` + diff --git a/docs/components/actionenum.mdx b/docs/components/actionenum.mdx new file mode 100644 index 00000000..9bed0a58 --- /dev/null +++ b/docs/components/actionenum.mdx @@ -0,0 +1,21 @@ +--- +title: "ActionEnum" +--- + +## Example Usage + +```python +from openrouter.components import ActionEnum + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ActionEnum = "read" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"read"` +- `"write"` +- `"delete"` diff --git a/docs/components/actionfindinpage.mdx b/docs/components/actionfindinpage.mdx new file mode 100644 index 00000000..59aaf44e --- /dev/null +++ b/docs/components/actionfindinpage.mdx @@ -0,0 +1,11 @@ +--- +title: "ActionFindInPage" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `pattern` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.TypeFindInPage](../components/typefindinpage.mdx) | :heavy_check_mark: | N/A | +| `url` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/actionopenpage.mdx b/docs/components/actionopenpage.mdx new file mode 100644 index 00000000..6bf4cb41 --- /dev/null +++ b/docs/components/actionopenpage.mdx @@ -0,0 +1,10 @@ +--- +title: "ActionOpenPage" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `type` | [components.TypeOpenPage](../components/typeopenpage.mdx) | :heavy_check_mark: | N/A | +| `url` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/actiontypesearch.mdx b/docs/components/actiontypesearch.mdx new file mode 100644 index 00000000..dc49d753 --- /dev/null +++ b/docs/components/actiontypesearch.mdx @@ -0,0 +1,15 @@ +--- +title: "ActionTypeSearch" +--- + +## Example Usage + +```python +from openrouter.components import ActionTypeSearch +value: ActionTypeSearch = "search" +``` + + +## Values + +- `"search"` diff --git a/docs/components/activityitem.md b/docs/components/activityitem.mdx similarity index 99% rename from docs/components/activityitem.md rename to docs/components/activityitem.mdx index 9cbfb1a7..0910645c 100644 --- a/docs/components/activityitem.md +++ b/docs/components/activityitem.mdx @@ -1,5 +1,6 @@ -# ActivityItem - +--- +title: "ActivityItem" +--- ## Fields diff --git a/docs/components/activityresponse.mdx b/docs/components/activityresponse.mdx new file mode 100644 index 00000000..6edb98e8 --- /dev/null +++ b/docs/components/activityresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "ActivityResponse" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `data` | List[[components.ActivityItem](../components/activityitem.mdx)] | :heavy_check_mark: | List of activity items | \ No newline at end of file diff --git a/docs/components/advisornestedtool.mdx b/docs/components/advisornestedtool.mdx new file mode 100644 index 00000000..ef547673 --- /dev/null +++ b/docs/components/advisornestedtool.mdx @@ -0,0 +1,14 @@ +--- +title: "AdvisorNestedTool" +--- + +A tool made available to the advisor sub-agent. Only OpenRouter server tools (e.g. openrouter:web_search) are supported; function tools are rejected because the advisor has no way to execute them. The advisor tool may not list itself. + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `parameters` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | | +| `type` | *str* | :heavy_check_mark: | N/A | | +| `__pydantic_extra__` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | \{
"type": "openrouter:web_search"
} | \ No newline at end of file diff --git a/docs/components/advisorreasoning.mdx b/docs/components/advisorreasoning.mdx new file mode 100644 index 00000000..b33ef536 --- /dev/null +++ b/docs/components/advisorreasoning.mdx @@ -0,0 +1,13 @@ +--- +title: "AdvisorReasoning" +--- + +Reasoning configuration forwarded to the advisor call. Use this to control reasoning effort and token budget for models that support extended thinking. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `effort` | [Optional[components.AdvisorReasoningEffort]](../components/advisorreasoningeffort.mdx) | :heavy_minus_sign: | Reasoning effort level for the advisor call. | +| `max_tokens` | *Optional[int]* | :heavy_minus_sign: | Maximum number of reasoning tokens the advisor may use. | \ No newline at end of file diff --git a/docs/components/advisorreasoningeffort.mdx b/docs/components/advisorreasoningeffort.mdx new file mode 100644 index 00000000..aa427b33 --- /dev/null +++ b/docs/components/advisorreasoningeffort.mdx @@ -0,0 +1,27 @@ +--- +title: "AdvisorReasoningEffort" +--- + +Reasoning effort level for the advisor call. + +## Example Usage + +```python +from openrouter.components import AdvisorReasoningEffort + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: AdvisorReasoningEffort = "max" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"max"` +- `"xhigh"` +- `"high"` +- `"medium"` +- `"low"` +- `"minimal"` +- `"none"` diff --git a/docs/components/advisorservertoolconfig.mdx b/docs/components/advisorservertoolconfig.mdx new file mode 100644 index 00000000..123fe879 --- /dev/null +++ b/docs/components/advisorservertoolconfig.mdx @@ -0,0 +1,21 @@ +--- +title: "AdvisorServerToolConfig" +--- + +Configuration for one openrouter:advisor server tool entry. + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `forward_transcript` | *Optional[bool]* | :heavy_minus_sign: | When true, the full parent conversation is forwarded to the advisor so it sees the same context the executor does (and the tool-call `prompt`, if given, is appended as a final user turn). When false or omitted, the advisor receives only the `prompt` the executor passes in the tool call. | false | +| `instructions` | *Optional[str]* | :heavy_minus_sign: | System instructions for the advisor sub-agent. When omitted, the advisor responds with no system prompt of its own. | You are a senior staff engineer. Give a focused, decisive plan. | +| `max_completion_tokens` | *Optional[int]* | :heavy_minus_sign: | Maximum number of output tokens (including reasoning) the advisor may produce. When omitted, the provider's default applies. | 2048 | +| `max_tool_calls` | *Optional[int]* | :heavy_minus_sign: | Maximum number of tool-calling steps the advisor sub-agent may take during its agentic loop. Capped at 25. Only relevant when the advisor is given tools. | 5 | +| `model` | *Optional[str]* | :heavy_minus_sign: | Slug of the advisor model to consult (any OpenRouter model). When omitted, the executor can choose it via the tool call's `model` argument; if neither is set, the model from the outer API request is used. The advisor tool itself cannot be the advisor model. | ~anthropic/claude-opus-latest | +| `name` | *Optional[str]* | :heavy_minus_sign: | Optional name for this advisor. The model sees one tool per named advisor (and one default for an unnamed entry). Names must be unique across advisor entries. Letters, digits, spaces, underscores, and dashes; trimmed; 1–64 chars. | reviewer | +| `reasoning` | [Optional[components.AdvisorReasoning]](../components/advisorreasoning.mdx) | :heavy_minus_sign: | Reasoning configuration forwarded to the advisor call. Use this to control reasoning effort and token budget for models that support extended thinking. | \{
"effort": "high"
} | +| `stream` | *Optional[bool]* | :heavy_minus_sign: | When true, the advisor's advice streams incrementally as it is produced. In the Responses API this emits `response.output_text.delta` events targeting the advisor output item; the final `advice` field is still set on the completed item. Has no effect on the Chat Completions API (where the advice arrives only as the final tool result). When false or omitted, the advice arrives only as the final result. | false | +| `temperature` | *Optional[float]* | :heavy_minus_sign: | Sampling temperature forwarded to the advisor call. When omitted, the provider's default applies. | 0.7 | +| `tools` | List[[components.AdvisorNestedTool](../components/advisornestedtool.mdx)] | :heavy_minus_sign: | Tools the advisor sub-agent may use while forming its advice. The advisor runs as an agentic sub-agent over these tools, then returns its text. Only OpenRouter server tools are supported — function tools are rejected — and the list must not include the advisor tool itself. | | \ No newline at end of file diff --git a/docs/components/advisorservertoolopenrouter.mdx b/docs/components/advisorservertoolopenrouter.mdx new file mode 100644 index 00000000..928a0b80 --- /dev/null +++ b/docs/components/advisorservertoolopenrouter.mdx @@ -0,0 +1,13 @@ +--- +title: "AdvisorServerToolOpenRouter" +--- + +OpenRouter built-in server tool: consults a higher-intelligence advisor model (any OpenRouter model) for guidance mid-generation and returns its response. The advisor may run as a sub-agent with its own tools. Include multiple entries to offer several named advisors; at most one entry may omit `name` to act as the default advisor. + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `parameters` | [Optional[components.AdvisorServerToolConfig]](../components/advisorservertoolconfig.mdx) | :heavy_minus_sign: | Configuration for one openrouter:advisor server tool entry. | \{
"model": "~anthropic/claude-opus-latest",
"name": "reviewer"
} | +| `type` | [components.AdvisorServerToolOpenRouterType](../components/advisorservertoolopenroutertype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/advisorservertoolopenroutertype.mdx b/docs/components/advisorservertoolopenroutertype.mdx new file mode 100644 index 00000000..95bf97c8 --- /dev/null +++ b/docs/components/advisorservertoolopenroutertype.mdx @@ -0,0 +1,15 @@ +--- +title: "AdvisorServerToolOpenRouterType" +--- + +## Example Usage + +```python +from openrouter.components import AdvisorServerToolOpenRouterType +value: AdvisorServerToolOpenRouterType = "openrouter:advisor" +``` + + +## Values + +- `"openrouter:advisor"` diff --git a/docs/components/allowedtools.mdx b/docs/components/allowedtools.mdx new file mode 100644 index 00000000..14377fe6 --- /dev/null +++ b/docs/components/allowedtools.mdx @@ -0,0 +1,10 @@ +--- +title: "AllowedTools" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `read_only` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `tool_names` | List[*str*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/allowedtoolsunion.mdx b/docs/components/allowedtoolsunion.mdx new file mode 100644 index 00000000..239bb482 --- /dev/null +++ b/docs/components/allowedtoolsunion.mdx @@ -0,0 +1,24 @@ +--- +title: "AllowedToolsUnion" +--- + +## Supported Types + +### `List[str]` + +```python +value: List[str] = /* values here */ +``` + +### `components.AllowedTools` + +```python +value: components.AllowedTools = /* values here */ +``` + +### `Any` + +```python +value: Any = /* values here */ +``` + diff --git a/docs/components/always.mdx b/docs/components/always.mdx new file mode 100644 index 00000000..539af0bb --- /dev/null +++ b/docs/components/always.mdx @@ -0,0 +1,9 @@ +--- +title: "Always" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `tool_names` | List[*str*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/annotationaddedevent.mdx b/docs/components/annotationaddedevent.mdx new file mode 100644 index 00000000..d05a0623 --- /dev/null +++ b/docs/components/annotationaddedevent.mdx @@ -0,0 +1,18 @@ +--- +title: "AnnotationAddedEvent" +--- + +Event emitted when a text annotation is added to output + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | +| `annotation` | [components.OpenAIResponsesAnnotation](../components/openairesponsesannotation.mdx) | :heavy_check_mark: | N/A | \{
"file_id": "file-abc123",
"filename": "research_paper.pdf",
"index": 0,
"type": "file_citation"
} | +| `annotation_index` | *int* | :heavy_check_mark: | N/A | | +| `content_index` | *int* | :heavy_check_mark: | N/A | | +| `item_id` | *str* | :heavy_check_mark: | N/A | | +| `output_index` | *int* | :heavy_check_mark: | N/A | | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | | +| `type` | [components.AnnotationAddedEventType](../components/annotationaddedeventtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/annotationaddedeventtype.mdx b/docs/components/annotationaddedeventtype.mdx new file mode 100644 index 00000000..ad9a6063 --- /dev/null +++ b/docs/components/annotationaddedeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnnotationAddedEventType" +--- + +## Example Usage + +```python +from openrouter.components import AnnotationAddedEventType +value: AnnotationAddedEventType = "response.output_text.annotation.added" +``` + + +## Values + +- `"response.output_text.annotation.added"` diff --git a/docs/components/anthropicadvisormessageusageiteration.mdx b/docs/components/anthropicadvisormessageusageiteration.mdx new file mode 100644 index 00000000..0d71d365 --- /dev/null +++ b/docs/components/anthropicadvisormessageusageiteration.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicAdvisorMessageUsageIteration" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `cache_creation` | [OptionalNullable[components.AnthropicIterationCacheCreation]](../components/anthropiciterationcachecreation.mdx) | :heavy_minus_sign: | N/A | \{
"ephemeral_1h_input_tokens": 0,
"ephemeral_5m_input_tokens": 0
} | +| `cache_creation_input_tokens` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `cache_read_input_tokens` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `input_tokens` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `output_tokens` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `model` | *str* | :heavy_check_mark: | N/A | | +| `type` | [components.AnthropicAdvisorMessageUsageIterationType](../components/anthropicadvisormessageusageiterationtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/anthropicadvisormessageusageiterationtype.mdx b/docs/components/anthropicadvisormessageusageiterationtype.mdx new file mode 100644 index 00000000..c13a23d7 --- /dev/null +++ b/docs/components/anthropicadvisormessageusageiterationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicAdvisorMessageUsageIterationType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicAdvisorMessageUsageIterationType +value: AnthropicAdvisorMessageUsageIterationType = "advisor_message" +``` + + +## Values + +- `"advisor_message"` diff --git a/docs/components/anthropicallowedcallers.mdx b/docs/components/anthropicallowedcallers.mdx new file mode 100644 index 00000000..8cb662d8 --- /dev/null +++ b/docs/components/anthropicallowedcallers.mdx @@ -0,0 +1,21 @@ +--- +title: "AnthropicAllowedCallers" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicAllowedCallers + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: AnthropicAllowedCallers = "direct" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"direct"` +- `"code_execution_20250825"` +- `"code_execution_20260120"` diff --git a/docs/components/anthropicbase64imagesource.mdx b/docs/components/anthropicbase64imagesource.mdx new file mode 100644 index 00000000..31e75cf2 --- /dev/null +++ b/docs/components/anthropicbase64imagesource.mdx @@ -0,0 +1,11 @@ +--- +title: "AnthropicBase64ImageSource" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `data` | *str* | :heavy_check_mark: | N/A | | +| `media_type` | [components.AnthropicImageMimeType](../components/anthropicimagemimetype.mdx) | :heavy_check_mark: | N/A | image/jpeg | +| `type` | [components.AnthropicBase64ImageSourceType](../components/anthropicbase64imagesourcetype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/anthropicbase64imagesourcetype.mdx b/docs/components/anthropicbase64imagesourcetype.mdx new file mode 100644 index 00000000..9aa0663b --- /dev/null +++ b/docs/components/anthropicbase64imagesourcetype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicBase64ImageSourceType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicBase64ImageSourceType +value: AnthropicBase64ImageSourceType = "base64" +``` + + +## Values + +- `"base64"` diff --git a/docs/components/anthropicbase64pdfsource.mdx b/docs/components/anthropicbase64pdfsource.mdx new file mode 100644 index 00000000..40f04263 --- /dev/null +++ b/docs/components/anthropicbase64pdfsource.mdx @@ -0,0 +1,11 @@ +--- +title: "AnthropicBase64PdfSource" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `data` | *str* | :heavy_check_mark: | N/A | +| `media_type` | [components.AnthropicBase64PdfSourceMediaType](../components/anthropicbase64pdfsourcemediatype.mdx) | :heavy_check_mark: | N/A | +| `type` | [components.AnthropicBase64PdfSourceType](../components/anthropicbase64pdfsourcetype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/anthropicbase64pdfsourcemediatype.mdx b/docs/components/anthropicbase64pdfsourcemediatype.mdx new file mode 100644 index 00000000..d20725c1 --- /dev/null +++ b/docs/components/anthropicbase64pdfsourcemediatype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicBase64PdfSourceMediaType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicBase64PdfSourceMediaType +value: AnthropicBase64PdfSourceMediaType = "application/pdf" +``` + + +## Values + +- `"application/pdf"` diff --git a/docs/components/anthropicbase64pdfsourcetype.mdx b/docs/components/anthropicbase64pdfsourcetype.mdx new file mode 100644 index 00000000..44deb61a --- /dev/null +++ b/docs/components/anthropicbase64pdfsourcetype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicBase64PdfSourceType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicBase64PdfSourceType +value: AnthropicBase64PdfSourceType = "base64" +``` + + +## Values + +- `"base64"` diff --git a/docs/components/anthropiccachecontroldirective.mdx b/docs/components/anthropiccachecontroldirective.mdx new file mode 100644 index 00000000..5f755985 --- /dev/null +++ b/docs/components/anthropiccachecontroldirective.mdx @@ -0,0 +1,13 @@ +--- +title: "AnthropicCacheControlDirective" +--- + +Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `ttl` | [Optional[components.AnthropicCacheControlTTL]](../components/anthropiccachecontrolttl.mdx) | :heavy_minus_sign: | N/A | 5m | +| `type` | [components.AnthropicCacheControlDirectiveType](../components/anthropiccachecontroldirectivetype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/anthropiccachecontroldirectivetype.mdx b/docs/components/anthropiccachecontroldirectivetype.mdx new file mode 100644 index 00000000..5b35ca5e --- /dev/null +++ b/docs/components/anthropiccachecontroldirectivetype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicCacheControlDirectiveType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicCacheControlDirectiveType +value: AnthropicCacheControlDirectiveType = "ephemeral" +``` + + +## Values + +- `"ephemeral"` diff --git a/docs/components/anthropiccachecontrolttl.mdx b/docs/components/anthropiccachecontrolttl.mdx new file mode 100644 index 00000000..bd3e799f --- /dev/null +++ b/docs/components/anthropiccachecontrolttl.mdx @@ -0,0 +1,20 @@ +--- +title: "AnthropicCacheControlTTL" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicCacheControlTTL + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: AnthropicCacheControlTTL = "5m" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"5m"` +- `"1h"` diff --git a/docs/components/anthropiccitationcharlocationparam.mdx b/docs/components/anthropiccitationcharlocationparam.mdx new file mode 100644 index 00000000..5a68da55 --- /dev/null +++ b/docs/components/anthropiccitationcharlocationparam.mdx @@ -0,0 +1,14 @@ +--- +title: "AnthropicCitationCharLocationParam" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `cited_text` | *str* | :heavy_check_mark: | N/A | +| `document_index` | *int* | :heavy_check_mark: | N/A | +| `document_title` | *Nullable[str]* | :heavy_check_mark: | N/A | +| `end_char_index` | *int* | :heavy_check_mark: | N/A | +| `start_char_index` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.AnthropicCitationCharLocationParamType](../components/anthropiccitationcharlocationparamtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/anthropiccitationcharlocationparamtype.mdx b/docs/components/anthropiccitationcharlocationparamtype.mdx new file mode 100644 index 00000000..b4a606b5 --- /dev/null +++ b/docs/components/anthropiccitationcharlocationparamtype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicCitationCharLocationParamType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicCitationCharLocationParamType +value: AnthropicCitationCharLocationParamType = "char_location" +``` + + +## Values + +- `"char_location"` diff --git a/docs/components/anthropiccitationcontentblocklocationparam.mdx b/docs/components/anthropiccitationcontentblocklocationparam.mdx new file mode 100644 index 00000000..b0353d9c --- /dev/null +++ b/docs/components/anthropiccitationcontentblocklocationparam.mdx @@ -0,0 +1,14 @@ +--- +title: "AnthropicCitationContentBlockLocationParam" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `cited_text` | *str* | :heavy_check_mark: | N/A | +| `document_index` | *int* | :heavy_check_mark: | N/A | +| `document_title` | *Nullable[str]* | :heavy_check_mark: | N/A | +| `end_block_index` | *int* | :heavy_check_mark: | N/A | +| `start_block_index` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.AnthropicCitationContentBlockLocationParamType](../components/anthropiccitationcontentblocklocationparamtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/anthropiccitationcontentblocklocationparamtype.mdx b/docs/components/anthropiccitationcontentblocklocationparamtype.mdx new file mode 100644 index 00000000..7c3d03d2 --- /dev/null +++ b/docs/components/anthropiccitationcontentblocklocationparamtype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicCitationContentBlockLocationParamType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicCitationContentBlockLocationParamType +value: AnthropicCitationContentBlockLocationParamType = "content_block_location" +``` + + +## Values + +- `"content_block_location"` diff --git a/docs/components/anthropiccitationpagelocationparam.mdx b/docs/components/anthropiccitationpagelocationparam.mdx new file mode 100644 index 00000000..137db690 --- /dev/null +++ b/docs/components/anthropiccitationpagelocationparam.mdx @@ -0,0 +1,14 @@ +--- +title: "AnthropicCitationPageLocationParam" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `cited_text` | *str* | :heavy_check_mark: | N/A | +| `document_index` | *int* | :heavy_check_mark: | N/A | +| `document_title` | *Nullable[str]* | :heavy_check_mark: | N/A | +| `end_page_number` | *int* | :heavy_check_mark: | N/A | +| `start_page_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.AnthropicCitationPageLocationParamType](../components/anthropiccitationpagelocationparamtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/anthropiccitationpagelocationparamtype.mdx b/docs/components/anthropiccitationpagelocationparamtype.mdx new file mode 100644 index 00000000..ebe0335b --- /dev/null +++ b/docs/components/anthropiccitationpagelocationparamtype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicCitationPageLocationParamType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicCitationPageLocationParamType +value: AnthropicCitationPageLocationParamType = "page_location" +``` + + +## Values + +- `"page_location"` diff --git a/docs/components/anthropiccitationsearchresultlocation.mdx b/docs/components/anthropiccitationsearchresultlocation.mdx new file mode 100644 index 00000000..4766fcaa --- /dev/null +++ b/docs/components/anthropiccitationsearchresultlocation.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicCitationSearchResultLocation" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `cited_text` | *str* | :heavy_check_mark: | N/A | +| `end_block_index` | *int* | :heavy_check_mark: | N/A | +| `search_result_index` | *int* | :heavy_check_mark: | N/A | +| `source` | *str* | :heavy_check_mark: | N/A | +| `start_block_index` | *int* | :heavy_check_mark: | N/A | +| `title` | *Nullable[str]* | :heavy_check_mark: | N/A | +| `type` | [components.AnthropicCitationSearchResultLocationType](../components/anthropiccitationsearchresultlocationtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/anthropiccitationsearchresultlocationtype.mdx b/docs/components/anthropiccitationsearchresultlocationtype.mdx new file mode 100644 index 00000000..096cc0d6 --- /dev/null +++ b/docs/components/anthropiccitationsearchresultlocationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicCitationSearchResultLocationType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicCitationSearchResultLocationType +value: AnthropicCitationSearchResultLocationType = "search_result_location" +``` + + +## Values + +- `"search_result_location"` diff --git a/docs/components/anthropiccitationwebsearchresultlocation.mdx b/docs/components/anthropiccitationwebsearchresultlocation.mdx new file mode 100644 index 00000000..b03268fd --- /dev/null +++ b/docs/components/anthropiccitationwebsearchresultlocation.mdx @@ -0,0 +1,13 @@ +--- +title: "AnthropicCitationWebSearchResultLocation" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `cited_text` | *str* | :heavy_check_mark: | N/A | +| `encrypted_index` | *str* | :heavy_check_mark: | N/A | +| `title` | *Nullable[str]* | :heavy_check_mark: | N/A | +| `type` | [components.AnthropicCitationWebSearchResultLocationType](../components/anthropiccitationwebsearchresultlocationtype.mdx) | :heavy_check_mark: | N/A | +| `url` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/anthropiccitationwebsearchresultlocationtype.mdx b/docs/components/anthropiccitationwebsearchresultlocationtype.mdx new file mode 100644 index 00000000..9cb6d29d --- /dev/null +++ b/docs/components/anthropiccitationwebsearchresultlocationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicCitationWebSearchResultLocationType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicCitationWebSearchResultLocationType +value: AnthropicCitationWebSearchResultLocationType = "web_search_result_location" +``` + + +## Values + +- `"web_search_result_location"` diff --git a/docs/components/anthropiccompactionusageiteration.mdx b/docs/components/anthropiccompactionusageiteration.mdx new file mode 100644 index 00000000..2f0a28b5 --- /dev/null +++ b/docs/components/anthropiccompactionusageiteration.mdx @@ -0,0 +1,14 @@ +--- +title: "AnthropicCompactionUsageIteration" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `cache_creation` | [OptionalNullable[components.AnthropicIterationCacheCreation]](../components/anthropiciterationcachecreation.mdx) | :heavy_minus_sign: | N/A | \{
"ephemeral_1h_input_tokens": 0,
"ephemeral_5m_input_tokens": 0
} | +| `cache_creation_input_tokens` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `cache_read_input_tokens` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `input_tokens` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `output_tokens` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `type` | [components.AnthropicCompactionUsageIterationType](../components/anthropiccompactionusageiterationtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/anthropiccompactionusageiterationtype.mdx b/docs/components/anthropiccompactionusageiterationtype.mdx new file mode 100644 index 00000000..2b04c248 --- /dev/null +++ b/docs/components/anthropiccompactionusageiterationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicCompactionUsageIterationType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicCompactionUsageIterationType +value: AnthropicCompactionUsageIterationType = "compaction" +``` + + +## Values + +- `"compaction"` diff --git a/docs/components/anthropicdocumentblockparam.mdx b/docs/components/anthropicdocumentblockparam.mdx new file mode 100644 index 00000000..5a242514 --- /dev/null +++ b/docs/components/anthropicdocumentblockparam.mdx @@ -0,0 +1,14 @@ +--- +title: "AnthropicDocumentBlockParam" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `citations` | [OptionalNullable[components.AnthropicDocumentBlockParamCitations]](../components/anthropicdocumentblockparamcitations.mdx) | :heavy_minus_sign: | N/A | | +| `context` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `source` | [components.AnthropicDocumentBlockParamSourceUnion](../components/anthropicdocumentblockparamsourceunion.mdx) | :heavy_check_mark: | N/A | | +| `title` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `type` | [components.TypeDocument](../components/typedocument.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/anthropicdocumentblockparamcitations.mdx b/docs/components/anthropicdocumentblockparamcitations.mdx new file mode 100644 index 00000000..c8b4d39a --- /dev/null +++ b/docs/components/anthropicdocumentblockparamcitations.mdx @@ -0,0 +1,9 @@ +--- +title: "AnthropicDocumentBlockParamCitations" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `enabled` | *Optional[bool]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/anthropicdocumentblockparamcontent1.mdx b/docs/components/anthropicdocumentblockparamcontent1.mdx new file mode 100644 index 00000000..151f550d --- /dev/null +++ b/docs/components/anthropicdocumentblockparamcontent1.mdx @@ -0,0 +1,18 @@ +--- +title: "AnthropicDocumentBlockParamContent1" +--- + +## Supported Types + +### `components.AnthropicImageBlockParam` + +```python +value: components.AnthropicImageBlockParam = /* values here */ +``` + +### `components.AnthropicTextBlockParam` + +```python +value: components.AnthropicTextBlockParam = /* values here */ +``` + diff --git a/docs/components/anthropicdocumentblockparamcontent2.mdx b/docs/components/anthropicdocumentblockparamcontent2.mdx new file mode 100644 index 00000000..c2330d41 --- /dev/null +++ b/docs/components/anthropicdocumentblockparamcontent2.mdx @@ -0,0 +1,18 @@ +--- +title: "AnthropicDocumentBlockParamContent2" +--- + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `List[components.AnthropicDocumentBlockParamContent1]` + +```python +value: List[components.AnthropicDocumentBlockParamContent1] = /* values here */ +``` + diff --git a/docs/components/anthropicdocumentblockparamsourceunion.mdx b/docs/components/anthropicdocumentblockparamsourceunion.mdx new file mode 100644 index 00000000..644c8db7 --- /dev/null +++ b/docs/components/anthropicdocumentblockparamsourceunion.mdx @@ -0,0 +1,36 @@ +--- +title: "AnthropicDocumentBlockParamSourceUnion" +--- + +## Supported Types + +### `components.AnthropicBase64PdfSource` + +```python +value: components.AnthropicBase64PdfSource = /* values here */ +``` + +### `components.AnthropicPlainTextSource` + +```python +value: components.AnthropicPlainTextSource = /* values here */ +``` + +### `components.SourceContent` + +```python +value: components.SourceContent = /* values here */ +``` + +### `components.AnthropicURLPdfSource` + +```python +value: components.AnthropicURLPdfSource = /* values here */ +``` + +### `components.AnthropicFileDocumentSource` + +```python +value: components.AnthropicFileDocumentSource = /* values here */ +``` + diff --git a/docs/components/anthropicfiledocumentsource.mdx b/docs/components/anthropicfiledocumentsource.mdx new file mode 100644 index 00000000..9b1f7560 --- /dev/null +++ b/docs/components/anthropicfiledocumentsource.mdx @@ -0,0 +1,10 @@ +--- +title: "AnthropicFileDocumentSource" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `file_id` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.AnthropicFileDocumentSourceType](../components/anthropicfiledocumentsourcetype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/anthropicfiledocumentsourcetype.mdx b/docs/components/anthropicfiledocumentsourcetype.mdx new file mode 100644 index 00000000..c86bc529 --- /dev/null +++ b/docs/components/anthropicfiledocumentsourcetype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicFileDocumentSourceType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicFileDocumentSourceType +value: AnthropicFileDocumentSourceType = "file" +``` + + +## Values + +- `"file"` diff --git a/docs/components/anthropicimageblockparam.mdx b/docs/components/anthropicimageblockparam.mdx new file mode 100644 index 00000000..2d95dd47 --- /dev/null +++ b/docs/components/anthropicimageblockparam.mdx @@ -0,0 +1,11 @@ +--- +title: "AnthropicImageBlockParam" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `source` | [components.AnthropicImageBlockParamSource](../components/anthropicimageblockparamsource.mdx) | :heavy_check_mark: | N/A | | +| `type` | [components.AnthropicImageBlockParamType](../components/anthropicimageblockparamtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/anthropicimageblockparamsource.mdx b/docs/components/anthropicimageblockparamsource.mdx new file mode 100644 index 00000000..7a6eede7 --- /dev/null +++ b/docs/components/anthropicimageblockparamsource.mdx @@ -0,0 +1,18 @@ +--- +title: "AnthropicImageBlockParamSource" +--- + +## Supported Types + +### `components.AnthropicBase64ImageSource` + +```python +value: components.AnthropicBase64ImageSource = /* values here */ +``` + +### `components.AnthropicURLImageSource` + +```python +value: components.AnthropicURLImageSource = /* values here */ +``` + diff --git a/docs/components/anthropicimageblockparamtype.mdx b/docs/components/anthropicimageblockparamtype.mdx new file mode 100644 index 00000000..eeff0ef3 --- /dev/null +++ b/docs/components/anthropicimageblockparamtype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicImageBlockParamType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicImageBlockParamType +value: AnthropicImageBlockParamType = "image" +``` + + +## Values + +- `"image"` diff --git a/docs/components/anthropicimagemimetype.mdx b/docs/components/anthropicimagemimetype.mdx new file mode 100644 index 00000000..c89e385a --- /dev/null +++ b/docs/components/anthropicimagemimetype.mdx @@ -0,0 +1,22 @@ +--- +title: "AnthropicImageMimeType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicImageMimeType + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: AnthropicImageMimeType = "image/jpeg" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"image/jpeg"` +- `"image/png"` +- `"image/gif"` +- `"image/webp"` diff --git a/docs/components/anthropicinputtokensclearatleast.mdx b/docs/components/anthropicinputtokensclearatleast.mdx new file mode 100644 index 00000000..0c85fad2 --- /dev/null +++ b/docs/components/anthropicinputtokensclearatleast.mdx @@ -0,0 +1,10 @@ +--- +title: "AnthropicInputTokensClearAtLeast" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `type` | [components.AnthropicInputTokensClearAtLeastType](../components/anthropicinputtokensclearatleasttype.mdx) | :heavy_check_mark: | N/A | +| `value` | *int* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/anthropicinputtokensclearatleasttype.mdx b/docs/components/anthropicinputtokensclearatleasttype.mdx new file mode 100644 index 00000000..315dcc84 --- /dev/null +++ b/docs/components/anthropicinputtokensclearatleasttype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicInputTokensClearAtLeastType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicInputTokensClearAtLeastType +value: AnthropicInputTokensClearAtLeastType = "input_tokens" +``` + + +## Values + +- `"input_tokens"` diff --git a/docs/components/anthropicinputtokenstrigger.mdx b/docs/components/anthropicinputtokenstrigger.mdx new file mode 100644 index 00000000..72fe90a5 --- /dev/null +++ b/docs/components/anthropicinputtokenstrigger.mdx @@ -0,0 +1,10 @@ +--- +title: "AnthropicInputTokensTrigger" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `type` | [components.AnthropicInputTokensTriggerType](../components/anthropicinputtokenstriggertype.mdx) | :heavy_check_mark: | N/A | +| `value` | *int* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/anthropicinputtokenstriggertype.mdx b/docs/components/anthropicinputtokenstriggertype.mdx new file mode 100644 index 00000000..2b0b01f8 --- /dev/null +++ b/docs/components/anthropicinputtokenstriggertype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicInputTokensTriggerType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicInputTokensTriggerType +value: AnthropicInputTokensTriggerType = "input_tokens" +``` + + +## Values + +- `"input_tokens"` diff --git a/docs/components/anthropiciterationcachecreation.mdx b/docs/components/anthropiciterationcachecreation.mdx new file mode 100644 index 00000000..29b33e64 --- /dev/null +++ b/docs/components/anthropiciterationcachecreation.mdx @@ -0,0 +1,10 @@ +--- +title: "AnthropicIterationCacheCreation" +--- + +## Fields + +| Field | Type | Required | Description | +| --------------------------- | --------------------------- | --------------------------- | --------------------------- | +| `ephemeral_1h_input_tokens` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `ephemeral_5m_input_tokens` | *Optional[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/anthropicmessageusageiteration.mdx b/docs/components/anthropicmessageusageiteration.mdx new file mode 100644 index 00000000..01ec99b0 --- /dev/null +++ b/docs/components/anthropicmessageusageiteration.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicMessageUsageIteration" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `cache_creation` | [OptionalNullable[components.AnthropicIterationCacheCreation]](../components/anthropiciterationcachecreation.mdx) | :heavy_minus_sign: | N/A | \{
"ephemeral_1h_input_tokens": 0,
"ephemeral_5m_input_tokens": 0
} | +| `cache_creation_input_tokens` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `cache_read_input_tokens` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `input_tokens` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `output_tokens` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `model` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `type` | [components.AnthropicMessageUsageIterationType](../components/anthropicmessageusageiterationtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/anthropicmessageusageiterationtype.mdx b/docs/components/anthropicmessageusageiterationtype.mdx new file mode 100644 index 00000000..e8cb0341 --- /dev/null +++ b/docs/components/anthropicmessageusageiterationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicMessageUsageIterationType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicMessageUsageIterationType +value: AnthropicMessageUsageIterationType = "message" +``` + + +## Values + +- `"message"` diff --git a/docs/components/anthropicplaintextsource.mdx b/docs/components/anthropicplaintextsource.mdx new file mode 100644 index 00000000..3a07d04f --- /dev/null +++ b/docs/components/anthropicplaintextsource.mdx @@ -0,0 +1,11 @@ +--- +title: "AnthropicPlainTextSource" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `data` | *str* | :heavy_check_mark: | N/A | +| `media_type` | [components.AnthropicPlainTextSourceMediaType](../components/anthropicplaintextsourcemediatype.mdx) | :heavy_check_mark: | N/A | +| `type` | [components.AnthropicPlainTextSourceType](../components/anthropicplaintextsourcetype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/anthropicplaintextsourcemediatype.mdx b/docs/components/anthropicplaintextsourcemediatype.mdx new file mode 100644 index 00000000..2c017cc5 --- /dev/null +++ b/docs/components/anthropicplaintextsourcemediatype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicPlainTextSourceMediaType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicPlainTextSourceMediaType +value: AnthropicPlainTextSourceMediaType = "text/plain" +``` + + +## Values + +- `"text/plain"` diff --git a/docs/components/anthropicplaintextsourcetype.mdx b/docs/components/anthropicplaintextsourcetype.mdx new file mode 100644 index 00000000..a538343b --- /dev/null +++ b/docs/components/anthropicplaintextsourcetype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicPlainTextSourceType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicPlainTextSourceType +value: AnthropicPlainTextSourceType = "text" +``` + + +## Values + +- `"text"` diff --git a/docs/components/anthropicsearchresultblockparam.mdx b/docs/components/anthropicsearchresultblockparam.mdx new file mode 100644 index 00000000..517785e7 --- /dev/null +++ b/docs/components/anthropicsearchresultblockparam.mdx @@ -0,0 +1,14 @@ +--- +title: "AnthropicSearchResultBlockParam" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `citations` | [Optional[components.AnthropicSearchResultBlockParamCitations]](../components/anthropicsearchresultblockparamcitations.mdx) | :heavy_minus_sign: | N/A | | +| `content` | List[[components.AnthropicTextBlockParam](../components/anthropictextblockparam.mdx)] | :heavy_check_mark: | N/A | | +| `source` | *str* | :heavy_check_mark: | N/A | | +| `title` | *str* | :heavy_check_mark: | N/A | | +| `type` | [components.AnthropicSearchResultBlockParamType](../components/anthropicsearchresultblockparamtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/anthropicsearchresultblockparamcitations.mdx b/docs/components/anthropicsearchresultblockparamcitations.mdx new file mode 100644 index 00000000..107bda32 --- /dev/null +++ b/docs/components/anthropicsearchresultblockparamcitations.mdx @@ -0,0 +1,9 @@ +--- +title: "AnthropicSearchResultBlockParamCitations" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `enabled` | *Optional[bool]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/anthropicsearchresultblockparamtype.mdx b/docs/components/anthropicsearchresultblockparamtype.mdx new file mode 100644 index 00000000..302faea5 --- /dev/null +++ b/docs/components/anthropicsearchresultblockparamtype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicSearchResultBlockParamType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicSearchResultBlockParamType +value: AnthropicSearchResultBlockParamType = "search_result" +``` + + +## Values + +- `"search_result"` diff --git a/docs/components/anthropicspeed.mdx b/docs/components/anthropicspeed.mdx new file mode 100644 index 00000000..6f1e9ce8 --- /dev/null +++ b/docs/components/anthropicspeed.mdx @@ -0,0 +1,20 @@ +--- +title: "AnthropicSpeed" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicSpeed + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: AnthropicSpeed = "fast" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"fast"` +- `"standard"` diff --git a/docs/components/anthropictextblockparam.mdx b/docs/components/anthropictextblockparam.mdx new file mode 100644 index 00000000..6d00495d --- /dev/null +++ b/docs/components/anthropictextblockparam.mdx @@ -0,0 +1,12 @@ +--- +title: "AnthropicTextBlockParam" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `citations` | List[[components.Citation](../components/citation.mdx)] | :heavy_minus_sign: | N/A | | +| `text` | *str* | :heavy_check_mark: | N/A | | +| `type` | [components.AnthropicTextBlockParamType](../components/anthropictextblockparamtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/anthropictextblockparamtype.mdx b/docs/components/anthropictextblockparamtype.mdx new file mode 100644 index 00000000..b6b0d6f9 --- /dev/null +++ b/docs/components/anthropictextblockparamtype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicTextBlockParamType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicTextBlockParamType +value: AnthropicTextBlockParamType = "text" +``` + + +## Values + +- `"text"` diff --git a/docs/components/anthropicthinkingdisplay.mdx b/docs/components/anthropicthinkingdisplay.mdx new file mode 100644 index 00000000..e30b6f74 --- /dev/null +++ b/docs/components/anthropicthinkingdisplay.mdx @@ -0,0 +1,20 @@ +--- +title: "AnthropicThinkingDisplay" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicThinkingDisplay + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: AnthropicThinkingDisplay = "summarized" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"summarized"` +- `"omitted"` diff --git a/docs/components/anthropicthinkingturns.mdx b/docs/components/anthropicthinkingturns.mdx new file mode 100644 index 00000000..9c920215 --- /dev/null +++ b/docs/components/anthropicthinkingturns.mdx @@ -0,0 +1,10 @@ +--- +title: "AnthropicThinkingTurns" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `type` | [components.AnthropicThinkingTurnsType](../components/anthropicthinkingturnstype.mdx) | :heavy_check_mark: | N/A | +| `value` | *int* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/anthropicthinkingturnstype.mdx b/docs/components/anthropicthinkingturnstype.mdx new file mode 100644 index 00000000..c1034a41 --- /dev/null +++ b/docs/components/anthropicthinkingturnstype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicThinkingTurnsType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicThinkingTurnsType +value: AnthropicThinkingTurnsType = "thinking_turns" +``` + + +## Values + +- `"thinking_turns"` diff --git a/docs/components/anthropictooluseskeep.mdx b/docs/components/anthropictooluseskeep.mdx new file mode 100644 index 00000000..56a3b082 --- /dev/null +++ b/docs/components/anthropictooluseskeep.mdx @@ -0,0 +1,10 @@ +--- +title: "AnthropicToolUsesKeep" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `type` | [components.AnthropicToolUsesKeepType](../components/anthropictooluseskeeptype.mdx) | :heavy_check_mark: | N/A | +| `value` | *int* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/anthropictooluseskeeptype.mdx b/docs/components/anthropictooluseskeeptype.mdx new file mode 100644 index 00000000..55631753 --- /dev/null +++ b/docs/components/anthropictooluseskeeptype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicToolUsesKeepType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicToolUsesKeepType +value: AnthropicToolUsesKeepType = "tool_uses" +``` + + +## Values + +- `"tool_uses"` diff --git a/docs/components/anthropictoolusestrigger.mdx b/docs/components/anthropictoolusestrigger.mdx new file mode 100644 index 00000000..ddf14633 --- /dev/null +++ b/docs/components/anthropictoolusestrigger.mdx @@ -0,0 +1,10 @@ +--- +title: "AnthropicToolUsesTrigger" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `type` | [components.AnthropicToolUsesTriggerType](../components/anthropictoolusestriggertype.mdx) | :heavy_check_mark: | N/A | +| `value` | *int* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/anthropictoolusestriggertype.mdx b/docs/components/anthropictoolusestriggertype.mdx new file mode 100644 index 00000000..0f467627 --- /dev/null +++ b/docs/components/anthropictoolusestriggertype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicToolUsesTriggerType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicToolUsesTriggerType +value: AnthropicToolUsesTriggerType = "tool_uses" +``` + + +## Values + +- `"tool_uses"` diff --git a/docs/components/anthropicunknownusageiteration.mdx b/docs/components/anthropicunknownusageiteration.mdx new file mode 100644 index 00000000..9a298f50 --- /dev/null +++ b/docs/components/anthropicunknownusageiteration.mdx @@ -0,0 +1,14 @@ +--- +title: "AnthropicUnknownUsageIteration" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `cache_creation` | [OptionalNullable[components.AnthropicIterationCacheCreation]](../components/anthropiciterationcachecreation.mdx) | :heavy_minus_sign: | N/A | \{
"ephemeral_1h_input_tokens": 0,
"ephemeral_5m_input_tokens": 0
} | +| `cache_creation_input_tokens` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `cache_read_input_tokens` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `input_tokens` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `output_tokens` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `type` | *str* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/anthropicurlimagesource.mdx b/docs/components/anthropicurlimagesource.mdx new file mode 100644 index 00000000..ac913605 --- /dev/null +++ b/docs/components/anthropicurlimagesource.mdx @@ -0,0 +1,10 @@ +--- +title: "AnthropicURLImageSource" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `type` | [components.AnthropicURLImageSourceType](../components/anthropicurlimagesourcetype.mdx) | :heavy_check_mark: | N/A | +| `url` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/anthropicurlimagesourcetype.mdx b/docs/components/anthropicurlimagesourcetype.mdx new file mode 100644 index 00000000..86b72b87 --- /dev/null +++ b/docs/components/anthropicurlimagesourcetype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicURLImageSourceType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicURLImageSourceType +value: AnthropicURLImageSourceType = "url" +``` + + +## Values + +- `"url"` diff --git a/docs/components/anthropicurlpdfsource.mdx b/docs/components/anthropicurlpdfsource.mdx new file mode 100644 index 00000000..50d60b95 --- /dev/null +++ b/docs/components/anthropicurlpdfsource.mdx @@ -0,0 +1,10 @@ +--- +title: "AnthropicURLPdfSource" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `type` | [components.AnthropicURLPdfSourceType](../components/anthropicurlpdfsourcetype.mdx) | :heavy_check_mark: | N/A | +| `url` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/anthropicurlpdfsourcetype.mdx b/docs/components/anthropicurlpdfsourcetype.mdx new file mode 100644 index 00000000..717ed3b5 --- /dev/null +++ b/docs/components/anthropicurlpdfsourcetype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicURLPdfSourceType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicURLPdfSourceType +value: AnthropicURLPdfSourceType = "url" +``` + + +## Values + +- `"url"` diff --git a/docs/components/anthropicusageiteration.mdx b/docs/components/anthropicusageiteration.mdx new file mode 100644 index 00000000..0ae331c1 --- /dev/null +++ b/docs/components/anthropicusageiteration.mdx @@ -0,0 +1,30 @@ +--- +title: "AnthropicUsageIteration" +--- + +## Supported Types + +### `components.AnthropicCompactionUsageIteration` + +```python +value: components.AnthropicCompactionUsageIteration = /* values here */ +``` + +### `components.AnthropicMessageUsageIteration` + +```python +value: components.AnthropicMessageUsageIteration = /* values here */ +``` + +### `components.AnthropicAdvisorMessageUsageIteration` + +```python +value: components.AnthropicAdvisorMessageUsageIteration = /* values here */ +``` + +### `components.AnthropicUnknownUsageIteration` + +```python +value: components.AnthropicUnknownUsageIteration = /* values here */ +``` + diff --git a/docs/components/anthropicwebsearchresultblockparam.mdx b/docs/components/anthropicwebsearchresultblockparam.mdx new file mode 100644 index 00000000..ddcfad39 --- /dev/null +++ b/docs/components/anthropicwebsearchresultblockparam.mdx @@ -0,0 +1,13 @@ +--- +title: "AnthropicWebSearchResultBlockParam" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `encrypted_content` | *str* | :heavy_check_mark: | N/A | +| `page_age` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `title` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.AnthropicWebSearchResultBlockParamType](../components/anthropicwebsearchresultblockparamtype.mdx) | :heavy_check_mark: | N/A | +| `url` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/anthropicwebsearchresultblockparamtype.mdx b/docs/components/anthropicwebsearchresultblockparamtype.mdx new file mode 100644 index 00000000..ed07bc52 --- /dev/null +++ b/docs/components/anthropicwebsearchresultblockparamtype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicWebSearchResultBlockParamType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicWebSearchResultBlockParamType +value: AnthropicWebSearchResultBlockParamType = "web_search_result" +``` + + +## Values + +- `"web_search_result"` diff --git a/docs/components/anthropicwebsearchtooluserlocation.mdx b/docs/components/anthropicwebsearchtooluserlocation.mdx new file mode 100644 index 00000000..0096c9dc --- /dev/null +++ b/docs/components/anthropicwebsearchtooluserlocation.mdx @@ -0,0 +1,13 @@ +--- +title: "AnthropicWebSearchToolUserLocation" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `city` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `country` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `region` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `timezone` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `type` | [components.AnthropicWebSearchToolUserLocationType](../components/anthropicwebsearchtooluserlocationtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/anthropicwebsearchtooluserlocationtype.mdx b/docs/components/anthropicwebsearchtooluserlocationtype.mdx new file mode 100644 index 00000000..c0387e05 --- /dev/null +++ b/docs/components/anthropicwebsearchtooluserlocationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "AnthropicWebSearchToolUserLocationType" +--- + +## Example Usage + +```python +from openrouter.components import AnthropicWebSearchToolUserLocationType +value: AnthropicWebSearchToolUserLocationType = "approximate" +``` + + +## Values + +- `"approximate"` diff --git a/docs/components/apierrortype.mdx b/docs/components/apierrortype.mdx new file mode 100644 index 00000000..53c45463 --- /dev/null +++ b/docs/components/apierrortype.mdx @@ -0,0 +1,47 @@ +--- +title: "APIErrorType" +--- + +Canonical OpenRouter error type, stable across all API formats + +## Example Usage + +```python +from openrouter.components import APIErrorType + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: APIErrorType = "context_length_exceeded" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"context_length_exceeded"` +- `"max_tokens_exceeded"` +- `"token_limit_exceeded"` +- `"string_too_long"` +- `"authentication"` +- `"permission_denied"` +- `"payment_required"` +- `"rate_limit_exceeded"` +- `"provider_overloaded"` +- `"provider_unavailable"` +- `"invalid_request"` +- `"invalid_prompt"` +- `"not_found"` +- `"precondition_failed"` +- `"payload_too_large"` +- `"unprocessable"` +- `"content_policy_violation"` +- `"refusal"` +- `"invalid_image"` +- `"image_too_large"` +- `"image_too_small"` +- `"unsupported_image_format"` +- `"image_not_found"` +- `"image_download_failed"` +- `"server"` +- `"timeout"` +- `"unmapped"` diff --git a/docs/components/apitype.mdx b/docs/components/apitype.mdx new file mode 100644 index 00000000..185a0faa --- /dev/null +++ b/docs/components/apitype.mdx @@ -0,0 +1,27 @@ +--- +title: "APIType" +--- + +Type of API used for the generation + +## Example Usage + +```python +from openrouter.components import APIType + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: APIType = "completions" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"completions"` +- `"embeddings"` +- `"rerank"` +- `"tts"` +- `"stt"` +- `"video"` +- `"image"` diff --git a/docs/components/applypatchcallitem.mdx b/docs/components/applypatchcallitem.mdx new file mode 100644 index 00000000..69bc2b86 --- /dev/null +++ b/docs/components/applypatchcallitem.mdx @@ -0,0 +1,16 @@ +--- +title: "ApplyPatchCallItem" +--- + +A tool call emitted by the model requesting a V4A patch operation. The client applies the patch and echoes an `apply_patch_call_output` on the next turn. + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `call_id` | *str* | :heavy_check_mark: | N/A | | +| `id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `operation` | [components.ApplyPatchCallOperation](../components/applypatchcalloperation.mdx) | :heavy_check_mark: | The patch operation requested by an `apply_patch_call`. `create_file` and `update_file` carry a V4A diff; `delete_file` omits it. | \{
"diff": "@@ function main() \{\n+ console.log(\"hi\");\n }",
"path": "/src/main.ts",
"type": "update_file"
} | +| `status` | [components.ApplyPatchCallStatus](../components/applypatchcallstatus.mdx) | :heavy_check_mark: | Lifecycle state of an `apply_patch_call` output item. | completed | +| `type` | [components.ApplyPatchCallItemType](../components/applypatchcallitemtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/applypatchcallitemtype.mdx b/docs/components/applypatchcallitemtype.mdx new file mode 100644 index 00000000..23ee1f22 --- /dev/null +++ b/docs/components/applypatchcallitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ApplyPatchCallItemType" +--- + +## Example Usage + +```python +from openrouter.components import ApplyPatchCallItemType +value: ApplyPatchCallItemType = "apply_patch_call" +``` + + +## Values + +- `"apply_patch_call"` diff --git a/docs/components/applypatchcalloperation.mdx b/docs/components/applypatchcalloperation.mdx new file mode 100644 index 00000000..2159c816 --- /dev/null +++ b/docs/components/applypatchcalloperation.mdx @@ -0,0 +1,27 @@ +--- +title: "ApplyPatchCallOperation" +--- + +The patch operation requested by an `apply_patch_call`. `create_file` and `update_file` carry a V4A diff; `delete_file` omits it. + + +## Supported Types + +### `components.ApplyPatchCreateFileOperation` + +```python +value: components.ApplyPatchCreateFileOperation = /* values here */ +``` + +### `components.ApplyPatchDeleteFileOperation` + +```python +value: components.ApplyPatchDeleteFileOperation = /* values here */ +``` + +### `components.ApplyPatchUpdateFileOperation` + +```python +value: components.ApplyPatchUpdateFileOperation = /* values here */ +``` + diff --git a/docs/components/applypatchcalloperationdiffdeltaevent.mdx b/docs/components/applypatchcalloperationdiffdeltaevent.mdx new file mode 100644 index 00000000..d8c4af6a --- /dev/null +++ b/docs/components/applypatchcalloperationdiffdeltaevent.mdx @@ -0,0 +1,16 @@ +--- +title: "ApplyPatchCallOperationDiffDeltaEvent" +--- + +Incremental chunk of `operation.diff` for an `apply_patch_call`. Matches OpenAI's streaming shape. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `delta` | *str* | :heavy_check_mark: | N/A | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.ApplyPatchCallOperationDiffDeltaEventType](../components/applypatchcalloperationdiffdeltaeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/applypatchcalloperationdiffdeltaeventtype.mdx b/docs/components/applypatchcalloperationdiffdeltaeventtype.mdx new file mode 100644 index 00000000..9647bceb --- /dev/null +++ b/docs/components/applypatchcalloperationdiffdeltaeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ApplyPatchCallOperationDiffDeltaEventType" +--- + +## Example Usage + +```python +from openrouter.components import ApplyPatchCallOperationDiffDeltaEventType +value: ApplyPatchCallOperationDiffDeltaEventType = "response.apply_patch_call_operation_diff.delta" +``` + + +## Values + +- `"response.apply_patch_call_operation_diff.delta"` diff --git a/docs/components/applypatchcalloperationdiffdoneevent.mdx b/docs/components/applypatchcalloperationdiffdoneevent.mdx new file mode 100644 index 00000000..c722bd49 --- /dev/null +++ b/docs/components/applypatchcalloperationdiffdoneevent.mdx @@ -0,0 +1,16 @@ +--- +title: "ApplyPatchCallOperationDiffDoneEvent" +--- + +Emitted when `operation.diff` streaming completes for an `apply_patch_call`. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `diff` | *str* | :heavy_check_mark: | N/A | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.ApplyPatchCallOperationDiffDoneEventType](../components/applypatchcalloperationdiffdoneeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/applypatchcalloperationdiffdoneeventtype.mdx b/docs/components/applypatchcalloperationdiffdoneeventtype.mdx new file mode 100644 index 00000000..9bddff0f --- /dev/null +++ b/docs/components/applypatchcalloperationdiffdoneeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ApplyPatchCallOperationDiffDoneEventType" +--- + +## Example Usage + +```python +from openrouter.components import ApplyPatchCallOperationDiffDoneEventType +value: ApplyPatchCallOperationDiffDoneEventType = "response.apply_patch_call_operation_diff.done" +``` + + +## Values + +- `"response.apply_patch_call_operation_diff.done"` diff --git a/docs/components/applypatchcalloutputitem.mdx b/docs/components/applypatchcalloutputitem.mdx new file mode 100644 index 00000000..6ef61a86 --- /dev/null +++ b/docs/components/applypatchcalloutputitem.mdx @@ -0,0 +1,16 @@ +--- +title: "ApplyPatchCallOutputItem" +--- + +The client's echo of an `apply_patch_call` after applying the patch. `output` is an optional human-readable log; `status` is `completed` when the patch was applied successfully, `failed` otherwise. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `call_id` | *str* | :heavy_check_mark: | N/A | +| `id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `output` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `status` | [components.ApplyPatchCallOutputItemStatus](../components/applypatchcalloutputitemstatus.mdx) | :heavy_check_mark: | N/A | +| `type` | [components.ApplyPatchCallOutputItemType](../components/applypatchcalloutputitemtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/applypatchcalloutputitemstatus.mdx b/docs/components/applypatchcalloutputitemstatus.mdx new file mode 100644 index 00000000..435847d2 --- /dev/null +++ b/docs/components/applypatchcalloutputitemstatus.mdx @@ -0,0 +1,20 @@ +--- +title: "ApplyPatchCallOutputItemStatus" +--- + +## Example Usage + +```python +from openrouter.components import ApplyPatchCallOutputItemStatus + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ApplyPatchCallOutputItemStatus = "completed" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"completed"` +- `"failed"` diff --git a/docs/components/applypatchcalloutputitemtype.mdx b/docs/components/applypatchcalloutputitemtype.mdx new file mode 100644 index 00000000..b0adb3c3 --- /dev/null +++ b/docs/components/applypatchcalloutputitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ApplyPatchCallOutputItemType" +--- + +## Example Usage + +```python +from openrouter.components import ApplyPatchCallOutputItemType +value: ApplyPatchCallOutputItemType = "apply_patch_call_output" +``` + + +## Values + +- `"apply_patch_call_output"` diff --git a/docs/components/applypatchcallstatus.mdx b/docs/components/applypatchcallstatus.mdx new file mode 100644 index 00000000..13f21ea1 --- /dev/null +++ b/docs/components/applypatchcallstatus.mdx @@ -0,0 +1,22 @@ +--- +title: "ApplyPatchCallStatus" +--- + +Lifecycle state of an `apply_patch_call` output item. + +## Example Usage + +```python +from openrouter.components import ApplyPatchCallStatus + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ApplyPatchCallStatus = "in_progress" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"in_progress"` +- `"completed"` diff --git a/docs/components/applypatchcreatefileoperation.mdx b/docs/components/applypatchcreatefileoperation.mdx new file mode 100644 index 00000000..37aa1921 --- /dev/null +++ b/docs/components/applypatchcreatefileoperation.mdx @@ -0,0 +1,14 @@ +--- +title: "ApplyPatchCreateFileOperation" +--- + +The `create_file` variant of an `apply_patch_call.operation`. Carries a V4A diff describing the new file contents. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `diff` | *str* | :heavy_check_mark: | N/A | +| `path` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.ApplyPatchCreateFileOperationType](../components/applypatchcreatefileoperationtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/applypatchcreatefileoperationtype.mdx b/docs/components/applypatchcreatefileoperationtype.mdx new file mode 100644 index 00000000..7a95b9f6 --- /dev/null +++ b/docs/components/applypatchcreatefileoperationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ApplyPatchCreateFileOperationType" +--- + +## Example Usage + +```python +from openrouter.components import ApplyPatchCreateFileOperationType +value: ApplyPatchCreateFileOperationType = "create_file" +``` + + +## Values + +- `"create_file"` diff --git a/docs/components/applypatchdeletefileoperation.mdx b/docs/components/applypatchdeletefileoperation.mdx new file mode 100644 index 00000000..49463ffa --- /dev/null +++ b/docs/components/applypatchdeletefileoperation.mdx @@ -0,0 +1,13 @@ +--- +title: "ApplyPatchDeleteFileOperation" +--- + +The `delete_file` variant of an `apply_patch_call.operation`. Identifies the file to remove; no diff is required. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `path` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.ApplyPatchDeleteFileOperationType](../components/applypatchdeletefileoperationtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/applypatchdeletefileoperationtype.mdx b/docs/components/applypatchdeletefileoperationtype.mdx new file mode 100644 index 00000000..8866b2a2 --- /dev/null +++ b/docs/components/applypatchdeletefileoperationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ApplyPatchDeleteFileOperationType" +--- + +## Example Usage + +```python +from openrouter.components import ApplyPatchDeleteFileOperationType +value: ApplyPatchDeleteFileOperationType = "delete_file" +``` + + +## Values + +- `"delete_file"` diff --git a/docs/components/applypatchengineenum.mdx b/docs/components/applypatchengineenum.mdx new file mode 100644 index 00000000..ec6e5078 --- /dev/null +++ b/docs/components/applypatchengineenum.mdx @@ -0,0 +1,23 @@ +--- +title: "ApplyPatchEngineEnum" +--- + +Which apply_patch engine to use. "auto" (default) uses native passthrough when the endpoint advertises native apply_patch support, otherwise falls back to OpenRouter's HITL validator. "native" forces native passthrough — when the endpoint does not support native, the request falls back to HITL. "openrouter" always runs the HITL validator. Native passthrough streams the diff incrementally via `apply_patch_call_operation_diff.delta` events; HITL buffers the diff for atomic delivery as a single delta. + +## Example Usage + +```python +from openrouter.components import ApplyPatchEngineEnum + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ApplyPatchEngineEnum = "auto" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"auto"` +- `"native"` +- `"openrouter"` diff --git a/docs/components/applypatchservertool.mdx b/docs/components/applypatchservertool.mdx new file mode 100644 index 00000000..b8c80524 --- /dev/null +++ b/docs/components/applypatchservertool.mdx @@ -0,0 +1,12 @@ +--- +title: "ApplyPatchServerTool" +--- + +Apply patch tool configuration + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `type` | [components.ApplyPatchServerToolType](../components/applypatchservertooltype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/applypatchservertoolconfig.mdx b/docs/components/applypatchservertoolconfig.mdx new file mode 100644 index 00000000..1ec1793d --- /dev/null +++ b/docs/components/applypatchservertoolconfig.mdx @@ -0,0 +1,12 @@ +--- +title: "ApplyPatchServerToolConfig" +--- + +Configuration for the openrouter:apply_patch server tool + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `engine` | [Optional[components.ApplyPatchEngineEnum]](../components/applypatchengineenum.mdx) | :heavy_minus_sign: | Which apply_patch engine to use. "auto" (default) uses native passthrough when the endpoint advertises native apply_patch support, otherwise falls back to OpenRouter's HITL validator. "native" forces native passthrough — when the endpoint does not support native, the request falls back to HITL. "openrouter" always runs the HITL validator. Native passthrough streams the diff incrementally via `apply_patch_call_operation_diff.delta` events; HITL buffers the diff for atomic delivery as a single delta. | auto | \ No newline at end of file diff --git a/docs/components/applypatchservertoolopenrouter.mdx b/docs/components/applypatchservertoolopenrouter.mdx new file mode 100644 index 00000000..98531bfb --- /dev/null +++ b/docs/components/applypatchservertoolopenrouter.mdx @@ -0,0 +1,13 @@ +--- +title: "ApplyPatchServerToolOpenRouter" +--- + +OpenRouter built-in server tool: validates V4A diff patches for file operations (create, update, delete). Restricted to the Responses API. + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `parameters` | [Optional[components.ApplyPatchServerToolConfig]](../components/applypatchservertoolconfig.mdx) | :heavy_minus_sign: | Configuration for the openrouter:apply_patch server tool | \{
"engine": "auto"
} | +| `type` | [components.ApplyPatchServerToolOpenRouterType](../components/applypatchservertoolopenroutertype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/applypatchservertoolopenroutertype.mdx b/docs/components/applypatchservertoolopenroutertype.mdx new file mode 100644 index 00000000..cfe1c786 --- /dev/null +++ b/docs/components/applypatchservertoolopenroutertype.mdx @@ -0,0 +1,15 @@ +--- +title: "ApplyPatchServerToolOpenRouterType" +--- + +## Example Usage + +```python +from openrouter.components import ApplyPatchServerToolOpenRouterType +value: ApplyPatchServerToolOpenRouterType = "openrouter:apply_patch" +``` + + +## Values + +- `"openrouter:apply_patch"` diff --git a/docs/components/applypatchservertooltype.mdx b/docs/components/applypatchservertooltype.mdx new file mode 100644 index 00000000..e97bf57a --- /dev/null +++ b/docs/components/applypatchservertooltype.mdx @@ -0,0 +1,15 @@ +--- +title: "ApplyPatchServerToolType" +--- + +## Example Usage + +```python +from openrouter.components import ApplyPatchServerToolType +value: ApplyPatchServerToolType = "apply_patch" +``` + + +## Values + +- `"apply_patch"` diff --git a/docs/components/applypatchupdatefileoperation.mdx b/docs/components/applypatchupdatefileoperation.mdx new file mode 100644 index 00000000..458f7867 --- /dev/null +++ b/docs/components/applypatchupdatefileoperation.mdx @@ -0,0 +1,14 @@ +--- +title: "ApplyPatchUpdateFileOperation" +--- + +The `update_file` variant of an `apply_patch_call.operation`. Carries a V4A diff describing edits to an existing file. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `diff` | *str* | :heavy_check_mark: | N/A | +| `path` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.ApplyPatchUpdateFileOperationType](../components/applypatchupdatefileoperationtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/applypatchupdatefileoperationtype.mdx b/docs/components/applypatchupdatefileoperationtype.mdx new file mode 100644 index 00000000..d76a0f84 --- /dev/null +++ b/docs/components/applypatchupdatefileoperationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ApplyPatchUpdateFileOperationType" +--- + +## Example Usage + +```python +from openrouter.components import ApplyPatchUpdateFileOperationType +value: ApplyPatchUpdateFileOperationType = "update_file" +``` + + +## Values + +- `"update_file"` diff --git a/docs/components/apprankingsitem.mdx b/docs/components/apprankingsitem.mdx new file mode 100644 index 00000000..08cc35c0 --- /dev/null +++ b/docs/components/apprankingsitem.mdx @@ -0,0 +1,13 @@ +--- +title: "AppRankingsItem" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `app_id` | *int* | :heavy_check_mark: | Stable numeric identifier of the app on OpenRouter. | 12345 | +| `app_name` | *str* | :heavy_check_mark: | Public display name of the app. | Cline | +| `rank` | *int* | :heavy_check_mark: | 1-based position of the app within this response, per the requested `sort`. | 1 | +| `total_requests` | *int* | :heavy_check_mark: | Number of requests attributed to the app inside the date window. | 4321 | +| `total_tokens` | *str* | :heavy_check_mark: | Sum of `prompt_tokens + completion_tokens` attributed to the app inside the date window, returned as a decimal string so 64-bit values are not truncated. | 12345678 | \ No newline at end of file diff --git a/docs/components/apprankingsresponse.mdx b/docs/components/apprankingsresponse.mdx new file mode 100644 index 00000000..06ea87da --- /dev/null +++ b/docs/components/apprankingsresponse.mdx @@ -0,0 +1,10 @@ +--- +title: "AppRankingsResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `data` | List[[components.AppRankingsItem](../components/apprankingsitem.mdx)] | :heavy_check_mark: | Apps ranked per the requested `sort`, re-numbered 1..N after category filtering. `popular` sorts by `total_tokens` descending; `trending` sorts by absolute excess token growth descending and may return fewer than `limit` rows when few apps are growing. | | +| `meta` | [components.RankingsDailyMeta](../components/rankingsdailymeta.mdx) | :heavy_check_mark: | N/A | \{
"as_of": "2026-05-12T02:00:00Z",
"end_date": "2026-05-11",
"start_date": "2026-04-12",
"version": "v1"
} | \ No newline at end of file diff --git a/docs/components/architecture.md b/docs/components/architecture.mdx similarity index 63% rename from docs/components/architecture.md rename to docs/components/architecture.mdx index 335e0104..277a0da5 100644 --- a/docs/components/architecture.md +++ b/docs/components/architecture.mdx @@ -1,4 +1,6 @@ -# Architecture +--- +title: "Architecture" +--- Model architecture information @@ -7,8 +9,8 @@ Model architecture information | Field | Type | Required | Description | Example | | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| `input_modalities` | List[[components.InputModality](../components/inputmodality.md)] | :heavy_check_mark: | Supported input modalities | | -| `instruct_type` | [Nullable[components.InstructType]](../components/instructtype.md) | :heavy_check_mark: | Instruction format type | chatml | +| `input_modalities` | List[[components.InputModality](../components/inputmodality.mdx)] | :heavy_check_mark: | Supported input modalities | | +| `instruct_type` | [Nullable[components.InstructType]](../components/instructtype.mdx) | :heavy_check_mark: | Instruction format type | chatml | | `modality` | *Nullable[str]* | :heavy_check_mark: | Primary modality of the model | text | -| `output_modalities` | List[[components.OutputModality](../components/outputmodality.md)] | :heavy_check_mark: | Supported output modalities | | -| `tokenizer` | [Nullable[components.Tokenizer]](../components/tokenizer.md) | :heavy_check_mark: | N/A | GPT | \ No newline at end of file +| `output_modalities` | List[[components.OutputModality](../components/outputmodality.mdx)] | :heavy_check_mark: | Supported output modalities | | +| `tokenizer` | [Nullable[components.Tokenizer]](../components/tokenizer.mdx) | :heavy_check_mark: | N/A | GPT | \ No newline at end of file diff --git a/docs/operations/imageurl.md b/docs/components/audiourl.mdx similarity index 91% rename from docs/operations/imageurl.md rename to docs/components/audiourl.mdx index cd90c034..ef98b1de 100644 --- a/docs/operations/imageurl.md +++ b/docs/components/audiourl.mdx @@ -1,5 +1,6 @@ -# ImageURL - +--- +title: "AudioURL" +--- ## Fields diff --git a/docs/components/autorouterplugin.mdx b/docs/components/autorouterplugin.mdx new file mode 100644 index 00000000..6fe8acaa --- /dev/null +++ b/docs/components/autorouterplugin.mdx @@ -0,0 +1,12 @@ +--- +title: "AutoRouterPlugin" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `allowed_models` | List[*str*] | :heavy_minus_sign: | List of model patterns to filter which models the auto-router can route between. Supports wildcards (e.g., "anthropic/*" matches all Anthropic models). When not specified, uses the default supported models list. | [
"anthropic/*",
"openai/gpt-4o",
"google/*"
] | +| `cost_quality_tradeoff` | *Optional[int]* | :heavy_minus_sign: | Controls cost vs. quality routing tradeoff (0–10). 0 = pure quality (best model regardless of cost), 10 = maximize for cost (cheapest model wins). Intermediate values blend quality and cost signals continuously. Defaults to 7. | 7 | +| `enabled` | *Optional[bool]* | :heavy_minus_sign: | Set to false to disable the auto-router plugin for this request. Defaults to true. | | +| `id` | [components.AutoRouterPluginID](../components/autorouterpluginid.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/autorouterpluginid.mdx b/docs/components/autorouterpluginid.mdx new file mode 100644 index 00000000..b3395732 --- /dev/null +++ b/docs/components/autorouterpluginid.mdx @@ -0,0 +1,15 @@ +--- +title: "AutoRouterPluginID" +--- + +## Example Usage + +```python +from openrouter.components import AutoRouterPluginID +value: AutoRouterPluginID = "auto-router" +``` + + +## Values + +- `"auto-router"` diff --git a/docs/components/badgatewayresponseerrordata.md b/docs/components/badgatewayresponseerrordata.mdx similarity index 93% rename from docs/components/badgatewayresponseerrordata.md rename to docs/components/badgatewayresponseerrordata.mdx index 9de5a893..df2de9f1 100644 --- a/docs/components/badgatewayresponseerrordata.md +++ b/docs/components/badgatewayresponseerrordata.mdx @@ -1,4 +1,6 @@ -# BadGatewayResponseErrorData +--- +title: "BadGatewayResponseErrorData" +--- Error data for BadGatewayResponse diff --git a/docs/components/badrequestresponseerrordata.md b/docs/components/badrequestresponseerrordata.mdx similarity index 93% rename from docs/components/badrequestresponseerrordata.md rename to docs/components/badrequestresponseerrordata.mdx index c36a56e6..3afce5cc 100644 --- a/docs/components/badrequestresponseerrordata.md +++ b/docs/components/badrequestresponseerrordata.mdx @@ -1,4 +1,6 @@ -# BadRequestResponseErrorData +--- +title: "BadRequestResponseErrorData" +--- Error data for BadRequestResponse diff --git a/docs/components/baseinputscontent1.mdx b/docs/components/baseinputscontent1.mdx new file mode 100644 index 00000000..e0824c06 --- /dev/null +++ b/docs/components/baseinputscontent1.mdx @@ -0,0 +1,30 @@ +--- +title: "BaseInputsContent1" +--- + +## Supported Types + +### `components.InputAudio` + +```python +value: components.InputAudio = /* values here */ +``` + +### `components.InputFile` + +```python +value: components.InputFile = /* values here */ +``` + +### `components.InputImage` + +```python +value: components.InputImage = /* values here */ +``` + +### `components.InputText` + +```python +value: components.InputText = /* values here */ +``` + diff --git a/docs/components/baseinputscontent2.mdx b/docs/components/baseinputscontent2.mdx new file mode 100644 index 00000000..079aa0b3 --- /dev/null +++ b/docs/components/baseinputscontent2.mdx @@ -0,0 +1,18 @@ +--- +title: "BaseInputsContent2" +--- + +## Supported Types + +### `List[components.BaseInputsContent1]` + +```python +value: List[components.BaseInputsContent1] = /* values here */ +``` + +### `str` + +```python +value: str = /* values here */ +``` + diff --git a/docs/components/baseinputsmessage.mdx b/docs/components/baseinputsmessage.mdx new file mode 100644 index 00000000..0c00444a --- /dev/null +++ b/docs/components/baseinputsmessage.mdx @@ -0,0 +1,12 @@ +--- +title: "BaseInputsMessage" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `content` | [components.BaseInputsContent2](../components/baseinputscontent2.mdx) | :heavy_check_mark: | N/A | +| `phase` | [OptionalNullable[components.BaseInputsPhaseUnion]](../components/baseinputsphaseunion.mdx) | :heavy_minus_sign: | N/A | +| `role` | [components.BaseInputsRoleUnion](../components/baseinputsroleunion.mdx) | :heavy_check_mark: | N/A | +| `type` | [Optional[components.BaseInputsType]](../components/baseinputstype.mdx) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/baseinputsphasecommentary.mdx b/docs/components/baseinputsphasecommentary.mdx new file mode 100644 index 00000000..78b77b35 --- /dev/null +++ b/docs/components/baseinputsphasecommentary.mdx @@ -0,0 +1,15 @@ +--- +title: "BaseInputsPhaseCommentary" +--- + +## Example Usage + +```python +from openrouter.components import BaseInputsPhaseCommentary +value: BaseInputsPhaseCommentary = "commentary" +``` + + +## Values + +- `"commentary"` diff --git a/docs/components/baseinputsphasefinalanswer.mdx b/docs/components/baseinputsphasefinalanswer.mdx new file mode 100644 index 00000000..0ff0427f --- /dev/null +++ b/docs/components/baseinputsphasefinalanswer.mdx @@ -0,0 +1,15 @@ +--- +title: "BaseInputsPhaseFinalAnswer" +--- + +## Example Usage + +```python +from openrouter.components import BaseInputsPhaseFinalAnswer +value: BaseInputsPhaseFinalAnswer = "final_answer" +``` + + +## Values + +- `"final_answer"` diff --git a/docs/components/baseinputsphaseunion.mdx b/docs/components/baseinputsphaseunion.mdx new file mode 100644 index 00000000..5a057843 --- /dev/null +++ b/docs/components/baseinputsphaseunion.mdx @@ -0,0 +1,24 @@ +--- +title: "BaseInputsPhaseUnion" +--- + +## Supported Types + +### `components.BaseInputsPhaseCommentary` + +```python +value: components.BaseInputsPhaseCommentary = /* values here */ +``` + +### `components.BaseInputsPhaseFinalAnswer` + +```python +value: components.BaseInputsPhaseFinalAnswer = /* values here */ +``` + +### `Any` + +```python +value: Any = /* values here */ +``` + diff --git a/docs/components/baseinputsroleassistant.mdx b/docs/components/baseinputsroleassistant.mdx new file mode 100644 index 00000000..ebf4315e --- /dev/null +++ b/docs/components/baseinputsroleassistant.mdx @@ -0,0 +1,15 @@ +--- +title: "BaseInputsRoleAssistant" +--- + +## Example Usage + +```python +from openrouter.components import BaseInputsRoleAssistant +value: BaseInputsRoleAssistant = "assistant" +``` + + +## Values + +- `"assistant"` diff --git a/docs/components/baseinputsroledeveloper.mdx b/docs/components/baseinputsroledeveloper.mdx new file mode 100644 index 00000000..edbe6df5 --- /dev/null +++ b/docs/components/baseinputsroledeveloper.mdx @@ -0,0 +1,15 @@ +--- +title: "BaseInputsRoleDeveloper" +--- + +## Example Usage + +```python +from openrouter.components import BaseInputsRoleDeveloper +value: BaseInputsRoleDeveloper = "developer" +``` + + +## Values + +- `"developer"` diff --git a/docs/components/baseinputsrolesystem.mdx b/docs/components/baseinputsrolesystem.mdx new file mode 100644 index 00000000..5d94f023 --- /dev/null +++ b/docs/components/baseinputsrolesystem.mdx @@ -0,0 +1,15 @@ +--- +title: "BaseInputsRoleSystem" +--- + +## Example Usage + +```python +from openrouter.components import BaseInputsRoleSystem +value: BaseInputsRoleSystem = "system" +``` + + +## Values + +- `"system"` diff --git a/docs/components/baseinputsroleunion.mdx b/docs/components/baseinputsroleunion.mdx new file mode 100644 index 00000000..31607b26 --- /dev/null +++ b/docs/components/baseinputsroleunion.mdx @@ -0,0 +1,30 @@ +--- +title: "BaseInputsRoleUnion" +--- + +## Supported Types + +### `components.BaseInputsRoleUser` + +```python +value: components.BaseInputsRoleUser = /* values here */ +``` + +### `components.BaseInputsRoleSystem` + +```python +value: components.BaseInputsRoleSystem = /* values here */ +``` + +### `components.BaseInputsRoleAssistant` + +```python +value: components.BaseInputsRoleAssistant = /* values here */ +``` + +### `components.BaseInputsRoleDeveloper` + +```python +value: components.BaseInputsRoleDeveloper = /* values here */ +``` + diff --git a/docs/components/baseinputsroleuser.mdx b/docs/components/baseinputsroleuser.mdx new file mode 100644 index 00000000..2ca95da4 --- /dev/null +++ b/docs/components/baseinputsroleuser.mdx @@ -0,0 +1,15 @@ +--- +title: "BaseInputsRoleUser" +--- + +## Example Usage + +```python +from openrouter.components import BaseInputsRoleUser +value: BaseInputsRoleUser = "user" +``` + + +## Values + +- `"user"` diff --git a/docs/components/baseinputstype.mdx b/docs/components/baseinputstype.mdx new file mode 100644 index 00000000..6bb25bd0 --- /dev/null +++ b/docs/components/baseinputstype.mdx @@ -0,0 +1,15 @@ +--- +title: "BaseInputsType" +--- + +## Example Usage + +```python +from openrouter.components import BaseInputsType +value: BaseInputsType = "message" +``` + + +## Values + +- `"message"` diff --git a/docs/components/baseinputsunion.mdx b/docs/components/baseinputsunion.mdx new file mode 100644 index 00000000..e006bcc0 --- /dev/null +++ b/docs/components/baseinputsunion.mdx @@ -0,0 +1,24 @@ +--- +title: "BaseInputsUnion" +--- + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `List[components.BaseInputsUnion1]` + +```python +value: List[components.BaseInputsUnion1] = /* values here */ +``` + +### `Any` + +```python +value: Any = /* values here */ +``` + diff --git a/docs/components/baseinputsunion1.mdx b/docs/components/baseinputsunion1.mdx new file mode 100644 index 00000000..633bd16e --- /dev/null +++ b/docs/components/baseinputsunion1.mdx @@ -0,0 +1,66 @@ +--- +title: "BaseInputsUnion1" +--- + +## Supported Types + +### `components.BaseInputsMessage` + +```python +value: components.BaseInputsMessage = /* values here */ +``` + +### `components.OpenAIResponseInputMessageItem` + +```python +value: components.OpenAIResponseInputMessageItem = /* values here */ +``` + +### `components.OpenAIResponseFunctionToolCallOutput` + +```python +value: components.OpenAIResponseFunctionToolCallOutput = /* values here */ +``` + +### `components.OpenAIResponseFunctionToolCall` + +```python +value: components.OpenAIResponseFunctionToolCall = /* values here */ +``` + +### `components.OutputItemImageGenerationCall` + +```python +value: components.OutputItemImageGenerationCall = /* values here */ +``` + +### `components.OutputMessage` + +```python +value: components.OutputMessage = /* values here */ +``` + +### `components.OpenAIResponseCustomToolCall` + +```python +value: components.OpenAIResponseCustomToolCall = /* values here */ +``` + +### `components.OpenAIResponseCustomToolCallOutput` + +```python +value: components.OpenAIResponseCustomToolCallOutput = /* values here */ +``` + +### `components.ApplyPatchCallItem` + +```python +value: components.ApplyPatchCallItem = /* values here */ +``` + +### `components.ApplyPatchCallOutputItem` + +```python +value: components.ApplyPatchCallOutputItem = /* values here */ +``` + diff --git a/docs/components/basereasoningconfig.mdx b/docs/components/basereasoningconfig.mdx new file mode 100644 index 00000000..62825199 --- /dev/null +++ b/docs/components/basereasoningconfig.mdx @@ -0,0 +1,10 @@ +--- +title: "BaseReasoningConfig" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `effort` | [OptionalNullable[components.ReasoningEffort]](../components/reasoningeffort.mdx) | :heavy_minus_sign: | N/A | medium | +| `summary` | [OptionalNullable[components.ReasoningSummaryVerbosity]](../components/reasoningsummaryverbosity.mdx) | :heavy_minus_sign: | N/A | auto | \ No newline at end of file diff --git a/docs/components/bashservertool.mdx b/docs/components/bashservertool.mdx new file mode 100644 index 00000000..09464da8 --- /dev/null +++ b/docs/components/bashservertool.mdx @@ -0,0 +1,13 @@ +--- +title: "BashServerTool" +--- + +OpenRouter built-in server tool: runs shell commands server-side in a sandboxed container + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `parameters` | [Optional[components.BashServerToolConfig]](../components/bashservertoolconfig.mdx) | :heavy_minus_sign: | Configuration for the openrouter:bash server tool | \{
"environment": \{
"type": "container_auto"
}
} | +| `type` | [components.BashServerToolType](../components/bashservertooltype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/bashservertoolconfig.mdx b/docs/components/bashservertoolconfig.mdx new file mode 100644 index 00000000..967974c0 --- /dev/null +++ b/docs/components/bashservertoolconfig.mdx @@ -0,0 +1,14 @@ +--- +title: "BashServerToolConfig" +--- + +Configuration for the openrouter:bash server tool + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `engine` | [Optional[components.BashServerToolEngine]](../components/bashservertoolengine.mdx) | :heavy_minus_sign: | Which bash engine to use. "openrouter" runs commands server-side in the OpenRouter sandbox. "auto" (default) and "native" use native passthrough, returning the tool call to your application to run client-side; OpenRouter does not execute the commands. | auto | +| `environment` | [Optional[components.BashServerToolEnvironment]](../components/bashservertoolenvironment.mdx) | :heavy_minus_sign: | Execution environment for the bash server tool. | \{
"type": "container_auto"
} | +| `sleep_after_seconds` | *Optional[int]* | :heavy_minus_sign: | How long (in seconds) the container stays warm after its last command before sleeping, freeing its capacity slot. Idle-based: each command renews the timer. Defaults to 900 (15 minutes); capped at 2592000 (30 days). | 900 | \ No newline at end of file diff --git a/docs/components/bashservertoolengine.mdx b/docs/components/bashservertoolengine.mdx new file mode 100644 index 00000000..af3c05c5 --- /dev/null +++ b/docs/components/bashservertoolengine.mdx @@ -0,0 +1,23 @@ +--- +title: "BashServerToolEngine" +--- + +Which bash engine to use. "openrouter" runs commands server-side in the OpenRouter sandbox. "auto" (default) and "native" use native passthrough, returning the tool call to your application to run client-side; OpenRouter does not execute the commands. + +## Example Usage + +```python +from openrouter.components import BashServerToolEngine + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: BashServerToolEngine = "auto" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"auto"` +- `"native"` +- `"openrouter"` diff --git a/docs/components/bashservertoolenvironment.mdx b/docs/components/bashservertoolenvironment.mdx new file mode 100644 index 00000000..d1c6a2d8 --- /dev/null +++ b/docs/components/bashservertoolenvironment.mdx @@ -0,0 +1,21 @@ +--- +title: "BashServerToolEnvironment" +--- + +Execution environment for the bash server tool. + + +## Supported Types + +### `components.ContainerAutoEnvironment` + +```python +value: components.ContainerAutoEnvironment = /* values here */ +``` + +### `components.ContainerReferenceEnvironment` + +```python +value: components.ContainerReferenceEnvironment = /* values here */ +``` + diff --git a/docs/components/bashservertooltype.mdx b/docs/components/bashservertooltype.mdx new file mode 100644 index 00000000..539a7c32 --- /dev/null +++ b/docs/components/bashservertooltype.mdx @@ -0,0 +1,15 @@ +--- +title: "BashServerToolType" +--- + +## Example Usage + +```python +from openrouter.components import BashServerToolType +value: BashServerToolType = "openrouter:bash" +``` + + +## Values + +- `"openrouter:bash"` diff --git a/docs/components/billable.mdx b/docs/components/billable.mdx new file mode 100644 index 00000000..a907902b --- /dev/null +++ b/docs/components/billable.mdx @@ -0,0 +1,23 @@ +--- +title: "Billable" +--- + +## Example Usage + +```python +from openrouter.components import Billable + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Billable = "output_image" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"output_image"` +- `"input_image"` +- `"input_font"` +- `"input_reference"` +- `"input_text"` diff --git a/docs/components/booleancapability.mdx b/docs/components/booleancapability.mdx new file mode 100644 index 00000000..74ba0728 --- /dev/null +++ b/docs/components/booleancapability.mdx @@ -0,0 +1,12 @@ +--- +title: "BooleanCapability" +--- + +A supported-or-not flag. Present means the parameter is accepted. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `type` | [components.BooleanCapabilityType](../components/booleancapabilitytype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/booleancapabilitytype.mdx b/docs/components/booleancapabilitytype.mdx new file mode 100644 index 00000000..9c583fdf --- /dev/null +++ b/docs/components/booleancapabilitytype.mdx @@ -0,0 +1,15 @@ +--- +title: "BooleanCapabilityType" +--- + +## Example Usage + +```python +from openrouter.components import BooleanCapabilityType +value: BooleanCapabilityType = "boolean" +``` + + +## Values + +- `"boolean"` diff --git a/docs/components/bulkaddworkspacemembersrequest.mdx b/docs/components/bulkaddworkspacemembersrequest.mdx new file mode 100644 index 00000000..67736787 --- /dev/null +++ b/docs/components/bulkaddworkspacemembersrequest.mdx @@ -0,0 +1,9 @@ +--- +title: "BulkAddWorkspaceMembersRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `user_ids` | List[*str*] | :heavy_check_mark: | List of user IDs to add to the workspace. Members are assigned the same role they hold in the organization. | [
"user_abc123",
"user_def456"
] | \ No newline at end of file diff --git a/docs/components/bulkaddworkspacemembersresponse.mdx b/docs/components/bulkaddworkspacemembersresponse.mdx new file mode 100644 index 00000000..4550429c --- /dev/null +++ b/docs/components/bulkaddworkspacemembersresponse.mdx @@ -0,0 +1,10 @@ +--- +title: "BulkAddWorkspaceMembersResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `added_count` | *int* | :heavy_check_mark: | Number of workspace memberships created or updated | 2 | +| `data` | List[[components.WorkspaceMember](../components/workspacemember.mdx)] | :heavy_check_mark: | List of added workspace memberships | | \ No newline at end of file diff --git a/docs/components/bulkassignkeysrequest.mdx b/docs/components/bulkassignkeysrequest.mdx new file mode 100644 index 00000000..ce5a37d8 --- /dev/null +++ b/docs/components/bulkassignkeysrequest.mdx @@ -0,0 +1,9 @@ +--- +title: "BulkAssignKeysRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `key_hashes` | List[*str*] | :heavy_check_mark: | Array of API key hashes to assign to the guardrail | [
"c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93"
] | \ No newline at end of file diff --git a/docs/components/bulkassignkeysresponse.mdx b/docs/components/bulkassignkeysresponse.mdx new file mode 100644 index 00000000..a9f54e53 --- /dev/null +++ b/docs/components/bulkassignkeysresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "BulkAssignKeysResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | +| `assigned_count` | *int* | :heavy_check_mark: | Number of keys successfully assigned | 3 | \ No newline at end of file diff --git a/docs/components/bulkassignmembersrequest.mdx b/docs/components/bulkassignmembersrequest.mdx new file mode 100644 index 00000000..272a74b2 --- /dev/null +++ b/docs/components/bulkassignmembersrequest.mdx @@ -0,0 +1,9 @@ +--- +title: "BulkAssignMembersRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `member_user_ids` | List[*str*] | :heavy_check_mark: | Array of member user IDs to assign to the guardrail | [
"user_abc123",
"user_def456"
] | \ No newline at end of file diff --git a/docs/components/bulkassignmembersresponse.mdx b/docs/components/bulkassignmembersresponse.mdx new file mode 100644 index 00000000..fb4f9e2b --- /dev/null +++ b/docs/components/bulkassignmembersresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "BulkAssignMembersResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------- | --------------------------------------- | --------------------------------------- | --------------------------------------- | --------------------------------------- | +| `assigned_count` | *int* | :heavy_check_mark: | Number of members successfully assigned | 2 | \ No newline at end of file diff --git a/docs/components/bulkremoveworkspacemembersrequest.mdx b/docs/components/bulkremoveworkspacemembersrequest.mdx new file mode 100644 index 00000000..e05a9567 --- /dev/null +++ b/docs/components/bulkremoveworkspacemembersrequest.mdx @@ -0,0 +1,9 @@ +--- +title: "BulkRemoveWorkspaceMembersRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | +| `user_ids` | List[*str*] | :heavy_check_mark: | List of user IDs to remove from the workspace | [
"user_abc123",
"user_def456"
] | \ No newline at end of file diff --git a/docs/components/bulkremoveworkspacemembersresponse.mdx b/docs/components/bulkremoveworkspacemembersresponse.mdx new file mode 100644 index 00000000..a4537109 --- /dev/null +++ b/docs/components/bulkremoveworkspacemembersresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "BulkRemoveWorkspaceMembersResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | +| `removed_count` | *int* | :heavy_check_mark: | Number of members removed | 2 | \ No newline at end of file diff --git a/docs/components/bulkunassignkeysrequest.mdx b/docs/components/bulkunassignkeysrequest.mdx new file mode 100644 index 00000000..53506dd9 --- /dev/null +++ b/docs/components/bulkunassignkeysrequest.mdx @@ -0,0 +1,9 @@ +--- +title: "BulkUnassignKeysRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `key_hashes` | List[*str*] | :heavy_check_mark: | Array of API key hashes to unassign from the guardrail | [
"c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93"
] | \ No newline at end of file diff --git a/docs/components/bulkunassignkeysresponse.mdx b/docs/components/bulkunassignkeysresponse.mdx new file mode 100644 index 00000000..efa2bc14 --- /dev/null +++ b/docs/components/bulkunassignkeysresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "BulkUnassignKeysResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | -------------------------------------- | -------------------------------------- | +| `unassigned_count` | *int* | :heavy_check_mark: | Number of keys successfully unassigned | 3 | \ No newline at end of file diff --git a/docs/components/bulkunassignmembersrequest.mdx b/docs/components/bulkunassignmembersrequest.mdx new file mode 100644 index 00000000..a39b1c21 --- /dev/null +++ b/docs/components/bulkunassignmembersrequest.mdx @@ -0,0 +1,9 @@ +--- +title: "BulkUnassignMembersRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| `member_user_ids` | List[*str*] | :heavy_check_mark: | Array of member user IDs to unassign from the guardrail | [
"user_abc123",
"user_def456"
] | \ No newline at end of file diff --git a/docs/components/bulkunassignmembersresponse.mdx b/docs/components/bulkunassignmembersresponse.mdx new file mode 100644 index 00000000..1907c826 --- /dev/null +++ b/docs/components/bulkunassignmembersresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "BulkUnassignMembersResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | +| `unassigned_count` | *int* | :heavy_check_mark: | Number of members successfully unassigned | 2 | \ No newline at end of file diff --git a/docs/components/by.md b/docs/components/by.md deleted file mode 100644 index 557c8912..00000000 --- a/docs/components/by.md +++ /dev/null @@ -1,13 +0,0 @@ -# By - -The provider sorting strategy (price, throughput, latency) - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `PRICE` | price | -| `THROUGHPUT` | throughput | -| `LATENCY` | latency | -| `EXACTO` | exacto | \ No newline at end of file diff --git a/docs/components/by.mdx b/docs/components/by.mdx new file mode 100644 index 00000000..8dd2b456 --- /dev/null +++ b/docs/components/by.mdx @@ -0,0 +1,24 @@ +--- +title: "By" +--- + +The provider sorting strategy (price, throughput, latency) + +## Example Usage + +```python +from openrouter.components import By + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: By = "price" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"price"` +- `"throughput"` +- `"latency"` +- `"exacto"` diff --git a/docs/components/byokkey.mdx b/docs/components/byokkey.mdx new file mode 100644 index 00000000..151dd839 --- /dev/null +++ b/docs/components/byokkey.mdx @@ -0,0 +1,20 @@ +--- +title: "BYOKKey" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `allowed_api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) that may use this credential. `null` means no restriction. | [
"f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943"
] | +| `allowed_models` | List[*str*] | :heavy_check_mark: | Optional allowlist of model slugs this credential may be used for. `null` means no restriction. | null | +| `allowed_user_ids` | List[*str*] | :heavy_check_mark: | Optional allowlist of user IDs that may use this credential. `null` means no restriction. | null | +| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the credential was created. | 2025-08-24T10:30:00Z | +| `disabled` | *bool* | :heavy_check_mark: | Whether this credential is currently disabled. | false | +| `id` | *str* | :heavy_check_mark: | Stable public identifier for this BYOK credential. | 11111111-2222-3333-4444-555555555555 | +| `is_fallback` | *bool* | :heavy_check_mark: | Whether this credential is treated as a fallback — used only after non-fallback keys for the same provider have been tried. | false | +| `label` | *str* | :heavy_check_mark: | Short masked snippet of the key (e.g. the first/last few characters) used to identify it in the UI. | sk-...AbCd | +| `name` | *OptionalNullable[str]* | :heavy_minus_sign: | Optional human-readable name for the credential. | Production OpenAI Key | +| `provider` | [components.BYOKProviderSlug](../components/byokproviderslug.mdx) | :heavy_check_mark: | The upstream provider this credential authenticates against, as a lowercase slug (e.g. `openai`, `anthropic`, `amazon-bedrock`). | openai | +| `sort_order` | *int* | :heavy_check_mark: | Position within the provider — credentials are tried in ascending sort order. | 0 | +| `workspace_id` | *str* | :heavy_check_mark: | ID of the workspace this credential belongs to. | 550e8400-e29b-41d4-a716-446655440000 | \ No newline at end of file diff --git a/docs/components/byokproviderslug.mdx b/docs/components/byokproviderslug.mdx new file mode 100644 index 00000000..439563d0 --- /dev/null +++ b/docs/components/byokproviderslug.mdx @@ -0,0 +1,108 @@ +--- +title: "BYOKProviderSlug" +--- + +The upstream provider this credential authenticates against, as a lowercase slug (e.g. `openai`, `anthropic`, `amazon-bedrock`). + +## Example Usage + +```python +from openrouter.components import BYOKProviderSlug + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: BYOKProviderSlug = "ai21" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"ai21"` +- `"aion-labs"` +- `"akashml"` +- `"alibaba"` +- `"amazon-bedrock"` +- `"amazon-nova"` +- `"ambient"` +- `"anthropic"` +- `"arcee-ai"` +- `"atlas-cloud"` +- `"avian"` +- `"azure"` +- `"baidu"` +- `"baseten"` +- `"black-forest-labs"` +- `"byteplus"` +- `"cerebras"` +- `"chutes"` +- `"cirrascale"` +- `"clarifai"` +- `"cloudflare"` +- `"cohere"` +- `"crusoe"` +- `"darkbloom"` +- `"decart"` +- `"deepinfra"` +- `"deepseek"` +- `"dekallm"` +- `"digitalocean"` +- `"featherless"` +- `"fireworks"` +- `"friendli"` +- `"gmicloud"` +- `"google-ai-studio"` +- `"google-vertex"` +- `"groq"` +- `"heygen"` +- `"inception"` +- `"inceptron"` +- `"inferact-vllm"` +- `"inference-net"` +- `"infermatic"` +- `"inflection"` +- `"io-net"` +- `"ionstream"` +- `"liquid"` +- `"mancer"` +- `"mara"` +- `"minimax"` +- `"mistral"` +- `"modelrun"` +- `"modular"` +- `"moonshotai"` +- `"morph"` +- `"ncompass"` +- `"nebius"` +- `"nex-agi"` +- `"nextbit"` +- `"novita"` +- `"nvidia"` +- `"open-inference"` +- `"openai"` +- `"parasail"` +- `"perceptron"` +- `"perplexity"` +- `"phala"` +- `"poolside"` +- `"quiver"` +- `"recraft"` +- `"reka"` +- `"relace"` +- `"sakana-ai"` +- `"sambanova"` +- `"seed"` +- `"siliconflow"` +- `"sourceful"` +- `"stepfun"` +- `"streamlake"` +- `"switchpoint"` +- `"tenstorrent"` +- `"together"` +- `"upstage"` +- `"venice"` +- `"wafer"` +- `"wandb"` +- `"xai"` +- `"xiaomi"` +- `"z-ai"` diff --git a/docs/components/caching.mdx b/docs/components/caching.mdx new file mode 100644 index 00000000..d9c71991 --- /dev/null +++ b/docs/components/caching.mdx @@ -0,0 +1,13 @@ +--- +title: "Caching" +--- + +Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `ttl` | [Optional[components.AnthropicCacheControlTTL]](../components/anthropiccachecontrolttl.mdx) | :heavy_minus_sign: | N/A | 5m | +| `type` | [components.ToolTypeEphemeral](../components/tooltypeephemeral.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/capabilitydescriptor.mdx b/docs/components/capabilitydescriptor.mdx new file mode 100644 index 00000000..ace8f22b --- /dev/null +++ b/docs/components/capabilitydescriptor.mdx @@ -0,0 +1,27 @@ +--- +title: "CapabilityDescriptor" +--- + +A typed descriptor for one supported request parameter. + + +## Supported Types + +### `components.EnumCapability` + +```python +value: components.EnumCapability = /* values here */ +``` + +### `components.RangeCapability` + +```python +value: components.RangeCapability = /* values here */ +``` + +### `components.BooleanCapability` + +```python +value: components.BooleanCapability = /* values here */ +``` + diff --git a/docs/components/chatassistantimages.mdx b/docs/components/chatassistantimages.mdx new file mode 100644 index 00000000..fbd1a4de --- /dev/null +++ b/docs/components/chatassistantimages.mdx @@ -0,0 +1,9 @@ +--- +title: "ChatAssistantImages" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `image_url` | [components.ChatAssistantImagesImageURL](../components/chatassistantimagesimageurl.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/chatassistantimagesimageurl.mdx b/docs/components/chatassistantimagesimageurl.mdx new file mode 100644 index 00000000..8a36279a --- /dev/null +++ b/docs/components/chatassistantimagesimageurl.mdx @@ -0,0 +1,9 @@ +--- +title: "ChatAssistantImagesImageURL" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| `url` | *str* | :heavy_check_mark: | URL or base64-encoded data of the generated image | \ No newline at end of file diff --git a/docs/components/chatassistantmessage.mdx b/docs/components/chatassistantmessage.mdx new file mode 100644 index 00000000..e2b637c7 --- /dev/null +++ b/docs/components/chatassistantmessage.mdx @@ -0,0 +1,20 @@ +--- +title: "ChatAssistantMessage" +--- + +Assistant message for requests and responses + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `audio` | [Optional[components.ChatAudioOutput]](../components/chataudiooutput.mdx) | :heavy_minus_sign: | Audio output data or reference | \{
"data": "UklGRnoGAABXQVZFZm10IBAAAAABAAEAQB8AAEAfAAABAAgAZGF0YQoGAACBhYqFbF1f",
"expires_at": 1677652400,
"id": "audio_abc123",
"transcript": "Hello! How can I help you today?"
} | +| `content` | [OptionalNullable[components.ChatAssistantMessageContent]](../components/chatassistantmessagecontent.mdx) | :heavy_minus_sign: | Assistant message content | | +| `images` | List[[components.ChatAssistantImages](../components/chatassistantimages.mdx)] | :heavy_minus_sign: | Generated images from image generation models | [
\{
"image_url": \{
"url": "data:image/png;base64,iVBORw0KGgo..."
}
}
] | +| `name` | *Optional[str]* | :heavy_minus_sign: | Optional name for the assistant | | +| `reasoning` | *OptionalNullable[str]* | :heavy_minus_sign: | Reasoning output | | +| `reasoning_details` | List[[components.ReasoningDetailUnion](../components/reasoningdetailunion.mdx)] | :heavy_minus_sign: | Reasoning details for extended thinking models | [
\{
"thinking": "Let me work through this step by step...",
"type": "thinking"
}
] | +| `refusal` | *OptionalNullable[str]* | :heavy_minus_sign: | Refusal message if content was refused | | +| `role` | [components.ChatAssistantMessageRole](../components/chatassistantmessagerole.mdx) | :heavy_check_mark: | N/A | | +| `tool_calls` | List[[components.ChatToolCall](../components/chattoolcall.mdx)] | :heavy_minus_sign: | Tool calls made by the assistant | | \ No newline at end of file diff --git a/docs/components/chatassistantmessagecontent.mdx b/docs/components/chatassistantmessagecontent.mdx new file mode 100644 index 00000000..c335554a --- /dev/null +++ b/docs/components/chatassistantmessagecontent.mdx @@ -0,0 +1,27 @@ +--- +title: "ChatAssistantMessageContent" +--- + +Assistant message content + + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `List[components.ChatContentItems]` + +```python +value: List[components.ChatContentItems] = /* values here */ +``` + +### `Any` + +```python +value: Any = /* values here */ +``` + diff --git a/docs/components/chatassistantmessagerole.mdx b/docs/components/chatassistantmessagerole.mdx new file mode 100644 index 00000000..d0cbbf9a --- /dev/null +++ b/docs/components/chatassistantmessagerole.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatAssistantMessageRole" +--- + +## Example Usage + +```python +from openrouter.components import ChatAssistantMessageRole +value: ChatAssistantMessageRole = "assistant" +``` + + +## Values + +- `"assistant"` diff --git a/docs/components/chataudiooutput.mdx b/docs/components/chataudiooutput.mdx new file mode 100644 index 00000000..54812b59 --- /dev/null +++ b/docs/components/chataudiooutput.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatAudioOutput" +--- + +Audio output data or reference + + +## Fields + +| Field | Type | Required | Description | +| -------------------------- | -------------------------- | -------------------------- | -------------------------- | +| `data` | *Optional[str]* | :heavy_minus_sign: | Base64 encoded audio data | +| `expires_at` | *Optional[int]* | :heavy_minus_sign: | Audio expiration timestamp | +| `id` | *Optional[str]* | :heavy_minus_sign: | Audio output identifier | +| `transcript` | *Optional[str]* | :heavy_minus_sign: | Audio transcript | \ No newline at end of file diff --git a/docs/components/chatchoice.mdx b/docs/components/chatchoice.mdx new file mode 100644 index 00000000..61439313 --- /dev/null +++ b/docs/components/chatchoice.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatChoice" +--- + +Chat completion choice + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `finish_reason` | [Nullable[components.ChatFinishReasonEnum]](../components/chatfinishreasonenum.mdx) | :heavy_check_mark: | N/A | stop | +| `index` | *int* | :heavy_check_mark: | Choice index | 0 | +| `logprobs` | [OptionalNullable[components.ChatTokenLogprobs]](../components/chattokenlogprobs.mdx) | :heavy_minus_sign: | Log probabilities for the completion | \{
"content": [
\{
"bytes": null,
"logprob": -0.612345,
"token": " Hello",
"top_logprobs": []
}
],
"refusal": null
} | +| `message` | [components.ChatAssistantMessage](../components/chatassistantmessage.mdx) | :heavy_check_mark: | Assistant message for requests and responses | \{
"content": "What is the capital of France?",
"role": "user"
} | \ No newline at end of file diff --git a/docs/components/chatcontentaudio.mdx b/docs/components/chatcontentaudio.mdx new file mode 100644 index 00000000..4fded937 --- /dev/null +++ b/docs/components/chatcontentaudio.mdx @@ -0,0 +1,13 @@ +--- +title: "ChatContentAudio" +--- + +Audio input content part. Supported audio formats vary by provider. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `input_audio` | [components.ChatContentAudioInputAudio](../components/chatcontentaudioinputaudio.mdx) | :heavy_check_mark: | N/A | +| `type` | [components.ChatContentAudioType](../components/chatcontentaudiotype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/chatcontentaudioinputaudio.mdx b/docs/components/chatcontentaudioinputaudio.mdx new file mode 100644 index 00000000..06fd6a6c --- /dev/null +++ b/docs/components/chatcontentaudioinputaudio.mdx @@ -0,0 +1,10 @@ +--- +title: "ChatContentAudioInputAudio" +--- + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `data` | *str* | :heavy_check_mark: | Base64 encoded audio data | +| `format_` | *str* | :heavy_check_mark: | Audio format (e.g., wav, mp3, flac, m4a, ogg, aiff, aac, pcm16, pcm24). Supported formats vary by provider. | \ No newline at end of file diff --git a/docs/components/chatcontentaudiotype.mdx b/docs/components/chatcontentaudiotype.mdx new file mode 100644 index 00000000..fdb10076 --- /dev/null +++ b/docs/components/chatcontentaudiotype.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatContentAudioType" +--- + +## Example Usage + +```python +from openrouter.components import ChatContentAudioType +value: ChatContentAudioType = "input_audio" +``` + + +## Values + +- `"input_audio"` diff --git a/docs/components/chatcontentcachecontrol.mdx b/docs/components/chatcontentcachecontrol.mdx new file mode 100644 index 00000000..250fd47f --- /dev/null +++ b/docs/components/chatcontentcachecontrol.mdx @@ -0,0 +1,13 @@ +--- +title: "ChatContentCacheControl" +--- + +Cache control for the content part + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `ttl` | [Optional[components.AnthropicCacheControlTTL]](../components/anthropiccachecontrolttl.mdx) | :heavy_minus_sign: | N/A | 5m | +| `type` | [components.ChatContentCacheControlType](../components/chatcontentcachecontroltype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/chatcontentcachecontroltype.mdx b/docs/components/chatcontentcachecontroltype.mdx new file mode 100644 index 00000000..71ebbaf8 --- /dev/null +++ b/docs/components/chatcontentcachecontroltype.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatContentCacheControlType" +--- + +## Example Usage + +```python +from openrouter.components import ChatContentCacheControlType +value: ChatContentCacheControlType = "ephemeral" +``` + + +## Values + +- `"ephemeral"` diff --git a/docs/components/chatcontentfile.mdx b/docs/components/chatcontentfile.mdx new file mode 100644 index 00000000..ae0bb19c --- /dev/null +++ b/docs/components/chatcontentfile.mdx @@ -0,0 +1,13 @@ +--- +title: "ChatContentFile" +--- + +File content part for document processing + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `file` | [components.File](../components/file.mdx) | :heavy_check_mark: | N/A | +| `type` | [components.ChatContentFileType](../components/chatcontentfiletype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/chatcontentfiletype.mdx b/docs/components/chatcontentfiletype.mdx new file mode 100644 index 00000000..b9b06342 --- /dev/null +++ b/docs/components/chatcontentfiletype.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatContentFileType" +--- + +## Example Usage + +```python +from openrouter.components import ChatContentFileType +value: ChatContentFileType = "file" +``` + + +## Values + +- `"file"` diff --git a/docs/components/chatcontentimage.mdx b/docs/components/chatcontentimage.mdx new file mode 100644 index 00000000..1dc21599 --- /dev/null +++ b/docs/components/chatcontentimage.mdx @@ -0,0 +1,13 @@ +--- +title: "ChatContentImage" +--- + +Image content part for vision models + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `image_url` | [components.ChatContentImageImageURL](../components/chatcontentimageimageurl.mdx) | :heavy_check_mark: | N/A | +| `type` | [components.ChatContentImageType](../components/chatcontentimagetype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/chatcontentimagedetail.mdx b/docs/components/chatcontentimagedetail.mdx new file mode 100644 index 00000000..7935e4a9 --- /dev/null +++ b/docs/components/chatcontentimagedetail.mdx @@ -0,0 +1,24 @@ +--- +title: "ChatContentImageDetail" +--- + +Image detail level for vision models. `original` is an OpenRouter extension (not in the OpenAI Chat Completions spec) requesting true original-resolution media; it is downgraded to `high` for providers that lack an original-resolution tier. + +## Example Usage + +```python +from openrouter.components import ChatContentImageDetail + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ChatContentImageDetail = "auto" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"auto"` +- `"low"` +- `"high"` +- `"original"` diff --git a/docs/components/chatcontentimageimageurl.mdx b/docs/components/chatcontentimageimageurl.mdx new file mode 100644 index 00000000..81413664 --- /dev/null +++ b/docs/components/chatcontentimageimageurl.mdx @@ -0,0 +1,10 @@ +--- +title: "ChatContentImageImageURL" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `detail` | [Optional[components.ChatContentImageDetail]](../components/chatcontentimagedetail.mdx) | :heavy_minus_sign: | Image detail level for vision models. `original` is an OpenRouter extension (not in the OpenAI Chat Completions spec) requesting true original-resolution media; it is downgraded to `high` for providers that lack an original-resolution tier. | +| `url` | *str* | :heavy_check_mark: | URL of the image (data: URLs supported) | \ No newline at end of file diff --git a/docs/components/chatcontentimagetype.mdx b/docs/components/chatcontentimagetype.mdx new file mode 100644 index 00000000..62824100 --- /dev/null +++ b/docs/components/chatcontentimagetype.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatContentImageType" +--- + +## Example Usage + +```python +from openrouter.components import ChatContentImageType +value: ChatContentImageType = "image_url" +``` + + +## Values + +- `"image_url"` diff --git a/docs/components/chatcontentitems.mdx b/docs/components/chatcontentitems.mdx new file mode 100644 index 00000000..92c9c5c2 --- /dev/null +++ b/docs/components/chatcontentitems.mdx @@ -0,0 +1,45 @@ +--- +title: "ChatContentItems" +--- + +Content part for chat completion messages + + +## Supported Types + +### `components.ChatContentFile` + +```python +value: components.ChatContentFile = /* values here */ +``` + +### `components.ChatContentImage` + +```python +value: components.ChatContentImage = /* values here */ +``` + +### `components.ChatContentAudio` + +```python +value: components.ChatContentAudio = /* values here */ +``` + +### `components.LegacyChatContentVideo` + +```python +value: components.LegacyChatContentVideo = /* values here */ +``` + +### `components.ChatContentText` + +```python +value: components.ChatContentText = /* values here */ +``` + +### `components.ChatContentVideo` + +```python +value: components.ChatContentVideo = /* values here */ +``` + diff --git a/docs/components/chatcontenttext.mdx b/docs/components/chatcontenttext.mdx new file mode 100644 index 00000000..a59dafe9 --- /dev/null +++ b/docs/components/chatcontenttext.mdx @@ -0,0 +1,14 @@ +--- +title: "ChatContentText" +--- + +Text content part + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `cache_control` | [Optional[components.ChatContentCacheControl]](../components/chatcontentcachecontrol.mdx) | :heavy_minus_sign: | Cache control for the content part | \{
"ttl": "5m",
"type": "ephemeral"
} | +| `text` | *str* | :heavy_check_mark: | N/A | | +| `type` | [components.ChatContentTextType](../components/chatcontenttexttype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/chatcontenttexttype.mdx b/docs/components/chatcontenttexttype.mdx new file mode 100644 index 00000000..3f8ebf16 --- /dev/null +++ b/docs/components/chatcontenttexttype.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatContentTextType" +--- + +## Example Usage + +```python +from openrouter.components import ChatContentTextType +value: ChatContentTextType = "text" +``` + + +## Values + +- `"text"` diff --git a/docs/components/chatcontentvideo.mdx b/docs/components/chatcontentvideo.mdx new file mode 100644 index 00000000..b8a1d5ee --- /dev/null +++ b/docs/components/chatcontentvideo.mdx @@ -0,0 +1,13 @@ +--- +title: "ChatContentVideo" +--- + +Video input content part + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `type` | [components.ChatContentVideoType](../components/chatcontentvideotype.mdx) | :heavy_check_mark: | N/A | | +| `video_url` | [components.ChatContentVideoInput](../components/chatcontentvideoinput.mdx) | :heavy_check_mark: | Video input object | \{
"url": "https://example.com/video.mp4"
} | \ No newline at end of file diff --git a/docs/components/chatcontentvideoinput.mdx b/docs/components/chatcontentvideoinput.mdx new file mode 100644 index 00000000..7b80ce52 --- /dev/null +++ b/docs/components/chatcontentvideoinput.mdx @@ -0,0 +1,12 @@ +--- +title: "ChatContentVideoInput" +--- + +Video input object + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------- | --------------------------------------- | --------------------------------------- | --------------------------------------- | +| `url` | *str* | :heavy_check_mark: | URL of the video (data: URLs supported) | \ No newline at end of file diff --git a/docs/components/chatcontentvideotype.mdx b/docs/components/chatcontentvideotype.mdx new file mode 100644 index 00000000..a784c584 --- /dev/null +++ b/docs/components/chatcontentvideotype.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatContentVideoType" +--- + +## Example Usage + +```python +from openrouter.components import ChatContentVideoType +value: ChatContentVideoType = "video_url" +``` + + +## Values + +- `"video_url"` diff --git a/docs/components/chatdebugoptions.mdx b/docs/components/chatdebugoptions.mdx new file mode 100644 index 00000000..eee9489f --- /dev/null +++ b/docs/components/chatdebugoptions.mdx @@ -0,0 +1,12 @@ +--- +title: "ChatDebugOptions" +--- + +Debug options for inspecting request transformations (streaming only) + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `echo_upstream_body` | *Optional[bool]* | :heavy_minus_sign: | If true, includes the transformed upstream request body in a debug chunk at the start of the stream. Only works with streaming mode. | true | \ No newline at end of file diff --git a/docs/components/chatdevelopermessage.mdx b/docs/components/chatdevelopermessage.mdx new file mode 100644 index 00000000..05d42236 --- /dev/null +++ b/docs/components/chatdevelopermessage.mdx @@ -0,0 +1,14 @@ +--- +title: "ChatDeveloperMessage" +--- + +Developer message + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `content` | [components.ChatDeveloperMessageContent](../components/chatdevelopermessagecontent.mdx) | :heavy_check_mark: | Developer message content | This is a message from the developer. | +| `name` | *Optional[str]* | :heavy_minus_sign: | Optional name for the developer message | Developer | +| `role` | [components.ChatDeveloperMessageRole](../components/chatdevelopermessagerole.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/chatdevelopermessagecontent.mdx b/docs/components/chatdevelopermessagecontent.mdx new file mode 100644 index 00000000..9828d6d8 --- /dev/null +++ b/docs/components/chatdevelopermessagecontent.mdx @@ -0,0 +1,21 @@ +--- +title: "ChatDeveloperMessageContent" +--- + +Developer message content + + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `List[components.ChatContentText]` + +```python +value: List[components.ChatContentText] = /* values here */ +``` + diff --git a/docs/components/chatdevelopermessagerole.mdx b/docs/components/chatdevelopermessagerole.mdx new file mode 100644 index 00000000..db5c7d49 --- /dev/null +++ b/docs/components/chatdevelopermessagerole.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatDeveloperMessageRole" +--- + +## Example Usage + +```python +from openrouter.components import ChatDeveloperMessageRole +value: ChatDeveloperMessageRole = "developer" +``` + + +## Values + +- `"developer"` diff --git a/docs/components/chatfinishreasonenum.mdx b/docs/components/chatfinishreasonenum.mdx new file mode 100644 index 00000000..1449d172 --- /dev/null +++ b/docs/components/chatfinishreasonenum.mdx @@ -0,0 +1,23 @@ +--- +title: "ChatFinishReasonEnum" +--- + +## Example Usage + +```python +from openrouter.components import ChatFinishReasonEnum + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ChatFinishReasonEnum = "tool_calls" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"tool_calls"` +- `"stop"` +- `"length"` +- `"content_filter"` +- `"error"` diff --git a/docs/components/chatformatgrammarconfig.mdx b/docs/components/chatformatgrammarconfig.mdx new file mode 100644 index 00000000..8595b864 --- /dev/null +++ b/docs/components/chatformatgrammarconfig.mdx @@ -0,0 +1,13 @@ +--- +title: "ChatFormatGrammarConfig" +--- + +Custom grammar response format + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `grammar` | *str* | :heavy_check_mark: | Custom grammar for text generation | root ::= "yes" \| "no" | +| `type` | [components.ChatFormatGrammarConfigType](../components/chatformatgrammarconfigtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/chatformatgrammarconfigtype.mdx b/docs/components/chatformatgrammarconfigtype.mdx new file mode 100644 index 00000000..9b479f4e --- /dev/null +++ b/docs/components/chatformatgrammarconfigtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatFormatGrammarConfigType" +--- + +## Example Usage + +```python +from openrouter.components import ChatFormatGrammarConfigType +value: ChatFormatGrammarConfigType = "grammar" +``` + + +## Values + +- `"grammar"` diff --git a/docs/components/chatformatjsonschemaconfig.mdx b/docs/components/chatformatjsonschemaconfig.mdx new file mode 100644 index 00000000..565e3348 --- /dev/null +++ b/docs/components/chatformatjsonschemaconfig.mdx @@ -0,0 +1,13 @@ +--- +title: "ChatFormatJSONSchemaConfig" +--- + +JSON Schema response format for structured outputs + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `json_schema` | [components.ChatJSONSchemaConfig](../components/chatjsonschemaconfig.mdx) | :heavy_check_mark: | JSON Schema configuration object | \{
"description": "A mathematical response",
"name": "math_response",
"schema": \{
"properties": \{
"answer": \{
"type": "number"
}
},
"required": [
"answer"
],
"type": "object"
},
"strict": true
} | +| `type` | [components.ChatFormatJSONSchemaConfigType](../components/chatformatjsonschemaconfigtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/chatformatjsonschemaconfigtype.mdx b/docs/components/chatformatjsonschemaconfigtype.mdx new file mode 100644 index 00000000..076ff6d7 --- /dev/null +++ b/docs/components/chatformatjsonschemaconfigtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatFormatJSONSchemaConfigType" +--- + +## Example Usage + +```python +from openrouter.components import ChatFormatJSONSchemaConfigType +value: ChatFormatJSONSchemaConfigType = "json_schema" +``` + + +## Values + +- `"json_schema"` diff --git a/docs/components/chatformatpythonconfig.mdx b/docs/components/chatformatpythonconfig.mdx new file mode 100644 index 00000000..cd0ab7ba --- /dev/null +++ b/docs/components/chatformatpythonconfig.mdx @@ -0,0 +1,12 @@ +--- +title: "ChatFormatPythonConfig" +--- + +Python code response format + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `type` | [components.ChatFormatPythonConfigType](../components/chatformatpythonconfigtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/chatformatpythonconfigtype.mdx b/docs/components/chatformatpythonconfigtype.mdx new file mode 100644 index 00000000..59490437 --- /dev/null +++ b/docs/components/chatformatpythonconfigtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatFormatPythonConfigType" +--- + +## Example Usage + +```python +from openrouter.components import ChatFormatPythonConfigType +value: ChatFormatPythonConfigType = "python" +``` + + +## Values + +- `"python"` diff --git a/docs/components/chatformattextconfig.mdx b/docs/components/chatformattextconfig.mdx new file mode 100644 index 00000000..a539cad5 --- /dev/null +++ b/docs/components/chatformattextconfig.mdx @@ -0,0 +1,12 @@ +--- +title: "ChatFormatTextConfig" +--- + +Default text response format + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `type` | [components.ChatFormatTextConfigType](../components/chatformattextconfigtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/chatformattextconfigtype.mdx b/docs/components/chatformattextconfigtype.mdx new file mode 100644 index 00000000..f5cbc93e --- /dev/null +++ b/docs/components/chatformattextconfigtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatFormatTextConfigType" +--- + +## Example Usage + +```python +from openrouter.components import ChatFormatTextConfigType +value: ChatFormatTextConfigType = "text" +``` + + +## Values + +- `"text"` diff --git a/docs/components/chatfunctiontool.mdx b/docs/components/chatfunctiontool.mdx new file mode 100644 index 00000000..5b8e5f47 --- /dev/null +++ b/docs/components/chatfunctiontool.mdx @@ -0,0 +1,69 @@ +--- +title: "ChatFunctionTool" +--- + +Tool definition for function calling (regular function or OpenRouter built-in server tool) + + +## Supported Types + +### `components.ChatFunctionToolFunction` + +```python +value: components.ChatFunctionToolFunction = /* values here */ +``` + +### `components.AdvisorServerToolOpenRouter` + +```python +value: components.AdvisorServerToolOpenRouter = /* values here */ +``` + +### `components.BashServerTool` + +```python +value: components.BashServerTool = /* values here */ +``` + +### `components.DatetimeServerTool` + +```python +value: components.DatetimeServerTool = /* values here */ +``` + +### `components.ImageGenerationServerToolOpenRouter` + +```python +value: components.ImageGenerationServerToolOpenRouter = /* values here */ +``` + +### `components.ChatSearchModelsServerTool` + +```python +value: components.ChatSearchModelsServerTool = /* values here */ +``` + +### `components.SubagentServerToolOpenRouter` + +```python +value: components.SubagentServerToolOpenRouter = /* values here */ +``` + +### `components.WebFetchServerTool` + +```python +value: components.WebFetchServerTool = /* values here */ +``` + +### `components.OpenRouterWebSearchServerTool` + +```python +value: components.OpenRouterWebSearchServerTool = /* values here */ +``` + +### `components.ChatWebSearchShorthand` + +```python +value: components.ChatWebSearchShorthand = /* values here */ +``` + diff --git a/docs/components/chatfunctiontoolfunction.mdx b/docs/components/chatfunctiontoolfunction.mdx new file mode 100644 index 00000000..7619eec4 --- /dev/null +++ b/docs/components/chatfunctiontoolfunction.mdx @@ -0,0 +1,11 @@ +--- +title: "ChatFunctionToolFunction" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `cache_control` | [Optional[components.ChatContentCacheControl]](../components/chatcontentcachecontrol.mdx) | :heavy_minus_sign: | Cache control for the content part | \{
"ttl": "5m",
"type": "ephemeral"
} | +| `function` | [components.ChatFunctionToolFunctionFunction](../components/chatfunctiontoolfunctionfunction.mdx) | :heavy_check_mark: | Function definition for tool calling | \{
"description": "Get the current weather for a location",
"name": "get_weather",
"parameters": \{
"properties": \{
"location": \{
"description": "City name",
"type": "string"
}
},
"required": [
"location"
],
"type": "object"
}
} | +| `type` | [components.ChatFunctionToolType](../components/chatfunctiontooltype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/chatfunctiontoolfunctionfunction.mdx b/docs/components/chatfunctiontoolfunctionfunction.mdx new file mode 100644 index 00000000..e4a50d55 --- /dev/null +++ b/docs/components/chatfunctiontoolfunctionfunction.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatFunctionToolFunctionFunction" +--- + +Function definition for tool calling + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `description` | *Optional[str]* | :heavy_minus_sign: | Function description for the model | Get the current weather for a location | +| `name` | *str* | :heavy_check_mark: | Function name (a-z, A-Z, 0-9, underscores, dashes, max 64 chars) | get_weather | +| `parameters` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | Function parameters as JSON Schema object | \{
"properties": \{
"location": \{
"description": "City name",
"type": "string"
}
},
"required": [
"location"
],
"type": "object"
} | +| `strict` | *OptionalNullable[bool]* | :heavy_minus_sign: | Enable strict schema adherence | false | \ No newline at end of file diff --git a/docs/components/chatfunctiontooltype.mdx b/docs/components/chatfunctiontooltype.mdx new file mode 100644 index 00000000..97fa5f43 --- /dev/null +++ b/docs/components/chatfunctiontooltype.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatFunctionToolType" +--- + +## Example Usage + +```python +from openrouter.components import ChatFunctionToolType +value: ChatFunctionToolType = "function" +``` + + +## Values + +- `"function"` diff --git a/docs/components/chatjsonschemaconfig.mdx b/docs/components/chatjsonschemaconfig.mdx new file mode 100644 index 00000000..9d355f0a --- /dev/null +++ b/docs/components/chatjsonschemaconfig.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatJSONSchemaConfig" +--- + +JSON Schema configuration object + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `description` | *Optional[str]* | :heavy_minus_sign: | Schema description for the model | A mathematical response | +| `name` | *str* | :heavy_check_mark: | Schema name (a-z, A-Z, 0-9, underscores, dashes, max 64 chars) | math_response | +| `schema_` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | JSON Schema object | \{
"properties": \{
"answer": \{
"type": "number"
}
},
"required": [
"answer"
],
"type": "object"
} | +| `strict` | *OptionalNullable[bool]* | :heavy_minus_sign: | Enable strict schema adherence | false | \ No newline at end of file diff --git a/docs/components/chatmessages.mdx b/docs/components/chatmessages.mdx new file mode 100644 index 00000000..54e55e01 --- /dev/null +++ b/docs/components/chatmessages.mdx @@ -0,0 +1,39 @@ +--- +title: "ChatMessages" +--- + +Chat completion message with role-based discrimination + + +## Supported Types + +### `components.ChatAssistantMessage` + +```python +value: components.ChatAssistantMessage = /* values here */ +``` + +### `components.ChatDeveloperMessage` + +```python +value: components.ChatDeveloperMessage = /* values here */ +``` + +### `components.ChatSystemMessage` + +```python +value: components.ChatSystemMessage = /* values here */ +``` + +### `components.ChatToolMessage` + +```python +value: components.ChatToolMessage = /* values here */ +``` + +### `components.ChatUserMessage` + +```python +value: components.ChatUserMessage = /* values here */ +``` + diff --git a/docs/components/chatnamedtoolchoice.mdx b/docs/components/chatnamedtoolchoice.mdx new file mode 100644 index 00000000..1c98093b --- /dev/null +++ b/docs/components/chatnamedtoolchoice.mdx @@ -0,0 +1,13 @@ +--- +title: "ChatNamedToolChoice" +--- + +Named tool choice for specific function + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `function` | [components.ChatNamedToolChoiceFunction](../components/chatnamedtoolchoicefunction.mdx) | :heavy_check_mark: | N/A | +| `type` | [components.ChatNamedToolChoiceType](../components/chatnamedtoolchoicetype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/chatnamedtoolchoicefunction.mdx b/docs/components/chatnamedtoolchoicefunction.mdx new file mode 100644 index 00000000..1824174f --- /dev/null +++ b/docs/components/chatnamedtoolchoicefunction.mdx @@ -0,0 +1,9 @@ +--- +title: "ChatNamedToolChoiceFunction" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------- | --------------------- | --------------------- | --------------------- | --------------------- | +| `name` | *str* | :heavy_check_mark: | Function name to call | get_weather | \ No newline at end of file diff --git a/docs/components/chatnamedtoolchoicetype.mdx b/docs/components/chatnamedtoolchoicetype.mdx new file mode 100644 index 00000000..03680993 --- /dev/null +++ b/docs/components/chatnamedtoolchoicetype.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatNamedToolChoiceType" +--- + +## Example Usage + +```python +from openrouter.components import ChatNamedToolChoiceType +value: ChatNamedToolChoiceType = "function" +``` + + +## Values + +- `"function"` diff --git a/docs/components/chatreasoningsummaryverbosityenum.mdx b/docs/components/chatreasoningsummaryverbosityenum.mdx new file mode 100644 index 00000000..220be03b --- /dev/null +++ b/docs/components/chatreasoningsummaryverbosityenum.mdx @@ -0,0 +1,21 @@ +--- +title: "ChatReasoningSummaryVerbosityEnum" +--- + +## Example Usage + +```python +from openrouter.components import ChatReasoningSummaryVerbosityEnum + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ChatReasoningSummaryVerbosityEnum = "auto" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"auto"` +- `"concise"` +- `"detailed"` diff --git a/docs/components/chatrequest.mdx b/docs/components/chatrequest.mdx new file mode 100644 index 00000000..1cc4f0f4 --- /dev/null +++ b/docs/components/chatrequest.mdx @@ -0,0 +1,49 @@ +--- +title: "ChatRequest" +--- + +Chat completion request parameters + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `debug` | [Optional[components.ChatDebugOptions]](../components/chatdebugoptions.mdx) | :heavy_minus_sign: | Debug options for inspecting request transformations (streaming only) | \{
"echo_upstream_body": true
} | +| `frequency_penalty` | *OptionalNullable[float]* | :heavy_minus_sign: | Frequency penalty (-2.0 to 2.0) | 0 | +| `image_config` | Dict[str, [components.ImageConfig](../components/imageconfig.mdx)] | :heavy_minus_sign: | Provider-specific image configuration options. Keys and values vary by model/provider. See https://openrouter.ai/docs/guides/overview/multimodal/image-generation for more details. | \{
"aspect_ratio": "16:9",
"quality": "high"
} | +| `logit_bias` | Dict[str, *float*] | :heavy_minus_sign: | Token logit bias adjustments | \{
"50256": -100
} | +| `logprobs` | *OptionalNullable[bool]* | :heavy_minus_sign: | Return log probabilities | false | +| `max_completion_tokens` | *OptionalNullable[int]* | :heavy_minus_sign: | Maximum tokens in completion | 100 | +| `max_tokens` | *OptionalNullable[int]* | :heavy_minus_sign: | Maximum tokens (deprecated, use max_completion_tokens). Note: some providers enforce a minimum of 16. | 100 | +| `messages` | List[[components.ChatMessages](../components/chatmessages.mdx)] | :heavy_check_mark: | List of messages for the conversation | [
\{
"content": "Hello!",
"role": "user"
}
] | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Key-value pairs for additional object information (max 16 pairs, 64 char keys, 512 char values) | \{
"session_id": "session-456",
"user_id": "user-123"
} | +| `min_p` | *OptionalNullable[float]* | :heavy_minus_sign: | Minimum probability threshold relative to the most likely token. Tokens with probability below min_p * (probability of top token) are filtered out. Not all providers support this parameter. | 0.1 | +| `modalities` | List[[components.Modality](../components/modality.mdx)] | :heavy_minus_sign: | Output modalities for the response. Supported values are "text", "image", and "audio". | [
"text",
"image"
] | +| `model` | *Optional[str]* | :heavy_minus_sign: | Model to use for completion | openai/gpt-4 | +| `models` | List[*str*] | :heavy_minus_sign: | Models to use for completion | [
"openai/gpt-4",
"openai/gpt-4o"
] | +| `parallel_tool_calls` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to enable parallel function calling during tool use. When true, the model may generate multiple tool calls in a single response. | true | +| `plugins` | List[[components.ChatRequestPlugin](../components/chatrequestplugin.mdx)] | :heavy_minus_sign: | Plugins you want to enable for this request, including their settings. | | +| `presence_penalty` | *OptionalNullable[float]* | :heavy_minus_sign: | Presence penalty (-2.0 to 2.0) | 0 | +| `provider` | [OptionalNullable[components.ProviderPreferences]](../components/providerpreferences.mdx) | :heavy_minus_sign: | When multiple model providers are available, optionally indicate your routing preference. | \{
"allow_fallbacks": true
} | +| `reasoning` | [Optional[components.ChatRequestReasoning]](../components/chatrequestreasoning.mdx) | :heavy_minus_sign: | Configuration options for reasoning models | \{
"effort": "medium",
"summary": "concise"
} | +| `reasoning_effort` | [OptionalNullable[components.ChatRequestReasoningEffort]](../components/chatrequestreasoningeffort.mdx) | :heavy_minus_sign: | Shorthand for setting reasoning effort. Equivalent to setting reasoning.effort. Cannot be used simultaneously with reasoning.effort if they differ. | medium | +| `repetition_penalty` | *OptionalNullable[float]* | :heavy_minus_sign: | Penalizes tokens based on how much they have already appeared in the text. A value of 1.0 means no penalty. Values above 1.0 penalize repeated tokens more strongly. Not all providers support this parameter. | 1 | +| `response_format` | [Optional[components.ResponseFormat]](../components/responseformat.mdx) | :heavy_minus_sign: | Response format configuration | \{
"type": "json_object"
} | +| `seed` | *OptionalNullable[int]* | :heavy_minus_sign: | Random seed for deterministic outputs | 42 | +| `service_tier` | [OptionalNullable[components.ChatRequestServiceTier]](../components/chatrequestservicetier.mdx) | :heavy_minus_sign: | The service tier to use for processing this request. | auto | +| `session_id` | *Optional[str]* | :heavy_minus_sign: | A unique identifier for grouping related requests (e.g., a conversation or agent workflow). When provided, OpenRouter uses it as the sticky routing key, routing all requests in the session to the same provider to maximize prompt cache hits. Also used for observability grouping. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. | | +| `stop` | [OptionalNullable[components.Stop]](../components/stop.mdx) | :heavy_minus_sign: | Stop sequences (up to 4) | [
""
] | +| `stop_server_tools_when` | List[[components.StopServerToolsWhenCondition](../components/stopservertoolswhencondition.mdx)] | :heavy_minus_sign: | Stop conditions for the server-tool agent loop. Any condition firing halts the loop (OR logic). When set, this overrides `max_tool_calls`. | [
\{
"step_count": 5,
"type": "step_count_is"
},
\{
"max_cost_in_dollars": 0.5,
"type": "max_cost"
}
] | +| `stream` | *Optional[bool]* | :heavy_minus_sign: | Enable streaming response | false | +| `stream_options` | [OptionalNullable[components.ChatStreamOptions]](../components/chatstreamoptions.mdx) | :heavy_minus_sign: | Streaming configuration options | \{
"include_usage": true
} | +| `temperature` | *OptionalNullable[float]* | :heavy_minus_sign: | Sampling temperature (0-2) | 0.7 | +| `tool_choice` | [Optional[components.ChatToolChoice]](../components/chattoolchoice.mdx) | :heavy_minus_sign: | Tool choice configuration | auto | +| `tools` | List[[components.ChatFunctionTool](../components/chatfunctiontool.mdx)] | :heavy_minus_sign: | Available tools for function calling | [
\{
"function": \{
"description": "Get weather",
"name": "get_weather"
},
"type": "function"
}
] | +| `top_a` | *OptionalNullable[float]* | :heavy_minus_sign: | Consider only tokens with "sufficiently high" probabilities based on the probability of the most likely token. Not all providers support this parameter. | 0 | +| `top_k` | *OptionalNullable[int]* | :heavy_minus_sign: | Limits the model to choose from the top K most likely tokens at each step. A value of 1 means the model will always pick the most likely next token. Not all providers support this parameter. | 40 | +| `top_logprobs` | *OptionalNullable[int]* | :heavy_minus_sign: | Number of top log probabilities to return (0-20) | 5 | +| `top_p` | *OptionalNullable[float]* | :heavy_minus_sign: | Nucleus sampling parameter (0-1) | 1 | +| `trace` | [Optional[components.TraceConfig]](../components/traceconfig.mdx) | :heavy_minus_sign: | Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. | \{
"trace_id": "trace-abc123",
"trace_name": "my-app-trace"
} | +| `user` | *Optional[str]* | :heavy_minus_sign: | Unique user identifier | user-123 | \ No newline at end of file diff --git a/docs/components/chatrequesteffort.mdx b/docs/components/chatrequesteffort.mdx new file mode 100644 index 00000000..643c118f --- /dev/null +++ b/docs/components/chatrequesteffort.mdx @@ -0,0 +1,27 @@ +--- +title: "ChatRequestEffort" +--- + +Constrains effort on reasoning for reasoning models + +## Example Usage + +```python +from openrouter.components import ChatRequestEffort + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ChatRequestEffort = "max" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"max"` +- `"xhigh"` +- `"high"` +- `"medium"` +- `"low"` +- `"minimal"` +- `"none"` diff --git a/docs/components/chatrequestplugin.mdx b/docs/components/chatrequestplugin.mdx new file mode 100644 index 00000000..2ef1d9e4 --- /dev/null +++ b/docs/components/chatrequestplugin.mdx @@ -0,0 +1,60 @@ +--- +title: "ChatRequestPlugin" +--- + +## Supported Types + +### `components.AutoRouterPlugin` + +```python +value: components.AutoRouterPlugin = /* values here */ +``` + +### `components.ContextCompressionPlugin` + +```python +value: components.ContextCompressionPlugin = /* values here */ +``` + +### `components.FileParserPlugin` + +```python +value: components.FileParserPlugin = /* values here */ +``` + +### `components.FusionPlugin` + +```python +value: components.FusionPlugin = /* values here */ +``` + +### `components.ModerationPlugin` + +```python +value: components.ModerationPlugin = /* values here */ +``` + +### `components.ParetoRouterPlugin` + +```python +value: components.ParetoRouterPlugin = /* values here */ +``` + +### `components.ResponseHealingPlugin` + +```python +value: components.ResponseHealingPlugin = /* values here */ +``` + +### `components.WebSearchPlugin` + +```python +value: components.WebSearchPlugin = /* values here */ +``` + +### `components.WebFetchPlugin` + +```python +value: components.WebFetchPlugin = /* values here */ +``` + diff --git a/docs/components/chatrequestreasoning.mdx b/docs/components/chatrequestreasoning.mdx new file mode 100644 index 00000000..d9a271d7 --- /dev/null +++ b/docs/components/chatrequestreasoning.mdx @@ -0,0 +1,13 @@ +--- +title: "ChatRequestReasoning" +--- + +Configuration options for reasoning models + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `effort` | [OptionalNullable[components.ChatRequestEffort]](../components/chatrequesteffort.mdx) | :heavy_minus_sign: | Constrains effort on reasoning for reasoning models | medium | +| `summary` | [OptionalNullable[components.ChatReasoningSummaryVerbosityEnum]](../components/chatreasoningsummaryverbosityenum.mdx) | :heavy_minus_sign: | N/A | concise | \ No newline at end of file diff --git a/docs/components/chatrequestreasoningeffort.mdx b/docs/components/chatrequestreasoningeffort.mdx new file mode 100644 index 00000000..648e2718 --- /dev/null +++ b/docs/components/chatrequestreasoningeffort.mdx @@ -0,0 +1,27 @@ +--- +title: "ChatRequestReasoningEffort" +--- + +Shorthand for setting reasoning effort. Equivalent to setting reasoning.effort. Cannot be used simultaneously with reasoning.effort if they differ. + +## Example Usage + +```python +from openrouter.components import ChatRequestReasoningEffort + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ChatRequestReasoningEffort = "max" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"max"` +- `"xhigh"` +- `"high"` +- `"medium"` +- `"low"` +- `"minimal"` +- `"none"` diff --git a/docs/components/chatrequestservicetier.mdx b/docs/components/chatrequestservicetier.mdx new file mode 100644 index 00000000..66c2cd5c --- /dev/null +++ b/docs/components/chatrequestservicetier.mdx @@ -0,0 +1,25 @@ +--- +title: "ChatRequestServiceTier" +--- + +The service tier to use for processing this request. + +## Example Usage + +```python +from openrouter.components import ChatRequestServiceTier + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ChatRequestServiceTier = "auto" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"auto"` +- `"default"` +- `"flex"` +- `"priority"` +- `"scale"` diff --git a/docs/components/chatresult.mdx b/docs/components/chatresult.mdx new file mode 100644 index 00000000..94e3c0ce --- /dev/null +++ b/docs/components/chatresult.mdx @@ -0,0 +1,20 @@ +--- +title: "ChatResult" +--- + +Chat completion response + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `choices` | List[[components.ChatChoice](../components/chatchoice.mdx)] | :heavy_check_mark: | List of completion choices | | +| `created` | *int* | :heavy_check_mark: | Unix timestamp of creation | 1677652288 | +| `id` | *str* | :heavy_check_mark: | Unique completion identifier | chatcmpl-123 | +| `model` | *str* | :heavy_check_mark: | Model used for completion | openai/gpt-4 | +| `object` | [components.ChatResultObject](../components/chatresultobject.mdx) | :heavy_check_mark: | N/A | | +| `openrouter_metadata` | [Optional[components.OpenRouterMetadata]](../components/openroutermetadata.mdx) | :heavy_minus_sign: | N/A | \{
"attempt": 1,
"endpoints": \{
"available": [
\{
"model": "openai/gpt-4o",
"provider": "OpenAI",
"selected": true
}
],
"total": 1
},
"is_byok": false,
"region": "iad",
"requested": "openai/gpt-4o",
"strategy": "direct",
"summary": "available=1, selected=OpenAI"
} | +| `service_tier` | *OptionalNullable[str]* | :heavy_minus_sign: | The service tier used by the upstream provider for this request | default | +| `system_fingerprint` | *Nullable[str]* | :heavy_check_mark: | System fingerprint | fp_44709d6fcb | +| `usage` | [Optional[components.ChatUsage]](../components/chatusage.mdx) | :heavy_minus_sign: | Token usage statistics | \{
"completion_tokens": 15,
"completion_tokens_details": \{
"reasoning_tokens": 5
},
"cost": 0.0012,
"cost_details": \{
"upstream_inference_completions_cost": 0.0004,
"upstream_inference_cost": null,
"upstream_inference_prompt_cost": 0.0008
},
"is_byok": false,
"prompt_tokens": 10,
"prompt_tokens_details": \{
"cached_tokens": 2
},
"server_tool_use_details": \{
"tool_calls_executed": 2,
"tool_calls_requested": 2
},
"total_tokens": 25
} | \ No newline at end of file diff --git a/docs/components/chatresultobject.mdx b/docs/components/chatresultobject.mdx new file mode 100644 index 00000000..c4c06a38 --- /dev/null +++ b/docs/components/chatresultobject.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatResultObject" +--- + +## Example Usage + +```python +from openrouter.components import ChatResultObject +value: ChatResultObject = "chat.completion" +``` + + +## Values + +- `"chat.completion"` diff --git a/docs/components/chatsearchmodelsservertool.mdx b/docs/components/chatsearchmodelsservertool.mdx new file mode 100644 index 00000000..18b2f4e1 --- /dev/null +++ b/docs/components/chatsearchmodelsservertool.mdx @@ -0,0 +1,13 @@ +--- +title: "ChatSearchModelsServerTool" +--- + +OpenRouter built-in server tool: searches and filters AI models available on OpenRouter + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `parameters` | [Optional[components.SearchModelsServerToolConfig]](../components/searchmodelsservertoolconfig.mdx) | :heavy_minus_sign: | Configuration for the openrouter:experimental__search_models server tool | \{
"max_results": 5
} | +| `type` | [components.ChatSearchModelsServerToolType](../components/chatsearchmodelsservertooltype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/chatsearchmodelsservertooltype.mdx b/docs/components/chatsearchmodelsservertooltype.mdx new file mode 100644 index 00000000..8a51a607 --- /dev/null +++ b/docs/components/chatsearchmodelsservertooltype.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatSearchModelsServerToolType" +--- + +## Example Usage + +```python +from openrouter.components import ChatSearchModelsServerToolType +value: ChatSearchModelsServerToolType = "openrouter:experimental__search_models" +``` + + +## Values + +- `"openrouter:experimental__search_models"` diff --git a/docs/components/chatservertoolchoice.mdx b/docs/components/chatservertoolchoice.mdx new file mode 100644 index 00000000..9eac8152 --- /dev/null +++ b/docs/components/chatservertoolchoice.mdx @@ -0,0 +1,12 @@ +--- +title: "ChatServerToolChoice" +--- + +OpenRouter extension: force a specific server tool by naming it directly in `tool_choice.type` instead of wrapping it in `{ type: "function", function: { name } }`. + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `type` | *str* | :heavy_check_mark: | OpenRouter server-tool type to force (e.g. `openrouter:web_search`, `web_search`, `web_search_preview`). | openrouter:web_search | \ No newline at end of file diff --git a/docs/components/chatstreamchoice.mdx b/docs/components/chatstreamchoice.mdx new file mode 100644 index 00000000..d6bd70fb --- /dev/null +++ b/docs/components/chatstreamchoice.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatStreamChoice" +--- + +Streaming completion choice chunk + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `delta` | [components.ChatStreamDelta](../components/chatstreamdelta.mdx) | :heavy_check_mark: | Delta changes in streaming response | \{
"content": "Hello",
"role": "assistant"
} | +| `finish_reason` | [Nullable[components.ChatFinishReasonEnum]](../components/chatfinishreasonenum.mdx) | :heavy_check_mark: | N/A | stop | +| `index` | *int* | :heavy_check_mark: | Choice index | 0 | +| `logprobs` | [OptionalNullable[components.ChatTokenLogprobs]](../components/chattokenlogprobs.mdx) | :heavy_minus_sign: | Log probabilities for the completion | \{
"content": [
\{
"bytes": null,
"logprob": -0.612345,
"token": " Hello",
"top_logprobs": []
}
],
"refusal": null
} | \ No newline at end of file diff --git a/docs/components/chatstreamchunk.mdx b/docs/components/chatstreamchunk.mdx new file mode 100644 index 00000000..3adbd989 --- /dev/null +++ b/docs/components/chatstreamchunk.mdx @@ -0,0 +1,21 @@ +--- +title: "ChatStreamChunk" +--- + +Streaming chat completion chunk + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `choices` | List[[components.ChatStreamChoice](../components/chatstreamchoice.mdx)] | :heavy_check_mark: | List of streaming chunk choices | | +| `created` | *int* | :heavy_check_mark: | Unix timestamp of creation | 1677652288 | +| `error` | [Optional[components.ChatStreamChunkError]](../components/chatstreamchunkerror.mdx) | :heavy_minus_sign: | Error information | \{
"code": 429,
"message": "Rate limit exceeded",
"metadata": \{
"error_type": "rate_limit_exceeded"
}
} | +| `id` | *str* | :heavy_check_mark: | Unique chunk identifier | chatcmpl-123 | +| `model` | *str* | :heavy_check_mark: | Model used for completion | openai/gpt-4 | +| `object` | [components.ChatStreamChunkObject](../components/chatstreamchunkobject.mdx) | :heavy_check_mark: | N/A | | +| `openrouter_metadata` | [Optional[components.OpenRouterMetadata]](../components/openroutermetadata.mdx) | :heavy_minus_sign: | N/A | \{
"attempt": 1,
"endpoints": \{
"available": [
\{
"model": "openai/gpt-4o",
"provider": "OpenAI",
"selected": true
}
],
"total": 1
},
"is_byok": false,
"region": "iad",
"requested": "openai/gpt-4o",
"strategy": "direct",
"summary": "available=1, selected=OpenAI"
} | +| `service_tier` | *OptionalNullable[str]* | :heavy_minus_sign: | The service tier used by the upstream provider for this request | default | +| `system_fingerprint` | *Optional[str]* | :heavy_minus_sign: | System fingerprint | fp_44709d6fcb | +| `usage` | [Optional[components.ChatUsage]](../components/chatusage.mdx) | :heavy_minus_sign: | Token usage statistics | \{
"completion_tokens": 15,
"completion_tokens_details": \{
"reasoning_tokens": 5
},
"cost": 0.0012,
"cost_details": \{
"upstream_inference_completions_cost": 0.0004,
"upstream_inference_cost": null,
"upstream_inference_prompt_cost": 0.0008
},
"is_byok": false,
"prompt_tokens": 10,
"prompt_tokens_details": \{
"cached_tokens": 2
},
"server_tool_use_details": \{
"tool_calls_executed": 2,
"tool_calls_requested": 2
},
"total_tokens": 25
} | \ No newline at end of file diff --git a/docs/components/chatstreamchunkerror.mdx b/docs/components/chatstreamchunkerror.mdx new file mode 100644 index 00000000..e04b55b0 --- /dev/null +++ b/docs/components/chatstreamchunkerror.mdx @@ -0,0 +1,14 @@ +--- +title: "ChatStreamChunkError" +--- + +Error information + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `code` | *int* | :heavy_check_mark: | Error code | 429 | +| `message` | *str* | :heavy_check_mark: | Error message | Rate limit exceeded | +| `metadata` | [Optional[components.ChatStreamChunkMetadata]](../components/chatstreamchunkmetadata.mdx) | :heavy_minus_sign: | Structured error metadata | | \ No newline at end of file diff --git a/docs/components/chatstreamchunkmetadata.mdx b/docs/components/chatstreamchunkmetadata.mdx new file mode 100644 index 00000000..ce80e38c --- /dev/null +++ b/docs/components/chatstreamchunkmetadata.mdx @@ -0,0 +1,13 @@ +--- +title: "ChatStreamChunkMetadata" +--- + +Structured error metadata + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `error_type` | [components.APIErrorType](../components/apierrortype.mdx) | :heavy_check_mark: | Canonical OpenRouter error type, stable across all API formats | rate_limit_exceeded | +| `provider_code` | *Optional[str]* | :heavy_minus_sign: | Upstream provider-specific error code, when available | | \ No newline at end of file diff --git a/docs/components/chatstreamchunkobject.mdx b/docs/components/chatstreamchunkobject.mdx new file mode 100644 index 00000000..e07fc243 --- /dev/null +++ b/docs/components/chatstreamchunkobject.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatStreamChunkObject" +--- + +## Example Usage + +```python +from openrouter.components import ChatStreamChunkObject +value: ChatStreamChunkObject = "chat.completion.chunk" +``` + + +## Values + +- `"chat.completion.chunk"` diff --git a/docs/components/chatstreamdelta.mdx b/docs/components/chatstreamdelta.mdx new file mode 100644 index 00000000..ca45ea3c --- /dev/null +++ b/docs/components/chatstreamdelta.mdx @@ -0,0 +1,18 @@ +--- +title: "ChatStreamDelta" +--- + +Delta changes in streaming response + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `audio` | [Optional[components.ChatAudioOutput]](../components/chataudiooutput.mdx) | :heavy_minus_sign: | N/A | \{
"data": "UklGRnoGAABXQVZFZm10IBAAAAABAAEAQB8AAEAfAAABAAgAZGF0YQoGAACBhYqFbF1f",
"expires_at": 1677652400,
"id": "audio_abc123",
"transcript": "Hello! How can I help you today?"
} | +| `content` | *OptionalNullable[str]* | :heavy_minus_sign: | Message content delta | Hello | +| `reasoning` | *OptionalNullable[str]* | :heavy_minus_sign: | Reasoning content delta | I need to | +| `reasoning_details` | List[[components.ReasoningDetailUnion](../components/reasoningdetailunion.mdx)] | :heavy_minus_sign: | Reasoning details for extended thinking models | [
\{
"text": "Let me think about this...",
"type": "text"
}
] | +| `refusal` | *OptionalNullable[str]* | :heavy_minus_sign: | Refusal message delta | null | +| `role` | [Optional[components.ChatStreamDeltaRole]](../components/chatstreamdeltarole.mdx) | :heavy_minus_sign: | The role of the message author | assistant | +| `tool_calls` | List[[components.ChatStreamToolCall](../components/chatstreamtoolcall.mdx)] | :heavy_minus_sign: | Tool calls delta | | \ No newline at end of file diff --git a/docs/components/chatstreamdeltarole.mdx b/docs/components/chatstreamdeltarole.mdx new file mode 100644 index 00000000..775d363c --- /dev/null +++ b/docs/components/chatstreamdeltarole.mdx @@ -0,0 +1,17 @@ +--- +title: "ChatStreamDeltaRole" +--- + +The role of the message author + +## Example Usage + +```python +from openrouter.components import ChatStreamDeltaRole +value: ChatStreamDeltaRole = "assistant" +``` + + +## Values + +- `"assistant"` diff --git a/docs/components/chatstreamingresponse.mdx b/docs/components/chatstreamingresponse.mdx new file mode 100644 index 00000000..bd7543c9 --- /dev/null +++ b/docs/components/chatstreamingresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "ChatStreamingResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [components.ChatStreamChunk](../components/chatstreamchunk.mdx) | :heavy_check_mark: | Streaming chat completion chunk | \{
"choices": [
\{
"delta": \{
"content": "Hello",
"role": "assistant"
},
"finish_reason": null,
"index": 0
}
],
"created": 1677652288,
"id": "chatcmpl-123",
"model": "openai/gpt-4",
"object": "chat.completion.chunk"
} | \ No newline at end of file diff --git a/docs/components/chatstreamoptions.md b/docs/components/chatstreamoptions.mdx similarity index 98% rename from docs/components/chatstreamoptions.md rename to docs/components/chatstreamoptions.mdx index ade029ee..430faf2a 100644 --- a/docs/components/chatstreamoptions.md +++ b/docs/components/chatstreamoptions.mdx @@ -1,4 +1,6 @@ -# ChatStreamOptions +--- +title: "ChatStreamOptions" +--- Streaming configuration options diff --git a/docs/components/chatstreamtoolcall.mdx b/docs/components/chatstreamtoolcall.mdx new file mode 100644 index 00000000..beba823a --- /dev/null +++ b/docs/components/chatstreamtoolcall.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatStreamToolCall" +--- + +Tool call delta for streaming responses + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `function` | [Optional[components.ChatStreamToolCallFunction]](../components/chatstreamtoolcallfunction.mdx) | :heavy_minus_sign: | Function call details | | +| `id` | *Optional[str]* | :heavy_minus_sign: | Tool call identifier | call_abc123 | +| `index` | *int* | :heavy_check_mark: | Tool call index in the array | 0 | +| `type` | [Optional[components.ChatStreamToolCallType]](../components/chatstreamtoolcalltype.mdx) | :heavy_minus_sign: | Tool call type | function | \ No newline at end of file diff --git a/docs/components/chatstreamtoolcallfunction.mdx b/docs/components/chatstreamtoolcallfunction.mdx new file mode 100644 index 00000000..12a71db2 --- /dev/null +++ b/docs/components/chatstreamtoolcallfunction.mdx @@ -0,0 +1,13 @@ +--- +title: "ChatStreamToolCallFunction" +--- + +Function call details + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | +| `arguments` | *Optional[str]* | :heavy_minus_sign: | Function arguments as JSON string | \{"location": "..."} | +| `name` | *Optional[str]* | :heavy_minus_sign: | Function name | get_weather | \ No newline at end of file diff --git a/docs/components/chatstreamtoolcalltype.mdx b/docs/components/chatstreamtoolcalltype.mdx new file mode 100644 index 00000000..602231cf --- /dev/null +++ b/docs/components/chatstreamtoolcalltype.mdx @@ -0,0 +1,17 @@ +--- +title: "ChatStreamToolCallType" +--- + +Tool call type + +## Example Usage + +```python +from openrouter.components import ChatStreamToolCallType +value: ChatStreamToolCallType = "function" +``` + + +## Values + +- `"function"` diff --git a/docs/components/chatsystemmessage.mdx b/docs/components/chatsystemmessage.mdx new file mode 100644 index 00000000..7f6ccc99 --- /dev/null +++ b/docs/components/chatsystemmessage.mdx @@ -0,0 +1,14 @@ +--- +title: "ChatSystemMessage" +--- + +System message for setting behavior + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `content` | [components.ChatSystemMessageContent](../components/chatsystemmessagecontent.mdx) | :heavy_check_mark: | System message content | You are a helpful assistant. | +| `name` | *Optional[str]* | :heavy_minus_sign: | Optional name for the system message | Assistant Config | +| `role` | [components.ChatSystemMessageRole](../components/chatsystemmessagerole.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/chatsystemmessagecontent.mdx b/docs/components/chatsystemmessagecontent.mdx new file mode 100644 index 00000000..a8bda9f0 --- /dev/null +++ b/docs/components/chatsystemmessagecontent.mdx @@ -0,0 +1,21 @@ +--- +title: "ChatSystemMessageContent" +--- + +System message content + + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `List[components.ChatContentText]` + +```python +value: List[components.ChatContentText] = /* values here */ +``` + diff --git a/docs/components/chatsystemmessagerole.mdx b/docs/components/chatsystemmessagerole.mdx new file mode 100644 index 00000000..968ecf2c --- /dev/null +++ b/docs/components/chatsystemmessagerole.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatSystemMessageRole" +--- + +## Example Usage + +```python +from openrouter.components import ChatSystemMessageRole +value: ChatSystemMessageRole = "system" +``` + + +## Values + +- `"system"` diff --git a/docs/components/chattokenlogprob.mdx b/docs/components/chattokenlogprob.mdx new file mode 100644 index 00000000..f6b39af9 --- /dev/null +++ b/docs/components/chattokenlogprob.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatTokenLogprob" +--- + +Token log probability information + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `bytes_` | List[*int*] | :heavy_check_mark: | UTF-8 bytes of the token | +| `logprob` | *float* | :heavy_check_mark: | Log probability of the token | +| `token` | *str* | :heavy_check_mark: | The token | +| `top_logprobs` | List[[components.ChatTokenLogprobTopLogprob](../components/chattokenlogprobtoplogprob.mdx)] | :heavy_check_mark: | Top alternative tokens with probabilities | \ No newline at end of file diff --git a/docs/components/chattokenlogprobs.mdx b/docs/components/chattokenlogprobs.mdx new file mode 100644 index 00000000..068610e7 --- /dev/null +++ b/docs/components/chattokenlogprobs.mdx @@ -0,0 +1,13 @@ +--- +title: "ChatTokenLogprobs" +--- + +Log probabilities for the completion + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `content` | List[[components.ChatTokenLogprob](../components/chattokenlogprob.mdx)] | :heavy_check_mark: | Log probabilities for content tokens | +| `refusal` | List[[components.ChatTokenLogprob](../components/chattokenlogprob.mdx)] | :heavy_minus_sign: | Log probabilities for refusal tokens | \ No newline at end of file diff --git a/docs/components/responseoutputtexttoplogprob.md b/docs/components/chattokenlogprobtoplogprob.mdx similarity index 90% rename from docs/components/responseoutputtexttoplogprob.md rename to docs/components/chattokenlogprobtoplogprob.mdx index 73e27f23..89813675 100644 --- a/docs/components/responseoutputtexttoplogprob.md +++ b/docs/components/chattokenlogprobtoplogprob.mdx @@ -1,5 +1,6 @@ -# ResponseOutputTextTopLogprob - +--- +title: "ChatTokenLogprobTopLogprob" +--- ## Fields diff --git a/docs/components/chattoolcall.mdx b/docs/components/chattoolcall.mdx new file mode 100644 index 00000000..09bffc9d --- /dev/null +++ b/docs/components/chattoolcall.mdx @@ -0,0 +1,14 @@ +--- +title: "ChatToolCall" +--- + +Tool call made by the assistant + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `function` | [components.ChatToolCallFunction](../components/chattoolcallfunction.mdx) | :heavy_check_mark: | N/A | +| `id` | *str* | :heavy_check_mark: | Tool call identifier | +| `type` | [components.ChatToolCallType](../components/chattoolcalltype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/chattoolcallfunction.mdx b/docs/components/chattoolcallfunction.mdx new file mode 100644 index 00000000..bf3ffcad --- /dev/null +++ b/docs/components/chattoolcallfunction.mdx @@ -0,0 +1,10 @@ +--- +title: "ChatToolCallFunction" +--- + +## Fields + +| Field | Type | Required | Description | +| --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | +| `arguments` | *str* | :heavy_check_mark: | Function arguments as JSON string | +| `name` | *str* | :heavy_check_mark: | Function name to call | \ No newline at end of file diff --git a/docs/components/chattoolcalltype.mdx b/docs/components/chattoolcalltype.mdx new file mode 100644 index 00000000..db90aff3 --- /dev/null +++ b/docs/components/chattoolcalltype.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatToolCallType" +--- + +## Example Usage + +```python +from openrouter.components import ChatToolCallType +value: ChatToolCallType = "function" +``` + + +## Values + +- `"function"` diff --git a/docs/components/chattoolchoice.mdx b/docs/components/chattoolchoice.mdx new file mode 100644 index 00000000..c80ecdaa --- /dev/null +++ b/docs/components/chattoolchoice.mdx @@ -0,0 +1,39 @@ +--- +title: "ChatToolChoice" +--- + +Tool choice configuration + + +## Supported Types + +### `components.ChatToolChoiceNone` + +```python +value: components.ChatToolChoiceNone = /* values here */ +``` + +### `components.ChatToolChoiceAuto` + +```python +value: components.ChatToolChoiceAuto = /* values here */ +``` + +### `components.ChatToolChoiceRequired` + +```python +value: components.ChatToolChoiceRequired = /* values here */ +``` + +### `components.ChatNamedToolChoice` + +```python +value: components.ChatNamedToolChoice = /* values here */ +``` + +### `components.ChatServerToolChoice` + +```python +value: components.ChatServerToolChoice = /* values here */ +``` + diff --git a/docs/components/chattoolchoiceauto.mdx b/docs/components/chattoolchoiceauto.mdx new file mode 100644 index 00000000..addf7830 --- /dev/null +++ b/docs/components/chattoolchoiceauto.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatToolChoiceAuto" +--- + +## Example Usage + +```python +from openrouter.components import ChatToolChoiceAuto +value: ChatToolChoiceAuto = "auto" +``` + + +## Values + +- `"auto"` diff --git a/docs/components/chattoolchoicenone.mdx b/docs/components/chattoolchoicenone.mdx new file mode 100644 index 00000000..edaefb9c --- /dev/null +++ b/docs/components/chattoolchoicenone.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatToolChoiceNone" +--- + +## Example Usage + +```python +from openrouter.components import ChatToolChoiceNone +value: ChatToolChoiceNone = "none" +``` + + +## Values + +- `"none"` diff --git a/docs/components/chattoolchoicerequired.mdx b/docs/components/chattoolchoicerequired.mdx new file mode 100644 index 00000000..dfea698b --- /dev/null +++ b/docs/components/chattoolchoicerequired.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatToolChoiceRequired" +--- + +## Example Usage + +```python +from openrouter.components import ChatToolChoiceRequired +value: ChatToolChoiceRequired = "required" +``` + + +## Values + +- `"required"` diff --git a/docs/components/chattoolmessage.mdx b/docs/components/chattoolmessage.mdx new file mode 100644 index 00000000..bd39bbff --- /dev/null +++ b/docs/components/chattoolmessage.mdx @@ -0,0 +1,14 @@ +--- +title: "ChatToolMessage" +--- + +Tool response message + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `content` | [components.ChatToolMessageContent](../components/chattoolmessagecontent.mdx) | :heavy_check_mark: | Tool response content | The weather in San Francisco is 72°F and sunny. | +| `role` | [components.ChatToolMessageRole](../components/chattoolmessagerole.mdx) | :heavy_check_mark: | N/A | | +| `tool_call_id` | *str* | :heavy_check_mark: | ID of the assistant message tool call this message responds to | call_abc123 | \ No newline at end of file diff --git a/docs/components/chattoolmessagecontent.mdx b/docs/components/chattoolmessagecontent.mdx new file mode 100644 index 00000000..1282e856 --- /dev/null +++ b/docs/components/chattoolmessagecontent.mdx @@ -0,0 +1,21 @@ +--- +title: "ChatToolMessageContent" +--- + +Tool response content + + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `List[components.ChatContentItems]` + +```python +value: List[components.ChatContentItems] = /* values here */ +``` + diff --git a/docs/components/chattoolmessagerole.mdx b/docs/components/chattoolmessagerole.mdx new file mode 100644 index 00000000..48386287 --- /dev/null +++ b/docs/components/chattoolmessagerole.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatToolMessageRole" +--- + +## Example Usage + +```python +from openrouter.components import ChatToolMessageRole +value: ChatToolMessageRole = "tool" +``` + + +## Values + +- `"tool"` diff --git a/docs/components/chatusage.mdx b/docs/components/chatusage.mdx new file mode 100644 index 00000000..a45747f5 --- /dev/null +++ b/docs/components/chatusage.mdx @@ -0,0 +1,20 @@ +--- +title: "ChatUsage" +--- + +Token usage statistics + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `completion_tokens` | *int* | :heavy_check_mark: | Number of tokens in the completion | | +| `completion_tokens_details` | [OptionalNullable[components.ChatUsageCompletionTokensDetails]](../components/chatusagecompletiontokensdetails.mdx) | :heavy_minus_sign: | Detailed completion token usage | | +| `cost` | *OptionalNullable[float]* | :heavy_minus_sign: | Cost of the completion | | +| `cost_details` | [OptionalNullable[components.CostDetails]](../components/costdetails.mdx) | :heavy_minus_sign: | Breakdown of upstream inference costs | \{
"upstream_inference_completions_cost": 0.0004,
"upstream_inference_cost": null,
"upstream_inference_prompt_cost": 0.0008
} | +| `is_byok` | *Optional[bool]* | :heavy_minus_sign: | Whether a request was made using a Bring Your Own Key configuration | | +| `prompt_tokens` | *int* | :heavy_check_mark: | Number of tokens in the prompt | | +| `prompt_tokens_details` | [OptionalNullable[components.ChatUsagePromptTokensDetails]](../components/chatusageprompttokensdetails.mdx) | :heavy_minus_sign: | Detailed prompt token usage | | +| `server_tool_use_details` | [OptionalNullable[components.ServerToolUseDetails]](../components/servertoolusedetails.mdx) | :heavy_minus_sign: | Usage for server-side tool execution (e.g., web search) | | +| `total_tokens` | *int* | :heavy_check_mark: | Total number of tokens | | \ No newline at end of file diff --git a/docs/components/chatusagecompletiontokensdetails.mdx b/docs/components/chatusagecompletiontokensdetails.mdx new file mode 100644 index 00000000..6ac1392b --- /dev/null +++ b/docs/components/chatusagecompletiontokensdetails.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatUsageCompletionTokensDetails" +--- + +Detailed completion token usage + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------- | ---------------------------- | ---------------------------- | ---------------------------- | +| `accepted_prediction_tokens` | *OptionalNullable[int]* | :heavy_minus_sign: | Accepted prediction tokens | +| `audio_tokens` | *OptionalNullable[int]* | :heavy_minus_sign: | Tokens used for audio output | +| `reasoning_tokens` | *OptionalNullable[int]* | :heavy_minus_sign: | Tokens used for reasoning | +| `rejected_prediction_tokens` | *OptionalNullable[int]* | :heavy_minus_sign: | Rejected prediction tokens | \ No newline at end of file diff --git a/docs/components/chatusageprompttokensdetails.mdx b/docs/components/chatusageprompttokensdetails.mdx new file mode 100644 index 00000000..0f5dac4b --- /dev/null +++ b/docs/components/chatusageprompttokensdetails.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatUsagePromptTokensDetails" +--- + +Detailed prompt token usage + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `audio_tokens` | *Optional[int]* | :heavy_minus_sign: | Audio input tokens | +| `cache_write_tokens` | *Optional[int]* | :heavy_minus_sign: | Tokens written to cache. Only returned for models with explicit caching and cache write pricing. | +| `cached_tokens` | *Optional[int]* | :heavy_minus_sign: | Cached prompt tokens | +| `video_tokens` | *Optional[int]* | :heavy_minus_sign: | Video input tokens | \ No newline at end of file diff --git a/docs/components/chatusermessage.mdx b/docs/components/chatusermessage.mdx new file mode 100644 index 00000000..3b6546aa --- /dev/null +++ b/docs/components/chatusermessage.mdx @@ -0,0 +1,14 @@ +--- +title: "ChatUserMessage" +--- + +User message + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `content` | [components.ChatUserMessageContent](../components/chatusermessagecontent.mdx) | :heavy_check_mark: | User message content | What is the capital of France? | +| `name` | *Optional[str]* | :heavy_minus_sign: | Optional name for the user | User | +| `role` | [components.ChatUserMessageRole](../components/chatusermessagerole.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/chatusermessagecontent.mdx b/docs/components/chatusermessagecontent.mdx new file mode 100644 index 00000000..ddf804c4 --- /dev/null +++ b/docs/components/chatusermessagecontent.mdx @@ -0,0 +1,21 @@ +--- +title: "ChatUserMessageContent" +--- + +User message content + + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `List[components.ChatContentItems]` + +```python +value: List[components.ChatContentItems] = /* values here */ +``` + diff --git a/docs/components/chatusermessagerole.mdx b/docs/components/chatusermessagerole.mdx new file mode 100644 index 00000000..11d6c220 --- /dev/null +++ b/docs/components/chatusermessagerole.mdx @@ -0,0 +1,15 @@ +--- +title: "ChatUserMessageRole" +--- + +## Example Usage + +```python +from openrouter.components import ChatUserMessageRole +value: ChatUserMessageRole = "user" +``` + + +## Values + +- `"user"` diff --git a/docs/components/chatwebsearchshorthand.mdx b/docs/components/chatwebsearchshorthand.mdx new file mode 100644 index 00000000..942103ab --- /dev/null +++ b/docs/components/chatwebsearchshorthand.mdx @@ -0,0 +1,21 @@ +--- +title: "ChatWebSearchShorthand" +--- + +Web search tool using OpenAI Responses API syntax. Automatically converted to openrouter:web_search. + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `allowed_domains` | List[*str*] | :heavy_minus_sign: | Limit search results to these domains. Supported by Exa, Firecrawl, Parallel, Perplexity, and most native providers (Anthropic, OpenAI, xAI). Cannot be used with excluded_domains. | | +| `engine` | [Optional[components.WebSearchEngineEnum]](../components/websearchengineenum.mdx) | :heavy_minus_sign: | Which search engine to use. "auto" (default) uses native if the provider supports it, otherwise Exa. "native" forces the provider's built-in search. "exa" forces the Exa search API. "firecrawl" uses Firecrawl (requires BYOK). "parallel" uses the Parallel search API. "perplexity" uses the Perplexity Search API (raw ranked results). | auto | +| `excluded_domains` | List[*str*] | :heavy_minus_sign: | Exclude search results from these domains. Supported by Exa, Firecrawl, Parallel, Perplexity, Anthropic, and xAI. Not supported with OpenAI (silently ignored). Cannot be used with allowed_domains. | | +| `max_characters` | *Optional[int]* | :heavy_minus_sign: | Exact maximum number of characters of content per search result. Applies to the Exa, Parallel, and Perplexity engines; ignored with native provider search and Firecrawl. For Exa, caps highlight content per result. For Parallel, caps excerpt content per result (default 1,500 when omitted). For Perplexity, maps to the native `max_tokens_per_page` parameter (converted from characters to tokens) and trims the response to the exact character cap. When both `max_characters` and `search_context_size` are set, `max_characters` takes precedence. When omitted, falls back to `search_context_size` mapping (Exa) or engine defaults (Parallel, Perplexity). | 2000 | +| `max_results` | *Optional[int]* | :heavy_minus_sign: | Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, Parallel, and Perplexity engines; ignored with native provider search. Perplexity supports a maximum of 20; values above 20 are clamped. | 5 | +| `max_total_results` | *Optional[int]* | :heavy_minus_sign: | Maximum total number of search results across all search calls in a single request. Once this limit is reached, the tool will stop returning new results. Useful for controlling cost and context size in agentic loops. Defaults to 50 when not specified. | 50 | +| `parameters` | [Optional[components.WebSearchConfig]](../components/websearchconfig.mdx) | :heavy_minus_sign: | N/A | \{
"max_results": 5,
"search_context_size": "medium"
} | +| `search_context_size` | [Optional[components.SearchQualityLevel]](../components/searchqualitylevel.mdx) | :heavy_minus_sign: | How much context to retrieve per result. Applies to Exa, Parallel, and Perplexity engines; ignored with native provider search and Firecrawl. For Exa, pins a fixed per-result character cap (low=5,000, medium=15,000, high=30,000); when omitted, Exa picks an adaptive size per query and document (typically ~2,000–4,000 characters per result). For Parallel, controls the total characters across all results; when omitted, Parallel uses its own default size. For Perplexity, maps directly to the Search API's native search_context_size parameter. Overridden by `max_characters` when both are set. | medium | +| `type` | [components.ChatWebSearchShorthandType](../components/chatwebsearchshorthandtype.mdx) | :heavy_check_mark: | N/A | | +| `user_location` | [Optional[components.WebSearchUserLocationServerTool]](../components/websearchuserlocationservertool.mdx) | :heavy_minus_sign: | Approximate user location for location-biased results. | \{
"city": "San Francisco",
"country": "US",
"region": "California",
"timezone": "America/Los_Angeles",
"type": "approximate"
} | \ No newline at end of file diff --git a/docs/components/chatwebsearchshorthandtype.mdx b/docs/components/chatwebsearchshorthandtype.mdx new file mode 100644 index 00000000..6056c498 --- /dev/null +++ b/docs/components/chatwebsearchshorthandtype.mdx @@ -0,0 +1,22 @@ +--- +title: "ChatWebSearchShorthandType" +--- + +## Example Usage + +```python +from openrouter.components import ChatWebSearchShorthandType + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ChatWebSearchShorthandType = "web_search" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"web_search"` +- `"web_search_preview"` +- `"web_search_preview_2025_03_11"` +- `"web_search_2025_08_26"` diff --git a/docs/components/citation.mdx b/docs/components/citation.mdx new file mode 100644 index 00000000..9e503681 --- /dev/null +++ b/docs/components/citation.mdx @@ -0,0 +1,36 @@ +--- +title: "Citation" +--- + +## Supported Types + +### `components.AnthropicCitationCharLocationParam` + +```python +value: components.AnthropicCitationCharLocationParam = /* values here */ +``` + +### `components.AnthropicCitationContentBlockLocationParam` + +```python +value: components.AnthropicCitationContentBlockLocationParam = /* values here */ +``` + +### `components.AnthropicCitationPageLocationParam` + +```python +value: components.AnthropicCitationPageLocationParam = /* values here */ +``` + +### `components.AnthropicCitationSearchResultLocation` + +```python +value: components.AnthropicCitationSearchResultLocation = /* values here */ +``` + +### `components.AnthropicCitationWebSearchResultLocation` + +```python +value: components.AnthropicCitationWebSearchResultLocation = /* values here */ +``` + diff --git a/docs/components/cleartoolinputs.mdx b/docs/components/cleartoolinputs.mdx new file mode 100644 index 00000000..d5682fcb --- /dev/null +++ b/docs/components/cleartoolinputs.mdx @@ -0,0 +1,24 @@ +--- +title: "ClearToolInputs" +--- + +## Supported Types + +### `bool` + +```python +value: bool = /* values here */ +``` + +### `List[str]` + +```python +value: List[str] = /* values here */ +``` + +### `Any` + +```python +value: Any = /* values here */ +``` + diff --git a/docs/components/code.md b/docs/components/code.md deleted file mode 100644 index 86a85544..00000000 --- a/docs/components/code.md +++ /dev/null @@ -1,25 +0,0 @@ -# Code - - -## Values - -| Name | Value | -| -------------------------------- | -------------------------------- | -| `SERVER_ERROR` | server_error | -| `RATE_LIMIT_EXCEEDED` | rate_limit_exceeded | -| `INVALID_PROMPT` | invalid_prompt | -| `VECTOR_STORE_TIMEOUT` | vector_store_timeout | -| `INVALID_IMAGE` | invalid_image | -| `INVALID_IMAGE_FORMAT` | invalid_image_format | -| `INVALID_BASE64_IMAGE` | invalid_base64_image | -| `INVALID_IMAGE_URL` | invalid_image_url | -| `IMAGE_TOO_LARGE` | image_too_large | -| `IMAGE_TOO_SMALL` | image_too_small | -| `IMAGE_PARSE_ERROR` | image_parse_error | -| `IMAGE_CONTENT_POLICY_VIOLATION` | image_content_policy_violation | -| `INVALID_IMAGE_MODE` | invalid_image_mode | -| `IMAGE_FILE_TOO_LARGE` | image_file_too_large | -| `UNSUPPORTED_IMAGE_MEDIA_TYPE` | unsupported_image_media_type | -| `EMPTY_IMAGE_FILE` | empty_image_file | -| `FAILED_TO_DOWNLOAD_IMAGE` | failed_to_download_image | -| `IMAGE_FILE_NOT_FOUND` | image_file_not_found | \ No newline at end of file diff --git a/docs/components/code.mdx b/docs/components/code.mdx new file mode 100644 index 00000000..dc6776c3 --- /dev/null +++ b/docs/components/code.mdx @@ -0,0 +1,36 @@ +--- +title: "Code" +--- + +## Example Usage + +```python +from openrouter.components import Code + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Code = "server_error" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"server_error"` +- `"rate_limit_exceeded"` +- `"invalid_prompt"` +- `"vector_store_timeout"` +- `"invalid_image"` +- `"invalid_image_format"` +- `"invalid_base64_image"` +- `"invalid_image_url"` +- `"image_too_large"` +- `"image_too_small"` +- `"image_parse_error"` +- `"image_content_policy_violation"` +- `"invalid_image_mode"` +- `"image_file_too_large"` +- `"unsupported_image_media_type"` +- `"empty_image_file"` +- `"failed_to_download_image"` +- `"image_file_not_found"` diff --git a/docs/components/codeinterpreterservertool.mdx b/docs/components/codeinterpreterservertool.mdx new file mode 100644 index 00000000..95266212 --- /dev/null +++ b/docs/components/codeinterpreterservertool.mdx @@ -0,0 +1,13 @@ +--- +title: "CodeInterpreterServerTool" +--- + +Code interpreter tool configuration + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `container` | [components.Container](../components/container.mdx) | :heavy_check_mark: | N/A | +| `type` | [components.TypeCodeInterpreter](../components/typecodeinterpreter.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/codexlocalshelltool.mdx b/docs/components/codexlocalshelltool.mdx new file mode 100644 index 00000000..f5b8e9d3 --- /dev/null +++ b/docs/components/codexlocalshelltool.mdx @@ -0,0 +1,12 @@ +--- +title: "CodexLocalShellTool" +--- + +Local shell tool configuration + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `type` | [components.CodexLocalShellToolType](../components/codexlocalshelltooltype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/codexlocalshelltooltype.mdx b/docs/components/codexlocalshelltooltype.mdx new file mode 100644 index 00000000..aeeea69f --- /dev/null +++ b/docs/components/codexlocalshelltooltype.mdx @@ -0,0 +1,15 @@ +--- +title: "CodexLocalShellToolType" +--- + +## Example Usage + +```python +from openrouter.components import CodexLocalShellToolType +value: CodexLocalShellToolType = "local_shell" +``` + + +## Values + +- `"local_shell"` diff --git a/docs/components/command.mdx b/docs/components/command.mdx new file mode 100644 index 00000000..8a2adc33 --- /dev/null +++ b/docs/components/command.mdx @@ -0,0 +1,22 @@ +--- +title: "Command" +--- + +## Example Usage + +```python +from openrouter.components import Command + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Command = "view" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"view"` +- `"create"` +- `"str_replace"` +- `"insert"` diff --git a/docs/components/compactionitem.mdx b/docs/components/compactionitem.mdx new file mode 100644 index 00000000..7fb1a632 --- /dev/null +++ b/docs/components/compactionitem.mdx @@ -0,0 +1,14 @@ +--- +title: "CompactionItem" +--- + +A context compaction marker with encrypted summary + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `encrypted_content` | *str* | :heavy_check_mark: | N/A | +| `id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `type` | [components.CompactionItemType](../components/compactionitemtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/compactionitemtype.mdx b/docs/components/compactionitemtype.mdx new file mode 100644 index 00000000..335f2a6a --- /dev/null +++ b/docs/components/compactionitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "CompactionItemType" +--- + +## Example Usage + +```python +from openrouter.components import CompactionItemType +value: CompactionItemType = "compaction" +``` + + +## Values + +- `"compaction"` diff --git a/docs/components/compoundfilter.mdx b/docs/components/compoundfilter.mdx new file mode 100644 index 00000000..6c3f524e --- /dev/null +++ b/docs/components/compoundfilter.mdx @@ -0,0 +1,13 @@ +--- +title: "CompoundFilter" +--- + +A compound filter that combines multiple comparison or compound filters + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `filters` | List[Dict[str, *Nullable[Any]*]] | :heavy_check_mark: | N/A | +| `type` | [components.CompoundFilterType](../components/compoundfiltertype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/compoundfiltertype.mdx b/docs/components/compoundfiltertype.mdx new file mode 100644 index 00000000..ab113719 --- /dev/null +++ b/docs/components/compoundfiltertype.mdx @@ -0,0 +1,20 @@ +--- +title: "CompoundFilterType" +--- + +## Example Usage + +```python +from openrouter.components import CompoundFilterType + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: CompoundFilterType = "and" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"and"` +- `"or"` diff --git a/docs/components/computeruseservertool.mdx b/docs/components/computeruseservertool.mdx new file mode 100644 index 00000000..3021debd --- /dev/null +++ b/docs/components/computeruseservertool.mdx @@ -0,0 +1,15 @@ +--- +title: "ComputerUseServerTool" +--- + +Computer use preview tool configuration + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `display_height` | *int* | :heavy_check_mark: | N/A | +| `display_width` | *int* | :heavy_check_mark: | N/A | +| `environment` | [components.Environment](../components/environment.mdx) | :heavy_check_mark: | N/A | +| `type` | [components.ComputerUseServerToolType](../components/computeruseservertooltype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/computeruseservertooltype.mdx b/docs/components/computeruseservertooltype.mdx new file mode 100644 index 00000000..37199a7b --- /dev/null +++ b/docs/components/computeruseservertooltype.mdx @@ -0,0 +1,15 @@ +--- +title: "ComputerUseServerToolType" +--- + +## Example Usage + +```python +from openrouter.components import ComputerUseServerToolType +value: ComputerUseServerToolType = "computer_use_preview" +``` + + +## Values + +- `"computer_use_preview"` diff --git a/docs/components/conflictresponseerrordata.mdx b/docs/components/conflictresponseerrordata.mdx new file mode 100644 index 00000000..a48176a7 --- /dev/null +++ b/docs/components/conflictresponseerrordata.mdx @@ -0,0 +1,14 @@ +--- +title: "ConflictResponseErrorData" +--- + +Error data for ConflictResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------- | -------------------------- | -------------------------- | -------------------------- | +| `code` | *int* | :heavy_check_mark: | N/A | +| `message` | *str* | :heavy_check_mark: | N/A | +| `metadata` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/connectorid.mdx b/docs/components/connectorid.mdx new file mode 100644 index 00000000..783b14bf --- /dev/null +++ b/docs/components/connectorid.mdx @@ -0,0 +1,26 @@ +--- +title: "ConnectorID" +--- + +## Example Usage + +```python +from openrouter.components import ConnectorID + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ConnectorID = "connector_dropbox" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"connector_dropbox"` +- `"connector_gmail"` +- `"connector_googlecalendar"` +- `"connector_googledrive"` +- `"connector_microsoftteams"` +- `"connector_outlookcalendar"` +- `"connector_outlookemail"` +- `"connector_sharepoint"` diff --git a/docs/components/container.mdx b/docs/components/container.mdx new file mode 100644 index 00000000..d82379ca --- /dev/null +++ b/docs/components/container.mdx @@ -0,0 +1,18 @@ +--- +title: "Container" +--- + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `components.ContainerAuto` + +```python +value: components.ContainerAuto = /* values here */ +``` + diff --git a/docs/components/containerauto.mdx b/docs/components/containerauto.mdx new file mode 100644 index 00000000..00e55b66 --- /dev/null +++ b/docs/components/containerauto.mdx @@ -0,0 +1,11 @@ +--- +title: "ContainerAuto" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `file_ids` | List[*str*] | :heavy_minus_sign: | N/A | +| `memory_limit` | [OptionalNullable[components.MemoryLimit]](../components/memorylimit.mdx) | :heavy_minus_sign: | N/A | +| `type` | [components.ContainerType](../components/containertype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/containerautoenvironment.mdx b/docs/components/containerautoenvironment.mdx new file mode 100644 index 00000000..f902de7b --- /dev/null +++ b/docs/components/containerautoenvironment.mdx @@ -0,0 +1,12 @@ +--- +title: "ContainerAutoEnvironment" +--- + +An OpenRouter-managed, auto-provisioned ephemeral container. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `type` | [components.ContainerAutoEnvironmentType](../components/containerautoenvironmenttype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/containerautoenvironmenttype.mdx b/docs/components/containerautoenvironmenttype.mdx new file mode 100644 index 00000000..1c99ecd1 --- /dev/null +++ b/docs/components/containerautoenvironmenttype.mdx @@ -0,0 +1,15 @@ +--- +title: "ContainerAutoEnvironmentType" +--- + +## Example Usage + +```python +from openrouter.components import ContainerAutoEnvironmentType +value: ContainerAutoEnvironmentType = "container_auto" +``` + + +## Values + +- `"container_auto"` diff --git a/docs/components/containerreferenceenvironment.mdx b/docs/components/containerreferenceenvironment.mdx new file mode 100644 index 00000000..28843b0f --- /dev/null +++ b/docs/components/containerreferenceenvironment.mdx @@ -0,0 +1,13 @@ +--- +title: "ContainerReferenceEnvironment" +--- + +Reference to a previously created container to reuse. + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `container_id` | *str* | :heavy_check_mark: | Identifier of an existing container to reuse (max 20 characters). | cntr_abc123 | +| `type` | [components.ContainerReferenceEnvironmentType](../components/containerreferenceenvironmenttype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/containerreferenceenvironmenttype.mdx b/docs/components/containerreferenceenvironmenttype.mdx new file mode 100644 index 00000000..feb2c448 --- /dev/null +++ b/docs/components/containerreferenceenvironmenttype.mdx @@ -0,0 +1,15 @@ +--- +title: "ContainerReferenceEnvironmentType" +--- + +## Example Usage + +```python +from openrouter.components import ContainerReferenceEnvironmentType +value: ContainerReferenceEnvironmentType = "container_reference" +``` + + +## Values + +- `"container_reference"` diff --git a/docs/components/containertype.mdx b/docs/components/containertype.mdx new file mode 100644 index 00000000..9a8e9eaa --- /dev/null +++ b/docs/components/containertype.mdx @@ -0,0 +1,15 @@ +--- +title: "ContainerType" +--- + +## Example Usage + +```python +from openrouter.components import ContainerType +value: ContainerType = "auto" +``` + + +## Values + +- `"auto"` diff --git a/docs/components/contentcompaction.mdx b/docs/components/contentcompaction.mdx new file mode 100644 index 00000000..39acf3a7 --- /dev/null +++ b/docs/components/contentcompaction.mdx @@ -0,0 +1,11 @@ +--- +title: "ContentCompaction" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `content` | *Nullable[str]* | :heavy_check_mark: | N/A | | +| `type` | [components.MessagesMessageParamTypeCompaction](../components/messagesmessageparamtypecompaction.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/contentfilteraction.mdx b/docs/components/contentfilteraction.mdx new file mode 100644 index 00000000..8419defc --- /dev/null +++ b/docs/components/contentfilteraction.mdx @@ -0,0 +1,22 @@ +--- +title: "ContentFilterAction" +--- + +Action taken when the pattern matches + +## Example Usage + +```python +from openrouter.components import ContentFilterAction + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ContentFilterAction = "redact" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"redact"` +- `"block"` diff --git a/docs/components/contentfilterbuiltinaction.mdx b/docs/components/contentfilterbuiltinaction.mdx new file mode 100644 index 00000000..99919bdc --- /dev/null +++ b/docs/components/contentfilterbuiltinaction.mdx @@ -0,0 +1,23 @@ +--- +title: "ContentFilterBuiltinAction" +--- + +Action taken when the builtin filter triggers + +## Example Usage + +```python +from openrouter.components import ContentFilterBuiltinAction + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ContentFilterBuiltinAction = "redact" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"redact"` +- `"block"` +- `"flag"` diff --git a/docs/components/contentfilterbuiltinentry.mdx b/docs/components/contentfilterbuiltinentry.mdx new file mode 100644 index 00000000..5bdb1f6a --- /dev/null +++ b/docs/components/contentfilterbuiltinentry.mdx @@ -0,0 +1,15 @@ +--- +title: "ContentFilterBuiltinEntry" +--- + +A builtin content filter entry. Builtin filters include PII detectors and the regex-based prompt injection detector. + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | +| `action` | [components.ContentFilterBuiltinAction](../components/contentfilterbuiltinaction.mdx) | :heavy_check_mark: | Action taken when the builtin filter triggers | block | +| `label` | *Optional[str]* | :heavy_minus_sign: | Read-only, system-assigned redaction placeholder derived from the slug (e.g. "[EMAIL]", "[PHONE]"). Not settable by the caller. | [EMAIL] | +| `scan_scope` | [Optional[components.PromptInjectionScanScope]](../components/promptinjectionscanscope.mdx) | :heavy_minus_sign: | Which message roles to scan for prompt injection. Only applies to the regex-prompt-injection builtin. Defaults to all_messages. | user_only | +| `slug` | [components.ContentFilterBuiltinSlug](../components/contentfilterbuiltinslug.mdx) | :heavy_check_mark: | The builtin filter identifier | regex-prompt-injection | \ No newline at end of file diff --git a/docs/components/contentfilterbuiltinentryinput.mdx b/docs/components/contentfilterbuiltinentryinput.mdx new file mode 100644 index 00000000..28e25025 --- /dev/null +++ b/docs/components/contentfilterbuiltinentryinput.mdx @@ -0,0 +1,15 @@ +--- +title: "ContentFilterBuiltinEntryInput" +--- + +A builtin content filter entry for create/update requests. Labels are system-assigned and cannot be set by the caller. + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `action` | [components.ContentFilterBuiltinAction](../components/contentfilterbuiltinaction.mdx) | :heavy_check_mark: | Action taken when the builtin filter triggers | block | +| ~~`label`~~ | *Optional[str]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Deprecated: labels are system-assigned and cannot be set by the caller. Accepted for backward compatibility but silently ignored. | | +| `scan_scope` | [Optional[components.PromptInjectionScanScope]](../components/promptinjectionscanscope.mdx) | :heavy_minus_sign: | Which message roles to scan for prompt injection. Only applies to the regex-prompt-injection builtin. Defaults to all_messages. | user_only | +| `slug` | [components.ContentFilterBuiltinSlug](../components/contentfilterbuiltinslug.mdx) | :heavy_check_mark: | The builtin filter identifier | regex-prompt-injection | \ No newline at end of file diff --git a/docs/components/contentfilterbuiltinslug.mdx b/docs/components/contentfilterbuiltinslug.mdx new file mode 100644 index 00000000..273ad6cb --- /dev/null +++ b/docs/components/contentfilterbuiltinslug.mdx @@ -0,0 +1,28 @@ +--- +title: "ContentFilterBuiltinSlug" +--- + +The builtin filter identifier + +## Example Usage + +```python +from openrouter.components import ContentFilterBuiltinSlug + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ContentFilterBuiltinSlug = "email" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"email"` +- `"phone"` +- `"ssn"` +- `"credit-card"` +- `"ip-address"` +- `"person-name"` +- `"address"` +- `"regex-prompt-injection"` diff --git a/docs/components/contentfilterentry.mdx b/docs/components/contentfilterentry.mdx new file mode 100644 index 00000000..c8165e83 --- /dev/null +++ b/docs/components/contentfilterentry.mdx @@ -0,0 +1,14 @@ +--- +title: "ContentFilterEntry" +--- + +A custom regex content filter that scans request messages for matching patterns. + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `action` | [components.ContentFilterAction](../components/contentfilteraction.mdx) | :heavy_check_mark: | Action taken when the pattern matches | block | +| `label` | *OptionalNullable[str]* | :heavy_minus_sign: | Optional label used in redaction placeholders or error messages | [API_KEY] | +| `pattern` | *str* | :heavy_check_mark: | A regex pattern to match against request content | \b(sk-[a-zA-Z0-9]\{48})\b | \ No newline at end of file diff --git a/docs/components/contentpartaddedevent.mdx b/docs/components/contentpartaddedevent.mdx new file mode 100644 index 00000000..a62904e2 --- /dev/null +++ b/docs/components/contentpartaddedevent.mdx @@ -0,0 +1,17 @@ +--- +title: "ContentPartAddedEvent" +--- + +Event emitted when a new content part is added to an output item + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `content_index` | *int* | :heavy_check_mark: | N/A | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `part` | [components.ContentPartAddedEventPart](../components/contentpartaddedeventpart.mdx) | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.ContentPartAddedEventType](../components/contentpartaddedeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/contentpartaddedeventpart.mdx b/docs/components/contentpartaddedeventpart.mdx new file mode 100644 index 00000000..3590cb4f --- /dev/null +++ b/docs/components/contentpartaddedeventpart.mdx @@ -0,0 +1,24 @@ +--- +title: "ContentPartAddedEventPart" +--- + +## Supported Types + +### `components.ResponseOutputText` + +```python +value: components.ResponseOutputText = /* values here */ +``` + +### `components.ReasoningTextContent` + +```python +value: components.ReasoningTextContent = /* values here */ +``` + +### `components.OpenAIResponsesRefusalContent` + +```python +value: components.OpenAIResponsesRefusalContent = /* values here */ +``` + diff --git a/docs/components/contentpartaddedeventtype.mdx b/docs/components/contentpartaddedeventtype.mdx new file mode 100644 index 00000000..91a231d4 --- /dev/null +++ b/docs/components/contentpartaddedeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ContentPartAddedEventType" +--- + +## Example Usage + +```python +from openrouter.components import ContentPartAddedEventType +value: ContentPartAddedEventType = "response.content_part.added" +``` + + +## Values + +- `"response.content_part.added"` diff --git a/docs/components/contentpartaudio.mdx b/docs/components/contentpartaudio.mdx new file mode 100644 index 00000000..1a97cd73 --- /dev/null +++ b/docs/components/contentpartaudio.mdx @@ -0,0 +1,10 @@ +--- +title: "ContentPartAudio" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `audio_url` | [components.AudioURL](../components/audiourl.mdx) | :heavy_check_mark: | N/A | +| `type` | [components.ContentPartAudioType](../components/contentpartaudiotype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/contentpartaudiotype.mdx b/docs/components/contentpartaudiotype.mdx new file mode 100644 index 00000000..d6ad2b7d --- /dev/null +++ b/docs/components/contentpartaudiotype.mdx @@ -0,0 +1,15 @@ +--- +title: "ContentPartAudioType" +--- + +## Example Usage + +```python +from openrouter.components import ContentPartAudioType +value: ContentPartAudioType = "audio_url" +``` + + +## Values + +- `"audio_url"` diff --git a/docs/components/contentpartdoneevent.mdx b/docs/components/contentpartdoneevent.mdx new file mode 100644 index 00000000..39c93849 --- /dev/null +++ b/docs/components/contentpartdoneevent.mdx @@ -0,0 +1,17 @@ +--- +title: "ContentPartDoneEvent" +--- + +Event emitted when a content part is complete + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `content_index` | *int* | :heavy_check_mark: | N/A | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `part` | [components.ContentPartDoneEventPart](../components/contentpartdoneeventpart.mdx) | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.ContentPartDoneEventType](../components/contentpartdoneeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/contentpartdoneeventpart.mdx b/docs/components/contentpartdoneeventpart.mdx new file mode 100644 index 00000000..7e45ad21 --- /dev/null +++ b/docs/components/contentpartdoneeventpart.mdx @@ -0,0 +1,24 @@ +--- +title: "ContentPartDoneEventPart" +--- + +## Supported Types + +### `components.ResponseOutputText` + +```python +value: components.ResponseOutputText = /* values here */ +``` + +### `components.ReasoningTextContent` + +```python +value: components.ReasoningTextContent = /* values here */ +``` + +### `components.OpenAIResponsesRefusalContent` + +```python +value: components.OpenAIResponsesRefusalContent = /* values here */ +``` + diff --git a/docs/components/contentpartdoneeventtype.mdx b/docs/components/contentpartdoneeventtype.mdx new file mode 100644 index 00000000..7a93ea3f --- /dev/null +++ b/docs/components/contentpartdoneeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ContentPartDoneEventType" +--- + +## Example Usage + +```python +from openrouter.components import ContentPartDoneEventType +value: ContentPartDoneEventType = "response.content_part.done" +``` + + +## Values + +- `"response.content_part.done"` diff --git a/docs/components/contentpartimage.mdx b/docs/components/contentpartimage.mdx new file mode 100644 index 00000000..d4adef71 --- /dev/null +++ b/docs/components/contentpartimage.mdx @@ -0,0 +1,10 @@ +--- +title: "ContentPartImage" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `image_url` | [components.ContentPartImageImageURL](../components/contentpartimageimageurl.mdx) | :heavy_check_mark: | N/A | +| `type` | [components.ContentPartImageType](../components/contentpartimagetype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/contentpartimageimageurl.mdx b/docs/components/contentpartimageimageurl.mdx new file mode 100644 index 00000000..248d1b88 --- /dev/null +++ b/docs/components/contentpartimageimageurl.mdx @@ -0,0 +1,9 @@ +--- +title: "ContentPartImageImageURL" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `url` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/contentpartimagetype.mdx b/docs/components/contentpartimagetype.mdx new file mode 100644 index 00000000..d2984506 --- /dev/null +++ b/docs/components/contentpartimagetype.mdx @@ -0,0 +1,15 @@ +--- +title: "ContentPartImageType" +--- + +## Example Usage + +```python +from openrouter.components import ContentPartImageType +value: ContentPartImageType = "image_url" +``` + + +## Values + +- `"image_url"` diff --git a/docs/components/contentpartinputaudio.mdx b/docs/components/contentpartinputaudio.mdx new file mode 100644 index 00000000..08619de7 --- /dev/null +++ b/docs/components/contentpartinputaudio.mdx @@ -0,0 +1,10 @@ +--- +title: "ContentPartInputAudio" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `input_audio` | [components.MultimodalMedia](../components/multimodalmedia.mdx) | :heavy_check_mark: | N/A | \{
"data": "data:audio/wav;base64,UklGRiQAAABXQVZFZm10IBAAAAA...",
"format": "wav"
} | +| `type` | [components.ContentPartInputAudioType](../components/contentpartinputaudiotype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/contentpartinputaudiotype.mdx b/docs/components/contentpartinputaudiotype.mdx new file mode 100644 index 00000000..4d3a7482 --- /dev/null +++ b/docs/components/contentpartinputaudiotype.mdx @@ -0,0 +1,15 @@ +--- +title: "ContentPartInputAudioType" +--- + +## Example Usage + +```python +from openrouter.components import ContentPartInputAudioType +value: ContentPartInputAudioType = "input_audio" +``` + + +## Values + +- `"input_audio"` diff --git a/docs/components/contentpartinputfile.mdx b/docs/components/contentpartinputfile.mdx new file mode 100644 index 00000000..de674503 --- /dev/null +++ b/docs/components/contentpartinputfile.mdx @@ -0,0 +1,10 @@ +--- +title: "ContentPartInputFile" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `input_file` | [components.MultimodalMedia](../components/multimodalmedia.mdx) | :heavy_check_mark: | N/A | \{
"data": "data:audio/wav;base64,UklGRiQAAABXQVZFZm10IBAAAAA...",
"format": "wav"
} | +| `type` | [components.ContentPartInputFileType](../components/contentpartinputfiletype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/contentpartinputfiletype.mdx b/docs/components/contentpartinputfiletype.mdx new file mode 100644 index 00000000..3b0cca0b --- /dev/null +++ b/docs/components/contentpartinputfiletype.mdx @@ -0,0 +1,15 @@ +--- +title: "ContentPartInputFileType" +--- + +## Example Usage + +```python +from openrouter.components import ContentPartInputFileType +value: ContentPartInputFileType = "input_file" +``` + + +## Values + +- `"input_file"` diff --git a/docs/components/contentpartinputvideo.mdx b/docs/components/contentpartinputvideo.mdx new file mode 100644 index 00000000..0d846f37 --- /dev/null +++ b/docs/components/contentpartinputvideo.mdx @@ -0,0 +1,10 @@ +--- +title: "ContentPartInputVideo" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `input_video` | [components.MultimodalMedia](../components/multimodalmedia.mdx) | :heavy_check_mark: | N/A | \{
"data": "data:audio/wav;base64,UklGRiQAAABXQVZFZm10IBAAAAA...",
"format": "wav"
} | +| `type` | [components.ContentPartInputVideoType](../components/contentpartinputvideotype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/contentpartinputvideotype.mdx b/docs/components/contentpartinputvideotype.mdx new file mode 100644 index 00000000..ff1648bd --- /dev/null +++ b/docs/components/contentpartinputvideotype.mdx @@ -0,0 +1,15 @@ +--- +title: "ContentPartInputVideoType" +--- + +## Example Usage + +```python +from openrouter.components import ContentPartInputVideoType +value: ContentPartInputVideoType = "input_video" +``` + + +## Values + +- `"input_video"` diff --git a/docs/components/contentpartvideo.mdx b/docs/components/contentpartvideo.mdx new file mode 100644 index 00000000..058640db --- /dev/null +++ b/docs/components/contentpartvideo.mdx @@ -0,0 +1,10 @@ +--- +title: "ContentPartVideo" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `type` | [components.ContentPartVideoType](../components/contentpartvideotype.mdx) | :heavy_check_mark: | N/A | +| `video_url` | [components.VideoURL](../components/videourl.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/contentpartvideotype.mdx b/docs/components/contentpartvideotype.mdx new file mode 100644 index 00000000..24b7dfa7 --- /dev/null +++ b/docs/components/contentpartvideotype.mdx @@ -0,0 +1,15 @@ +--- +title: "ContentPartVideoType" +--- + +## Example Usage + +```python +from openrouter.components import ContentPartVideoType +value: ContentPartVideoType = "video_url" +``` + + +## Values + +- `"video_url"` diff --git a/docs/components/contentredactedthinking.mdx b/docs/components/contentredactedthinking.mdx new file mode 100644 index 00000000..f9c4eeef --- /dev/null +++ b/docs/components/contentredactedthinking.mdx @@ -0,0 +1,10 @@ +--- +title: "ContentRedactedThinking" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `data` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.TypeRedactedThinking](../components/typeredactedthinking.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/contentservertooluse.mdx b/docs/components/contentservertooluse.mdx new file mode 100644 index 00000000..527a1c1a --- /dev/null +++ b/docs/components/contentservertooluse.mdx @@ -0,0 +1,13 @@ +--- +title: "ContentServerToolUse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `id` | *str* | :heavy_check_mark: | N/A | | +| `input` | *OptionalNullable[Any]* | :heavy_minus_sign: | N/A | | +| `name` | *str* | :heavy_check_mark: | N/A | | +| `type` | [components.TypeServerToolUse](../components/typeservertooluse.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/contentthinking.mdx b/docs/components/contentthinking.mdx new file mode 100644 index 00000000..8c9a9246 --- /dev/null +++ b/docs/components/contentthinking.mdx @@ -0,0 +1,11 @@ +--- +title: "ContentThinking" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `signature` | *str* | :heavy_check_mark: | N/A | +| `thinking` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.TypeThinking](../components/typethinking.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/contenttoolreference.mdx b/docs/components/contenttoolreference.mdx new file mode 100644 index 00000000..f07b01d7 --- /dev/null +++ b/docs/components/contenttoolreference.mdx @@ -0,0 +1,10 @@ +--- +title: "ContentToolReference" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `tool_name` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.TypeToolReference](../components/typetoolreference.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/contenttoolresult.mdx b/docs/components/contenttoolresult.mdx new file mode 100644 index 00000000..4abde669 --- /dev/null +++ b/docs/components/contenttoolresult.mdx @@ -0,0 +1,13 @@ +--- +title: "ContentToolResult" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `content` | [Optional[components.MessagesMessageParamContentUnion2]](../components/messagesmessageparamcontentunion2.mdx) | :heavy_minus_sign: | N/A | | +| `is_error` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `tool_use_id` | *str* | :heavy_check_mark: | N/A | | +| `type` | [components.TypeToolResult](../components/typetoolresult.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/contenttooluse.mdx b/docs/components/contenttooluse.mdx new file mode 100644 index 00000000..e29dae10 --- /dev/null +++ b/docs/components/contenttooluse.mdx @@ -0,0 +1,13 @@ +--- +title: "ContentToolUse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `id` | *str* | :heavy_check_mark: | N/A | | +| `input` | *OptionalNullable[Any]* | :heavy_minus_sign: | N/A | | +| `name` | *str* | :heavy_check_mark: | N/A | | +| `type` | [components.TypeToolUse](../components/typetooluse.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/contentwebsearchtoolresult.mdx b/docs/components/contentwebsearchtoolresult.mdx new file mode 100644 index 00000000..a2664d14 --- /dev/null +++ b/docs/components/contentwebsearchtoolresult.mdx @@ -0,0 +1,12 @@ +--- +title: "ContentWebSearchToolResult" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `content` | [components.MessagesMessageParamContentUnion3](../components/messagesmessageparamcontentunion3.mdx) | :heavy_check_mark: | N/A | | +| `tool_use_id` | *str* | :heavy_check_mark: | N/A | | +| `type` | [components.TypeWebSearchToolResult](../components/typewebsearchtoolresult.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/contentwebsearchtoolresulterror.mdx b/docs/components/contentwebsearchtoolresulterror.mdx new file mode 100644 index 00000000..c944724a --- /dev/null +++ b/docs/components/contentwebsearchtoolresulterror.mdx @@ -0,0 +1,10 @@ +--- +title: "ContentWebSearchToolResultError" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `error_code` | [components.ErrorCode](../components/errorcode.mdx) | :heavy_check_mark: | N/A | +| `type` | [components.TypeWebSearchToolResultError](../components/typewebsearchtoolresulterror.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/contextcompressionengine.mdx b/docs/components/contextcompressionengine.mdx new file mode 100644 index 00000000..42f20bd6 --- /dev/null +++ b/docs/components/contextcompressionengine.mdx @@ -0,0 +1,17 @@ +--- +title: "ContextCompressionEngine" +--- + +The compression engine to use. Defaults to "middle-out". + +## Example Usage + +```python +from openrouter.components import ContextCompressionEngine +value: ContextCompressionEngine = "middle-out" +``` + + +## Values + +- `"middle-out"` diff --git a/docs/components/contextcompressionplugin.mdx b/docs/components/contextcompressionplugin.mdx new file mode 100644 index 00000000..a502a991 --- /dev/null +++ b/docs/components/contextcompressionplugin.mdx @@ -0,0 +1,11 @@ +--- +title: "ContextCompressionPlugin" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `enabled` | *Optional[bool]* | :heavy_minus_sign: | Set to false to disable the context-compression plugin for this request. Defaults to true. | | +| `engine` | [Optional[components.ContextCompressionEngine]](../components/contextcompressionengine.mdx) | :heavy_minus_sign: | The compression engine to use. Defaults to "middle-out". | middle-out | +| `id` | [components.ContextCompressionPluginID](../components/contextcompressionpluginid.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/contextcompressionpluginid.mdx b/docs/components/contextcompressionpluginid.mdx new file mode 100644 index 00000000..fea81b2f --- /dev/null +++ b/docs/components/contextcompressionpluginid.mdx @@ -0,0 +1,15 @@ +--- +title: "ContextCompressionPluginID" +--- + +## Example Usage + +```python +from openrouter.components import ContextCompressionPluginID +value: ContextCompressionPluginID = "context-compression" +``` + + +## Values + +- `"context-compression"` diff --git a/docs/components/contextmanagement.mdx b/docs/components/contextmanagement.mdx new file mode 100644 index 00000000..521afd6c --- /dev/null +++ b/docs/components/contextmanagement.mdx @@ -0,0 +1,9 @@ +--- +title: "ContextManagement" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | +| `edits` | List[[components.Edit](../components/edit.mdx)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/contradiction.mdx b/docs/components/contradiction.mdx new file mode 100644 index 00000000..df0f53d7 --- /dev/null +++ b/docs/components/contradiction.mdx @@ -0,0 +1,10 @@ +--- +title: "Contradiction" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `stances` | List[[components.Stance](../components/stance.mdx)] | :heavy_check_mark: | N/A | +| `topic` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/costdetails.md b/docs/components/costdetails.mdx similarity index 96% rename from docs/components/costdetails.md rename to docs/components/costdetails.mdx index 58a1aa84..753493b8 100644 --- a/docs/components/costdetails.md +++ b/docs/components/costdetails.mdx @@ -1,4 +1,6 @@ -# CostDetails +--- +title: "CostDetails" +--- Breakdown of upstream inference costs diff --git a/docs/components/createbyokkeyrequest.mdx b/docs/components/createbyokkeyrequest.mdx new file mode 100644 index 00000000..3eaa154f --- /dev/null +++ b/docs/components/createbyokkeyrequest.mdx @@ -0,0 +1,16 @@ +--- +title: "CreateBYOKKeyRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `allowed_models` | List[*str*] | :heavy_minus_sign: | Optional allowlist of model slugs this credential may be used for. `null` means no restriction. | null | +| `allowed_user_ids` | List[*str*] | :heavy_minus_sign: | Optional allowlist of user IDs that may use this credential. `null` means no restriction. | null | +| `disabled` | *Optional[bool]* | :heavy_minus_sign: | Whether this credential should be created in a disabled state. | false | +| `is_fallback` | *Optional[bool]* | :heavy_minus_sign: | Whether this credential is treated as a fallback — used only after non-fallback keys for the same provider have been tried. | false | +| `key` | *str* | :heavy_check_mark: | The raw provider API key or credential. This value is encrypted at rest and never returned in API responses. | sk-proj-abc123... | +| `name` | *OptionalNullable[str]* | :heavy_minus_sign: | Optional human-readable name for the credential. | Production OpenAI Key | +| `provider` | [components.BYOKProviderSlug](../components/byokproviderslug.mdx) | :heavy_check_mark: | The upstream provider this credential authenticates against, as a lowercase slug (e.g. `openai`, `anthropic`, `amazon-bedrock`). | openai | +| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Optional workspace ID. Defaults to the authenticated entity's default workspace. | 550e8400-e29b-41d4-a716-446655440000 | \ No newline at end of file diff --git a/docs/components/createbyokkeyresponse.mdx b/docs/components/createbyokkeyresponse.mdx new file mode 100644 index 00000000..67494d04 --- /dev/null +++ b/docs/components/createbyokkeyresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "CreateBYOKKeyResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `data` | [components.BYOKKey](../components/byokkey.mdx) | :heavy_check_mark: | N/A | \{
"allowed_api_key_hashes": null,
"allowed_models": null,
"allowed_user_ids": null,
"created_at": "2025-08-24T10:30:00Z",
"disabled": false,
"id": "11111111-2222-3333-4444-555555555555",
"is_fallback": false,
"label": "sk-...AbCd",
"name": "Production OpenAI Key",
"provider": "openai",
"sort_order": 0,
"workspace_id": "550e8400-e29b-41d4-a716-446655440000"
} | \ No newline at end of file diff --git a/docs/components/createguardrailrequest.mdx b/docs/components/createguardrailrequest.mdx new file mode 100644 index 00000000..f26042f6 --- /dev/null +++ b/docs/components/createguardrailrequest.mdx @@ -0,0 +1,24 @@ +--- +title: "CreateGuardrailRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `allowed_models` | List[*str*] | :heavy_minus_sign: | Array of model identifiers (slug or canonical_slug accepted) | [
"openai/gpt-5.2",
"anthropic/claude-4.5-opus-20251124",
"deepseek/deepseek-r1-0528:free"
] | +| `allowed_providers` | List[*str*] | :heavy_minus_sign: | List of allowed provider IDs | [
"openai",
"anthropic",
"deepseek"
] | +| `content_filter_builtins` | List[[components.ContentFilterBuiltinEntryInput](../components/contentfilterbuiltinentryinput.mdx)] | :heavy_minus_sign: | Builtin content filters to apply. The "flag" action is only supported for "regex-prompt-injection"; PII slugs (email, phone, ssn, credit-card, ip-address, person-name, address) accept "block" or "redact" only. | [
\{
"action": "block",
"slug": "regex-prompt-injection"
}
] | +| `content_filters` | List[[components.ContentFilterEntry](../components/contentfilterentry.mdx)] | :heavy_minus_sign: | Custom regex content filters to apply to request messages | [
\{
"action": "redact",
"label": "[API_KEY]",
"pattern": "\\b(sk-[a-zA-Z0-9]\{48})\\b"
}
] | +| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | Description of the guardrail | A guardrail for limiting API usage | +| ~~`enforce_zdr`~~ | *OptionalNullable[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Deprecated. Use enforce_zdr_anthropic, enforce_zdr_openai, enforce_zdr_google, and enforce_zdr_other instead. When provided, its value is copied into any of those per-provider fields that are not explicitly specified on the request. | false | +| `enforce_zdr_anthropic` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to enforce zero data retention for Anthropic models. Falls back to enforce_zdr when not provided. | false | +| `enforce_zdr_google` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to enforce zero data retention for Google models. Falls back to enforce_zdr when not provided. | false | +| `enforce_zdr_openai` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to enforce zero data retention for OpenAI models. Falls back to enforce_zdr when not provided. | false | +| `enforce_zdr_other` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to enforce zero data retention for models that are not from Anthropic, OpenAI, or Google. Falls back to enforce_zdr when not provided. | false | +| `ignored_models` | List[*str*] | :heavy_minus_sign: | Array of model identifiers to exclude from routing (slug or canonical_slug accepted) | [
"openai/gpt-4o-mini"
] | +| `ignored_providers` | List[*str*] | :heavy_minus_sign: | List of provider IDs to exclude from routing | [
"azure"
] | +| `limit_usd` | *OptionalNullable[float]* | :heavy_minus_sign: | Spending limit in USD | 50 | +| `name` | *str* | :heavy_check_mark: | Name for the new guardrail | My New Guardrail | +| `reset_interval` | [OptionalNullable[components.GuardrailInterval]](../components/guardrailinterval.mdx) | :heavy_minus_sign: | Interval at which the limit resets (daily, weekly, monthly) | monthly | +| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | The workspace to create the guardrail in. Defaults to the default workspace if not provided. | 0df9e665-d932-5740-b2c7-b52af166bc11 | \ No newline at end of file diff --git a/docs/components/createguardrailresponse.mdx b/docs/components/createguardrailresponse.mdx new file mode 100644 index 00000000..e876cac8 --- /dev/null +++ b/docs/components/createguardrailresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "CreateGuardrailResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [components.Guardrail](../components/guardrail.mdx) | :heavy_check_mark: | N/A | \{
"allowed_models": null,
"allowed_providers": [
"openai",
"anthropic",
"google"
],
"content_filter_builtins": [
\{
"action": "redact",
"label": "[EMAIL]",
"slug": "email"
}
],
"content_filters": null,
"created_at": "2025-08-24T10:30:00Z",
"description": "Guardrail for production environment",
"enforce_zdr": null,
"enforce_zdr_anthropic": true,
"enforce_zdr_google": false,
"enforce_zdr_openai": true,
"enforce_zdr_other": false,
"id": "550e8400-e29b-41d4-a716-446655440000",
"ignored_models": null,
"ignored_providers": null,
"limit_usd": 100,
"name": "Production Guardrail",
"reset_interval": "monthly",
"updated_at": "2025-08-24T15:45:00Z",
"workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"
} | \ No newline at end of file diff --git a/docs/components/createobservabilitydestinationrequest.mdx b/docs/components/createobservabilitydestinationrequest.mdx new file mode 100644 index 00000000..a3435fe0 --- /dev/null +++ b/docs/components/createobservabilitydestinationrequest.mdx @@ -0,0 +1,17 @@ +--- +title: "CreateObservabilityDestinationRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `api_key_hashes` | List[*str*] | :heavy_minus_sign: | Optional allowlist of OpenRouter API key hashes whose traffic is forwarded. `null` or omitted means all keys. Must contain at least one hash if provided. | null | +| `config` | Dict[str, *Nullable[Any]*] | :heavy_check_mark: | Provider-specific configuration. The shape depends on `type` and is validated server-side. | \{
"baseUrl": "https://us.cloud.langfuse.com",
"publicKey": "pk-l...EfGh",
"secretKey": "sk-l...AbCd"
} | +| `enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether this destination should be enabled immediately. | true | +| `filter_rules` | [OptionalNullable[components.ObservabilityFilterRulesConfig]](../components/observabilityfilterrulesconfig.mdx) | :heavy_minus_sign: | Optional structured filter rules controlling which events are forwarded. | null | +| `name` | *str* | :heavy_check_mark: | Human-readable name for the destination. | Production Langfuse | +| `privacy_mode` | *Optional[bool]* | :heavy_minus_sign: | When true, request/response bodies are not forwarded — only metadata. | false | +| `sampling_rate` | *Optional[float]* | :heavy_minus_sign: | Sampling rate between 0.0001 and 1 (1 = 100%). | 1 | +| `type` | [components.CreateObservabilityDestinationRequestType](../components/createobservabilitydestinationrequesttype.mdx) | :heavy_check_mark: | The destination type. Only stable destination types are accepted. | langfuse | +| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Optional workspace ID. Defaults to the authenticated entity's default workspace. | 550e8400-e29b-41d4-a716-446655440000 | \ No newline at end of file diff --git a/docs/components/createobservabilitydestinationrequesttype.mdx b/docs/components/createobservabilitydestinationrequesttype.mdx new file mode 100644 index 00000000..a3f9ac29 --- /dev/null +++ b/docs/components/createobservabilitydestinationrequesttype.mdx @@ -0,0 +1,37 @@ +--- +title: "CreateObservabilityDestinationRequestType" +--- + +The destination type. Only stable destination types are accepted. + +## Example Usage + +```python +from openrouter.components import CreateObservabilityDestinationRequestType + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: CreateObservabilityDestinationRequestType = "arize" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"arize"` +- `"braintrust"` +- `"clickhouse"` +- `"datadog"` +- `"grafana"` +- `"langfuse"` +- `"langsmith"` +- `"newrelic"` +- `"opik"` +- `"otel-collector"` +- `"posthog"` +- `"ramp"` +- `"s3"` +- `"sentry"` +- `"snowflake"` +- `"weave"` +- `"webhook"` diff --git a/docs/components/createobservabilitydestinationresponse.mdx b/docs/components/createobservabilitydestinationresponse.mdx new file mode 100644 index 00000000..a6654f09 --- /dev/null +++ b/docs/components/createobservabilitydestinationresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "CreateObservabilityDestinationResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [components.ObservabilityDestination](../components/observabilitydestination.mdx) | :heavy_check_mark: | N/A | \{
"api_key_hashes": null,
"config": \{
"baseUrl": "https://us.cloud.langfuse.com",
"publicKey": "pk-l...EfGh",
"secretKey": "sk-l...AbCd"
},
"created_at": "2025-08-24T10:30:00Z",
"enabled": true,
"filter_rules": null,
"id": "99999999-aaaa-bbbb-cccc-dddddddddddd",
"name": "Production Langfuse",
"privacy_mode": false,
"sampling_rate": 1,
"type": "langfuse",
"updated_at": "2025-08-24T15:45:00Z",
"workspace_id": "550e8400-e29b-41d4-a716-446655440000"
} | \ No newline at end of file diff --git a/docs/components/createpresetfrominferenceresponse.mdx b/docs/components/createpresetfrominferenceresponse.mdx new file mode 100644 index 00000000..c31f263d --- /dev/null +++ b/docs/components/createpresetfrominferenceresponse.mdx @@ -0,0 +1,12 @@ +--- +title: "CreatePresetFromInferenceResponse" +--- + +Response containing the created preset with its designated version. + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [components.PresetWithDesignatedVersion](../components/presetwithdesignatedversion.mdx) | :heavy_check_mark: | A preset with its currently designated version. | \{
"created_at": "2026-04-20T10:00:00Z",
"creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000",
"description": null,
"designated_version": \{
"config": \{
"model": "openai/gpt-4o",
"temperature": 0.7
},
"created_at": "2026-04-20T10:00:00Z",
"creator_id": "user_2dHFtVWx2n56w6HkM0000000000",
"id": "550e8400-e29b-41d4-a716-446655440000",
"preset_id": "650e8400-e29b-41d4-a716-446655440001",
"system_prompt": "You are a helpful assistant.",
"updated_at": "2026-04-20T10:00:00Z",
"version": 1
},
"designated_version_id": "550e8400-e29b-41d4-a716-446655440000",
"id": "650e8400-e29b-41d4-a716-446655440001",
"name": "my-preset",
"slug": "my-preset",
"status": "active",
"status_updated_at": null,
"updated_at": "2026-04-20T10:00:00Z",
"workspace_id": "750e8400-e29b-41d4-a716-446655440002"
} | \ No newline at end of file diff --git a/docs/components/createworkspacerequest.mdx b/docs/components/createworkspacerequest.mdx new file mode 100644 index 00000000..3de1021e --- /dev/null +++ b/docs/components/createworkspacerequest.mdx @@ -0,0 +1,19 @@ +--- +title: "CreateWorkspaceRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `default_image_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default image model for this workspace | openai/dall-e-3 | +| `default_provider_sort` | *OptionalNullable[str]* | :heavy_minus_sign: | Default provider sort preference (price, throughput, latency, exacto) | price | +| `default_text_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default text model for this workspace | openai/gpt-4o | +| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | Description of the workspace | Production environment workspace | +| `io_logging_api_key_ids` | List[*int*] | :heavy_minus_sign: | Optional array of API key IDs to filter I/O logging | null | +| `io_logging_sampling_rate` | *Optional[float]* | :heavy_minus_sign: | Sampling rate for I/O logging (0.0001-1) | 1 | +| `is_data_discount_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether data discount logging is enabled | true | +| `is_observability_broadcast_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether broadcast is enabled | false | +| `is_observability_io_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether private logging is enabled | false | +| `name` | *str* | :heavy_check_mark: | Name for the new workspace | Production | +| `slug` | *str* | :heavy_check_mark: | URL-friendly slug (lowercase alphanumeric segments separated by single hyphens, no leading/trailing hyphens) | production | \ No newline at end of file diff --git a/docs/components/createworkspaceresponse.mdx b/docs/components/createworkspaceresponse.mdx new file mode 100644 index 00000000..85596ef5 --- /dev/null +++ b/docs/components/createworkspaceresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "CreateWorkspaceResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [components.Workspace](../components/workspace.mdx) | :heavy_check_mark: | N/A | \{
"created_at": "2025-08-24T10:30:00Z",
"created_by": "user_abc123",
"default_image_model": "openai/dall-e-3",
"default_provider_sort": "price",
"default_text_model": "openai/gpt-4o",
"description": "Production environment workspace",
"id": "550e8400-e29b-41d4-a716-446655440000",
"io_logging_api_key_ids": null,
"io_logging_sampling_rate": 1,
"is_data_discount_logging_enabled": true,
"is_observability_broadcast_enabled": false,
"is_observability_io_logging_enabled": false,
"name": "Production",
"slug": "production",
"updated_at": "2025-08-24T15:45:00Z"
} | \ No newline at end of file diff --git a/docs/components/customtool.mdx b/docs/components/customtool.mdx new file mode 100644 index 00000000..4da53585 --- /dev/null +++ b/docs/components/customtool.mdx @@ -0,0 +1,15 @@ +--- +title: "CustomTool" +--- + +Custom tool configuration + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `description` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `format_` | [Optional[components.Format]](../components/format_.mdx) | :heavy_minus_sign: | N/A | +| `name` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.CustomToolTypeCustom](../components/customtooltypecustom.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/customtoolcallinputdeltaevent.mdx b/docs/components/customtoolcallinputdeltaevent.mdx new file mode 100644 index 00000000..4ff3cab6 --- /dev/null +++ b/docs/components/customtoolcallinputdeltaevent.mdx @@ -0,0 +1,16 @@ +--- +title: "CustomToolCallInputDeltaEvent" +--- + +Event emitted when a custom tool call's freeform input is being streamed. Mirrors `response.function_call_arguments.delta` but for `custom` tools whose input is opaque text rather than JSON arguments. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `delta` | *str* | :heavy_check_mark: | N/A | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.CustomToolCallInputDeltaEventType](../components/customtoolcallinputdeltaeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/customtoolcallinputdeltaeventtype.mdx b/docs/components/customtoolcallinputdeltaeventtype.mdx new file mode 100644 index 00000000..55bd172b --- /dev/null +++ b/docs/components/customtoolcallinputdeltaeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "CustomToolCallInputDeltaEventType" +--- + +## Example Usage + +```python +from openrouter.components import CustomToolCallInputDeltaEventType +value: CustomToolCallInputDeltaEventType = "response.custom_tool_call_input.delta" +``` + + +## Values + +- `"response.custom_tool_call_input.delta"` diff --git a/docs/components/customtoolcallinputdoneevent.mdx b/docs/components/customtoolcallinputdoneevent.mdx new file mode 100644 index 00000000..9fa94a13 --- /dev/null +++ b/docs/components/customtoolcallinputdoneevent.mdx @@ -0,0 +1,16 @@ +--- +title: "CustomToolCallInputDoneEvent" +--- + +Event emitted when a custom tool call's freeform input streaming is complete. Mirrors `response.function_call_arguments.done` but for `custom` tools. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `input` | *str* | :heavy_check_mark: | N/A | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.CustomToolCallInputDoneEventType](../components/customtoolcallinputdoneeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/customtoolcallinputdoneeventtype.mdx b/docs/components/customtoolcallinputdoneeventtype.mdx new file mode 100644 index 00000000..8f1998f6 --- /dev/null +++ b/docs/components/customtoolcallinputdoneeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "CustomToolCallInputDoneEventType" +--- + +## Example Usage + +```python +from openrouter.components import CustomToolCallInputDoneEventType +value: CustomToolCallInputDoneEventType = "response.custom_tool_call_input.done" +``` + + +## Values + +- `"response.custom_tool_call_input.done"` diff --git a/docs/components/customtoolcallitem.mdx b/docs/components/customtoolcallitem.mdx new file mode 100644 index 00000000..fc18f989 --- /dev/null +++ b/docs/components/customtoolcallitem.mdx @@ -0,0 +1,17 @@ +--- +title: "CustomToolCallItem" +--- + +A call to a custom (freeform-grammar) tool created by the model — distinct from `function_call`. Used for tools like Codex CLI's `apply_patch` whose payload is opaque text rather than JSON arguments. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| `call_id` | *str* | :heavy_check_mark: | N/A | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `input` | *str* | :heavy_check_mark: | N/A | +| `name` | *str* | :heavy_check_mark: | N/A | +| `namespace` | *Optional[str]* | :heavy_minus_sign: | Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server) | +| `type` | [components.CustomToolCallItemType](../components/customtoolcallitemtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/customtoolcallitemtype.mdx b/docs/components/customtoolcallitemtype.mdx new file mode 100644 index 00000000..3d905dbf --- /dev/null +++ b/docs/components/customtoolcallitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "CustomToolCallItemType" +--- + +## Example Usage + +```python +from openrouter.components import CustomToolCallItemType +value: CustomToolCallItemType = "custom_tool_call" +``` + + +## Values + +- `"custom_tool_call"` diff --git a/docs/components/customtoolcalloutputitem.mdx b/docs/components/customtoolcalloutputitem.mdx new file mode 100644 index 00000000..2e8dd650 --- /dev/null +++ b/docs/components/customtoolcalloutputitem.mdx @@ -0,0 +1,15 @@ +--- +title: "CustomToolCallOutputItem" +--- + +The output from a custom (freeform-grammar) tool call execution. Mirrors `function_call_output` but is matched to a `custom_tool_call` rather than a `function_call`. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `call_id` | *str* | :heavy_check_mark: | N/A | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `output` | [components.CustomToolCallOutputItemOutputUnion2](../components/customtoolcalloutputitemoutputunion2.mdx) | :heavy_check_mark: | N/A | +| `type` | [components.CustomToolCallOutputItemTypeCustomToolCallOutput](../components/customtoolcalloutputitemtypecustomtoolcalloutput.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/customtoolcalloutputitemdetail.mdx b/docs/components/customtoolcalloutputitemdetail.mdx new file mode 100644 index 00000000..ba63c6e4 --- /dev/null +++ b/docs/components/customtoolcalloutputitemdetail.mdx @@ -0,0 +1,22 @@ +--- +title: "CustomToolCallOutputItemDetail" +--- + +## Example Usage + +```python +from openrouter.components import CustomToolCallOutputItemDetail + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: CustomToolCallOutputItemDetail = "auto" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"auto"` +- `"high"` +- `"low"` +- `"original"` diff --git a/docs/components/customtoolcalloutputitemoutputinputimage.mdx b/docs/components/customtoolcalloutputitemoutputinputimage.mdx new file mode 100644 index 00000000..830ac246 --- /dev/null +++ b/docs/components/customtoolcalloutputitemoutputinputimage.mdx @@ -0,0 +1,14 @@ +--- +title: "CustomToolCallOutputItemOutputInputImage" +--- + +Image input content item + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `detail` | [components.CustomToolCallOutputItemDetail](../components/customtoolcalloutputitemdetail.mdx) | :heavy_check_mark: | N/A | +| `image_url` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `type` | [components.CustomToolCallOutputItemTypeInputImage](../components/customtoolcalloutputitemtypeinputimage.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/customtoolcalloutputitemoutputunion1.mdx b/docs/components/customtoolcalloutputitemoutputunion1.mdx new file mode 100644 index 00000000..e3d8498b --- /dev/null +++ b/docs/components/customtoolcalloutputitemoutputunion1.mdx @@ -0,0 +1,24 @@ +--- +title: "CustomToolCallOutputItemOutputUnion1" +--- + +## Supported Types + +### `components.InputText` + +```python +value: components.InputText = /* values here */ +``` + +### `components.CustomToolCallOutputItemOutputInputImage` + +```python +value: components.CustomToolCallOutputItemOutputInputImage = /* values here */ +``` + +### `components.InputFile` + +```python +value: components.InputFile = /* values here */ +``` + diff --git a/docs/components/customtoolcalloutputitemoutputunion2.mdx b/docs/components/customtoolcalloutputitemoutputunion2.mdx new file mode 100644 index 00000000..10e3c5e6 --- /dev/null +++ b/docs/components/customtoolcalloutputitemoutputunion2.mdx @@ -0,0 +1,18 @@ +--- +title: "CustomToolCallOutputItemOutputUnion2" +--- + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `List[components.CustomToolCallOutputItemOutputUnion1]` + +```python +value: List[components.CustomToolCallOutputItemOutputUnion1] = /* values here */ +``` + diff --git a/docs/components/customtoolcalloutputitemtypecustomtoolcalloutput.mdx b/docs/components/customtoolcalloutputitemtypecustomtoolcalloutput.mdx new file mode 100644 index 00000000..abfec635 --- /dev/null +++ b/docs/components/customtoolcalloutputitemtypecustomtoolcalloutput.mdx @@ -0,0 +1,15 @@ +--- +title: "CustomToolCallOutputItemTypeCustomToolCallOutput" +--- + +## Example Usage + +```python +from openrouter.components import CustomToolCallOutputItemTypeCustomToolCallOutput +value: CustomToolCallOutputItemTypeCustomToolCallOutput = "custom_tool_call_output" +``` + + +## Values + +- `"custom_tool_call_output"` diff --git a/docs/components/customtoolcalloutputitemtypeinputimage.mdx b/docs/components/customtoolcalloutputitemtypeinputimage.mdx new file mode 100644 index 00000000..821cf8bb --- /dev/null +++ b/docs/components/customtoolcalloutputitemtypeinputimage.mdx @@ -0,0 +1,15 @@ +--- +title: "CustomToolCallOutputItemTypeInputImage" +--- + +## Example Usage + +```python +from openrouter.components import CustomToolCallOutputItemTypeInputImage +value: CustomToolCallOutputItemTypeInputImage = "input_image" +``` + + +## Values + +- `"input_image"` diff --git a/docs/components/customtooltypecustom.mdx b/docs/components/customtooltypecustom.mdx new file mode 100644 index 00000000..10faea80 --- /dev/null +++ b/docs/components/customtooltypecustom.mdx @@ -0,0 +1,15 @@ +--- +title: "CustomToolTypeCustom" +--- + +## Example Usage + +```python +from openrouter.components import CustomToolTypeCustom +value: CustomToolTypeCustom = "custom" +``` + + +## Values + +- `"custom"` diff --git a/docs/components/dabenchmarkentry.mdx b/docs/components/dabenchmarkentry.mdx new file mode 100644 index 00000000..63238a9c --- /dev/null +++ b/docs/components/dabenchmarkentry.mdx @@ -0,0 +1,16 @@ +--- +title: "DABenchmarkEntry" +--- + +A single Design Arena benchmark entry for a specific arena+category + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| `arena` | *str* | :heavy_check_mark: | Arena type (e.g. models, builders, agents) | models | +| `category` | *str* | :heavy_check_mark: | Category within the arena (e.g. website, gamedev, uicomponent) | website | +| `elo` | *float* | :heavy_check_mark: | ELO rating from head-to-head arena battles | 1385.2 | +| `rank` | *int* | :heavy_check_mark: | Rank position within this arena+category among models available on OpenRouter (1 = highest ELO) | 5 | +| `win_rate` | *float* | :heavy_check_mark: | Win rate percentage in arena battles | 62.5 | \ No newline at end of file diff --git a/docs/components/datacollection.md b/docs/components/datacollection.md deleted file mode 100644 index a07c6e2e..00000000 --- a/docs/components/datacollection.md +++ /dev/null @@ -1,14 +0,0 @@ -# DataCollection - -Data collection setting. If no available model provider meets the requirement, your request will return an error. -- allow: (default) allow providers which store user data non-transiently and may train on it - -- deny: use only providers which do not collect user data. - - -## Values - -| Name | Value | -| ------- | ------- | -| `DENY` | deny | -| `ALLOW` | allow | \ No newline at end of file diff --git a/docs/components/datacollection.mdx b/docs/components/datacollection.mdx new file mode 100644 index 00000000..307b625a --- /dev/null +++ b/docs/components/datacollection.mdx @@ -0,0 +1,25 @@ +--- +title: "DataCollection" +--- + +Data collection setting. If no available model provider meets the requirement, your request will return an error. +- allow: (default) allow providers which store user data non-transiently and may train on it + +- deny: use only providers which do not collect user data. + +## Example Usage + +```python +from openrouter.components import DataCollection + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: DataCollection = "deny" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"deny"` +- `"allow"` diff --git a/docs/components/dataregion.mdx b/docs/components/dataregion.mdx new file mode 100644 index 00000000..07ebe2f4 --- /dev/null +++ b/docs/components/dataregion.mdx @@ -0,0 +1,22 @@ +--- +title: "DataRegion" +--- + +The data region this generation was routed through. 'europe' for EU-routed requests, 'global' otherwise. + +## Example Usage + +```python +from openrouter.components import DataRegion + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: DataRegion = "global" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"global"` +- `"europe"` diff --git a/docs/components/datetimeservertool.mdx b/docs/components/datetimeservertool.mdx new file mode 100644 index 00000000..af483bec --- /dev/null +++ b/docs/components/datetimeservertool.mdx @@ -0,0 +1,13 @@ +--- +title: "DatetimeServerTool" +--- + +OpenRouter built-in server tool: returns the current date and time + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `parameters` | [Optional[components.DatetimeServerToolConfig]](../components/datetimeservertoolconfig.mdx) | :heavy_minus_sign: | Configuration for the openrouter:datetime server tool | \{
"timezone": "America/New_York"
} | +| `type` | [components.DatetimeServerToolType](../components/datetimeservertooltype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/datetimeservertoolconfig.mdx b/docs/components/datetimeservertoolconfig.mdx new file mode 100644 index 00000000..f2c289a3 --- /dev/null +++ b/docs/components/datetimeservertoolconfig.mdx @@ -0,0 +1,12 @@ +--- +title: "DatetimeServerToolConfig" +--- + +Configuration for the openrouter:datetime server tool + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `timezone` | *Optional[str]* | :heavy_minus_sign: | IANA timezone name (e.g. "America/New_York"). Defaults to UTC. | America/New_York | \ No newline at end of file diff --git a/docs/components/datetimeservertooltype.mdx b/docs/components/datetimeservertooltype.mdx new file mode 100644 index 00000000..23b3fdfc --- /dev/null +++ b/docs/components/datetimeservertooltype.mdx @@ -0,0 +1,15 @@ +--- +title: "DatetimeServerToolType" +--- + +## Example Usage + +```python +from openrouter.components import DatetimeServerToolType +value: DatetimeServerToolType = "openrouter:datetime" +``` + + +## Values + +- `"openrouter:datetime"` diff --git a/docs/components/debug.mdx b/docs/components/debug.mdx new file mode 100644 index 00000000..5aff6df4 --- /dev/null +++ b/docs/components/debug.mdx @@ -0,0 +1,10 @@ +--- +title: "Debug" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `echo_upstream_body` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `timings` | [Optional[components.Timings]](../components/timings.mdx) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/debugevent.mdx b/docs/components/debugevent.mdx new file mode 100644 index 00000000..1a76e56a --- /dev/null +++ b/docs/components/debugevent.mdx @@ -0,0 +1,14 @@ +--- +title: "DebugEvent" +--- + +Debug event emitted when debug.echo_upstream_body is true. Contains the transformed upstream request body or timing milestones. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `debug` | [components.Debug](../components/debug.mdx) | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.DebugEventType](../components/debugeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/debugeventtype.mdx b/docs/components/debugeventtype.mdx new file mode 100644 index 00000000..5d2d4dc2 --- /dev/null +++ b/docs/components/debugeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "DebugEventType" +--- + +## Example Usage + +```python +from openrouter.components import DebugEventType +value: DebugEventType = "response.debug" +``` + + +## Values + +- `"response.debug"` diff --git a/docs/components/defaulteffort.mdx b/docs/components/defaulteffort.mdx new file mode 100644 index 00000000..1e867684 --- /dev/null +++ b/docs/components/defaulteffort.mdx @@ -0,0 +1,27 @@ +--- +title: "DefaultEffort" +--- + +Default reasoning effort when the client enables reasoning without specifying effort. Maps to `reasoning.effort` in chat requests. When `"none"`, prefer omitting effort unless the user explicitly disables reasoning. + +## Example Usage + +```python +from openrouter.components import DefaultEffort + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: DefaultEffort = "max" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"max"` +- `"xhigh"` +- `"high"` +- `"medium"` +- `"low"` +- `"minimal"` +- `"none"` diff --git a/docs/components/defaultparameters.md b/docs/components/defaultparameters.mdx similarity index 96% rename from docs/components/defaultparameters.md rename to docs/components/defaultparameters.mdx index 6941215f..6c502ac4 100644 --- a/docs/components/defaultparameters.md +++ b/docs/components/defaultparameters.mdx @@ -1,4 +1,6 @@ -# DefaultParameters +--- +title: "DefaultParameters" +--- Default parameters for this model diff --git a/docs/components/deletebyokkeyresponse.mdx b/docs/components/deletebyokkeyresponse.mdx new file mode 100644 index 00000000..f1c80d26 --- /dev/null +++ b/docs/components/deletebyokkeyresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "DeleteBYOKKeyResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `deleted` | *Literal[True]* | :heavy_check_mark: | Confirmation that the BYOK credential was deleted. | true | \ No newline at end of file diff --git a/docs/components/deleteguardrailresponse.mdx b/docs/components/deleteguardrailresponse.mdx new file mode 100644 index 00000000..36069a96 --- /dev/null +++ b/docs/components/deleteguardrailresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "DeleteGuardrailResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | +| `deleted` | *Literal[True]* | :heavy_check_mark: | Confirmation that the guardrail was deleted | true | \ No newline at end of file diff --git a/docs/components/deleteobservabilitydestinationresponse.mdx b/docs/components/deleteobservabilitydestinationresponse.mdx new file mode 100644 index 00000000..4d572b68 --- /dev/null +++ b/docs/components/deleteobservabilitydestinationresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "DeleteObservabilityDestinationResponse" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------- | ------------------------- | ------------------------- | ------------------------- | +| `deleted` | *Literal[True]* | :heavy_check_mark: | Always `true` on success. | \ No newline at end of file diff --git a/docs/components/deleteworkspacebudgetresponse.mdx b/docs/components/deleteworkspacebudgetresponse.mdx new file mode 100644 index 00000000..fb5ff101 --- /dev/null +++ b/docs/components/deleteworkspacebudgetresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "DeleteWorkspaceBudgetResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `deleted` | *Literal[True]* | :heavy_check_mark: | Confirmation that the budget was deleted (or did not exist) | true | \ No newline at end of file diff --git a/docs/components/deleteworkspaceresponse.mdx b/docs/components/deleteworkspaceresponse.mdx new file mode 100644 index 00000000..93b4da47 --- /dev/null +++ b/docs/components/deleteworkspaceresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "DeleteWorkspaceResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | +| `deleted` | *Literal[True]* | :heavy_check_mark: | Confirmation that the workspace was deleted | true | \ No newline at end of file diff --git a/docs/components/easyinputmessage.mdx b/docs/components/easyinputmessage.mdx new file mode 100644 index 00000000..60e935b6 --- /dev/null +++ b/docs/components/easyinputmessage.mdx @@ -0,0 +1,12 @@ +--- +title: "EasyInputMessage" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `content` | [OptionalNullable[components.EasyInputMessageContentUnion2]](../components/easyinputmessagecontentunion2.mdx) | :heavy_minus_sign: | N/A | | +| `phase` | [OptionalNullable[components.EasyInputMessagePhaseUnion]](../components/easyinputmessagephaseunion.mdx) | :heavy_minus_sign: | The phase of an assistant message. Use `commentary` for an intermediate assistant message and `final_answer` for the final assistant message. For follow-up requests with models like `gpt-5.3-codex` and later, preserve and resend phase on all assistant messages. Omitting it can degrade performance. Not used for user messages. | final_answer | +| `role` | [components.EasyInputMessageRoleUnion](../components/easyinputmessageroleunion.mdx) | :heavy_check_mark: | N/A | | +| `type` | [Optional[components.EasyInputMessageTypeMessage]](../components/easyinputmessagetypemessage.mdx) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/components/easyinputmessagecontentinputimage.mdx b/docs/components/easyinputmessagecontentinputimage.mdx new file mode 100644 index 00000000..502f1182 --- /dev/null +++ b/docs/components/easyinputmessagecontentinputimage.mdx @@ -0,0 +1,14 @@ +--- +title: "EasyInputMessageContentInputImage" +--- + +Image input content item + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `detail` | [components.EasyInputMessageDetail](../components/easyinputmessagedetail.mdx) | :heavy_check_mark: | N/A | +| `image_url` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `type` | [components.EasyInputMessageTypeInputImage](../components/easyinputmessagetypeinputimage.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/easyinputmessagecontentunion1.mdx b/docs/components/easyinputmessagecontentunion1.mdx new file mode 100644 index 00000000..b650861b --- /dev/null +++ b/docs/components/easyinputmessagecontentunion1.mdx @@ -0,0 +1,36 @@ +--- +title: "EasyInputMessageContentUnion1" +--- + +## Supported Types + +### `components.InputText` + +```python +value: components.InputText = /* values here */ +``` + +### `components.EasyInputMessageContentInputImage` + +```python +value: components.EasyInputMessageContentInputImage = /* values here */ +``` + +### `components.InputFile` + +```python +value: components.InputFile = /* values here */ +``` + +### `components.InputAudio` + +```python +value: components.InputAudio = /* values here */ +``` + +### `components.InputVideo` + +```python +value: components.InputVideo = /* values here */ +``` + diff --git a/docs/components/easyinputmessagecontentunion2.mdx b/docs/components/easyinputmessagecontentunion2.mdx new file mode 100644 index 00000000..02c13eb5 --- /dev/null +++ b/docs/components/easyinputmessagecontentunion2.mdx @@ -0,0 +1,24 @@ +--- +title: "EasyInputMessageContentUnion2" +--- + +## Supported Types + +### `List[components.EasyInputMessageContentUnion1]` + +```python +value: List[components.EasyInputMessageContentUnion1] = /* values here */ +``` + +### `str` + +```python +value: str = /* values here */ +``` + +### `Any` + +```python +value: Any = /* values here */ +``` + diff --git a/docs/components/easyinputmessagedetail.mdx b/docs/components/easyinputmessagedetail.mdx new file mode 100644 index 00000000..4f052972 --- /dev/null +++ b/docs/components/easyinputmessagedetail.mdx @@ -0,0 +1,22 @@ +--- +title: "EasyInputMessageDetail" +--- + +## Example Usage + +```python +from openrouter.components import EasyInputMessageDetail + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: EasyInputMessageDetail = "auto" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"auto"` +- `"high"` +- `"low"` +- `"original"` diff --git a/docs/components/easyinputmessagephasecommentary.mdx b/docs/components/easyinputmessagephasecommentary.mdx new file mode 100644 index 00000000..6c91d164 --- /dev/null +++ b/docs/components/easyinputmessagephasecommentary.mdx @@ -0,0 +1,15 @@ +--- +title: "EasyInputMessagePhaseCommentary" +--- + +## Example Usage + +```python +from openrouter.components import EasyInputMessagePhaseCommentary +value: EasyInputMessagePhaseCommentary = "commentary" +``` + + +## Values + +- `"commentary"` diff --git a/docs/components/easyinputmessagephasefinalanswer.mdx b/docs/components/easyinputmessagephasefinalanswer.mdx new file mode 100644 index 00000000..4c9f6073 --- /dev/null +++ b/docs/components/easyinputmessagephasefinalanswer.mdx @@ -0,0 +1,15 @@ +--- +title: "EasyInputMessagePhaseFinalAnswer" +--- + +## Example Usage + +```python +from openrouter.components import EasyInputMessagePhaseFinalAnswer +value: EasyInputMessagePhaseFinalAnswer = "final_answer" +``` + + +## Values + +- `"final_answer"` diff --git a/docs/components/easyinputmessagephaseunion.mdx b/docs/components/easyinputmessagephaseunion.mdx new file mode 100644 index 00000000..6f56b1ad --- /dev/null +++ b/docs/components/easyinputmessagephaseunion.mdx @@ -0,0 +1,27 @@ +--- +title: "EasyInputMessagePhaseUnion" +--- + +The phase of an assistant message. Use `commentary` for an intermediate assistant message and `final_answer` for the final assistant message. For follow-up requests with models like `gpt-5.3-codex` and later, preserve and resend phase on all assistant messages. Omitting it can degrade performance. Not used for user messages. + + +## Supported Types + +### `components.EasyInputMessagePhaseCommentary` + +```python +value: components.EasyInputMessagePhaseCommentary = /* values here */ +``` + +### `components.EasyInputMessagePhaseFinalAnswer` + +```python +value: components.EasyInputMessagePhaseFinalAnswer = /* values here */ +``` + +### `Any` + +```python +value: Any = /* values here */ +``` + diff --git a/docs/components/easyinputmessageroleassistant.mdx b/docs/components/easyinputmessageroleassistant.mdx new file mode 100644 index 00000000..ad75b143 --- /dev/null +++ b/docs/components/easyinputmessageroleassistant.mdx @@ -0,0 +1,15 @@ +--- +title: "EasyInputMessageRoleAssistant" +--- + +## Example Usage + +```python +from openrouter.components import EasyInputMessageRoleAssistant +value: EasyInputMessageRoleAssistant = "assistant" +``` + + +## Values + +- `"assistant"` diff --git a/docs/components/easyinputmessageroledeveloper.mdx b/docs/components/easyinputmessageroledeveloper.mdx new file mode 100644 index 00000000..1c5e3b10 --- /dev/null +++ b/docs/components/easyinputmessageroledeveloper.mdx @@ -0,0 +1,15 @@ +--- +title: "EasyInputMessageRoleDeveloper" +--- + +## Example Usage + +```python +from openrouter.components import EasyInputMessageRoleDeveloper +value: EasyInputMessageRoleDeveloper = "developer" +``` + + +## Values + +- `"developer"` diff --git a/docs/components/easyinputmessagerolesystem.mdx b/docs/components/easyinputmessagerolesystem.mdx new file mode 100644 index 00000000..2baab719 --- /dev/null +++ b/docs/components/easyinputmessagerolesystem.mdx @@ -0,0 +1,15 @@ +--- +title: "EasyInputMessageRoleSystem" +--- + +## Example Usage + +```python +from openrouter.components import EasyInputMessageRoleSystem +value: EasyInputMessageRoleSystem = "system" +``` + + +## Values + +- `"system"` diff --git a/docs/components/easyinputmessageroleunion.mdx b/docs/components/easyinputmessageroleunion.mdx new file mode 100644 index 00000000..27659d87 --- /dev/null +++ b/docs/components/easyinputmessageroleunion.mdx @@ -0,0 +1,30 @@ +--- +title: "EasyInputMessageRoleUnion" +--- + +## Supported Types + +### `components.EasyInputMessageRoleUser` + +```python +value: components.EasyInputMessageRoleUser = /* values here */ +``` + +### `components.EasyInputMessageRoleSystem` + +```python +value: components.EasyInputMessageRoleSystem = /* values here */ +``` + +### `components.EasyInputMessageRoleAssistant` + +```python +value: components.EasyInputMessageRoleAssistant = /* values here */ +``` + +### `components.EasyInputMessageRoleDeveloper` + +```python +value: components.EasyInputMessageRoleDeveloper = /* values here */ +``` + diff --git a/docs/components/easyinputmessageroleuser.mdx b/docs/components/easyinputmessageroleuser.mdx new file mode 100644 index 00000000..2d5933ca --- /dev/null +++ b/docs/components/easyinputmessageroleuser.mdx @@ -0,0 +1,15 @@ +--- +title: "EasyInputMessageRoleUser" +--- + +## Example Usage + +```python +from openrouter.components import EasyInputMessageRoleUser +value: EasyInputMessageRoleUser = "user" +``` + + +## Values + +- `"user"` diff --git a/docs/components/easyinputmessagetypeinputimage.mdx b/docs/components/easyinputmessagetypeinputimage.mdx new file mode 100644 index 00000000..f7d504e7 --- /dev/null +++ b/docs/components/easyinputmessagetypeinputimage.mdx @@ -0,0 +1,15 @@ +--- +title: "EasyInputMessageTypeInputImage" +--- + +## Example Usage + +```python +from openrouter.components import EasyInputMessageTypeInputImage +value: EasyInputMessageTypeInputImage = "input_image" +``` + + +## Values + +- `"input_image"` diff --git a/docs/components/easyinputmessagetypemessage.mdx b/docs/components/easyinputmessagetypemessage.mdx new file mode 100644 index 00000000..aca18915 --- /dev/null +++ b/docs/components/easyinputmessagetypemessage.mdx @@ -0,0 +1,15 @@ +--- +title: "EasyInputMessageTypeMessage" +--- + +## Example Usage + +```python +from openrouter.components import EasyInputMessageTypeMessage +value: EasyInputMessageTypeMessage = "message" +``` + + +## Values + +- `"message"` diff --git a/docs/components/edgenetworktimeoutresponseerrordata.md b/docs/components/edgenetworktimeoutresponseerrordata.mdx similarity index 92% rename from docs/components/edgenetworktimeoutresponseerrordata.md rename to docs/components/edgenetworktimeoutresponseerrordata.mdx index f460fe48..66b365f4 100644 --- a/docs/components/edgenetworktimeoutresponseerrordata.md +++ b/docs/components/edgenetworktimeoutresponseerrordata.mdx @@ -1,4 +1,6 @@ -# EdgeNetworkTimeoutResponseErrorData +--- +title: "EdgeNetworkTimeoutResponseErrorData" +--- Error data for EdgeNetworkTimeoutResponse diff --git a/docs/components/edit.mdx b/docs/components/edit.mdx new file mode 100644 index 00000000..da55b43f --- /dev/null +++ b/docs/components/edit.mdx @@ -0,0 +1,24 @@ +--- +title: "Edit" +--- + +## Supported Types + +### `components.EditClearToolUses20250919` + +```python +value: components.EditClearToolUses20250919 = /* values here */ +``` + +### `components.EditClearThinking20251015` + +```python +value: components.EditClearThinking20251015 = /* values here */ +``` + +### `components.EditCompact20260112` + +```python +value: components.EditCompact20260112 = /* values here */ +``` + diff --git a/docs/components/editclearthinking20251015.mdx b/docs/components/editclearthinking20251015.mdx new file mode 100644 index 00000000..0796f7cd --- /dev/null +++ b/docs/components/editclearthinking20251015.mdx @@ -0,0 +1,10 @@ +--- +title: "EditClearThinking20251015" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `keep` | [Optional[components.Keep]](../components/keep.mdx) | :heavy_minus_sign: | N/A | +| `type` | [components.TypeClearThinking20251015](../components/typeclearthinking20251015.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/editcleartooluses20250919.mdx b/docs/components/editcleartooluses20250919.mdx new file mode 100644 index 00000000..a8a31837 --- /dev/null +++ b/docs/components/editcleartooluses20250919.mdx @@ -0,0 +1,14 @@ +--- +title: "EditClearToolUses20250919" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `clear_at_least` | [OptionalNullable[components.AnthropicInputTokensClearAtLeast]](../components/anthropicinputtokensclearatleast.mdx) | :heavy_minus_sign: | N/A | \{
"type": "input_tokens",
"value": 50000
} | +| `clear_tool_inputs` | [OptionalNullable[components.ClearToolInputs]](../components/cleartoolinputs.mdx) | :heavy_minus_sign: | N/A | | +| `exclude_tools` | List[*str*] | :heavy_minus_sign: | N/A | | +| `keep` | [Optional[components.AnthropicToolUsesKeep]](../components/anthropictooluseskeep.mdx) | :heavy_minus_sign: | N/A | \{
"type": "tool_uses",
"value": 5
} | +| `trigger` | [Optional[components.Trigger]](../components/trigger.mdx) | :heavy_minus_sign: | N/A | | +| `type` | [components.TypeClearToolUses20250919](../components/typecleartooluses20250919.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/editcompact20260112.mdx b/docs/components/editcompact20260112.mdx new file mode 100644 index 00000000..09c8fd6f --- /dev/null +++ b/docs/components/editcompact20260112.mdx @@ -0,0 +1,12 @@ +--- +title: "EditCompact20260112" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `instructions` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `pause_after_compaction` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `trigger` | [OptionalNullable[components.TriggerInputTokens]](../components/triggerinputtokens.mdx) | :heavy_minus_sign: | N/A | \{
"type": "input_tokens",
"value": 100000
} | +| `type` | [components.TypeCompact20260112](../components/typecompact20260112.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/edittypeinputtokens.mdx b/docs/components/edittypeinputtokens.mdx new file mode 100644 index 00000000..b876816e --- /dev/null +++ b/docs/components/edittypeinputtokens.mdx @@ -0,0 +1,15 @@ +--- +title: "EditTypeInputTokens" +--- + +## Example Usage + +```python +from openrouter.components import EditTypeInputTokens +value: EditTypeInputTokens = "input_tokens" +``` + + +## Values + +- `"input_tokens"` diff --git a/docs/components/endpointinfo.mdx b/docs/components/endpointinfo.mdx new file mode 100644 index 00000000..e525afd1 --- /dev/null +++ b/docs/components/endpointinfo.mdx @@ -0,0 +1,11 @@ +--- +title: "EndpointInfo" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `model` | *str* | :heavy_check_mark: | N/A | +| `provider` | *str* | :heavy_check_mark: | N/A | +| `selected` | *bool* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/endpointsmetadata.mdx b/docs/components/endpointsmetadata.mdx new file mode 100644 index 00000000..4add6ebf --- /dev/null +++ b/docs/components/endpointsmetadata.mdx @@ -0,0 +1,10 @@ +--- +title: "EndpointsMetadata" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `available` | List[[components.EndpointInfo](../components/endpointinfo.mdx)] | :heavy_check_mark: | N/A | +| `total` | *int* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/endpointstatus.md b/docs/components/endpointstatus.md deleted file mode 100644 index dd890057..00000000 --- a/docs/components/endpointstatus.md +++ /dev/null @@ -1,13 +0,0 @@ -# EndpointStatus - - -## Values - -| Name | Value | -| ---------- | ---------- | -| `ZERO` | 0 | -| `MINUS_1` | -1 | -| `MINUS_2` | -2 | -| `MINUS_3` | -3 | -| `MINUS_5` | -5 | -| `MINUS_10` | -10 | \ No newline at end of file diff --git a/docs/components/endpointstatus.mdx b/docs/components/endpointstatus.mdx new file mode 100644 index 00000000..72c5b4fb --- /dev/null +++ b/docs/components/endpointstatus.mdx @@ -0,0 +1,24 @@ +--- +title: "EndpointStatus" +--- + +## Example Usage + +```python +from openrouter.components import EndpointStatus + +# Open enum: unrecognized values are captured as UnrecognizedInt +value: EndpointStatus = 0 +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `0` +- `-1` +- `-2` +- `-3` +- `-5` +- `-10` diff --git a/docs/components/enumcapability.mdx b/docs/components/enumcapability.mdx new file mode 100644 index 00000000..4c04e707 --- /dev/null +++ b/docs/components/enumcapability.mdx @@ -0,0 +1,13 @@ +--- +title: "EnumCapability" +--- + +A parameter that accepts one of a discrete set of string values. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `type` | [components.EnumCapabilityType](../components/enumcapabilitytype.mdx) | :heavy_check_mark: | N/A | +| `values` | List[*str*] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/enumcapabilitytype.mdx b/docs/components/enumcapabilitytype.mdx new file mode 100644 index 00000000..1b43e9ba --- /dev/null +++ b/docs/components/enumcapabilitytype.mdx @@ -0,0 +1,15 @@ +--- +title: "EnumCapabilityType" +--- + +## Example Usage + +```python +from openrouter.components import EnumCapabilityType +value: EnumCapabilityType = "enum" +``` + + +## Values + +- `"enum"` diff --git a/docs/components/environment.mdx b/docs/components/environment.mdx new file mode 100644 index 00000000..c08a3d8f --- /dev/null +++ b/docs/components/environment.mdx @@ -0,0 +1,23 @@ +--- +title: "Environment" +--- + +## Example Usage + +```python +from openrouter.components import Environment + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Environment = "windows" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"windows"` +- `"mac"` +- `"linux"` +- `"ubuntu"` +- `"browser"` diff --git a/docs/components/errorcode.mdx b/docs/components/errorcode.mdx new file mode 100644 index 00000000..c177e307 --- /dev/null +++ b/docs/components/errorcode.mdx @@ -0,0 +1,23 @@ +--- +title: "ErrorCode" +--- + +## Example Usage + +```python +from openrouter.components import ErrorCode + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ErrorCode = "invalid_tool_input" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"invalid_tool_input"` +- `"unavailable"` +- `"max_uses_exceeded"` +- `"too_many_requests"` +- `"query_too_long"` diff --git a/docs/components/errorevent.mdx b/docs/components/errorevent.mdx new file mode 100644 index 00000000..b09b8411 --- /dev/null +++ b/docs/components/errorevent.mdx @@ -0,0 +1,16 @@ +--- +title: "ErrorEvent" +--- + +Event emitted when an error occurs during streaming + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `code` | *Nullable[str]* | :heavy_check_mark: | N/A | +| `message` | *str* | :heavy_check_mark: | N/A | +| `param` | *Nullable[str]* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.ErrorEventType](../components/erroreventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/erroreventtype.mdx b/docs/components/erroreventtype.mdx new file mode 100644 index 00000000..ffc147c8 --- /dev/null +++ b/docs/components/erroreventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ErrorEventType" +--- + +## Example Usage + +```python +from openrouter.components import ErrorEventType +value: ErrorEventType = "error" +``` + + +## Values + +- `"error"` diff --git a/docs/components/event.mdx b/docs/components/event.mdx new file mode 100644 index 00000000..3f077ae5 --- /dev/null +++ b/docs/components/event.mdx @@ -0,0 +1,22 @@ +--- +title: "Event" +--- + +## Example Usage + +```python +from openrouter.components import Event + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Event = "adapter_request" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"adapter_request"` +- `"upstream_headers_received"` +- `"first_token_received"` +- `"upstream_body_ended"` diff --git a/docs/components/failedmodel.mdx b/docs/components/failedmodel.mdx new file mode 100644 index 00000000..70d6de50 --- /dev/null +++ b/docs/components/failedmodel.mdx @@ -0,0 +1,11 @@ +--- +title: "FailedModel" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `error` | *str* | :heavy_check_mark: | Error message describing why the model failed. | +| `model` | *str* | :heavy_check_mark: | Slug of the analysis model that failed. | +| `status_code` | *Optional[int]* | :heavy_minus_sign: | HTTP status code from the upstream response, when available (e.g. 402, 429). | \ No newline at end of file diff --git a/docs/components/fieldt.mdx b/docs/components/fieldt.mdx new file mode 100644 index 00000000..a021f257 --- /dev/null +++ b/docs/components/fieldt.mdx @@ -0,0 +1,30 @@ +--- +title: "FieldT" +--- + +## Example Usage + +```python +from openrouter.components import FieldT + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: FieldT = "model" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"model"` +- `"provider"` +- `"session_id"` +- `"user_id"` +- `"api_key_name"` +- `"finish_reason"` +- `"input"` +- `"output"` +- `"total_cost"` +- `"total_tokens"` +- `"prompt_tokens"` +- `"completion_tokens"` diff --git a/docs/components/file.mdx b/docs/components/file.mdx new file mode 100644 index 00000000..d332b47b --- /dev/null +++ b/docs/components/file.mdx @@ -0,0 +1,11 @@ +--- +title: "File" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | -------------------------------------- | +| `file_data` | *Optional[str]* | :heavy_minus_sign: | File content as base64 data URL or URL | +| `file_id` | *Optional[str]* | :heavy_minus_sign: | File ID for previously uploaded files | +| `filename` | *Optional[str]* | :heavy_minus_sign: | Original filename | \ No newline at end of file diff --git a/docs/components/filecitation.md b/docs/components/filecitation.mdx similarity index 89% rename from docs/components/filecitation.md rename to docs/components/filecitation.mdx index f03ca158..79ca7438 100644 --- a/docs/components/filecitation.md +++ b/docs/components/filecitation.mdx @@ -1,5 +1,6 @@ -# FileCitation - +--- +title: "FileCitation" +--- ## Fields @@ -8,4 +9,4 @@ | `file_id` | *str* | :heavy_check_mark: | N/A | | `filename` | *str* | :heavy_check_mark: | N/A | | `index` | *int* | :heavy_check_mark: | N/A | -| `type` | [components.FileCitationType](../components/filecitationtype.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| `type` | [components.FileCitationType](../components/filecitationtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/filecitationtype.md b/docs/components/filecitationtype.md deleted file mode 100644 index 787e2546..00000000 --- a/docs/components/filecitationtype.md +++ /dev/null @@ -1,8 +0,0 @@ -# FileCitationType - - -## Values - -| Name | Value | -| --------------- | --------------- | -| `FILE_CITATION` | file_citation | \ No newline at end of file diff --git a/docs/components/filecitationtype.mdx b/docs/components/filecitationtype.mdx new file mode 100644 index 00000000..2450e437 --- /dev/null +++ b/docs/components/filecitationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "FileCitationType" +--- + +## Example Usage + +```python +from openrouter.components import FileCitationType +value: FileCitationType = "file_citation" +``` + + +## Values + +- `"file_citation"` diff --git a/docs/components/filedeleteresponse.mdx b/docs/components/filedeleteresponse.mdx new file mode 100644 index 00000000..f9fa4325 --- /dev/null +++ b/docs/components/filedeleteresponse.mdx @@ -0,0 +1,13 @@ +--- +title: "FileDeleteResponse" +--- + +Confirmation that a file was deleted. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.FileDeleteResponseType](../components/filedeleteresponsetype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/filedeleteresponsetype.mdx b/docs/components/filedeleteresponsetype.mdx new file mode 100644 index 00000000..978f7962 --- /dev/null +++ b/docs/components/filedeleteresponsetype.mdx @@ -0,0 +1,15 @@ +--- +title: "FileDeleteResponseType" +--- + +## Example Usage + +```python +from openrouter.components import FileDeleteResponseType +value: FileDeleteResponseType = "file_deleted" +``` + + +## Values + +- `"file_deleted"` diff --git a/docs/components/filelistresponse.mdx b/docs/components/filelistresponse.mdx new file mode 100644 index 00000000..ec382997 --- /dev/null +++ b/docs/components/filelistresponse.mdx @@ -0,0 +1,16 @@ +--- +title: "FileListResponse" +--- + +A page of files belonging to the requesting workspace. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `cursor` | *Nullable[str]* | :heavy_check_mark: | Opaque cursor for the next page; null when there are no more results. | +| `data` | List[[components.FileMetadata](../components/filemetadata.mdx)] | :heavy_check_mark: | N/A | +| `first_id` | *Nullable[str]* | :heavy_check_mark: | N/A | +| `has_more` | *bool* | :heavy_check_mark: | N/A | +| `last_id` | *Nullable[str]* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/filemetadata.mdx b/docs/components/filemetadata.mdx new file mode 100644 index 00000000..cfb23fb2 --- /dev/null +++ b/docs/components/filemetadata.mdx @@ -0,0 +1,18 @@ +--- +title: "FileMetadata" +--- + +Metadata describing a stored file. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `created_at` | *str* | :heavy_check_mark: | N/A | +| `downloadable` | *bool* | :heavy_check_mark: | N/A | +| `filename` | *str* | :heavy_check_mark: | N/A | +| `id` | *str* | :heavy_check_mark: | N/A | +| `mime_type` | *str* | :heavy_check_mark: | N/A | +| `size_bytes` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.FileMetadataType](../components/filemetadatatype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/filemetadatatype.mdx b/docs/components/filemetadatatype.mdx new file mode 100644 index 00000000..e6700305 --- /dev/null +++ b/docs/components/filemetadatatype.mdx @@ -0,0 +1,15 @@ +--- +title: "FileMetadataType" +--- + +## Example Usage + +```python +from openrouter.components import FileMetadataType +value: FileMetadataType = "file" +``` + + +## Values + +- `"file"` diff --git a/docs/components/fileparserplugin.mdx b/docs/components/fileparserplugin.mdx new file mode 100644 index 00000000..2a74948b --- /dev/null +++ b/docs/components/fileparserplugin.mdx @@ -0,0 +1,11 @@ +--- +title: "FileParserPlugin" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `enabled` | *Optional[bool]* | :heavy_minus_sign: | Set to false to disable the file-parser plugin for this request. Defaults to true. | | +| `id` | [components.FileParserPluginID](../components/fileparserpluginid.mdx) | :heavy_check_mark: | N/A | | +| `pdf` | [Optional[components.PDFParserOptions]](../components/pdfparseroptions.mdx) | :heavy_minus_sign: | Options for PDF parsing. | \{
"engine": "cloudflare-ai"
} | \ No newline at end of file diff --git a/docs/components/fileparserpluginid.mdx b/docs/components/fileparserpluginid.mdx new file mode 100644 index 00000000..092654bb --- /dev/null +++ b/docs/components/fileparserpluginid.mdx @@ -0,0 +1,15 @@ +--- +title: "FileParserPluginID" +--- + +## Example Usage + +```python +from openrouter.components import FileParserPluginID +value: FileParserPluginID = "file-parser" +``` + + +## Values + +- `"file-parser"` diff --git a/docs/components/filepath.md b/docs/components/filepath.mdx similarity index 83% rename from docs/components/filepath.md rename to docs/components/filepath.mdx index cc41f2d3..f6d81e7b 100644 --- a/docs/components/filepath.md +++ b/docs/components/filepath.mdx @@ -1,5 +1,6 @@ -# FilePath - +--- +title: "FilePath" +--- ## Fields @@ -7,4 +8,4 @@ | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | | `file_id` | *str* | :heavy_check_mark: | N/A | | `index` | *int* | :heavy_check_mark: | N/A | -| `type` | [components.FilePathType](../components/filepathtype.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| `type` | [components.FilePathType](../components/filepathtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/filepathtype.md b/docs/components/filepathtype.md deleted file mode 100644 index 8edc6ad0..00000000 --- a/docs/components/filepathtype.md +++ /dev/null @@ -1,8 +0,0 @@ -# FilePathType - - -## Values - -| Name | Value | -| ----------- | ----------- | -| `FILE_PATH` | file_path | \ No newline at end of file diff --git a/docs/components/filepathtype.mdx b/docs/components/filepathtype.mdx new file mode 100644 index 00000000..fa448d3f --- /dev/null +++ b/docs/components/filepathtype.mdx @@ -0,0 +1,15 @@ +--- +title: "FilePathType" +--- + +## Example Usage + +```python +from openrouter.components import FilePathType +value: FilePathType = "file_path" +``` + + +## Values + +- `"file_path"` diff --git a/docs/components/filesearchservertool.mdx b/docs/components/filesearchservertool.mdx new file mode 100644 index 00000000..573425f3 --- /dev/null +++ b/docs/components/filesearchservertool.mdx @@ -0,0 +1,16 @@ +--- +title: "FileSearchServerTool" +--- + +File search tool configuration + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `filters` | [OptionalNullable[components.FiltersUnion]](../components/filtersunion.mdx) | :heavy_minus_sign: | N/A | +| `max_num_results` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `ranking_options` | [Optional[components.RankingOptions]](../components/rankingoptions.mdx) | :heavy_minus_sign: | N/A | +| `type` | [components.TypeFileSearch](../components/typefilesearch.mdx) | :heavy_check_mark: | N/A | +| `vector_store_ids` | List[*str*] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/filesearchservertoolvalue1.mdx b/docs/components/filesearchservertoolvalue1.mdx new file mode 100644 index 00000000..769ec984 --- /dev/null +++ b/docs/components/filesearchservertoolvalue1.mdx @@ -0,0 +1,18 @@ +--- +title: "FileSearchServerToolValue1" +--- + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `float` + +```python +value: float = /* values here */ +``` + diff --git a/docs/components/filesearchservertoolvalue2.mdx b/docs/components/filesearchservertoolvalue2.mdx new file mode 100644 index 00000000..57021925 --- /dev/null +++ b/docs/components/filesearchservertoolvalue2.mdx @@ -0,0 +1,30 @@ +--- +title: "FileSearchServerToolValue2" +--- + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `float` + +```python +value: float = /* values here */ +``` + +### `bool` + +```python +value: bool = /* values here */ +``` + +### `List[components.FileSearchServerToolValue1]` + +```python +value: List[components.FileSearchServerToolValue1] = /* values here */ +``` + diff --git a/docs/components/filters.mdx b/docs/components/filters.mdx new file mode 100644 index 00000000..deb05277 --- /dev/null +++ b/docs/components/filters.mdx @@ -0,0 +1,11 @@ +--- +title: "Filters" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `key` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.FiltersType](../components/filterstype.mdx) | :heavy_check_mark: | N/A | +| `value` | [components.FileSearchServerToolValue2](../components/filesearchservertoolvalue2.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/filterstype.mdx b/docs/components/filterstype.mdx new file mode 100644 index 00000000..172ba4b9 --- /dev/null +++ b/docs/components/filterstype.mdx @@ -0,0 +1,24 @@ +--- +title: "FiltersType" +--- + +## Example Usage + +```python +from openrouter.components import FiltersType + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: FiltersType = "eq" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"eq"` +- `"ne"` +- `"gt"` +- `"gte"` +- `"lt"` +- `"lte"` diff --git a/docs/components/filtersunion.mdx b/docs/components/filtersunion.mdx new file mode 100644 index 00000000..263dda89 --- /dev/null +++ b/docs/components/filtersunion.mdx @@ -0,0 +1,24 @@ +--- +title: "FiltersUnion" +--- + +## Supported Types + +### `components.Filters` + +```python +value: components.Filters = /* values here */ +``` + +### `components.CompoundFilter` + +```python +value: components.CompoundFilter = /* values here */ +``` + +### `Any` + +```python +value: Any = /* values here */ +``` + diff --git a/docs/components/forbiddenresponseerrordata.md b/docs/components/forbiddenresponseerrordata.mdx similarity index 93% rename from docs/components/forbiddenresponseerrordata.md rename to docs/components/forbiddenresponseerrordata.mdx index 37e2199b..6876df07 100644 --- a/docs/components/forbiddenresponseerrordata.md +++ b/docs/components/forbiddenresponseerrordata.mdx @@ -1,4 +1,6 @@ -# ForbiddenResponseErrorData +--- +title: "ForbiddenResponseErrorData" +--- Error data for ForbiddenResponse diff --git a/docs/components/format_.mdx b/docs/components/format_.mdx new file mode 100644 index 00000000..76b8e33d --- /dev/null +++ b/docs/components/format_.mdx @@ -0,0 +1,18 @@ +--- +title: "Format" +--- + +## Supported Types + +### `components.FormatText` + +```python +value: components.FormatText = /* values here */ +``` + +### `components.FormatGrammar` + +```python +value: components.FormatGrammar = /* values here */ +``` + diff --git a/docs/components/formatenum.mdx b/docs/components/formatenum.mdx new file mode 100644 index 00000000..b8cb0845 --- /dev/null +++ b/docs/components/formatenum.mdx @@ -0,0 +1,20 @@ +--- +title: "FormatEnum" +--- + +## Example Usage + +```python +from openrouter.components import FormatEnum + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: FormatEnum = "mp3" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"mp3"` +- `"wav"` diff --git a/docs/components/formatgrammar.mdx b/docs/components/formatgrammar.mdx new file mode 100644 index 00000000..27fb6f5f --- /dev/null +++ b/docs/components/formatgrammar.mdx @@ -0,0 +1,11 @@ +--- +title: "FormatGrammar" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `definition` | *str* | :heavy_check_mark: | N/A | +| `syntax` | [components.Syntax](../components/syntax.mdx) | :heavy_check_mark: | N/A | +| `type` | [components.FormatTypeGrammar](../components/formattypegrammar.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/formatjsonobjectconfig.mdx b/docs/components/formatjsonobjectconfig.mdx new file mode 100644 index 00000000..376faaf4 --- /dev/null +++ b/docs/components/formatjsonobjectconfig.mdx @@ -0,0 +1,12 @@ +--- +title: "FormatJSONObjectConfig" +--- + +JSON object response format + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `type` | [components.FormatJSONObjectConfigType](../components/formatjsonobjectconfigtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/formatjsonobjectconfigtype.mdx b/docs/components/formatjsonobjectconfigtype.mdx new file mode 100644 index 00000000..54307d61 --- /dev/null +++ b/docs/components/formatjsonobjectconfigtype.mdx @@ -0,0 +1,15 @@ +--- +title: "FormatJSONObjectConfigType" +--- + +## Example Usage + +```python +from openrouter.components import FormatJSONObjectConfigType +value: FormatJSONObjectConfigType = "json_object" +``` + + +## Values + +- `"json_object"` diff --git a/docs/components/formatjsonschemaconfig.mdx b/docs/components/formatjsonschemaconfig.mdx new file mode 100644 index 00000000..12224f31 --- /dev/null +++ b/docs/components/formatjsonschemaconfig.mdx @@ -0,0 +1,16 @@ +--- +title: "FormatJSONSchemaConfig" +--- + +JSON schema constrained response format + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `description` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `name` | *str* | :heavy_check_mark: | N/A | +| `schema_` | Dict[str, *Nullable[Any]*] | :heavy_check_mark: | N/A | +| `strict` | *OptionalNullable[bool]* | :heavy_minus_sign: | N/A | +| `type` | [components.FormatJSONSchemaConfigType](../components/formatjsonschemaconfigtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/formatjsonschemaconfigtype.mdx b/docs/components/formatjsonschemaconfigtype.mdx new file mode 100644 index 00000000..b5a4ff25 --- /dev/null +++ b/docs/components/formatjsonschemaconfigtype.mdx @@ -0,0 +1,15 @@ +--- +title: "FormatJSONSchemaConfigType" +--- + +## Example Usage + +```python +from openrouter.components import FormatJSONSchemaConfigType +value: FormatJSONSchemaConfigType = "json_schema" +``` + + +## Values + +- `"json_schema"` diff --git a/docs/components/formats.mdx b/docs/components/formats.mdx new file mode 100644 index 00000000..fc3b3688 --- /dev/null +++ b/docs/components/formats.mdx @@ -0,0 +1,27 @@ +--- +title: "Formats" +--- + +Text response format configuration + + +## Supported Types + +### `components.FormatTextConfig` + +```python +value: components.FormatTextConfig = /* values here */ +``` + +### `components.FormatJSONObjectConfig` + +```python +value: components.FormatJSONObjectConfig = /* values here */ +``` + +### `components.FormatJSONSchemaConfig` + +```python +value: components.FormatJSONSchemaConfig = /* values here */ +``` + diff --git a/docs/components/formattext.mdx b/docs/components/formattext.mdx new file mode 100644 index 00000000..61d6f3b9 --- /dev/null +++ b/docs/components/formattext.mdx @@ -0,0 +1,9 @@ +--- +title: "FormatText" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `type` | [components.FormatTypeText](../components/formattypetext.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/formattextconfig.mdx b/docs/components/formattextconfig.mdx new file mode 100644 index 00000000..79867132 --- /dev/null +++ b/docs/components/formattextconfig.mdx @@ -0,0 +1,12 @@ +--- +title: "FormatTextConfig" +--- + +Plain text response format + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `type` | [components.FormatTextConfigType](../components/formattextconfigtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/formattextconfigtype.mdx b/docs/components/formattextconfigtype.mdx new file mode 100644 index 00000000..4d236211 --- /dev/null +++ b/docs/components/formattextconfigtype.mdx @@ -0,0 +1,15 @@ +--- +title: "FormatTextConfigType" +--- + +## Example Usage + +```python +from openrouter.components import FormatTextConfigType +value: FormatTextConfigType = "text" +``` + + +## Values + +- `"text"` diff --git a/docs/components/formattypegrammar.mdx b/docs/components/formattypegrammar.mdx new file mode 100644 index 00000000..d37196e6 --- /dev/null +++ b/docs/components/formattypegrammar.mdx @@ -0,0 +1,15 @@ +--- +title: "FormatTypeGrammar" +--- + +## Example Usage + +```python +from openrouter.components import FormatTypeGrammar +value: FormatTypeGrammar = "grammar" +``` + + +## Values + +- `"grammar"` diff --git a/docs/components/formattypetext.mdx b/docs/components/formattypetext.mdx new file mode 100644 index 00000000..ed61eec1 --- /dev/null +++ b/docs/components/formattypetext.mdx @@ -0,0 +1,15 @@ +--- +title: "FormatTypeText" +--- + +## Example Usage + +```python +from openrouter.components import FormatTypeText +value: FormatTypeText = "text" +``` + + +## Values + +- `"text"` diff --git a/docs/components/frameimage.mdx b/docs/components/frameimage.mdx new file mode 100644 index 00000000..46b4b985 --- /dev/null +++ b/docs/components/frameimage.mdx @@ -0,0 +1,11 @@ +--- +title: "FrameImage" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `image_url` | [components.FrameImageImageURL](../components/frameimageimageurl.mdx) | :heavy_check_mark: | N/A | | +| `type` | [components.FrameImageType](../components/frameimagetype.mdx) | :heavy_check_mark: | N/A | | +| `frame_type` | [components.FrameType](../components/frametype.mdx) | :heavy_check_mark: | Whether this image represents the first or last frame of the video | first_frame | \ No newline at end of file diff --git a/docs/components/frameimageimageurl.mdx b/docs/components/frameimageimageurl.mdx new file mode 100644 index 00000000..713a81f1 --- /dev/null +++ b/docs/components/frameimageimageurl.mdx @@ -0,0 +1,9 @@ +--- +title: "FrameImageImageURL" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `url` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/frameimagetype.mdx b/docs/components/frameimagetype.mdx new file mode 100644 index 00000000..a27b6a6f --- /dev/null +++ b/docs/components/frameimagetype.mdx @@ -0,0 +1,15 @@ +--- +title: "FrameImageType" +--- + +## Example Usage + +```python +from openrouter.components import FrameImageType +value: FrameImageType = "image_url" +``` + + +## Values + +- `"image_url"` diff --git a/docs/components/frametype.mdx b/docs/components/frametype.mdx new file mode 100644 index 00000000..7144b867 --- /dev/null +++ b/docs/components/frametype.mdx @@ -0,0 +1,22 @@ +--- +title: "FrameType" +--- + +Whether this image represents the first or last frame of the video + +## Example Usage + +```python +from openrouter.components import FrameType + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: FrameType = "first_frame" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"first_frame"` +- `"last_frame"` diff --git a/docs/components/functioncallargsdeltaevent.mdx b/docs/components/functioncallargsdeltaevent.mdx new file mode 100644 index 00000000..e28936ef --- /dev/null +++ b/docs/components/functioncallargsdeltaevent.mdx @@ -0,0 +1,16 @@ +--- +title: "FunctionCallArgsDeltaEvent" +--- + +Event emitted when function call arguments are being streamed + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `delta` | *str* | :heavy_check_mark: | N/A | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.FunctionCallArgsDeltaEventType](../components/functioncallargsdeltaeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/functioncallargsdeltaeventtype.mdx b/docs/components/functioncallargsdeltaeventtype.mdx new file mode 100644 index 00000000..27b17963 --- /dev/null +++ b/docs/components/functioncallargsdeltaeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "FunctionCallArgsDeltaEventType" +--- + +## Example Usage + +```python +from openrouter.components import FunctionCallArgsDeltaEventType +value: FunctionCallArgsDeltaEventType = "response.function_call_arguments.delta" +``` + + +## Values + +- `"response.function_call_arguments.delta"` diff --git a/docs/components/functioncallargsdoneevent.mdx b/docs/components/functioncallargsdoneevent.mdx new file mode 100644 index 00000000..acc25e39 --- /dev/null +++ b/docs/components/functioncallargsdoneevent.mdx @@ -0,0 +1,17 @@ +--- +title: "FunctionCallArgsDoneEvent" +--- + +Event emitted when function call arguments streaming is complete + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `arguments` | *str* | :heavy_check_mark: | N/A | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `name` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.FunctionCallArgsDoneEventType](../components/functioncallargsdoneeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/functioncallargsdoneeventtype.mdx b/docs/components/functioncallargsdoneeventtype.mdx new file mode 100644 index 00000000..da8e18a1 --- /dev/null +++ b/docs/components/functioncallargsdoneeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "FunctionCallArgsDoneEventType" +--- + +## Example Usage + +```python +from openrouter.components import FunctionCallArgsDoneEventType +value: FunctionCallArgsDoneEventType = "response.function_call_arguments.done" +``` + + +## Values + +- `"response.function_call_arguments.done"` diff --git a/docs/components/functioncallitem.mdx b/docs/components/functioncallitem.mdx new file mode 100644 index 00000000..f1082d73 --- /dev/null +++ b/docs/components/functioncallitem.mdx @@ -0,0 +1,18 @@ +--- +title: "FunctionCallItem" +--- + +A function call initiated by the model + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| `arguments` | *str* | :heavy_check_mark: | N/A | | +| `call_id` | *str* | :heavy_check_mark: | N/A | | +| `id` | *str* | :heavy_check_mark: | N/A | | +| `name` | *str* | :heavy_check_mark: | N/A | | +| `namespace` | *Optional[str]* | :heavy_minus_sign: | Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server) | | +| `status` | [Optional[components.ToolCallStatus]](../components/toolcallstatus.mdx) | :heavy_minus_sign: | N/A | completed | +| `type` | [components.FunctionCallItemType](../components/functioncallitemtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/functioncallitemtype.mdx b/docs/components/functioncallitemtype.mdx new file mode 100644 index 00000000..ebe7c453 --- /dev/null +++ b/docs/components/functioncallitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "FunctionCallItemType" +--- + +## Example Usage + +```python +from openrouter.components import FunctionCallItemType +value: FunctionCallItemType = "function_call" +``` + + +## Values + +- `"function_call"` diff --git a/docs/components/functioncalloutputitem.mdx b/docs/components/functioncalloutputitem.mdx new file mode 100644 index 00000000..f48aaeab --- /dev/null +++ b/docs/components/functioncalloutputitem.mdx @@ -0,0 +1,16 @@ +--- +title: "FunctionCallOutputItem" +--- + +The output from a function call execution + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `call_id` | *str* | :heavy_check_mark: | N/A | | +| `id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `output` | [components.FunctionCallOutputItemOutputUnion2](../components/functioncalloutputitemoutputunion2.mdx) | :heavy_check_mark: | N/A | | +| `status` | [OptionalNullable[components.FunctionCallOutputItemStatus]](../components/functioncalloutputitemstatus.mdx) | :heavy_minus_sign: | N/A | completed | +| `type` | [components.FunctionCallOutputItemTypeFunctionCallOutput](../components/functioncalloutputitemtypefunctioncalloutput.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/functioncalloutputitemdetail.mdx b/docs/components/functioncalloutputitemdetail.mdx new file mode 100644 index 00000000..086e8a67 --- /dev/null +++ b/docs/components/functioncalloutputitemdetail.mdx @@ -0,0 +1,22 @@ +--- +title: "FunctionCallOutputItemDetail" +--- + +## Example Usage + +```python +from openrouter.components import FunctionCallOutputItemDetail + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: FunctionCallOutputItemDetail = "auto" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"auto"` +- `"high"` +- `"low"` +- `"original"` diff --git a/docs/components/functioncalloutputitemoutputinputimage.mdx b/docs/components/functioncalloutputitemoutputinputimage.mdx new file mode 100644 index 00000000..55bb2225 --- /dev/null +++ b/docs/components/functioncalloutputitemoutputinputimage.mdx @@ -0,0 +1,14 @@ +--- +title: "FunctionCallOutputItemOutputInputImage" +--- + +Image input content item + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `detail` | [components.FunctionCallOutputItemDetail](../components/functioncalloutputitemdetail.mdx) | :heavy_check_mark: | N/A | +| `image_url` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `type` | [components.FunctionCallOutputItemTypeInputImage](../components/functioncalloutputitemtypeinputimage.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/functioncalloutputitemoutputunion1.mdx b/docs/components/functioncalloutputitemoutputunion1.mdx new file mode 100644 index 00000000..3cea7c43 --- /dev/null +++ b/docs/components/functioncalloutputitemoutputunion1.mdx @@ -0,0 +1,24 @@ +--- +title: "FunctionCallOutputItemOutputUnion1" +--- + +## Supported Types + +### `components.InputText` + +```python +value: components.InputText = /* values here */ +``` + +### `components.FunctionCallOutputItemOutputInputImage` + +```python +value: components.FunctionCallOutputItemOutputInputImage = /* values here */ +``` + +### `components.InputFile` + +```python +value: components.InputFile = /* values here */ +``` + diff --git a/docs/components/functioncalloutputitemoutputunion2.mdx b/docs/components/functioncalloutputitemoutputunion2.mdx new file mode 100644 index 00000000..92b4c4cc --- /dev/null +++ b/docs/components/functioncalloutputitemoutputunion2.mdx @@ -0,0 +1,18 @@ +--- +title: "FunctionCallOutputItemOutputUnion2" +--- + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `List[components.FunctionCallOutputItemOutputUnion1]` + +```python +value: List[components.FunctionCallOutputItemOutputUnion1] = /* values here */ +``` + diff --git a/docs/components/functioncalloutputitemstatus.mdx b/docs/components/functioncalloutputitemstatus.mdx new file mode 100644 index 00000000..870e40ce --- /dev/null +++ b/docs/components/functioncalloutputitemstatus.mdx @@ -0,0 +1,21 @@ +--- +title: "FunctionCallOutputItemStatus" +--- + +## Example Usage + +```python +from openrouter.components import FunctionCallOutputItemStatus + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: FunctionCallOutputItemStatus = "in_progress" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"in_progress"` +- `"completed"` +- `"incomplete"` diff --git a/docs/components/functioncalloutputitemtypefunctioncalloutput.mdx b/docs/components/functioncalloutputitemtypefunctioncalloutput.mdx new file mode 100644 index 00000000..7085d8cd --- /dev/null +++ b/docs/components/functioncalloutputitemtypefunctioncalloutput.mdx @@ -0,0 +1,15 @@ +--- +title: "FunctionCallOutputItemTypeFunctionCallOutput" +--- + +## Example Usage + +```python +from openrouter.components import FunctionCallOutputItemTypeFunctionCallOutput +value: FunctionCallOutputItemTypeFunctionCallOutput = "function_call_output" +``` + + +## Values + +- `"function_call_output"` diff --git a/docs/components/functioncalloutputitemtypeinputimage.mdx b/docs/components/functioncalloutputitemtypeinputimage.mdx new file mode 100644 index 00000000..eff3701c --- /dev/null +++ b/docs/components/functioncalloutputitemtypeinputimage.mdx @@ -0,0 +1,15 @@ +--- +title: "FunctionCallOutputItemTypeInputImage" +--- + +## Example Usage + +```python +from openrouter.components import FunctionCallOutputItemTypeInputImage +value: FunctionCallOutputItemTypeInputImage = "input_image" +``` + + +## Values + +- `"input_image"` diff --git a/docs/components/fusionanalysisresult.mdx b/docs/components/fusionanalysisresult.mdx new file mode 100644 index 00000000..461abd34 --- /dev/null +++ b/docs/components/fusionanalysisresult.mdx @@ -0,0 +1,16 @@ +--- +title: "FusionAnalysisResult" +--- + +Structured analysis produced by the fusion judge model. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `blind_spots` | List[*str*] | :heavy_check_mark: | N/A | +| `consensus` | List[*str*] | :heavy_check_mark: | N/A | +| `contradictions` | List[[components.Contradiction](../components/contradiction.mdx)] | :heavy_check_mark: | N/A | +| `partial_coverage` | List[[components.PartialCoverage](../components/partialcoverage.mdx)] | :heavy_check_mark: | N/A | +| `unique_insights` | List[[components.UniqueInsight](../components/uniqueinsight.mdx)] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/fusioncallanalysiscompletedevent.mdx b/docs/components/fusioncallanalysiscompletedevent.mdx new file mode 100644 index 00000000..dc3640ff --- /dev/null +++ b/docs/components/fusioncallanalysiscompletedevent.mdx @@ -0,0 +1,16 @@ +--- +title: "FusionCallAnalysisCompletedEvent" +--- + +Emitted when the fusion judge completes with the structured analysis. + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `analysis` | [components.FusionAnalysisResult](../components/fusionanalysisresult.mdx) | :heavy_check_mark: | Structured analysis produced by the fusion judge model. | \{
"blind_spots": [
"No model considered the impact on existing API consumers."
],
"consensus": [
"All panel models agree the request is asking for a concise summary."
],
"contradictions": [
\{
"stances": [
\{
"model": "openai/gpt-5",
"stance": "Favors an incremental rollout."
},
\{
"model": "anthropic/claude-sonnet-4.5",
"stance": "Favors a single coordinated migration."
}
],
"topic": "Recommended approach"
}
],
"partial_coverage": [
\{
"models": [
"openai/gpt-5"
],
"point": "Only one model addressed the rollback strategy."
}
],
"unique_insights": [
\{
"insight": "Highlighted a backwards-compatibility risk the other models missed.",
"model": "anthropic/claude-sonnet-4.5"
}
]
} | +| `item_id` | *str* | :heavy_check_mark: | N/A | | +| `output_index` | *int* | :heavy_check_mark: | N/A | | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | | +| `type` | [components.FusionCallAnalysisCompletedEventType](../components/fusioncallanalysiscompletedeventtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/fusioncallanalysiscompletedeventtype.mdx b/docs/components/fusioncallanalysiscompletedeventtype.mdx new file mode 100644 index 00000000..897efa69 --- /dev/null +++ b/docs/components/fusioncallanalysiscompletedeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "FusionCallAnalysisCompletedEventType" +--- + +## Example Usage + +```python +from openrouter.components import FusionCallAnalysisCompletedEventType +value: FusionCallAnalysisCompletedEventType = "response.fusion_call.analysis.completed" +``` + + +## Values + +- `"response.fusion_call.analysis.completed"` diff --git a/docs/components/fusioncallanalysisinprogressevent.mdx b/docs/components/fusioncallanalysisinprogressevent.mdx new file mode 100644 index 00000000..cd16c26c --- /dev/null +++ b/docs/components/fusioncallanalysisinprogressevent.mdx @@ -0,0 +1,16 @@ +--- +title: "FusionCallAnalysisInProgressEvent" +--- + +Emitted when the fusion judge starts producing the structured analysis. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `judge_model` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.FusionCallAnalysisInProgressEventType](../components/fusioncallanalysisinprogresseventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/fusioncallanalysisinprogresseventtype.mdx b/docs/components/fusioncallanalysisinprogresseventtype.mdx new file mode 100644 index 00000000..fb1d6412 --- /dev/null +++ b/docs/components/fusioncallanalysisinprogresseventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "FusionCallAnalysisInProgressEventType" +--- + +## Example Usage + +```python +from openrouter.components import FusionCallAnalysisInProgressEventType +value: FusionCallAnalysisInProgressEventType = "response.fusion_call.analysis.in_progress" +``` + + +## Values + +- `"response.fusion_call.analysis.in_progress"` diff --git a/docs/components/fusioncallcompletedevent.mdx b/docs/components/fusioncallcompletedevent.mdx new file mode 100644 index 00000000..40052448 --- /dev/null +++ b/docs/components/fusioncallcompletedevent.mdx @@ -0,0 +1,15 @@ +--- +title: "FusionCallCompletedEvent" +--- + +Emitted when the openrouter:fusion tool call finishes. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.FusionCallCompletedEventType](../components/fusioncallcompletedeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/fusioncallcompletedeventtype.mdx b/docs/components/fusioncallcompletedeventtype.mdx new file mode 100644 index 00000000..7061775b --- /dev/null +++ b/docs/components/fusioncallcompletedeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "FusionCallCompletedEventType" +--- + +## Example Usage + +```python +from openrouter.components import FusionCallCompletedEventType +value: FusionCallCompletedEventType = "response.fusion_call.completed" +``` + + +## Values + +- `"response.fusion_call.completed"` diff --git a/docs/components/fusioncallinprogressevent.mdx b/docs/components/fusioncallinprogressevent.mdx new file mode 100644 index 00000000..8f27a2d0 --- /dev/null +++ b/docs/components/fusioncallinprogressevent.mdx @@ -0,0 +1,15 @@ +--- +title: "FusionCallInProgressEvent" +--- + +Emitted when an openrouter:fusion tool call begins executing. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.FusionCallInProgressEventType](../components/fusioncallinprogresseventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/fusioncallinprogresseventtype.mdx b/docs/components/fusioncallinprogresseventtype.mdx new file mode 100644 index 00000000..eec9b0a3 --- /dev/null +++ b/docs/components/fusioncallinprogresseventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "FusionCallInProgressEventType" +--- + +## Example Usage + +```python +from openrouter.components import FusionCallInProgressEventType +value: FusionCallInProgressEventType = "response.fusion_call.in_progress" +``` + + +## Values + +- `"response.fusion_call.in_progress"` diff --git a/docs/components/fusioncallpaneladdedevent.mdx b/docs/components/fusioncallpaneladdedevent.mdx new file mode 100644 index 00000000..260884b7 --- /dev/null +++ b/docs/components/fusioncallpaneladdedevent.mdx @@ -0,0 +1,16 @@ +--- +title: "FusionCallPanelAddedEvent" +--- + +Emitted when a fusion analysis-panel model starts. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `model` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.FusionCallPanelAddedEventType](../components/fusioncallpaneladdedeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/fusioncallpaneladdedeventtype.mdx b/docs/components/fusioncallpaneladdedeventtype.mdx new file mode 100644 index 00000000..a2c25843 --- /dev/null +++ b/docs/components/fusioncallpaneladdedeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "FusionCallPanelAddedEventType" +--- + +## Example Usage + +```python +from openrouter.components import FusionCallPanelAddedEventType +value: FusionCallPanelAddedEventType = "response.fusion_call.panel.added" +``` + + +## Values + +- `"response.fusion_call.panel.added"` diff --git a/docs/components/fusioncallpanelcompletedevent.mdx b/docs/components/fusioncallpanelcompletedevent.mdx new file mode 100644 index 00000000..1d115a6a --- /dev/null +++ b/docs/components/fusioncallpanelcompletedevent.mdx @@ -0,0 +1,17 @@ +--- +title: "FusionCallPanelCompletedEvent" +--- + +Emitted when a fusion panel model finishes with its full content. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `content` | *str* | :heavy_check_mark: | N/A | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `model` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.FusionCallPanelCompletedEventType](../components/fusioncallpanelcompletedeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/fusioncallpanelcompletedeventtype.mdx b/docs/components/fusioncallpanelcompletedeventtype.mdx new file mode 100644 index 00000000..1cfc97de --- /dev/null +++ b/docs/components/fusioncallpanelcompletedeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "FusionCallPanelCompletedEventType" +--- + +## Example Usage + +```python +from openrouter.components import FusionCallPanelCompletedEventType +value: FusionCallPanelCompletedEventType = "response.fusion_call.panel.completed" +``` + + +## Values + +- `"response.fusion_call.panel.completed"` diff --git a/docs/components/fusioncallpaneldeltaevent.mdx b/docs/components/fusioncallpaneldeltaevent.mdx new file mode 100644 index 00000000..3f8a569b --- /dev/null +++ b/docs/components/fusioncallpaneldeltaevent.mdx @@ -0,0 +1,17 @@ +--- +title: "FusionCallPanelDeltaEvent" +--- + +Incremental content token from a fusion panel model. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `delta` | *str* | :heavy_check_mark: | N/A | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `model` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.FusionCallPanelDeltaEventType](../components/fusioncallpaneldeltaeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/fusioncallpaneldeltaeventtype.mdx b/docs/components/fusioncallpaneldeltaeventtype.mdx new file mode 100644 index 00000000..1d067fe0 --- /dev/null +++ b/docs/components/fusioncallpaneldeltaeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "FusionCallPanelDeltaEventType" +--- + +## Example Usage + +```python +from openrouter.components import FusionCallPanelDeltaEventType +value: FusionCallPanelDeltaEventType = "response.fusion_call.panel.delta" +``` + + +## Values + +- `"response.fusion_call.panel.delta"` diff --git a/docs/components/fusioncallpanelfailedevent.mdx b/docs/components/fusioncallpanelfailedevent.mdx new file mode 100644 index 00000000..a6c9fa53 --- /dev/null +++ b/docs/components/fusioncallpanelfailedevent.mdx @@ -0,0 +1,18 @@ +--- +title: "FusionCallPanelFailedEvent" +--- + +Emitted when a fusion panel model fails. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `error` | *str* | :heavy_check_mark: | N/A | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `model` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `status_code` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `type` | [components.FusionCallPanelFailedEventType](../components/fusioncallpanelfailedeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/fusioncallpanelfailedeventtype.mdx b/docs/components/fusioncallpanelfailedeventtype.mdx new file mode 100644 index 00000000..4ccbf574 --- /dev/null +++ b/docs/components/fusioncallpanelfailedeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "FusionCallPanelFailedEventType" +--- + +## Example Usage + +```python +from openrouter.components import FusionCallPanelFailedEventType +value: FusionCallPanelFailedEventType = "response.fusion_call.panel.failed" +``` + + +## Values + +- `"response.fusion_call.panel.failed"` diff --git a/docs/components/fusioncallpanelreasoningdeltaevent.mdx b/docs/components/fusioncallpanelreasoningdeltaevent.mdx new file mode 100644 index 00000000..a25d4c0e --- /dev/null +++ b/docs/components/fusioncallpanelreasoningdeltaevent.mdx @@ -0,0 +1,17 @@ +--- +title: "FusionCallPanelReasoningDeltaEvent" +--- + +Incremental reasoning token from a fusion panel model. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `delta` | *str* | :heavy_check_mark: | N/A | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `model` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.FusionCallPanelReasoningDeltaEventType](../components/fusioncallpanelreasoningdeltaeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/fusioncallpanelreasoningdeltaeventtype.mdx b/docs/components/fusioncallpanelreasoningdeltaeventtype.mdx new file mode 100644 index 00000000..7b7d7a35 --- /dev/null +++ b/docs/components/fusioncallpanelreasoningdeltaeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "FusionCallPanelReasoningDeltaEventType" +--- + +## Example Usage + +```python +from openrouter.components import FusionCallPanelReasoningDeltaEventType +value: FusionCallPanelReasoningDeltaEventType = "response.fusion_call.panel.reasoning.delta" +``` + + +## Values + +- `"response.fusion_call.panel.reasoning.delta"` diff --git a/docs/components/fusionplugin.mdx b/docs/components/fusionplugin.mdx new file mode 100644 index 00000000..47df2cd7 --- /dev/null +++ b/docs/components/fusionplugin.mdx @@ -0,0 +1,15 @@ +--- +title: "FusionPlugin" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `analysis_models` | List[*str*] | :heavy_minus_sign: | Slugs of models to run in parallel as the "expert panel" the judge analyzes. Each model receives the same user prompt with web_search + web_fetch enabled. Capped at 8 models to bound cost amplification. When omitted, defaults to the Quality preset from the /labs/fusion UI (~anthropic/claude-opus-latest, ~openai/gpt-latest, ~google/gemini-pro-latest). | [
"~anthropic/claude-opus-latest",
"~openai/gpt-latest",
"~google/gemini-pro-latest"
] | +| `enabled` | *Optional[bool]* | :heavy_minus_sign: | Set to false to disable the fusion plugin for this request. Defaults to true. | | +| `id` | [components.FusionPluginID](../components/fusionpluginid.mdx) | :heavy_check_mark: | N/A | | +| `max_tool_calls` | *Optional[int]* | :heavy_minus_sign: | Maximum number of tool-calling steps each panelist (analysis model) and the judge model may take during their agentic web-research loop. Models with web_search/web_fetch enabled iterate until they produce a text response or hit this ceiling. Defaults to 8. Capped at 16. | 12 | +| `model` | *Optional[str]* | :heavy_minus_sign: | Slug of the model that performs both the judge step (with web_search + web_fetch) and the final synthesis. When omitted, defaults to the first model in the Quality preset. | ~anthropic/claude-opus-latest | +| `preset` | [Optional[components.PresetEnum]](../components/presetenum.mdx) | :heavy_minus_sign: | A curated OpenRouter fusion preset (slugs follow `-`, e.g. `general-high`). Expands server-side into the preset's analysis_models panel and judge model, so callers never name individual models. Explicitly provided `analysis_models` / `model` take precedence. | general-high | +| `tools` | List[[components.FusionPluginTool](../components/fusionplugintool.mdx)] | :heavy_minus_sign: | Server tools available to panelist and judge inner calls. Each entry uses the same `{ type, parameters? }` shorthand as the outer Chat Completions request. When omitted, defaults to `[{ type: "openrouter:web_search" }, { type: "openrouter:web_fetch" }]`. Pass an empty array to disable tools entirely (panelists answer from parametric knowledge only). | [
\{
"parameters": \{
"excluded_domains": [
"example.com"
]
},
"type": "openrouter:web_search"
},
\{
"type": "openrouter:web_fetch"
}
] | \ No newline at end of file diff --git a/docs/components/fusionpluginid.mdx b/docs/components/fusionpluginid.mdx new file mode 100644 index 00000000..07ef9cfd --- /dev/null +++ b/docs/components/fusionpluginid.mdx @@ -0,0 +1,15 @@ +--- +title: "FusionPluginID" +--- + +## Example Usage + +```python +from openrouter.components import FusionPluginID +value: FusionPluginID = "fusion" +``` + + +## Values + +- `"fusion"` diff --git a/docs/components/fusionplugintool.mdx b/docs/components/fusionplugintool.mdx new file mode 100644 index 00000000..3c29bc4b --- /dev/null +++ b/docs/components/fusionplugintool.mdx @@ -0,0 +1,10 @@ +--- +title: "FusionPluginTool" +--- + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `parameters` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | Optional configuration forwarded as the tool's `parameters` object. | +| `type` | *str* | :heavy_check_mark: | Server tool type identifier (e.g. "openrouter:web_search", "openrouter:web_fetch"). | \ No newline at end of file diff --git a/docs/components/fusionservertoolconfig.mdx b/docs/components/fusionservertoolconfig.mdx new file mode 100644 index 00000000..68527081 --- /dev/null +++ b/docs/components/fusionservertoolconfig.mdx @@ -0,0 +1,19 @@ +--- +title: "FusionServerToolConfig" +--- + +Configuration for the openrouter:fusion server tool. + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `analysis_models` | List[*str*] | :heavy_minus_sign: | Slugs of models to run in parallel as the analysis panel. Each model receives the user prompt with openrouter:web_search and openrouter:web_fetch enabled, then a judge model summarizes the collective output into structured analysis JSON. Capped at 8 models to bound cost amplification. Defaults to the Quality preset from /labs/fusion. | [
"~anthropic/claude-opus-latest",
"~openai/gpt-latest",
"~google/gemini-pro-latest"
] | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `max_completion_tokens` | *Optional[int]* | :heavy_minus_sign: | Maximum number of output tokens (including reasoning tokens) each panelist and the judge model may produce per inner call. Controls the total output budget so reasoning-heavy models like GPT-5.5 do not exhaust their token allowance before producing visible text. When omitted, the provider's default applies. | 16384 | +| `max_tool_calls` | *Optional[int]* | :heavy_minus_sign: | Maximum number of tool-calling steps each panelist (analysis model) and the judge model may take during their agentic web-research loop. Models with web_search/web_fetch enabled iterate until they produce a text response or hit this ceiling. Defaults to 8. Capped at 16. | 12 | +| `model` | *Optional[str]* | :heavy_minus_sign: | Slug of the judge model that produces the structured analysis JSON. Defaults to the model used in the outer API request. | ~anthropic/claude-opus-latest | +| `reasoning` | [Optional[components.FusionServerToolConfigReasoning]](../components/fusionservertoolconfigreasoning.mdx) | :heavy_minus_sign: | Reasoning configuration forwarded to panelist and judge inner calls. Use this to control reasoning effort and token budget for models that support extended thinking. | | +| `temperature` | *Optional[float]* | :heavy_minus_sign: | Temperature forwarded to panelist inner calls. The judge always runs at temperature 0 regardless of this value. When omitted, the provider's default applies. | 0.7 | +| `tools` | List[[components.FusionServerToolConfigTool](../components/fusionservertoolconfigtool.mdx)] | :heavy_minus_sign: | Server tools available to panelist and judge inner calls. Each entry uses the same `{ type, parameters? }` shorthand as the outer Chat Completions request. When omitted, defaults to `[{ type: "openrouter:web_search" }, { type: "openrouter:web_fetch" }]`. Pass an empty array to disable tools entirely (panelists answer from parametric knowledge only). | [
\{
"parameters": \{
"excluded_domains": [
"example.com"
]
},
"type": "openrouter:web_search"
},
\{
"type": "openrouter:web_fetch"
}
] | \ No newline at end of file diff --git a/docs/components/fusionservertoolconfigeffort.mdx b/docs/components/fusionservertoolconfigeffort.mdx new file mode 100644 index 00000000..8ba9e2e9 --- /dev/null +++ b/docs/components/fusionservertoolconfigeffort.mdx @@ -0,0 +1,27 @@ +--- +title: "FusionServerToolConfigEffort" +--- + +Reasoning effort level for panelist and judge inner calls. + +## Example Usage + +```python +from openrouter.components import FusionServerToolConfigEffort + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: FusionServerToolConfigEffort = "max" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"max"` +- `"xhigh"` +- `"high"` +- `"medium"` +- `"low"` +- `"minimal"` +- `"none"` diff --git a/docs/components/fusionservertoolconfigreasoning.mdx b/docs/components/fusionservertoolconfigreasoning.mdx new file mode 100644 index 00000000..af7105ba --- /dev/null +++ b/docs/components/fusionservertoolconfigreasoning.mdx @@ -0,0 +1,13 @@ +--- +title: "FusionServerToolConfigReasoning" +--- + +Reasoning configuration forwarded to panelist and judge inner calls. Use this to control reasoning effort and token budget for models that support extended thinking. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `effort` | [Optional[components.FusionServerToolConfigEffort]](../components/fusionservertoolconfigeffort.mdx) | :heavy_minus_sign: | Reasoning effort level for panelist and judge inner calls. | +| `max_tokens` | *Optional[int]* | :heavy_minus_sign: | Maximum number of reasoning tokens each panelist and judge model may use. Helps bound cost when models allocate too much budget to chain-of-thought. | \ No newline at end of file diff --git a/docs/components/fusionservertoolconfigtool.mdx b/docs/components/fusionservertoolconfigtool.mdx new file mode 100644 index 00000000..ec79aaa4 --- /dev/null +++ b/docs/components/fusionservertoolconfigtool.mdx @@ -0,0 +1,10 @@ +--- +title: "FusionServerToolConfigTool" +--- + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `parameters` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | Optional configuration forwarded as the tool's `parameters` object. | +| `type` | *str* | :heavy_check_mark: | Server tool type identifier (e.g. "openrouter:web_search", "openrouter:web_fetch"). | \ No newline at end of file diff --git a/docs/components/fusionservertoolopenrouter.mdx b/docs/components/fusionservertoolopenrouter.mdx new file mode 100644 index 00000000..6f4149fb --- /dev/null +++ b/docs/components/fusionservertoolopenrouter.mdx @@ -0,0 +1,13 @@ +--- +title: "FusionServerToolOpenRouter" +--- + +OpenRouter built-in server tool: fans out the user prompt to a panel of analysis models, then asks a judge model to summarize their collective output as structured JSON the outer model can synthesize from. + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| `parameters` | [Optional[components.FusionServerToolConfig]](../components/fusionservertoolconfig.mdx) | :heavy_minus_sign: | Configuration for the openrouter:fusion server tool. | \{
"analysis_models": [
"~anthropic/claude-opus-latest",
"~openai/gpt-latest",
"~google/gemini-pro-latest"
]
} | +| `type` | [components.FusionServerToolOpenRouterType](../components/fusionservertoolopenroutertype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/fusionservertoolopenroutertype.mdx b/docs/components/fusionservertoolopenroutertype.mdx new file mode 100644 index 00000000..51199c32 --- /dev/null +++ b/docs/components/fusionservertoolopenroutertype.mdx @@ -0,0 +1,15 @@ +--- +title: "FusionServerToolOpenRouterType" +--- + +## Example Usage + +```python +from openrouter.components import FusionServerToolOpenRouterType +value: FusionServerToolOpenRouterType = "openrouter:fusion" +``` + + +## Values + +- `"openrouter:fusion"` diff --git a/docs/components/fusionsource.mdx b/docs/components/fusionsource.mdx new file mode 100644 index 00000000..b305413e --- /dev/null +++ b/docs/components/fusionsource.mdx @@ -0,0 +1,13 @@ +--- +title: "FusionSource" +--- + +A web page retrieved via web search during a fusion run. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `title` | *str* | :heavy_check_mark: | Title of the retrieved web page. | +| `url` | *str* | :heavy_check_mark: | URL of the web page a panel or the judge retrieved during the run. | \ No newline at end of file diff --git a/docs/components/generationcontentdata.mdx b/docs/components/generationcontentdata.mdx new file mode 100644 index 00000000..1e4a22a0 --- /dev/null +++ b/docs/components/generationcontentdata.mdx @@ -0,0 +1,13 @@ +--- +title: "GenerationContentData" +--- + +Stored prompt and completion content + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `input` | [components.InputUnion](../components/inputunion.mdx) | :heavy_check_mark: | The input to the generation — either a prompt string or an array of messages | +| `output` | [components.GenerationContentDataOutput](../components/generationcontentdataoutput.mdx) | :heavy_check_mark: | The output from the generation | \ No newline at end of file diff --git a/docs/components/generationcontentdataoutput.mdx b/docs/components/generationcontentdataoutput.mdx new file mode 100644 index 00000000..d497eb12 --- /dev/null +++ b/docs/components/generationcontentdataoutput.mdx @@ -0,0 +1,13 @@ +--- +title: "GenerationContentDataOutput" +--- + +The output from the generation + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `completion` | *Nullable[str]* | :heavy_check_mark: | The completion output | The meaning of life is a philosophical question... | +| `reasoning` | *Nullable[str]* | :heavy_check_mark: | Reasoning/thinking output, if any | null | \ No newline at end of file diff --git a/docs/components/generationcontentresponse.mdx b/docs/components/generationcontentresponse.mdx new file mode 100644 index 00000000..e214221d --- /dev/null +++ b/docs/components/generationcontentresponse.mdx @@ -0,0 +1,12 @@ +--- +title: "GenerationContentResponse" +--- + +Stored prompt and completion content for a generation + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [components.GenerationContentData](../components/generationcontentdata.mdx) | :heavy_check_mark: | Stored prompt and completion content | \{
"input": \{
"messages": [
\{
"content": "What is the meaning of life?",
"role": "user"
}
]
},
"output": \{
"completion": "The meaning of life is a philosophical question...",
"reasoning": null
}
} | \ No newline at end of file diff --git a/docs/components/generationresponse.mdx b/docs/components/generationresponse.mdx new file mode 100644 index 00000000..b876dce8 --- /dev/null +++ b/docs/components/generationresponse.mdx @@ -0,0 +1,12 @@ +--- +title: "GenerationResponse" +--- + +Generation response + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `data` | [components.GenerationResponseData](../components/generationresponsedata.mdx) | :heavy_check_mark: | Generation data | \ No newline at end of file diff --git a/docs/components/generationresponsedata.mdx b/docs/components/generationresponsedata.mdx new file mode 100644 index 00000000..6dfd6191 --- /dev/null +++ b/docs/components/generationresponsedata.mdx @@ -0,0 +1,55 @@ +--- +title: "GenerationResponseData" +--- + +Generation data + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `api_type` | [Nullable[components.APIType]](../components/apitype.mdx) | :heavy_check_mark: | Type of API used for the generation | | +| `app_id` | *Nullable[int]* | :heavy_check_mark: | ID of the app that made the request | 12345 | +| `cache_discount` | *Nullable[float]* | :heavy_check_mark: | Discount applied due to caching | 0.0002 | +| `cancelled` | *Nullable[bool]* | :heavy_check_mark: | Whether the generation was cancelled | false | +| `created_at` | *str* | :heavy_check_mark: | ISO 8601 timestamp of when the generation was created | 2024-07-15T23:33:19.433273+00:00 | +| `data_region` | [components.DataRegion](../components/dataregion.mdx) | :heavy_check_mark: | The data region this generation was routed through. 'europe' for EU-routed requests, 'global' otherwise. | global | +| `external_user` | *Nullable[str]* | :heavy_check_mark: | External user identifier | user-123 | +| `finish_reason` | *Nullable[str]* | :heavy_check_mark: | Reason the generation finished | stop | +| `generation_time` | *Nullable[float]* | :heavy_check_mark: | Time taken for generation in milliseconds | 1200 | +| `http_referer` | *Nullable[str]* | :heavy_check_mark: | Referer header from the request | | +| `id` | *str* | :heavy_check_mark: | Unique identifier for the generation | gen-3bhGkxlo4XFrqiabUM7NDtwDzWwG | +| `is_byok` | *bool* | :heavy_check_mark: | Whether this used bring-your-own-key | false | +| `latency` | *Nullable[float]* | :heavy_check_mark: | Total latency in milliseconds | 1250 | +| `model` | *str* | :heavy_check_mark: | Model used for the generation | sao10k/l3-stheno-8b | +| `moderation_latency` | *Nullable[float]* | :heavy_check_mark: | Moderation latency in milliseconds | 50 | +| `native_finish_reason` | *Nullable[str]* | :heavy_check_mark: | Native finish reason as reported by provider | stop | +| `native_tokens_cached` | *Nullable[int]* | :heavy_check_mark: | Native cached tokens as reported by provider | 3 | +| `native_tokens_completion` | *Nullable[int]* | :heavy_check_mark: | Native completion tokens as reported by provider | 25 | +| `native_tokens_completion_images` | *Nullable[int]* | :heavy_check_mark: | Native completion image tokens as reported by provider | 0 | +| `native_tokens_prompt` | *Nullable[int]* | :heavy_check_mark: | Native prompt tokens as reported by provider | 10 | +| `native_tokens_reasoning` | *Nullable[int]* | :heavy_check_mark: | Native reasoning tokens as reported by provider | 5 | +| `num_fetches` | *Nullable[int]* | :heavy_check_mark: | Number of web fetches performed | 0 | +| `num_input_audio_prompt` | *Nullable[int]* | :heavy_check_mark: | Number of audio inputs in the prompt | 0 | +| `num_media_completion` | *Nullable[int]* | :heavy_check_mark: | Number of media items in the completion | 0 | +| `num_media_prompt` | *Nullable[int]* | :heavy_check_mark: | Number of media items in the prompt | 1 | +| `num_search_results` | *Nullable[int]* | :heavy_check_mark: | Number of search results included | 5 | +| `origin` | *str* | :heavy_check_mark: | Origin URL of the request | https://openrouter.ai/ | +| `preset_id` | *Nullable[str]* | :heavy_check_mark: | ID of the preset used for this generation, null if no preset was used | a9e8d400-592a-494f-908c-375efa66cafd | +| `provider_name` | *Nullable[str]* | :heavy_check_mark: | Name of the provider that served the request | Infermatic | +| `provider_responses` | List[[components.ProviderResponse](../components/providerresponse.mdx)] | :heavy_check_mark: | List of provider responses for this generation, including fallback attempts | | +| `request_id` | *OptionalNullable[str]* | :heavy_minus_sign: | Unique identifier grouping all generations from a single API request | req-1727282430-aBcDeFgHiJkLmNoPqRsT | +| `response_cache_source_id` | *OptionalNullable[str]* | :heavy_minus_sign: | If this generation was served from response cache, contains the original generation ID. Null otherwise. | | +| `router` | *Nullable[str]* | :heavy_check_mark: | Router used for the request (e.g., openrouter/auto) | openrouter/auto | +| `service_tier` | *Nullable[str]* | :heavy_check_mark: | Service tier the upstream provider reported running this request on, or null if it did not report one. | priority | +| `session_id` | *OptionalNullable[str]* | :heavy_minus_sign: | Session identifier grouping multiple generations in the same session | | +| `streamed` | *Nullable[bool]* | :heavy_check_mark: | Whether the response was streamed | true | +| `tokens_completion` | *Nullable[int]* | :heavy_check_mark: | Number of tokens in the completion | 25 | +| `tokens_prompt` | *Nullable[int]* | :heavy_check_mark: | Number of tokens in the prompt | 10 | +| `total_cost` | *float* | :heavy_check_mark: | Total cost of the generation in USD | 0.0015 | +| `upstream_id` | *Nullable[str]* | :heavy_check_mark: | Upstream provider's identifier for this generation | chatcmpl-791bcf62-080e-4568-87d0-94c72e3b4946 | +| `upstream_inference_cost` | *Nullable[float]* | :heavy_check_mark: | Cost charged by the upstream provider | 0.0012 | +| `usage` | *float* | :heavy_check_mark: | Usage amount in USD | 0.0015 | +| `user_agent` | *Nullable[str]* | :heavy_check_mark: | User-Agent header from the request | | +| `web_search_engine` | *Nullable[str]* | :heavy_check_mark: | The resolved web search engine used for this generation (e.g. exa, firecrawl, parallel) | exa | \ No newline at end of file diff --git a/docs/components/getbyokkeyresponse.mdx b/docs/components/getbyokkeyresponse.mdx new file mode 100644 index 00000000..5730056a --- /dev/null +++ b/docs/components/getbyokkeyresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "GetBYOKKeyResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `data` | [components.BYOKKey](../components/byokkey.mdx) | :heavy_check_mark: | N/A | \{
"allowed_api_key_hashes": null,
"allowed_models": null,
"allowed_user_ids": null,
"created_at": "2025-08-24T10:30:00Z",
"disabled": false,
"id": "11111111-2222-3333-4444-555555555555",
"is_fallback": false,
"label": "sk-...AbCd",
"name": "Production OpenAI Key",
"provider": "openai",
"sort_order": 0,
"workspace_id": "550e8400-e29b-41d4-a716-446655440000"
} | \ No newline at end of file diff --git a/docs/components/getguardrailresponse.mdx b/docs/components/getguardrailresponse.mdx new file mode 100644 index 00000000..7a49600a --- /dev/null +++ b/docs/components/getguardrailresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "GetGuardrailResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [components.Guardrail](../components/guardrail.mdx) | :heavy_check_mark: | N/A | \{
"allowed_models": null,
"allowed_providers": [
"openai",
"anthropic",
"google"
],
"content_filter_builtins": [
\{
"action": "redact",
"label": "[EMAIL]",
"slug": "email"
}
],
"content_filters": null,
"created_at": "2025-08-24T10:30:00Z",
"description": "Guardrail for production environment",
"enforce_zdr": null,
"enforce_zdr_anthropic": true,
"enforce_zdr_google": false,
"enforce_zdr_openai": true,
"enforce_zdr_other": false,
"id": "550e8400-e29b-41d4-a716-446655440000",
"ignored_models": null,
"ignored_providers": null,
"limit_usd": 100,
"name": "Production Guardrail",
"reset_interval": "monthly",
"updated_at": "2025-08-24T15:45:00Z",
"workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"
} | \ No newline at end of file diff --git a/docs/components/getobservabilitydestinationresponse.mdx b/docs/components/getobservabilitydestinationresponse.mdx new file mode 100644 index 00000000..efce02e6 --- /dev/null +++ b/docs/components/getobservabilitydestinationresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "GetObservabilityDestinationResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [components.ObservabilityDestination](../components/observabilitydestination.mdx) | :heavy_check_mark: | N/A | \{
"api_key_hashes": null,
"config": \{
"baseUrl": "https://us.cloud.langfuse.com",
"publicKey": "pk-l...EfGh",
"secretKey": "sk-l...AbCd"
},
"created_at": "2025-08-24T10:30:00Z",
"enabled": true,
"filter_rules": null,
"id": "99999999-aaaa-bbbb-cccc-dddddddddddd",
"name": "Production Langfuse",
"privacy_mode": false,
"sampling_rate": 1,
"type": "langfuse",
"updated_at": "2025-08-24T15:45:00Z",
"workspace_id": "550e8400-e29b-41d4-a716-446655440000"
} | \ No newline at end of file diff --git a/docs/components/getpresetresponse.mdx b/docs/components/getpresetresponse.mdx new file mode 100644 index 00000000..2af502a1 --- /dev/null +++ b/docs/components/getpresetresponse.mdx @@ -0,0 +1,12 @@ +--- +title: "GetPresetResponse" +--- + +A preset with its currently designated version. + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [components.PresetWithDesignatedVersion](../components/presetwithdesignatedversion.mdx) | :heavy_check_mark: | A preset with its currently designated version. | \{
"created_at": "2026-04-20T10:00:00Z",
"creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000",
"description": null,
"designated_version": \{
"config": \{
"model": "openai/gpt-4o",
"temperature": 0.7
},
"created_at": "2026-04-20T10:00:00Z",
"creator_id": "user_2dHFtVWx2n56w6HkM0000000000",
"id": "550e8400-e29b-41d4-a716-446655440000",
"preset_id": "650e8400-e29b-41d4-a716-446655440001",
"system_prompt": "You are a helpful assistant.",
"updated_at": "2026-04-20T10:00:00Z",
"version": 1
},
"designated_version_id": "550e8400-e29b-41d4-a716-446655440000",
"id": "650e8400-e29b-41d4-a716-446655440001",
"name": "my-preset",
"slug": "my-preset",
"status": "active",
"status_updated_at": null,
"updated_at": "2026-04-20T10:00:00Z",
"workspace_id": "750e8400-e29b-41d4-a716-446655440002"
} | \ No newline at end of file diff --git a/docs/components/getpresetversionresponse.mdx b/docs/components/getpresetversionresponse.mdx new file mode 100644 index 00000000..6c304028 --- /dev/null +++ b/docs/components/getpresetversionresponse.mdx @@ -0,0 +1,12 @@ +--- +title: "GetPresetVersionResponse" +--- + +A single version of a preset. + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [Nullable[components.PresetDesignatedVersion]](../components/presetdesignatedversion.mdx) | :heavy_check_mark: | A specific version of a preset, containing config and optional system prompt. | \{
"config": \{
"model": "openai/gpt-4o",
"temperature": 0.7
},
"created_at": "2026-04-20T10:00:00Z",
"creator_id": "user_2dHFtVWx2n56w6HkM0000000000",
"id": "550e8400-e29b-41d4-a716-446655440000",
"preset_id": "650e8400-e29b-41d4-a716-446655440001",
"system_prompt": "You are a helpful assistant.",
"updated_at": "2026-04-20T10:00:00Z",
"version": 1
} | \ No newline at end of file diff --git a/docs/components/getworkspaceresponse.mdx b/docs/components/getworkspaceresponse.mdx new file mode 100644 index 00000000..bb16c1fd --- /dev/null +++ b/docs/components/getworkspaceresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "GetWorkspaceResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [components.Workspace](../components/workspace.mdx) | :heavy_check_mark: | N/A | \{
"created_at": "2025-08-24T10:30:00Z",
"created_by": "user_abc123",
"default_image_model": "openai/dall-e-3",
"default_provider_sort": "price",
"default_text_model": "openai/gpt-4o",
"description": "Production environment workspace",
"id": "550e8400-e29b-41d4-a716-446655440000",
"io_logging_api_key_ids": null,
"io_logging_sampling_rate": 1,
"is_data_discount_logging_enabled": true,
"is_observability_broadcast_enabled": false,
"is_observability_io_logging_enabled": false,
"name": "Production",
"slug": "production",
"updated_at": "2025-08-24T15:45:00Z"
} | \ No newline at end of file diff --git a/docs/components/group.mdx b/docs/components/group.mdx new file mode 100644 index 00000000..34495da0 --- /dev/null +++ b/docs/components/group.mdx @@ -0,0 +1,10 @@ +--- +title: "Group" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | +| `logic` | [Optional[components.Logic]](../components/logic.mdx) | :heavy_minus_sign: | N/A | +| `rules` | List[[components.Rule](../components/rule.mdx)] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/guardrail.mdx b/docs/components/guardrail.mdx new file mode 100644 index 00000000..dc72fbb1 --- /dev/null +++ b/docs/components/guardrail.mdx @@ -0,0 +1,27 @@ +--- +title: "Guardrail" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `allowed_models` | List[*str*] | :heavy_minus_sign: | Array of model canonical_slugs (immutable identifiers) | [
"openai/gpt-5.2-20251211",
"anthropic/claude-4.5-opus-20251124",
"deepseek/deepseek-r1-0528:free"
] | +| `allowed_providers` | List[*str*] | :heavy_minus_sign: | List of allowed provider IDs | [
"openai",
"anthropic",
"google"
] | +| `content_filter_builtins` | List[[components.ContentFilterBuiltinEntry](../components/contentfilterbuiltinentry.mdx)] | :heavy_minus_sign: | Builtin content filters applied to requests. Includes PII detectors and the regex-based prompt injection detector. | [
\{
"action": "redact",
"label": "[EMAIL]",
"slug": "email"
}
] | +| `content_filters` | List[[components.ContentFilterEntry](../components/contentfilterentry.mdx)] | :heavy_minus_sign: | Custom regex content filters applied to request messages | [
\{
"action": "redact",
"label": "[API_KEY]",
"pattern": "\\b(sk-[a-zA-Z0-9]\{48})\\b"
}
] | +| `created_at` | *str* | :heavy_check_mark: | ISO 8601 timestamp of when the guardrail was created | 2025-08-24T10:30:00Z | +| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | Description of the guardrail | Guardrail for production environment | +| ~~`enforce_zdr`~~ | *OptionalNullable[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Deprecated. Use enforce_zdr_anthropic, enforce_zdr_openai, enforce_zdr_google, and enforce_zdr_other instead. When provided, its value is copied into any of those per-provider fields that are not explicitly specified on the request. | false | +| `enforce_zdr_anthropic` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to enforce zero data retention for Anthropic models. Falls back to enforce_zdr when not provided. | false | +| `enforce_zdr_google` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to enforce zero data retention for Google models. Falls back to enforce_zdr when not provided. | false | +| `enforce_zdr_openai` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to enforce zero data retention for OpenAI models. Falls back to enforce_zdr when not provided. | false | +| `enforce_zdr_other` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to enforce zero data retention for models that are not from Anthropic, OpenAI, or Google. Falls back to enforce_zdr when not provided. | false | +| `id` | *str* | :heavy_check_mark: | Unique identifier for the guardrail | 550e8400-e29b-41d4-a716-446655440000 | +| `ignored_models` | List[*str*] | :heavy_minus_sign: | Array of model canonical_slugs to exclude from routing | [
"openai/gpt-4o-mini-2024-07-18"
] | +| `ignored_providers` | List[*str*] | :heavy_minus_sign: | List of provider IDs to exclude from routing | [
"azure"
] | +| `limit_usd` | *OptionalNullable[float]* | :heavy_minus_sign: | Spending limit in USD | 100 | +| `name` | *str* | :heavy_check_mark: | Name of the guardrail | Production Guardrail | +| `reset_interval` | [OptionalNullable[components.GuardrailInterval]](../components/guardrailinterval.mdx) | :heavy_minus_sign: | Interval at which the limit resets (daily, weekly, monthly) | monthly | +| `updated_at` | *OptionalNullable[str]* | :heavy_minus_sign: | ISO 8601 timestamp of when the guardrail was last updated | 2025-08-24T15:45:00Z | +| `workspace_id` | *str* | :heavy_check_mark: | The workspace ID this guardrail belongs to. | 0df9e665-d932-5740-b2c7-b52af166bc11 | \ No newline at end of file diff --git a/docs/components/guardrailinterval.mdx b/docs/components/guardrailinterval.mdx new file mode 100644 index 00000000..9e0a058e --- /dev/null +++ b/docs/components/guardrailinterval.mdx @@ -0,0 +1,23 @@ +--- +title: "GuardrailInterval" +--- + +Interval at which the limit resets (daily, weekly, monthly) + +## Example Usage + +```python +from openrouter.components import GuardrailInterval + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: GuardrailInterval = "daily" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"daily"` +- `"weekly"` +- `"monthly"` diff --git a/docs/components/ignore.mdx b/docs/components/ignore.mdx new file mode 100644 index 00000000..8ba13152 --- /dev/null +++ b/docs/components/ignore.mdx @@ -0,0 +1,18 @@ +--- +title: "Ignore" +--- + +## Supported Types + +### `components.ProviderName` + +```python +value: components.ProviderName = /* values here */ +``` + +### `str` + +```python +value: str = /* values here */ +``` + diff --git a/docs/components/imageconfig.mdx b/docs/components/imageconfig.mdx new file mode 100644 index 00000000..c838dbe6 --- /dev/null +++ b/docs/components/imageconfig.mdx @@ -0,0 +1,24 @@ +--- +title: "ImageConfig" +--- + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `float` + +```python +value: float = /* values here */ +``` + +### `List[Nullable[Any]]` + +```python +value: List[Nullable[Any]] = /* values here */ +``` + diff --git a/docs/components/imageendpoint.mdx b/docs/components/imageendpoint.mdx new file mode 100644 index 00000000..29fa84c1 --- /dev/null +++ b/docs/components/imageendpoint.mdx @@ -0,0 +1,18 @@ +--- +title: "ImageEndpoint" +--- + +An endpoint that serves a given image model. + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `allowed_passthrough_parameters` | List[*str*] | :heavy_check_mark: | Provider-specific options accepted under provider.options[provider_slug]. | [] | +| `pricing` | List[[components.ImagePricingEntry](../components/imagepricingentry.mdx)] | :heavy_check_mark: | Billable pricing lines for this endpoint. | [
\{
"billable": "output_image",
"cost_usd": 0.05,
"unit": "image"
}
] | +| `provider_name` | *str* | :heavy_check_mark: | Provider display name | Bytedance | +| `provider_slug` | *str* | :heavy_check_mark: | Provider slug | bytedance | +| `provider_tag` | *Nullable[str]* | :heavy_check_mark: | Provider tag for request-side selection | bytedance | +| `supported_parameters` | Dict[str, [components.CapabilityDescriptor](../components/capabilitydescriptor.mdx)] | :heavy_check_mark: | N/A | \{
"output_compression": \{
"max": 100,
"min": 0,
"type": "range"
},
"resolution": \{
"type": "enum",
"values": [
"1K",
"2K",
"4K"
]
},
"seed": \{
"type": "boolean"
}
} | +| `supports_streaming` | *bool* | :heavy_check_mark: | Whether this endpoint supports native SSE streaming (`stream: true` in the request). | false | \ No newline at end of file diff --git a/docs/components/imagegencallcompletedevent.mdx b/docs/components/imagegencallcompletedevent.mdx new file mode 100644 index 00000000..2ca428b1 --- /dev/null +++ b/docs/components/imagegencallcompletedevent.mdx @@ -0,0 +1,15 @@ +--- +title: "ImageGenCallCompletedEvent" +--- + +Image generation call completed + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.ImageGenCallCompletedEventType](../components/imagegencallcompletedeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/imagegencallcompletedeventtype.mdx b/docs/components/imagegencallcompletedeventtype.mdx new file mode 100644 index 00000000..ca8fa217 --- /dev/null +++ b/docs/components/imagegencallcompletedeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ImageGenCallCompletedEventType" +--- + +## Example Usage + +```python +from openrouter.components import ImageGenCallCompletedEventType +value: ImageGenCallCompletedEventType = "response.image_generation_call.completed" +``` + + +## Values + +- `"response.image_generation_call.completed"` diff --git a/docs/components/imagegencallgeneratingevent.mdx b/docs/components/imagegencallgeneratingevent.mdx new file mode 100644 index 00000000..eb3a1af6 --- /dev/null +++ b/docs/components/imagegencallgeneratingevent.mdx @@ -0,0 +1,15 @@ +--- +title: "ImageGenCallGeneratingEvent" +--- + +Image generation call is generating + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.ImageGenCallGeneratingEventType](../components/imagegencallgeneratingeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/imagegencallgeneratingeventtype.mdx b/docs/components/imagegencallgeneratingeventtype.mdx new file mode 100644 index 00000000..d89b7720 --- /dev/null +++ b/docs/components/imagegencallgeneratingeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ImageGenCallGeneratingEventType" +--- + +## Example Usage + +```python +from openrouter.components import ImageGenCallGeneratingEventType +value: ImageGenCallGeneratingEventType = "response.image_generation_call.generating" +``` + + +## Values + +- `"response.image_generation_call.generating"` diff --git a/docs/components/imagegencallinprogressevent.mdx b/docs/components/imagegencallinprogressevent.mdx new file mode 100644 index 00000000..72ce2bb4 --- /dev/null +++ b/docs/components/imagegencallinprogressevent.mdx @@ -0,0 +1,15 @@ +--- +title: "ImageGenCallInProgressEvent" +--- + +Image generation call in progress + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.ImageGenCallInProgressEventType](../components/imagegencallinprogresseventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/imagegencallinprogresseventtype.mdx b/docs/components/imagegencallinprogresseventtype.mdx new file mode 100644 index 00000000..865edcac --- /dev/null +++ b/docs/components/imagegencallinprogresseventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ImageGenCallInProgressEventType" +--- + +## Example Usage + +```python +from openrouter.components import ImageGenCallInProgressEventType +value: ImageGenCallInProgressEventType = "response.image_generation_call.in_progress" +``` + + +## Values + +- `"response.image_generation_call.in_progress"` diff --git a/docs/components/imagegencallpartialimageevent.mdx b/docs/components/imagegencallpartialimageevent.mdx new file mode 100644 index 00000000..a3b82a92 --- /dev/null +++ b/docs/components/imagegencallpartialimageevent.mdx @@ -0,0 +1,17 @@ +--- +title: "ImageGenCallPartialImageEvent" +--- + +Image generation call with partial image + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `partial_image_b64` | *str* | :heavy_check_mark: | N/A | +| `partial_image_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.ImageGenCallPartialImageEventType](../components/imagegencallpartialimageeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/imagegencallpartialimageeventtype.mdx b/docs/components/imagegencallpartialimageeventtype.mdx new file mode 100644 index 00000000..8eb6786a --- /dev/null +++ b/docs/components/imagegencallpartialimageeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ImageGenCallPartialImageEventType" +--- + +## Example Usage + +```python +from openrouter.components import ImageGenCallPartialImageEventType +value: ImageGenCallPartialImageEventType = "response.image_generation_call.partial_image" +``` + + +## Values + +- `"response.image_generation_call.partial_image"` diff --git a/docs/components/imagegencompletedevent.mdx b/docs/components/imagegencompletedevent.mdx new file mode 100644 index 00000000..90ddd67d --- /dev/null +++ b/docs/components/imagegencompletedevent.mdx @@ -0,0 +1,16 @@ +--- +title: "ImageGenCompletedEvent" +--- + +Emitted when generation completes and the final image is available + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `b64_json` | *str* | :heavy_check_mark: | Base64-encoded final image data | | +| `created` | *int* | :heavy_check_mark: | Unix timestamp (seconds) when the image was generated | | +| `media_type` | *Optional[str]* | :heavy_minus_sign: | Media type (MIME type) of the image. Omitted when the output is a standard raster format (PNG). Present for non-raster outputs such as SVG (`image/svg+xml`). | image/svg+xml | +| `type` | [components.ImageGenCompletedEventType](../components/imagegencompletedeventtype.mdx) | :heavy_check_mark: | The event type | | +| `usage` | [Optional[components.ImageGenerationUsage]](../components/imagegenerationusage.mdx) | :heavy_minus_sign: | Token and cost usage for the image generation request, when available | \{
"completion_tokens": 4175,
"cost": 0.04,
"prompt_tokens": 0,
"total_tokens": 4175
} | \ No newline at end of file diff --git a/docs/components/imagegencompletedeventtype.mdx b/docs/components/imagegencompletedeventtype.mdx new file mode 100644 index 00000000..df5a9a53 --- /dev/null +++ b/docs/components/imagegencompletedeventtype.mdx @@ -0,0 +1,17 @@ +--- +title: "ImageGenCompletedEventType" +--- + +The event type + +## Example Usage + +```python +from openrouter.components import ImageGenCompletedEventType +value: ImageGenCompletedEventType = "image_generation.completed" +``` + + +## Values + +- `"image_generation.completed"` diff --git a/docs/components/imagegenerationrequest.mdx b/docs/components/imagegenerationrequest.mdx new file mode 100644 index 00000000..1d6369db --- /dev/null +++ b/docs/components/imagegenerationrequest.mdx @@ -0,0 +1,25 @@ +--- +title: "ImageGenerationRequest" +--- + +Image generation request input + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `aspect_ratio` | [Optional[components.ImageGenerationRequestAspectRatio]](../components/imagegenerationrequestaspectratio.mdx) | :heavy_minus_sign: | Normalized aspect ratio of the generated image. Providers clamp to their supported subset. | 16:9 | +| `background` | [Optional[components.ImageGenerationRequestBackground]](../components/imagegenerationrequestbackground.mdx) | :heavy_minus_sign: | Background treatment. `transparent` requires an output_format that supports alpha (png or webp). | auto | +| `input_references` | List[[components.ContentPartImage](../components/contentpartimage.mdx)] | :heavy_minus_sign: | Reference images to guide image-to-image generation, as base64 data URLs or HTTP(S) URLs. | | +| `model` | *str* | :heavy_check_mark: | The image generation model to use | bytedance-seed/seedream-4.5 | +| `n` | *Optional[int]* | :heavy_minus_sign: | Number of images to generate (1-10). Providers that only support single-image generation reject n > 1. | 1 | +| `output_compression` | *Optional[int]* | :heavy_minus_sign: | Compression level (0-100) for webp/jpeg output. Ignored for png and by providers without a compression knob. | 100 | +| `output_format` | [Optional[components.ImageGenerationRequestOutputFormat]](../components/imagegenerationrequestoutputformat.mdx) | :heavy_minus_sign: | Encoding of the returned image bytes. Most models produce raster formats (png, jpeg, webp). SVG is supported by vectorization models (e.g. Quiver) — the SVG markup is UTF-8 base64-encoded in `b64_json`. | png | +| `prompt` | *str* | :heavy_check_mark: | Text description of the desired image | a red panda astronaut floating in space, studio lighting | +| `provider` | [Optional[components.ImageGenerationRequestProvider]](../components/imagegenerationrequestprovider.mdx) | :heavy_minus_sign: | Provider-specific passthrough configuration | | +| `quality` | [Optional[components.ImageGenerationRequestQuality]](../components/imagegenerationrequestquality.mdx) | :heavy_minus_sign: | Rendering quality. Providers without a quality knob ignore this. | high | +| `resolution` | [Optional[components.ImageGenerationRequestResolution]](../components/imagegenerationrequestresolution.mdx) | :heavy_minus_sign: | Normalized resolution tier of the generated image. Concrete pixel dimensions are derived per-provider. | 2K | +| `seed` | *Optional[int]* | :heavy_minus_sign: | If specified, the generation will sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed for all providers. | | +| `size` | *Optional[str]* | :heavy_minus_sign: | Optional. A convenience shorthand for output dimensions — pass a tier ("2K", "4K") or explicit pixels ("2048x2048") and we normalize it to the right dimensions for the chosen provider. Interchangeable with resolution + aspect_ratio; use those directly for enumerated, per-model discoverable values. Conflicting size + resolution/aspect_ratio is rejected. | 2K | +| `stream` | *Optional[bool]* | :heavy_minus_sign: | If true, partial images are streamed as SSE events as they become available. Only supported by providers with native streaming (currently OpenAI). Non-streaming providers ignore this flag and return a buffered response. | | \ No newline at end of file diff --git a/docs/components/imagegenerationrequestaspectratio.mdx b/docs/components/imagegenerationrequestaspectratio.mdx new file mode 100644 index 00000000..2116ac41 --- /dev/null +++ b/docs/components/imagegenerationrequestaspectratio.mdx @@ -0,0 +1,42 @@ +--- +title: "ImageGenerationRequestAspectRatio" +--- + +Normalized aspect ratio of the generated image. Providers clamp to their supported subset. + +## Example Usage + +```python +from openrouter.components import ImageGenerationRequestAspectRatio + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ImageGenerationRequestAspectRatio = "1:1" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"1:1"` +- `"1:2"` +- `"1:4"` +- `"1:8"` +- `"2:1"` +- `"2:3"` +- `"3:2"` +- `"3:4"` +- `"4:1"` +- `"4:3"` +- `"4:5"` +- `"5:4"` +- `"8:1"` +- `"9:16"` +- `"16:9"` +- `"9:19.5"` +- `"19.5:9"` +- `"9:20"` +- `"20:9"` +- `"9:21"` +- `"21:9"` +- `"auto"` diff --git a/docs/components/imagegenerationrequestbackground.mdx b/docs/components/imagegenerationrequestbackground.mdx new file mode 100644 index 00000000..8501680b --- /dev/null +++ b/docs/components/imagegenerationrequestbackground.mdx @@ -0,0 +1,23 @@ +--- +title: "ImageGenerationRequestBackground" +--- + +Background treatment. `transparent` requires an output_format that supports alpha (png or webp). + +## Example Usage + +```python +from openrouter.components import ImageGenerationRequestBackground + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ImageGenerationRequestBackground = "auto" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"auto"` +- `"transparent"` +- `"opaque"` diff --git a/docs/components/imagegenerationrequestoptions.mdx b/docs/components/imagegenerationrequestoptions.mdx new file mode 100644 index 00000000..26f3f1ec --- /dev/null +++ b/docs/components/imagegenerationrequestoptions.mdx @@ -0,0 +1,131 @@ +--- +title: "ImageGenerationRequestOptions" +--- + +Provider-specific options keyed by provider slug. Only options for the matched provider are forwarded; the rest are ignored. Unrecognized keys are silently dropped. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------- | -------------------------- | -------------------------- | -------------------------- | +| `oneai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `ai21` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `aion_labs` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `akashml` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `alibaba` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `amazon_bedrock` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `amazon_nova` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `ambient` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `anthropic` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `anyscale` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `arcee_ai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `atlas_cloud` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `atoma` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `avian` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `azure` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `baidu` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `baseten` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `black_forest_labs` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `byteplus` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `centml` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `cerebras` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `chutes` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `cirrascale` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `clarifai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `cloudflare` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `cohere` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `crofai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `crucible` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `crusoe` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `darkbloom` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `decart` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `deepinfra` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `deepseek` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `dekallm` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `digitalocean` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `enfer` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `fake_provider` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `featherless` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `fireworks` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `friendli` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `gmicloud` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `google_ai_studio` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `google_vertex` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `gopomelo` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `groq` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `heygen` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `huggingface` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `hyperbolic` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `hyperbolic_quantized` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `inception` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `inceptron` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `inferact_vllm` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `inference_net` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `infermatic` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `inflection` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `inocloud` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `io_net` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `ionstream` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `klusterai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `lambda_` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `lepton` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `liquid` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `lynn` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `lynn_private` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `mancer` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `mancer_old` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `mara` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `meta` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `minimax` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `mistral` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `modal` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `modelrun` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `modular` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `moonshotai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `morph` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `ncompass` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `nebius` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `nex_agi` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `nextbit` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `nineteen` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `novita` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `nvidia` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `octoai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `open_inference` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `openai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `parasail` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `perceptron` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `perplexity` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `phala` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `poolside` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `quiver` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `recraft` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `recursal` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `reflection` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `reka` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `relace` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `replicate` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `sakana_ai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `sambanova` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `sambanova_cloaked` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `seed` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `sf_compute` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `siliconflow` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `sourceful` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `stealth` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `stepfun` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `streamlake` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `switchpoint` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `targon` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `tenstorrent` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `together` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `together_lite` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `ubicloud` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `upstage` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `venice` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `wafer` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `wandb` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `xai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `xiaomi` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `z_ai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/imagegenerationrequestoutputformat.mdx b/docs/components/imagegenerationrequestoutputformat.mdx new file mode 100644 index 00000000..49014162 --- /dev/null +++ b/docs/components/imagegenerationrequestoutputformat.mdx @@ -0,0 +1,24 @@ +--- +title: "ImageGenerationRequestOutputFormat" +--- + +Encoding of the returned image bytes. Most models produce raster formats (png, jpeg, webp). SVG is supported by vectorization models (e.g. Quiver) — the SVG markup is UTF-8 base64-encoded in `b64_json`. + +## Example Usage + +```python +from openrouter.components import ImageGenerationRequestOutputFormat + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ImageGenerationRequestOutputFormat = "png" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"png"` +- `"jpeg"` +- `"webp"` +- `"svg"` diff --git a/docs/components/imagegenerationrequestprovider.mdx b/docs/components/imagegenerationrequestprovider.mdx new file mode 100644 index 00000000..51188d0f --- /dev/null +++ b/docs/components/imagegenerationrequestprovider.mdx @@ -0,0 +1,12 @@ +--- +title: "ImageGenerationRequestProvider" +--- + +Provider-specific passthrough configuration + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `options` | [Optional[components.ImageGenerationRequestOptions]](../components/imagegenerationrequestoptions.mdx) | :heavy_minus_sign: | N/A | \{
"black-forest-labs": \{
"guidance": 3,
"steps": 40
}
} | \ No newline at end of file diff --git a/docs/components/imagegenerationrequestquality.mdx b/docs/components/imagegenerationrequestquality.mdx new file mode 100644 index 00000000..d6f8b5be --- /dev/null +++ b/docs/components/imagegenerationrequestquality.mdx @@ -0,0 +1,24 @@ +--- +title: "ImageGenerationRequestQuality" +--- + +Rendering quality. Providers without a quality knob ignore this. + +## Example Usage + +```python +from openrouter.components import ImageGenerationRequestQuality + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ImageGenerationRequestQuality = "auto" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"auto"` +- `"low"` +- `"medium"` +- `"high"` diff --git a/docs/components/imagegenerationrequestresolution.mdx b/docs/components/imagegenerationrequestresolution.mdx new file mode 100644 index 00000000..4d9385e8 --- /dev/null +++ b/docs/components/imagegenerationrequestresolution.mdx @@ -0,0 +1,24 @@ +--- +title: "ImageGenerationRequestResolution" +--- + +Normalized resolution tier of the generated image. Concrete pixel dimensions are derived per-provider. + +## Example Usage + +```python +from openrouter.components import ImageGenerationRequestResolution + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ImageGenerationRequestResolution = "512" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"512"` +- `"1K"` +- `"2K"` +- `"4K"` diff --git a/docs/components/imagegenerationresponse.mdx b/docs/components/imagegenerationresponse.mdx new file mode 100644 index 00000000..b6e0e2c0 --- /dev/null +++ b/docs/components/imagegenerationresponse.mdx @@ -0,0 +1,14 @@ +--- +title: "ImageGenerationResponse" +--- + +Image generation response + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `created` | *int* | :heavy_check_mark: | Unix timestamp (seconds) when the image was generated | 1748372400 | +| `data` | List[[components.ImageGenerationResponseData](../components/imagegenerationresponsedata.mdx)] | :heavy_check_mark: | Generated images | | +| `usage` | [Optional[components.ImageGenerationUsage]](../components/imagegenerationusage.mdx) | :heavy_minus_sign: | Token and cost usage for the image generation request, when available | \{
"completion_tokens": 4175,
"cost": 0.04,
"prompt_tokens": 0,
"total_tokens": 4175
} | \ No newline at end of file diff --git a/docs/components/imagegenerationresponsedata.mdx b/docs/components/imagegenerationresponsedata.mdx new file mode 100644 index 00000000..78ec1e13 --- /dev/null +++ b/docs/components/imagegenerationresponsedata.mdx @@ -0,0 +1,10 @@ +--- +title: "ImageGenerationResponseData" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `b64_json` | *str* | :heavy_check_mark: | Base64-encoded image bytes | | +| `media_type` | *Optional[str]* | :heavy_minus_sign: | Media type (MIME type) of the image. Omitted when the output is a standard raster format (PNG). Present for non-raster outputs such as SVG (`image/svg+xml`). | image/svg+xml | \ No newline at end of file diff --git a/docs/components/imagegenerationservertool.mdx b/docs/components/imagegenerationservertool.mdx new file mode 100644 index 00000000..c290753a --- /dev/null +++ b/docs/components/imagegenerationservertool.mdx @@ -0,0 +1,22 @@ +--- +title: "ImageGenerationServerTool" +--- + +Image generation tool configuration + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `background` | [Optional[components.ImageGenerationServerToolBackground]](../components/imagegenerationservertoolbackground.mdx) | :heavy_minus_sign: | N/A | +| `input_fidelity` | [OptionalNullable[components.InputFidelity]](../components/inputfidelity.mdx) | :heavy_minus_sign: | N/A | +| `input_image_mask` | [Optional[components.InputImageMask]](../components/inputimagemask.mdx) | :heavy_minus_sign: | N/A | +| `model` | [Optional[components.ModelEnum]](../components/modelenum.mdx) | :heavy_minus_sign: | N/A | +| `moderation` | [Optional[components.Moderation]](../components/moderation.mdx) | :heavy_minus_sign: | N/A | +| `output_compression` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `output_format` | [Optional[components.ImageGenerationServerToolOutputFormat]](../components/imagegenerationservertooloutputformat.mdx) | :heavy_minus_sign: | N/A | +| `partial_images` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `quality` | [Optional[components.ImageGenerationServerToolQuality]](../components/imagegenerationservertoolquality.mdx) | :heavy_minus_sign: | N/A | +| `size` | [Optional[components.Size]](../components/size.mdx) | :heavy_minus_sign: | N/A | +| `type` | [components.ImageGenerationServerToolType](../components/imagegenerationservertooltype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/imagegenerationservertoolbackground.mdx b/docs/components/imagegenerationservertoolbackground.mdx new file mode 100644 index 00000000..208f2a3f --- /dev/null +++ b/docs/components/imagegenerationservertoolbackground.mdx @@ -0,0 +1,21 @@ +--- +title: "ImageGenerationServerToolBackground" +--- + +## Example Usage + +```python +from openrouter.components import ImageGenerationServerToolBackground + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ImageGenerationServerToolBackground = "transparent" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"transparent"` +- `"opaque"` +- `"auto"` diff --git a/docs/components/imagegenerationservertoolconfig.mdx b/docs/components/imagegenerationservertoolconfig.mdx new file mode 100644 index 00000000..3fc78f9b --- /dev/null +++ b/docs/components/imagegenerationservertoolconfig.mdx @@ -0,0 +1,13 @@ +--- +title: "ImageGenerationServerToolConfig" +--- + +Configuration for the openrouter:image_generation server tool. Accepts all image_config params (aspect_ratio, quality, size, background, output_format, output_compression, moderation, etc.) plus a model field. + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | +| `model` | *Optional[str]* | :heavy_minus_sign: | Which image generation model to use (e.g. "openai/gpt-5-image"). Defaults to "openai/gpt-5-image". | openai/gpt-5-image | +| `__pydantic_extra__` | Dict[str, [components.ImageGenerationServerToolConfigUnion](../components/imagegenerationservertoolconfigunion.mdx)] | :heavy_minus_sign: | N/A | \{
"aspect_ratio": "16:9",
"model": "openai/gpt-5-image",
"quality": "high"
} | \ No newline at end of file diff --git a/docs/components/imagegenerationservertoolconfigunion.mdx b/docs/components/imagegenerationservertoolconfigunion.mdx new file mode 100644 index 00000000..a3b6a156 --- /dev/null +++ b/docs/components/imagegenerationservertoolconfigunion.mdx @@ -0,0 +1,24 @@ +--- +title: "ImageGenerationServerToolConfigUnion" +--- + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `float` + +```python +value: float = /* values here */ +``` + +### `List[Nullable[Any]]` + +```python +value: List[Nullable[Any]] = /* values here */ +``` + diff --git a/docs/components/imagegenerationservertoolopenrouter.mdx b/docs/components/imagegenerationservertoolopenrouter.mdx new file mode 100644 index 00000000..0caf29cf --- /dev/null +++ b/docs/components/imagegenerationservertoolopenrouter.mdx @@ -0,0 +1,13 @@ +--- +title: "ImageGenerationServerToolOpenRouter" +--- + +OpenRouter built-in server tool: generates images from text prompts using an image generation model + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `parameters` | [Optional[components.ImageGenerationServerToolConfig]](../components/imagegenerationservertoolconfig.mdx) | :heavy_minus_sign: | Configuration for the openrouter:image_generation server tool. Accepts all image_config params (aspect_ratio, quality, size, background, output_format, output_compression, moderation, etc.) plus a model field. | \{
"aspect_ratio": "16:9",
"model": "openai/gpt-5-image",
"quality": "high"
} | +| `type` | [components.ImageGenerationServerToolOpenRouterType](../components/imagegenerationservertoolopenroutertype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/imagegenerationservertoolopenroutertype.mdx b/docs/components/imagegenerationservertoolopenroutertype.mdx new file mode 100644 index 00000000..8151a459 --- /dev/null +++ b/docs/components/imagegenerationservertoolopenroutertype.mdx @@ -0,0 +1,15 @@ +--- +title: "ImageGenerationServerToolOpenRouterType" +--- + +## Example Usage + +```python +from openrouter.components import ImageGenerationServerToolOpenRouterType +value: ImageGenerationServerToolOpenRouterType = "openrouter:image_generation" +``` + + +## Values + +- `"openrouter:image_generation"` diff --git a/docs/components/imagegenerationservertooloutputformat.mdx b/docs/components/imagegenerationservertooloutputformat.mdx new file mode 100644 index 00000000..f19e909e --- /dev/null +++ b/docs/components/imagegenerationservertooloutputformat.mdx @@ -0,0 +1,21 @@ +--- +title: "ImageGenerationServerToolOutputFormat" +--- + +## Example Usage + +```python +from openrouter.components import ImageGenerationServerToolOutputFormat + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ImageGenerationServerToolOutputFormat = "png" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"png"` +- `"webp"` +- `"jpeg"` diff --git a/docs/components/imagegenerationservertoolquality.mdx b/docs/components/imagegenerationservertoolquality.mdx new file mode 100644 index 00000000..ab9a2179 --- /dev/null +++ b/docs/components/imagegenerationservertoolquality.mdx @@ -0,0 +1,22 @@ +--- +title: "ImageGenerationServerToolQuality" +--- + +## Example Usage + +```python +from openrouter.components import ImageGenerationServerToolQuality + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ImageGenerationServerToolQuality = "low" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"low"` +- `"medium"` +- `"high"` +- `"auto"` diff --git a/docs/components/imagegenerationservertooltype.mdx b/docs/components/imagegenerationservertooltype.mdx new file mode 100644 index 00000000..b677030f --- /dev/null +++ b/docs/components/imagegenerationservertooltype.mdx @@ -0,0 +1,15 @@ +--- +title: "ImageGenerationServerToolType" +--- + +## Example Usage + +```python +from openrouter.components import ImageGenerationServerToolType +value: ImageGenerationServerToolType = "image_generation" +``` + + +## Values + +- `"image_generation"` diff --git a/docs/components/imagegenerationstatus.md b/docs/components/imagegenerationstatus.md deleted file mode 100644 index 22e0541c..00000000 --- a/docs/components/imagegenerationstatus.md +++ /dev/null @@ -1,11 +0,0 @@ -# ImageGenerationStatus - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `IN_PROGRESS` | in_progress | -| `COMPLETED` | completed | -| `GENERATING` | generating | -| `FAILED` | failed | \ No newline at end of file diff --git a/docs/components/imagegenerationstatus.mdx b/docs/components/imagegenerationstatus.mdx new file mode 100644 index 00000000..cabf0ccc --- /dev/null +++ b/docs/components/imagegenerationstatus.mdx @@ -0,0 +1,22 @@ +--- +title: "ImageGenerationStatus" +--- + +## Example Usage + +```python +from openrouter.components import ImageGenerationStatus + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ImageGenerationStatus = "in_progress" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"in_progress"` +- `"completed"` +- `"generating"` +- `"failed"` diff --git a/docs/components/imagegenerationusage.mdx b/docs/components/imagegenerationusage.mdx new file mode 100644 index 00000000..be9fe8ff --- /dev/null +++ b/docs/components/imagegenerationusage.mdx @@ -0,0 +1,23 @@ +--- +title: "ImageGenerationUsage" +--- + +Token and cost usage for the image generation request, when available + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `completion_tokens` | *int* | :heavy_check_mark: | The tokens generated | | +| `completion_tokens_details` | [OptionalNullable[components.ImageGenerationUsageCompletionTokensDetails]](../components/imagegenerationusagecompletiontokensdetails.mdx) | :heavy_minus_sign: | N/A | | +| `cost` | *OptionalNullable[float]* | :heavy_minus_sign: | Cost of the completion | | +| `cost_details` | [OptionalNullable[components.CostDetails]](../components/costdetails.mdx) | :heavy_minus_sign: | Breakdown of upstream inference costs | \{
"upstream_inference_completions_cost": 0.0004,
"upstream_inference_cost": null,
"upstream_inference_prompt_cost": 0.0008
} | +| `is_byok` | *Optional[bool]* | :heavy_minus_sign: | Whether a request was made using a Bring Your Own Key configuration | | +| `iterations` | List[[components.AnthropicUsageIteration](../components/anthropicusageiteration.mdx)] | :heavy_minus_sign: | N/A | | +| `prompt_tokens` | *int* | :heavy_check_mark: | Including images, input audio, and tools if any | | +| `prompt_tokens_details` | [OptionalNullable[components.ImageGenerationUsagePromptTokensDetails]](../components/imagegenerationusageprompttokensdetails.mdx) | :heavy_minus_sign: | Breakdown of tokens used in the prompt. | | +| `server_tool_use` | [OptionalNullable[components.ServerToolUse]](../components/servertooluse.mdx) | :heavy_minus_sign: | Usage for server-side tool execution (e.g., web search) | | +| `service_tier` | *OptionalNullable[str]* | :heavy_minus_sign: | The service tier used by the upstream provider for this request | | +| `speed` | [OptionalNullable[components.AnthropicSpeed]](../components/anthropicspeed.mdx) | :heavy_minus_sign: | N/A | standard | +| `total_tokens` | *int* | :heavy_check_mark: | Sum of the above two fields | | \ No newline at end of file diff --git a/docs/components/imagegenerationusagecompletiontokensdetails.mdx b/docs/components/imagegenerationusagecompletiontokensdetails.mdx new file mode 100644 index 00000000..9c56a843 --- /dev/null +++ b/docs/components/imagegenerationusagecompletiontokensdetails.mdx @@ -0,0 +1,11 @@ +--- +title: "ImageGenerationUsageCompletionTokensDetails" +--- + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | +| `audio_tokens` | *OptionalNullable[int]* | :heavy_minus_sign: | Tokens generated by the model for audio output. | +| `image_tokens` | *OptionalNullable[int]* | :heavy_minus_sign: | Tokens generated by the model for image output. | +| `reasoning_tokens` | *OptionalNullable[int]* | :heavy_minus_sign: | Tokens generated by the model for reasoning. | \ No newline at end of file diff --git a/docs/components/imagegenerationusageprompttokensdetails.mdx b/docs/components/imagegenerationusageprompttokensdetails.mdx new file mode 100644 index 00000000..a00b1254 --- /dev/null +++ b/docs/components/imagegenerationusageprompttokensdetails.mdx @@ -0,0 +1,16 @@ +--- +title: "ImageGenerationUsagePromptTokensDetails" +--- + +Breakdown of tokens used in the prompt. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `audio_tokens` | *OptionalNullable[int]* | :heavy_minus_sign: | Tokens used for input audio. | +| `cache_write_tokens` | *OptionalNullable[int]* | :heavy_minus_sign: | Tokens written to cache. Only returned for models with explicit caching and cache write pricing. | +| `cached_tokens` | *OptionalNullable[int]* | :heavy_minus_sign: | Tokens cached by the endpoint. | +| `file_tokens` | *OptionalNullable[int]* | :heavy_minus_sign: | Tokens used for input files/documents. | +| `video_tokens` | *OptionalNullable[int]* | :heavy_minus_sign: | Tokens used for input video. | \ No newline at end of file diff --git a/docs/components/imagegenpartialimageevent.mdx b/docs/components/imagegenpartialimageevent.mdx new file mode 100644 index 00000000..b081c114 --- /dev/null +++ b/docs/components/imagegenpartialimageevent.mdx @@ -0,0 +1,14 @@ +--- +title: "ImageGenPartialImageEvent" +--- + +Emitted when a partial image becomes available during streaming generation + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `b64_json` | *str* | :heavy_check_mark: | Base64-encoded partial image data | +| `partial_image_index` | *int* | :heavy_check_mark: | 0-based index indicating which partial image this is in the sequence | +| `type` | [components.ImageGenPartialImageEventType](../components/imagegenpartialimageeventtype.mdx) | :heavy_check_mark: | The event type | \ No newline at end of file diff --git a/docs/components/imagegenpartialimageeventtype.mdx b/docs/components/imagegenpartialimageeventtype.mdx new file mode 100644 index 00000000..89e2495f --- /dev/null +++ b/docs/components/imagegenpartialimageeventtype.mdx @@ -0,0 +1,17 @@ +--- +title: "ImageGenPartialImageEventType" +--- + +The event type + +## Example Usage + +```python +from openrouter.components import ImageGenPartialImageEventType +value: ImageGenPartialImageEventType = "image_generation.partial_image" +``` + + +## Values + +- `"image_generation.partial_image"` diff --git a/docs/components/imagegenstreamerrorevent.mdx b/docs/components/imagegenstreamerrorevent.mdx new file mode 100644 index 00000000..befd4424 --- /dev/null +++ b/docs/components/imagegenstreamerrorevent.mdx @@ -0,0 +1,13 @@ +--- +title: "ImageGenStreamErrorEvent" +--- + +Emitted when streaming generation fails after the SSE response starts + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `error` | [components.ImageGenStreamErrorEventError](../components/imagegenstreamerroreventerror.mdx) | :heavy_check_mark: | Provider error details | +| `type` | [components.ImageGenStreamErrorEventType](../components/imagegenstreamerroreventtype.mdx) | :heavy_check_mark: | The event type | \ No newline at end of file diff --git a/docs/components/imagegenstreamerroreventerror.mdx b/docs/components/imagegenstreamerroreventerror.mdx new file mode 100644 index 00000000..8539997c --- /dev/null +++ b/docs/components/imagegenstreamerroreventerror.mdx @@ -0,0 +1,15 @@ +--- +title: "ImageGenStreamErrorEventError" +--- + +Provider error details + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `code` | *OptionalNullable[str]* | :heavy_minus_sign: | Provider error code, when supplied | +| `message` | *str* | :heavy_check_mark: | Provider error message | +| `param` | *OptionalNullable[str]* | :heavy_minus_sign: | Request parameter associated with the error, when supplied | +| `type` | *OptionalNullable[str]* | :heavy_minus_sign: | Provider error type, when supplied | \ No newline at end of file diff --git a/docs/components/imagegenstreamerroreventtype.mdx b/docs/components/imagegenstreamerroreventtype.mdx new file mode 100644 index 00000000..dc1d5299 --- /dev/null +++ b/docs/components/imagegenstreamerroreventtype.mdx @@ -0,0 +1,17 @@ +--- +title: "ImageGenStreamErrorEventType" +--- + +The event type + +## Example Usage + +```python +from openrouter.components import ImageGenStreamErrorEventType +value: ImageGenStreamErrorEventType = "error" +``` + + +## Values + +- `"error"` diff --git a/docs/components/imagemodelarchitecture.mdx b/docs/components/imagemodelarchitecture.mdx new file mode 100644 index 00000000..6842d9d6 --- /dev/null +++ b/docs/components/imagemodelarchitecture.mdx @@ -0,0 +1,10 @@ +--- +title: "ImageModelArchitecture" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `input_modalities` | List[[components.InputModality](../components/inputmodality.mdx)] | :heavy_check_mark: | Supported input modalities | +| `output_modalities` | List[[components.ImageOutputModality](../components/imageoutputmodality.mdx)] | :heavy_check_mark: | Supported output modalities | \ No newline at end of file diff --git a/docs/components/imagemodelendpointsresponse.mdx b/docs/components/imagemodelendpointsresponse.mdx new file mode 100644 index 00000000..7d3ec9cc --- /dev/null +++ b/docs/components/imagemodelendpointsresponse.mdx @@ -0,0 +1,13 @@ +--- +title: "ImageModelEndpointsResponse" +--- + +The full per-endpoint records for an image model. + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `endpoints` | List[[components.ImageEndpoint](../components/imageendpoint.mdx)] | :heavy_check_mark: | N/A | | +| `id` | *str* | :heavy_check_mark: | Model slug | bytedance-seed/seedream-4.5 | \ No newline at end of file diff --git a/docs/components/imagemodellistitem.mdx b/docs/components/imagemodellistitem.mdx new file mode 100644 index 00000000..633c99be --- /dev/null +++ b/docs/components/imagemodellistitem.mdx @@ -0,0 +1,19 @@ +--- +title: "ImageModelListItem" +--- + +A single image model in the discovery listing. + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `architecture` | [components.ImageModelArchitecture](../components/imagemodelarchitecture.mdx) | :heavy_check_mark: | N/A | \{
"input_modalities": [
"text",
"image"
],
"output_modalities": [
"image"
]
} | +| `created` | *int* | :heavy_check_mark: | Unix timestamp (seconds) of when the model was created | 1692901234 | +| `description` | *str* | :heavy_check_mark: | N/A | A text-to-image model. | +| `endpoints` | *str* | :heavy_check_mark: | Relative URL to the full per-endpoint records for this model | /api/v1/images/models/bytedance-seed/seedream-4.5/endpoints | +| `id` | *str* | :heavy_check_mark: | Model slug | bytedance-seed/seedream-4.5 | +| `name` | *str* | :heavy_check_mark: | Display name | Seedream 4.5 | +| `supported_parameters` | Dict[str, [components.CapabilityDescriptor](../components/capabilitydescriptor.mdx)] | :heavy_check_mark: | Union of supported parameters across every endpoint of this model. Coarse discovery aid; the definitive per-endpoint set is behind the endpoints URL. | \{
"output_compression": \{
"max": 100,
"min": 0,
"type": "range"
},
"resolution": \{
"type": "enum",
"values": [
"1K",
"2K",
"4K"
]
},
"seed": \{
"type": "boolean"
}
} | +| `supports_streaming` | *bool* | :heavy_check_mark: | Whether any endpoint of this model supports native SSE streaming on the dedicated Image API (i.e. `stream: true` in the request). OR across endpoints. | false | \ No newline at end of file diff --git a/docs/components/imagemodelslistresponse.mdx b/docs/components/imagemodelslistresponse.mdx new file mode 100644 index 00000000..b5d695bd --- /dev/null +++ b/docs/components/imagemodelslistresponse.mdx @@ -0,0 +1,12 @@ +--- +title: "ImageModelsListResponse" +--- + +List of image generation models. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `data` | List[[components.ImageModelListItem](../components/imagemodellistitem.mdx)] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/imageoutputmodality.mdx b/docs/components/imageoutputmodality.mdx new file mode 100644 index 00000000..52ec9d78 --- /dev/null +++ b/docs/components/imageoutputmodality.mdx @@ -0,0 +1,26 @@ +--- +title: "ImageOutputModality" +--- + +## Example Usage + +```python +from openrouter.components import ImageOutputModality + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ImageOutputModality = "text" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"text"` +- `"image"` +- `"embeddings"` +- `"audio"` +- `"video"` +- `"rerank"` +- `"speech"` +- `"transcription"` diff --git a/docs/components/imagepricingentry.mdx b/docs/components/imagepricingentry.mdx new file mode 100644 index 00000000..8381e7e7 --- /dev/null +++ b/docs/components/imagepricingentry.mdx @@ -0,0 +1,15 @@ +--- +title: "ImagePricingEntry" +--- + +One billable pricing line for an image provider. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| `billable` | [components.Billable](../components/billable.mdx) | :heavy_check_mark: | N/A | +| `cost_usd` | *float* | :heavy_check_mark: | N/A | +| `unit` | [components.Unit](../components/unit.mdx) | :heavy_check_mark: | N/A | +| `variant` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/imagestreamingresponse.mdx b/docs/components/imagestreamingresponse.mdx new file mode 100644 index 00000000..8aad6cc3 --- /dev/null +++ b/docs/components/imagestreamingresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "ImageStreamingResponse" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `data` | [components.ImageStreamingResponseData](../components/imagestreamingresponsedata.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/imagestreamingresponsedata.mdx b/docs/components/imagestreamingresponsedata.mdx new file mode 100644 index 00000000..10400271 --- /dev/null +++ b/docs/components/imagestreamingresponsedata.mdx @@ -0,0 +1,24 @@ +--- +title: "ImageStreamingResponseData" +--- + +## Supported Types + +### `components.ImageGenPartialImageEvent` + +```python +value: components.ImageGenPartialImageEvent = /* values here */ +``` + +### `components.ImageGenCompletedEvent` + +```python +value: components.ImageGenCompletedEvent = /* values here */ +``` + +### `components.ImageGenStreamErrorEvent` + +```python +value: components.ImageGenStreamErrorEvent = /* values here */ +``` + diff --git a/docs/components/incompletedetails.mdx b/docs/components/incompletedetails.mdx new file mode 100644 index 00000000..7c1490a5 --- /dev/null +++ b/docs/components/incompletedetails.mdx @@ -0,0 +1,9 @@ +--- +title: "IncompleteDetails" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `reason` | [Optional[components.Reason]](../components/reason.mdx) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/input1.mdx b/docs/components/input1.mdx new file mode 100644 index 00000000..43245bc1 --- /dev/null +++ b/docs/components/input1.mdx @@ -0,0 +1,9 @@ +--- +title: "Input1" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------- | ---------------------------- | ---------------------------- | ---------------------------- | ---------------------------- | +| `prompt` | *str* | :heavy_check_mark: | N/A | What is the meaning of life? | \ No newline at end of file diff --git a/docs/components/input2.mdx b/docs/components/input2.mdx new file mode 100644 index 00000000..5dc5ade7 --- /dev/null +++ b/docs/components/input2.mdx @@ -0,0 +1,9 @@ +--- +title: "Input2" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `messages` | List[*Nullable[Any]*] | :heavy_check_mark: | N/A | [
\{
"content": "What is the meaning of life?",
"role": "user"
}
] | \ No newline at end of file diff --git a/docs/components/inputaudio.mdx b/docs/components/inputaudio.mdx new file mode 100644 index 00000000..54aba1db --- /dev/null +++ b/docs/components/inputaudio.mdx @@ -0,0 +1,13 @@ +--- +title: "InputAudio" +--- + +Audio input content item + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `input_audio` | [components.InputAudioInputAudio](../components/inputaudioinputaudio.mdx) | :heavy_check_mark: | N/A | +| `type` | [components.InputAudioType](../components/inputaudiotype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/inputaudioinputaudio.mdx b/docs/components/inputaudioinputaudio.mdx new file mode 100644 index 00000000..29ec9c92 --- /dev/null +++ b/docs/components/inputaudioinputaudio.mdx @@ -0,0 +1,10 @@ +--- +title: "InputAudioInputAudio" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | +| `data` | *str* | :heavy_check_mark: | N/A | +| `format_` | [components.FormatEnum](../components/formatenum.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/inputaudiotype.mdx b/docs/components/inputaudiotype.mdx new file mode 100644 index 00000000..9fadef3e --- /dev/null +++ b/docs/components/inputaudiotype.mdx @@ -0,0 +1,15 @@ +--- +title: "InputAudioType" +--- + +## Example Usage + +```python +from openrouter.components import InputAudioType +value: InputAudioType = "input_audio" +``` + + +## Values + +- `"input_audio"` diff --git a/docs/components/inputfidelity.mdx b/docs/components/inputfidelity.mdx new file mode 100644 index 00000000..df80baab --- /dev/null +++ b/docs/components/inputfidelity.mdx @@ -0,0 +1,20 @@ +--- +title: "InputFidelity" +--- + +## Example Usage + +```python +from openrouter.components import InputFidelity + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: InputFidelity = "high" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"high"` +- `"low"` diff --git a/docs/components/inputfile.mdx b/docs/components/inputfile.mdx new file mode 100644 index 00000000..2e4a15d5 --- /dev/null +++ b/docs/components/inputfile.mdx @@ -0,0 +1,16 @@ +--- +title: "InputFile" +--- + +File input content item + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `file_data` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `file_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `file_url` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `filename` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `type` | [components.InputFileType](../components/inputfiletype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/inputfiletype.mdx b/docs/components/inputfiletype.mdx new file mode 100644 index 00000000..15dd4af7 --- /dev/null +++ b/docs/components/inputfiletype.mdx @@ -0,0 +1,15 @@ +--- +title: "InputFileType" +--- + +## Example Usage + +```python +from openrouter.components import InputFileType +value: InputFileType = "input_file" +``` + + +## Values + +- `"input_file"` diff --git a/docs/components/inputimage.mdx b/docs/components/inputimage.mdx new file mode 100644 index 00000000..294eb9b5 --- /dev/null +++ b/docs/components/inputimage.mdx @@ -0,0 +1,14 @@ +--- +title: "InputImage" +--- + +Image input content item + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `detail` | [components.InputImageDetail](../components/inputimagedetail.mdx) | :heavy_check_mark: | N/A | +| `image_url` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `type` | [components.InputImageType](../components/inputimagetype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/inputimagedetail.mdx b/docs/components/inputimagedetail.mdx new file mode 100644 index 00000000..a2009945 --- /dev/null +++ b/docs/components/inputimagedetail.mdx @@ -0,0 +1,22 @@ +--- +title: "InputImageDetail" +--- + +## Example Usage + +```python +from openrouter.components import InputImageDetail + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: InputImageDetail = "auto" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"auto"` +- `"high"` +- `"low"` +- `"original"` diff --git a/docs/components/inputimagemask.mdx b/docs/components/inputimagemask.mdx new file mode 100644 index 00000000..74ce0077 --- /dev/null +++ b/docs/components/inputimagemask.mdx @@ -0,0 +1,10 @@ +--- +title: "InputImageMask" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `file_id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `image_url` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/inputimagetype.mdx b/docs/components/inputimagetype.mdx new file mode 100644 index 00000000..b1eb47e7 --- /dev/null +++ b/docs/components/inputimagetype.mdx @@ -0,0 +1,15 @@ +--- +title: "InputImageType" +--- + +## Example Usage + +```python +from openrouter.components import InputImageType +value: InputImageType = "input_image" +``` + + +## Values + +- `"input_image"` diff --git a/docs/components/inputmessageitem.mdx b/docs/components/inputmessageitem.mdx new file mode 100644 index 00000000..0a2f6e5d --- /dev/null +++ b/docs/components/inputmessageitem.mdx @@ -0,0 +1,12 @@ +--- +title: "InputMessageItem" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `content` | List[[components.InputMessageItemContentUnion](../components/inputmessageitemcontentunion.mdx)] | :heavy_minus_sign: | N/A | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `role` | [components.InputMessageItemRoleUnion](../components/inputmessageitemroleunion.mdx) | :heavy_check_mark: | N/A | +| `type` | [Optional[components.InputMessageItemTypeMessage]](../components/inputmessageitemtypemessage.mdx) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/inputmessageitemcontentinputimage.mdx b/docs/components/inputmessageitemcontentinputimage.mdx new file mode 100644 index 00000000..d029dec1 --- /dev/null +++ b/docs/components/inputmessageitemcontentinputimage.mdx @@ -0,0 +1,14 @@ +--- +title: "InputMessageItemContentInputImage" +--- + +Image input content item + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `detail` | [components.InputMessageItemDetail](../components/inputmessageitemdetail.mdx) | :heavy_check_mark: | N/A | +| `image_url` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `type` | [components.InputMessageItemTypeInputImage](../components/inputmessageitemtypeinputimage.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/inputmessageitemcontentunion.mdx b/docs/components/inputmessageitemcontentunion.mdx new file mode 100644 index 00000000..f64ba6e9 --- /dev/null +++ b/docs/components/inputmessageitemcontentunion.mdx @@ -0,0 +1,36 @@ +--- +title: "InputMessageItemContentUnion" +--- + +## Supported Types + +### `components.InputText` + +```python +value: components.InputText = /* values here */ +``` + +### `components.InputMessageItemContentInputImage` + +```python +value: components.InputMessageItemContentInputImage = /* values here */ +``` + +### `components.InputFile` + +```python +value: components.InputFile = /* values here */ +``` + +### `components.InputAudio` + +```python +value: components.InputAudio = /* values here */ +``` + +### `components.InputVideo` + +```python +value: components.InputVideo = /* values here */ +``` + diff --git a/docs/components/inputmessageitemdetail.mdx b/docs/components/inputmessageitemdetail.mdx new file mode 100644 index 00000000..58974a1e --- /dev/null +++ b/docs/components/inputmessageitemdetail.mdx @@ -0,0 +1,22 @@ +--- +title: "InputMessageItemDetail" +--- + +## Example Usage + +```python +from openrouter.components import InputMessageItemDetail + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: InputMessageItemDetail = "auto" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"auto"` +- `"high"` +- `"low"` +- `"original"` diff --git a/docs/components/inputmessageitemroledeveloper.mdx b/docs/components/inputmessageitemroledeveloper.mdx new file mode 100644 index 00000000..32594773 --- /dev/null +++ b/docs/components/inputmessageitemroledeveloper.mdx @@ -0,0 +1,15 @@ +--- +title: "InputMessageItemRoleDeveloper" +--- + +## Example Usage + +```python +from openrouter.components import InputMessageItemRoleDeveloper +value: InputMessageItemRoleDeveloper = "developer" +``` + + +## Values + +- `"developer"` diff --git a/docs/components/inputmessageitemrolesystem.mdx b/docs/components/inputmessageitemrolesystem.mdx new file mode 100644 index 00000000..064277e0 --- /dev/null +++ b/docs/components/inputmessageitemrolesystem.mdx @@ -0,0 +1,15 @@ +--- +title: "InputMessageItemRoleSystem" +--- + +## Example Usage + +```python +from openrouter.components import InputMessageItemRoleSystem +value: InputMessageItemRoleSystem = "system" +``` + + +## Values + +- `"system"` diff --git a/docs/components/inputmessageitemroleunion.mdx b/docs/components/inputmessageitemroleunion.mdx new file mode 100644 index 00000000..ae0a911e --- /dev/null +++ b/docs/components/inputmessageitemroleunion.mdx @@ -0,0 +1,24 @@ +--- +title: "InputMessageItemRoleUnion" +--- + +## Supported Types + +### `components.InputMessageItemRoleUser` + +```python +value: components.InputMessageItemRoleUser = /* values here */ +``` + +### `components.InputMessageItemRoleSystem` + +```python +value: components.InputMessageItemRoleSystem = /* values here */ +``` + +### `components.InputMessageItemRoleDeveloper` + +```python +value: components.InputMessageItemRoleDeveloper = /* values here */ +``` + diff --git a/docs/components/inputmessageitemroleuser.mdx b/docs/components/inputmessageitemroleuser.mdx new file mode 100644 index 00000000..972c913a --- /dev/null +++ b/docs/components/inputmessageitemroleuser.mdx @@ -0,0 +1,15 @@ +--- +title: "InputMessageItemRoleUser" +--- + +## Example Usage + +```python +from openrouter.components import InputMessageItemRoleUser +value: InputMessageItemRoleUser = "user" +``` + + +## Values + +- `"user"` diff --git a/docs/components/inputmessageitemtypeinputimage.mdx b/docs/components/inputmessageitemtypeinputimage.mdx new file mode 100644 index 00000000..03fdcb0b --- /dev/null +++ b/docs/components/inputmessageitemtypeinputimage.mdx @@ -0,0 +1,15 @@ +--- +title: "InputMessageItemTypeInputImage" +--- + +## Example Usage + +```python +from openrouter.components import InputMessageItemTypeInputImage +value: InputMessageItemTypeInputImage = "input_image" +``` + + +## Values + +- `"input_image"` diff --git a/docs/components/inputmessageitemtypemessage.mdx b/docs/components/inputmessageitemtypemessage.mdx new file mode 100644 index 00000000..7b8d6b3b --- /dev/null +++ b/docs/components/inputmessageitemtypemessage.mdx @@ -0,0 +1,15 @@ +--- +title: "InputMessageItemTypeMessage" +--- + +## Example Usage + +```python +from openrouter.components import InputMessageItemTypeMessage +value: InputMessageItemTypeMessage = "message" +``` + + +## Values + +- `"message"` diff --git a/docs/components/inputmodality.md b/docs/components/inputmodality.md deleted file mode 100644 index 89bdc2a7..00000000 --- a/docs/components/inputmodality.md +++ /dev/null @@ -1,12 +0,0 @@ -# InputModality - - -## Values - -| Name | Value | -| ------- | ------- | -| `TEXT` | text | -| `IMAGE` | image | -| `FILE` | file | -| `AUDIO` | audio | -| `VIDEO` | video | \ No newline at end of file diff --git a/docs/components/inputmodality.mdx b/docs/components/inputmodality.mdx new file mode 100644 index 00000000..37302a3f --- /dev/null +++ b/docs/components/inputmodality.mdx @@ -0,0 +1,23 @@ +--- +title: "InputModality" +--- + +## Example Usage + +```python +from openrouter.components import InputModality + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: InputModality = "text" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"text"` +- `"image"` +- `"file"` +- `"audio"` +- `"video"` diff --git a/docs/components/inputreference.mdx b/docs/components/inputreference.mdx new file mode 100644 index 00000000..8332cd08 --- /dev/null +++ b/docs/components/inputreference.mdx @@ -0,0 +1,27 @@ +--- +title: "InputReference" +--- + +A reference asset used to guide video generation. Image references are supported by all providers; audio and video references are only honored by providers that support them (currently BytePlus Seedance 2.0). + + +## Supported Types + +### `components.ContentPartAudio` + +```python +value: components.ContentPartAudio = /* values here */ +``` + +### `components.ContentPartImage` + +```python +value: components.ContentPartImage = /* values here */ +``` + +### `components.ContentPartVideo` + +```python +value: components.ContentPartVideo = /* values here */ +``` + diff --git a/docs/components/inputschema.mdx b/docs/components/inputschema.mdx new file mode 100644 index 00000000..0adafb65 --- /dev/null +++ b/docs/components/inputschema.mdx @@ -0,0 +1,12 @@ +--- +title: "InputSchema" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------- | -------------------------- | -------------------------- | -------------------------- | +| `properties` | *OptionalNullable[Any]* | :heavy_minus_sign: | N/A | +| `required` | List[*str*] | :heavy_minus_sign: | N/A | +| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `__pydantic_extra__` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/outputmessagecontent.md b/docs/components/inputscontent1.mdx similarity index 89% rename from docs/components/outputmessagecontent.md rename to docs/components/inputscontent1.mdx index d8ae814d..99897ec8 100644 --- a/docs/components/outputmessagecontent.md +++ b/docs/components/inputscontent1.mdx @@ -1,5 +1,6 @@ -# OutputMessageContent - +--- +title: "InputsContent1" +--- ## Supported Types diff --git a/docs/components/inputscontent2.mdx b/docs/components/inputscontent2.mdx new file mode 100644 index 00000000..2cfb9792 --- /dev/null +++ b/docs/components/inputscontent2.mdx @@ -0,0 +1,24 @@ +--- +title: "InputsContent2" +--- + +## Supported Types + +### `List[components.InputsContent1]` + +```python +value: List[components.InputsContent1] = /* values here */ +``` + +### `str` + +```python +value: str = /* values here */ +``` + +### `Any` + +```python +value: Any = /* values here */ +``` + diff --git a/docs/components/inputsmessage.mdx b/docs/components/inputsmessage.mdx new file mode 100644 index 00000000..60f7bd2f --- /dev/null +++ b/docs/components/inputsmessage.mdx @@ -0,0 +1,17 @@ +--- +title: "InputsMessage" +--- + +An output message item + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `content` | [Nullable[components.InputsContent2]](../components/inputscontent2.mdx) | :heavy_check_mark: | N/A | +| `id` | *str* | :heavy_check_mark: | N/A | +| `phase` | [OptionalNullable[components.InputsPhaseUnion]](../components/inputsphaseunion.mdx) | :heavy_minus_sign: | The phase of an assistant message. Use `commentary` for an intermediate assistant message and `final_answer` for the final assistant message. For follow-up requests with models like `gpt-5.3-codex` and later, preserve and resend phase on all assistant messages. Omitting it can degrade performance. Not used for user messages. | +| `role` | [components.InputsRole](../components/inputsrole.mdx) | :heavy_check_mark: | N/A | +| `status` | [Optional[components.InputsStatusUnion1]](../components/inputsstatusunion1.mdx) | :heavy_minus_sign: | N/A | +| `type` | [components.InputsTypeMessage](../components/inputstypemessage.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/inputsphasecommentary.mdx b/docs/components/inputsphasecommentary.mdx new file mode 100644 index 00000000..1c08b114 --- /dev/null +++ b/docs/components/inputsphasecommentary.mdx @@ -0,0 +1,15 @@ +--- +title: "InputsPhaseCommentary" +--- + +## Example Usage + +```python +from openrouter.components import InputsPhaseCommentary +value: InputsPhaseCommentary = "commentary" +``` + + +## Values + +- `"commentary"` diff --git a/docs/components/inputsphasefinalanswer.mdx b/docs/components/inputsphasefinalanswer.mdx new file mode 100644 index 00000000..6dc3c8e0 --- /dev/null +++ b/docs/components/inputsphasefinalanswer.mdx @@ -0,0 +1,15 @@ +--- +title: "InputsPhaseFinalAnswer" +--- + +## Example Usage + +```python +from openrouter.components import InputsPhaseFinalAnswer +value: InputsPhaseFinalAnswer = "final_answer" +``` + + +## Values + +- `"final_answer"` diff --git a/docs/components/inputsphaseunion.mdx b/docs/components/inputsphaseunion.mdx new file mode 100644 index 00000000..cad06700 --- /dev/null +++ b/docs/components/inputsphaseunion.mdx @@ -0,0 +1,27 @@ +--- +title: "InputsPhaseUnion" +--- + +The phase of an assistant message. Use `commentary` for an intermediate assistant message and `final_answer` for the final assistant message. For follow-up requests with models like `gpt-5.3-codex` and later, preserve and resend phase on all assistant messages. Omitting it can degrade performance. Not used for user messages. + + +## Supported Types + +### `components.InputsPhaseCommentary` + +```python +value: components.InputsPhaseCommentary = /* values here */ +``` + +### `components.InputsPhaseFinalAnswer` + +```python +value: components.InputsPhaseFinalAnswer = /* values here */ +``` + +### `Any` + +```python +value: Any = /* values here */ +``` + diff --git a/docs/components/inputsreasoning.mdx b/docs/components/inputsreasoning.mdx new file mode 100644 index 00000000..60e9a1a6 --- /dev/null +++ b/docs/components/inputsreasoning.mdx @@ -0,0 +1,19 @@ +--- +title: "InputsReasoning" +--- + +An output item containing reasoning + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `content` | List[[components.ReasoningTextContent](../components/reasoningtextcontent.mdx)] | :heavy_minus_sign: | N/A | | +| `encrypted_content` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `id` | *str* | :heavy_check_mark: | N/A | | +| `status` | [Optional[components.InputsStatusUnion2]](../components/inputsstatusunion2.mdx) | :heavy_minus_sign: | N/A | | +| `summary` | List[[components.ReasoningSummaryText](../components/reasoningsummarytext.mdx)] | :heavy_check_mark: | N/A | | +| `type` | [components.InputsTypeReasoning](../components/inputstypereasoning.mdx) | :heavy_check_mark: | N/A | | +| `format_` | [OptionalNullable[components.ReasoningFormat]](../components/reasoningformat.mdx) | :heavy_minus_sign: | N/A | unknown | +| `signature` | *OptionalNullable[str]* | :heavy_minus_sign: | A signature for the reasoning content, used for verification | EvcBCkgIChABGAIqQKkSDbRuVEQUk9qN1odC098l9SEj... | \ No newline at end of file diff --git a/docs/components/inputsrole.mdx b/docs/components/inputsrole.mdx new file mode 100644 index 00000000..e6e13f32 --- /dev/null +++ b/docs/components/inputsrole.mdx @@ -0,0 +1,15 @@ +--- +title: "InputsRole" +--- + +## Example Usage + +```python +from openrouter.components import InputsRole +value: InputsRole = "assistant" +``` + + +## Values + +- `"assistant"` diff --git a/docs/components/inputsstatuscompleted1.mdx b/docs/components/inputsstatuscompleted1.mdx new file mode 100644 index 00000000..b19646a7 --- /dev/null +++ b/docs/components/inputsstatuscompleted1.mdx @@ -0,0 +1,15 @@ +--- +title: "InputsStatusCompleted1" +--- + +## Example Usage + +```python +from openrouter.components import InputsStatusCompleted1 +value: InputsStatusCompleted1 = "completed" +``` + + +## Values + +- `"completed"` diff --git a/docs/components/inputsstatuscompleted2.mdx b/docs/components/inputsstatuscompleted2.mdx new file mode 100644 index 00000000..6830af4d --- /dev/null +++ b/docs/components/inputsstatuscompleted2.mdx @@ -0,0 +1,15 @@ +--- +title: "InputsStatusCompleted2" +--- + +## Example Usage + +```python +from openrouter.components import InputsStatusCompleted2 +value: InputsStatusCompleted2 = "completed" +``` + + +## Values + +- `"completed"` diff --git a/docs/components/inputsstatusincomplete1.mdx b/docs/components/inputsstatusincomplete1.mdx new file mode 100644 index 00000000..a022485c --- /dev/null +++ b/docs/components/inputsstatusincomplete1.mdx @@ -0,0 +1,15 @@ +--- +title: "InputsStatusIncomplete1" +--- + +## Example Usage + +```python +from openrouter.components import InputsStatusIncomplete1 +value: InputsStatusIncomplete1 = "incomplete" +``` + + +## Values + +- `"incomplete"` diff --git a/docs/components/inputsstatusincomplete2.mdx b/docs/components/inputsstatusincomplete2.mdx new file mode 100644 index 00000000..c84f517b --- /dev/null +++ b/docs/components/inputsstatusincomplete2.mdx @@ -0,0 +1,15 @@ +--- +title: "InputsStatusIncomplete2" +--- + +## Example Usage + +```python +from openrouter.components import InputsStatusIncomplete2 +value: InputsStatusIncomplete2 = "incomplete" +``` + + +## Values + +- `"incomplete"` diff --git a/docs/components/inputsstatusinprogress1.mdx b/docs/components/inputsstatusinprogress1.mdx new file mode 100644 index 00000000..4f9a03c2 --- /dev/null +++ b/docs/components/inputsstatusinprogress1.mdx @@ -0,0 +1,15 @@ +--- +title: "InputsStatusInProgress1" +--- + +## Example Usage + +```python +from openrouter.components import InputsStatusInProgress1 +value: InputsStatusInProgress1 = "in_progress" +``` + + +## Values + +- `"in_progress"` diff --git a/docs/components/inputsstatusinprogress2.mdx b/docs/components/inputsstatusinprogress2.mdx new file mode 100644 index 00000000..ded7acc1 --- /dev/null +++ b/docs/components/inputsstatusinprogress2.mdx @@ -0,0 +1,15 @@ +--- +title: "InputsStatusInProgress2" +--- + +## Example Usage + +```python +from openrouter.components import InputsStatusInProgress2 +value: InputsStatusInProgress2 = "in_progress" +``` + + +## Values + +- `"in_progress"` diff --git a/docs/components/inputsstatusunion1.mdx b/docs/components/inputsstatusunion1.mdx new file mode 100644 index 00000000..7b59ecdf --- /dev/null +++ b/docs/components/inputsstatusunion1.mdx @@ -0,0 +1,24 @@ +--- +title: "InputsStatusUnion1" +--- + +## Supported Types + +### `components.InputsStatusCompleted1` + +```python +value: components.InputsStatusCompleted1 = /* values here */ +``` + +### `components.InputsStatusIncomplete1` + +```python +value: components.InputsStatusIncomplete1 = /* values here */ +``` + +### `components.InputsStatusInProgress1` + +```python +value: components.InputsStatusInProgress1 = /* values here */ +``` + diff --git a/docs/components/inputsstatusunion2.mdx b/docs/components/inputsstatusunion2.mdx new file mode 100644 index 00000000..c82be8e0 --- /dev/null +++ b/docs/components/inputsstatusunion2.mdx @@ -0,0 +1,24 @@ +--- +title: "InputsStatusUnion2" +--- + +## Supported Types + +### `components.InputsStatusCompleted2` + +```python +value: components.InputsStatusCompleted2 = /* values here */ +``` + +### `components.InputsStatusIncomplete2` + +```python +value: components.InputsStatusIncomplete2 = /* values here */ +``` + +### `components.InputsStatusInProgress2` + +```python +value: components.InputsStatusInProgress2 = /* values here */ +``` + diff --git a/docs/components/inputstypemessage.mdx b/docs/components/inputstypemessage.mdx new file mode 100644 index 00000000..1a8200c4 --- /dev/null +++ b/docs/components/inputstypemessage.mdx @@ -0,0 +1,15 @@ +--- +title: "InputsTypeMessage" +--- + +## Example Usage + +```python +from openrouter.components import InputsTypeMessage +value: InputsTypeMessage = "message" +``` + + +## Values + +- `"message"` diff --git a/docs/components/inputstypereasoning.mdx b/docs/components/inputstypereasoning.mdx new file mode 100644 index 00000000..a585778e --- /dev/null +++ b/docs/components/inputstypereasoning.mdx @@ -0,0 +1,15 @@ +--- +title: "InputsTypeReasoning" +--- + +## Example Usage + +```python +from openrouter.components import InputsTypeReasoning +value: InputsTypeReasoning = "reasoning" +``` + + +## Values + +- `"reasoning"` diff --git a/docs/components/inputsunion.mdx b/docs/components/inputsunion.mdx new file mode 100644 index 00000000..33aee92c --- /dev/null +++ b/docs/components/inputsunion.mdx @@ -0,0 +1,21 @@ +--- +title: "InputsUnion" +--- + +Input for a response request - can be a string or array of items + + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `List[components.InputsUnion1]` + +```python +value: List[components.InputsUnion1] = /* values here */ +``` + diff --git a/docs/components/inputsunion1.mdx b/docs/components/inputsunion1.mdx new file mode 100644 index 00000000..de84f4c9 --- /dev/null +++ b/docs/components/inputsunion1.mdx @@ -0,0 +1,276 @@ +--- +title: "InputsUnion1" +--- + +## Supported Types + +### `components.ReasoningItem` + +```python +value: components.ReasoningItem = /* values here */ +``` + +### `components.EasyInputMessage` + +```python +value: components.EasyInputMessage = /* values here */ +``` + +### `components.InputMessageItem` + +```python +value: components.InputMessageItem = /* values here */ +``` + +### `components.FunctionCallItem` + +```python +value: components.FunctionCallItem = /* values here */ +``` + +### `components.FunctionCallOutputItem` + +```python +value: components.FunctionCallOutputItem = /* values here */ +``` + +### `components.ApplyPatchCallItem` + +```python +value: components.ApplyPatchCallItem = /* values here */ +``` + +### `components.ApplyPatchCallOutputItem` + +```python +value: components.ApplyPatchCallOutputItem = /* values here */ +``` + +### `components.InputsMessage` + +```python +value: components.InputsMessage = /* values here */ +``` + +### `components.InputsReasoning` + +```python +value: components.InputsReasoning = /* values here */ +``` + +### `components.OutputFunctionCallItem` + +```python +value: components.OutputFunctionCallItem = /* values here */ +``` + +### `components.OutputCustomToolCallItem` + +```python +value: components.OutputCustomToolCallItem = /* values here */ +``` + +### `components.OutputWebSearchCallItem` + +```python +value: components.OutputWebSearchCallItem = /* values here */ +``` + +### `components.OutputFileSearchCallItem` + +```python +value: components.OutputFileSearchCallItem = /* values here */ +``` + +### `components.OutputImageGenerationCallItem` + +```python +value: components.OutputImageGenerationCallItem = /* values here */ +``` + +### `components.OutputCodeInterpreterCallItem` + +```python +value: components.OutputCodeInterpreterCallItem = /* values here */ +``` + +### `components.OutputComputerCallItem` + +```python +value: components.OutputComputerCallItem = /* values here */ +``` + +### `components.OutputDatetimeItem` + +```python +value: components.OutputDatetimeItem = /* values here */ +``` + +### `components.OutputWebSearchServerToolItem` + +```python +value: components.OutputWebSearchServerToolItem = /* values here */ +``` + +### `components.OutputCodeInterpreterServerToolItem` + +```python +value: components.OutputCodeInterpreterServerToolItem = /* values here */ +``` + +### `components.OutputFileSearchServerToolItem` + +```python +value: components.OutputFileSearchServerToolItem = /* values here */ +``` + +### `components.OutputImageGenerationServerToolItem` + +```python +value: components.OutputImageGenerationServerToolItem = /* values here */ +``` + +### `components.OutputBrowserUseServerToolItem` + +```python +value: components.OutputBrowserUseServerToolItem = /* values here */ +``` + +### `components.OutputBashServerToolItem` + +```python +value: components.OutputBashServerToolItem = /* values here */ +``` + +### `components.OutputTextEditorServerToolItem` + +```python +value: components.OutputTextEditorServerToolItem = /* values here */ +``` + +### `components.OutputApplyPatchServerToolItem` + +```python +value: components.OutputApplyPatchServerToolItem = /* values here */ +``` + +### `components.OutputWebFetchServerToolItem` + +```python +value: components.OutputWebFetchServerToolItem = /* values here */ +``` + +### `components.OutputToolSearchServerToolItem` + +```python +value: components.OutputToolSearchServerToolItem = /* values here */ +``` + +### `components.OutputMemoryServerToolItem` + +```python +value: components.OutputMemoryServerToolItem = /* values here */ +``` + +### `components.OutputMcpServerToolItem` + +```python +value: components.OutputMcpServerToolItem = /* values here */ +``` + +### `components.OutputSearchModelsServerToolItem` + +```python +value: components.OutputSearchModelsServerToolItem = /* values here */ +``` + +### `components.OutputFusionServerToolItem` + +```python +value: components.OutputFusionServerToolItem = /* values here */ +``` + +### `components.OutputAdvisorServerToolItem` + +```python +value: components.OutputAdvisorServerToolItem = /* values here */ +``` + +### `components.OutputSubagentServerToolItem` + +```python +value: components.OutputSubagentServerToolItem = /* values here */ +``` + +### `components.LocalShellCallItem` + +```python +value: components.LocalShellCallItem = /* values here */ +``` + +### `components.LocalShellCallOutputItem` + +```python +value: components.LocalShellCallOutputItem = /* values here */ +``` + +### `components.ShellCallItem` + +```python +value: components.ShellCallItem = /* values here */ +``` + +### `components.ShellCallOutputItem` + +```python +value: components.ShellCallOutputItem = /* values here */ +``` + +### `components.McpListToolsItem` + +```python +value: components.McpListToolsItem = /* values here */ +``` + +### `components.McpApprovalRequestItem` + +```python +value: components.McpApprovalRequestItem = /* values here */ +``` + +### `components.McpApprovalResponseItem` + +```python +value: components.McpApprovalResponseItem = /* values here */ +``` + +### `components.McpCallItem` + +```python +value: components.McpCallItem = /* values here */ +``` + +### `components.CustomToolCallItem` + +```python +value: components.CustomToolCallItem = /* values here */ +``` + +### `components.CustomToolCallOutputItem` + +```python +value: components.CustomToolCallOutputItem = /* values here */ +``` + +### `components.CompactionItem` + +```python +value: components.CompactionItem = /* values here */ +``` + +### `components.ItemReferenceItem` + +```python +value: components.ItemReferenceItem = /* values here */ +``` + diff --git a/docs/components/inputtext.mdx b/docs/components/inputtext.mdx new file mode 100644 index 00000000..5ebcb836 --- /dev/null +++ b/docs/components/inputtext.mdx @@ -0,0 +1,13 @@ +--- +title: "InputText" +--- + +Text input content item + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `text` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.InputTextType](../components/inputtexttype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/inputtexttype.mdx b/docs/components/inputtexttype.mdx new file mode 100644 index 00000000..18baf9c9 --- /dev/null +++ b/docs/components/inputtexttype.mdx @@ -0,0 +1,15 @@ +--- +title: "InputTextType" +--- + +## Example Usage + +```python +from openrouter.components import InputTextType +value: InputTextType = "input_text" +``` + + +## Values + +- `"input_text"` diff --git a/docs/components/inputtokensdetails.md b/docs/components/inputtokensdetails.mdx similarity index 88% rename from docs/components/inputtokensdetails.md rename to docs/components/inputtokensdetails.mdx index 7b6d8235..c58b1d02 100644 --- a/docs/components/inputtokensdetails.md +++ b/docs/components/inputtokensdetails.mdx @@ -1,5 +1,6 @@ -# InputTokensDetails - +--- +title: "InputTokensDetails" +--- ## Fields diff --git a/docs/components/inputunion.mdx b/docs/components/inputunion.mdx new file mode 100644 index 00000000..53081e47 --- /dev/null +++ b/docs/components/inputunion.mdx @@ -0,0 +1,21 @@ +--- +title: "InputUnion" +--- + +The input to the generation — either a prompt string or an array of messages + + +## Supported Types + +### `components.Input1` + +```python +value: components.Input1 = /* values here */ +``` + +### `components.Input2` + +```python +value: components.Input2 = /* values here */ +``` + diff --git a/docs/components/inputvideo.mdx b/docs/components/inputvideo.mdx new file mode 100644 index 00000000..a303045f --- /dev/null +++ b/docs/components/inputvideo.mdx @@ -0,0 +1,13 @@ +--- +title: "InputVideo" +--- + +Video input content item + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `type` | [components.InputVideoType](../components/inputvideotype.mdx) | :heavy_check_mark: | N/A | +| `video_url` | *str* | :heavy_check_mark: | A base64 data URL or remote URL that resolves to a video file | \ No newline at end of file diff --git a/docs/components/inputvideotype.mdx b/docs/components/inputvideotype.mdx new file mode 100644 index 00000000..31cfd353 --- /dev/null +++ b/docs/components/inputvideotype.mdx @@ -0,0 +1,15 @@ +--- +title: "InputVideoType" +--- + +## Example Usage + +```python +from openrouter.components import InputVideoType +value: InputVideoType = "input_video" +``` + + +## Values + +- `"input_video"` diff --git a/docs/components/instructtype.md b/docs/components/instructtype.md deleted file mode 100644 index 44c350d4..00000000 --- a/docs/components/instructtype.md +++ /dev/null @@ -1,31 +0,0 @@ -# InstructType - -Instruction format type - - -## Values - -| Name | Value | -| --------------- | --------------- | -| `NONE` | none | -| `AIROBOROS` | airoboros | -| `ALPACA` | alpaca | -| `ALPACA_MODIF` | alpaca-modif | -| `CHATML` | chatml | -| `CLAUDE` | claude | -| `CODE_LLAMA` | code-llama | -| `GEMMA` | gemma | -| `LLAMA2` | llama2 | -| `LLAMA3` | llama3 | -| `MISTRAL` | mistral | -| `NEMOTRON` | nemotron | -| `NEURAL` | neural | -| `OPENCHAT` | openchat | -| `PHI3` | phi3 | -| `RWKV` | rwkv | -| `VICUNA` | vicuna | -| `ZEPHYR` | zephyr | -| `DEEPSEEK_R1` | deepseek-r1 | -| `DEEPSEEK_V3_1` | deepseek-v3.1 | -| `QWQ` | qwq | -| `QWEN3` | qwen3 | \ No newline at end of file diff --git a/docs/components/instructtype.mdx b/docs/components/instructtype.mdx new file mode 100644 index 00000000..e3e71d16 --- /dev/null +++ b/docs/components/instructtype.mdx @@ -0,0 +1,42 @@ +--- +title: "InstructType" +--- + +Instruction format type + +## Example Usage + +```python +from openrouter.components import InstructType + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: InstructType = "none" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"none"` +- `"airoboros"` +- `"alpaca"` +- `"alpaca-modif"` +- `"chatml"` +- `"claude"` +- `"code-llama"` +- `"gemma"` +- `"llama2"` +- `"llama3"` +- `"mistral"` +- `"nemotron"` +- `"neural"` +- `"openchat"` +- `"phi3"` +- `"rwkv"` +- `"vicuna"` +- `"zephyr"` +- `"deepseek-r1"` +- `"deepseek-v3.1"` +- `"qwq"` +- `"qwen3"` diff --git a/docs/components/internalserverresponseerrordata.md b/docs/components/internalserverresponseerrordata.mdx similarity index 92% rename from docs/components/internalserverresponseerrordata.md rename to docs/components/internalserverresponseerrordata.mdx index b320ded9..4db529f2 100644 --- a/docs/components/internalserverresponseerrordata.md +++ b/docs/components/internalserverresponseerrordata.mdx @@ -1,4 +1,6 @@ -# InternalServerResponseErrorData +--- +title: "InternalServerResponseErrorData" +--- Error data for InternalServerResponse diff --git a/docs/components/itemreferenceitem.mdx b/docs/components/itemreferenceitem.mdx new file mode 100644 index 00000000..5d91c205 --- /dev/null +++ b/docs/components/itemreferenceitem.mdx @@ -0,0 +1,13 @@ +--- +title: "ItemReferenceItem" +--- + +A reference to a previous response item by ID + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.ItemReferenceItemType](../components/itemreferenceitemtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/itemreferenceitemtype.mdx b/docs/components/itemreferenceitemtype.mdx new file mode 100644 index 00000000..74c61e5f --- /dev/null +++ b/docs/components/itemreferenceitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ItemReferenceItemType" +--- + +## Example Usage + +```python +from openrouter.components import ItemReferenceItemType +value: ItemReferenceItemType = "item_reference" +``` + + +## Values + +- `"item_reference"` diff --git a/docs/components/keep.mdx b/docs/components/keep.mdx new file mode 100644 index 00000000..4a4da75a --- /dev/null +++ b/docs/components/keep.mdx @@ -0,0 +1,24 @@ +--- +title: "Keep" +--- + +## Supported Types + +### `components.AnthropicThinkingTurns` + +```python +value: components.AnthropicThinkingTurns = /* values here */ +``` + +### `components.KeepAll` + +```python +value: components.KeepAll = /* values here */ +``` + +### `components.KeepEnum` + +```python +value: components.KeepEnum = /* values here */ +``` + diff --git a/docs/components/keepall.mdx b/docs/components/keepall.mdx new file mode 100644 index 00000000..8f65526d --- /dev/null +++ b/docs/components/keepall.mdx @@ -0,0 +1,9 @@ +--- +title: "KeepAll" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| `type` | [components.KeepType](../components/keeptype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/keepenum.mdx b/docs/components/keepenum.mdx new file mode 100644 index 00000000..7790630b --- /dev/null +++ b/docs/components/keepenum.mdx @@ -0,0 +1,15 @@ +--- +title: "KeepEnum" +--- + +## Example Usage + +```python +from openrouter.components import KeepEnum +value: KeepEnum = "all" +``` + + +## Values + +- `"all"` diff --git a/docs/components/keeptype.mdx b/docs/components/keeptype.mdx new file mode 100644 index 00000000..99cde727 --- /dev/null +++ b/docs/components/keeptype.mdx @@ -0,0 +1,15 @@ +--- +title: "KeepType" +--- + +## Example Usage + +```python +from openrouter.components import KeepType +value: KeepType = "all" +``` + + +## Values + +- `"all"` diff --git a/docs/components/keyassignment.mdx b/docs/components/keyassignment.mdx new file mode 100644 index 00000000..3c18ed0f --- /dev/null +++ b/docs/components/keyassignment.mdx @@ -0,0 +1,15 @@ +--- +title: "KeyAssignment" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `assigned_by` | *Nullable[str]* | :heavy_check_mark: | User ID of who made the assignment | user_abc123 | +| `created_at` | *str* | :heavy_check_mark: | ISO 8601 timestamp of when the assignment was created | 2025-08-24T10:30:00Z | +| `guardrail_id` | *str* | :heavy_check_mark: | ID of the guardrail | 550e8400-e29b-41d4-a716-446655440001 | +| `id` | *str* | :heavy_check_mark: | Unique identifier for the assignment | 550e8400-e29b-41d4-a716-446655440000 | +| `key_hash` | *str* | :heavy_check_mark: | Hash of the assigned API key | c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93 | +| `key_label` | *str* | :heavy_check_mark: | Label of the API key | prod-key | +| `key_name` | *str* | :heavy_check_mark: | Name of the API key | Production Key | \ No newline at end of file diff --git a/docs/components/legacychatcontentvideo.mdx b/docs/components/legacychatcontentvideo.mdx new file mode 100644 index 00000000..f1d4b3d5 --- /dev/null +++ b/docs/components/legacychatcontentvideo.mdx @@ -0,0 +1,15 @@ +--- +title: "~~LegacyChatContentVideo~~" +--- + +Video input content part (legacy format - deprecated) + +> :warning: **DEPRECATED**: This will be removed in a future release, please migrate away from it as soon as possible. + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `type` | [components.LegacyChatContentVideoType](../components/legacychatcontentvideotype.mdx) | :heavy_check_mark: | N/A | | +| `video_url` | [components.ChatContentVideoInput](../components/chatcontentvideoinput.mdx) | :heavy_check_mark: | Video input object | \{
"url": "https://example.com/video.mp4"
} | \ No newline at end of file diff --git a/docs/components/legacychatcontentvideotype.mdx b/docs/components/legacychatcontentvideotype.mdx new file mode 100644 index 00000000..63991d9b --- /dev/null +++ b/docs/components/legacychatcontentvideotype.mdx @@ -0,0 +1,15 @@ +--- +title: "LegacyChatContentVideoType" +--- + +## Example Usage + +```python +from openrouter.components import LegacyChatContentVideoType +value: LegacyChatContentVideoType = "input_video" +``` + + +## Values + +- `"input_video"` diff --git a/docs/components/legacywebsearchservertool.mdx b/docs/components/legacywebsearchservertool.mdx new file mode 100644 index 00000000..e966af5d --- /dev/null +++ b/docs/components/legacywebsearchservertool.mdx @@ -0,0 +1,17 @@ +--- +title: "LegacyWebSearchServerTool" +--- + +Web search tool configuration + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `engine` | [Optional[components.WebSearchEngineEnum]](../components/websearchengineenum.mdx) | :heavy_minus_sign: | Which search engine to use. "auto" (default) uses native if the provider supports it, otherwise Exa. "native" forces the provider's built-in search. "exa" forces the Exa search API. "firecrawl" uses Firecrawl (requires BYOK). "parallel" uses the Parallel search API. "perplexity" uses the Perplexity Search API (raw ranked results). | auto | +| `filters` | [OptionalNullable[components.WebSearchDomainFilter]](../components/websearchdomainfilter.mdx) | :heavy_minus_sign: | N/A | \{
"allowed_domains": [
"example.com"
],
"excluded_domains": [
"spam.com"
]
} | +| `max_results` | *Optional[int]* | :heavy_minus_sign: | Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, Parallel, and Perplexity engines; ignored with native provider search. Perplexity supports a maximum of 20; values above 20 are clamped. | 5 | +| `search_context_size` | [Optional[components.SearchContextSizeEnum]](../components/searchcontextsizeenum.mdx) | :heavy_minus_sign: | Size of the search context for web search tools | medium | +| `type` | [components.LegacyWebSearchServerToolType](../components/legacywebsearchservertooltype.mdx) | :heavy_check_mark: | N/A | | +| `user_location` | [OptionalNullable[components.WebSearchUserLocation]](../components/websearchuserlocation.mdx) | :heavy_minus_sign: | User location information for web search | \{
"city": "San Francisco",
"country": "USA",
"region": "California",
"timezone": "America/Los_Angeles",
"type": "approximate"
} | \ No newline at end of file diff --git a/docs/components/legacywebsearchservertooltype.mdx b/docs/components/legacywebsearchservertooltype.mdx new file mode 100644 index 00000000..3bb4205e --- /dev/null +++ b/docs/components/legacywebsearchservertooltype.mdx @@ -0,0 +1,15 @@ +--- +title: "LegacyWebSearchServerToolType" +--- + +## Example Usage + +```python +from openrouter.components import LegacyWebSearchServerToolType +value: LegacyWebSearchServerToolType = "web_search" +``` + + +## Values + +- `"web_search"` diff --git a/docs/components/listbyokkeysresponse.mdx b/docs/components/listbyokkeysresponse.mdx new file mode 100644 index 00000000..4e7fce4c --- /dev/null +++ b/docs/components/listbyokkeysresponse.mdx @@ -0,0 +1,10 @@ +--- +title: "ListBYOKKeysResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `data` | List[[components.BYOKKey](../components/byokkey.mdx)] | :heavy_check_mark: | List of BYOK credentials. | | +| `total_count` | *int* | :heavy_check_mark: | Total number of BYOK credentials matching the filters. | 1 | \ No newline at end of file diff --git a/docs/components/listendpointsresponse.md b/docs/components/listendpointsresponse.md deleted file mode 100644 index 5a0af7d3..00000000 --- a/docs/components/listendpointsresponse.md +++ /dev/null @@ -1,15 +0,0 @@ -# ListEndpointsResponse - -List of available endpoints for a model - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `architecture` | [components.Architecture](../components/architecture.md) | :heavy_check_mark: | N/A | {
"input_modalities": [
"text"
],
"instruct_type": "chatml",
"modality": "text-\u003etext",
"output_modalities": [
"text"
],
"tokenizer": "GPT"
} | -| `created` | *int* | :heavy_check_mark: | Unix timestamp of when the model was created | 1692901234 | -| `description` | *str* | :heavy_check_mark: | Description of the model | GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. | -| `endpoints` | List[[components.PublicEndpoint](../components/publicendpoint.md)] | :heavy_check_mark: | List of available endpoints for this model | | -| `id` | *str* | :heavy_check_mark: | Unique identifier for the model | openai/gpt-4 | -| `name` | *str* | :heavy_check_mark: | Display name of the model | GPT-4 | \ No newline at end of file diff --git a/docs/components/listendpointsresponse.mdx b/docs/components/listendpointsresponse.mdx new file mode 100644 index 00000000..2687145f --- /dev/null +++ b/docs/components/listendpointsresponse.mdx @@ -0,0 +1,17 @@ +--- +title: "ListEndpointsResponse" +--- + +List of available endpoints for a model + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `architecture` | [components.Architecture](../components/architecture.mdx) | :heavy_check_mark: | N/A | \{
"instruct_type": "chatml",
"modality": "text",
"tokenizer": "GPT"
} | +| `created` | *int* | :heavy_check_mark: | Unix timestamp of when the model was created | 1692901234 | +| `description` | *str* | :heavy_check_mark: | Description of the model | GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. | +| `endpoints` | List[[components.PublicEndpoint](../components/publicendpoint.mdx)] | :heavy_check_mark: | List of available endpoints for this model | | +| `id` | *str* | :heavy_check_mark: | Unique identifier for the model | openai/gpt-4 | +| `name` | *str* | :heavy_check_mark: | Display name of the model | GPT-4 | \ No newline at end of file diff --git a/docs/components/listguardrailsresponse.mdx b/docs/components/listguardrailsresponse.mdx new file mode 100644 index 00000000..b62bb9a8 --- /dev/null +++ b/docs/components/listguardrailsresponse.mdx @@ -0,0 +1,10 @@ +--- +title: "ListGuardrailsResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `data` | List[[components.Guardrail](../components/guardrail.mdx)] | :heavy_check_mark: | List of guardrails | | +| `total_count` | *int* | :heavy_check_mark: | Total number of guardrails | 25 | \ No newline at end of file diff --git a/docs/components/listkeyassignmentsresponse.mdx b/docs/components/listkeyassignmentsresponse.mdx new file mode 100644 index 00000000..c6806c4a --- /dev/null +++ b/docs/components/listkeyassignmentsresponse.mdx @@ -0,0 +1,10 @@ +--- +title: "ListKeyAssignmentsResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `data` | List[[components.KeyAssignment](../components/keyassignment.mdx)] | :heavy_check_mark: | List of key assignments | | +| `total_count` | *int* | :heavy_check_mark: | Total number of key assignments for this guardrail | 25 | \ No newline at end of file diff --git a/docs/components/listmemberassignmentsresponse.mdx b/docs/components/listmemberassignmentsresponse.mdx new file mode 100644 index 00000000..9e72b130 --- /dev/null +++ b/docs/components/listmemberassignmentsresponse.mdx @@ -0,0 +1,10 @@ +--- +title: "ListMemberAssignmentsResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `data` | List[[components.MemberAssignment](../components/memberassignment.mdx)] | :heavy_check_mark: | List of member assignments | | +| `total_count` | *int* | :heavy_check_mark: | Total number of member assignments | 10 | \ No newline at end of file diff --git a/docs/components/listobservabilitydestinationsresponse.mdx b/docs/components/listobservabilitydestinationsresponse.mdx new file mode 100644 index 00000000..912c6caf --- /dev/null +++ b/docs/components/listobservabilitydestinationsresponse.mdx @@ -0,0 +1,10 @@ +--- +title: "ListObservabilityDestinationsResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `data` | List[[components.ObservabilityDestination](../components/observabilitydestination.mdx)] | :heavy_check_mark: | List of observability destinations. | | +| `total_count` | *int* | :heavy_check_mark: | Total number of destinations matching the filters. | 1 | \ No newline at end of file diff --git a/docs/components/listpresetsresponse.mdx b/docs/components/listpresetsresponse.mdx new file mode 100644 index 00000000..da04cab0 --- /dev/null +++ b/docs/components/listpresetsresponse.mdx @@ -0,0 +1,13 @@ +--- +title: "ListPresetsResponse" +--- + +A paginated list of presets. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `data` | List[[components.Preset](../components/preset.mdx)] | :heavy_check_mark: | N/A | +| `total_count` | *int* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/listpresetversionsresponse.mdx b/docs/components/listpresetversionsresponse.mdx new file mode 100644 index 00000000..768df799 --- /dev/null +++ b/docs/components/listpresetversionsresponse.mdx @@ -0,0 +1,13 @@ +--- +title: "ListPresetVersionsResponse" +--- + +A paginated list of preset versions. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `data` | List[[Nullable[components.PresetDesignatedVersion]](../components/presetdesignatedversion.mdx)] | :heavy_check_mark: | N/A | +| `total_count` | *int* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/listworkspacebudgetsresponse.mdx b/docs/components/listworkspacebudgetsresponse.mdx new file mode 100644 index 00000000..27bb746a --- /dev/null +++ b/docs/components/listworkspacebudgetsresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "ListWorkspaceBudgetsResponse" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `data` | List[[components.WorkspaceBudget](../components/workspacebudget.mdx)] | :heavy_check_mark: | List of budgets configured for the workspace | \ No newline at end of file diff --git a/docs/components/listworkspacesresponse.mdx b/docs/components/listworkspacesresponse.mdx new file mode 100644 index 00000000..b78013a4 --- /dev/null +++ b/docs/components/listworkspacesresponse.mdx @@ -0,0 +1,10 @@ +--- +title: "ListWorkspacesResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `data` | List[[components.Workspace](../components/workspace.mdx)] | :heavy_check_mark: | List of workspaces | | +| `total_count` | *int* | :heavy_check_mark: | Total number of workspaces | 5 | \ No newline at end of file diff --git a/docs/components/localshellcallitem.mdx b/docs/components/localshellcallitem.mdx new file mode 100644 index 00000000..c3ce8fe8 --- /dev/null +++ b/docs/components/localshellcallitem.mdx @@ -0,0 +1,16 @@ +--- +title: "LocalShellCallItem" +--- + +A local shell command execution call + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `action` | [components.LocalShellCallItemAction](../components/localshellcallitemaction.mdx) | :heavy_check_mark: | N/A | | +| `call_id` | *str* | :heavy_check_mark: | N/A | | +| `id` | *str* | :heavy_check_mark: | N/A | | +| `status` | [components.ToolCallStatus](../components/toolcallstatus.mdx) | :heavy_check_mark: | N/A | completed | +| `type` | [components.TypeLocalShellCall](../components/typelocalshellcall.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/localshellcallitemaction.mdx b/docs/components/localshellcallitemaction.mdx new file mode 100644 index 00000000..584d5392 --- /dev/null +++ b/docs/components/localshellcallitemaction.mdx @@ -0,0 +1,14 @@ +--- +title: "LocalShellCallItemAction" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| `command` | List[*str*] | :heavy_check_mark: | N/A | +| `env` | Dict[str, *str*] | :heavy_check_mark: | N/A | +| `timeout_ms` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | +| `type` | [components.TypeExec](../components/typeexec.mdx) | :heavy_check_mark: | N/A | +| `user` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `working_directory` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/localshellcalloutputitem.mdx b/docs/components/localshellcalloutputitem.mdx new file mode 100644 index 00000000..99fa6e2a --- /dev/null +++ b/docs/components/localshellcalloutputitem.mdx @@ -0,0 +1,15 @@ +--- +title: "LocalShellCallOutputItem" +--- + +Output from a local shell command execution + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | N/A | | +| `output` | *str* | :heavy_check_mark: | N/A | | +| `status` | [OptionalNullable[components.LocalShellCallOutputItemStatus]](../components/localshellcalloutputitemstatus.mdx) | :heavy_minus_sign: | N/A | completed | +| `type` | [components.LocalShellCallOutputItemType](../components/localshellcalloutputitemtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/localshellcalloutputitemstatus.mdx b/docs/components/localshellcalloutputitemstatus.mdx new file mode 100644 index 00000000..35fda260 --- /dev/null +++ b/docs/components/localshellcalloutputitemstatus.mdx @@ -0,0 +1,21 @@ +--- +title: "LocalShellCallOutputItemStatus" +--- + +## Example Usage + +```python +from openrouter.components import LocalShellCallOutputItemStatus + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: LocalShellCallOutputItemStatus = "in_progress" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"in_progress"` +- `"completed"` +- `"incomplete"` diff --git a/docs/components/localshellcalloutputitemtype.mdx b/docs/components/localshellcalloutputitemtype.mdx new file mode 100644 index 00000000..e67622cf --- /dev/null +++ b/docs/components/localshellcalloutputitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "LocalShellCallOutputItemType" +--- + +## Example Usage + +```python +from openrouter.components import LocalShellCallOutputItemType +value: LocalShellCallOutputItemType = "local_shell_call_output" +``` + + +## Values + +- `"local_shell_call_output"` diff --git a/docs/components/logic.mdx b/docs/components/logic.mdx new file mode 100644 index 00000000..e9b7b000 --- /dev/null +++ b/docs/components/logic.mdx @@ -0,0 +1,20 @@ +--- +title: "Logic" +--- + +## Example Usage + +```python +from openrouter.components import Logic + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Logic = "and" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"and"` +- `"or"` diff --git a/docs/components/logprob.mdx b/docs/components/logprob.mdx new file mode 100644 index 00000000..6345da5c --- /dev/null +++ b/docs/components/logprob.mdx @@ -0,0 +1,12 @@ +--- +title: "Logprob" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `bytes_` | List[*int*] | :heavy_check_mark: | N/A | +| `logprob` | *float* | :heavy_check_mark: | N/A | +| `token` | *str* | :heavy_check_mark: | N/A | +| `top_logprobs` | List[[components.ResponseOutputTextTopLogprob](../components/responseoutputtexttoplogprob.mdx)] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/maxprice.mdx b/docs/components/maxprice.mdx new file mode 100644 index 00000000..e1892e25 --- /dev/null +++ b/docs/components/maxprice.mdx @@ -0,0 +1,16 @@ +--- +title: "MaxPrice" +--- + +The object specifying the maximum price you want to pay for this request. USD price per million tokens, for prompt and completion. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `audio` | *Optional[str]* | :heavy_minus_sign: | Maximum price in USD per audio unit | +| `completion` | *Optional[str]* | :heavy_minus_sign: | Maximum price in USD per million completion tokens | +| `image` | *Optional[str]* | :heavy_minus_sign: | Maximum price in USD per image | +| `prompt` | *Optional[str]* | :heavy_minus_sign: | Maximum price in USD per million prompt tokens | +| `request` | *Optional[str]* | :heavy_minus_sign: | Maximum price in USD per request | \ No newline at end of file diff --git a/docs/components/mcpapprovalrequestitem.mdx b/docs/components/mcpapprovalrequestitem.mdx new file mode 100644 index 00000000..d02d6665 --- /dev/null +++ b/docs/components/mcpapprovalrequestitem.mdx @@ -0,0 +1,16 @@ +--- +title: "McpApprovalRequestItem" +--- + +Request for approval to execute an MCP tool + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `arguments` | *str* | :heavy_check_mark: | N/A | +| `id` | *str* | :heavy_check_mark: | N/A | +| `name` | *str* | :heavy_check_mark: | N/A | +| `server_label` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.McpApprovalRequestItemType](../components/mcpapprovalrequestitemtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/mcpapprovalrequestitemtype.mdx b/docs/components/mcpapprovalrequestitemtype.mdx new file mode 100644 index 00000000..dd72c2a9 --- /dev/null +++ b/docs/components/mcpapprovalrequestitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "McpApprovalRequestItemType" +--- + +## Example Usage + +```python +from openrouter.components import McpApprovalRequestItemType +value: McpApprovalRequestItemType = "mcp_approval_request" +``` + + +## Values + +- `"mcp_approval_request"` diff --git a/docs/components/mcpapprovalresponseitem.mdx b/docs/components/mcpapprovalresponseitem.mdx new file mode 100644 index 00000000..d67c1e40 --- /dev/null +++ b/docs/components/mcpapprovalresponseitem.mdx @@ -0,0 +1,16 @@ +--- +title: "McpApprovalResponseItem" +--- + +User response to an MCP tool approval request + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `approval_request_id` | *str* | :heavy_check_mark: | N/A | +| `approve` | *bool* | :heavy_check_mark: | N/A | +| `id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `reason` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `type` | [components.McpApprovalResponseItemType](../components/mcpapprovalresponseitemtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/mcpapprovalresponseitemtype.mdx b/docs/components/mcpapprovalresponseitemtype.mdx new file mode 100644 index 00000000..4bbaed26 --- /dev/null +++ b/docs/components/mcpapprovalresponseitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "McpApprovalResponseItemType" +--- + +## Example Usage + +```python +from openrouter.components import McpApprovalResponseItemType +value: McpApprovalResponseItemType = "mcp_approval_response" +``` + + +## Values + +- `"mcp_approval_response"` diff --git a/docs/components/mcpcallitem.mdx b/docs/components/mcpcallitem.mdx new file mode 100644 index 00000000..a025e7da --- /dev/null +++ b/docs/components/mcpcallitem.mdx @@ -0,0 +1,18 @@ +--- +title: "McpCallItem" +--- + +An MCP tool call with its output or error + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `arguments` | *str* | :heavy_check_mark: | N/A | +| `error` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `id` | *str* | :heavy_check_mark: | N/A | +| `name` | *str* | :heavy_check_mark: | N/A | +| `output` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `server_label` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.McpCallItemType](../components/mcpcallitemtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/mcpcallitemtype.mdx b/docs/components/mcpcallitemtype.mdx new file mode 100644 index 00000000..8e602755 --- /dev/null +++ b/docs/components/mcpcallitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "McpCallItemType" +--- + +## Example Usage + +```python +from openrouter.components import McpCallItemType +value: McpCallItemType = "mcp_call" +``` + + +## Values + +- `"mcp_call"` diff --git a/docs/components/mcplisttoolsitem.mdx b/docs/components/mcplisttoolsitem.mdx new file mode 100644 index 00000000..decba2cc --- /dev/null +++ b/docs/components/mcplisttoolsitem.mdx @@ -0,0 +1,16 @@ +--- +title: "McpListToolsItem" +--- + +List of available MCP tools from a server + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `error` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `id` | *str* | :heavy_check_mark: | N/A | +| `server_label` | *str* | :heavy_check_mark: | N/A | +| `tools` | List[[components.McpListToolsItemTool](../components/mcplisttoolsitemtool.mdx)] | :heavy_check_mark: | N/A | +| `type` | [components.McpListToolsItemType](../components/mcplisttoolsitemtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/mcplisttoolsitemtool.mdx b/docs/components/mcplisttoolsitemtool.mdx new file mode 100644 index 00000000..d73292f5 --- /dev/null +++ b/docs/components/mcplisttoolsitemtool.mdx @@ -0,0 +1,12 @@ +--- +title: "McpListToolsItemTool" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------- | -------------------------- | -------------------------- | -------------------------- | +| `annotations` | *OptionalNullable[Any]* | :heavy_minus_sign: | N/A | +| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `input_schema` | Dict[str, *Nullable[Any]*] | :heavy_check_mark: | N/A | +| `name` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/mcplisttoolsitemtype.mdx b/docs/components/mcplisttoolsitemtype.mdx new file mode 100644 index 00000000..633df50c --- /dev/null +++ b/docs/components/mcplisttoolsitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "McpListToolsItemType" +--- + +## Example Usage + +```python +from openrouter.components import McpListToolsItemType +value: McpListToolsItemType = "mcp_list_tools" +``` + + +## Values + +- `"mcp_list_tools"` diff --git a/docs/components/mcpservertool.mdx b/docs/components/mcpservertool.mdx new file mode 100644 index 00000000..70f05198 --- /dev/null +++ b/docs/components/mcpservertool.mdx @@ -0,0 +1,20 @@ +--- +title: "McpServerTool" +--- + +MCP (Model Context Protocol) tool configuration + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `allowed_tools` | [OptionalNullable[components.AllowedToolsUnion]](../components/allowedtoolsunion.mdx) | :heavy_minus_sign: | N/A | +| `authorization` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `connector_id` | [Optional[components.ConnectorID]](../components/connectorid.mdx) | :heavy_minus_sign: | N/A | +| `headers` | Dict[str, *str*] | :heavy_minus_sign: | N/A | +| `require_approval` | [OptionalNullable[components.RequireApprovalUnion]](../components/requireapprovalunion.mdx) | :heavy_minus_sign: | N/A | +| `server_description` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `server_label` | *str* | :heavy_check_mark: | N/A | +| `server_url` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `type` | [components.McpServerToolType](../components/mcpservertooltype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/mcpservertooltype.mdx b/docs/components/mcpservertooltype.mdx new file mode 100644 index 00000000..b86c9a1a --- /dev/null +++ b/docs/components/mcpservertooltype.mdx @@ -0,0 +1,15 @@ +--- +title: "McpServerToolType" +--- + +## Example Usage + +```python +from openrouter.components import McpServerToolType +value: McpServerToolType = "mcp" +``` + + +## Values + +- `"mcp"` diff --git a/docs/components/memberassignment.mdx b/docs/components/memberassignment.mdx new file mode 100644 index 00000000..589bcb61 --- /dev/null +++ b/docs/components/memberassignment.mdx @@ -0,0 +1,14 @@ +--- +title: "MemberAssignment" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | +| `assigned_by` | *Nullable[str]* | :heavy_check_mark: | User ID of who made the assignment | user_abc123 | +| `created_at` | *str* | :heavy_check_mark: | ISO 8601 timestamp of when the assignment was created | 2025-08-24T10:30:00Z | +| `guardrail_id` | *str* | :heavy_check_mark: | ID of the guardrail | 550e8400-e29b-41d4-a716-446655440001 | +| `id` | *str* | :heavy_check_mark: | Unique identifier for the assignment | 550e8400-e29b-41d4-a716-446655440000 | +| `organization_id` | *str* | :heavy_check_mark: | Organization ID | org_xyz789 | +| `user_id` | *str* | :heavy_check_mark: | Clerk user ID of the assigned member | user_abc123 | \ No newline at end of file diff --git a/docs/components/memorylimit.mdx b/docs/components/memorylimit.mdx new file mode 100644 index 00000000..11421f05 --- /dev/null +++ b/docs/components/memorylimit.mdx @@ -0,0 +1,22 @@ +--- +title: "MemoryLimit" +--- + +## Example Usage + +```python +from openrouter.components import MemoryLimit + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: MemoryLimit = "1g" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"1g"` +- `"4g"` +- `"16g"` +- `"64g"` diff --git a/docs/components/messagesadvisortoolresultblock.mdx b/docs/components/messagesadvisortoolresultblock.mdx new file mode 100644 index 00000000..ae6b8d91 --- /dev/null +++ b/docs/components/messagesadvisortoolresultblock.mdx @@ -0,0 +1,14 @@ +--- +title: "MessagesAdvisorToolResultBlock" +--- + +Advisor tool result from a prior assistant turn, replayed back to the model on the next turn. Mirrors the block Anthropic returns in assistant content when the `advisor_20260301` tool runs. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `content` | Dict[str, *Nullable[Any]*] | :heavy_check_mark: | N/A | +| `tool_use_id` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.MessagesAdvisorToolResultBlockType](../components/messagesadvisortoolresultblocktype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/messagesadvisortoolresultblocktype.mdx b/docs/components/messagesadvisortoolresultblocktype.mdx new file mode 100644 index 00000000..e15e5c95 --- /dev/null +++ b/docs/components/messagesadvisortoolresultblocktype.mdx @@ -0,0 +1,15 @@ +--- +title: "MessagesAdvisorToolResultBlockType" +--- + +## Example Usage + +```python +from openrouter.components import MessagesAdvisorToolResultBlockType +value: MessagesAdvisorToolResultBlockType = "advisor_tool_result" +``` + + +## Values + +- `"advisor_tool_result"` diff --git a/docs/components/messagesfallbackparam.mdx b/docs/components/messagesfallbackparam.mdx new file mode 100644 index 00000000..acb60842 --- /dev/null +++ b/docs/components/messagesfallbackparam.mdx @@ -0,0 +1,13 @@ +--- +title: "MessagesFallbackParam" +--- + +Fallback model to try when the primary model fails or refuses. Only the `model` field is supported; per-attempt overrides are rejected. + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | +| `model` | *str* | :heavy_check_mark: | N/A | | +| `__pydantic_extra__` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | \{
"model": "claude-opus-4-8"
} | \ No newline at end of file diff --git a/docs/components/messagesmessageparam.mdx b/docs/components/messagesmessageparam.mdx new file mode 100644 index 00000000..698d1f4b --- /dev/null +++ b/docs/components/messagesmessageparam.mdx @@ -0,0 +1,13 @@ +--- +title: "MessagesMessageParam" +--- + +Anthropic message with OpenRouter extensions + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `content` | [components.MessagesMessageParamContentUnion5](../components/messagesmessageparamcontentunion5.mdx) | :heavy_check_mark: | N/A | +| `role` | [components.MessagesMessageParamRole](../components/messagesmessageparamrole.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/messagesmessageparamcontentunion1.mdx b/docs/components/messagesmessageparamcontentunion1.mdx new file mode 100644 index 00000000..3c0a29ad --- /dev/null +++ b/docs/components/messagesmessageparamcontentunion1.mdx @@ -0,0 +1,36 @@ +--- +title: "MessagesMessageParamContentUnion1" +--- + +## Supported Types + +### `components.AnthropicTextBlockParam` + +```python +value: components.AnthropicTextBlockParam = /* values here */ +``` + +### `components.AnthropicImageBlockParam` + +```python +value: components.AnthropicImageBlockParam = /* values here */ +``` + +### `components.ContentToolReference` + +```python +value: components.ContentToolReference = /* values here */ +``` + +### `components.AnthropicSearchResultBlockParam` + +```python +value: components.AnthropicSearchResultBlockParam = /* values here */ +``` + +### `components.AnthropicDocumentBlockParam` + +```python +value: components.AnthropicDocumentBlockParam = /* values here */ +``` + diff --git a/docs/components/messagesmessageparamcontentunion2.mdx b/docs/components/messagesmessageparamcontentunion2.mdx new file mode 100644 index 00000000..f50498db --- /dev/null +++ b/docs/components/messagesmessageparamcontentunion2.mdx @@ -0,0 +1,18 @@ +--- +title: "MessagesMessageParamContentUnion2" +--- + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `List[components.MessagesMessageParamContentUnion1]` + +```python +value: List[components.MessagesMessageParamContentUnion1] = /* values here */ +``` + diff --git a/docs/components/messagesmessageparamcontentunion3.mdx b/docs/components/messagesmessageparamcontentunion3.mdx new file mode 100644 index 00000000..aacfcabc --- /dev/null +++ b/docs/components/messagesmessageparamcontentunion3.mdx @@ -0,0 +1,18 @@ +--- +title: "MessagesMessageParamContentUnion3" +--- + +## Supported Types + +### `List[components.AnthropicWebSearchResultBlockParam]` + +```python +value: List[components.AnthropicWebSearchResultBlockParam] = /* values here */ +``` + +### `components.ContentWebSearchToolResultError` + +```python +value: components.ContentWebSearchToolResultError = /* values here */ +``` + diff --git a/docs/components/messagesmessageparamcontentunion4.mdx b/docs/components/messagesmessageparamcontentunion4.mdx new file mode 100644 index 00000000..41beca7b --- /dev/null +++ b/docs/components/messagesmessageparamcontentunion4.mdx @@ -0,0 +1,78 @@ +--- +title: "MessagesMessageParamContentUnion4" +--- + +## Supported Types + +### `components.AnthropicTextBlockParam` + +```python +value: components.AnthropicTextBlockParam = /* values here */ +``` + +### `components.AnthropicImageBlockParam` + +```python +value: components.AnthropicImageBlockParam = /* values here */ +``` + +### `components.AnthropicDocumentBlockParam` + +```python +value: components.AnthropicDocumentBlockParam = /* values here */ +``` + +### `components.ContentToolUse` + +```python +value: components.ContentToolUse = /* values here */ +``` + +### `components.ContentToolResult` + +```python +value: components.ContentToolResult = /* values here */ +``` + +### `components.ContentThinking` + +```python +value: components.ContentThinking = /* values here */ +``` + +### `components.ContentRedactedThinking` + +```python +value: components.ContentRedactedThinking = /* values here */ +``` + +### `components.ContentServerToolUse` + +```python +value: components.ContentServerToolUse = /* values here */ +``` + +### `components.ContentWebSearchToolResult` + +```python +value: components.ContentWebSearchToolResult = /* values here */ +``` + +### `components.AnthropicSearchResultBlockParam` + +```python +value: components.AnthropicSearchResultBlockParam = /* values here */ +``` + +### `components.ContentCompaction` + +```python +value: components.ContentCompaction = /* values here */ +``` + +### `components.MessagesAdvisorToolResultBlock` + +```python +value: components.MessagesAdvisorToolResultBlock = /* values here */ +``` + diff --git a/docs/components/messagesmessageparamcontentunion5.mdx b/docs/components/messagesmessageparamcontentunion5.mdx new file mode 100644 index 00000000..f7bb2cc5 --- /dev/null +++ b/docs/components/messagesmessageparamcontentunion5.mdx @@ -0,0 +1,18 @@ +--- +title: "MessagesMessageParamContentUnion5" +--- + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `List[components.MessagesMessageParamContentUnion4]` + +```python +value: List[components.MessagesMessageParamContentUnion4] = /* values here */ +``` + diff --git a/docs/components/messagesmessageparamrole.mdx b/docs/components/messagesmessageparamrole.mdx new file mode 100644 index 00000000..ff70af30 --- /dev/null +++ b/docs/components/messagesmessageparamrole.mdx @@ -0,0 +1,21 @@ +--- +title: "MessagesMessageParamRole" +--- + +## Example Usage + +```python +from openrouter.components import MessagesMessageParamRole + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: MessagesMessageParamRole = "user" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"user"` +- `"assistant"` +- `"system"` diff --git a/docs/components/messagesmessageparamtypecompaction.mdx b/docs/components/messagesmessageparamtypecompaction.mdx new file mode 100644 index 00000000..371458c5 --- /dev/null +++ b/docs/components/messagesmessageparamtypecompaction.mdx @@ -0,0 +1,15 @@ +--- +title: "MessagesMessageParamTypeCompaction" +--- + +## Example Usage + +```python +from openrouter.components import MessagesMessageParamTypeCompaction +value: MessagesMessageParamTypeCompaction = "compaction" +``` + + +## Values + +- `"compaction"` diff --git a/docs/components/messagesoutputconfig.mdx b/docs/components/messagesoutputconfig.mdx new file mode 100644 index 00000000..b5ce8e91 --- /dev/null +++ b/docs/components/messagesoutputconfig.mdx @@ -0,0 +1,14 @@ +--- +title: "MessagesOutputConfig" +--- + +Configuration for controlling output behavior. Supports the effort parameter and structured output format. + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `effort` | [OptionalNullable[components.MessagesOutputConfigEffort]](../components/messagesoutputconfigeffort.mdx) | :heavy_minus_sign: | How much effort the model should put into its response. Higher effort levels may result in more thorough analysis but take longer. Valid values are `low`, `medium`, `high`, `xhigh`, or `max`. | medium | +| `format_` | [OptionalNullable[components.MessagesOutputConfigFormat]](../components/messagesoutputconfigformat.mdx) | :heavy_minus_sign: | A schema to specify Claude's output format in responses. See [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs). | | +| `task_budget` | [OptionalNullable[components.TaskBudget]](../components/taskbudget.mdx) | :heavy_minus_sign: | Task budget for an agentic turn. The model sees a countdown of remaining tokens and uses it to prioritize work and wind down gracefully. Advisory — does not enforce a hard cap. | \{
"total": 400000,
"type": "tokens"
} | \ No newline at end of file diff --git a/docs/components/messagesoutputconfigeffort.mdx b/docs/components/messagesoutputconfigeffort.mdx new file mode 100644 index 00000000..5de3f3fc --- /dev/null +++ b/docs/components/messagesoutputconfigeffort.mdx @@ -0,0 +1,25 @@ +--- +title: "MessagesOutputConfigEffort" +--- + +How much effort the model should put into its response. Higher effort levels may result in more thorough analysis but take longer. Valid values are `low`, `medium`, `high`, `xhigh`, or `max`. + +## Example Usage + +```python +from openrouter.components import MessagesOutputConfigEffort + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: MessagesOutputConfigEffort = "low" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"low"` +- `"medium"` +- `"high"` +- `"xhigh"` +- `"max"` diff --git a/docs/components/messagesoutputconfigformat.mdx b/docs/components/messagesoutputconfigformat.mdx new file mode 100644 index 00000000..fdec2e47 --- /dev/null +++ b/docs/components/messagesoutputconfigformat.mdx @@ -0,0 +1,13 @@ +--- +title: "MessagesOutputConfigFormat" +--- + +A schema to specify Claude's output format in responses. See [structured outputs](https://platform.claude.com/docs/en/build-with-claude/structured-outputs). + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `schema_` | Dict[str, *Nullable[Any]*] | :heavy_check_mark: | N/A | +| `type` | [components.MessagesOutputConfigTypeJSONSchema](../components/messagesoutputconfigtypejsonschema.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/messagesoutputconfigtypejsonschema.mdx b/docs/components/messagesoutputconfigtypejsonschema.mdx new file mode 100644 index 00000000..cff8f393 --- /dev/null +++ b/docs/components/messagesoutputconfigtypejsonschema.mdx @@ -0,0 +1,15 @@ +--- +title: "MessagesOutputConfigTypeJSONSchema" +--- + +## Example Usage + +```python +from openrouter.components import MessagesOutputConfigTypeJSONSchema +value: MessagesOutputConfigTypeJSONSchema = "json_schema" +``` + + +## Values + +- `"json_schema"` diff --git a/docs/components/messagesrequest.mdx b/docs/components/messagesrequest.mdx new file mode 100644 index 00000000..2b25d420 --- /dev/null +++ b/docs/components/messagesrequest.mdx @@ -0,0 +1,37 @@ +--- +title: "MessagesRequest" +--- + +Request schema for Anthropic Messages API endpoint + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `context_management` | [OptionalNullable[components.ContextManagement]](../components/contextmanagement.mdx) | :heavy_minus_sign: | N/A | | +| `fallbacks` | List[[components.MessagesFallbackParam](../components/messagesfallbackparam.mdx)] | :heavy_minus_sign: | Fallback models to try if the primary model fails or refuses, in order. Handled by OpenRouter multi-model routing rather than Anthropic server-side fallbacks; cannot be combined with `models`. Each entry accepts only `model`. Maximum of 3 entries. | [
\{
"model": "claude-opus-4-8"
}
] | +| `max_tokens` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `messages` | List[[components.MessagesMessageParam](../components/messagesmessageparam.mdx)] | :heavy_check_mark: | N/A | | +| `metadata` | [Optional[components.MessagesRequestMetadata]](../components/messagesrequestmetadata.mdx) | :heavy_minus_sign: | N/A | | +| `model` | *str* | :heavy_check_mark: | N/A | | +| `models` | List[*str*] | :heavy_minus_sign: | N/A | | +| `output_config` | [Optional[components.MessagesOutputConfig]](../components/messagesoutputconfig.mdx) | :heavy_minus_sign: | Configuration for controlling output behavior. Supports the effort parameter and structured output format. | \{
"effort": "medium"
} | +| `plugins` | List[[components.MessagesRequestPlugin](../components/messagesrequestplugin.mdx)] | :heavy_minus_sign: | Plugins you want to enable for this request, including their settings. | | +| `provider` | [OptionalNullable[components.ProviderPreferences]](../components/providerpreferences.mdx) | :heavy_minus_sign: | When multiple model providers are available, optionally indicate your routing preference. | \{
"allow_fallbacks": true
} | +| `service_tier` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `session_id` | *Optional[str]* | :heavy_minus_sign: | A unique identifier for grouping related requests (e.g., a conversation or agent workflow). When provided, OpenRouter uses it as the sticky routing key, routing all requests in the session to the same provider to maximize prompt cache hits. Also used for observability grouping. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. | | +| `speed` | [OptionalNullable[components.Speed]](../components/speed.mdx) | :heavy_minus_sign: | N/A | fast | +| `stop_sequences` | List[*str*] | :heavy_minus_sign: | N/A | | +| `stop_server_tools_when` | List[[components.StopServerToolsWhenCondition](../components/stopservertoolswhencondition.mdx)] | :heavy_minus_sign: | Stop conditions for the server-tool agent loop. Any condition firing halts the loop (OR logic). When set, this overrides `max_tool_calls`. | [
\{
"step_count": 5,
"type": "step_count_is"
},
\{
"max_cost_in_dollars": 0.5,
"type": "max_cost"
}
] | +| `stream` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `system` | [Optional[components.System]](../components/system.mdx) | :heavy_minus_sign: | N/A | | +| `temperature` | *Optional[float]* | :heavy_minus_sign: | N/A | | +| `thinking` | [Optional[components.Thinking]](../components/thinking.mdx) | :heavy_minus_sign: | N/A | | +| `tool_choice` | [Optional[components.ToolChoice]](../components/toolchoice.mdx) | :heavy_minus_sign: | N/A | | +| `tools` | List[[components.MessagesRequestToolUnion](../components/messagesrequesttoolunion.mdx)] | :heavy_minus_sign: | N/A | | +| `top_k` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `top_p` | *Optional[float]* | :heavy_minus_sign: | N/A | | +| `trace` | [Optional[components.TraceConfig]](../components/traceconfig.mdx) | :heavy_minus_sign: | Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. | \{
"trace_id": "trace-abc123",
"trace_name": "my-app-trace"
} | +| `user` | *Optional[str]* | :heavy_minus_sign: | A unique identifier representing your end-user, which helps distinguish between different users of your app. This allows your app to identify specific users in case of abuse reports, preventing your entire app from being affected by the actions of individual users. Maximum of 256 characters. | | \ No newline at end of file diff --git a/docs/components/messagesrequestmetadata.mdx b/docs/components/messagesrequestmetadata.mdx new file mode 100644 index 00000000..fb2a5563 --- /dev/null +++ b/docs/components/messagesrequestmetadata.mdx @@ -0,0 +1,9 @@ +--- +title: "MessagesRequestMetadata" +--- + +## Fields + +| Field | Type | Required | Description | +| ----------------------- | ----------------------- | ----------------------- | ----------------------- | +| `user_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/messagesrequestplugin.mdx b/docs/components/messagesrequestplugin.mdx new file mode 100644 index 00000000..eaf4fe4f --- /dev/null +++ b/docs/components/messagesrequestplugin.mdx @@ -0,0 +1,60 @@ +--- +title: "MessagesRequestPlugin" +--- + +## Supported Types + +### `components.AutoRouterPlugin` + +```python +value: components.AutoRouterPlugin = /* values here */ +``` + +### `components.ContextCompressionPlugin` + +```python +value: components.ContextCompressionPlugin = /* values here */ +``` + +### `components.FileParserPlugin` + +```python +value: components.FileParserPlugin = /* values here */ +``` + +### `components.FusionPlugin` + +```python +value: components.FusionPlugin = /* values here */ +``` + +### `components.ModerationPlugin` + +```python +value: components.ModerationPlugin = /* values here */ +``` + +### `components.ParetoRouterPlugin` + +```python +value: components.ParetoRouterPlugin = /* values here */ +``` + +### `components.ResponseHealingPlugin` + +```python +value: components.ResponseHealingPlugin = /* values here */ +``` + +### `components.WebSearchPlugin` + +```python +value: components.WebSearchPlugin = /* values here */ +``` + +### `components.WebFetchPlugin` + +```python +value: components.WebFetchPlugin = /* values here */ +``` + diff --git a/docs/components/messagesrequesttool.mdx b/docs/components/messagesrequesttool.mdx new file mode 100644 index 00000000..e6fae822 --- /dev/null +++ b/docs/components/messagesrequesttool.mdx @@ -0,0 +1,10 @@ +--- +title: "MessagesRequestTool" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------- | -------------------------- | -------------------------- | -------------------------- | +| `type` | *str* | :heavy_check_mark: | N/A | +| `__pydantic_extra__` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/messagesrequesttoolunion.mdx b/docs/components/messagesrequesttoolunion.mdx new file mode 100644 index 00000000..b24e866b --- /dev/null +++ b/docs/components/messagesrequesttoolunion.mdx @@ -0,0 +1,84 @@ +--- +title: "MessagesRequestToolUnion" +--- + +## Supported Types + +### `components.ToolCustom` + +```python +value: components.ToolCustom = /* values here */ +``` + +### `components.ToolBash20250124` + +```python +value: components.ToolBash20250124 = /* values here */ +``` + +### `components.ToolTextEditor20250124` + +```python +value: components.ToolTextEditor20250124 = /* values here */ +``` + +### `components.ToolWebSearch20250305` + +```python +value: components.ToolWebSearch20250305 = /* values here */ +``` + +### `components.ToolWebSearch20260209` + +```python +value: components.ToolWebSearch20260209 = /* values here */ +``` + +### `components.ToolAdvisor20260301` + +```python +value: components.ToolAdvisor20260301 = /* values here */ +``` + +### `components.BashServerTool` + +```python +value: components.BashServerTool = /* values here */ +``` + +### `components.DatetimeServerTool` + +```python +value: components.DatetimeServerTool = /* values here */ +``` + +### `components.ImageGenerationServerToolOpenRouter` + +```python +value: components.ImageGenerationServerToolOpenRouter = /* values here */ +``` + +### `components.ChatSearchModelsServerTool` + +```python +value: components.ChatSearchModelsServerTool = /* values here */ +``` + +### `components.WebFetchServerTool` + +```python +value: components.WebFetchServerTool = /* values here */ +``` + +### `components.OpenRouterWebSearchServerTool` + +```python +value: components.OpenRouterWebSearchServerTool = /* values here */ +``` + +### `components.MessagesRequestTool` + +```python +value: components.MessagesRequestTool = /* values here */ +``` + diff --git a/docs/components/metadatalevel.mdx b/docs/components/metadatalevel.mdx new file mode 100644 index 00000000..6025f743 --- /dev/null +++ b/docs/components/metadatalevel.mdx @@ -0,0 +1,22 @@ +--- +title: "MetadataLevel" +--- + +Opt-in level for surfacing routing metadata on the response under `openrouter_metadata`. + +## Example Usage + +```python +from openrouter.components import MetadataLevel + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: MetadataLevel = "disabled" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"disabled"` +- `"enabled"` diff --git a/docs/components/method.mdx b/docs/components/method.mdx new file mode 100644 index 00000000..90145e78 --- /dev/null +++ b/docs/components/method.mdx @@ -0,0 +1,20 @@ +--- +title: "Method" +--- + +## Example Usage + +```python +from openrouter.components import Method + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Method = "POST" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"POST"` +- `"PUT"` diff --git a/docs/components/modality.md b/docs/components/modality.md deleted file mode 100644 index 54561e47..00000000 --- a/docs/components/modality.md +++ /dev/null @@ -1,10 +0,0 @@ -# Modality - - -## Values - -| Name | Value | -| ------- | ------- | -| `TEXT` | text | -| `IMAGE` | image | -| `AUDIO` | audio | \ No newline at end of file diff --git a/docs/components/modality.mdx b/docs/components/modality.mdx new file mode 100644 index 00000000..e1d39ed8 --- /dev/null +++ b/docs/components/modality.mdx @@ -0,0 +1,21 @@ +--- +title: "Modality" +--- + +## Example Usage + +```python +from openrouter.components import Modality + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Modality = "text" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"text"` +- `"image"` +- `"audio"` diff --git a/docs/components/mode.mdx b/docs/components/mode.mdx new file mode 100644 index 00000000..4efff0eb --- /dev/null +++ b/docs/components/mode.mdx @@ -0,0 +1,18 @@ +--- +title: "Mode" +--- + +## Supported Types + +### `components.ModeAuto` + +```python +value: components.ModeAuto = /* values here */ +``` + +### `components.ModeRequired` + +```python +value: components.ModeRequired = /* values here */ +``` + diff --git a/docs/components/modeauto.mdx b/docs/components/modeauto.mdx new file mode 100644 index 00000000..432f9b63 --- /dev/null +++ b/docs/components/modeauto.mdx @@ -0,0 +1,15 @@ +--- +title: "ModeAuto" +--- + +## Example Usage + +```python +from openrouter.components import ModeAuto +value: ModeAuto = "auto" +``` + + +## Values + +- `"auto"` diff --git a/docs/components/model.md b/docs/components/model.mdx similarity index 80% rename from docs/components/model.md rename to docs/components/model.mdx index edb000fc..e8757cba 100644 --- a/docs/components/model.md +++ b/docs/components/model.mdx @@ -1,4 +1,6 @@ -# Model +--- +title: "Model" +--- Information about an AI model available on OpenRouter @@ -7,22 +9,22 @@ Information about an AI model available on OpenRouter | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `architecture` | [components.ModelArchitecture](../components/modelarchitecture.md) | :heavy_check_mark: | Model architecture information | {
"input_modalities": [
"text"
],
"instruct_type": "chatml",
"modality": "text-\u003etext",
"output_modalities": [
"text"
],
"tokenizer": "GPT"
} | -| `benchmarks` | [Optional[components.ModelBenchmarks]](../components/modelbenchmarks.md) | :heavy_minus_sign: | Third-party benchmark rankings for this model. Omitted when no benchmark data is available. | {
"artificial_analysis": {
"agentic_index": 55.8,
"coding_index": 63.2,
"intelligence_index": 71.4
},
"design_arena": [
{
"arena": "models",
"category": "website",
"elo": 1385.2,
"rank": 5,
"win_rate": 62.5
}
]
} | +| `architecture` | [components.ModelArchitecture](../components/modelarchitecture.mdx) | :heavy_check_mark: | Model architecture information | \{
"input_modalities": [
"text"
],
"instruct_type": "chatml",
"modality": "text-\u003etext",
"output_modalities": [
"text"
],
"tokenizer": "GPT"
} | +| `benchmarks` | [Optional[components.ModelBenchmarks]](../components/modelbenchmarks.mdx) | :heavy_minus_sign: | Third-party benchmark rankings for this model. Omitted when no benchmark data is available. | \{
"artificial_analysis": \{
"agentic_index": 55.8,
"coding_index": 63.2,
"intelligence_index": 71.4
},
"design_arena": [
\{
"arena": "models",
"category": "website",
"elo": 1385.2,
"rank": 5,
"win_rate": 62.5
}
]
} | | `canonical_slug` | *str* | :heavy_check_mark: | Canonical slug for the model | openai/gpt-4 | | `context_length` | *Nullable[int]* | :heavy_check_mark: | Maximum context length in tokens | 8192 | | `created` | *int* | :heavy_check_mark: | Unix timestamp of when the model was created | 1692901234 | -| `default_parameters` | [Nullable[components.DefaultParameters]](../components/defaultparameters.md) | :heavy_check_mark: | Default parameters for this model | {
"frequency_penalty": 0,
"presence_penalty": 0,
"repetition_penalty": 1,
"temperature": 0.7,
"top_k": 0,
"top_p": 0.9
} | +| `default_parameters` | [Nullable[components.DefaultParameters]](../components/defaultparameters.mdx) | :heavy_check_mark: | Default parameters for this model | \{
"frequency_penalty": 0,
"presence_penalty": 0,
"repetition_penalty": 1,
"temperature": 0.7,
"top_k": 0,
"top_p": 0.9
} | | `description` | *Optional[str]* | :heavy_minus_sign: | Description of the model | GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. | | `expiration_date` | *OptionalNullable[str]* | :heavy_minus_sign: | The date after which the model may be removed. ISO 8601 date string (YYYY-MM-DD) or null if no expiration. | 2025-06-01 | | `hugging_face_id` | *OptionalNullable[str]* | :heavy_minus_sign: | Hugging Face model identifier, if applicable | microsoft/DialoGPT-medium | | `id` | *str* | :heavy_check_mark: | Unique identifier for the model | openai/gpt-4 | | `knowledge_cutoff` | *OptionalNullable[str]* | :heavy_minus_sign: | The date up to which the model was trained on data. ISO 8601 date string (YYYY-MM-DD) or null if unknown. | 2024-10-01 | -| `links` | [components.ModelLinks](../components/modellinks.md) | :heavy_check_mark: | Related API endpoints and resources for this model. | {
"details": "/api/v1/models/openai/gpt-5.4/endpoints"
} | +| `links` | [components.ModelLinks](../components/modellinks.mdx) | :heavy_check_mark: | Related API endpoints and resources for this model. | \{
"details": "/api/v1/models/openai/gpt-5.4/endpoints"
} | | `name` | *str* | :heavy_check_mark: | Display name of the model | GPT-4 | -| `per_request_limits` | [Nullable[components.PerRequestLimits]](../components/perrequestlimits.md) | :heavy_check_mark: | Per-request token limits | {
"completion_tokens": 1000,
"prompt_tokens": 1000
} | -| `pricing` | [components.PublicPricing](../components/publicpricing.md) | :heavy_check_mark: | Pricing information for the model | {
"completion": "0.00006",
"image": "0",
"prompt": "0.00003",
"request": "0"
} | -| `reasoning` | [Optional[components.ModelReasoning]](../components/modelreasoning.md) | :heavy_minus_sign: | Reasoning effort configuration. Omitted for non-reasoning models and dynamic router models. | {
"default_effort": "medium",
"default_enabled": true,
"mandatory": false,
"supported_efforts": [
"high",
"medium",
"low",
"minimal"
]
} | -| `supported_parameters` | List[[components.Parameter](../components/parameter.md)] | :heavy_check_mark: | List of supported parameters for this model | | -| `supported_voices` | List[*str*] | :heavy_check_mark: | List of supported voice identifiers for TTS models. Null for non-TTS models. | | -| `top_provider` | [components.TopProviderInfo](../components/topproviderinfo.md) | :heavy_check_mark: | Information about the top provider for this model | {
"context_length": 8192,
"is_moderated": true,
"max_completion_tokens": 4096
} | \ No newline at end of file +| `per_request_limits` | [Nullable[components.PerRequestLimits]](../components/perrequestlimits.mdx) | :heavy_check_mark: | Per-request token limits | \{
"completion_tokens": 1000,
"prompt_tokens": 1000
} | +| `pricing` | [components.PublicPricing](../components/publicpricing.mdx) | :heavy_check_mark: | Pricing information for the model | \{
"completion": "0.00006",
"image": "0",
"prompt": "0.00003",
"request": "0"
} | +| `reasoning` | [Optional[components.ModelReasoning]](../components/modelreasoning.mdx) | :heavy_minus_sign: | Reasoning effort configuration. Omitted for non-reasoning models and dynamic router models. | \{
"default_effort": "medium",
"default_enabled": true,
"mandatory": false,
"supported_efforts": [
"high",
"medium",
"low",
"minimal"
]
} | +| `supported_parameters` | List[[components.Parameter](../components/parameter.mdx)] | :heavy_check_mark: | List of supported parameters for this model | | +| `supported_voices` | List[*str*] | :heavy_check_mark: | List of supported voice identifiers for TTS models. Null for non-TTS models. | null | +| `top_provider` | [components.TopProviderInfo](../components/topproviderinfo.mdx) | :heavy_check_mark: | Information about the top provider for this model | \{
"context_length": 8192,
"is_moderated": true,
"max_completion_tokens": 4096
} | \ No newline at end of file diff --git a/docs/components/modelarchitecture.md b/docs/components/modelarchitecture.mdx similarity index 67% rename from docs/components/modelarchitecture.md rename to docs/components/modelarchitecture.mdx index 7579049e..3035c9ba 100644 --- a/docs/components/modelarchitecture.md +++ b/docs/components/modelarchitecture.mdx @@ -1,4 +1,6 @@ -# ModelArchitecture +--- +title: "ModelArchitecture" +--- Model architecture information @@ -7,8 +9,8 @@ Model architecture information | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `input_modalities` | List[[components.InputModality](../components/inputmodality.md)] | :heavy_check_mark: | Supported input modalities | | -| `instruct_type` | [OptionalNullable[components.ModelArchitectureInstructType]](../components/modelarchitectureinstructtype.md) | :heavy_minus_sign: | Instruction format type | chatml | +| `input_modalities` | List[[components.InputModality](../components/inputmodality.mdx)] | :heavy_check_mark: | Supported input modalities | | +| `instruct_type` | [OptionalNullable[components.ModelArchitectureInstructType]](../components/modelarchitectureinstructtype.mdx) | :heavy_minus_sign: | Instruction format type | chatml | | `modality` | *Nullable[str]* | :heavy_check_mark: | Primary modality of the model | text->text | -| `output_modalities` | List[[components.OutputModality](../components/outputmodality.md)] | :heavy_check_mark: | Supported output modalities | | -| `tokenizer` | [Optional[components.ModelGroup]](../components/modelgroup.md) | :heavy_minus_sign: | Tokenizer type used by the model | GPT | \ No newline at end of file +| `output_modalities` | List[[components.OutputModality](../components/outputmodality.mdx)] | :heavy_check_mark: | Supported output modalities | | +| `tokenizer` | [Optional[components.ModelGroup]](../components/modelgroup.mdx) | :heavy_minus_sign: | Tokenizer type used by the model | GPT | \ No newline at end of file diff --git a/docs/components/modelarchitectureinstructtype.md b/docs/components/modelarchitectureinstructtype.md deleted file mode 100644 index eabbbe35..00000000 --- a/docs/components/modelarchitectureinstructtype.md +++ /dev/null @@ -1,31 +0,0 @@ -# ModelArchitectureInstructType - -Instruction format type - - -## Values - -| Name | Value | -| --------------- | --------------- | -| `NONE` | none | -| `AIROBOROS` | airoboros | -| `ALPACA` | alpaca | -| `ALPACA_MODIF` | alpaca-modif | -| `CHATML` | chatml | -| `CLAUDE` | claude | -| `CODE_LLAMA` | code-llama | -| `GEMMA` | gemma | -| `LLAMA2` | llama2 | -| `LLAMA3` | llama3 | -| `MISTRAL` | mistral | -| `NEMOTRON` | nemotron | -| `NEURAL` | neural | -| `OPENCHAT` | openchat | -| `PHI3` | phi3 | -| `RWKV` | rwkv | -| `VICUNA` | vicuna | -| `ZEPHYR` | zephyr | -| `DEEPSEEK_R1` | deepseek-r1 | -| `DEEPSEEK_V3_1` | deepseek-v3.1 | -| `QWQ` | qwq | -| `QWEN3` | qwen3 | \ No newline at end of file diff --git a/docs/components/modelarchitectureinstructtype.mdx b/docs/components/modelarchitectureinstructtype.mdx new file mode 100644 index 00000000..c8d02132 --- /dev/null +++ b/docs/components/modelarchitectureinstructtype.mdx @@ -0,0 +1,42 @@ +--- +title: "ModelArchitectureInstructType" +--- + +Instruction format type + +## Example Usage + +```python +from openrouter.components import ModelArchitectureInstructType + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ModelArchitectureInstructType = "none" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"none"` +- `"airoboros"` +- `"alpaca"` +- `"alpaca-modif"` +- `"chatml"` +- `"claude"` +- `"code-llama"` +- `"gemma"` +- `"llama2"` +- `"llama3"` +- `"mistral"` +- `"nemotron"` +- `"neural"` +- `"openchat"` +- `"phi3"` +- `"rwkv"` +- `"vicuna"` +- `"zephyr"` +- `"deepseek-r1"` +- `"deepseek-v3.1"` +- `"qwq"` +- `"qwen3"` diff --git a/docs/components/modelbenchmarks.mdx b/docs/components/modelbenchmarks.mdx new file mode 100644 index 00000000..f9d4890d --- /dev/null +++ b/docs/components/modelbenchmarks.mdx @@ -0,0 +1,13 @@ +--- +title: "ModelBenchmarks" +--- + +Third-party benchmark rankings for this model. Omitted when no benchmark data is available. + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `artificial_analysis` | [Optional[components.AABenchmarkEntry]](../components/aabenchmarkentry.mdx) | :heavy_minus_sign: | Artificial Analysis benchmark index scores. | \{
"agentic_index": 55.8,
"coding_index": 63.2,
"intelligence_index": 71.4
} | +| `design_arena` | List[[components.DABenchmarkEntry](../components/dabenchmarkentry.mdx)] | :heavy_check_mark: | Design Arena ELO rankings across arena+category pairs. | [
\{
"arena": "models",
"category": "website",
"elo": 1385.2,
"rank": 5,
"win_rate": 62.5
}
] | \ No newline at end of file diff --git a/docs/components/modelenum.mdx b/docs/components/modelenum.mdx new file mode 100644 index 00000000..815fb46e --- /dev/null +++ b/docs/components/modelenum.mdx @@ -0,0 +1,20 @@ +--- +title: "ModelEnum" +--- + +## Example Usage + +```python +from openrouter.components import ModelEnum + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ModelEnum = "gpt-image-1" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"gpt-image-1"` +- `"gpt-image-1-mini"` diff --git a/docs/components/modelgroup.md b/docs/components/modelgroup.md deleted file mode 100644 index 80ef8a09..00000000 --- a/docs/components/modelgroup.md +++ /dev/null @@ -1,29 +0,0 @@ -# ModelGroup - -Tokenizer type used by the model - - -## Values - -| Name | Value | -| ----------- | ----------- | -| `ROUTER` | Router | -| `MEDIA` | Media | -| `OTHER` | Other | -| `GPT` | GPT | -| `CLAUDE` | Claude | -| `GEMINI` | Gemini | -| `GEMMA` | Gemma | -| `GROK` | Grok | -| `COHERE` | Cohere | -| `NOVA` | Nova | -| `QWEN` | Qwen | -| `YI` | Yi | -| `DEEP_SEEK` | DeepSeek | -| `MISTRAL` | Mistral | -| `LLAMA2` | Llama2 | -| `LLAMA3` | Llama3 | -| `LLAMA4` | Llama4 | -| `PA_LM` | PaLM | -| `RWKV` | RWKV | -| `QWEN3` | Qwen3 | \ No newline at end of file diff --git a/docs/components/modelgroup.mdx b/docs/components/modelgroup.mdx new file mode 100644 index 00000000..f5c67b14 --- /dev/null +++ b/docs/components/modelgroup.mdx @@ -0,0 +1,40 @@ +--- +title: "ModelGroup" +--- + +Tokenizer type used by the model + +## Example Usage + +```python +from openrouter.components import ModelGroup + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ModelGroup = "Router" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"Router"` +- `"Media"` +- `"Other"` +- `"GPT"` +- `"Claude"` +- `"Gemini"` +- `"Gemma"` +- `"Grok"` +- `"Cohere"` +- `"Nova"` +- `"Qwen"` +- `"Yi"` +- `"DeepSeek"` +- `"Mistral"` +- `"Llama2"` +- `"Llama3"` +- `"Llama4"` +- `"PaLM"` +- `"RWKV"` +- `"Qwen3"` diff --git a/docs/components/modellinks.mdx b/docs/components/modellinks.mdx new file mode 100644 index 00000000..2a625998 --- /dev/null +++ b/docs/components/modellinks.mdx @@ -0,0 +1,12 @@ +--- +title: "ModelLinks" +--- + +Related API endpoints and resources for this model. + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------- | --------------------------------------- | --------------------------------------- | --------------------------------------- | --------------------------------------- | +| `details` | *str* | :heavy_check_mark: | URL for the model details/endpoints API | /api/v1/models/openai/gpt-5.4/endpoints | \ No newline at end of file diff --git a/docs/components/modelreasoning.mdx b/docs/components/modelreasoning.mdx new file mode 100644 index 00000000..b8d23642 --- /dev/null +++ b/docs/components/modelreasoning.mdx @@ -0,0 +1,16 @@ +--- +title: "ModelReasoning" +--- + +Reasoning effort configuration. Omitted for non-reasoning models and dynamic router models. + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `default_effort` | [OptionalNullable[components.DefaultEffort]](../components/defaulteffort.mdx) | :heavy_minus_sign: | N/A | medium | +| `default_enabled` | *Optional[bool]* | :heavy_minus_sign: | Default reasoning enabled state when the client does not set `reasoning.enabled`. | | +| `mandatory` | *bool* | :heavy_check_mark: | When true, reasoning cannot be disabled and effort "none" is rejected. | | +| `supported_efforts` | List[[Nullable[components.ReasoningEffort]](../components/reasoningeffort.mdx)] | :heavy_minus_sign: | Allowed reasoning effort values for this model, in descending effort order (highest first). Null means no allowlist — all gateway effort values are accepted. | | +| `supports_max_tokens` | *Optional[bool]* | :heavy_minus_sign: | Present and `true` when the model accepts `reasoning.max_tokens` in requests (Anthropic-style) instead of or in addition to `reasoning.effort`. Omitted otherwise. | | \ No newline at end of file diff --git a/docs/components/modelresponse.mdx b/docs/components/modelresponse.mdx new file mode 100644 index 00000000..9ced3306 --- /dev/null +++ b/docs/components/modelresponse.mdx @@ -0,0 +1,12 @@ +--- +title: "ModelResponse" +--- + +Single model response + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [components.Model](../components/model.mdx) | :heavy_check_mark: | Information about an AI model available on OpenRouter | \{
"architecture": \{
"input_modalities": [
"text"
],
"instruct_type": "chatml",
"modality": "text-\u003etext",
"output_modalities": [
"text"
],
"tokenizer": "GPT"
},
"canonical_slug": "openai/gpt-4",
"context_length": 8192,
"created": 1692901234,
"default_parameters": null,
"description": "GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.",
"expiration_date": null,
"id": "openai/gpt-4",
"knowledge_cutoff": null,
"links": \{
"details": "/api/v1/models/openai/gpt-5.4/endpoints"
},
"name": "GPT-4",
"per_request_limits": null,
"pricing": \{
"completion": "0.00006",
"image": "0",
"prompt": "0.00003",
"request": "0"
},
"reasoning": \{
"default_effort": "medium",
"default_enabled": true,
"mandatory": false,
"supported_efforts": [
"high",
"medium",
"low",
"minimal"
]
},
"supported_parameters": [
"temperature",
"top_p",
"max_tokens"
],
"supported_voices": null,
"top_provider": \{
"context_length": 8192,
"is_moderated": true,
"max_completion_tokens": 4096
}
} | \ No newline at end of file diff --git a/docs/components/modelscountresponse.md b/docs/components/modelscountresponse.mdx similarity index 75% rename from docs/components/modelscountresponse.md rename to docs/components/modelscountresponse.mdx index 4ad6e6a6..104a32fd 100644 --- a/docs/components/modelscountresponse.md +++ b/docs/components/modelscountresponse.mdx @@ -1,4 +1,6 @@ -# ModelsCountResponse +--- +title: "ModelsCountResponse" +--- Model count data @@ -7,4 +9,4 @@ Model count data | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| `data` | [components.ModelsCountResponseData](../components/modelscountresponsedata.md) | :heavy_check_mark: | Model count data | {
"count": 150
} | \ No newline at end of file +| `data` | [components.ModelsCountResponseData](../components/modelscountresponsedata.mdx) | :heavy_check_mark: | Model count data | \{
"count": 150
} | \ No newline at end of file diff --git a/docs/components/modelscountresponsedata.mdx b/docs/components/modelscountresponsedata.mdx new file mode 100644 index 00000000..9e1b9145 --- /dev/null +++ b/docs/components/modelscountresponsedata.mdx @@ -0,0 +1,12 @@ +--- +title: "ModelsCountResponseData" +--- + +Model count data + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | +| `count` | *int* | :heavy_check_mark: | Total number of available models | 150 | \ No newline at end of file diff --git a/docs/components/modelslistresponse.md b/docs/components/modelslistresponse.mdx similarity index 89% rename from docs/components/modelslistresponse.md rename to docs/components/modelslistresponse.mdx index 04b43f59..140ec11b 100644 --- a/docs/components/modelslistresponse.md +++ b/docs/components/modelslistresponse.mdx @@ -1,4 +1,6 @@ -# ModelsListResponse +--- +title: "ModelsListResponse" +--- List of available models @@ -7,4 +9,4 @@ List of available models | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `data` | List[[components.Model](../components/model.md)] | :heavy_check_mark: | List of available models | [
{
"architecture": {
"input_modalities": [
"text"
],
"instruct_type": "chatml",
"modality": "text-\u003etext",
"output_modalities": [
"text"
],
"tokenizer": "GPT"
},
"canonical_slug": "openai/gpt-4",
"context_length": 8192,
"created": 1692901234,
"default_parameters": null,
"description": "GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.",
"expiration_date": null,
"id": "openai/gpt-4",
"knowledge_cutoff": null,
"links": {
"details": "/api/v1/models/openai/gpt-5.4/endpoints"
},
"name": "GPT-4",
"per_request_limits": null,
"pricing": {
"completion": "0.00006",
"image": "0",
"prompt": "0.00003",
"request": "0"
},
"supported_parameters": [
"temperature",
"top_p",
"max_tokens"
],
"supported_voices": null,
"top_provider": {
"context_length": 8192,
"is_moderated": true,
"max_completion_tokens": 4096
}
}
] | \ No newline at end of file +| `data` | List[[components.Model](../components/model.mdx)] | :heavy_check_mark: | List of available models | [
\{
"architecture": \{
"input_modalities": [
"text"
],
"instruct_type": "chatml",
"modality": "text-\u003etext",
"output_modalities": [
"text"
],
"tokenizer": "GPT"
},
"canonical_slug": "openai/gpt-4",
"context_length": 8192,
"created": 1692901234,
"default_parameters": null,
"description": "GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.",
"expiration_date": null,
"id": "openai/gpt-4",
"knowledge_cutoff": null,
"links": \{
"details": "/api/v1/models/openai/gpt-5.4/endpoints"
},
"name": "GPT-4",
"per_request_limits": null,
"pricing": \{
"completion": "0.00006",
"image": "0",
"prompt": "0.00003",
"request": "0"
},
"supported_parameters": [
"temperature",
"top_p",
"max_tokens"
],
"supported_voices": null,
"top_provider": \{
"context_length": 8192,
"is_moderated": true,
"max_completion_tokens": 4096
}
}
] | \ No newline at end of file diff --git a/docs/components/moderation.mdx b/docs/components/moderation.mdx new file mode 100644 index 00000000..74bc3fbb --- /dev/null +++ b/docs/components/moderation.mdx @@ -0,0 +1,20 @@ +--- +title: "Moderation" +--- + +## Example Usage + +```python +from openrouter.components import Moderation + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Moderation = "auto" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"auto"` +- `"low"` diff --git a/docs/components/moderationplugin.mdx b/docs/components/moderationplugin.mdx new file mode 100644 index 00000000..0fd2af65 --- /dev/null +++ b/docs/components/moderationplugin.mdx @@ -0,0 +1,9 @@ +--- +title: "ModerationPlugin" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `id` | [components.ModerationPluginID](../components/moderationpluginid.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/moderationpluginid.mdx b/docs/components/moderationpluginid.mdx new file mode 100644 index 00000000..0d006f3b --- /dev/null +++ b/docs/components/moderationpluginid.mdx @@ -0,0 +1,15 @@ +--- +title: "ModerationPluginID" +--- + +## Example Usage + +```python +from openrouter.components import ModerationPluginID +value: ModerationPluginID = "moderation" +``` + + +## Values + +- `"moderation"` diff --git a/docs/components/moderequired.mdx b/docs/components/moderequired.mdx new file mode 100644 index 00000000..5ccf31af --- /dev/null +++ b/docs/components/moderequired.mdx @@ -0,0 +1,15 @@ +--- +title: "ModeRequired" +--- + +## Example Usage + +```python +from openrouter.components import ModeRequired +value: ModeRequired = "required" +``` + + +## Values + +- `"required"` diff --git a/docs/components/multimodalmedia.mdx b/docs/components/multimodalmedia.mdx new file mode 100644 index 00000000..9b621c1c --- /dev/null +++ b/docs/components/multimodalmedia.mdx @@ -0,0 +1,10 @@ +--- +title: "MultimodalMedia" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `data` | *str* | :heavy_check_mark: | N/A | +| `format_` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/nameadvisor.mdx b/docs/components/nameadvisor.mdx new file mode 100644 index 00000000..e7df77cc --- /dev/null +++ b/docs/components/nameadvisor.mdx @@ -0,0 +1,15 @@ +--- +title: "NameAdvisor" +--- + +## Example Usage + +```python +from openrouter.components import NameAdvisor +value: NameAdvisor = "advisor" +``` + + +## Values + +- `"advisor"` diff --git a/docs/components/namebash.mdx b/docs/components/namebash.mdx new file mode 100644 index 00000000..d6efdde4 --- /dev/null +++ b/docs/components/namebash.mdx @@ -0,0 +1,15 @@ +--- +title: "NameBash" +--- + +## Example Usage + +```python +from openrouter.components import NameBash +value: NameBash = "bash" +``` + + +## Values + +- `"bash"` diff --git a/docs/components/namestrreplaceeditor.mdx b/docs/components/namestrreplaceeditor.mdx new file mode 100644 index 00000000..5dea596e --- /dev/null +++ b/docs/components/namestrreplaceeditor.mdx @@ -0,0 +1,15 @@ +--- +title: "NameStrReplaceEditor" +--- + +## Example Usage + +```python +from openrouter.components import NameStrReplaceEditor +value: NameStrReplaceEditor = "str_replace_editor" +``` + + +## Values + +- `"str_replace_editor"` diff --git a/docs/components/namewebsearch1.mdx b/docs/components/namewebsearch1.mdx new file mode 100644 index 00000000..41ced4e2 --- /dev/null +++ b/docs/components/namewebsearch1.mdx @@ -0,0 +1,15 @@ +--- +title: "NameWebSearch1" +--- + +## Example Usage + +```python +from openrouter.components import NameWebSearch1 +value: NameWebSearch1 = "web_search" +``` + + +## Values + +- `"web_search"` diff --git a/docs/components/namewebsearch2.mdx b/docs/components/namewebsearch2.mdx new file mode 100644 index 00000000..f6803b05 --- /dev/null +++ b/docs/components/namewebsearch2.mdx @@ -0,0 +1,15 @@ +--- +title: "NameWebSearch2" +--- + +## Example Usage + +```python +from openrouter.components import NameWebSearch2 +value: NameWebSearch2 = "web_search" +``` + + +## Values + +- `"web_search"` diff --git a/docs/components/never.mdx b/docs/components/never.mdx new file mode 100644 index 00000000..37ce7d36 --- /dev/null +++ b/docs/components/never.mdx @@ -0,0 +1,9 @@ +--- +title: "Never" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `tool_names` | List[*str*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/notfoundresponseerrordata.md b/docs/components/notfoundresponseerrordata.mdx similarity index 93% rename from docs/components/notfoundresponseerrordata.md rename to docs/components/notfoundresponseerrordata.mdx index 0ba24852..1fed7371 100644 --- a/docs/components/notfoundresponseerrordata.md +++ b/docs/components/notfoundresponseerrordata.mdx @@ -1,4 +1,6 @@ -# NotFoundResponseErrorData +--- +title: "NotFoundResponseErrorData" +--- Error data for NotFoundResponse diff --git a/docs/components/observabilityarizedestination.mdx b/docs/components/observabilityarizedestination.mdx new file mode 100644 index 00000000..9eefceee --- /dev/null +++ b/docs/components/observabilityarizedestination.mdx @@ -0,0 +1,20 @@ +--- +title: "ObservabilityArizeDestination" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null | +| `config` | [components.ObservabilityArizeDestinationConfig](../components/observabilityarizedestinationconfig.mdx) | :heavy_check_mark: | N/A | | +| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z | +| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true | +| `filter_rules` | [Nullable[components.ObservabilityFilterRulesConfig]](../components/observabilityfilterrulesconfig.mdx) | :heavy_check_mark: | Optional structured filter rules controlling which events are forwarded. | null | +| `id` | *str* | :heavy_check_mark: | Stable public identifier for this destination. | 99999999-aaaa-bbbb-cccc-dddddddddddd | +| `name` | *Nullable[str]* | :heavy_check_mark: | Human-readable name for the destination. | Production Langfuse | +| `privacy_mode` | *bool* | :heavy_check_mark: | When true, request/response bodies are not forwarded to this destination — only metadata. | false | +| `sampling_rate` | *float* | :heavy_check_mark: | Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). | 1 | +| `type` | [components.ObservabilityArizeDestinationType](../components/observabilityarizedestinationtype.mdx) | :heavy_check_mark: | N/A | | +| `updated_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was last updated. | 2025-08-24T15:45:00Z | +| `workspace_id` | *str* | :heavy_check_mark: | ID of the workspace this destination belongs to. | 550e8400-e29b-41d4-a716-446655440000 | \ No newline at end of file diff --git a/docs/components/observabilityarizedestinationconfig.mdx b/docs/components/observabilityarizedestinationconfig.mdx new file mode 100644 index 00000000..9a4f66be --- /dev/null +++ b/docs/components/observabilityarizedestinationconfig.mdx @@ -0,0 +1,13 @@ +--- +title: "ObservabilityArizeDestinationConfig" +--- + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `api_key` | *str* | :heavy_check_mark: | N/A | +| `base_url` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `headers` | Dict[str, *str*] | :heavy_minus_sign: | Custom HTTP headers to include in requests to this destination. | +| `model_id` | *str* | :heavy_check_mark: | The name of the tracing project in Arize AX | +| `space_key` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/observabilityarizedestinationtype.mdx b/docs/components/observabilityarizedestinationtype.mdx new file mode 100644 index 00000000..8fb879fb --- /dev/null +++ b/docs/components/observabilityarizedestinationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ObservabilityArizeDestinationType" +--- + +## Example Usage + +```python +from openrouter.components import ObservabilityArizeDestinationType +value: ObservabilityArizeDestinationType = "arize" +``` + + +## Values + +- `"arize"` diff --git a/docs/components/observabilitybraintrustdestination.mdx b/docs/components/observabilitybraintrustdestination.mdx new file mode 100644 index 00000000..bd21dcc2 --- /dev/null +++ b/docs/components/observabilitybraintrustdestination.mdx @@ -0,0 +1,20 @@ +--- +title: "ObservabilityBraintrustDestination" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null | +| `config` | [components.ObservabilityBraintrustDestinationConfig](../components/observabilitybraintrustdestinationconfig.mdx) | :heavy_check_mark: | N/A | | +| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z | +| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true | +| `filter_rules` | [Nullable[components.ObservabilityFilterRulesConfig]](../components/observabilityfilterrulesconfig.mdx) | :heavy_check_mark: | Optional structured filter rules controlling which events are forwarded. | null | +| `id` | *str* | :heavy_check_mark: | Stable public identifier for this destination. | 99999999-aaaa-bbbb-cccc-dddddddddddd | +| `name` | *Nullable[str]* | :heavy_check_mark: | Human-readable name for the destination. | Production Langfuse | +| `privacy_mode` | *bool* | :heavy_check_mark: | When true, request/response bodies are not forwarded to this destination — only metadata. | false | +| `sampling_rate` | *float* | :heavy_check_mark: | Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). | 1 | +| `type` | [components.ObservabilityBraintrustDestinationType](../components/observabilitybraintrustdestinationtype.mdx) | :heavy_check_mark: | N/A | | +| `updated_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was last updated. | 2025-08-24T15:45:00Z | +| `workspace_id` | *str* | :heavy_check_mark: | ID of the workspace this destination belongs to. | 550e8400-e29b-41d4-a716-446655440000 | \ No newline at end of file diff --git a/docs/components/observabilitybraintrustdestinationconfig.mdx b/docs/components/observabilitybraintrustdestinationconfig.mdx new file mode 100644 index 00000000..56fcb623 --- /dev/null +++ b/docs/components/observabilitybraintrustdestinationconfig.mdx @@ -0,0 +1,12 @@ +--- +title: "ObservabilityBraintrustDestinationConfig" +--- + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `api_key` | *str* | :heavy_check_mark: | N/A | +| `base_url` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `headers` | Dict[str, *str*] | :heavy_minus_sign: | Custom HTTP headers to include in requests to this destination. | +| `project_id` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/observabilitybraintrustdestinationtype.mdx b/docs/components/observabilitybraintrustdestinationtype.mdx new file mode 100644 index 00000000..26860270 --- /dev/null +++ b/docs/components/observabilitybraintrustdestinationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ObservabilityBraintrustDestinationType" +--- + +## Example Usage + +```python +from openrouter.components import ObservabilityBraintrustDestinationType +value: ObservabilityBraintrustDestinationType = "braintrust" +``` + + +## Values + +- `"braintrust"` diff --git a/docs/components/observabilityclickhousedestination.mdx b/docs/components/observabilityclickhousedestination.mdx new file mode 100644 index 00000000..1791dbf3 --- /dev/null +++ b/docs/components/observabilityclickhousedestination.mdx @@ -0,0 +1,20 @@ +--- +title: "ObservabilityClickhouseDestination" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null | +| `config` | [components.ObservabilityClickhouseDestinationConfig](../components/observabilityclickhousedestinationconfig.mdx) | :heavy_check_mark: | N/A | | +| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z | +| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true | +| `filter_rules` | [Nullable[components.ObservabilityFilterRulesConfig]](../components/observabilityfilterrulesconfig.mdx) | :heavy_check_mark: | Optional structured filter rules controlling which events are forwarded. | null | +| `id` | *str* | :heavy_check_mark: | Stable public identifier for this destination. | 99999999-aaaa-bbbb-cccc-dddddddddddd | +| `name` | *Nullable[str]* | :heavy_check_mark: | Human-readable name for the destination. | Production Langfuse | +| `privacy_mode` | *bool* | :heavy_check_mark: | When true, request/response bodies are not forwarded to this destination — only metadata. | false | +| `sampling_rate` | *float* | :heavy_check_mark: | Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). | 1 | +| `type` | [components.ObservabilityClickhouseDestinationType](../components/observabilityclickhousedestinationtype.mdx) | :heavy_check_mark: | N/A | | +| `updated_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was last updated. | 2025-08-24T15:45:00Z | +| `workspace_id` | *str* | :heavy_check_mark: | ID of the workspace this destination belongs to. | 550e8400-e29b-41d4-a716-446655440000 | \ No newline at end of file diff --git a/docs/components/observabilityclickhousedestinationconfig.mdx b/docs/components/observabilityclickhousedestinationconfig.mdx new file mode 100644 index 00000000..8135b0f9 --- /dev/null +++ b/docs/components/observabilityclickhousedestinationconfig.mdx @@ -0,0 +1,14 @@ +--- +title: "ObservabilityClickhouseDestinationConfig" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `database` | *str* | :heavy_check_mark: | N/A | +| `headers` | Dict[str, *str*] | :heavy_minus_sign: | Custom HTTP headers to include in requests to this destination. | +| `host` | *str* | :heavy_check_mark: | N/A | +| `password` | *str* | :heavy_check_mark: | N/A | +| `table` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `username` | *str* | :heavy_check_mark: | If you have not set a specific username in ClickHouse, simply type in 'default' below. | \ No newline at end of file diff --git a/docs/components/observabilityclickhousedestinationtype.mdx b/docs/components/observabilityclickhousedestinationtype.mdx new file mode 100644 index 00000000..c450839c --- /dev/null +++ b/docs/components/observabilityclickhousedestinationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ObservabilityClickhouseDestinationType" +--- + +## Example Usage + +```python +from openrouter.components import ObservabilityClickhouseDestinationType +value: ObservabilityClickhouseDestinationType = "clickhouse" +``` + + +## Values + +- `"clickhouse"` diff --git a/docs/components/observabilitydatadogdestination.mdx b/docs/components/observabilitydatadogdestination.mdx new file mode 100644 index 00000000..c3a06316 --- /dev/null +++ b/docs/components/observabilitydatadogdestination.mdx @@ -0,0 +1,20 @@ +--- +title: "ObservabilityDatadogDestination" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null | +| `config` | [components.ObservabilityDatadogDestinationConfig](../components/observabilitydatadogdestinationconfig.mdx) | :heavy_check_mark: | N/A | | +| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z | +| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true | +| `filter_rules` | [Nullable[components.ObservabilityFilterRulesConfig]](../components/observabilityfilterrulesconfig.mdx) | :heavy_check_mark: | Optional structured filter rules controlling which events are forwarded. | null | +| `id` | *str* | :heavy_check_mark: | Stable public identifier for this destination. | 99999999-aaaa-bbbb-cccc-dddddddddddd | +| `name` | *Nullable[str]* | :heavy_check_mark: | Human-readable name for the destination. | Production Langfuse | +| `privacy_mode` | *bool* | :heavy_check_mark: | When true, request/response bodies are not forwarded to this destination — only metadata. | false | +| `sampling_rate` | *float* | :heavy_check_mark: | Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). | 1 | +| `type` | [components.ObservabilityDatadogDestinationType](../components/observabilitydatadogdestinationtype.mdx) | :heavy_check_mark: | N/A | | +| `updated_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was last updated. | 2025-08-24T15:45:00Z | +| `workspace_id` | *str* | :heavy_check_mark: | ID of the workspace this destination belongs to. | 550e8400-e29b-41d4-a716-446655440000 | \ No newline at end of file diff --git a/docs/components/observabilitydatadogdestinationconfig.mdx b/docs/components/observabilitydatadogdestinationconfig.mdx new file mode 100644 index 00000000..56d22797 --- /dev/null +++ b/docs/components/observabilitydatadogdestinationconfig.mdx @@ -0,0 +1,12 @@ +--- +title: "ObservabilityDatadogDestinationConfig" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `api_key` | *str* | :heavy_check_mark: | Datadog API key must have LLM Observability permissions. Create at: | +| `headers` | Dict[str, *str*] | :heavy_minus_sign: | Custom HTTP headers to include in requests to this destination. | +| `ml_app` | *str* | :heavy_check_mark: | Name to identify your application in Datadog LLM Observability | +| `url` | *Optional[str]* | :heavy_minus_sign: | Datadog API URL for your region (e.g., https://api.datadoghq.com, https://api.us3.datadoghq.com, https://api.datadoghq.eu) | \ No newline at end of file diff --git a/docs/components/observabilitydatadogdestinationtype.mdx b/docs/components/observabilitydatadogdestinationtype.mdx new file mode 100644 index 00000000..872d16f1 --- /dev/null +++ b/docs/components/observabilitydatadogdestinationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ObservabilityDatadogDestinationType" +--- + +## Example Usage + +```python +from openrouter.components import ObservabilityDatadogDestinationType +value: ObservabilityDatadogDestinationType = "datadog" +``` + + +## Values + +- `"datadog"` diff --git a/docs/components/observabilitydestination.mdx b/docs/components/observabilitydestination.mdx new file mode 100644 index 00000000..3fcbba14 --- /dev/null +++ b/docs/components/observabilitydestination.mdx @@ -0,0 +1,108 @@ +--- +title: "ObservabilityDestination" +--- + +## Supported Types + +### `components.ObservabilityArizeDestination` + +```python +value: components.ObservabilityArizeDestination = /* values here */ +``` + +### `components.ObservabilityBraintrustDestination` + +```python +value: components.ObservabilityBraintrustDestination = /* values here */ +``` + +### `components.ObservabilityClickhouseDestination` + +```python +value: components.ObservabilityClickhouseDestination = /* values here */ +``` + +### `components.ObservabilityDatadogDestination` + +```python +value: components.ObservabilityDatadogDestination = /* values here */ +``` + +### `components.ObservabilityGrafanaDestination` + +```python +value: components.ObservabilityGrafanaDestination = /* values here */ +``` + +### `components.ObservabilityLangfuseDestination` + +```python +value: components.ObservabilityLangfuseDestination = /* values here */ +``` + +### `components.ObservabilityLangsmithDestination` + +```python +value: components.ObservabilityLangsmithDestination = /* values here */ +``` + +### `components.ObservabilityNewrelicDestination` + +```python +value: components.ObservabilityNewrelicDestination = /* values here */ +``` + +### `components.ObservabilityOpikDestination` + +```python +value: components.ObservabilityOpikDestination = /* values here */ +``` + +### `components.ObservabilityOtelCollectorDestination` + +```python +value: components.ObservabilityOtelCollectorDestination = /* values here */ +``` + +### `components.ObservabilityPosthogDestination` + +```python +value: components.ObservabilityPosthogDestination = /* values here */ +``` + +### `components.ObservabilityRampDestination` + +```python +value: components.ObservabilityRampDestination = /* values here */ +``` + +### `components.ObservabilityS3Destination` + +```python +value: components.ObservabilityS3Destination = /* values here */ +``` + +### `components.ObservabilitySentryDestination` + +```python +value: components.ObservabilitySentryDestination = /* values here */ +``` + +### `components.ObservabilitySnowflakeDestination` + +```python +value: components.ObservabilitySnowflakeDestination = /* values here */ +``` + +### `components.ObservabilityWeaveDestination` + +```python +value: components.ObservabilityWeaveDestination = /* values here */ +``` + +### `components.ObservabilityWebhookDestination` + +```python +value: components.ObservabilityWebhookDestination = /* values here */ +``` + diff --git a/docs/components/observabilityfilterrulesconfig.mdx b/docs/components/observabilityfilterrulesconfig.mdx new file mode 100644 index 00000000..46330428 --- /dev/null +++ b/docs/components/observabilityfilterrulesconfig.mdx @@ -0,0 +1,13 @@ +--- +title: "ObservabilityFilterRulesConfig" +--- + +Optional structured filter rules controlling which events are forwarded. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| `enabled` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `groups` | List[[components.Group](../components/group.mdx)] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/observabilityfilterrulesconfigvalue.mdx b/docs/components/observabilityfilterrulesconfigvalue.mdx new file mode 100644 index 00000000..6b335f61 --- /dev/null +++ b/docs/components/observabilityfilterrulesconfigvalue.mdx @@ -0,0 +1,18 @@ +--- +title: "ObservabilityFilterRulesConfigValue" +--- + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `float` + +```python +value: float = /* values here */ +``` + diff --git a/docs/components/observabilitygrafanadestination.mdx b/docs/components/observabilitygrafanadestination.mdx new file mode 100644 index 00000000..f0c1cfd9 --- /dev/null +++ b/docs/components/observabilitygrafanadestination.mdx @@ -0,0 +1,20 @@ +--- +title: "ObservabilityGrafanaDestination" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null | +| `config` | [components.ObservabilityGrafanaDestinationConfig](../components/observabilitygrafanadestinationconfig.mdx) | :heavy_check_mark: | N/A | | +| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z | +| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true | +| `filter_rules` | [Nullable[components.ObservabilityFilterRulesConfig]](../components/observabilityfilterrulesconfig.mdx) | :heavy_check_mark: | Optional structured filter rules controlling which events are forwarded. | null | +| `id` | *str* | :heavy_check_mark: | Stable public identifier for this destination. | 99999999-aaaa-bbbb-cccc-dddddddddddd | +| `name` | *Nullable[str]* | :heavy_check_mark: | Human-readable name for the destination. | Production Langfuse | +| `privacy_mode` | *bool* | :heavy_check_mark: | When true, request/response bodies are not forwarded to this destination — only metadata. | false | +| `sampling_rate` | *float* | :heavy_check_mark: | Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). | 1 | +| `type` | [components.ObservabilityGrafanaDestinationType](../components/observabilitygrafanadestinationtype.mdx) | :heavy_check_mark: | N/A | | +| `updated_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was last updated. | 2025-08-24T15:45:00Z | +| `workspace_id` | *str* | :heavy_check_mark: | ID of the workspace this destination belongs to. | 550e8400-e29b-41d4-a716-446655440000 | \ No newline at end of file diff --git a/docs/components/observabilitygrafanadestinationconfig.mdx b/docs/components/observabilitygrafanadestinationconfig.mdx new file mode 100644 index 00000000..34d561c2 --- /dev/null +++ b/docs/components/observabilitygrafanadestinationconfig.mdx @@ -0,0 +1,12 @@ +--- +title: "ObservabilityGrafanaDestinationConfig" +--- + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `api_key` | *str* | :heavy_check_mark: | N/A | +| `base_url` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `headers` | Dict[str, *str*] | :heavy_minus_sign: | Custom HTTP headers to include in requests to this destination. | +| `instance_id` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/observabilitygrafanadestinationtype.mdx b/docs/components/observabilitygrafanadestinationtype.mdx new file mode 100644 index 00000000..b3a87a6b --- /dev/null +++ b/docs/components/observabilitygrafanadestinationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ObservabilityGrafanaDestinationType" +--- + +## Example Usage + +```python +from openrouter.components import ObservabilityGrafanaDestinationType +value: ObservabilityGrafanaDestinationType = "grafana" +``` + + +## Values + +- `"grafana"` diff --git a/docs/components/observabilitylangfusedestination.mdx b/docs/components/observabilitylangfusedestination.mdx new file mode 100644 index 00000000..5364c633 --- /dev/null +++ b/docs/components/observabilitylangfusedestination.mdx @@ -0,0 +1,20 @@ +--- +title: "ObservabilityLangfuseDestination" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null | +| `config` | [components.ObservabilityLangfuseDestinationConfig](../components/observabilitylangfusedestinationconfig.mdx) | :heavy_check_mark: | N/A | | +| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z | +| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true | +| `filter_rules` | [Nullable[components.ObservabilityFilterRulesConfig]](../components/observabilityfilterrulesconfig.mdx) | :heavy_check_mark: | Optional structured filter rules controlling which events are forwarded. | null | +| `id` | *str* | :heavy_check_mark: | Stable public identifier for this destination. | 99999999-aaaa-bbbb-cccc-dddddddddddd | +| `name` | *Nullable[str]* | :heavy_check_mark: | Human-readable name for the destination. | Production Langfuse | +| `privacy_mode` | *bool* | :heavy_check_mark: | When true, request/response bodies are not forwarded to this destination — only metadata. | false | +| `sampling_rate` | *float* | :heavy_check_mark: | Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). | 1 | +| `type` | [components.ObservabilityLangfuseDestinationType](../components/observabilitylangfusedestinationtype.mdx) | :heavy_check_mark: | N/A | | +| `updated_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was last updated. | 2025-08-24T15:45:00Z | +| `workspace_id` | *str* | :heavy_check_mark: | ID of the workspace this destination belongs to. | 550e8400-e29b-41d4-a716-446655440000 | \ No newline at end of file diff --git a/docs/components/observabilitylangfusedestinationconfig.mdx b/docs/components/observabilitylangfusedestinationconfig.mdx new file mode 100644 index 00000000..cabadb29 --- /dev/null +++ b/docs/components/observabilitylangfusedestinationconfig.mdx @@ -0,0 +1,12 @@ +--- +title: "ObservabilityLangfuseDestinationConfig" +--- + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `base_url` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `headers` | Dict[str, *str*] | :heavy_minus_sign: | Custom HTTP headers to include in requests to this destination. | +| `public_key` | *str* | :heavy_check_mark: | N/A | +| `secret_key` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/observabilitylangfusedestinationtype.mdx b/docs/components/observabilitylangfusedestinationtype.mdx new file mode 100644 index 00000000..0a0ef90a --- /dev/null +++ b/docs/components/observabilitylangfusedestinationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ObservabilityLangfuseDestinationType" +--- + +## Example Usage + +```python +from openrouter.components import ObservabilityLangfuseDestinationType +value: ObservabilityLangfuseDestinationType = "langfuse" +``` + + +## Values + +- `"langfuse"` diff --git a/docs/components/observabilitylangsmithdestination.mdx b/docs/components/observabilitylangsmithdestination.mdx new file mode 100644 index 00000000..20e1a3ec --- /dev/null +++ b/docs/components/observabilitylangsmithdestination.mdx @@ -0,0 +1,20 @@ +--- +title: "ObservabilityLangsmithDestination" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null | +| `config` | [components.ObservabilityLangsmithDestinationConfig](../components/observabilitylangsmithdestinationconfig.mdx) | :heavy_check_mark: | N/A | | +| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z | +| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true | +| `filter_rules` | [Nullable[components.ObservabilityFilterRulesConfig]](../components/observabilityfilterrulesconfig.mdx) | :heavy_check_mark: | Optional structured filter rules controlling which events are forwarded. | null | +| `id` | *str* | :heavy_check_mark: | Stable public identifier for this destination. | 99999999-aaaa-bbbb-cccc-dddddddddddd | +| `name` | *Nullable[str]* | :heavy_check_mark: | Human-readable name for the destination. | Production Langfuse | +| `privacy_mode` | *bool* | :heavy_check_mark: | When true, request/response bodies are not forwarded to this destination — only metadata. | false | +| `sampling_rate` | *float* | :heavy_check_mark: | Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). | 1 | +| `type` | [components.ObservabilityLangsmithDestinationType](../components/observabilitylangsmithdestinationtype.mdx) | :heavy_check_mark: | N/A | | +| `updated_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was last updated. | 2025-08-24T15:45:00Z | +| `workspace_id` | *str* | :heavy_check_mark: | ID of the workspace this destination belongs to. | 550e8400-e29b-41d4-a716-446655440000 | \ No newline at end of file diff --git a/docs/components/observabilitylangsmithdestinationconfig.mdx b/docs/components/observabilitylangsmithdestinationconfig.mdx new file mode 100644 index 00000000..0a1f76e5 --- /dev/null +++ b/docs/components/observabilitylangsmithdestinationconfig.mdx @@ -0,0 +1,13 @@ +--- +title: "ObservabilityLangsmithDestinationConfig" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `api_key` | *str* | :heavy_check_mark: | N/A | +| `endpoint` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `headers` | Dict[str, *str*] | :heavy_minus_sign: | Custom HTTP headers to include in requests to this destination. | +| `project` | *Optional[str]* | :heavy_minus_sign: | The name for this project, such as pr-openrouter-demo. Defaults to "main" if not set. | +| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Required for org-scoped API keys. Find this in your LangSmith workspace settings. | \ No newline at end of file diff --git a/docs/components/observabilitylangsmithdestinationtype.mdx b/docs/components/observabilitylangsmithdestinationtype.mdx new file mode 100644 index 00000000..4cc128c9 --- /dev/null +++ b/docs/components/observabilitylangsmithdestinationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ObservabilityLangsmithDestinationType" +--- + +## Example Usage + +```python +from openrouter.components import ObservabilityLangsmithDestinationType +value: ObservabilityLangsmithDestinationType = "langsmith" +``` + + +## Values + +- `"langsmith"` diff --git a/docs/components/observabilitynewrelicdestination.mdx b/docs/components/observabilitynewrelicdestination.mdx new file mode 100644 index 00000000..b04a7f80 --- /dev/null +++ b/docs/components/observabilitynewrelicdestination.mdx @@ -0,0 +1,20 @@ +--- +title: "ObservabilityNewrelicDestination" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null | +| `config` | [components.ObservabilityNewrelicDestinationConfig](../components/observabilitynewrelicdestinationconfig.mdx) | :heavy_check_mark: | N/A | | +| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z | +| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true | +| `filter_rules` | [Nullable[components.ObservabilityFilterRulesConfig]](../components/observabilityfilterrulesconfig.mdx) | :heavy_check_mark: | Optional structured filter rules controlling which events are forwarded. | null | +| `id` | *str* | :heavy_check_mark: | Stable public identifier for this destination. | 99999999-aaaa-bbbb-cccc-dddddddddddd | +| `name` | *Nullable[str]* | :heavy_check_mark: | Human-readable name for the destination. | Production Langfuse | +| `privacy_mode` | *bool* | :heavy_check_mark: | When true, request/response bodies are not forwarded to this destination — only metadata. | false | +| `sampling_rate` | *float* | :heavy_check_mark: | Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). | 1 | +| `type` | [components.ObservabilityNewrelicDestinationType](../components/observabilitynewrelicdestinationtype.mdx) | :heavy_check_mark: | N/A | | +| `updated_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was last updated. | 2025-08-24T15:45:00Z | +| `workspace_id` | *str* | :heavy_check_mark: | ID of the workspace this destination belongs to. | 550e8400-e29b-41d4-a716-446655440000 | \ No newline at end of file diff --git a/docs/components/observabilitynewrelicdestinationconfig.mdx b/docs/components/observabilitynewrelicdestinationconfig.mdx new file mode 100644 index 00000000..eb8542dc --- /dev/null +++ b/docs/components/observabilitynewrelicdestinationconfig.mdx @@ -0,0 +1,11 @@ +--- +title: "ObservabilityNewrelicDestinationConfig" +--- + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `headers` | Dict[str, *str*] | :heavy_minus_sign: | Custom HTTP headers to include in requests to this destination. | +| `license_key` | *str* | :heavy_check_mark: | N/A | +| `region` | [Optional[components.Region]](../components/region.mdx) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/observabilitynewrelicdestinationtype.mdx b/docs/components/observabilitynewrelicdestinationtype.mdx new file mode 100644 index 00000000..8f74ec6c --- /dev/null +++ b/docs/components/observabilitynewrelicdestinationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ObservabilityNewrelicDestinationType" +--- + +## Example Usage + +```python +from openrouter.components import ObservabilityNewrelicDestinationType +value: ObservabilityNewrelicDestinationType = "newrelic" +``` + + +## Values + +- `"newrelic"` diff --git a/docs/components/observabilityopikdestination.mdx b/docs/components/observabilityopikdestination.mdx new file mode 100644 index 00000000..82ab82d0 --- /dev/null +++ b/docs/components/observabilityopikdestination.mdx @@ -0,0 +1,20 @@ +--- +title: "ObservabilityOpikDestination" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null | +| `config` | [components.ObservabilityOpikDestinationConfig](../components/observabilityopikdestinationconfig.mdx) | :heavy_check_mark: | N/A | | +| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z | +| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true | +| `filter_rules` | [Nullable[components.ObservabilityFilterRulesConfig]](../components/observabilityfilterrulesconfig.mdx) | :heavy_check_mark: | Optional structured filter rules controlling which events are forwarded. | null | +| `id` | *str* | :heavy_check_mark: | Stable public identifier for this destination. | 99999999-aaaa-bbbb-cccc-dddddddddddd | +| `name` | *Nullable[str]* | :heavy_check_mark: | Human-readable name for the destination. | Production Langfuse | +| `privacy_mode` | *bool* | :heavy_check_mark: | When true, request/response bodies are not forwarded to this destination — only metadata. | false | +| `sampling_rate` | *float* | :heavy_check_mark: | Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). | 1 | +| `type` | [components.ObservabilityOpikDestinationType](../components/observabilityopikdestinationtype.mdx) | :heavy_check_mark: | N/A | | +| `updated_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was last updated. | 2025-08-24T15:45:00Z | +| `workspace_id` | *str* | :heavy_check_mark: | ID of the workspace this destination belongs to. | 550e8400-e29b-41d4-a716-446655440000 | \ No newline at end of file diff --git a/docs/components/observabilityopikdestinationconfig.mdx b/docs/components/observabilityopikdestinationconfig.mdx new file mode 100644 index 00000000..ce71d1f1 --- /dev/null +++ b/docs/components/observabilityopikdestinationconfig.mdx @@ -0,0 +1,12 @@ +--- +title: "ObservabilityOpikDestinationConfig" +--- + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `api_key` | *str* | :heavy_check_mark: | N/A | +| `headers` | Dict[str, *str*] | :heavy_minus_sign: | Custom HTTP headers to include in requests to this destination. | +| `project_name` | *str* | :heavy_check_mark: | N/A | +| `workspace` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/observabilityopikdestinationtype.mdx b/docs/components/observabilityopikdestinationtype.mdx new file mode 100644 index 00000000..f7689374 --- /dev/null +++ b/docs/components/observabilityopikdestinationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ObservabilityOpikDestinationType" +--- + +## Example Usage + +```python +from openrouter.components import ObservabilityOpikDestinationType +value: ObservabilityOpikDestinationType = "opik" +``` + + +## Values + +- `"opik"` diff --git a/docs/components/observabilityotelcollectordestination.mdx b/docs/components/observabilityotelcollectordestination.mdx new file mode 100644 index 00000000..43f3a512 --- /dev/null +++ b/docs/components/observabilityotelcollectordestination.mdx @@ -0,0 +1,20 @@ +--- +title: "ObservabilityOtelCollectorDestination" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null | +| `config` | [components.ObservabilityOtelCollectorDestinationConfig](../components/observabilityotelcollectordestinationconfig.mdx) | :heavy_check_mark: | N/A | | +| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z | +| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true | +| `filter_rules` | [Nullable[components.ObservabilityFilterRulesConfig]](../components/observabilityfilterrulesconfig.mdx) | :heavy_check_mark: | Optional structured filter rules controlling which events are forwarded. | null | +| `id` | *str* | :heavy_check_mark: | Stable public identifier for this destination. | 99999999-aaaa-bbbb-cccc-dddddddddddd | +| `name` | *Nullable[str]* | :heavy_check_mark: | Human-readable name for the destination. | Production Langfuse | +| `privacy_mode` | *bool* | :heavy_check_mark: | When true, request/response bodies are not forwarded to this destination — only metadata. | false | +| `sampling_rate` | *float* | :heavy_check_mark: | Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). | 1 | +| `type` | [components.ObservabilityOtelCollectorDestinationType](../components/observabilityotelcollectordestinationtype.mdx) | :heavy_check_mark: | N/A | | +| `updated_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was last updated. | 2025-08-24T15:45:00Z | +| `workspace_id` | *str* | :heavy_check_mark: | ID of the workspace this destination belongs to. | 550e8400-e29b-41d4-a716-446655440000 | \ No newline at end of file diff --git a/docs/components/observabilityotelcollectordestinationconfig.mdx b/docs/components/observabilityotelcollectordestinationconfig.mdx new file mode 100644 index 00000000..c0e46e24 --- /dev/null +++ b/docs/components/observabilityotelcollectordestinationconfig.mdx @@ -0,0 +1,10 @@ +--- +title: "ObservabilityOtelCollectorDestinationConfig" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `endpoint` | *str* | :heavy_check_mark: | N/A | +| `headers` | Dict[str, *str*] | :heavy_minus_sign: | Custom HTTP headers as a JSON object. For Axiom, use \{"Authorization": "Bearer xaat-xxx", "X-Axiom-Dataset": "your-dataset"} | \ No newline at end of file diff --git a/docs/components/observabilityotelcollectordestinationtype.mdx b/docs/components/observabilityotelcollectordestinationtype.mdx new file mode 100644 index 00000000..04d51fca --- /dev/null +++ b/docs/components/observabilityotelcollectordestinationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ObservabilityOtelCollectorDestinationType" +--- + +## Example Usage + +```python +from openrouter.components import ObservabilityOtelCollectorDestinationType +value: ObservabilityOtelCollectorDestinationType = "otel-collector" +``` + + +## Values + +- `"otel-collector"` diff --git a/docs/components/observabilityposthogdestination.mdx b/docs/components/observabilityposthogdestination.mdx new file mode 100644 index 00000000..e6b8ee1b --- /dev/null +++ b/docs/components/observabilityposthogdestination.mdx @@ -0,0 +1,20 @@ +--- +title: "ObservabilityPosthogDestination" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null | +| `config` | [components.ObservabilityPosthogDestinationConfig](../components/observabilityposthogdestinationconfig.mdx) | :heavy_check_mark: | N/A | | +| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z | +| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true | +| `filter_rules` | [Nullable[components.ObservabilityFilterRulesConfig]](../components/observabilityfilterrulesconfig.mdx) | :heavy_check_mark: | Optional structured filter rules controlling which events are forwarded. | null | +| `id` | *str* | :heavy_check_mark: | Stable public identifier for this destination. | 99999999-aaaa-bbbb-cccc-dddddddddddd | +| `name` | *Nullable[str]* | :heavy_check_mark: | Human-readable name for the destination. | Production Langfuse | +| `privacy_mode` | *bool* | :heavy_check_mark: | When true, request/response bodies are not forwarded to this destination — only metadata. | false | +| `sampling_rate` | *float* | :heavy_check_mark: | Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). | 1 | +| `type` | [components.ObservabilityPosthogDestinationType](../components/observabilityposthogdestinationtype.mdx) | :heavy_check_mark: | N/A | | +| `updated_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was last updated. | 2025-08-24T15:45:00Z | +| `workspace_id` | *str* | :heavy_check_mark: | ID of the workspace this destination belongs to. | 550e8400-e29b-41d4-a716-446655440000 | \ No newline at end of file diff --git a/docs/components/observabilityposthogdestinationconfig.mdx b/docs/components/observabilityposthogdestinationconfig.mdx new file mode 100644 index 00000000..2c0c48de --- /dev/null +++ b/docs/components/observabilityposthogdestinationconfig.mdx @@ -0,0 +1,11 @@ +--- +title: "ObservabilityPosthogDestinationConfig" +--- + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `api_key` | *str* | :heavy_check_mark: | N/A | +| `endpoint` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `headers` | Dict[str, *str*] | :heavy_minus_sign: | Custom HTTP headers to include in requests to this destination. | \ No newline at end of file diff --git a/docs/components/observabilityposthogdestinationtype.mdx b/docs/components/observabilityposthogdestinationtype.mdx new file mode 100644 index 00000000..15d5f4b2 --- /dev/null +++ b/docs/components/observabilityposthogdestinationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ObservabilityPosthogDestinationType" +--- + +## Example Usage + +```python +from openrouter.components import ObservabilityPosthogDestinationType +value: ObservabilityPosthogDestinationType = "posthog" +``` + + +## Values + +- `"posthog"` diff --git a/docs/components/observabilityrampdestination.mdx b/docs/components/observabilityrampdestination.mdx new file mode 100644 index 00000000..78218365 --- /dev/null +++ b/docs/components/observabilityrampdestination.mdx @@ -0,0 +1,20 @@ +--- +title: "ObservabilityRampDestination" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null | +| `config` | [components.ObservabilityRampDestinationConfig](../components/observabilityrampdestinationconfig.mdx) | :heavy_check_mark: | N/A | | +| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z | +| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true | +| `filter_rules` | [Nullable[components.ObservabilityFilterRulesConfig]](../components/observabilityfilterrulesconfig.mdx) | :heavy_check_mark: | Optional structured filter rules controlling which events are forwarded. | null | +| `id` | *str* | :heavy_check_mark: | Stable public identifier for this destination. | 99999999-aaaa-bbbb-cccc-dddddddddddd | +| `name` | *Nullable[str]* | :heavy_check_mark: | Human-readable name for the destination. | Production Langfuse | +| `privacy_mode` | *bool* | :heavy_check_mark: | When true, request/response bodies are not forwarded to this destination — only metadata. | false | +| `sampling_rate` | *float* | :heavy_check_mark: | Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). | 1 | +| `type` | [components.ObservabilityRampDestinationType](../components/observabilityrampdestinationtype.mdx) | :heavy_check_mark: | N/A | | +| `updated_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was last updated. | 2025-08-24T15:45:00Z | +| `workspace_id` | *str* | :heavy_check_mark: | ID of the workspace this destination belongs to. | 550e8400-e29b-41d4-a716-446655440000 | \ No newline at end of file diff --git a/docs/components/observabilityrampdestinationconfig.mdx b/docs/components/observabilityrampdestinationconfig.mdx new file mode 100644 index 00000000..809d417c --- /dev/null +++ b/docs/components/observabilityrampdestinationconfig.mdx @@ -0,0 +1,11 @@ +--- +title: "ObservabilityRampDestinationConfig" +--- + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `api_key` | *str* | :heavy_check_mark: | Generate this in your Ramp integration settings. | +| `base_url` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `headers` | Dict[str, *str*] | :heavy_minus_sign: | Custom HTTP headers to include in requests to Ramp. | \ No newline at end of file diff --git a/docs/components/observabilityrampdestinationtype.mdx b/docs/components/observabilityrampdestinationtype.mdx new file mode 100644 index 00000000..c3443701 --- /dev/null +++ b/docs/components/observabilityrampdestinationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ObservabilityRampDestinationType" +--- + +## Example Usage + +```python +from openrouter.components import ObservabilityRampDestinationType +value: ObservabilityRampDestinationType = "ramp" +``` + + +## Values + +- `"ramp"` diff --git a/docs/components/observabilitys3destination.mdx b/docs/components/observabilitys3destination.mdx new file mode 100644 index 00000000..14ec127b --- /dev/null +++ b/docs/components/observabilitys3destination.mdx @@ -0,0 +1,20 @@ +--- +title: "ObservabilityS3Destination" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null | +| `config` | [components.ObservabilityS3DestinationConfig](../components/observabilitys3destinationconfig.mdx) | :heavy_check_mark: | N/A | | +| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z | +| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true | +| `filter_rules` | [Nullable[components.ObservabilityFilterRulesConfig]](../components/observabilityfilterrulesconfig.mdx) | :heavy_check_mark: | Optional structured filter rules controlling which events are forwarded. | null | +| `id` | *str* | :heavy_check_mark: | Stable public identifier for this destination. | 99999999-aaaa-bbbb-cccc-dddddddddddd | +| `name` | *Nullable[str]* | :heavy_check_mark: | Human-readable name for the destination. | Production Langfuse | +| `privacy_mode` | *bool* | :heavy_check_mark: | When true, request/response bodies are not forwarded to this destination — only metadata. | false | +| `sampling_rate` | *float* | :heavy_check_mark: | Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). | 1 | +| `type` | [components.ObservabilityS3DestinationType](../components/observabilitys3destinationtype.mdx) | :heavy_check_mark: | N/A | | +| `updated_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was last updated. | 2025-08-24T15:45:00Z | +| `workspace_id` | *str* | :heavy_check_mark: | ID of the workspace this destination belongs to. | 550e8400-e29b-41d4-a716-446655440000 | \ No newline at end of file diff --git a/docs/components/observabilitys3destinationconfig.mdx b/docs/components/observabilitys3destinationconfig.mdx new file mode 100644 index 00000000..39742095 --- /dev/null +++ b/docs/components/observabilitys3destinationconfig.mdx @@ -0,0 +1,17 @@ +--- +title: "ObservabilityS3DestinationConfig" +--- + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `access_key_id` | *str* | :heavy_check_mark: | N/A | +| `bucket_name` | *str* | :heavy_check_mark: | N/A | +| `endpoint` | *Optional[str]* | :heavy_minus_sign: | Only for S3-compatible services like Cloudflare R2 (https://account-id.r2.cloudflarestorage.com) or MinIO. Leave blank for standard AWS S3. | +| `headers` | Dict[str, *str*] | :heavy_minus_sign: | Custom HTTP headers to include in requests to this destination. | +| `path_template` | *Optional[str]* | :heavy_minus_sign: | Template for S3 object path. The filename (\{traceId}-\{timestamp}.json) is automatically appended. Available variables: \{prefix}, \{date}, \{year}, \{month}, \{day}, \{apiKeyName} | +| `prefix` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `region` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `secret_access_key` | *str* | :heavy_check_mark: | N/A | +| `session_token` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/observabilitys3destinationtype.mdx b/docs/components/observabilitys3destinationtype.mdx new file mode 100644 index 00000000..0ef939a6 --- /dev/null +++ b/docs/components/observabilitys3destinationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ObservabilityS3DestinationType" +--- + +## Example Usage + +```python +from openrouter.components import ObservabilityS3DestinationType +value: ObservabilityS3DestinationType = "s3" +``` + + +## Values + +- `"s3"` diff --git a/docs/components/observabilitysentrydestination.mdx b/docs/components/observabilitysentrydestination.mdx new file mode 100644 index 00000000..6f37f7dc --- /dev/null +++ b/docs/components/observabilitysentrydestination.mdx @@ -0,0 +1,20 @@ +--- +title: "ObservabilitySentryDestination" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null | +| `config` | [components.ObservabilitySentryDestinationConfig](../components/observabilitysentrydestinationconfig.mdx) | :heavy_check_mark: | N/A | | +| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z | +| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true | +| `filter_rules` | [Nullable[components.ObservabilityFilterRulesConfig]](../components/observabilityfilterrulesconfig.mdx) | :heavy_check_mark: | Optional structured filter rules controlling which events are forwarded. | null | +| `id` | *str* | :heavy_check_mark: | Stable public identifier for this destination. | 99999999-aaaa-bbbb-cccc-dddddddddddd | +| `name` | *Nullable[str]* | :heavy_check_mark: | Human-readable name for the destination. | Production Langfuse | +| `privacy_mode` | *bool* | :heavy_check_mark: | When true, request/response bodies are not forwarded to this destination — only metadata. | false | +| `sampling_rate` | *float* | :heavy_check_mark: | Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). | 1 | +| `type` | [components.ObservabilitySentryDestinationType](../components/observabilitysentrydestinationtype.mdx) | :heavy_check_mark: | N/A | | +| `updated_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was last updated. | 2025-08-24T15:45:00Z | +| `workspace_id` | *str* | :heavy_check_mark: | ID of the workspace this destination belongs to. | 550e8400-e29b-41d4-a716-446655440000 | \ No newline at end of file diff --git a/docs/components/observabilitysentrydestinationconfig.mdx b/docs/components/observabilitysentrydestinationconfig.mdx new file mode 100644 index 00000000..99f775de --- /dev/null +++ b/docs/components/observabilitysentrydestinationconfig.mdx @@ -0,0 +1,11 @@ +--- +title: "ObservabilitySentryDestinationConfig" +--- + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `dsn` | *str* | :heavy_check_mark: | N/A | +| `headers` | Dict[str, *str*] | :heavy_minus_sign: | Custom HTTP headers to include in requests to this destination. | +| `otlp_endpoint` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/observabilitysentrydestinationtype.mdx b/docs/components/observabilitysentrydestinationtype.mdx new file mode 100644 index 00000000..b4948a38 --- /dev/null +++ b/docs/components/observabilitysentrydestinationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ObservabilitySentryDestinationType" +--- + +## Example Usage + +```python +from openrouter.components import ObservabilitySentryDestinationType +value: ObservabilitySentryDestinationType = "sentry" +``` + + +## Values + +- `"sentry"` diff --git a/docs/components/observabilitysnowflakedestination.mdx b/docs/components/observabilitysnowflakedestination.mdx new file mode 100644 index 00000000..0cc7f73d --- /dev/null +++ b/docs/components/observabilitysnowflakedestination.mdx @@ -0,0 +1,20 @@ +--- +title: "ObservabilitySnowflakeDestination" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null | +| `config` | [components.ObservabilitySnowflakeDestinationConfig](../components/observabilitysnowflakedestinationconfig.mdx) | :heavy_check_mark: | N/A | | +| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z | +| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true | +| `filter_rules` | [Nullable[components.ObservabilityFilterRulesConfig]](../components/observabilityfilterrulesconfig.mdx) | :heavy_check_mark: | Optional structured filter rules controlling which events are forwarded. | null | +| `id` | *str* | :heavy_check_mark: | Stable public identifier for this destination. | 99999999-aaaa-bbbb-cccc-dddddddddddd | +| `name` | *Nullable[str]* | :heavy_check_mark: | Human-readable name for the destination. | Production Langfuse | +| `privacy_mode` | *bool* | :heavy_check_mark: | When true, request/response bodies are not forwarded to this destination — only metadata. | false | +| `sampling_rate` | *float* | :heavy_check_mark: | Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). | 1 | +| `type` | [components.ObservabilitySnowflakeDestinationType](../components/observabilitysnowflakedestinationtype.mdx) | :heavy_check_mark: | N/A | | +| `updated_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was last updated. | 2025-08-24T15:45:00Z | +| `workspace_id` | *str* | :heavy_check_mark: | ID of the workspace this destination belongs to. | 550e8400-e29b-41d4-a716-446655440000 | \ No newline at end of file diff --git a/docs/components/observabilitysnowflakedestinationconfig.mdx b/docs/components/observabilitysnowflakedestinationconfig.mdx new file mode 100644 index 00000000..5ad320cb --- /dev/null +++ b/docs/components/observabilitysnowflakedestinationconfig.mdx @@ -0,0 +1,15 @@ +--- +title: "ObservabilitySnowflakeDestinationConfig" +--- + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `account` | *str* | :heavy_check_mark: | N/A | +| `database` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `headers` | Dict[str, *str*] | :heavy_minus_sign: | Custom HTTP headers to include in requests to this destination. | +| `schema_` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `table` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `token` | *str* | :heavy_check_mark: | N/A | +| `warehouse` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/observabilitysnowflakedestinationtype.mdx b/docs/components/observabilitysnowflakedestinationtype.mdx new file mode 100644 index 00000000..c3cc8732 --- /dev/null +++ b/docs/components/observabilitysnowflakedestinationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ObservabilitySnowflakeDestinationType" +--- + +## Example Usage + +```python +from openrouter.components import ObservabilitySnowflakeDestinationType +value: ObservabilitySnowflakeDestinationType = "snowflake" +``` + + +## Values + +- `"snowflake"` diff --git a/docs/components/observabilityweavedestination.mdx b/docs/components/observabilityweavedestination.mdx new file mode 100644 index 00000000..4f9d6b16 --- /dev/null +++ b/docs/components/observabilityweavedestination.mdx @@ -0,0 +1,20 @@ +--- +title: "ObservabilityWeaveDestination" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null | +| `config` | [components.ObservabilityWeaveDestinationConfig](../components/observabilityweavedestinationconfig.mdx) | :heavy_check_mark: | N/A | | +| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z | +| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true | +| `filter_rules` | [Nullable[components.ObservabilityFilterRulesConfig]](../components/observabilityfilterrulesconfig.mdx) | :heavy_check_mark: | Optional structured filter rules controlling which events are forwarded. | null | +| `id` | *str* | :heavy_check_mark: | Stable public identifier for this destination. | 99999999-aaaa-bbbb-cccc-dddddddddddd | +| `name` | *Nullable[str]* | :heavy_check_mark: | Human-readable name for the destination. | Production Langfuse | +| `privacy_mode` | *bool* | :heavy_check_mark: | When true, request/response bodies are not forwarded to this destination — only metadata. | false | +| `sampling_rate` | *float* | :heavy_check_mark: | Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). | 1 | +| `type` | [components.ObservabilityWeaveDestinationType](../components/observabilityweavedestinationtype.mdx) | :heavy_check_mark: | N/A | | +| `updated_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was last updated. | 2025-08-24T15:45:00Z | +| `workspace_id` | *str* | :heavy_check_mark: | ID of the workspace this destination belongs to. | 550e8400-e29b-41d4-a716-446655440000 | \ No newline at end of file diff --git a/docs/components/observabilityweavedestinationconfig.mdx b/docs/components/observabilityweavedestinationconfig.mdx new file mode 100644 index 00000000..89007854 --- /dev/null +++ b/docs/components/observabilityweavedestinationconfig.mdx @@ -0,0 +1,13 @@ +--- +title: "ObservabilityWeaveDestinationConfig" +--- + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `api_key` | *str* | :heavy_check_mark: | N/A | +| `base_url` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `entity` | *str* | :heavy_check_mark: | N/A | +| `headers` | Dict[str, *str*] | :heavy_minus_sign: | Custom HTTP headers to include in requests to this destination. | +| `project` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/observabilityweavedestinationtype.mdx b/docs/components/observabilityweavedestinationtype.mdx new file mode 100644 index 00000000..dcaffb20 --- /dev/null +++ b/docs/components/observabilityweavedestinationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ObservabilityWeaveDestinationType" +--- + +## Example Usage + +```python +from openrouter.components import ObservabilityWeaveDestinationType +value: ObservabilityWeaveDestinationType = "weave" +``` + + +## Values + +- `"weave"` diff --git a/docs/components/observabilitywebhookdestination.mdx b/docs/components/observabilitywebhookdestination.mdx new file mode 100644 index 00000000..6be7531c --- /dev/null +++ b/docs/components/observabilitywebhookdestination.mdx @@ -0,0 +1,20 @@ +--- +title: "ObservabilityWebhookDestination" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `api_key_hashes` | List[*str*] | :heavy_check_mark: | Optional allowlist of OpenRouter API key hashes (`api_keys.hash`) whose traffic is forwarded to this destination. `null` means all keys. | null | +| `config` | [components.ObservabilityWebhookDestinationConfig](../components/observabilitywebhookdestinationconfig.mdx) | :heavy_check_mark: | N/A | | +| `created_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was created. | 2025-08-24T10:30:00Z | +| `enabled` | *bool* | :heavy_check_mark: | Whether this destination is currently enabled. | true | +| `filter_rules` | [Nullable[components.ObservabilityFilterRulesConfig]](../components/observabilityfilterrulesconfig.mdx) | :heavy_check_mark: | Optional structured filter rules controlling which events are forwarded. | null | +| `id` | *str* | :heavy_check_mark: | Stable public identifier for this destination. | 99999999-aaaa-bbbb-cccc-dddddddddddd | +| `name` | *Nullable[str]* | :heavy_check_mark: | Human-readable name for the destination. | Production Langfuse | +| `privacy_mode` | *bool* | :heavy_check_mark: | When true, request/response bodies are not forwarded to this destination — only metadata. | false | +| `sampling_rate` | *float* | :heavy_check_mark: | Sampling rate for events sent to this destination, between 0.0001 and 1 (1 = 100%). | 1 | +| `type` | [components.ObservabilityWebhookDestinationType](../components/observabilitywebhookdestinationtype.mdx) | :heavy_check_mark: | N/A | | +| `updated_at` | *str* | :heavy_check_mark: | ISO timestamp of when the destination was last updated. | 2025-08-24T15:45:00Z | +| `workspace_id` | *str* | :heavy_check_mark: | ID of the workspace this destination belongs to. | 550e8400-e29b-41d4-a716-446655440000 | \ No newline at end of file diff --git a/docs/components/observabilitywebhookdestinationconfig.mdx b/docs/components/observabilitywebhookdestinationconfig.mdx new file mode 100644 index 00000000..8dab0b1a --- /dev/null +++ b/docs/components/observabilitywebhookdestinationconfig.mdx @@ -0,0 +1,11 @@ +--- +title: "ObservabilityWebhookDestinationConfig" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `headers` | Dict[str, *str*] | :heavy_minus_sign: | N/A | +| `method` | [Optional[components.Method]](../components/method.mdx) | :heavy_minus_sign: | N/A | +| `url` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/observabilitywebhookdestinationtype.mdx b/docs/components/observabilitywebhookdestinationtype.mdx new file mode 100644 index 00000000..bf3c27b8 --- /dev/null +++ b/docs/components/observabilitywebhookdestinationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ObservabilityWebhookDestinationType" +--- + +## Example Usage + +```python +from openrouter.components import ObservabilityWebhookDestinationType +value: ObservabilityWebhookDestinationType = "webhook" +``` + + +## Values + +- `"webhook"` diff --git a/docs/components/only.mdx b/docs/components/only.mdx new file mode 100644 index 00000000..cc284e22 --- /dev/null +++ b/docs/components/only.mdx @@ -0,0 +1,18 @@ +--- +title: "Only" +--- + +## Supported Types + +### `components.ProviderName` + +```python +value: components.ProviderName = /* values here */ +``` + +### `str` + +```python +value: str = /* values here */ +``` + diff --git a/docs/components/openairesponsecustomtoolcall.mdx b/docs/components/openairesponsecustomtoolcall.mdx new file mode 100644 index 00000000..6d919122 --- /dev/null +++ b/docs/components/openairesponsecustomtoolcall.mdx @@ -0,0 +1,14 @@ +--- +title: "OpenAIResponseCustomToolCall" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `call_id` | *str* | :heavy_check_mark: | N/A | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `input` | *str* | :heavy_check_mark: | N/A | +| `name` | *str* | :heavy_check_mark: | N/A | +| `namespace` | *Optional[str]* | :heavy_minus_sign: | Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server) | +| `type` | [components.OpenAIResponseCustomToolCallType](../components/openairesponsecustomtoolcalltype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/openairesponsecustomtoolcalloutput.mdx b/docs/components/openairesponsecustomtoolcalloutput.mdx new file mode 100644 index 00000000..a5539655 --- /dev/null +++ b/docs/components/openairesponsecustomtoolcalloutput.mdx @@ -0,0 +1,12 @@ +--- +title: "OpenAIResponseCustomToolCallOutput" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `call_id` | *str* | :heavy_check_mark: | N/A | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `output` | [components.OpenAIResponseCustomToolCallOutputOutput2](../components/openairesponsecustomtoolcalloutputoutput2.mdx) | :heavy_check_mark: | N/A | +| `type` | [components.OpenAIResponseCustomToolCallOutputType](../components/openairesponsecustomtoolcalloutputtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/openairesponsecustomtoolcalloutputoutput1.mdx b/docs/components/openairesponsecustomtoolcalloutputoutput1.mdx new file mode 100644 index 00000000..ef5467e6 --- /dev/null +++ b/docs/components/openairesponsecustomtoolcalloutputoutput1.mdx @@ -0,0 +1,24 @@ +--- +title: "OpenAIResponseCustomToolCallOutputOutput1" +--- + +## Supported Types + +### `components.InputFile` + +```python +value: components.InputFile = /* values here */ +``` + +### `components.InputImage` + +```python +value: components.InputImage = /* values here */ +``` + +### `components.InputText` + +```python +value: components.InputText = /* values here */ +``` + diff --git a/docs/components/openairesponsecustomtoolcalloutputoutput2.mdx b/docs/components/openairesponsecustomtoolcalloutputoutput2.mdx new file mode 100644 index 00000000..74b53656 --- /dev/null +++ b/docs/components/openairesponsecustomtoolcalloutputoutput2.mdx @@ -0,0 +1,18 @@ +--- +title: "OpenAIResponseCustomToolCallOutputOutput2" +--- + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `List[components.OpenAIResponseCustomToolCallOutputOutput1]` + +```python +value: List[components.OpenAIResponseCustomToolCallOutputOutput1] = /* values here */ +``` + diff --git a/docs/components/openairesponsecustomtoolcalloutputtype.mdx b/docs/components/openairesponsecustomtoolcalloutputtype.mdx new file mode 100644 index 00000000..6ccce459 --- /dev/null +++ b/docs/components/openairesponsecustomtoolcalloutputtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OpenAIResponseCustomToolCallOutputType" +--- + +## Example Usage + +```python +from openrouter.components import OpenAIResponseCustomToolCallOutputType +value: OpenAIResponseCustomToolCallOutputType = "custom_tool_call_output" +``` + + +## Values + +- `"custom_tool_call_output"` diff --git a/docs/components/openairesponsecustomtoolcalltype.mdx b/docs/components/openairesponsecustomtoolcalltype.mdx new file mode 100644 index 00000000..8c38bc0f --- /dev/null +++ b/docs/components/openairesponsecustomtoolcalltype.mdx @@ -0,0 +1,15 @@ +--- +title: "OpenAIResponseCustomToolCallType" +--- + +## Example Usage + +```python +from openrouter.components import OpenAIResponseCustomToolCallType +value: OpenAIResponseCustomToolCallType = "custom_tool_call" +``` + + +## Values + +- `"custom_tool_call"` diff --git a/docs/components/openairesponsefunctiontoolcall.mdx b/docs/components/openairesponsefunctiontoolcall.mdx new file mode 100644 index 00000000..efdbbbce --- /dev/null +++ b/docs/components/openairesponsefunctiontoolcall.mdx @@ -0,0 +1,15 @@ +--- +title: "OpenAIResponseFunctionToolCall" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `arguments` | *str* | :heavy_check_mark: | N/A | | +| `call_id` | *str* | :heavy_check_mark: | N/A | | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `name` | *str* | :heavy_check_mark: | N/A | | +| `namespace` | *Optional[str]* | :heavy_minus_sign: | Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server) | | +| `status` | [Optional[components.ToolCallStatus]](../components/toolcallstatus.mdx) | :heavy_minus_sign: | N/A | completed | +| `type` | [components.OpenAIResponseFunctionToolCallType](../components/openairesponsefunctiontoolcalltype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/openairesponsefunctiontoolcalloutput.mdx b/docs/components/openairesponsefunctiontoolcalloutput.mdx new file mode 100644 index 00000000..0ccfaaf0 --- /dev/null +++ b/docs/components/openairesponsefunctiontoolcalloutput.mdx @@ -0,0 +1,13 @@ +--- +title: "OpenAIResponseFunctionToolCallOutput" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `call_id` | *str* | :heavy_check_mark: | N/A | | +| `id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `output` | [components.OpenAIResponseFunctionToolCallOutputOutput2](../components/openairesponsefunctiontoolcalloutputoutput2.mdx) | :heavy_check_mark: | N/A | | +| `status` | [OptionalNullable[components.OpenAIResponseFunctionToolCallOutputStatus]](../components/openairesponsefunctiontoolcalloutputstatus.mdx) | :heavy_minus_sign: | N/A | completed | +| `type` | [components.OpenAIResponseFunctionToolCallOutputType](../components/openairesponsefunctiontoolcalloutputtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/openairesponsefunctiontoolcalloutputoutput1.mdx b/docs/components/openairesponsefunctiontoolcalloutputoutput1.mdx new file mode 100644 index 00000000..b2fb9df7 --- /dev/null +++ b/docs/components/openairesponsefunctiontoolcalloutputoutput1.mdx @@ -0,0 +1,24 @@ +--- +title: "OpenAIResponseFunctionToolCallOutputOutput1" +--- + +## Supported Types + +### `components.InputFile` + +```python +value: components.InputFile = /* values here */ +``` + +### `components.InputImage` + +```python +value: components.InputImage = /* values here */ +``` + +### `components.InputText` + +```python +value: components.InputText = /* values here */ +``` + diff --git a/docs/components/openairesponsefunctiontoolcalloutputoutput2.mdx b/docs/components/openairesponsefunctiontoolcalloutputoutput2.mdx new file mode 100644 index 00000000..3b498b59 --- /dev/null +++ b/docs/components/openairesponsefunctiontoolcalloutputoutput2.mdx @@ -0,0 +1,18 @@ +--- +title: "OpenAIResponseFunctionToolCallOutputOutput2" +--- + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `List[components.OpenAIResponseFunctionToolCallOutputOutput1]` + +```python +value: List[components.OpenAIResponseFunctionToolCallOutputOutput1] = /* values here */ +``` + diff --git a/docs/components/openairesponsefunctiontoolcalloutputstatus.mdx b/docs/components/openairesponsefunctiontoolcalloutputstatus.mdx new file mode 100644 index 00000000..d5e7af39 --- /dev/null +++ b/docs/components/openairesponsefunctiontoolcalloutputstatus.mdx @@ -0,0 +1,21 @@ +--- +title: "OpenAIResponseFunctionToolCallOutputStatus" +--- + +## Example Usage + +```python +from openrouter.components import OpenAIResponseFunctionToolCallOutputStatus + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: OpenAIResponseFunctionToolCallOutputStatus = "in_progress" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"in_progress"` +- `"completed"` +- `"incomplete"` diff --git a/docs/components/openairesponsefunctiontoolcalloutputtype.mdx b/docs/components/openairesponsefunctiontoolcalloutputtype.mdx new file mode 100644 index 00000000..16e5b205 --- /dev/null +++ b/docs/components/openairesponsefunctiontoolcalloutputtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OpenAIResponseFunctionToolCallOutputType" +--- + +## Example Usage + +```python +from openrouter.components import OpenAIResponseFunctionToolCallOutputType +value: OpenAIResponseFunctionToolCallOutputType = "function_call_output" +``` + + +## Values + +- `"function_call_output"` diff --git a/docs/components/openairesponsefunctiontoolcalltype.mdx b/docs/components/openairesponsefunctiontoolcalltype.mdx new file mode 100644 index 00000000..f0e32f3d --- /dev/null +++ b/docs/components/openairesponsefunctiontoolcalltype.mdx @@ -0,0 +1,15 @@ +--- +title: "OpenAIResponseFunctionToolCallType" +--- + +## Example Usage + +```python +from openrouter.components import OpenAIResponseFunctionToolCallType +value: OpenAIResponseFunctionToolCallType = "function_call" +``` + + +## Values + +- `"function_call"` diff --git a/docs/components/openairesponseinputmessageitem.mdx b/docs/components/openairesponseinputmessageitem.mdx new file mode 100644 index 00000000..8670ec0c --- /dev/null +++ b/docs/components/openairesponseinputmessageitem.mdx @@ -0,0 +1,12 @@ +--- +title: "OpenAIResponseInputMessageItem" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `content` | List[[components.OpenAIResponseInputMessageItemContent](../components/openairesponseinputmessageitemcontent.mdx)] | :heavy_check_mark: | N/A | +| `id` | *str* | :heavy_check_mark: | N/A | +| `role` | [components.OpenAIResponseInputMessageItemRoleUnion](../components/openairesponseinputmessageitemroleunion.mdx) | :heavy_check_mark: | N/A | +| `type` | [Optional[components.OpenAIResponseInputMessageItemType]](../components/openairesponseinputmessageitemtype.mdx) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/openairesponseinputmessageitemcontent.mdx b/docs/components/openairesponseinputmessageitemcontent.mdx new file mode 100644 index 00000000..560a4f51 --- /dev/null +++ b/docs/components/openairesponseinputmessageitemcontent.mdx @@ -0,0 +1,30 @@ +--- +title: "OpenAIResponseInputMessageItemContent" +--- + +## Supported Types + +### `components.InputAudio` + +```python +value: components.InputAudio = /* values here */ +``` + +### `components.InputFile` + +```python +value: components.InputFile = /* values here */ +``` + +### `components.InputImage` + +```python +value: components.InputImage = /* values here */ +``` + +### `components.InputText` + +```python +value: components.InputText = /* values here */ +``` + diff --git a/docs/components/openairesponseinputmessageitemroledeveloper.mdx b/docs/components/openairesponseinputmessageitemroledeveloper.mdx new file mode 100644 index 00000000..8470f147 --- /dev/null +++ b/docs/components/openairesponseinputmessageitemroledeveloper.mdx @@ -0,0 +1,15 @@ +--- +title: "OpenAIResponseInputMessageItemRoleDeveloper" +--- + +## Example Usage + +```python +from openrouter.components import OpenAIResponseInputMessageItemRoleDeveloper +value: OpenAIResponseInputMessageItemRoleDeveloper = "developer" +``` + + +## Values + +- `"developer"` diff --git a/docs/components/openairesponseinputmessageitemrolesystem.mdx b/docs/components/openairesponseinputmessageitemrolesystem.mdx new file mode 100644 index 00000000..a09674ed --- /dev/null +++ b/docs/components/openairesponseinputmessageitemrolesystem.mdx @@ -0,0 +1,15 @@ +--- +title: "OpenAIResponseInputMessageItemRoleSystem" +--- + +## Example Usage + +```python +from openrouter.components import OpenAIResponseInputMessageItemRoleSystem +value: OpenAIResponseInputMessageItemRoleSystem = "system" +``` + + +## Values + +- `"system"` diff --git a/docs/components/openairesponseinputmessageitemroleunion.mdx b/docs/components/openairesponseinputmessageitemroleunion.mdx new file mode 100644 index 00000000..65516532 --- /dev/null +++ b/docs/components/openairesponseinputmessageitemroleunion.mdx @@ -0,0 +1,24 @@ +--- +title: "OpenAIResponseInputMessageItemRoleUnion" +--- + +## Supported Types + +### `components.OpenAIResponseInputMessageItemRoleUser` + +```python +value: components.OpenAIResponseInputMessageItemRoleUser = /* values here */ +``` + +### `components.OpenAIResponseInputMessageItemRoleSystem` + +```python +value: components.OpenAIResponseInputMessageItemRoleSystem = /* values here */ +``` + +### `components.OpenAIResponseInputMessageItemRoleDeveloper` + +```python +value: components.OpenAIResponseInputMessageItemRoleDeveloper = /* values here */ +``` + diff --git a/docs/components/openairesponseinputmessageitemroleuser.mdx b/docs/components/openairesponseinputmessageitemroleuser.mdx new file mode 100644 index 00000000..23b5d7ea --- /dev/null +++ b/docs/components/openairesponseinputmessageitemroleuser.mdx @@ -0,0 +1,15 @@ +--- +title: "OpenAIResponseInputMessageItemRoleUser" +--- + +## Example Usage + +```python +from openrouter.components import OpenAIResponseInputMessageItemRoleUser +value: OpenAIResponseInputMessageItemRoleUser = "user" +``` + + +## Values + +- `"user"` diff --git a/docs/components/openairesponseinputmessageitemtype.mdx b/docs/components/openairesponseinputmessageitemtype.mdx new file mode 100644 index 00000000..27637b75 --- /dev/null +++ b/docs/components/openairesponseinputmessageitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OpenAIResponseInputMessageItemType" +--- + +## Example Usage + +```python +from openrouter.components import OpenAIResponseInputMessageItemType +value: OpenAIResponseInputMessageItemType = "message" +``` + + +## Values + +- `"message"` diff --git a/docs/components/openairesponsesannotation.md b/docs/components/openairesponsesannotation.mdx similarity index 87% rename from docs/components/openairesponsesannotation.md rename to docs/components/openairesponsesannotation.mdx index e3b69628..d5de3b26 100644 --- a/docs/components/openairesponsesannotation.md +++ b/docs/components/openairesponsesannotation.mdx @@ -1,5 +1,6 @@ -# OpenAIResponsesAnnotation - +--- +title: "OpenAIResponsesAnnotation" +--- ## Supported Types diff --git a/docs/components/openairesponsesrefusalcontent.md b/docs/components/openairesponsesrefusalcontent.mdx similarity index 88% rename from docs/components/openairesponsesrefusalcontent.md rename to docs/components/openairesponsesrefusalcontent.mdx index ea13450e..c687dab4 100644 --- a/docs/components/openairesponsesrefusalcontent.md +++ b/docs/components/openairesponsesrefusalcontent.mdx @@ -1,9 +1,10 @@ -# OpenAIResponsesRefusalContent - +--- +title: "OpenAIResponsesRefusalContent" +--- ## Fields | Field | Type | Required | Description | | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | | `refusal` | *str* | :heavy_check_mark: | N/A | -| `type` | [components.OpenAIResponsesRefusalContentType](../components/openairesponsesrefusalcontenttype.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| `type` | [components.OpenAIResponsesRefusalContentType](../components/openairesponsesrefusalcontenttype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/openairesponsesrefusalcontenttype.md b/docs/components/openairesponsesrefusalcontenttype.md deleted file mode 100644 index e94bdd22..00000000 --- a/docs/components/openairesponsesrefusalcontenttype.md +++ /dev/null @@ -1,8 +0,0 @@ -# OpenAIResponsesRefusalContentType - - -## Values - -| Name | Value | -| --------- | --------- | -| `REFUSAL` | refusal | \ No newline at end of file diff --git a/docs/components/openairesponsesrefusalcontenttype.mdx b/docs/components/openairesponsesrefusalcontenttype.mdx new file mode 100644 index 00000000..c1d90a53 --- /dev/null +++ b/docs/components/openairesponsesrefusalcontenttype.mdx @@ -0,0 +1,15 @@ +--- +title: "OpenAIResponsesRefusalContentType" +--- + +## Example Usage + +```python +from openrouter.components import OpenAIResponsesRefusalContentType +value: OpenAIResponsesRefusalContentType = "refusal" +``` + + +## Values + +- `"refusal"` diff --git a/docs/components/openairesponsesresponsestatus.md b/docs/components/openairesponsesresponsestatus.md deleted file mode 100644 index a3628447..00000000 --- a/docs/components/openairesponsesresponsestatus.md +++ /dev/null @@ -1,13 +0,0 @@ -# OpenAIResponsesResponseStatus - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `COMPLETED` | completed | -| `INCOMPLETE` | incomplete | -| `IN_PROGRESS` | in_progress | -| `FAILED` | failed | -| `CANCELLED` | cancelled | -| `QUEUED` | queued | \ No newline at end of file diff --git a/docs/components/openairesponsesresponsestatus.mdx b/docs/components/openairesponsesresponsestatus.mdx new file mode 100644 index 00000000..c833b87b --- /dev/null +++ b/docs/components/openairesponsesresponsestatus.mdx @@ -0,0 +1,24 @@ +--- +title: "OpenAIResponsesResponseStatus" +--- + +## Example Usage + +```python +from openrouter.components import OpenAIResponsesResponseStatus + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: OpenAIResponsesResponseStatus = "completed" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"completed"` +- `"incomplete"` +- `"in_progress"` +- `"failed"` +- `"cancelled"` +- `"queued"` diff --git a/docs/components/openairesponsestoolchoice.md b/docs/components/openairesponsestoolchoice.mdx similarity index 73% rename from docs/components/openairesponsestoolchoice.md rename to docs/components/openairesponsestoolchoice.mdx index 72b8738f..71090a1f 100644 --- a/docs/components/openairesponsestoolchoice.md +++ b/docs/components/openairesponsestoolchoice.mdx @@ -1,8 +1,9 @@ -# OpenAIResponsesToolChoice - +--- +title: "OpenAIResponsesToolChoice" +--- ## Fields | Field | Type | Required | Description | | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| `type` | [components.Type](../components/type.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| `type` | [components.Type](../components/type.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/openairesponsestoolchoiceapplypatch.mdx b/docs/components/openairesponsestoolchoiceapplypatch.mdx new file mode 100644 index 00000000..de012d5c --- /dev/null +++ b/docs/components/openairesponsestoolchoiceapplypatch.mdx @@ -0,0 +1,9 @@ +--- +title: "OpenAIResponsesToolChoiceApplyPatch" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `type` | [components.OpenAIResponsesToolChoiceTypeApplyPatch](../components/openairesponsestoolchoicetypeapplypatch.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/openairesponsestoolchoiceauto.md b/docs/components/openairesponsestoolchoiceauto.md deleted file mode 100644 index 5a958ab0..00000000 --- a/docs/components/openairesponsestoolchoiceauto.md +++ /dev/null @@ -1,8 +0,0 @@ -# OpenAIResponsesToolChoiceAuto - - -## Values - -| Name | Value | -| ------ | ------ | -| `AUTO` | auto | \ No newline at end of file diff --git a/docs/components/openairesponsestoolchoiceauto.mdx b/docs/components/openairesponsestoolchoiceauto.mdx new file mode 100644 index 00000000..b91f4fb1 --- /dev/null +++ b/docs/components/openairesponsestoolchoiceauto.mdx @@ -0,0 +1,15 @@ +--- +title: "OpenAIResponsesToolChoiceAuto" +--- + +## Example Usage + +```python +from openrouter.components import OpenAIResponsesToolChoiceAuto +value: OpenAIResponsesToolChoiceAuto = "auto" +``` + + +## Values + +- `"auto"` diff --git a/docs/components/openairesponsestoolchoicefunction.md b/docs/components/openairesponsestoolchoicefunction.mdx similarity index 87% rename from docs/components/openairesponsestoolchoicefunction.md rename to docs/components/openairesponsestoolchoicefunction.mdx index 9163b3d1..e08dad52 100644 --- a/docs/components/openairesponsestoolchoicefunction.md +++ b/docs/components/openairesponsestoolchoicefunction.mdx @@ -1,9 +1,10 @@ -# OpenAIResponsesToolChoiceFunction - +--- +title: "OpenAIResponsesToolChoiceFunction" +--- ## Fields | Field | Type | Required | Description | | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | | `name` | *str* | :heavy_check_mark: | N/A | -| `type` | [components.OpenAIResponsesToolChoiceTypeFunction](../components/openairesponsestoolchoicetypefunction.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| `type` | [components.OpenAIResponsesToolChoiceTypeFunction](../components/openairesponsestoolchoicetypefunction.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/openairesponsestoolchoicenone.md b/docs/components/openairesponsestoolchoicenone.md deleted file mode 100644 index d5c51acf..00000000 --- a/docs/components/openairesponsestoolchoicenone.md +++ /dev/null @@ -1,8 +0,0 @@ -# OpenAIResponsesToolChoiceNone - - -## Values - -| Name | Value | -| ------ | ------ | -| `NONE` | none | \ No newline at end of file diff --git a/docs/components/openairesponsestoolchoicenone.mdx b/docs/components/openairesponsestoolchoicenone.mdx new file mode 100644 index 00000000..8b1df805 --- /dev/null +++ b/docs/components/openairesponsestoolchoicenone.mdx @@ -0,0 +1,15 @@ +--- +title: "OpenAIResponsesToolChoiceNone" +--- + +## Example Usage + +```python +from openrouter.components import OpenAIResponsesToolChoiceNone +value: OpenAIResponsesToolChoiceNone = "none" +``` + + +## Values + +- `"none"` diff --git a/docs/components/openairesponsestoolchoicerequired.md b/docs/components/openairesponsestoolchoicerequired.md deleted file mode 100644 index 57aefba1..00000000 --- a/docs/components/openairesponsestoolchoicerequired.md +++ /dev/null @@ -1,8 +0,0 @@ -# OpenAIResponsesToolChoiceRequired - - -## Values - -| Name | Value | -| ---------- | ---------- | -| `REQUIRED` | required | \ No newline at end of file diff --git a/docs/components/openairesponsestoolchoicerequired.mdx b/docs/components/openairesponsestoolchoicerequired.mdx new file mode 100644 index 00000000..e7f185a4 --- /dev/null +++ b/docs/components/openairesponsestoolchoicerequired.mdx @@ -0,0 +1,15 @@ +--- +title: "OpenAIResponsesToolChoiceRequired" +--- + +## Example Usage + +```python +from openrouter.components import OpenAIResponsesToolChoiceRequired +value: OpenAIResponsesToolChoiceRequired = "required" +``` + + +## Values + +- `"required"` diff --git a/docs/components/openairesponsestoolchoiceshell.mdx b/docs/components/openairesponsestoolchoiceshell.mdx new file mode 100644 index 00000000..b0451b76 --- /dev/null +++ b/docs/components/openairesponsestoolchoiceshell.mdx @@ -0,0 +1,9 @@ +--- +title: "OpenAIResponsesToolChoiceShell" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `type` | [components.OpenAIResponsesToolChoiceTypeShell](../components/openairesponsestoolchoicetypeshell.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/openairesponsestoolchoicetypeapplypatch.mdx b/docs/components/openairesponsestoolchoicetypeapplypatch.mdx new file mode 100644 index 00000000..cc32b5a1 --- /dev/null +++ b/docs/components/openairesponsestoolchoicetypeapplypatch.mdx @@ -0,0 +1,15 @@ +--- +title: "OpenAIResponsesToolChoiceTypeApplyPatch" +--- + +## Example Usage + +```python +from openrouter.components import OpenAIResponsesToolChoiceTypeApplyPatch +value: OpenAIResponsesToolChoiceTypeApplyPatch = "apply_patch" +``` + + +## Values + +- `"apply_patch"` diff --git a/docs/components/openairesponsestoolchoicetypefunction.md b/docs/components/openairesponsestoolchoicetypefunction.md deleted file mode 100644 index de3caa3f..00000000 --- a/docs/components/openairesponsestoolchoicetypefunction.md +++ /dev/null @@ -1,8 +0,0 @@ -# OpenAIResponsesToolChoiceTypeFunction - - -## Values - -| Name | Value | -| ---------- | ---------- | -| `FUNCTION` | function | \ No newline at end of file diff --git a/docs/components/openairesponsestoolchoicetypefunction.mdx b/docs/components/openairesponsestoolchoicetypefunction.mdx new file mode 100644 index 00000000..39952ef3 --- /dev/null +++ b/docs/components/openairesponsestoolchoicetypefunction.mdx @@ -0,0 +1,15 @@ +--- +title: "OpenAIResponsesToolChoiceTypeFunction" +--- + +## Example Usage + +```python +from openrouter.components import OpenAIResponsesToolChoiceTypeFunction +value: OpenAIResponsesToolChoiceTypeFunction = "function" +``` + + +## Values + +- `"function"` diff --git a/docs/components/openairesponsestoolchoicetypeshell.mdx b/docs/components/openairesponsestoolchoicetypeshell.mdx new file mode 100644 index 00000000..9c0bbd84 --- /dev/null +++ b/docs/components/openairesponsestoolchoicetypeshell.mdx @@ -0,0 +1,15 @@ +--- +title: "OpenAIResponsesToolChoiceTypeShell" +--- + +## Example Usage + +```python +from openrouter.components import OpenAIResponsesToolChoiceTypeShell +value: OpenAIResponsesToolChoiceTypeShell = "shell" +``` + + +## Values + +- `"shell"` diff --git a/docs/components/openairesponsestoolchoicetypewebsearchpreview.md b/docs/components/openairesponsestoolchoicetypewebsearchpreview.md deleted file mode 100644 index 93b161b0..00000000 --- a/docs/components/openairesponsestoolchoicetypewebsearchpreview.md +++ /dev/null @@ -1,8 +0,0 @@ -# OpenAIResponsesToolChoiceTypeWebSearchPreview - - -## Values - -| Name | Value | -| -------------------- | -------------------- | -| `WEB_SEARCH_PREVIEW` | web_search_preview | \ No newline at end of file diff --git a/docs/components/openairesponsestoolchoicetypewebsearchpreview.mdx b/docs/components/openairesponsestoolchoicetypewebsearchpreview.mdx new file mode 100644 index 00000000..febd1eda --- /dev/null +++ b/docs/components/openairesponsestoolchoicetypewebsearchpreview.mdx @@ -0,0 +1,15 @@ +--- +title: "OpenAIResponsesToolChoiceTypeWebSearchPreview" +--- + +## Example Usage + +```python +from openrouter.components import OpenAIResponsesToolChoiceTypeWebSearchPreview +value: OpenAIResponsesToolChoiceTypeWebSearchPreview = "web_search_preview" +``` + + +## Values + +- `"web_search_preview"` diff --git a/docs/components/openairesponsestoolchoicetypewebsearchpreview20250311.md b/docs/components/openairesponsestoolchoicetypewebsearchpreview20250311.md deleted file mode 100644 index 3162d396..00000000 --- a/docs/components/openairesponsestoolchoicetypewebsearchpreview20250311.md +++ /dev/null @@ -1,8 +0,0 @@ -# OpenAIResponsesToolChoiceTypeWebSearchPreview20250311 - - -## Values - -| Name | Value | -| ------------------------------- | ------------------------------- | -| `WEB_SEARCH_PREVIEW_2025_03_11` | web_search_preview_2025_03_11 | \ No newline at end of file diff --git a/docs/components/openairesponsestoolchoicetypewebsearchpreview20250311.mdx b/docs/components/openairesponsestoolchoicetypewebsearchpreview20250311.mdx new file mode 100644 index 00000000..c23dcea3 --- /dev/null +++ b/docs/components/openairesponsestoolchoicetypewebsearchpreview20250311.mdx @@ -0,0 +1,15 @@ +--- +title: "OpenAIResponsesToolChoiceTypeWebSearchPreview20250311" +--- + +## Example Usage + +```python +from openrouter.components import OpenAIResponsesToolChoiceTypeWebSearchPreview20250311 +value: OpenAIResponsesToolChoiceTypeWebSearchPreview20250311 = "web_search_preview_2025_03_11" +``` + + +## Values + +- `"web_search_preview_2025_03_11"` diff --git a/docs/components/openairesponsestoolchoiceunion.md b/docs/components/openairesponsestoolchoiceunion.mdx similarity index 95% rename from docs/components/openairesponsestoolchoiceunion.md rename to docs/components/openairesponsestoolchoiceunion.mdx index 15e1482a..d44bdba3 100644 --- a/docs/components/openairesponsestoolchoiceunion.md +++ b/docs/components/openairesponsestoolchoiceunion.mdx @@ -1,5 +1,6 @@ -# OpenAIResponsesToolChoiceUnion - +--- +title: "OpenAIResponsesToolChoiceUnion" +--- ## Supported Types diff --git a/docs/components/openairesponsestruncation.md b/docs/components/openairesponsestruncation.md deleted file mode 100644 index aafecaeb..00000000 --- a/docs/components/openairesponsestruncation.md +++ /dev/null @@ -1,9 +0,0 @@ -# OpenAIResponsesTruncation - - -## Values - -| Name | Value | -| ---------- | ---------- | -| `AUTO` | auto | -| `DISABLED` | disabled | \ No newline at end of file diff --git a/docs/components/openairesponsestruncation.mdx b/docs/components/openairesponsestruncation.mdx new file mode 100644 index 00000000..58f86b3f --- /dev/null +++ b/docs/components/openairesponsestruncation.mdx @@ -0,0 +1,20 @@ +--- +title: "OpenAIResponsesTruncation" +--- + +## Example Usage + +```python +from openrouter.components import OpenAIResponsesTruncation + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: OpenAIResponsesTruncation = "auto" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"auto"` +- `"disabled"` diff --git a/docs/components/openresponsescreatedevent.mdx b/docs/components/openresponsescreatedevent.mdx new file mode 100644 index 00000000..a0433fe2 --- /dev/null +++ b/docs/components/openresponsescreatedevent.mdx @@ -0,0 +1,14 @@ +--- +title: "OpenResponsesCreatedEvent" +--- + +Event emitted when a response is created + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `response` | [components.OpenResponsesResult](../components/openresponsesresult.mdx) | :heavy_check_mark: | Complete non-streaming response from the Responses API | \{
"created_at": 1704067200,
"error": null,
"id": "resp-abc123",
"incomplete_details": null,
"instructions": null,
"max_output_tokens": null,
"metadata": null,
"model": "gpt-4",
"object": "response",
"output": [
\{
"content": [
\{
"annotations": [],
"text": "Hello! How can I help you today?",
"type": "output_text"
}
],
"id": "msg-abc123",
"role": "assistant",
"status": "completed",
"type": "message"
}
],
"parallel_tool_calls": true,
"status": "completed",
"temperature": null,
"tool_choice": "auto",
"tools": [],
"top_p": null,
"usage": \{
"input_tokens": 10,
"input_tokens_details": \{
"cached_tokens": 0
},
"output_tokens": 25,
"output_tokens_details": \{
"reasoning_tokens": 0
},
"total_tokens": 35
}
} | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | | +| `type` | [components.OpenResponsesCreatedEventType](../components/openresponsescreatedeventtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/openresponsescreatedeventtype.mdx b/docs/components/openresponsescreatedeventtype.mdx new file mode 100644 index 00000000..0bde4b81 --- /dev/null +++ b/docs/components/openresponsescreatedeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OpenResponsesCreatedEventType" +--- + +## Example Usage + +```python +from openrouter.components import OpenResponsesCreatedEventType +value: OpenResponsesCreatedEventType = "response.created" +``` + + +## Values + +- `"response.created"` diff --git a/docs/components/openresponsesinprogressevent.mdx b/docs/components/openresponsesinprogressevent.mdx new file mode 100644 index 00000000..a2e79d40 --- /dev/null +++ b/docs/components/openresponsesinprogressevent.mdx @@ -0,0 +1,14 @@ +--- +title: "OpenResponsesInProgressEvent" +--- + +Event emitted when a response is in progress + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `response` | [components.OpenResponsesResult](../components/openresponsesresult.mdx) | :heavy_check_mark: | Complete non-streaming response from the Responses API | \{
"created_at": 1704067200,
"error": null,
"id": "resp-abc123",
"incomplete_details": null,
"instructions": null,
"max_output_tokens": null,
"metadata": null,
"model": "gpt-4",
"object": "response",
"output": [
\{
"content": [
\{
"annotations": [],
"text": "Hello! How can I help you today?",
"type": "output_text"
}
],
"id": "msg-abc123",
"role": "assistant",
"status": "completed",
"type": "message"
}
],
"parallel_tool_calls": true,
"status": "completed",
"temperature": null,
"tool_choice": "auto",
"tools": [],
"top_p": null,
"usage": \{
"input_tokens": 10,
"input_tokens_details": \{
"cached_tokens": 0
},
"output_tokens": 25,
"output_tokens_details": \{
"reasoning_tokens": 0
},
"total_tokens": 35
}
} | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | | +| `type` | [components.OpenResponsesInProgressEventType](../components/openresponsesinprogresseventtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/openresponsesinprogresseventtype.mdx b/docs/components/openresponsesinprogresseventtype.mdx new file mode 100644 index 00000000..09effe2d --- /dev/null +++ b/docs/components/openresponsesinprogresseventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OpenResponsesInProgressEventType" +--- + +## Example Usage + +```python +from openrouter.components import OpenResponsesInProgressEventType +value: OpenResponsesInProgressEventType = "response.in_progress" +``` + + +## Values + +- `"response.in_progress"` diff --git a/docs/components/openresponsesresult.mdx b/docs/components/openresponsesresult.mdx new file mode 100644 index 00000000..b987eca8 --- /dev/null +++ b/docs/components/openresponsesresult.mdx @@ -0,0 +1,47 @@ +--- +title: "OpenResponsesResult" +--- + +Complete non-streaming response from the Responses API + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `background` | *OptionalNullable[bool]* | :heavy_minus_sign: | N/A | | +| `completed_at` | *Nullable[int]* | :heavy_check_mark: | N/A | | +| `created_at` | *int* | :heavy_check_mark: | N/A | | +| `error` | [Nullable[components.ResponsesErrorField]](../components/responseserrorfield.mdx) | :heavy_check_mark: | Error information returned from the API | \{
"code": "rate_limit_exceeded",
"message": "Rate limit exceeded. Please try again later."
} | +| `frequency_penalty` | *Nullable[float]* | :heavy_check_mark: | N/A | | +| `id` | *str* | :heavy_check_mark: | N/A | | +| `incomplete_details` | [Nullable[components.IncompleteDetails]](../components/incompletedetails.mdx) | :heavy_check_mark: | N/A | \{
"reason": "max_output_tokens"
} | +| `instructions` | [Nullable[components.BaseInputsUnion]](../components/baseinputsunion.mdx) | :heavy_check_mark: | N/A | [
\{
"content": "What is the weather today?",
"role": "user"
}
] | +| `max_output_tokens` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | | +| `max_tool_calls` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | | +| `metadata` | Dict[str, *str*] | :heavy_check_mark: | Metadata key-value pairs for the request. Keys must be ≤64 characters and cannot contain brackets. Values must be ≤512 characters. Maximum 16 pairs allowed. | \{
"session_id": "abc-def-ghi",
"user_id": "123"
} | +| `model` | *str* | :heavy_check_mark: | N/A | | +| `object` | [components.OpenResponsesResultObject](../components/openresponsesresultobject.mdx) | :heavy_check_mark: | N/A | | +| `output` | List[[components.OutputItems](../components/outputitems.mdx)] | :heavy_check_mark: | N/A | | +| `output_text` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `parallel_tool_calls` | *bool* | :heavy_check_mark: | N/A | | +| `presence_penalty` | *Nullable[float]* | :heavy_check_mark: | N/A | | +| `previous_response_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `prompt` | [OptionalNullable[components.StoredPromptTemplate]](../components/storedprompttemplate.mdx) | :heavy_minus_sign: | N/A | \{
"id": "prompt-abc123",
"variables": \{
"name": "John"
}
} | +| `prompt_cache_key` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `reasoning` | [OptionalNullable[components.BaseReasoningConfig]](../components/basereasoningconfig.mdx) | :heavy_minus_sign: | N/A | \{
"effort": "medium",
"summary": "auto"
} | +| `safety_identifier` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `service_tier` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `status` | [components.OpenAIResponsesResponseStatus](../components/openairesponsesresponsestatus.mdx) | :heavy_check_mark: | N/A | completed | +| `store` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `temperature` | *Nullable[float]* | :heavy_check_mark: | N/A | | +| `text` | [Optional[components.TextExtendedConfig]](../components/textextendedconfig.mdx) | :heavy_minus_sign: | Text output configuration including format and verbosity | \{
"format": \{
"type": "text"
}
} | +| `tool_choice` | [components.OpenAIResponsesToolChoiceUnion](../components/openairesponsestoolchoiceunion.mdx) | :heavy_check_mark: | N/A | auto | +| `tools` | List[[components.OpenResponsesResultToolUnion](../components/openresponsesresulttoolunion.mdx)] | :heavy_check_mark: | N/A | | +| `top_logprobs` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `top_p` | *Nullable[float]* | :heavy_check_mark: | N/A | | +| `truncation` | [OptionalNullable[components.Truncation]](../components/truncation.mdx) | :heavy_minus_sign: | N/A | auto | +| `usage` | [OptionalNullable[components.Usage]](../components/usage.mdx) | :heavy_minus_sign: | Token usage information for the response | \{
"cost": 0.0012,
"cost_details": \{
"upstream_inference_cost": null,
"upstream_inference_input_cost": 0.0008,
"upstream_inference_output_cost": 0.0004
},
"input_tokens": 10,
"input_tokens_details": \{
"cached_tokens": 0
},
"output_tokens": 25,
"output_tokens_details": \{
"reasoning_tokens": 0
},
"total_tokens": 35
} | +| `user` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `error_type` | [Optional[components.APIErrorType]](../components/apierrortype.mdx) | :heavy_minus_sign: | Canonical OpenRouter error type, stable across all API formats | rate_limit_exceeded | +| `openrouter_metadata` | [Optional[components.OpenRouterMetadata]](../components/openroutermetadata.mdx) | :heavy_minus_sign: | N/A | \{
"attempt": 1,
"endpoints": \{
"available": [
\{
"model": "openai/gpt-4o",
"provider": "OpenAI",
"selected": true
}
],
"total": 1
},
"is_byok": false,
"region": "iad",
"requested": "openai/gpt-4o",
"strategy": "direct",
"summary": "available=1, selected=OpenAI"
} | \ No newline at end of file diff --git a/docs/components/openresponsesresultobject.mdx b/docs/components/openresponsesresultobject.mdx new file mode 100644 index 00000000..53ba3e6a --- /dev/null +++ b/docs/components/openresponsesresultobject.mdx @@ -0,0 +1,15 @@ +--- +title: "OpenResponsesResultObject" +--- + +## Example Usage + +```python +from openrouter.components import OpenResponsesResultObject +value: OpenResponsesResultObject = "response" +``` + + +## Values + +- `"response"` diff --git a/docs/components/openresponsesresulttoolfunction.mdx b/docs/components/openresponsesresulttoolfunction.mdx new file mode 100644 index 00000000..f0fbd6bc --- /dev/null +++ b/docs/components/openresponsesresulttoolfunction.mdx @@ -0,0 +1,16 @@ +--- +title: "OpenResponsesResultToolFunction" +--- + +Function tool definition + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `name` | *str* | :heavy_check_mark: | N/A | +| `parameters` | Dict[str, *Nullable[Any]*] | :heavy_check_mark: | N/A | +| `strict` | *OptionalNullable[bool]* | :heavy_minus_sign: | N/A | +| `type` | [components.OpenResponsesResultType](../components/openresponsesresulttype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/openresponsesresulttoolunion.mdx b/docs/components/openresponsesresulttoolunion.mdx new file mode 100644 index 00000000..13ed401c --- /dev/null +++ b/docs/components/openresponsesresulttoolunion.mdx @@ -0,0 +1,90 @@ +--- +title: "OpenResponsesResultToolUnion" +--- + +## Supported Types + +### `components.OpenResponsesResultToolFunction` + +```python +value: components.OpenResponsesResultToolFunction = /* values here */ +``` + +### `components.PreviewWebSearchServerTool` + +```python +value: components.PreviewWebSearchServerTool = /* values here */ +``` + +### `components.Preview20250311WebSearchServerTool` + +```python +value: components.Preview20250311WebSearchServerTool = /* values here */ +``` + +### `components.LegacyWebSearchServerTool` + +```python +value: components.LegacyWebSearchServerTool = /* values here */ +``` + +### `components.WebSearchServerTool` + +```python +value: components.WebSearchServerTool = /* values here */ +``` + +### `components.FileSearchServerTool` + +```python +value: components.FileSearchServerTool = /* values here */ +``` + +### `components.ComputerUseServerTool` + +```python +value: components.ComputerUseServerTool = /* values here */ +``` + +### `components.CodeInterpreterServerTool` + +```python +value: components.CodeInterpreterServerTool = /* values here */ +``` + +### `components.McpServerTool` + +```python +value: components.McpServerTool = /* values here */ +``` + +### `components.ImageGenerationServerTool` + +```python +value: components.ImageGenerationServerTool = /* values here */ +``` + +### `components.CodexLocalShellTool` + +```python +value: components.CodexLocalShellTool = /* values here */ +``` + +### `components.ShellServerTool` + +```python +value: components.ShellServerTool = /* values here */ +``` + +### `components.ApplyPatchServerTool` + +```python +value: components.ApplyPatchServerTool = /* values here */ +``` + +### `components.CustomTool` + +```python +value: components.CustomTool = /* values here */ +``` + diff --git a/docs/components/openresponsesresulttype.mdx b/docs/components/openresponsesresulttype.mdx new file mode 100644 index 00000000..6ef2ae2c --- /dev/null +++ b/docs/components/openresponsesresulttype.mdx @@ -0,0 +1,15 @@ +--- +title: "OpenResponsesResultType" +--- + +## Example Usage + +```python +from openrouter.components import OpenResponsesResultType +value: OpenResponsesResultType = "function" +``` + + +## Values + +- `"function"` diff --git a/docs/components/openroutermetadata.mdx b/docs/components/openroutermetadata.mdx new file mode 100644 index 00000000..812ccb2b --- /dev/null +++ b/docs/components/openroutermetadata.mdx @@ -0,0 +1,18 @@ +--- +title: "OpenRouterMetadata" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| `attempt` | *int* | :heavy_check_mark: | N/A | | +| `attempts` | List[[components.RouterAttempt](../components/routerattempt.mdx)] | :heavy_minus_sign: | N/A | | +| `endpoints` | [components.EndpointsMetadata](../components/endpointsmetadata.mdx) | :heavy_check_mark: | N/A | \{
"available": [
\{
"model": "openai/gpt-4o",
"provider": "OpenAI",
"selected": true
}
],
"total": 3
} | +| `is_byok` | *bool* | :heavy_check_mark: | N/A | | +| `params` | [Optional[components.RouterParams]](../components/routerparams.mdx) | :heavy_minus_sign: | N/A | \{
"version_group": "anthropic/claude-sonnet-4"
} | +| `pipeline` | List[[components.PipelineStage](../components/pipelinestage.mdx)] | :heavy_minus_sign: | N/A | | +| `region` | *Nullable[str]* | :heavy_check_mark: | N/A | | +| `requested` | *str* | :heavy_check_mark: | N/A | | +| `strategy` | [components.RoutingStrategy](../components/routingstrategy.mdx) | :heavy_check_mark: | N/A | direct | +| `summary` | *str* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/openrouterwebsearchservertool.mdx b/docs/components/openrouterwebsearchservertool.mdx new file mode 100644 index 00000000..3842a52e --- /dev/null +++ b/docs/components/openrouterwebsearchservertool.mdx @@ -0,0 +1,13 @@ +--- +title: "OpenRouterWebSearchServerTool" +--- + +OpenRouter built-in server tool: searches the web for current information + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `parameters` | [Optional[components.WebSearchConfig]](../components/websearchconfig.mdx) | :heavy_minus_sign: | N/A | \{
"max_results": 5,
"search_context_size": "medium"
} | +| `type` | [components.OpenRouterWebSearchServerToolType](../components/openrouterwebsearchservertooltype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/openrouterwebsearchservertooltype.mdx b/docs/components/openrouterwebsearchservertooltype.mdx new file mode 100644 index 00000000..6f2a785c --- /dev/null +++ b/docs/components/openrouterwebsearchservertooltype.mdx @@ -0,0 +1,15 @@ +--- +title: "OpenRouterWebSearchServerToolType" +--- + +## Example Usage + +```python +from openrouter.components import OpenRouterWebSearchServerToolType +value: OpenRouterWebSearchServerToolType = "openrouter:web_search" +``` + + +## Values + +- `"openrouter:web_search"` diff --git a/docs/components/operator.mdx b/docs/components/operator.mdx new file mode 100644 index 00000000..b4df5fb4 --- /dev/null +++ b/docs/components/operator.mdx @@ -0,0 +1,31 @@ +--- +title: "Operator" +--- + +## Example Usage + +```python +from openrouter.components import Operator + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Operator = "equals" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"equals"` +- `"not_equals"` +- `"contains"` +- `"not_contains"` +- `"regex"` +- `"starts_with"` +- `"ends_with"` +- `"gt"` +- `"lt"` +- `"gte"` +- `"lte"` +- `"exists"` +- `"not_exists"` diff --git a/docs/components/order.mdx b/docs/components/order.mdx new file mode 100644 index 00000000..edc1ffcd --- /dev/null +++ b/docs/components/order.mdx @@ -0,0 +1,18 @@ +--- +title: "Order" +--- + +## Supported Types + +### `components.ProviderName` + +```python +value: components.ProviderName = /* values here */ +``` + +### `str` + +```python +value: str = /* values here */ +``` + diff --git a/docs/components/outcome.mdx b/docs/components/outcome.mdx new file mode 100644 index 00000000..98279af1 --- /dev/null +++ b/docs/components/outcome.mdx @@ -0,0 +1,18 @@ +--- +title: "Outcome" +--- + +## Supported Types + +### `components.OutcomeExit` + +```python +value: components.OutcomeExit = /* values here */ +``` + +### `components.OutcomeTimeout` + +```python +value: components.OutcomeTimeout = /* values here */ +``` + diff --git a/docs/components/outcomeexit.mdx b/docs/components/outcomeexit.mdx new file mode 100644 index 00000000..dd9bda68 --- /dev/null +++ b/docs/components/outcomeexit.mdx @@ -0,0 +1,10 @@ +--- +title: "OutcomeExit" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| `exit_code` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.TypeExit](../components/typeexit.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/outcometimeout.mdx b/docs/components/outcometimeout.mdx new file mode 100644 index 00000000..6fe515d1 --- /dev/null +++ b/docs/components/outcometimeout.mdx @@ -0,0 +1,9 @@ +--- +title: "OutcomeTimeout" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `type` | [components.TypeTimeout](../components/typetimeout.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/outputadvisorservertoolitem.mdx b/docs/components/outputadvisorservertoolitem.mdx new file mode 100644 index 00000000..e89c7434 --- /dev/null +++ b/docs/components/outputadvisorservertoolitem.mdx @@ -0,0 +1,19 @@ +--- +title: "OutputAdvisorServerToolItem" +--- + +An openrouter:advisor server tool output item + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `advice` | *Optional[str]* | :heavy_minus_sign: | The advisor model's response (the advice text returned to the executor). | | +| `error` | *Optional[str]* | :heavy_minus_sign: | Error message when the advisor call did not produce advice. | | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `instance_name` | *Optional[str]* | :heavy_minus_sign: | Provider-safe function name of the specific advisor instance that produced this item (e.g. `openrouter_advisor__1`). Present only when more than one advisor tool is configured; omitted for the default single advisor. Echo this field back unchanged so the advisor's cross-request memory stays namespaced to the correct instance. This identity is positional: it is derived from the index of the advisor entry in the request `tools` array, so clients must keep the order of advisor tool entries stable across requests in a conversation. Reordering or inserting advisor entries shifts these names and causes each advisor's cross-request memory to be attributed to the wrong instance. | openrouter_advisor__1 | +| `model` | *Optional[str]* | :heavy_minus_sign: | Slug of the advisor model that was consulted. | | +| `prompt` | *Optional[str]* | :heavy_minus_sign: | The prompt the executor sent to the advisor. | | +| `status` | [components.ToolCallStatus](../components/toolcallstatus.mdx) | :heavy_check_mark: | N/A | completed | +| `type` | [components.OutputAdvisorServerToolItemType](../components/outputadvisorservertoolitemtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/outputadvisorservertoolitemtype.mdx b/docs/components/outputadvisorservertoolitemtype.mdx new file mode 100644 index 00000000..2d7fd488 --- /dev/null +++ b/docs/components/outputadvisorservertoolitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputAdvisorServerToolItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputAdvisorServerToolItemType +value: OutputAdvisorServerToolItemType = "openrouter:advisor" +``` + + +## Values + +- `"openrouter:advisor"` diff --git a/docs/components/outputapplypatchcallitem.mdx b/docs/components/outputapplypatchcallitem.mdx new file mode 100644 index 00000000..2a02c6e3 --- /dev/null +++ b/docs/components/outputapplypatchcallitem.mdx @@ -0,0 +1,16 @@ +--- +title: "OutputApplyPatchCallItem" +--- + +A native `apply_patch_call` output item matching OpenAI's Responses API shape. Emitted when the client requested the `apply_patch` shorthand. + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `call_id` | *str* | :heavy_check_mark: | N/A | | +| `id` | *str* | :heavy_check_mark: | N/A | | +| `operation` | [components.ApplyPatchCallOperation](../components/applypatchcalloperation.mdx) | :heavy_check_mark: | The patch operation requested by an `apply_patch_call`. `create_file` and `update_file` carry a V4A diff; `delete_file` omits it. | \{
"diff": "@@ function main() \{\n+ console.log(\"hi\");\n }",
"path": "/src/main.ts",
"type": "update_file"
} | +| `status` | [components.ApplyPatchCallStatus](../components/applypatchcallstatus.mdx) | :heavy_check_mark: | Lifecycle state of an `apply_patch_call` output item. | completed | +| `type` | [components.OutputApplyPatchCallItemType](../components/outputapplypatchcallitemtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/outputapplypatchcallitemtype.mdx b/docs/components/outputapplypatchcallitemtype.mdx new file mode 100644 index 00000000..17a39e68 --- /dev/null +++ b/docs/components/outputapplypatchcallitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputApplyPatchCallItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputApplyPatchCallItemType +value: OutputApplyPatchCallItemType = "apply_patch_call" +``` + + +## Values + +- `"apply_patch_call"` diff --git a/docs/components/outputapplypatchservertoolitem.mdx b/docs/components/outputapplypatchservertoolitem.mdx new file mode 100644 index 00000000..b27640e1 --- /dev/null +++ b/docs/components/outputapplypatchservertoolitem.mdx @@ -0,0 +1,16 @@ +--- +title: "OutputApplyPatchServerToolItem" +--- + +An openrouter:apply_patch server tool output item. The turn halts when validation succeeds so the client can apply the patch and echo an `apply_patch_call_output` on the next turn. + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `call_id` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `operation` | [Optional[components.ApplyPatchCallOperation]](../components/applypatchcalloperation.mdx) | :heavy_minus_sign: | The patch operation requested by an `apply_patch_call`. `create_file` and `update_file` carry a V4A diff; `delete_file` omits it. | \{
"diff": "@@ function main() \{\n+ console.log(\"hi\");\n }",
"path": "/src/main.ts",
"type": "update_file"
} | +| `status` | [components.ToolCallStatus](../components/toolcallstatus.mdx) | :heavy_check_mark: | N/A | completed | +| `type` | [components.OutputApplyPatchServerToolItemType](../components/outputapplypatchservertoolitemtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/outputapplypatchservertoolitemtype.mdx b/docs/components/outputapplypatchservertoolitemtype.mdx new file mode 100644 index 00000000..ad79a325 --- /dev/null +++ b/docs/components/outputapplypatchservertoolitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputApplyPatchServerToolItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputApplyPatchServerToolItemType +value: OutputApplyPatchServerToolItemType = "openrouter:apply_patch" +``` + + +## Values + +- `"openrouter:apply_patch"` diff --git a/docs/components/outputbashservertoolitem.mdx b/docs/components/outputbashservertoolitem.mdx new file mode 100644 index 00000000..c039dfa5 --- /dev/null +++ b/docs/components/outputbashservertoolitem.mdx @@ -0,0 +1,18 @@ +--- +title: "OutputBashServerToolItem" +--- + +An openrouter:bash server tool output item + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `command` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `exit_code` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `status` | [components.ToolCallStatus](../components/toolcallstatus.mdx) | :heavy_check_mark: | N/A | completed | +| `stderr` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `stdout` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `type` | [components.OutputBashServerToolItemType](../components/outputbashservertoolitemtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/outputbashservertoolitemtype.mdx b/docs/components/outputbashservertoolitemtype.mdx new file mode 100644 index 00000000..801e62ba --- /dev/null +++ b/docs/components/outputbashservertoolitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputBashServerToolItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputBashServerToolItemType +value: OutputBashServerToolItemType = "openrouter:bash" +``` + + +## Values + +- `"openrouter:bash"` diff --git a/docs/components/outputbrowseruseservertoolitem.mdx b/docs/components/outputbrowseruseservertoolitem.mdx new file mode 100644 index 00000000..d8f75dc4 --- /dev/null +++ b/docs/components/outputbrowseruseservertoolitem.mdx @@ -0,0 +1,16 @@ +--- +title: "OutputBrowserUseServerToolItem" +--- + +An openrouter:browser_use server tool output item + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `action` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `screenshot_b64` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `status` | [components.ToolCallStatus](../components/toolcallstatus.mdx) | :heavy_check_mark: | N/A | completed | +| `type` | [components.OutputBrowserUseServerToolItemType](../components/outputbrowseruseservertoolitemtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/outputbrowseruseservertoolitemtype.mdx b/docs/components/outputbrowseruseservertoolitemtype.mdx new file mode 100644 index 00000000..4e1ac848 --- /dev/null +++ b/docs/components/outputbrowseruseservertoolitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputBrowserUseServerToolItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputBrowserUseServerToolItemType +value: OutputBrowserUseServerToolItemType = "openrouter:browser_use" +``` + + +## Values + +- `"openrouter:browser_use"` diff --git a/docs/components/outputcodeinterpretercallitem.mdx b/docs/components/outputcodeinterpretercallitem.mdx new file mode 100644 index 00000000..08f28041 --- /dev/null +++ b/docs/components/outputcodeinterpretercallitem.mdx @@ -0,0 +1,17 @@ +--- +title: "OutputCodeInterpreterCallItem" +--- + +A code interpreter execution call with outputs + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `code` | *Nullable[str]* | :heavy_check_mark: | N/A | | +| `container_id` | *str* | :heavy_check_mark: | N/A | | +| `id` | *str* | :heavy_check_mark: | N/A | | +| `outputs` | List[[components.OutputCodeInterpreterCallItemOutputUnion](../components/outputcodeinterpretercallitemoutputunion.mdx)] | :heavy_check_mark: | N/A | | +| `status` | [components.ToolCallStatus](../components/toolcallstatus.mdx) | :heavy_check_mark: | N/A | completed | +| `type` | [components.TypeCodeInterpreterCall](../components/typecodeinterpretercall.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/outputcodeinterpretercallitemoutputunion.mdx b/docs/components/outputcodeinterpretercallitemoutputunion.mdx new file mode 100644 index 00000000..02e6c2ca --- /dev/null +++ b/docs/components/outputcodeinterpretercallitemoutputunion.mdx @@ -0,0 +1,18 @@ +--- +title: "OutputCodeInterpreterCallItemOutputUnion" +--- + +## Supported Types + +### `components.OutputImage` + +```python +value: components.OutputImage = /* values here */ +``` + +### `components.OutputLogs` + +```python +value: components.OutputLogs = /* values here */ +``` + diff --git a/docs/components/outputcodeinterpretercallitemtypeimage.mdx b/docs/components/outputcodeinterpretercallitemtypeimage.mdx new file mode 100644 index 00000000..c901280c --- /dev/null +++ b/docs/components/outputcodeinterpretercallitemtypeimage.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputCodeInterpreterCallItemTypeImage" +--- + +## Example Usage + +```python +from openrouter.components import OutputCodeInterpreterCallItemTypeImage +value: OutputCodeInterpreterCallItemTypeImage = "image" +``` + + +## Values + +- `"image"` diff --git a/docs/components/outputcodeinterpreterservertoolitem.mdx b/docs/components/outputcodeinterpreterservertoolitem.mdx new file mode 100644 index 00000000..3b97b10f --- /dev/null +++ b/docs/components/outputcodeinterpreterservertoolitem.mdx @@ -0,0 +1,19 @@ +--- +title: "OutputCodeInterpreterServerToolItem" +--- + +An openrouter:code_interpreter server tool output item + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `code` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `exit_code` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `language` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `status` | [components.ToolCallStatus](../components/toolcallstatus.mdx) | :heavy_check_mark: | N/A | completed | +| `stderr` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `stdout` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `type` | [components.OutputCodeInterpreterServerToolItemType](../components/outputcodeinterpreterservertoolitemtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/outputcodeinterpreterservertoolitemtype.mdx b/docs/components/outputcodeinterpreterservertoolitemtype.mdx new file mode 100644 index 00000000..a9b4162f --- /dev/null +++ b/docs/components/outputcodeinterpreterservertoolitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputCodeInterpreterServerToolItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputCodeInterpreterServerToolItemType +value: OutputCodeInterpreterServerToolItemType = "openrouter:code_interpreter" +``` + + +## Values + +- `"openrouter:code_interpreter"` diff --git a/docs/components/outputcomputercallitem.mdx b/docs/components/outputcomputercallitem.mdx new file mode 100644 index 00000000..7d0669ae --- /dev/null +++ b/docs/components/outputcomputercallitem.mdx @@ -0,0 +1,14 @@ +--- +title: "OutputComputerCallItem" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `action` | *OptionalNullable[Any]* | :heavy_minus_sign: | N/A | +| `call_id` | *str* | :heavy_check_mark: | N/A | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `pending_safety_checks` | List[[components.PendingSafetyCheck](../components/pendingsafetycheck.mdx)] | :heavy_check_mark: | N/A | +| `status` | [components.OutputComputerCallItemStatus](../components/outputcomputercallitemstatus.mdx) | :heavy_check_mark: | N/A | +| `type` | [components.OutputComputerCallItemType](../components/outputcomputercallitemtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/outputcomputercallitemstatus.mdx b/docs/components/outputcomputercallitemstatus.mdx new file mode 100644 index 00000000..7d7e680b --- /dev/null +++ b/docs/components/outputcomputercallitemstatus.mdx @@ -0,0 +1,21 @@ +--- +title: "OutputComputerCallItemStatus" +--- + +## Example Usage + +```python +from openrouter.components import OutputComputerCallItemStatus + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: OutputComputerCallItemStatus = "completed" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"completed"` +- `"incomplete"` +- `"in_progress"` diff --git a/docs/components/outputcomputercallitemtype.mdx b/docs/components/outputcomputercallitemtype.mdx new file mode 100644 index 00000000..072ec0fd --- /dev/null +++ b/docs/components/outputcomputercallitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputComputerCallItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputComputerCallItemType +value: OutputComputerCallItemType = "computer_call" +``` + + +## Values + +- `"computer_call"` diff --git a/docs/components/outputcustomtoolcallitem.mdx b/docs/components/outputcustomtoolcallitem.mdx new file mode 100644 index 00000000..6cc163b6 --- /dev/null +++ b/docs/components/outputcustomtoolcallitem.mdx @@ -0,0 +1,17 @@ +--- +title: "OutputCustomToolCallItem" +--- + +A call to a custom (freeform-grammar) tool created by the model — distinct from `function_call`. Used for tools like Codex CLI's `apply_patch` whose payload is opaque text rather than JSON arguments. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| `call_id` | *str* | :heavy_check_mark: | N/A | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `input` | *str* | :heavy_check_mark: | N/A | +| `name` | *str* | :heavy_check_mark: | N/A | +| `namespace` | *Optional[str]* | :heavy_minus_sign: | Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server) | +| `type` | [components.OutputCustomToolCallItemType](../components/outputcustomtoolcallitemtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/outputcustomtoolcallitemtype.mdx b/docs/components/outputcustomtoolcallitemtype.mdx new file mode 100644 index 00000000..9bf4d0f9 --- /dev/null +++ b/docs/components/outputcustomtoolcallitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputCustomToolCallItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputCustomToolCallItemType +value: OutputCustomToolCallItemType = "custom_tool_call" +``` + + +## Values + +- `"custom_tool_call"` diff --git a/docs/components/outputdatetimeitem.mdx b/docs/components/outputdatetimeitem.mdx new file mode 100644 index 00000000..c698d7e6 --- /dev/null +++ b/docs/components/outputdatetimeitem.mdx @@ -0,0 +1,16 @@ +--- +title: "OutputDatetimeItem" +--- + +An openrouter:datetime server tool output item + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `datetime_` | *str* | :heavy_check_mark: | ISO 8601 datetime string | | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `status` | [components.ToolCallStatus](../components/toolcallstatus.mdx) | :heavy_check_mark: | N/A | completed | +| `timezone` | *str* | :heavy_check_mark: | IANA timezone name | | +| `type` | [components.OutputDatetimeItemType](../components/outputdatetimeitemtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/outputdatetimeitemtype.mdx b/docs/components/outputdatetimeitemtype.mdx new file mode 100644 index 00000000..62bc0076 --- /dev/null +++ b/docs/components/outputdatetimeitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputDatetimeItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputDatetimeItemType +value: OutputDatetimeItemType = "openrouter:datetime" +``` + + +## Values + +- `"openrouter:datetime"` diff --git a/docs/components/outputfilesearchcallitem.mdx b/docs/components/outputfilesearchcallitem.mdx new file mode 100644 index 00000000..9b9ef444 --- /dev/null +++ b/docs/components/outputfilesearchcallitem.mdx @@ -0,0 +1,12 @@ +--- +title: "OutputFileSearchCallItem" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | N/A | | +| `queries` | List[*str*] | :heavy_check_mark: | N/A | | +| `status` | [components.WebSearchStatus](../components/websearchstatus.mdx) | :heavy_check_mark: | N/A | completed | +| `type` | [components.OutputFileSearchCallItemType](../components/outputfilesearchcallitemtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/outputfilesearchcallitemtype.mdx b/docs/components/outputfilesearchcallitemtype.mdx new file mode 100644 index 00000000..9109c9a4 --- /dev/null +++ b/docs/components/outputfilesearchcallitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputFileSearchCallItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputFileSearchCallItemType +value: OutputFileSearchCallItemType = "file_search_call" +``` + + +## Values + +- `"file_search_call"` diff --git a/docs/components/outputfilesearchservertoolitem.mdx b/docs/components/outputfilesearchservertoolitem.mdx new file mode 100644 index 00000000..2095688c --- /dev/null +++ b/docs/components/outputfilesearchservertoolitem.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputFileSearchServerToolItem" +--- + +An openrouter:file_search server tool output item + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `queries` | List[*str*] | :heavy_minus_sign: | N/A | | +| `status` | [components.ToolCallStatus](../components/toolcallstatus.mdx) | :heavy_check_mark: | N/A | completed | +| `type` | [components.OutputFileSearchServerToolItemType](../components/outputfilesearchservertoolitemtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/outputfilesearchservertoolitemtype.mdx b/docs/components/outputfilesearchservertoolitemtype.mdx new file mode 100644 index 00000000..fe499bd2 --- /dev/null +++ b/docs/components/outputfilesearchservertoolitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputFileSearchServerToolItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputFileSearchServerToolItemType +value: OutputFileSearchServerToolItemType = "openrouter:file_search" +``` + + +## Values + +- `"openrouter:file_search"` diff --git a/docs/components/outputfunctioncallitem.mdx b/docs/components/outputfunctioncallitem.mdx new file mode 100644 index 00000000..86a1cd0d --- /dev/null +++ b/docs/components/outputfunctioncallitem.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputFunctionCallItem" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `arguments` | *str* | :heavy_check_mark: | N/A | +| `call_id` | *str* | :heavy_check_mark: | N/A | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `name` | *str* | :heavy_check_mark: | N/A | +| `namespace` | *Optional[str]* | :heavy_minus_sign: | Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server) | +| `status` | [Optional[components.OutputFunctionCallItemStatusUnion]](../components/outputfunctioncallitemstatusunion.mdx) | :heavy_minus_sign: | N/A | +| `type` | [components.OutputFunctionCallItemType](../components/outputfunctioncallitemtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/outputfunctioncallitemstatuscompleted.mdx b/docs/components/outputfunctioncallitemstatuscompleted.mdx new file mode 100644 index 00000000..ec84cfaf --- /dev/null +++ b/docs/components/outputfunctioncallitemstatuscompleted.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputFunctionCallItemStatusCompleted" +--- + +## Example Usage + +```python +from openrouter.components import OutputFunctionCallItemStatusCompleted +value: OutputFunctionCallItemStatusCompleted = "completed" +``` + + +## Values + +- `"completed"` diff --git a/docs/components/outputfunctioncallitemstatusincomplete.mdx b/docs/components/outputfunctioncallitemstatusincomplete.mdx new file mode 100644 index 00000000..b95a0a03 --- /dev/null +++ b/docs/components/outputfunctioncallitemstatusincomplete.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputFunctionCallItemStatusIncomplete" +--- + +## Example Usage + +```python +from openrouter.components import OutputFunctionCallItemStatusIncomplete +value: OutputFunctionCallItemStatusIncomplete = "incomplete" +``` + + +## Values + +- `"incomplete"` diff --git a/docs/components/outputfunctioncallitemstatusinprogress.mdx b/docs/components/outputfunctioncallitemstatusinprogress.mdx new file mode 100644 index 00000000..7204f29b --- /dev/null +++ b/docs/components/outputfunctioncallitemstatusinprogress.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputFunctionCallItemStatusInProgress" +--- + +## Example Usage + +```python +from openrouter.components import OutputFunctionCallItemStatusInProgress +value: OutputFunctionCallItemStatusInProgress = "in_progress" +``` + + +## Values + +- `"in_progress"` diff --git a/docs/components/outputfunctioncallitemstatusunion.mdx b/docs/components/outputfunctioncallitemstatusunion.mdx new file mode 100644 index 00000000..d4cb1185 --- /dev/null +++ b/docs/components/outputfunctioncallitemstatusunion.mdx @@ -0,0 +1,24 @@ +--- +title: "OutputFunctionCallItemStatusUnion" +--- + +## Supported Types + +### `components.OutputFunctionCallItemStatusCompleted` + +```python +value: components.OutputFunctionCallItemStatusCompleted = /* values here */ +``` + +### `components.OutputFunctionCallItemStatusIncomplete` + +```python +value: components.OutputFunctionCallItemStatusIncomplete = /* values here */ +``` + +### `components.OutputFunctionCallItemStatusInProgress` + +```python +value: components.OutputFunctionCallItemStatusInProgress = /* values here */ +``` + diff --git a/docs/components/outputfunctioncallitemtype.mdx b/docs/components/outputfunctioncallitemtype.mdx new file mode 100644 index 00000000..700af387 --- /dev/null +++ b/docs/components/outputfunctioncallitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputFunctionCallItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputFunctionCallItemType +value: OutputFunctionCallItemType = "function_call" +``` + + +## Values + +- `"function_call"` diff --git a/docs/components/outputfusionservertoolitem.mdx b/docs/components/outputfusionservertoolitem.mdx new file mode 100644 index 00000000..996340e4 --- /dev/null +++ b/docs/components/outputfusionservertoolitem.mdx @@ -0,0 +1,20 @@ +--- +title: "OutputFusionServerToolItem" +--- + +An openrouter:fusion server tool output item + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `analysis` | [Optional[components.FusionAnalysisResult]](../components/fusionanalysisresult.mdx) | :heavy_minus_sign: | Structured analysis produced by the fusion judge model. | \{
"blind_spots": [
"No model considered the impact on existing API consumers."
],
"consensus": [
"All panel models agree the request is asking for a concise summary."
],
"contradictions": [
\{
"stances": [
\{
"model": "openai/gpt-5",
"stance": "Favors an incremental rollout."
},
\{
"model": "anthropic/claude-sonnet-4.5",
"stance": "Favors a single coordinated migration."
}
],
"topic": "Recommended approach"
}
],
"partial_coverage": [
\{
"models": [
"openai/gpt-5"
],
"point": "Only one model addressed the rollback strategy."
}
],
"unique_insights": [
\{
"insight": "Highlighted a backwards-compatibility risk the other models missed.",
"model": "anthropic/claude-sonnet-4.5"
}
]
} | +| `error` | *Optional[str]* | :heavy_minus_sign: | Error message when the fusion run did not produce an analysis result. | | +| `failed_models` | List[[components.FailedModel](../components/failedmodel.mdx)] | :heavy_minus_sign: | Models that were requested as part of the analysis panel but did not produce a response. Present when at least one requested analysis model failed. The fusion result is still usable but was produced from a degraded panel. | | +| `failure_reason` | *Optional[str]* | :heavy_minus_sign: | Typed failure reason when the fusion run failed. Possible values include: all_panels_failed, insufficient_credits, rate_limited, judge_not_valid_json, judge_schema_mismatch, judge_upstream_error, judge_empty_completion. | | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `responses` | List[[components.Response](../components/response.mdx)] | :heavy_minus_sign: | Analysis models that produced a response in this fusion run, with each model's full panel content. | | +| `sources` | List[[components.FusionSource](../components/fusionsource.mdx)] | :heavy_minus_sign: | Web pages the analysis panels and judge retrieved via web search during this fusion run, deduplicated by URL across the whole run. Present when at least one model cited a source. | | +| `status` | [components.ToolCallStatus](../components/toolcallstatus.mdx) | :heavy_check_mark: | N/A | completed | +| `type` | [components.OutputFusionServerToolItemType](../components/outputfusionservertoolitemtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/outputfusionservertoolitemtype.mdx b/docs/components/outputfusionservertoolitemtype.mdx new file mode 100644 index 00000000..5b050d8d --- /dev/null +++ b/docs/components/outputfusionservertoolitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputFusionServerToolItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputFusionServerToolItemType +value: OutputFusionServerToolItemType = "openrouter:fusion" +``` + + +## Values + +- `"openrouter:fusion"` diff --git a/docs/components/outputimage.mdx b/docs/components/outputimage.mdx new file mode 100644 index 00000000..a7b82463 --- /dev/null +++ b/docs/components/outputimage.mdx @@ -0,0 +1,10 @@ +--- +title: "OutputImage" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `type` | [components.OutputCodeInterpreterCallItemTypeImage](../components/outputcodeinterpretercallitemtypeimage.mdx) | :heavy_check_mark: | N/A | +| `url` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/outputimagegenerationcallitem.mdx b/docs/components/outputimagegenerationcallitem.mdx new file mode 100644 index 00000000..d9926094 --- /dev/null +++ b/docs/components/outputimagegenerationcallitem.mdx @@ -0,0 +1,12 @@ +--- +title: "OutputImageGenerationCallItem" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | N/A | | +| `result` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `status` | [components.ImageGenerationStatus](../components/imagegenerationstatus.mdx) | :heavy_check_mark: | N/A | completed | +| `type` | [components.OutputImageGenerationCallItemType](../components/outputimagegenerationcallitemtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/outputimagegenerationcallitemtype.mdx b/docs/components/outputimagegenerationcallitemtype.mdx new file mode 100644 index 00000000..bb97b950 --- /dev/null +++ b/docs/components/outputimagegenerationcallitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputImageGenerationCallItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputImageGenerationCallItemType +value: OutputImageGenerationCallItemType = "image_generation_call" +``` + + +## Values + +- `"image_generation_call"` diff --git a/docs/components/outputimagegenerationservertoolitem.mdx b/docs/components/outputimagegenerationservertoolitem.mdx new file mode 100644 index 00000000..516d44ba --- /dev/null +++ b/docs/components/outputimagegenerationservertoolitem.mdx @@ -0,0 +1,18 @@ +--- +title: "OutputImageGenerationServerToolItem" +--- + +An openrouter:image_generation server tool output item + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `image_b64` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `image_url` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `result` | *OptionalNullable[str]* | :heavy_minus_sign: | The generated image as a base64-encoded string or URL, matching OpenAI image_generation_call format | | +| `revised_prompt` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `status` | [components.ToolCallStatus](../components/toolcallstatus.mdx) | :heavy_check_mark: | N/A | completed | +| `type` | [components.OutputImageGenerationServerToolItemType](../components/outputimagegenerationservertoolitemtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/outputimagegenerationservertoolitemtype.mdx b/docs/components/outputimagegenerationservertoolitemtype.mdx new file mode 100644 index 00000000..6296f5a2 --- /dev/null +++ b/docs/components/outputimagegenerationservertoolitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputImageGenerationServerToolItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputImageGenerationServerToolItemType +value: OutputImageGenerationServerToolItemType = "openrouter:image_generation" +``` + + +## Values + +- `"openrouter:image_generation"` diff --git a/docs/components/outputitemimagegenerationcall.md b/docs/components/outputitemimagegenerationcall.mdx similarity index 80% rename from docs/components/outputitemimagegenerationcall.md rename to docs/components/outputitemimagegenerationcall.mdx index 735eb058..a9c86ddb 100644 --- a/docs/components/outputitemimagegenerationcall.md +++ b/docs/components/outputitemimagegenerationcall.mdx @@ -1,5 +1,6 @@ -# OutputItemImageGenerationCall - +--- +title: "OutputItemImageGenerationCall" +--- ## Fields @@ -7,5 +8,5 @@ | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | | `id` | *str* | :heavy_check_mark: | N/A | | | `result` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | -| `status` | [components.ImageGenerationStatus](../components/imagegenerationstatus.md) | :heavy_check_mark: | N/A | completed | -| `type` | [components.OutputItemImageGenerationCallType](../components/outputitemimagegenerationcalltype.md) | :heavy_check_mark: | N/A | | \ No newline at end of file +| `status` | [components.ImageGenerationStatus](../components/imagegenerationstatus.mdx) | :heavy_check_mark: | N/A | completed | +| `type` | [components.OutputItemImageGenerationCallType](../components/outputitemimagegenerationcalltype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/outputitemimagegenerationcalltype.md b/docs/components/outputitemimagegenerationcalltype.md deleted file mode 100644 index d9e663fc..00000000 --- a/docs/components/outputitemimagegenerationcalltype.md +++ /dev/null @@ -1,8 +0,0 @@ -# OutputItemImageGenerationCallType - - -## Values - -| Name | Value | -| ----------------------- | ----------------------- | -| `IMAGE_GENERATION_CALL` | image_generation_call | \ No newline at end of file diff --git a/docs/components/outputitemimagegenerationcalltype.mdx b/docs/components/outputitemimagegenerationcalltype.mdx new file mode 100644 index 00000000..7e12c2ee --- /dev/null +++ b/docs/components/outputitemimagegenerationcalltype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputItemImageGenerationCallType" +--- + +## Example Usage + +```python +from openrouter.components import OutputItemImageGenerationCallType +value: OutputItemImageGenerationCallType = "image_generation_call" +``` + + +## Values + +- `"image_generation_call"` diff --git a/docs/components/outputitems.mdx b/docs/components/outputitems.mdx new file mode 100644 index 00000000..e85451a3 --- /dev/null +++ b/docs/components/outputitems.mdx @@ -0,0 +1,183 @@ +--- +title: "OutputItems" +--- + +An output item from the response + + +## Supported Types + +### `components.OutputApplyPatchCallItem` + +```python +value: components.OutputApplyPatchCallItem = /* values here */ +``` + +### `components.OutputCodeInterpreterCallItem` + +```python +value: components.OutputCodeInterpreterCallItem = /* values here */ +``` + +### `components.OutputComputerCallItem` + +```python +value: components.OutputComputerCallItem = /* values here */ +``` + +### `components.OutputCustomToolCallItem` + +```python +value: components.OutputCustomToolCallItem = /* values here */ +``` + +### `components.OutputFileSearchCallItem` + +```python +value: components.OutputFileSearchCallItem = /* values here */ +``` + +### `components.OutputFunctionCallItem` + +```python +value: components.OutputFunctionCallItem = /* values here */ +``` + +### `components.OutputImageGenerationCallItem` + +```python +value: components.OutputImageGenerationCallItem = /* values here */ +``` + +### `components.OutputMessageItem` + +```python +value: components.OutputMessageItem = /* values here */ +``` + +### `components.OutputAdvisorServerToolItem` + +```python +value: components.OutputAdvisorServerToolItem = /* values here */ +``` + +### `components.OutputApplyPatchServerToolItem` + +```python +value: components.OutputApplyPatchServerToolItem = /* values here */ +``` + +### `components.OutputBashServerToolItem` + +```python +value: components.OutputBashServerToolItem = /* values here */ +``` + +### `components.OutputBrowserUseServerToolItem` + +```python +value: components.OutputBrowserUseServerToolItem = /* values here */ +``` + +### `components.OutputCodeInterpreterServerToolItem` + +```python +value: components.OutputCodeInterpreterServerToolItem = /* values here */ +``` + +### `components.OutputDatetimeItem` + +```python +value: components.OutputDatetimeItem = /* values here */ +``` + +### `components.OutputSearchModelsServerToolItem` + +```python +value: components.OutputSearchModelsServerToolItem = /* values here */ +``` + +### `components.OutputFileSearchServerToolItem` + +```python +value: components.OutputFileSearchServerToolItem = /* values here */ +``` + +### `components.OutputFusionServerToolItem` + +```python +value: components.OutputFusionServerToolItem = /* values here */ +``` + +### `components.OutputImageGenerationServerToolItem` + +```python +value: components.OutputImageGenerationServerToolItem = /* values here */ +``` + +### `components.OutputMcpServerToolItem` + +```python +value: components.OutputMcpServerToolItem = /* values here */ +``` + +### `components.OutputMemoryServerToolItem` + +```python +value: components.OutputMemoryServerToolItem = /* values here */ +``` + +### `components.OutputSubagentServerToolItem` + +```python +value: components.OutputSubagentServerToolItem = /* values here */ +``` + +### `components.OutputTextEditorServerToolItem` + +```python +value: components.OutputTextEditorServerToolItem = /* values here */ +``` + +### `components.OutputToolSearchServerToolItem` + +```python +value: components.OutputToolSearchServerToolItem = /* values here */ +``` + +### `components.OutputWebFetchServerToolItem` + +```python +value: components.OutputWebFetchServerToolItem = /* values here */ +``` + +### `components.OutputWebSearchServerToolItem` + +```python +value: components.OutputWebSearchServerToolItem = /* values here */ +``` + +### `components.OutputReasoningItem` + +```python +value: components.OutputReasoningItem = /* values here */ +``` + +### `components.OutputShellCallItem` + +```python +value: components.OutputShellCallItem = /* values here */ +``` + +### `components.OutputShellCallOutputItem` + +```python +value: components.OutputShellCallOutputItem = /* values here */ +``` + +### `components.OutputWebSearchCallItem` + +```python +value: components.OutputWebSearchCallItem = /* values here */ +``` + diff --git a/docs/components/outputlogs.mdx b/docs/components/outputlogs.mdx new file mode 100644 index 00000000..e6eb732c --- /dev/null +++ b/docs/components/outputlogs.mdx @@ -0,0 +1,10 @@ +--- +title: "OutputLogs" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| `logs` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.TypeLogs](../components/typelogs.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/outputmcpservertoolitem.mdx b/docs/components/outputmcpservertoolitem.mdx new file mode 100644 index 00000000..d11d1e77 --- /dev/null +++ b/docs/components/outputmcpservertoolitem.mdx @@ -0,0 +1,16 @@ +--- +title: "OutputMcpServerToolItem" +--- + +An openrouter:mcp server tool output item + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `server_label` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `status` | [components.ToolCallStatus](../components/toolcallstatus.mdx) | :heavy_check_mark: | N/A | completed | +| `tool_name` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `type` | [components.OutputMcpServerToolItemType](../components/outputmcpservertoolitemtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/outputmcpservertoolitemtype.mdx b/docs/components/outputmcpservertoolitemtype.mdx new file mode 100644 index 00000000..b98202d9 --- /dev/null +++ b/docs/components/outputmcpservertoolitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputMcpServerToolItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputMcpServerToolItemType +value: OutputMcpServerToolItemType = "openrouter:mcp" +``` + + +## Values + +- `"openrouter:mcp"` diff --git a/docs/components/outputmemoryservertoolitem.mdx b/docs/components/outputmemoryservertoolitem.mdx new file mode 100644 index 00000000..f6fdc65d --- /dev/null +++ b/docs/components/outputmemoryservertoolitem.mdx @@ -0,0 +1,17 @@ +--- +title: "OutputMemoryServerToolItem" +--- + +An openrouter:memory server tool output item + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `action` | [Optional[components.ActionEnum]](../components/actionenum.mdx) | :heavy_minus_sign: | N/A | | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `status` | [components.ToolCallStatus](../components/toolcallstatus.mdx) | :heavy_check_mark: | N/A | completed | +| `type` | [components.OutputMemoryServerToolItemType](../components/outputmemoryservertoolitemtype.mdx) | :heavy_check_mark: | N/A | | +| `value` | *OptionalNullable[Any]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/components/outputmemoryservertoolitemtype.mdx b/docs/components/outputmemoryservertoolitemtype.mdx new file mode 100644 index 00000000..6a65103c --- /dev/null +++ b/docs/components/outputmemoryservertoolitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputMemoryServerToolItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputMemoryServerToolItemType +value: OutputMemoryServerToolItemType = "openrouter:memory" +``` + + +## Values + +- `"openrouter:memory"` diff --git a/docs/components/outputmessage.md b/docs/components/outputmessage.mdx similarity index 86% rename from docs/components/outputmessage.md rename to docs/components/outputmessage.mdx index e59886ce..9cd8a403 100644 --- a/docs/components/outputmessage.md +++ b/docs/components/outputmessage.mdx @@ -1,13 +1,14 @@ -# OutputMessage - +--- +title: "OutputMessage" +--- ## Fields | Field | Type | Required | Description | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `content` | List[[components.OutputMessageContent](../components/outputmessagecontent.md)] | :heavy_check_mark: | N/A | +| `content` | List[[components.OutputMessageContent](../components/outputmessagecontent.mdx)] | :heavy_check_mark: | N/A | | `id` | *str* | :heavy_check_mark: | N/A | -| `phase` | [OptionalNullable[components.OutputMessagePhaseUnion]](../components/outputmessagephaseunion.md) | :heavy_minus_sign: | The phase of an assistant message. Use `commentary` for an intermediate assistant message and `final_answer` for the final assistant message. For follow-up requests with models like `gpt-5.3-codex` and later, preserve and resend phase on all assistant messages. Omitting it can degrade performance. Not used for user messages. | -| `role` | [components.OutputMessageRole](../components/outputmessagerole.md) | :heavy_check_mark: | N/A | -| `status` | [Optional[components.OutputMessageStatusUnion]](../components/outputmessagestatusunion.md) | :heavy_minus_sign: | N/A | -| `type` | [components.OutputMessageType](../components/outputmessagetype.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| `phase` | [OptionalNullable[components.OutputMessagePhaseUnion]](../components/outputmessagephaseunion.mdx) | :heavy_minus_sign: | The phase of an assistant message. Use `commentary` for an intermediate assistant message and `final_answer` for the final assistant message. For follow-up requests with models like `gpt-5.3-codex` and later, preserve and resend phase on all assistant messages. Omitting it can degrade performance. Not used for user messages. | +| `role` | [components.OutputMessageRole](../components/outputmessagerole.mdx) | :heavy_check_mark: | N/A | +| `status` | [Optional[components.OutputMessageStatusUnion]](../components/outputmessagestatusunion.mdx) | :heavy_minus_sign: | N/A | +| `type` | [components.OutputMessageType](../components/outputmessagetype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/outputmessagecontent.mdx b/docs/components/outputmessagecontent.mdx new file mode 100644 index 00000000..04594cda --- /dev/null +++ b/docs/components/outputmessagecontent.mdx @@ -0,0 +1,18 @@ +--- +title: "OutputMessageContent" +--- + +## Supported Types + +### `components.ResponseOutputText` + +```python +value: components.ResponseOutputText = /* values here */ +``` + +### `components.OpenAIResponsesRefusalContent` + +```python +value: components.OpenAIResponsesRefusalContent = /* values here */ +``` + diff --git a/docs/components/outputmessageitem.mdx b/docs/components/outputmessageitem.mdx new file mode 100644 index 00000000..f02e8d23 --- /dev/null +++ b/docs/components/outputmessageitem.mdx @@ -0,0 +1,17 @@ +--- +title: "OutputMessageItem" +--- + +An output message item + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `content` | List[[components.OutputMessageItemContent](../components/outputmessageitemcontent.mdx)] | :heavy_check_mark: | N/A | +| `id` | *str* | :heavy_check_mark: | N/A | +| `phase` | [OptionalNullable[components.OutputMessageItemPhaseUnion]](../components/outputmessageitemphaseunion.mdx) | :heavy_minus_sign: | The phase of an assistant message. Use `commentary` for an intermediate assistant message and `final_answer` for the final assistant message. For follow-up requests with models like `gpt-5.3-codex` and later, preserve and resend phase on all assistant messages. Omitting it can degrade performance. Not used for user messages. | +| `role` | [components.OutputMessageItemRole](../components/outputmessageitemrole.mdx) | :heavy_check_mark: | N/A | +| `status` | [Optional[components.OutputMessageItemStatusUnion]](../components/outputmessageitemstatusunion.mdx) | :heavy_minus_sign: | N/A | +| `type` | [components.OutputMessageItemType](../components/outputmessageitemtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/outputmessageitemcontent.mdx b/docs/components/outputmessageitemcontent.mdx new file mode 100644 index 00000000..3fe04b2f --- /dev/null +++ b/docs/components/outputmessageitemcontent.mdx @@ -0,0 +1,18 @@ +--- +title: "OutputMessageItemContent" +--- + +## Supported Types + +### `components.ResponseOutputText` + +```python +value: components.ResponseOutputText = /* values here */ +``` + +### `components.OpenAIResponsesRefusalContent` + +```python +value: components.OpenAIResponsesRefusalContent = /* values here */ +``` + diff --git a/docs/components/outputmessageitemphasecommentary.mdx b/docs/components/outputmessageitemphasecommentary.mdx new file mode 100644 index 00000000..67ae51fb --- /dev/null +++ b/docs/components/outputmessageitemphasecommentary.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputMessageItemPhaseCommentary" +--- + +## Example Usage + +```python +from openrouter.components import OutputMessageItemPhaseCommentary +value: OutputMessageItemPhaseCommentary = "commentary" +``` + + +## Values + +- `"commentary"` diff --git a/docs/components/outputmessageitemphasefinalanswer.mdx b/docs/components/outputmessageitemphasefinalanswer.mdx new file mode 100644 index 00000000..5fded9ec --- /dev/null +++ b/docs/components/outputmessageitemphasefinalanswer.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputMessageItemPhaseFinalAnswer" +--- + +## Example Usage + +```python +from openrouter.components import OutputMessageItemPhaseFinalAnswer +value: OutputMessageItemPhaseFinalAnswer = "final_answer" +``` + + +## Values + +- `"final_answer"` diff --git a/docs/components/outputmessageitemphaseunion.mdx b/docs/components/outputmessageitemphaseunion.mdx new file mode 100644 index 00000000..39b73fbe --- /dev/null +++ b/docs/components/outputmessageitemphaseunion.mdx @@ -0,0 +1,27 @@ +--- +title: "OutputMessageItemPhaseUnion" +--- + +The phase of an assistant message. Use `commentary` for an intermediate assistant message and `final_answer` for the final assistant message. For follow-up requests with models like `gpt-5.3-codex` and later, preserve and resend phase on all assistant messages. Omitting it can degrade performance. Not used for user messages. + + +## Supported Types + +### `components.OutputMessageItemPhaseCommentary` + +```python +value: components.OutputMessageItemPhaseCommentary = /* values here */ +``` + +### `components.OutputMessageItemPhaseFinalAnswer` + +```python +value: components.OutputMessageItemPhaseFinalAnswer = /* values here */ +``` + +### `Any` + +```python +value: Any = /* values here */ +``` + diff --git a/docs/components/outputmessageitemrole.mdx b/docs/components/outputmessageitemrole.mdx new file mode 100644 index 00000000..b6456e41 --- /dev/null +++ b/docs/components/outputmessageitemrole.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputMessageItemRole" +--- + +## Example Usage + +```python +from openrouter.components import OutputMessageItemRole +value: OutputMessageItemRole = "assistant" +``` + + +## Values + +- `"assistant"` diff --git a/docs/components/outputmessageitemstatuscompleted.mdx b/docs/components/outputmessageitemstatuscompleted.mdx new file mode 100644 index 00000000..43f950c0 --- /dev/null +++ b/docs/components/outputmessageitemstatuscompleted.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputMessageItemStatusCompleted" +--- + +## Example Usage + +```python +from openrouter.components import OutputMessageItemStatusCompleted +value: OutputMessageItemStatusCompleted = "completed" +``` + + +## Values + +- `"completed"` diff --git a/docs/components/outputmessageitemstatusincomplete.mdx b/docs/components/outputmessageitemstatusincomplete.mdx new file mode 100644 index 00000000..7191dab2 --- /dev/null +++ b/docs/components/outputmessageitemstatusincomplete.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputMessageItemStatusIncomplete" +--- + +## Example Usage + +```python +from openrouter.components import OutputMessageItemStatusIncomplete +value: OutputMessageItemStatusIncomplete = "incomplete" +``` + + +## Values + +- `"incomplete"` diff --git a/docs/components/outputmessageitemstatusinprogress.mdx b/docs/components/outputmessageitemstatusinprogress.mdx new file mode 100644 index 00000000..978dbbc1 --- /dev/null +++ b/docs/components/outputmessageitemstatusinprogress.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputMessageItemStatusInProgress" +--- + +## Example Usage + +```python +from openrouter.components import OutputMessageItemStatusInProgress +value: OutputMessageItemStatusInProgress = "in_progress" +``` + + +## Values + +- `"in_progress"` diff --git a/docs/components/outputmessageitemstatusunion.mdx b/docs/components/outputmessageitemstatusunion.mdx new file mode 100644 index 00000000..d5736460 --- /dev/null +++ b/docs/components/outputmessageitemstatusunion.mdx @@ -0,0 +1,24 @@ +--- +title: "OutputMessageItemStatusUnion" +--- + +## Supported Types + +### `components.OutputMessageItemStatusCompleted` + +```python +value: components.OutputMessageItemStatusCompleted = /* values here */ +``` + +### `components.OutputMessageItemStatusIncomplete` + +```python +value: components.OutputMessageItemStatusIncomplete = /* values here */ +``` + +### `components.OutputMessageItemStatusInProgress` + +```python +value: components.OutputMessageItemStatusInProgress = /* values here */ +``` + diff --git a/docs/components/outputmessageitemtype.mdx b/docs/components/outputmessageitemtype.mdx new file mode 100644 index 00000000..8baacb4b --- /dev/null +++ b/docs/components/outputmessageitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputMessageItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputMessageItemType +value: OutputMessageItemType = "message" +``` + + +## Values + +- `"message"` diff --git a/docs/components/outputmessagephasecommentary.mdx b/docs/components/outputmessagephasecommentary.mdx new file mode 100644 index 00000000..c03db0f9 --- /dev/null +++ b/docs/components/outputmessagephasecommentary.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputMessagePhaseCommentary" +--- + +## Example Usage + +```python +from openrouter.components import OutputMessagePhaseCommentary +value: OutputMessagePhaseCommentary = "commentary" +``` + + +## Values + +- `"commentary"` diff --git a/docs/components/outputmessagephasefinalanswer.mdx b/docs/components/outputmessagephasefinalanswer.mdx new file mode 100644 index 00000000..47d6cfd6 --- /dev/null +++ b/docs/components/outputmessagephasefinalanswer.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputMessagePhaseFinalAnswer" +--- + +## Example Usage + +```python +from openrouter.components import OutputMessagePhaseFinalAnswer +value: OutputMessagePhaseFinalAnswer = "final_answer" +``` + + +## Values + +- `"final_answer"` diff --git a/docs/components/outputmessagephaseunion.mdx b/docs/components/outputmessagephaseunion.mdx new file mode 100644 index 00000000..67491fda --- /dev/null +++ b/docs/components/outputmessagephaseunion.mdx @@ -0,0 +1,27 @@ +--- +title: "OutputMessagePhaseUnion" +--- + +The phase of an assistant message. Use `commentary` for an intermediate assistant message and `final_answer` for the final assistant message. For follow-up requests with models like `gpt-5.3-codex` and later, preserve and resend phase on all assistant messages. Omitting it can degrade performance. Not used for user messages. + + +## Supported Types + +### `components.OutputMessagePhaseCommentary` + +```python +value: components.OutputMessagePhaseCommentary = /* values here */ +``` + +### `components.OutputMessagePhaseFinalAnswer` + +```python +value: components.OutputMessagePhaseFinalAnswer = /* values here */ +``` + +### `Any` + +```python +value: Any = /* values here */ +``` + diff --git a/docs/components/outputmessagerole.md b/docs/components/outputmessagerole.md deleted file mode 100644 index 21b16167..00000000 --- a/docs/components/outputmessagerole.md +++ /dev/null @@ -1,8 +0,0 @@ -# OutputMessageRole - - -## Values - -| Name | Value | -| ----------- | ----------- | -| `ASSISTANT` | assistant | \ No newline at end of file diff --git a/docs/components/outputmessagerole.mdx b/docs/components/outputmessagerole.mdx new file mode 100644 index 00000000..342943e3 --- /dev/null +++ b/docs/components/outputmessagerole.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputMessageRole" +--- + +## Example Usage + +```python +from openrouter.components import OutputMessageRole +value: OutputMessageRole = "assistant" +``` + + +## Values + +- `"assistant"` diff --git a/docs/components/outputmessagestatuscompleted.md b/docs/components/outputmessagestatuscompleted.md deleted file mode 100644 index 2b0254b5..00000000 --- a/docs/components/outputmessagestatuscompleted.md +++ /dev/null @@ -1,8 +0,0 @@ -# OutputMessageStatusCompleted - - -## Values - -| Name | Value | -| ----------- | ----------- | -| `COMPLETED` | completed | \ No newline at end of file diff --git a/docs/components/outputmessagestatuscompleted.mdx b/docs/components/outputmessagestatuscompleted.mdx new file mode 100644 index 00000000..8e7698d1 --- /dev/null +++ b/docs/components/outputmessagestatuscompleted.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputMessageStatusCompleted" +--- + +## Example Usage + +```python +from openrouter.components import OutputMessageStatusCompleted +value: OutputMessageStatusCompleted = "completed" +``` + + +## Values + +- `"completed"` diff --git a/docs/components/outputmessagestatusincomplete.md b/docs/components/outputmessagestatusincomplete.md deleted file mode 100644 index 3146b10a..00000000 --- a/docs/components/outputmessagestatusincomplete.md +++ /dev/null @@ -1,8 +0,0 @@ -# OutputMessageStatusIncomplete - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `INCOMPLETE` | incomplete | \ No newline at end of file diff --git a/docs/components/outputmessagestatusincomplete.mdx b/docs/components/outputmessagestatusincomplete.mdx new file mode 100644 index 00000000..c492398c --- /dev/null +++ b/docs/components/outputmessagestatusincomplete.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputMessageStatusIncomplete" +--- + +## Example Usage + +```python +from openrouter.components import OutputMessageStatusIncomplete +value: OutputMessageStatusIncomplete = "incomplete" +``` + + +## Values + +- `"incomplete"` diff --git a/docs/components/outputmessagestatusinprogress.md b/docs/components/outputmessagestatusinprogress.md deleted file mode 100644 index eb31df43..00000000 --- a/docs/components/outputmessagestatusinprogress.md +++ /dev/null @@ -1,8 +0,0 @@ -# OutputMessageStatusInProgress - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `IN_PROGRESS` | in_progress | \ No newline at end of file diff --git a/docs/components/outputmessagestatusinprogress.mdx b/docs/components/outputmessagestatusinprogress.mdx new file mode 100644 index 00000000..94ee4f9f --- /dev/null +++ b/docs/components/outputmessagestatusinprogress.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputMessageStatusInProgress" +--- + +## Example Usage + +```python +from openrouter.components import OutputMessageStatusInProgress +value: OutputMessageStatusInProgress = "in_progress" +``` + + +## Values + +- `"in_progress"` diff --git a/docs/components/outputmessagestatusunion.md b/docs/components/outputmessagestatusunion.mdx similarity index 90% rename from docs/components/outputmessagestatusunion.md rename to docs/components/outputmessagestatusunion.mdx index 6dae9adf..46b30d64 100644 --- a/docs/components/outputmessagestatusunion.md +++ b/docs/components/outputmessagestatusunion.mdx @@ -1,5 +1,6 @@ -# OutputMessageStatusUnion - +--- +title: "OutputMessageStatusUnion" +--- ## Supported Types diff --git a/docs/components/outputmessagetype.md b/docs/components/outputmessagetype.md deleted file mode 100644 index acbedfe1..00000000 --- a/docs/components/outputmessagetype.md +++ /dev/null @@ -1,8 +0,0 @@ -# OutputMessageType - - -## Values - -| Name | Value | -| --------- | --------- | -| `MESSAGE` | message | \ No newline at end of file diff --git a/docs/components/outputmessagetype.mdx b/docs/components/outputmessagetype.mdx new file mode 100644 index 00000000..5f80faa2 --- /dev/null +++ b/docs/components/outputmessagetype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputMessageType" +--- + +## Example Usage + +```python +from openrouter.components import OutputMessageType +value: OutputMessageType = "message" +``` + + +## Values + +- `"message"` diff --git a/docs/components/outputmodality.md b/docs/components/outputmodality.md deleted file mode 100644 index 2e0633ee..00000000 --- a/docs/components/outputmodality.md +++ /dev/null @@ -1,15 +0,0 @@ -# OutputModality - - -## Values - -| Name | Value | -| --------------- | --------------- | -| `TEXT` | text | -| `IMAGE` | image | -| `EMBEDDINGS` | embeddings | -| `AUDIO` | audio | -| `VIDEO` | video | -| `RERANK` | rerank | -| `SPEECH` | speech | -| `TRANSCRIPTION` | transcription | \ No newline at end of file diff --git a/docs/components/outputmodality.mdx b/docs/components/outputmodality.mdx new file mode 100644 index 00000000..f0528135 --- /dev/null +++ b/docs/components/outputmodality.mdx @@ -0,0 +1,26 @@ +--- +title: "OutputModality" +--- + +## Example Usage + +```python +from openrouter.components import OutputModality + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: OutputModality = "text" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"text"` +- `"image"` +- `"embeddings"` +- `"audio"` +- `"video"` +- `"rerank"` +- `"speech"` +- `"transcription"` diff --git a/docs/components/outputmodalityenum.mdx b/docs/components/outputmodalityenum.mdx new file mode 100644 index 00000000..2d9b6fc6 --- /dev/null +++ b/docs/components/outputmodalityenum.mdx @@ -0,0 +1,20 @@ +--- +title: "OutputModalityEnum" +--- + +## Example Usage + +```python +from openrouter.components import OutputModalityEnum + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: OutputModalityEnum = "text" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"text"` +- `"image"` diff --git a/docs/components/outputreasoningitem.mdx b/docs/components/outputreasoningitem.mdx new file mode 100644 index 00000000..761085bf --- /dev/null +++ b/docs/components/outputreasoningitem.mdx @@ -0,0 +1,19 @@ +--- +title: "OutputReasoningItem" +--- + +An output item containing reasoning + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `content` | List[[components.ReasoningTextContent](../components/reasoningtextcontent.mdx)] | :heavy_minus_sign: | N/A | | +| `encrypted_content` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `id` | *str* | :heavy_check_mark: | N/A | | +| `status` | [Optional[components.OutputReasoningItemStatusUnion]](../components/outputreasoningitemstatusunion.mdx) | :heavy_minus_sign: | N/A | | +| `summary` | List[[components.ReasoningSummaryText](../components/reasoningsummarytext.mdx)] | :heavy_check_mark: | N/A | | +| `type` | [components.OutputReasoningItemType](../components/outputreasoningitemtype.mdx) | :heavy_check_mark: | N/A | | +| `format_` | [OptionalNullable[components.ReasoningFormat]](../components/reasoningformat.mdx) | :heavy_minus_sign: | N/A | unknown | +| `signature` | *OptionalNullable[str]* | :heavy_minus_sign: | A signature for the reasoning content, used for verification | EvcBCkgIChABGAIqQKkSDbRuVEQUk9qN1odC098l9SEj... | \ No newline at end of file diff --git a/docs/components/outputreasoningitemstatuscompleted.mdx b/docs/components/outputreasoningitemstatuscompleted.mdx new file mode 100644 index 00000000..f2e18778 --- /dev/null +++ b/docs/components/outputreasoningitemstatuscompleted.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputReasoningItemStatusCompleted" +--- + +## Example Usage + +```python +from openrouter.components import OutputReasoningItemStatusCompleted +value: OutputReasoningItemStatusCompleted = "completed" +``` + + +## Values + +- `"completed"` diff --git a/docs/components/outputreasoningitemstatusincomplete.mdx b/docs/components/outputreasoningitemstatusincomplete.mdx new file mode 100644 index 00000000..0e81c76a --- /dev/null +++ b/docs/components/outputreasoningitemstatusincomplete.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputReasoningItemStatusIncomplete" +--- + +## Example Usage + +```python +from openrouter.components import OutputReasoningItemStatusIncomplete +value: OutputReasoningItemStatusIncomplete = "incomplete" +``` + + +## Values + +- `"incomplete"` diff --git a/docs/components/outputreasoningitemstatusinprogress.mdx b/docs/components/outputreasoningitemstatusinprogress.mdx new file mode 100644 index 00000000..07a0760b --- /dev/null +++ b/docs/components/outputreasoningitemstatusinprogress.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputReasoningItemStatusInProgress" +--- + +## Example Usage + +```python +from openrouter.components import OutputReasoningItemStatusInProgress +value: OutputReasoningItemStatusInProgress = "in_progress" +``` + + +## Values + +- `"in_progress"` diff --git a/docs/components/outputreasoningitemstatusunion.mdx b/docs/components/outputreasoningitemstatusunion.mdx new file mode 100644 index 00000000..276711e0 --- /dev/null +++ b/docs/components/outputreasoningitemstatusunion.mdx @@ -0,0 +1,24 @@ +--- +title: "OutputReasoningItemStatusUnion" +--- + +## Supported Types + +### `components.OutputReasoningItemStatusCompleted` + +```python +value: components.OutputReasoningItemStatusCompleted = /* values here */ +``` + +### `components.OutputReasoningItemStatusIncomplete` + +```python +value: components.OutputReasoningItemStatusIncomplete = /* values here */ +``` + +### `components.OutputReasoningItemStatusInProgress` + +```python +value: components.OutputReasoningItemStatusInProgress = /* values here */ +``` + diff --git a/docs/components/outputreasoningitemtype.mdx b/docs/components/outputreasoningitemtype.mdx new file mode 100644 index 00000000..241c0305 --- /dev/null +++ b/docs/components/outputreasoningitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputReasoningItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputReasoningItemType +value: OutputReasoningItemType = "reasoning" +``` + + +## Values + +- `"reasoning"` diff --git a/docs/components/outputsearchmodelsservertoolitem.mdx b/docs/components/outputsearchmodelsservertoolitem.mdx new file mode 100644 index 00000000..bb1946a0 --- /dev/null +++ b/docs/components/outputsearchmodelsservertoolitem.mdx @@ -0,0 +1,16 @@ +--- +title: "OutputSearchModelsServerToolItem" +--- + +An openrouter:experimental__search_models server tool output item + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `arguments` | *Optional[str]* | :heavy_minus_sign: | The JSON arguments submitted to the search tool (e.g. \{"query":"Claude"}) | | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `query` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `status` | [components.ToolCallStatus](../components/toolcallstatus.mdx) | :heavy_check_mark: | N/A | completed | +| `type` | [components.OutputSearchModelsServerToolItemType](../components/outputsearchmodelsservertoolitemtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/outputsearchmodelsservertoolitemtype.mdx b/docs/components/outputsearchmodelsservertoolitemtype.mdx new file mode 100644 index 00000000..80904602 --- /dev/null +++ b/docs/components/outputsearchmodelsservertoolitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputSearchModelsServerToolItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputSearchModelsServerToolItemType +value: OutputSearchModelsServerToolItemType = "openrouter:experimental__search_models" +``` + + +## Values + +- `"openrouter:experimental__search_models"` diff --git a/docs/components/outputshellcallitem.mdx b/docs/components/outputshellcallitem.mdx new file mode 100644 index 00000000..994c3c01 --- /dev/null +++ b/docs/components/outputshellcallitem.mdx @@ -0,0 +1,16 @@ +--- +title: "OutputShellCallItem" +--- + +A native `shell_call` output item matching OpenAI's Responses API shape. Emitted for the sandbox-backed `shell` tool. + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `action` | [Optional[components.OutputShellCallItemAction]](../components/outputshellcallitemaction.mdx) | :heavy_minus_sign: | N/A | | +| `call_id` | *str* | :heavy_check_mark: | N/A | | +| `id` | *str* | :heavy_check_mark: | N/A | | +| `status` | [components.ShellCallStatus](../components/shellcallstatus.mdx) | :heavy_check_mark: | Status of a shell call or its output. | completed | +| `type` | [components.OutputShellCallItemType](../components/outputshellcallitemtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/outputshellcallitemaction.mdx b/docs/components/outputshellcallitemaction.mdx new file mode 100644 index 00000000..2e9c76f3 --- /dev/null +++ b/docs/components/outputshellcallitemaction.mdx @@ -0,0 +1,11 @@ +--- +title: "OutputShellCallItemAction" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------- | ------------------- | ------------------- | ------------------- | +| `commands` | List[*str*] | :heavy_check_mark: | N/A | +| `max_output_length` | *Nullable[int]* | :heavy_check_mark: | N/A | +| `timeout_ms` | *Nullable[int]* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/outputshellcallitemtype.mdx b/docs/components/outputshellcallitemtype.mdx new file mode 100644 index 00000000..6e25f4cd --- /dev/null +++ b/docs/components/outputshellcallitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputShellCallItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputShellCallItemType +value: OutputShellCallItemType = "shell_call" +``` + + +## Values + +- `"shell_call"` diff --git a/docs/components/outputshellcalloutputitem.mdx b/docs/components/outputshellcalloutputitem.mdx new file mode 100644 index 00000000..b8fc79b3 --- /dev/null +++ b/docs/components/outputshellcalloutputitem.mdx @@ -0,0 +1,17 @@ +--- +title: "OutputShellCallOutputItem" +--- + +A native `shell_call_output` item matching OpenAI's Responses API shape. Carries per-command stdout, stderr, and the exit/timeout outcome. + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `call_id` | *str* | :heavy_check_mark: | N/A | | +| `id` | *str* | :heavy_check_mark: | N/A | | +| `max_output_length` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | | +| `output` | List[[components.OutputShellCallOutputItemOutput](../components/outputshellcalloutputitemoutput.mdx)] | :heavy_check_mark: | N/A | | +| `status` | [components.ShellCallStatus](../components/shellcallstatus.mdx) | :heavy_check_mark: | Status of a shell call or its output. | completed | +| `type` | [components.OutputShellCallOutputItemTypeShellCallOutput](../components/outputshellcalloutputitemtypeshellcalloutput.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/outputshellcalloutputitemoutput.mdx b/docs/components/outputshellcalloutputitemoutput.mdx new file mode 100644 index 00000000..ca3f63fd --- /dev/null +++ b/docs/components/outputshellcalloutputitemoutput.mdx @@ -0,0 +1,11 @@ +--- +title: "OutputShellCallOutputItemOutput" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | +| `outcome` | [components.Outcome](../components/outcome.mdx) | :heavy_check_mark: | N/A | +| `stderr` | *str* | :heavy_check_mark: | N/A | +| `stdout` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/outputshellcalloutputitemtypeshellcalloutput.mdx b/docs/components/outputshellcalloutputitemtypeshellcalloutput.mdx new file mode 100644 index 00000000..2bfc5b85 --- /dev/null +++ b/docs/components/outputshellcalloutputitemtypeshellcalloutput.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputShellCallOutputItemTypeShellCallOutput" +--- + +## Example Usage + +```python +from openrouter.components import OutputShellCallOutputItemTypeShellCallOutput +value: OutputShellCallOutputItemTypeShellCallOutput = "shell_call_output" +``` + + +## Values + +- `"shell_call_output"` diff --git a/docs/components/outputsubagentservertoolitem.mdx b/docs/components/outputsubagentservertoolitem.mdx new file mode 100644 index 00000000..edc8261c --- /dev/null +++ b/docs/components/outputsubagentservertoolitem.mdx @@ -0,0 +1,19 @@ +--- +title: "OutputSubagentServerToolItem" +--- + +An openrouter:subagent server tool output item + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `error` | *Optional[str]* | :heavy_minus_sign: | Error message when the subagent task did not produce an outcome. | | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `model` | *Optional[str]* | :heavy_minus_sign: | Slug of the worker model that executed the task. | | +| `outcome` | *Optional[str]* | :heavy_minus_sign: | The worker model's result (the outcome text returned to the delegating model). | | +| `status` | [components.ToolCallStatus](../components/toolcallstatus.mdx) | :heavy_check_mark: | N/A | completed | +| `task_description` | *Optional[str]* | :heavy_minus_sign: | The task description the delegating model sent to the worker. | | +| `task_name` | *Optional[str]* | :heavy_minus_sign: | The short task identifier the delegating model supplied. | | +| `type` | [components.OutputSubagentServerToolItemType](../components/outputsubagentservertoolitemtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/outputsubagentservertoolitemtype.mdx b/docs/components/outputsubagentservertoolitemtype.mdx new file mode 100644 index 00000000..19c0ebb0 --- /dev/null +++ b/docs/components/outputsubagentservertoolitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputSubagentServerToolItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputSubagentServerToolItemType +value: OutputSubagentServerToolItemType = "openrouter:subagent" +``` + + +## Values + +- `"openrouter:subagent"` diff --git a/docs/components/outputtexteditorservertoolitem.mdx b/docs/components/outputtexteditorservertoolitem.mdx new file mode 100644 index 00000000..2739149f --- /dev/null +++ b/docs/components/outputtexteditorservertoolitem.mdx @@ -0,0 +1,16 @@ +--- +title: "OutputTextEditorServerToolItem" +--- + +An openrouter:text_editor server tool output item + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `command` | [Optional[components.Command]](../components/command.mdx) | :heavy_minus_sign: | N/A | | +| `file_path` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `status` | [components.ToolCallStatus](../components/toolcallstatus.mdx) | :heavy_check_mark: | N/A | completed | +| `type` | [components.OutputTextEditorServerToolItemType](../components/outputtexteditorservertoolitemtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/outputtexteditorservertoolitemtype.mdx b/docs/components/outputtexteditorservertoolitemtype.mdx new file mode 100644 index 00000000..73d44035 --- /dev/null +++ b/docs/components/outputtexteditorservertoolitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputTextEditorServerToolItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputTextEditorServerToolItemType +value: OutputTextEditorServerToolItemType = "openrouter:text_editor" +``` + + +## Values + +- `"openrouter:text_editor"` diff --git a/docs/components/outputtokensdetails.md b/docs/components/outputtokensdetails.mdx similarity index 87% rename from docs/components/outputtokensdetails.md rename to docs/components/outputtokensdetails.mdx index 59bf4277..9c9b6d59 100644 --- a/docs/components/outputtokensdetails.md +++ b/docs/components/outputtokensdetails.mdx @@ -1,5 +1,6 @@ -# OutputTokensDetails - +--- +title: "OutputTokensDetails" +--- ## Fields diff --git a/docs/components/outputtoolsearchservertoolitem.mdx b/docs/components/outputtoolsearchservertoolitem.mdx new file mode 100644 index 00000000..af768f21 --- /dev/null +++ b/docs/components/outputtoolsearchservertoolitem.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputToolSearchServerToolItem" +--- + +An openrouter:tool_search server tool output item + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `query` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `status` | [components.ToolCallStatus](../components/toolcallstatus.mdx) | :heavy_check_mark: | N/A | completed | +| `type` | [components.OutputToolSearchServerToolItemType](../components/outputtoolsearchservertoolitemtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/outputtoolsearchservertoolitemtype.mdx b/docs/components/outputtoolsearchservertoolitemtype.mdx new file mode 100644 index 00000000..49c66857 --- /dev/null +++ b/docs/components/outputtoolsearchservertoolitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputToolSearchServerToolItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputToolSearchServerToolItemType +value: OutputToolSearchServerToolItemType = "openrouter:tool_search" +``` + + +## Values + +- `"openrouter:tool_search"` diff --git a/docs/components/outputwebfetchservertoolitem.mdx b/docs/components/outputwebfetchservertoolitem.mdx new file mode 100644 index 00000000..9c045b8b --- /dev/null +++ b/docs/components/outputwebfetchservertoolitem.mdx @@ -0,0 +1,19 @@ +--- +title: "OutputWebFetchServerToolItem" +--- + +An openrouter:web_fetch server tool output item + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `content` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `error` | *Optional[str]* | :heavy_minus_sign: | The error message if the fetch failed. | | +| `http_status` | *Optional[int]* | :heavy_minus_sign: | The HTTP status code returned by the upstream URL fetch. | | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `status` | [components.ToolCallStatus](../components/toolcallstatus.mdx) | :heavy_check_mark: | N/A | completed | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `type` | [components.OutputWebFetchServerToolItemType](../components/outputwebfetchservertoolitemtype.mdx) | :heavy_check_mark: | N/A | | +| `url` | *Optional[str]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/components/outputwebfetchservertoolitemtype.mdx b/docs/components/outputwebfetchservertoolitemtype.mdx new file mode 100644 index 00000000..909b5a9d --- /dev/null +++ b/docs/components/outputwebfetchservertoolitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputWebFetchServerToolItemType" +--- + +## Example Usage + +```python +from openrouter.components import OutputWebFetchServerToolItemType +value: OutputWebFetchServerToolItemType = "openrouter:web_fetch" +``` + + +## Values + +- `"openrouter:web_fetch"` diff --git a/docs/components/outputwebsearchcallitem.mdx b/docs/components/outputwebsearchcallitem.mdx new file mode 100644 index 00000000..3a389a5f --- /dev/null +++ b/docs/components/outputwebsearchcallitem.mdx @@ -0,0 +1,12 @@ +--- +title: "OutputWebSearchCallItem" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `action` | [Optional[components.Action]](../components/action.mdx) | :heavy_minus_sign: | N/A | | +| `id` | *str* | :heavy_check_mark: | N/A | | +| `status` | [components.WebSearchStatus](../components/websearchstatus.mdx) | :heavy_check_mark: | N/A | completed | +| `type` | [components.TypeWebSearchCall](../components/typewebsearchcall.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/outputwebsearchcallitemactionsearch.mdx b/docs/components/outputwebsearchcallitemactionsearch.mdx new file mode 100644 index 00000000..8a3bea40 --- /dev/null +++ b/docs/components/outputwebsearchcallitemactionsearch.mdx @@ -0,0 +1,12 @@ +--- +title: "OutputWebSearchCallItemActionSearch" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `queries` | List[*str*] | :heavy_minus_sign: | N/A | +| `query` | *str* | :heavy_check_mark: | N/A | +| `sources` | List[[components.WebSearchSource](../components/websearchsource.mdx)] | :heavy_minus_sign: | N/A | +| `type` | [components.ActionTypeSearch](../components/actiontypesearch.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/outputwebsearchservertoolitem.mdx b/docs/components/outputwebsearchservertoolitem.mdx new file mode 100644 index 00000000..b7fb42bb --- /dev/null +++ b/docs/components/outputwebsearchservertoolitem.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputWebSearchServerToolItem" +--- + +An openrouter:web_search server tool output item + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `action` | [Optional[components.OutputWebSearchServerToolItemAction]](../components/outputwebsearchservertoolitemaction.mdx) | :heavy_minus_sign: | The search action performed, matching OpenAI web_search_call.action shape. Includes the query the model issued and optional source URLs returned by the search provider. | | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `status` | [components.ToolCallStatus](../components/toolcallstatus.mdx) | :heavy_check_mark: | N/A | completed | +| `type` | [components.OutputWebSearchServerToolItemTypeOpenrouterWebSearch](../components/outputwebsearchservertoolitemtypeopenrouterwebsearch.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/outputwebsearchservertoolitemaction.mdx b/docs/components/outputwebsearchservertoolitemaction.mdx new file mode 100644 index 00000000..ca6a895c --- /dev/null +++ b/docs/components/outputwebsearchservertoolitemaction.mdx @@ -0,0 +1,14 @@ +--- +title: "OutputWebSearchServerToolItemAction" +--- + +The search action performed, matching OpenAI web_search_call.action shape. Includes the query the model issued and optional source URLs returned by the search provider. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `query` | *str* | :heavy_check_mark: | N/A | +| `sources` | List[[components.OutputWebSearchServerToolItemSource](../components/outputwebsearchservertoolitemsource.mdx)] | :heavy_minus_sign: | N/A | +| `type` | [components.OutputWebSearchServerToolItemTypeSearch](../components/outputwebsearchservertoolitemtypesearch.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/outputwebsearchservertoolitemsource.mdx b/docs/components/outputwebsearchservertoolitemsource.mdx new file mode 100644 index 00000000..5c1f410d --- /dev/null +++ b/docs/components/outputwebsearchservertoolitemsource.mdx @@ -0,0 +1,10 @@ +--- +title: "OutputWebSearchServerToolItemSource" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `type` | [components.OutputWebSearchServerToolItemTypeURL](../components/outputwebsearchservertoolitemtypeurl.mdx) | :heavy_check_mark: | N/A | +| `url` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/outputwebsearchservertoolitemtypeopenrouterwebsearch.mdx b/docs/components/outputwebsearchservertoolitemtypeopenrouterwebsearch.mdx new file mode 100644 index 00000000..c2d2d4d1 --- /dev/null +++ b/docs/components/outputwebsearchservertoolitemtypeopenrouterwebsearch.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputWebSearchServerToolItemTypeOpenrouterWebSearch" +--- + +## Example Usage + +```python +from openrouter.components import OutputWebSearchServerToolItemTypeOpenrouterWebSearch +value: OutputWebSearchServerToolItemTypeOpenrouterWebSearch = "openrouter:web_search" +``` + + +## Values + +- `"openrouter:web_search"` diff --git a/docs/components/outputwebsearchservertoolitemtypesearch.mdx b/docs/components/outputwebsearchservertoolitemtypesearch.mdx new file mode 100644 index 00000000..56955143 --- /dev/null +++ b/docs/components/outputwebsearchservertoolitemtypesearch.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputWebSearchServerToolItemTypeSearch" +--- + +## Example Usage + +```python +from openrouter.components import OutputWebSearchServerToolItemTypeSearch +value: OutputWebSearchServerToolItemTypeSearch = "search" +``` + + +## Values + +- `"search"` diff --git a/docs/components/outputwebsearchservertoolitemtypeurl.mdx b/docs/components/outputwebsearchservertoolitemtypeurl.mdx new file mode 100644 index 00000000..7bcc872b --- /dev/null +++ b/docs/components/outputwebsearchservertoolitemtypeurl.mdx @@ -0,0 +1,15 @@ +--- +title: "OutputWebSearchServerToolItemTypeURL" +--- + +## Example Usage + +```python +from openrouter.components import OutputWebSearchServerToolItemTypeURL +value: OutputWebSearchServerToolItemTypeURL = "url" +``` + + +## Values + +- `"url"` diff --git a/docs/components/parameter.md b/docs/components/parameter.md deleted file mode 100644 index c00420ef..00000000 --- a/docs/components/parameter.md +++ /dev/null @@ -1,32 +0,0 @@ -# Parameter - - -## Values - -| Name | Value | -| ----------------------- | ----------------------- | -| `TEMPERATURE` | temperature | -| `TOP_P` | top_p | -| `TOP_K` | top_k | -| `MIN_P` | min_p | -| `TOP_A` | top_a | -| `FREQUENCY_PENALTY` | frequency_penalty | -| `PRESENCE_PENALTY` | presence_penalty | -| `REPETITION_PENALTY` | repetition_penalty | -| `MAX_TOKENS` | max_tokens | -| `MAX_COMPLETION_TOKENS` | max_completion_tokens | -| `LOGIT_BIAS` | logit_bias | -| `LOGPROBS` | logprobs | -| `TOP_LOGPROBS` | top_logprobs | -| `SEED` | seed | -| `RESPONSE_FORMAT` | response_format | -| `STRUCTURED_OUTPUTS` | structured_outputs | -| `STOP` | stop | -| `TOOLS` | tools | -| `TOOL_CHOICE` | tool_choice | -| `PARALLEL_TOOL_CALLS` | parallel_tool_calls | -| `INCLUDE_REASONING` | include_reasoning | -| `REASONING` | reasoning | -| `REASONING_EFFORT` | reasoning_effort | -| `WEB_SEARCH_OPTIONS` | web_search_options | -| `VERBOSITY` | verbosity | \ No newline at end of file diff --git a/docs/components/parameter.mdx b/docs/components/parameter.mdx new file mode 100644 index 00000000..eef5a5c4 --- /dev/null +++ b/docs/components/parameter.mdx @@ -0,0 +1,43 @@ +--- +title: "Parameter" +--- + +## Example Usage + +```python +from openrouter.components import Parameter + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Parameter = "temperature" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"temperature"` +- `"top_p"` +- `"top_k"` +- `"min_p"` +- `"top_a"` +- `"frequency_penalty"` +- `"presence_penalty"` +- `"repetition_penalty"` +- `"max_tokens"` +- `"max_completion_tokens"` +- `"logit_bias"` +- `"logprobs"` +- `"top_logprobs"` +- `"seed"` +- `"response_format"` +- `"structured_outputs"` +- `"stop"` +- `"tools"` +- `"tool_choice"` +- `"parallel_tool_calls"` +- `"include_reasoning"` +- `"reasoning"` +- `"reasoning_effort"` +- `"web_search_options"` +- `"verbosity"` diff --git a/docs/components/paretorouterplugin.mdx b/docs/components/paretorouterplugin.mdx new file mode 100644 index 00000000..c7ff4bd1 --- /dev/null +++ b/docs/components/paretorouterplugin.mdx @@ -0,0 +1,11 @@ +--- +title: "ParetoRouterPlugin" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `enabled` | *Optional[bool]* | :heavy_minus_sign: | Set to false to disable the pareto-router plugin for this request. Defaults to true. | | +| `id` | [components.ParetoRouterPluginID](../components/paretorouterpluginid.mdx) | :heavy_check_mark: | N/A | | +| `min_coding_score` | *Optional[float]* | :heavy_minus_sign: | Minimum desired coding score between 0 and 1, where 1 is best. Higher values select from stronger coding models (sourced from Artificial Analysis coding percentiles). Maps internally to one of three tiers (low, medium, high). Omit to use the router default tier. | 0.8 | \ No newline at end of file diff --git a/docs/components/paretorouterpluginid.mdx b/docs/components/paretorouterpluginid.mdx new file mode 100644 index 00000000..7e0cdb5c --- /dev/null +++ b/docs/components/paretorouterpluginid.mdx @@ -0,0 +1,15 @@ +--- +title: "ParetoRouterPluginID" +--- + +## Example Usage + +```python +from openrouter.components import ParetoRouterPluginID +value: ParetoRouterPluginID = "pareto-router" +``` + + +## Values + +- `"pareto-router"` diff --git a/docs/components/partialcoverage.mdx b/docs/components/partialcoverage.mdx new file mode 100644 index 00000000..7c7807b2 --- /dev/null +++ b/docs/components/partialcoverage.mdx @@ -0,0 +1,10 @@ +--- +title: "PartialCoverage" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `models` | List[*str*] | :heavy_check_mark: | N/A | +| `point` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/partition.md b/docs/components/partition.md deleted file mode 100644 index 4f49e416..00000000 --- a/docs/components/partition.md +++ /dev/null @@ -1,11 +0,0 @@ -# Partition - -Partitioning strategy for sorting: "model" (default) groups endpoints by model before sorting (fallback models remain fallbacks), "none" sorts all endpoints together regardless of model. - - -## Values - -| Name | Value | -| ------- | ------- | -| `MODEL` | model | -| `NONE` | none | \ No newline at end of file diff --git a/docs/components/partition.mdx b/docs/components/partition.mdx new file mode 100644 index 00000000..c61b4bce --- /dev/null +++ b/docs/components/partition.mdx @@ -0,0 +1,22 @@ +--- +title: "Partition" +--- + +Partitioning strategy for sorting: "model" (default) groups endpoints by model before sorting (fallback models remain fallbacks), "none" sorts all endpoints together regardless of model. + +## Example Usage + +```python +from openrouter.components import Partition + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Partition = "model" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"model"` +- `"none"` diff --git a/docs/components/payloadtoolargeresponseerrordata.md b/docs/components/payloadtoolargeresponseerrordata.mdx similarity index 92% rename from docs/components/payloadtoolargeresponseerrordata.md rename to docs/components/payloadtoolargeresponseerrordata.mdx index 197ba50a..3d55fb22 100644 --- a/docs/components/payloadtoolargeresponseerrordata.md +++ b/docs/components/payloadtoolargeresponseerrordata.mdx @@ -1,4 +1,6 @@ -# PayloadTooLargeResponseErrorData +--- +title: "PayloadTooLargeResponseErrorData" +--- Error data for PayloadTooLargeResponse diff --git a/docs/components/paymentrequiredresponseerrordata.md b/docs/components/paymentrequiredresponseerrordata.mdx similarity index 92% rename from docs/components/paymentrequiredresponseerrordata.md rename to docs/components/paymentrequiredresponseerrordata.mdx index e083b1f4..2dc83a9d 100644 --- a/docs/components/paymentrequiredresponseerrordata.md +++ b/docs/components/paymentrequiredresponseerrordata.mdx @@ -1,4 +1,6 @@ -# PaymentRequiredResponseErrorData +--- +title: "PaymentRequiredResponseErrorData" +--- Error data for PaymentRequiredResponse diff --git a/docs/components/pdfparserengine.md b/docs/components/pdfparserengine.mdx similarity index 91% rename from docs/components/pdfparserengine.md rename to docs/components/pdfparserengine.mdx index 8889dadd..a78f4dee 100644 --- a/docs/components/pdfparserengine.md +++ b/docs/components/pdfparserengine.mdx @@ -1,4 +1,6 @@ -# PDFParserEngine +--- +title: "PDFParserEngine" +--- The engine to use for parsing PDF files. "pdf-text" is deprecated and automatically redirected to "cloudflare-ai". diff --git a/docs/components/pdfparserengineenum.mdx b/docs/components/pdfparserengineenum.mdx new file mode 100644 index 00000000..69ef2938 --- /dev/null +++ b/docs/components/pdfparserengineenum.mdx @@ -0,0 +1,21 @@ +--- +title: "PDFParserEngineEnum" +--- + +## Example Usage + +```python +from openrouter.components import PDFParserEngineEnum + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: PDFParserEngineEnum = "mistral-ocr" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"mistral-ocr"` +- `"native"` +- `"cloudflare-ai"` diff --git a/docs/components/pdfparserenginepdftext.mdx b/docs/components/pdfparserenginepdftext.mdx new file mode 100644 index 00000000..b1b33397 --- /dev/null +++ b/docs/components/pdfparserenginepdftext.mdx @@ -0,0 +1,15 @@ +--- +title: "PDFParserEnginePDFText" +--- + +## Example Usage + +```python +from openrouter.components import PDFParserEnginePDFText +value: PDFParserEnginePDFText = "pdf-text" +``` + + +## Values + +- `"pdf-text"` diff --git a/docs/components/pdfparseroptions.md b/docs/components/pdfparseroptions.mdx similarity index 80% rename from docs/components/pdfparseroptions.md rename to docs/components/pdfparseroptions.mdx index 05a4fc47..2e830520 100644 --- a/docs/components/pdfparseroptions.md +++ b/docs/components/pdfparseroptions.mdx @@ -1,4 +1,6 @@ -# PDFParserOptions +--- +title: "PDFParserOptions" +--- Options for PDF parsing. @@ -7,4 +9,4 @@ Options for PDF parsing. | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | -| `engine` | [Optional[components.PDFParserEngine]](../components/pdfparserengine.md) | :heavy_minus_sign: | The engine to use for parsing PDF files. "pdf-text" is deprecated and automatically redirected to "cloudflare-ai". | cloudflare-ai | \ No newline at end of file +| `engine` | [Optional[components.PDFParserEngine]](../components/pdfparserengine.mdx) | :heavy_minus_sign: | The engine to use for parsing PDF files. "pdf-text" is deprecated and automatically redirected to "cloudflare-ai". | cloudflare-ai | \ No newline at end of file diff --git a/docs/components/pendingsafetycheck.mdx b/docs/components/pendingsafetycheck.mdx new file mode 100644 index 00000000..4d484ee8 --- /dev/null +++ b/docs/components/pendingsafetycheck.mdx @@ -0,0 +1,11 @@ +--- +title: "PendingSafetyCheck" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `code` | *str* | :heavy_check_mark: | N/A | +| `id` | *str* | :heavy_check_mark: | N/A | +| `message` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/percentilelatencycutoffs.md b/docs/components/percentilelatencycutoffs.mdx similarity index 95% rename from docs/components/percentilelatencycutoffs.md rename to docs/components/percentilelatencycutoffs.mdx index 6a2c04f7..60b8ab27 100644 --- a/docs/components/percentilelatencycutoffs.md +++ b/docs/components/percentilelatencycutoffs.mdx @@ -1,4 +1,6 @@ -# PercentileLatencyCutoffs +--- +title: "PercentileLatencyCutoffs" +--- Percentile-based latency cutoffs. All specified cutoffs must be met for an endpoint to be preferred. diff --git a/docs/components/percentilestats.md b/docs/components/percentilestats.mdx similarity index 96% rename from docs/components/percentilestats.md rename to docs/components/percentilestats.mdx index 6f474316..ff5277c9 100644 --- a/docs/components/percentilestats.md +++ b/docs/components/percentilestats.mdx @@ -1,4 +1,6 @@ -# PercentileStats +--- +title: "PercentileStats" +--- Latency percentiles in milliseconds over the last 30 minutes. Latency measures time to first token. Only visible when authenticated with an API key or cookie; returns null for unauthenticated requests. diff --git a/docs/components/percentilethroughputcutoffs.md b/docs/components/percentilethroughputcutoffs.mdx similarity index 95% rename from docs/components/percentilethroughputcutoffs.md rename to docs/components/percentilethroughputcutoffs.mdx index dff209d8..86ea3129 100644 --- a/docs/components/percentilethroughputcutoffs.md +++ b/docs/components/percentilethroughputcutoffs.mdx @@ -1,4 +1,6 @@ -# PercentileThroughputCutoffs +--- +title: "PercentileThroughputCutoffs" +--- Percentile-based throughput cutoffs. All specified cutoffs must be met for an endpoint to be preferred. diff --git a/docs/components/perrequestlimits.md b/docs/components/perrequestlimits.mdx similarity index 96% rename from docs/components/perrequestlimits.md rename to docs/components/perrequestlimits.mdx index f42074da..c03fb6fb 100644 --- a/docs/components/perrequestlimits.md +++ b/docs/components/perrequestlimits.mdx @@ -1,4 +1,6 @@ -# PerRequestLimits +--- +title: "PerRequestLimits" +--- Per-request token limits diff --git a/docs/components/pipelinestage.mdx b/docs/components/pipelinestage.mdx new file mode 100644 index 00000000..fb000252 --- /dev/null +++ b/docs/components/pipelinestage.mdx @@ -0,0 +1,15 @@ +--- +title: "PipelineStage" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `cost_usd` | *OptionalNullable[float]* | :heavy_minus_sign: | N/A | | +| `data` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | | +| `guardrail_id` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `guardrail_scope` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `name` | *str* | :heavy_check_mark: | N/A | | +| `summary` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `type` | [components.PipelineStageType](../components/pipelinestagetype.mdx) | :heavy_check_mark: | Categorical kind of a pipeline stage. Multiple plugins can share a type (e.g. all guardrail-level plugins emit `guardrail`); the `name` field disambiguates which plugin emitted it. | guardrail | \ No newline at end of file diff --git a/docs/components/pipelinestagetype.mdx b/docs/components/pipelinestagetype.mdx new file mode 100644 index 00000000..dbf6cac9 --- /dev/null +++ b/docs/components/pipelinestagetype.mdx @@ -0,0 +1,25 @@ +--- +title: "PipelineStageType" +--- + +Categorical kind of a pipeline stage. Multiple plugins can share a type (e.g. all guardrail-level plugins emit `guardrail`); the `name` field disambiguates which plugin emitted it. + +## Example Usage + +```python +from openrouter.components import PipelineStageType + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: PipelineStageType = "guardrail" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"guardrail"` +- `"plugin"` +- `"server_tools"` +- `"response_healing"` +- `"context_compression"` diff --git a/docs/components/preferredmaxlatency.md b/docs/components/preferredmaxlatency.mdx similarity index 94% rename from docs/components/preferredmaxlatency.md rename to docs/components/preferredmaxlatency.mdx index ce96e64f..0c78ef7a 100644 --- a/docs/components/preferredmaxlatency.md +++ b/docs/components/preferredmaxlatency.mdx @@ -1,4 +1,6 @@ -# PreferredMaxLatency +--- +title: "PreferredMaxLatency" +--- Preferred maximum latency (in seconds). Can be a number (applies to p50) or an object with percentile-specific cutoffs. Endpoints above the threshold(s) may still be used, but are deprioritized in routing. When using fallback models, this may cause a fallback model to be used instead of the primary model if it meets the threshold. diff --git a/docs/components/preferredminthroughput.md b/docs/components/preferredminthroughput.mdx similarity index 93% rename from docs/components/preferredminthroughput.md rename to docs/components/preferredminthroughput.mdx index fd49bf88..348b5703 100644 --- a/docs/components/preferredminthroughput.md +++ b/docs/components/preferredminthroughput.mdx @@ -1,4 +1,6 @@ -# PreferredMinThroughput +--- +title: "PreferredMinThroughput" +--- Preferred minimum throughput (in tokens per second). Can be a number (applies to p50) or an object with percentile-specific cutoffs. Endpoints below the threshold(s) may still be used, but are deprioritized in routing. When using fallback models, this may cause a fallback model to be used instead of the primary model if it meets the threshold. diff --git a/docs/components/preset.mdx b/docs/components/preset.mdx new file mode 100644 index 00000000..af18885f --- /dev/null +++ b/docs/components/preset.mdx @@ -0,0 +1,22 @@ +--- +title: "Preset" +--- + +A preset without version details. + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `created_at` | *str* | :heavy_check_mark: | N/A | | +| `creator_user_id` | *Nullable[str]* | :heavy_check_mark: | N/A | | +| `description` | *Nullable[str]* | :heavy_check_mark: | N/A | | +| `designated_version_id` | *Nullable[str]* | :heavy_check_mark: | N/A | | +| `id` | *str* | :heavy_check_mark: | N/A | | +| `name` | *str* | :heavy_check_mark: | N/A | | +| `slug` | *str* | :heavy_check_mark: | N/A | | +| `status` | [components.PresetStatus](../components/presetstatus.mdx) | :heavy_check_mark: | The status of a preset. | active | +| `status_updated_at` | *Nullable[str]* | :heavy_check_mark: | N/A | | +| `updated_at` | *str* | :heavy_check_mark: | N/A | | +| `workspace_id` | *Nullable[str]* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/presetdesignatedversion.mdx b/docs/components/presetdesignatedversion.mdx new file mode 100644 index 00000000..0db54917 --- /dev/null +++ b/docs/components/presetdesignatedversion.mdx @@ -0,0 +1,19 @@ +--- +title: "PresetDesignatedVersion" +--- + +A specific version of a preset, containing config and optional system prompt. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------- | -------------------------- | -------------------------- | -------------------------- | +| `config` | Dict[str, *Nullable[Any]*] | :heavy_check_mark: | N/A | +| `created_at` | *str* | :heavy_check_mark: | N/A | +| `creator_id` | *str* | :heavy_check_mark: | N/A | +| `id` | *str* | :heavy_check_mark: | N/A | +| `preset_id` | *str* | :heavy_check_mark: | N/A | +| `system_prompt` | *Nullable[str]* | :heavy_check_mark: | N/A | +| `updated_at` | *str* | :heavy_check_mark: | N/A | +| `version` | *int* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/presetenum.mdx b/docs/components/presetenum.mdx new file mode 100644 index 00000000..d4ae3a89 --- /dev/null +++ b/docs/components/presetenum.mdx @@ -0,0 +1,23 @@ +--- +title: "PresetEnum" +--- + +A curated OpenRouter fusion preset (slugs follow `-`, e.g. `general-high`). Expands server-side into the preset's analysis_models panel and judge model, so callers never name individual models. Explicitly provided `analysis_models` / `model` take precedence. + +## Example Usage + +```python +from openrouter.components import PresetEnum + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: PresetEnum = "general-high" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"general-high"` +- `"general-budget"` +- `"general-fast"` diff --git a/docs/components/presetstatus.mdx b/docs/components/presetstatus.mdx new file mode 100644 index 00000000..7eafb31f --- /dev/null +++ b/docs/components/presetstatus.mdx @@ -0,0 +1,23 @@ +--- +title: "PresetStatus" +--- + +The status of a preset. + +## Example Usage + +```python +from openrouter.components import PresetStatus + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: PresetStatus = "active" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"active"` +- `"disabled"` +- `"archived"` diff --git a/docs/components/presetwithdesignatedversion.mdx b/docs/components/presetwithdesignatedversion.mdx new file mode 100644 index 00000000..56d189d9 --- /dev/null +++ b/docs/components/presetwithdesignatedversion.mdx @@ -0,0 +1,23 @@ +--- +title: "PresetWithDesignatedVersion" +--- + +A preset with its currently designated version. + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `created_at` | *str* | :heavy_check_mark: | N/A | | +| `creator_user_id` | *Nullable[str]* | :heavy_check_mark: | N/A | | +| `description` | *Nullable[str]* | :heavy_check_mark: | N/A | | +| `designated_version_id` | *Nullable[str]* | :heavy_check_mark: | N/A | | +| `id` | *str* | :heavy_check_mark: | N/A | | +| `name` | *str* | :heavy_check_mark: | N/A | | +| `slug` | *str* | :heavy_check_mark: | N/A | | +| `status` | [components.PresetStatus](../components/presetstatus.mdx) | :heavy_check_mark: | The status of a preset. | active | +| `status_updated_at` | *Nullable[str]* | :heavy_check_mark: | N/A | | +| `updated_at` | *str* | :heavy_check_mark: | N/A | | +| `workspace_id` | *Nullable[str]* | :heavy_check_mark: | N/A | | +| `designated_version` | [Nullable[components.PresetDesignatedVersion]](../components/presetdesignatedversion.mdx) | :heavy_check_mark: | A specific version of a preset, containing config and optional system prompt. | \{
"config": \{
"model": "openai/gpt-4o",
"temperature": 0.7
},
"created_at": "2026-04-20T10:00:00Z",
"creator_id": "user_2dHFtVWx2n56w6HkM0000000000",
"id": "550e8400-e29b-41d4-a716-446655440000",
"preset_id": "650e8400-e29b-41d4-a716-446655440001",
"system_prompt": "You are a helpful assistant.",
"updated_at": "2026-04-20T10:00:00Z",
"version": 1
} | \ No newline at end of file diff --git a/docs/components/preview20250311websearchservertool.mdx b/docs/components/preview20250311websearchservertool.mdx new file mode 100644 index 00000000..51a09f17 --- /dev/null +++ b/docs/components/preview20250311websearchservertool.mdx @@ -0,0 +1,17 @@ +--- +title: "Preview20250311WebSearchServerTool" +--- + +Web search preview tool configuration (2025-03-11 version) + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `engine` | [Optional[components.WebSearchEngineEnum]](../components/websearchengineenum.mdx) | :heavy_minus_sign: | Which search engine to use. "auto" (default) uses native if the provider supports it, otherwise Exa. "native" forces the provider's built-in search. "exa" forces the Exa search API. "firecrawl" uses Firecrawl (requires BYOK). "parallel" uses the Parallel search API. "perplexity" uses the Perplexity Search API (raw ranked results). | auto | +| `filters` | [OptionalNullable[components.WebSearchDomainFilter]](../components/websearchdomainfilter.mdx) | :heavy_minus_sign: | N/A | \{
"allowed_domains": [
"example.com"
],
"excluded_domains": [
"spam.com"
]
} | +| `max_results` | *Optional[int]* | :heavy_minus_sign: | Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, Parallel, and Perplexity engines; ignored with native provider search. Perplexity supports a maximum of 20; values above 20 are clamped. | 5 | +| `search_context_size` | [Optional[components.SearchContextSizeEnum]](../components/searchcontextsizeenum.mdx) | :heavy_minus_sign: | Size of the search context for web search tools | medium | +| `type` | [components.Preview20250311WebSearchServerToolType](../components/preview20250311websearchservertooltype.mdx) | :heavy_check_mark: | N/A | | +| `user_location` | [OptionalNullable[components.PreviewWebSearchUserLocation]](../components/previewwebsearchuserlocation.mdx) | :heavy_minus_sign: | N/A | \{
"city": "San Francisco",
"country": "USA",
"region": "California",
"timezone": "America/Los_Angeles",
"type": "approximate"
} | \ No newline at end of file diff --git a/docs/components/preview20250311websearchservertooltype.mdx b/docs/components/preview20250311websearchservertooltype.mdx new file mode 100644 index 00000000..3669d05c --- /dev/null +++ b/docs/components/preview20250311websearchservertooltype.mdx @@ -0,0 +1,15 @@ +--- +title: "Preview20250311WebSearchServerToolType" +--- + +## Example Usage + +```python +from openrouter.components import Preview20250311WebSearchServerToolType +value: Preview20250311WebSearchServerToolType = "web_search_preview_2025_03_11" +``` + + +## Values + +- `"web_search_preview_2025_03_11"` diff --git a/docs/components/previewwebsearchservertool.mdx b/docs/components/previewwebsearchservertool.mdx new file mode 100644 index 00000000..66b4f3f1 --- /dev/null +++ b/docs/components/previewwebsearchservertool.mdx @@ -0,0 +1,17 @@ +--- +title: "PreviewWebSearchServerTool" +--- + +Web search preview tool configuration + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `engine` | [Optional[components.WebSearchEngineEnum]](../components/websearchengineenum.mdx) | :heavy_minus_sign: | Which search engine to use. "auto" (default) uses native if the provider supports it, otherwise Exa. "native" forces the provider's built-in search. "exa" forces the Exa search API. "firecrawl" uses Firecrawl (requires BYOK). "parallel" uses the Parallel search API. "perplexity" uses the Perplexity Search API (raw ranked results). | auto | +| `filters` | [OptionalNullable[components.WebSearchDomainFilter]](../components/websearchdomainfilter.mdx) | :heavy_minus_sign: | N/A | \{
"allowed_domains": [
"example.com"
],
"excluded_domains": [
"spam.com"
]
} | +| `max_results` | *Optional[int]* | :heavy_minus_sign: | Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, Parallel, and Perplexity engines; ignored with native provider search. Perplexity supports a maximum of 20; values above 20 are clamped. | 5 | +| `search_context_size` | [Optional[components.SearchContextSizeEnum]](../components/searchcontextsizeenum.mdx) | :heavy_minus_sign: | Size of the search context for web search tools | medium | +| `type` | [components.PreviewWebSearchServerToolType](../components/previewwebsearchservertooltype.mdx) | :heavy_check_mark: | N/A | | +| `user_location` | [OptionalNullable[components.PreviewWebSearchUserLocation]](../components/previewwebsearchuserlocation.mdx) | :heavy_minus_sign: | N/A | \{
"city": "San Francisco",
"country": "USA",
"region": "California",
"timezone": "America/Los_Angeles",
"type": "approximate"
} | \ No newline at end of file diff --git a/docs/components/previewwebsearchservertooltype.mdx b/docs/components/previewwebsearchservertooltype.mdx new file mode 100644 index 00000000..6d453991 --- /dev/null +++ b/docs/components/previewwebsearchservertooltype.mdx @@ -0,0 +1,15 @@ +--- +title: "PreviewWebSearchServerToolType" +--- + +## Example Usage + +```python +from openrouter.components import PreviewWebSearchServerToolType +value: PreviewWebSearchServerToolType = "web_search_preview" +``` + + +## Values + +- `"web_search_preview"` diff --git a/docs/components/previewwebsearchuserlocation.mdx b/docs/components/previewwebsearchuserlocation.mdx new file mode 100644 index 00000000..1695e404 --- /dev/null +++ b/docs/components/previewwebsearchuserlocation.mdx @@ -0,0 +1,13 @@ +--- +title: "PreviewWebSearchUserLocation" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `city` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `country` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `region` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `timezone` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `type` | [components.PreviewWebSearchUserLocationType](../components/previewwebsearchuserlocationtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/previewwebsearchuserlocationtype.mdx b/docs/components/previewwebsearchuserlocationtype.mdx new file mode 100644 index 00000000..414a5204 --- /dev/null +++ b/docs/components/previewwebsearchuserlocationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "PreviewWebSearchUserLocationType" +--- + +## Example Usage + +```python +from openrouter.components import PreviewWebSearchUserLocationType +value: PreviewWebSearchUserLocationType = "approximate" +``` + + +## Values + +- `"approximate"` diff --git a/docs/components/pricing.md b/docs/components/pricing.mdx similarity index 99% rename from docs/components/pricing.md rename to docs/components/pricing.mdx index 69ac72cf..78ac34b5 100644 --- a/docs/components/pricing.md +++ b/docs/components/pricing.mdx @@ -1,5 +1,6 @@ -# Pricing - +--- +title: "Pricing" +--- ## Fields diff --git a/docs/components/promptinjectionscanscope.mdx b/docs/components/promptinjectionscanscope.mdx new file mode 100644 index 00000000..1d91d32c --- /dev/null +++ b/docs/components/promptinjectionscanscope.mdx @@ -0,0 +1,22 @@ +--- +title: "PromptInjectionScanScope" +--- + +Which message roles to scan for prompt injection. Only applies to the regex-prompt-injection builtin. Defaults to all_messages. + +## Example Usage + +```python +from openrouter.components import PromptInjectionScanScope + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: PromptInjectionScanScope = "user_only" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"user_only"` +- `"all_messages"` diff --git a/docs/components/providername.md b/docs/components/providername.md deleted file mode 100644 index 5f381792..00000000 --- a/docs/components/providername.md +++ /dev/null @@ -1,98 +0,0 @@ -# ProviderName - - -## Values - -| Name | Value | -| ------------------- | ------------------- | -| `AKASH_ML` | AkashML | -| `AI21` | AI21 | -| `AION_LABS` | AionLabs | -| `ALIBABA` | Alibaba | -| `AMBIENT` | Ambient | -| `BAIDU` | Baidu | -| `AMAZON_BEDROCK` | Amazon Bedrock | -| `AMAZON_NOVA` | Amazon Nova | -| `ANTHROPIC` | Anthropic | -| `ARCEE_AI` | Arcee AI | -| `ATLAS_CLOUD` | AtlasCloud | -| `AVIAN` | Avian | -| `AZURE` | Azure | -| `BASE_TEN` | BaseTen | -| `BYTE_PLUS` | BytePlus | -| `BLACK_FOREST_LABS` | Black Forest Labs | -| `CEREBRAS` | Cerebras | -| `CHUTES` | Chutes | -| `CIRRASCALE` | Cirrascale | -| `CLARIFAI` | Clarifai | -| `CLOUDFLARE` | Cloudflare | -| `COHERE` | Cohere | -| `CRUCIBLE` | Crucible | -| `CRUSOE` | Crusoe | -| `DARKBLOOM` | Darkbloom | -| `DECART` | Decart | -| `DEEP_INFRA` | DeepInfra | -| `DEEP_SEEK` | DeepSeek | -| `DEKA_LLM` | DekaLLM | -| `DIGITAL_OCEAN` | DigitalOcean | -| `FEATHERLESS` | Featherless | -| `FIREWORKS` | Fireworks | -| `FRIENDLI` | Friendli | -| `GMI_CLOUD` | GMICloud | -| `GOOGLE` | Google | -| `GOOGLE_AI_STUDIO` | Google AI Studio | -| `GROQ` | Groq | -| `HEY_GEN` | HeyGen | -| `INCEPTION` | Inception | -| `INCEPTRON` | Inceptron | -| `INFERENCE_NET` | InferenceNet | -| `IONSTREAM` | Ionstream | -| `INFERMATIC` | Infermatic | -| `IO_NET` | Io Net | -| `INFERACT_V_LLM` | Inferact vLLM | -| `INFLECTION` | Inflection | -| `LIQUID` | Liquid | -| `MARA` | Mara | -| `MANCER_2` | Mancer 2 | -| `MINIMAX` | Minimax | -| `MODEL_RUN` | ModelRun | -| `MISTRAL` | Mistral | -| `MODULAR` | Modular | -| `MOONSHOT_AI` | Moonshot AI | -| `MORPH` | Morph | -| `N_COMPASS` | NCompass | -| `NEBIUS` | Nebius | -| `NEX_AGI` | Nex AGI | -| `NEXT_BIT` | NextBit | -| `NOVITA` | Novita | -| `NVIDIA` | Nvidia | -| `OPEN_AI` | OpenAI | -| `OPEN_INFERENCE` | OpenInference | -| `PARASAIL` | Parasail | -| `POOLSIDE` | Poolside | -| `PERCEPTRON` | Perceptron | -| `PERPLEXITY` | Perplexity | -| `PHALA` | Phala | -| `RECRAFT` | Recraft | -| `REKA` | Reka | -| `RELACE` | Relace | -| `SAKANA_AI` | Sakana AI | -| `SAMBA_NOVA` | SambaNova | -| `SEED` | Seed | -| `SILICON_FLOW` | SiliconFlow | -| `SOURCEFUL` | Sourceful | -| `STEP_FUN` | StepFun | -| `STEALTH` | Stealth | -| `STREAM_LAKE` | StreamLake | -| `SWITCHPOINT` | Switchpoint | -| `TENSTORRENT` | Tenstorrent | -| `TOGETHER` | Together | -| `UPSTAGE` | Upstage | -| `VENICE` | Venice | -| `WAFER` | Wafer | -| `WAND_B` | WandB | -| `QUIVER` | Quiver | -| `XIAOMI` | Xiaomi | -| `X_AI` | xAI | -| `Z_AI` | Z.AI | -| `FAKE_PROVIDER` | FakeProvider | \ No newline at end of file diff --git a/docs/components/providername.mdx b/docs/components/providername.mdx new file mode 100644 index 00000000..f7cde44d --- /dev/null +++ b/docs/components/providername.mdx @@ -0,0 +1,109 @@ +--- +title: "ProviderName" +--- + +## Example Usage + +```python +from openrouter.components import ProviderName + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ProviderName = "AkashML" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"AkashML"` +- `"AI21"` +- `"AionLabs"` +- `"Alibaba"` +- `"Ambient"` +- `"Baidu"` +- `"Amazon Bedrock"` +- `"Amazon Nova"` +- `"Anthropic"` +- `"Arcee AI"` +- `"AtlasCloud"` +- `"Avian"` +- `"Azure"` +- `"BaseTen"` +- `"BytePlus"` +- `"Black Forest Labs"` +- `"Cerebras"` +- `"Chutes"` +- `"Cirrascale"` +- `"Clarifai"` +- `"Cloudflare"` +- `"Cohere"` +- `"Crucible"` +- `"Crusoe"` +- `"Darkbloom"` +- `"Decart"` +- `"DeepInfra"` +- `"DeepSeek"` +- `"DekaLLM"` +- `"DigitalOcean"` +- `"Featherless"` +- `"Fireworks"` +- `"Friendli"` +- `"GMICloud"` +- `"Google"` +- `"Google AI Studio"` +- `"Groq"` +- `"HeyGen"` +- `"Inception"` +- `"Inceptron"` +- `"InferenceNet"` +- `"Ionstream"` +- `"Infermatic"` +- `"Io Net"` +- `"Inferact vLLM"` +- `"Inflection"` +- `"Liquid"` +- `"Mara"` +- `"Mancer 2"` +- `"Minimax"` +- `"ModelRun"` +- `"Mistral"` +- `"Modular"` +- `"Moonshot AI"` +- `"Morph"` +- `"NCompass"` +- `"Nebius"` +- `"Nex AGI"` +- `"NextBit"` +- `"Novita"` +- `"Nvidia"` +- `"OpenAI"` +- `"OpenInference"` +- `"Parasail"` +- `"Poolside"` +- `"Perceptron"` +- `"Perplexity"` +- `"Phala"` +- `"Recraft"` +- `"Reka"` +- `"Relace"` +- `"Sakana AI"` +- `"SambaNova"` +- `"Seed"` +- `"SiliconFlow"` +- `"Sourceful"` +- `"StepFun"` +- `"Stealth"` +- `"StreamLake"` +- `"Switchpoint"` +- `"Tenstorrent"` +- `"Together"` +- `"Upstage"` +- `"Venice"` +- `"Wafer"` +- `"WandB"` +- `"Quiver"` +- `"Xiaomi"` +- `"xAI"` +- `"Z.AI"` +- `"FakeProvider"` diff --git a/docs/components/provideroptions.mdx b/docs/components/provideroptions.mdx new file mode 100644 index 00000000..b15b96fc --- /dev/null +++ b/docs/components/provideroptions.mdx @@ -0,0 +1,131 @@ +--- +title: "ProviderOptions" +--- + +Provider-specific options keyed by provider slug. Only options for the matched provider are forwarded; the rest are ignored. Unrecognized keys are silently dropped. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------- | -------------------------- | -------------------------- | -------------------------- | +| `oneai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `ai21` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `aion_labs` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `akashml` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `alibaba` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `amazon_bedrock` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `amazon_nova` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `ambient` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `anthropic` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `anyscale` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `arcee_ai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `atlas_cloud` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `atoma` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `avian` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `azure` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `baidu` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `baseten` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `black_forest_labs` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `byteplus` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `centml` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `cerebras` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `chutes` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `cirrascale` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `clarifai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `cloudflare` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `cohere` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `crofai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `crucible` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `crusoe` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `darkbloom` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `decart` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `deepinfra` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `deepseek` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `dekallm` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `digitalocean` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `enfer` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `fake_provider` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `featherless` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `fireworks` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `friendli` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `gmicloud` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `google_ai_studio` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `google_vertex` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `gopomelo` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `groq` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `heygen` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `huggingface` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `hyperbolic` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `hyperbolic_quantized` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `inception` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `inceptron` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `inferact_vllm` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `inference_net` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `infermatic` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `inflection` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `inocloud` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `io_net` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `ionstream` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `klusterai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `lambda_` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `lepton` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `liquid` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `lynn` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `lynn_private` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `mancer` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `mancer_old` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `mara` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `meta` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `minimax` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `mistral` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `modal` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `modelrun` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `modular` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `moonshotai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `morph` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `ncompass` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `nebius` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `nex_agi` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `nextbit` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `nineteen` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `novita` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `nvidia` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `octoai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `open_inference` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `openai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `parasail` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `perceptron` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `perplexity` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `phala` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `poolside` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `quiver` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `recraft` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `recursal` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `reflection` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `reka` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `relace` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `replicate` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `sakana_ai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `sambanova` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `sambanova_cloaked` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `seed` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `sf_compute` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `siliconflow` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `sourceful` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `stealth` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `stepfun` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `streamlake` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `switchpoint` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `targon` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `tenstorrent` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `together` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `together_lite` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `ubicloud` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `upstage` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `venice` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `wafer` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `wandb` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `xai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `xiaomi` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `z_ai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/provideroverloadedresponseerrordata.md b/docs/components/provideroverloadedresponseerrordata.mdx similarity index 92% rename from docs/components/provideroverloadedresponseerrordata.md rename to docs/components/provideroverloadedresponseerrordata.mdx index afebc305..05bcfcee 100644 --- a/docs/components/provideroverloadedresponseerrordata.md +++ b/docs/components/provideroverloadedresponseerrordata.mdx @@ -1,4 +1,6 @@ -# ProviderOverloadedResponseErrorData +--- +title: "ProviderOverloadedResponseErrorData" +--- Error data for ProviderOverloadedResponse diff --git a/docs/components/providerpreferences.md b/docs/components/providerpreferences.mdx similarity index 81% rename from docs/components/providerpreferences.md rename to docs/components/providerpreferences.mdx index 2321236e..750d3a21 100644 --- a/docs/components/providerpreferences.md +++ b/docs/components/providerpreferences.mdx @@ -1,4 +1,6 @@ -# ProviderPreferences +--- +title: "ProviderPreferences" +--- When multiple model providers are available, optionally indicate your routing preference. @@ -8,15 +10,15 @@ When multiple model providers are available, optionally indicate your routing pr | Field | Type | Required | Description | Example | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `allow_fallbacks` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to allow backup providers to serve requests
- true: (default) when the primary provider (or your custom providers in "order") is unavailable, use the next best provider.
- false: use only the primary/custom provider, and return the upstream error if it's unavailable.
| | -| `data_collection` | [OptionalNullable[components.DataCollection]](../components/datacollection.md) | :heavy_minus_sign: | Data collection setting. If no available model provider meets the requirement, your request will return an error.
- allow: (default) allow providers which store user data non-transiently and may train on it

- deny: use only providers which do not collect user data. | allow | +| `data_collection` | [OptionalNullable[components.DataCollection]](../components/datacollection.mdx) | :heavy_minus_sign: | Data collection setting. If no available model provider meets the requirement, your request will return an error.
- allow: (default) allow providers which store user data non-transiently and may train on it

- deny: use only providers which do not collect user data. | allow | | `enforce_distillable_text` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to restrict routing to only models that allow text distillation. When true, only models where the author has allowed distillation will be used. | true | -| `ignore` | List[[components.Ignore](../components/ignore.md)] | :heavy_minus_sign: | List of provider slugs to ignore. If provided, this list is merged with your account-wide ignored provider settings for this request. | [
"openai",
"anthropic"
] | -| `max_price` | [Optional[components.MaxPrice]](../components/maxprice.md) | :heavy_minus_sign: | The object specifying the maximum price you want to pay for this request. USD price per million tokens, for prompt and completion. | | -| `only` | List[[components.Only](../components/only.md)] | :heavy_minus_sign: | List of provider slugs to allow. If provided, this list is merged with your account-wide allowed provider settings for this request. | [
"openai",
"anthropic"
] | -| `order` | List[[components.Order](../components/order.md)] | :heavy_minus_sign: | An ordered list of provider slugs. The router will attempt to use the first provider in the subset of this list that supports your requested model, and fall back to the next if it is unavailable. If no providers are available, the request will fail with an error message. | [
"openai",
"anthropic"
] | -| `preferred_max_latency` | [OptionalNullable[components.PreferredMaxLatency]](../components/preferredmaxlatency.md) | :heavy_minus_sign: | Preferred maximum latency (in seconds). Can be a number (applies to p50) or an object with percentile-specific cutoffs. Endpoints above the threshold(s) may still be used, but are deprioritized in routing. When using fallback models, this may cause a fallback model to be used instead of the primary model if it meets the threshold. | 5 | -| `preferred_min_throughput` | [OptionalNullable[components.PreferredMinThroughput]](../components/preferredminthroughput.md) | :heavy_minus_sign: | Preferred minimum throughput (in tokens per second). Can be a number (applies to p50) or an object with percentile-specific cutoffs. Endpoints below the threshold(s) may still be used, but are deprioritized in routing. When using fallback models, this may cause a fallback model to be used instead of the primary model if it meets the threshold. | 100 | -| `quantizations` | List[[components.Quantization](../components/quantization.md)] | :heavy_minus_sign: | A list of quantization levels to filter the provider by. | | +| `ignore` | List[[components.Ignore](../components/ignore.mdx)] | :heavy_minus_sign: | List of provider slugs to ignore. If provided, this list is merged with your account-wide ignored provider settings for this request. | [
"openai",
"anthropic"
] | +| `max_price` | [Optional[components.MaxPrice]](../components/maxprice.mdx) | :heavy_minus_sign: | The object specifying the maximum price you want to pay for this request. USD price per million tokens, for prompt and completion. | | +| `only` | List[[components.Only](../components/only.mdx)] | :heavy_minus_sign: | List of provider slugs to allow. If provided, this list is merged with your account-wide allowed provider settings for this request. | [
"openai",
"anthropic"
] | +| `order` | List[[components.Order](../components/order.mdx)] | :heavy_minus_sign: | An ordered list of provider slugs. The router will attempt to use the first provider in the subset of this list that supports your requested model, and fall back to the next if it is unavailable. If no providers are available, the request will fail with an error message. | [
"openai",
"anthropic"
] | +| `preferred_max_latency` | [OptionalNullable[components.PreferredMaxLatency]](../components/preferredmaxlatency.mdx) | :heavy_minus_sign: | Preferred maximum latency (in seconds). Can be a number (applies to p50) or an object with percentile-specific cutoffs. Endpoints above the threshold(s) may still be used, but are deprioritized in routing. When using fallback models, this may cause a fallback model to be used instead of the primary model if it meets the threshold. | 5 | +| `preferred_min_throughput` | [OptionalNullable[components.PreferredMinThroughput]](../components/preferredminthroughput.mdx) | :heavy_minus_sign: | Preferred minimum throughput (in tokens per second). Can be a number (applies to p50) or an object with percentile-specific cutoffs. Endpoints below the threshold(s) may still be used, but are deprioritized in routing. When using fallback models, this may cause a fallback model to be used instead of the primary model if it meets the threshold. | 100 | +| `quantizations` | List[[components.Quantization](../components/quantization.mdx)] | :heavy_minus_sign: | A list of quantization levels to filter the provider by. | | | `require_parameters` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to filter providers to only those that support the parameters you've provided. If this setting is omitted or set to false, then providers will receive only the parameters they support, and ignore the rest. | | -| `sort` | [OptionalNullable[components.Sort]](../components/sort.md) | :heavy_minus_sign: | The sorting strategy to use for this request, if "order" is not specified. When set, no load balancing is performed. | price | +| `sort` | [OptionalNullable[components.Sort]](../components/sort.mdx) | :heavy_minus_sign: | The sorting strategy to use for this request, if "order" is not specified. When set, no load balancing is performed. | price | | `zdr` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to restrict routing to only ZDR (Zero Data Retention) endpoints. When true, only endpoints that do not retain prompts will be used. | true | \ No newline at end of file diff --git a/docs/components/providerresponse.mdx b/docs/components/providerresponse.mdx new file mode 100644 index 00000000..65abb901 --- /dev/null +++ b/docs/components/providerresponse.mdx @@ -0,0 +1,18 @@ +--- +title: "ProviderResponse" +--- + +Details of a provider response for a generation attempt + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `endpoint_id` | *Optional[str]* | :heavy_minus_sign: | Internal endpoint identifier | ep_abc123 | +| `id` | *Optional[str]* | :heavy_minus_sign: | Upstream provider response identifier | chatcmpl-abc123 | +| `is_byok` | *Optional[bool]* | :heavy_minus_sign: | Whether the request used a bring-your-own-key | false | +| `latency` | *Optional[float]* | :heavy_minus_sign: | Response latency in milliseconds | 1200 | +| `model_permaslug` | *Optional[str]* | :heavy_minus_sign: | Canonical model slug | openai/gpt-4 | +| `provider_name` | [Optional[components.ProviderResponseProviderName]](../components/providerresponseprovidername.mdx) | :heavy_minus_sign: | Name of the provider | OpenAI | +| `status` | *Nullable[int]* | :heavy_check_mark: | HTTP status code from the provider | 200 | \ No newline at end of file diff --git a/docs/components/providerresponseprovidername.mdx b/docs/components/providerresponseprovidername.mdx new file mode 100644 index 00000000..85c97ab9 --- /dev/null +++ b/docs/components/providerresponseprovidername.mdx @@ -0,0 +1,140 @@ +--- +title: "ProviderResponseProviderName" +--- + +Name of the provider + +## Example Usage + +```python +from openrouter.components import ProviderResponseProviderName + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ProviderResponseProviderName = "AnyScale" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"AnyScale"` +- `"Atoma"` +- `"Cent-ML"` +- `"CrofAI"` +- `"Enfer"` +- `"GoPomelo"` +- `"HuggingFace"` +- `"Hyperbolic"` +- `"Hyperbolic 2"` +- `"InoCloud"` +- `"Kluster"` +- `"Lambda"` +- `"Lepton"` +- `"Lynn 2"` +- `"Lynn"` +- `"Mancer"` +- `"Meta"` +- `"Modal"` +- `"Nineteen"` +- `"OctoAI"` +- `"Recursal"` +- `"Reflection"` +- `"Replicate"` +- `"SambaNova 2"` +- `"SF Compute"` +- `"Targon"` +- `"Together 2"` +- `"Ubicloud"` +- `"01.AI"` +- `"AkashML"` +- `"AI21"` +- `"AionLabs"` +- `"Alibaba"` +- `"Ambient"` +- `"Baidu"` +- `"Amazon Bedrock"` +- `"Amazon Nova"` +- `"Anthropic"` +- `"Arcee AI"` +- `"AtlasCloud"` +- `"Avian"` +- `"Azure"` +- `"BaseTen"` +- `"BytePlus"` +- `"Black Forest Labs"` +- `"Cerebras"` +- `"Chutes"` +- `"Cirrascale"` +- `"Clarifai"` +- `"Cloudflare"` +- `"Cohere"` +- `"Crucible"` +- `"Crusoe"` +- `"Darkbloom"` +- `"Decart"` +- `"DeepInfra"` +- `"DeepSeek"` +- `"DekaLLM"` +- `"DigitalOcean"` +- `"Featherless"` +- `"Fireworks"` +- `"Friendli"` +- `"GMICloud"` +- `"Google"` +- `"Google AI Studio"` +- `"Groq"` +- `"HeyGen"` +- `"Inception"` +- `"Inceptron"` +- `"InferenceNet"` +- `"Ionstream"` +- `"Infermatic"` +- `"Io Net"` +- `"Inferact vLLM"` +- `"Inflection"` +- `"Liquid"` +- `"Mara"` +- `"Mancer 2"` +- `"Minimax"` +- `"ModelRun"` +- `"Mistral"` +- `"Modular"` +- `"Moonshot AI"` +- `"Morph"` +- `"NCompass"` +- `"Nebius"` +- `"Nex AGI"` +- `"NextBit"` +- `"Novita"` +- `"Nvidia"` +- `"OpenAI"` +- `"OpenInference"` +- `"Parasail"` +- `"Poolside"` +- `"Perceptron"` +- `"Perplexity"` +- `"Phala"` +- `"Recraft"` +- `"Reka"` +- `"Relace"` +- `"Sakana AI"` +- `"SambaNova"` +- `"Seed"` +- `"SiliconFlow"` +- `"Sourceful"` +- `"StepFun"` +- `"Stealth"` +- `"StreamLake"` +- `"Switchpoint"` +- `"Tenstorrent"` +- `"Together"` +- `"Upstage"` +- `"Venice"` +- `"Wafer"` +- `"WandB"` +- `"Quiver"` +- `"Xiaomi"` +- `"xAI"` +- `"Z.AI"` +- `"FakeProvider"` diff --git a/docs/components/providersort.md b/docs/components/providersort.md deleted file mode 100644 index 82a08f5d..00000000 --- a/docs/components/providersort.md +++ /dev/null @@ -1,13 +0,0 @@ -# ProviderSort - -The provider sorting strategy (price, throughput, latency) - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `PRICE` | price | -| `THROUGHPUT` | throughput | -| `LATENCY` | latency | -| `EXACTO` | exacto | \ No newline at end of file diff --git a/docs/components/providersort.mdx b/docs/components/providersort.mdx new file mode 100644 index 00000000..cbfa63e4 --- /dev/null +++ b/docs/components/providersort.mdx @@ -0,0 +1,24 @@ +--- +title: "ProviderSort" +--- + +The provider sorting strategy (price, throughput, latency) + +## Example Usage + +```python +from openrouter.components import ProviderSort + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ProviderSort = "price" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"price"` +- `"throughput"` +- `"latency"` +- `"exacto"` diff --git a/docs/components/providersortconfig.md b/docs/components/providersortconfig.mdx similarity index 75% rename from docs/components/providersortconfig.md rename to docs/components/providersortconfig.mdx index 70db18a3..5aa8e90a 100644 --- a/docs/components/providersortconfig.md +++ b/docs/components/providersortconfig.mdx @@ -1,4 +1,6 @@ -# ProviderSortConfig +--- +title: "ProviderSortConfig" +--- The provider sorting strategy (price, throughput, latency) @@ -7,5 +9,5 @@ The provider sorting strategy (price, throughput, latency) | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `by` | [OptionalNullable[components.By]](../components/by.md) | :heavy_minus_sign: | The provider sorting strategy (price, throughput, latency) | price | -| `partition` | [OptionalNullable[components.Partition]](../components/partition.md) | :heavy_minus_sign: | Partitioning strategy for sorting: "model" (default) groups endpoints by model before sorting (fallback models remain fallbacks), "none" sorts all endpoints together regardless of model. | model | \ No newline at end of file +| `by` | [OptionalNullable[components.By]](../components/by.mdx) | :heavy_minus_sign: | The provider sorting strategy (price, throughput, latency) | price | +| `partition` | [OptionalNullable[components.Partition]](../components/partition.mdx) | :heavy_minus_sign: | Partitioning strategy for sorting: "model" (default) groups endpoints by model before sorting (fallback models remain fallbacks), "none" sorts all endpoints together regardless of model. | model | \ No newline at end of file diff --git a/docs/components/publicendpoint.md b/docs/components/publicendpoint.mdx similarity index 87% rename from docs/components/publicendpoint.md rename to docs/components/publicendpoint.mdx index de979899..53b22a2c 100644 --- a/docs/components/publicendpoint.md +++ b/docs/components/publicendpoint.mdx @@ -1,4 +1,6 @@ -# PublicEndpoint +--- +title: "PublicEndpoint" +--- Information about a specific model endpoint @@ -8,20 +10,20 @@ Information about a specific model endpoint | Field | Type | Required | Description | Example | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `context_length` | *int* | :heavy_check_mark: | N/A | | -| `latency_last_30m` | [Nullable[components.PercentileStats]](../components/percentilestats.md) | :heavy_check_mark: | Latency percentiles in milliseconds over the last 30 minutes. Latency measures time to first token. Only visible when authenticated with an API key or cookie; returns null for unauthenticated requests. | {
"p50": 25.5,
"p75": 35.2,
"p90": 48.7,
"p99": 85.3
} | +| `latency_last_30m` | [Nullable[components.PercentileStats]](../components/percentilestats.mdx) | :heavy_check_mark: | Latency percentiles in milliseconds over the last 30 minutes. Latency measures time to first token. Only visible when authenticated with an API key or cookie; returns null for unauthenticated requests. | \{
"p50": 25.5,
"p75": 35.2,
"p90": 48.7,
"p99": 85.3
} | | `max_completion_tokens` | *Nullable[int]* | :heavy_check_mark: | N/A | | | `max_prompt_tokens` | *Nullable[int]* | :heavy_check_mark: | N/A | | | `model_id` | *str* | :heavy_check_mark: | The unique identifier for the model (permaslug) | openai/gpt-4 | | `model_name` | *str* | :heavy_check_mark: | N/A | | | `name` | *str* | :heavy_check_mark: | N/A | | -| `pricing` | [components.Pricing](../components/pricing.md) | :heavy_check_mark: | N/A | | -| `provider_name` | [components.ProviderName](../components/providername.md) | :heavy_check_mark: | N/A | OpenAI | -| `quantization` | [Nullable[components.PublicEndpointQuantization]](../components/publicendpointquantization.md) | :heavy_check_mark: | N/A | fp16 | -| `status` | [Optional[components.EndpointStatus]](../components/endpointstatus.md) | :heavy_minus_sign: | N/A | 0 | -| `supported_parameters` | List[[components.Parameter](../components/parameter.md)] | :heavy_check_mark: | N/A | | +| `pricing` | [components.Pricing](../components/pricing.mdx) | :heavy_check_mark: | N/A | | +| `provider_name` | [components.ProviderName](../components/providername.mdx) | :heavy_check_mark: | N/A | OpenAI | +| `quantization` | [Nullable[components.PublicEndpointQuantization]](../components/publicendpointquantization.mdx) | :heavy_check_mark: | N/A | fp16 | +| `status` | [Optional[components.EndpointStatus]](../components/endpointstatus.mdx) | :heavy_minus_sign: | N/A | 0 | +| `supported_parameters` | List[[components.Parameter](../components/parameter.mdx)] | :heavy_check_mark: | N/A | | | `supports_implicit_caching` | *bool* | :heavy_check_mark: | N/A | | | `tag` | *str* | :heavy_check_mark: | N/A | | -| `throughput_last_30m` | [Nullable[components.PercentileStats]](../components/percentilestats.md) | :heavy_check_mark: | N/A | {
"p50": 25.5,
"p75": 35.2,
"p90": 48.7,
"p99": 85.3
} | +| `throughput_last_30m` | [Nullable[components.PercentileStats]](../components/percentilestats.mdx) | :heavy_check_mark: | N/A | \{
"p50": 25.5,
"p75": 35.2,
"p90": 48.7,
"p99": 85.3
} | | `uptime_last_1d` | *Nullable[float]* | :heavy_check_mark: | Uptime percentage over the last 1 day, calculated as successful requests / (successful + error requests) * 100. Rate-limited requests are excluded. Returns null if insufficient data. | | | `uptime_last_30m` | *Nullable[float]* | :heavy_check_mark: | N/A | | | `uptime_last_5m` | *Nullable[float]* | :heavy_check_mark: | Uptime percentage over the last 5 minutes, calculated as successful requests / (successful + error requests) * 100. Rate-limited requests are excluded. Returns null if insufficient data. | | \ No newline at end of file diff --git a/docs/components/publicendpointquantization.md b/docs/components/publicendpointquantization.md deleted file mode 100644 index 7d0edd22..00000000 --- a/docs/components/publicendpointquantization.md +++ /dev/null @@ -1,16 +0,0 @@ -# PublicEndpointQuantization - - -## Values - -| Name | Value | -| --------- | --------- | -| `INT4` | int4 | -| `INT8` | int8 | -| `FP4` | fp4 | -| `FP6` | fp6 | -| `FP8` | fp8 | -| `FP16` | fp16 | -| `BF16` | bf16 | -| `FP32` | fp32 | -| `UNKNOWN` | unknown | \ No newline at end of file diff --git a/docs/components/publicendpointquantization.mdx b/docs/components/publicendpointquantization.mdx new file mode 100644 index 00000000..4498d08f --- /dev/null +++ b/docs/components/publicendpointquantization.mdx @@ -0,0 +1,27 @@ +--- +title: "PublicEndpointQuantization" +--- + +## Example Usage + +```python +from openrouter.components import PublicEndpointQuantization + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: PublicEndpointQuantization = "int4" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"int4"` +- `"int8"` +- `"fp4"` +- `"fp6"` +- `"fp8"` +- `"fp16"` +- `"bf16"` +- `"fp32"` +- `"unknown"` diff --git a/docs/components/publicpricing.md b/docs/components/publicpricing.mdx similarity index 99% rename from docs/components/publicpricing.md rename to docs/components/publicpricing.mdx index 0746b999..0d8f6cf2 100644 --- a/docs/components/publicpricing.md +++ b/docs/components/publicpricing.mdx @@ -1,4 +1,6 @@ -# PublicPricing +--- +title: "PublicPricing" +--- Pricing information for the model diff --git a/docs/components/quantization.md b/docs/components/quantization.md deleted file mode 100644 index 7a0574a8..00000000 --- a/docs/components/quantization.md +++ /dev/null @@ -1,16 +0,0 @@ -# Quantization - - -## Values - -| Name | Value | -| --------- | --------- | -| `INT4` | int4 | -| `INT8` | int8 | -| `FP4` | fp4 | -| `FP6` | fp6 | -| `FP8` | fp8 | -| `FP16` | fp16 | -| `BF16` | bf16 | -| `FP32` | fp32 | -| `UNKNOWN` | unknown | \ No newline at end of file diff --git a/docs/components/quantization.mdx b/docs/components/quantization.mdx new file mode 100644 index 00000000..cdbf8d73 --- /dev/null +++ b/docs/components/quantization.mdx @@ -0,0 +1,27 @@ +--- +title: "Quantization" +--- + +## Example Usage + +```python +from openrouter.components import Quantization + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Quantization = "int4" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"int4"` +- `"int8"` +- `"fp4"` +- `"fp6"` +- `"fp8"` +- `"fp16"` +- `"bf16"` +- `"fp32"` +- `"unknown"` diff --git a/docs/components/rangecapability.mdx b/docs/components/rangecapability.mdx new file mode 100644 index 00000000..34425c50 --- /dev/null +++ b/docs/components/rangecapability.mdx @@ -0,0 +1,14 @@ +--- +title: "RangeCapability" +--- + +A parameter that accepts any value within an inclusive numeric range. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `max` | *float* | :heavy_check_mark: | N/A | +| `min` | *float* | :heavy_check_mark: | N/A | +| `type` | [components.RangeCapabilityType](../components/rangecapabilitytype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/rangecapabilitytype.mdx b/docs/components/rangecapabilitytype.mdx new file mode 100644 index 00000000..e4d767dd --- /dev/null +++ b/docs/components/rangecapabilitytype.mdx @@ -0,0 +1,15 @@ +--- +title: "RangeCapabilityType" +--- + +## Example Usage + +```python +from openrouter.components import RangeCapabilityType +value: RangeCapabilityType = "range" +``` + + +## Values + +- `"range"` diff --git a/docs/components/ranker.mdx b/docs/components/ranker.mdx new file mode 100644 index 00000000..7a7b811a --- /dev/null +++ b/docs/components/ranker.mdx @@ -0,0 +1,20 @@ +--- +title: "Ranker" +--- + +## Example Usage + +```python +from openrouter.components import Ranker + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Ranker = "auto" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"auto"` +- `"default-2024-11-15"` diff --git a/docs/components/rankingoptions.mdx b/docs/components/rankingoptions.mdx new file mode 100644 index 00000000..2f3d38a0 --- /dev/null +++ b/docs/components/rankingoptions.mdx @@ -0,0 +1,10 @@ +--- +title: "RankingOptions" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `ranker` | [Optional[components.Ranker]](../components/ranker.mdx) | :heavy_minus_sign: | N/A | +| `score_threshold` | *Optional[float]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/rankingsdailyitem.mdx b/docs/components/rankingsdailyitem.mdx new file mode 100644 index 00000000..b2e76029 --- /dev/null +++ b/docs/components/rankingsdailyitem.mdx @@ -0,0 +1,11 @@ +--- +title: "RankingsDailyItem" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `date_` | *str* | :heavy_check_mark: | UTC calendar date the row is aggregated over (YYYY-MM-DD). | 2026-05-11 | +| `model_permaslug` | *str* | :heavy_check_mark: | Model variant permaslug (e.g. `openai/gpt-4o-2024-05-13`, `openai/gpt-4o-2024-05-13:free`). Non-default variants include a `:variant` suffix and are ranked as their own entry. The reserved value `other` denotes the aggregated row covering every model outside the daily top 50 for that date — always sorted last within its date. | openai/gpt-4o-2024-05-13 | +| `total_tokens` | *str* | :heavy_check_mark: | Sum of `prompt_tokens + completion_tokens` for the day, returned as a decimal string so 64-bit values are not truncated. | 12345678 | \ No newline at end of file diff --git a/docs/components/rankingsdailymeta.mdx b/docs/components/rankingsdailymeta.mdx new file mode 100644 index 00000000..cdc00fcf --- /dev/null +++ b/docs/components/rankingsdailymeta.mdx @@ -0,0 +1,12 @@ +--- +title: "RankingsDailyMeta" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `as_of` | *str* | :heavy_check_mark: | ISO-8601 timestamp of when the response was generated. Reflects data-freshness because the underlying materialized view continuously ingests upstream events. | 2026-05-12T02:00:00Z | +| `end_date` | *str* | :heavy_check_mark: | Resolved end of the date window (UTC, inclusive). | 2026-05-11 | +| `start_date` | *str* | :heavy_check_mark: | Resolved start of the date window (UTC, inclusive). | 2026-04-12 | +| `version` | [components.RankingsDailyMetaVersion](../components/rankingsdailymetaversion.mdx) | :heavy_check_mark: | Dataset version. Field names and grain are stable for the life of `v1`. | | \ No newline at end of file diff --git a/docs/components/rankingsdailymetaversion.mdx b/docs/components/rankingsdailymetaversion.mdx new file mode 100644 index 00000000..27445275 --- /dev/null +++ b/docs/components/rankingsdailymetaversion.mdx @@ -0,0 +1,17 @@ +--- +title: "RankingsDailyMetaVersion" +--- + +Dataset version. Field names and grain are stable for the life of `v1`. + +## Example Usage + +```python +from openrouter.components import RankingsDailyMetaVersion +value: RankingsDailyMetaVersion = "v1" +``` + + +## Values + +- `"v1"` diff --git a/docs/components/rankingsdailyresponse.mdx b/docs/components/rankingsdailyresponse.mdx new file mode 100644 index 00000000..13cf299d --- /dev/null +++ b/docs/components/rankingsdailyresponse.mdx @@ -0,0 +1,10 @@ +--- +title: "RankingsDailyResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | List[[components.RankingsDailyItem](../components/rankingsdailyitem.mdx)] | :heavy_check_mark: | Up to 51 rows per day — the top 50 public models by `total_tokens` for each UTC calendar date in the window, plus one aggregated `other` row summing every model outside that top 50 (omitted when the long tail is empty). Rows are sorted by `date` ascending, then by `total_tokens` descending, with `other` pinned last within its date. Ties between real models break alphabetically on `model_permaslug` so the order is stable across requests. | | +| `meta` | [components.RankingsDailyMeta](../components/rankingsdailymeta.mdx) | :heavy_check_mark: | N/A | \{
"as_of": "2026-05-12T02:00:00Z",
"end_date": "2026-05-11",
"start_date": "2026-04-12",
"version": "v1"
} | \ No newline at end of file diff --git a/docs/components/reason.md b/docs/components/reason.md deleted file mode 100644 index 1c21d045..00000000 --- a/docs/components/reason.md +++ /dev/null @@ -1,9 +0,0 @@ -# Reason - - -## Values - -| Name | Value | -| ------------------- | ------------------- | -| `MAX_OUTPUT_TOKENS` | max_output_tokens | -| `CONTENT_FILTER` | content_filter | \ No newline at end of file diff --git a/docs/components/reason.mdx b/docs/components/reason.mdx new file mode 100644 index 00000000..99c4a374 --- /dev/null +++ b/docs/components/reason.mdx @@ -0,0 +1,20 @@ +--- +title: "Reason" +--- + +## Example Usage + +```python +from openrouter.components import Reason + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Reason = "max_output_tokens" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"max_output_tokens"` +- `"content_filter"` diff --git a/docs/components/reasoningconfig.mdx b/docs/components/reasoningconfig.mdx new file mode 100644 index 00000000..819b0830 --- /dev/null +++ b/docs/components/reasoningconfig.mdx @@ -0,0 +1,15 @@ +--- +title: "ReasoningConfig" +--- + +Configuration for reasoning mode in the response + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `effort` | [OptionalNullable[components.ReasoningEffort]](../components/reasoningeffort.mdx) | :heavy_minus_sign: | N/A | medium | +| `summary` | [OptionalNullable[components.ReasoningSummaryVerbosity]](../components/reasoningsummaryverbosity.mdx) | :heavy_minus_sign: | N/A | auto | +| `enabled` | *OptionalNullable[bool]* | :heavy_minus_sign: | N/A | | +| `max_tokens` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/components/reasoningdeltaevent.mdx b/docs/components/reasoningdeltaevent.mdx new file mode 100644 index 00000000..2c29c423 --- /dev/null +++ b/docs/components/reasoningdeltaevent.mdx @@ -0,0 +1,17 @@ +--- +title: "ReasoningDeltaEvent" +--- + +Event emitted when reasoning text delta is streamed + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `content_index` | *int* | :heavy_check_mark: | N/A | +| `delta` | *str* | :heavy_check_mark: | N/A | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.ReasoningDeltaEventType](../components/reasoningdeltaeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/reasoningdeltaeventtype.mdx b/docs/components/reasoningdeltaeventtype.mdx new file mode 100644 index 00000000..6c358d0e --- /dev/null +++ b/docs/components/reasoningdeltaeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ReasoningDeltaEventType" +--- + +## Example Usage + +```python +from openrouter.components import ReasoningDeltaEventType +value: ReasoningDeltaEventType = "response.reasoning_text.delta" +``` + + +## Values + +- `"response.reasoning_text.delta"` diff --git a/docs/components/reasoningdetailencrypted.md b/docs/components/reasoningdetailencrypted.mdx similarity index 82% rename from docs/components/reasoningdetailencrypted.md rename to docs/components/reasoningdetailencrypted.mdx index 44d9d2da..af4cce61 100644 --- a/docs/components/reasoningdetailencrypted.md +++ b/docs/components/reasoningdetailencrypted.mdx @@ -1,4 +1,6 @@ -# ReasoningDetailEncrypted +--- +title: "ReasoningDetailEncrypted" +--- Reasoning detail encrypted schema @@ -8,7 +10,7 @@ Reasoning detail encrypted schema | Field | Type | Required | Description | Example | | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | | `data` | *str* | :heavy_check_mark: | N/A | | -| `format_` | [OptionalNullable[components.ReasoningFormat]](../components/reasoningformat.md) | :heavy_minus_sign: | N/A | unknown | +| `format_` | [OptionalNullable[components.ReasoningFormat]](../components/reasoningformat.mdx) | :heavy_minus_sign: | N/A | unknown | | `id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | | `index` | *Optional[int]* | :heavy_minus_sign: | N/A | | -| `type` | [components.ReasoningDetailEncryptedType](../components/reasoningdetailencryptedtype.md) | :heavy_check_mark: | N/A | | \ No newline at end of file +| `type` | [components.ReasoningDetailEncryptedType](../components/reasoningdetailencryptedtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/reasoningdetailencryptedtype.md b/docs/components/reasoningdetailencryptedtype.md deleted file mode 100644 index c5744537..00000000 --- a/docs/components/reasoningdetailencryptedtype.md +++ /dev/null @@ -1,8 +0,0 @@ -# ReasoningDetailEncryptedType - - -## Values - -| Name | Value | -| --------------------- | --------------------- | -| `REASONING_ENCRYPTED` | reasoning.encrypted | \ No newline at end of file diff --git a/docs/components/reasoningdetailencryptedtype.mdx b/docs/components/reasoningdetailencryptedtype.mdx new file mode 100644 index 00000000..3779ebb0 --- /dev/null +++ b/docs/components/reasoningdetailencryptedtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ReasoningDetailEncryptedType" +--- + +## Example Usage + +```python +from openrouter.components import ReasoningDetailEncryptedType +value: ReasoningDetailEncryptedType = "reasoning.encrypted" +``` + + +## Values + +- `"reasoning.encrypted"` diff --git a/docs/components/reasoningdetailsummary.md b/docs/components/reasoningdetailsummary.mdx similarity index 79% rename from docs/components/reasoningdetailsummary.md rename to docs/components/reasoningdetailsummary.mdx index 1a6e2919..f0ad47f1 100644 --- a/docs/components/reasoningdetailsummary.md +++ b/docs/components/reasoningdetailsummary.mdx @@ -1,4 +1,6 @@ -# ReasoningDetailSummary +--- +title: "ReasoningDetailSummary" +--- Reasoning detail summary schema @@ -7,8 +9,8 @@ Reasoning detail summary schema | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `format_` | [OptionalNullable[components.ReasoningFormat]](../components/reasoningformat.md) | :heavy_minus_sign: | N/A | unknown | +| `format_` | [OptionalNullable[components.ReasoningFormat]](../components/reasoningformat.mdx) | :heavy_minus_sign: | N/A | unknown | | `id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | | `index` | *Optional[int]* | :heavy_minus_sign: | N/A | | | `summary` | *str* | :heavy_check_mark: | N/A | | -| `type` | [components.ReasoningDetailSummaryType](../components/reasoningdetailsummarytype.md) | :heavy_check_mark: | N/A | | \ No newline at end of file +| `type` | [components.ReasoningDetailSummaryType](../components/reasoningdetailsummarytype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/reasoningdetailsummarytype.md b/docs/components/reasoningdetailsummarytype.md deleted file mode 100644 index 6de96b93..00000000 --- a/docs/components/reasoningdetailsummarytype.md +++ /dev/null @@ -1,8 +0,0 @@ -# ReasoningDetailSummaryType - - -## Values - -| Name | Value | -| ------------------- | ------------------- | -| `REASONING_SUMMARY` | reasoning.summary | \ No newline at end of file diff --git a/docs/components/reasoningdetailsummarytype.mdx b/docs/components/reasoningdetailsummarytype.mdx new file mode 100644 index 00000000..70610723 --- /dev/null +++ b/docs/components/reasoningdetailsummarytype.mdx @@ -0,0 +1,15 @@ +--- +title: "ReasoningDetailSummaryType" +--- + +## Example Usage + +```python +from openrouter.components import ReasoningDetailSummaryType +value: ReasoningDetailSummaryType = "reasoning.summary" +``` + + +## Values + +- `"reasoning.summary"` diff --git a/docs/components/reasoningdetailtext.md b/docs/components/reasoningdetailtext.mdx similarity index 85% rename from docs/components/reasoningdetailtext.md rename to docs/components/reasoningdetailtext.mdx index 52b11339..54a6696f 100644 --- a/docs/components/reasoningdetailtext.md +++ b/docs/components/reasoningdetailtext.mdx @@ -1,4 +1,6 @@ -# ReasoningDetailText +--- +title: "ReasoningDetailText" +--- Reasoning detail text schema @@ -7,9 +9,9 @@ Reasoning detail text schema | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `format_` | [OptionalNullable[components.ReasoningFormat]](../components/reasoningformat.md) | :heavy_minus_sign: | N/A | unknown | +| `format_` | [OptionalNullable[components.ReasoningFormat]](../components/reasoningformat.mdx) | :heavy_minus_sign: | N/A | unknown | | `id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | | `index` | *Optional[int]* | :heavy_minus_sign: | N/A | | | `signature` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | | `text` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | -| `type` | [components.ReasoningDetailTextType](../components/reasoningdetailtexttype.md) | :heavy_check_mark: | N/A | | \ No newline at end of file +| `type` | [components.ReasoningDetailTextType](../components/reasoningdetailtexttype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/reasoningdetailtexttype.md b/docs/components/reasoningdetailtexttype.md deleted file mode 100644 index 2a56e429..00000000 --- a/docs/components/reasoningdetailtexttype.md +++ /dev/null @@ -1,8 +0,0 @@ -# ReasoningDetailTextType - - -## Values - -| Name | Value | -| ---------------- | ---------------- | -| `REASONING_TEXT` | reasoning.text | \ No newline at end of file diff --git a/docs/components/reasoningdetailtexttype.mdx b/docs/components/reasoningdetailtexttype.mdx new file mode 100644 index 00000000..4b94f542 --- /dev/null +++ b/docs/components/reasoningdetailtexttype.mdx @@ -0,0 +1,15 @@ +--- +title: "ReasoningDetailTextType" +--- + +## Example Usage + +```python +from openrouter.components import ReasoningDetailTextType +value: ReasoningDetailTextType = "reasoning.text" +``` + + +## Values + +- `"reasoning.text"` diff --git a/docs/components/reasoningdetailunion.md b/docs/components/reasoningdetailunion.mdx similarity index 91% rename from docs/components/reasoningdetailunion.md rename to docs/components/reasoningdetailunion.mdx index 015b016c..49ac02be 100644 --- a/docs/components/reasoningdetailunion.md +++ b/docs/components/reasoningdetailunion.mdx @@ -1,4 +1,6 @@ -# ReasoningDetailUnion +--- +title: "ReasoningDetailUnion" +--- Reasoning detail union schema diff --git a/docs/components/reasoningdoneevent.mdx b/docs/components/reasoningdoneevent.mdx new file mode 100644 index 00000000..6068c9df --- /dev/null +++ b/docs/components/reasoningdoneevent.mdx @@ -0,0 +1,17 @@ +--- +title: "ReasoningDoneEvent" +--- + +Event emitted when reasoning text streaming is complete + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `content_index` | *int* | :heavy_check_mark: | N/A | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `text` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.ReasoningDoneEventType](../components/reasoningdoneeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/reasoningdoneeventtype.mdx b/docs/components/reasoningdoneeventtype.mdx new file mode 100644 index 00000000..55393ca5 --- /dev/null +++ b/docs/components/reasoningdoneeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ReasoningDoneEventType" +--- + +## Example Usage + +```python +from openrouter.components import ReasoningDoneEventType +value: ReasoningDoneEventType = "response.reasoning_text.done" +``` + + +## Values + +- `"response.reasoning_text.done"` diff --git a/docs/components/reasoningeffort.mdx b/docs/components/reasoningeffort.mdx new file mode 100644 index 00000000..2cfb4301 --- /dev/null +++ b/docs/components/reasoningeffort.mdx @@ -0,0 +1,25 @@ +--- +title: "ReasoningEffort" +--- + +## Example Usage + +```python +from openrouter.components import ReasoningEffort + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ReasoningEffort = "max" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"max"` +- `"xhigh"` +- `"high"` +- `"medium"` +- `"low"` +- `"minimal"` +- `"none"` diff --git a/docs/components/reasoningformat.mdx b/docs/components/reasoningformat.mdx new file mode 100644 index 00000000..704d0542 --- /dev/null +++ b/docs/components/reasoningformat.mdx @@ -0,0 +1,24 @@ +--- +title: "ReasoningFormat" +--- + +## Example Usage + +```python +from openrouter.components import ReasoningFormat + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ReasoningFormat = "unknown" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"unknown"` +- `"openai-responses-v1"` +- `"azure-openai-responses-v1"` +- `"xai-responses-v1"` +- `"anthropic-claude-v1"` +- `"google-gemini-v1"` diff --git a/docs/components/reasoningitem.mdx b/docs/components/reasoningitem.mdx new file mode 100644 index 00000000..1afe6189 --- /dev/null +++ b/docs/components/reasoningitem.mdx @@ -0,0 +1,19 @@ +--- +title: "ReasoningItem" +--- + +Reasoning output item with signature and format extensions + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `content` | List[[components.ReasoningTextContent](../components/reasoningtextcontent.mdx)] | :heavy_minus_sign: | N/A | | +| `encrypted_content` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `id` | *str* | :heavy_check_mark: | N/A | | +| `status` | [Optional[components.ReasoningItemStatusUnion]](../components/reasoningitemstatusunion.mdx) | :heavy_minus_sign: | N/A | | +| `summary` | List[[components.ReasoningSummaryText](../components/reasoningsummarytext.mdx)] | :heavy_check_mark: | N/A | | +| `type` | [components.ReasoningItemType](../components/reasoningitemtype.mdx) | :heavy_check_mark: | N/A | | +| `format_` | [OptionalNullable[components.ReasoningFormat]](../components/reasoningformat.mdx) | :heavy_minus_sign: | N/A | unknown | +| `signature` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/components/reasoningitemstatuscompleted.mdx b/docs/components/reasoningitemstatuscompleted.mdx new file mode 100644 index 00000000..431f14fa --- /dev/null +++ b/docs/components/reasoningitemstatuscompleted.mdx @@ -0,0 +1,15 @@ +--- +title: "ReasoningItemStatusCompleted" +--- + +## Example Usage + +```python +from openrouter.components import ReasoningItemStatusCompleted +value: ReasoningItemStatusCompleted = "completed" +``` + + +## Values + +- `"completed"` diff --git a/docs/components/reasoningitemstatusincomplete.mdx b/docs/components/reasoningitemstatusincomplete.mdx new file mode 100644 index 00000000..6c2942a3 --- /dev/null +++ b/docs/components/reasoningitemstatusincomplete.mdx @@ -0,0 +1,15 @@ +--- +title: "ReasoningItemStatusIncomplete" +--- + +## Example Usage + +```python +from openrouter.components import ReasoningItemStatusIncomplete +value: ReasoningItemStatusIncomplete = "incomplete" +``` + + +## Values + +- `"incomplete"` diff --git a/docs/components/reasoningitemstatusinprogress.mdx b/docs/components/reasoningitemstatusinprogress.mdx new file mode 100644 index 00000000..3bcf0123 --- /dev/null +++ b/docs/components/reasoningitemstatusinprogress.mdx @@ -0,0 +1,15 @@ +--- +title: "ReasoningItemStatusInProgress" +--- + +## Example Usage + +```python +from openrouter.components import ReasoningItemStatusInProgress +value: ReasoningItemStatusInProgress = "in_progress" +``` + + +## Values + +- `"in_progress"` diff --git a/docs/components/reasoningitemstatusunion.mdx b/docs/components/reasoningitemstatusunion.mdx new file mode 100644 index 00000000..e6ea6285 --- /dev/null +++ b/docs/components/reasoningitemstatusunion.mdx @@ -0,0 +1,24 @@ +--- +title: "ReasoningItemStatusUnion" +--- + +## Supported Types + +### `components.ReasoningItemStatusCompleted` + +```python +value: components.ReasoningItemStatusCompleted = /* values here */ +``` + +### `components.ReasoningItemStatusIncomplete` + +```python +value: components.ReasoningItemStatusIncomplete = /* values here */ +``` + +### `components.ReasoningItemStatusInProgress` + +```python +value: components.ReasoningItemStatusInProgress = /* values here */ +``` + diff --git a/docs/components/reasoningitemtype.mdx b/docs/components/reasoningitemtype.mdx new file mode 100644 index 00000000..ce469f03 --- /dev/null +++ b/docs/components/reasoningitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ReasoningItemType" +--- + +## Example Usage + +```python +from openrouter.components import ReasoningItemType +value: ReasoningItemType = "reasoning" +``` + + +## Values + +- `"reasoning"` diff --git a/docs/components/reasoningsummarypartaddedevent.mdx b/docs/components/reasoningsummarypartaddedevent.mdx new file mode 100644 index 00000000..277f6169 --- /dev/null +++ b/docs/components/reasoningsummarypartaddedevent.mdx @@ -0,0 +1,17 @@ +--- +title: "ReasoningSummaryPartAddedEvent" +--- + +Event emitted when a reasoning summary part is added + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `item_id` | *str* | :heavy_check_mark: | N/A | | +| `output_index` | *int* | :heavy_check_mark: | N/A | | +| `part` | [components.ReasoningSummaryText](../components/reasoningsummarytext.mdx) | :heavy_check_mark: | N/A | \{
"text": "Analyzed the problem using first principles",
"type": "summary_text"
} | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | | +| `summary_index` | *int* | :heavy_check_mark: | N/A | | +| `type` | [components.ReasoningSummaryPartAddedEventType](../components/reasoningsummarypartaddedeventtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/reasoningsummarypartaddedeventtype.mdx b/docs/components/reasoningsummarypartaddedeventtype.mdx new file mode 100644 index 00000000..6b1f94bd --- /dev/null +++ b/docs/components/reasoningsummarypartaddedeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ReasoningSummaryPartAddedEventType" +--- + +## Example Usage + +```python +from openrouter.components import ReasoningSummaryPartAddedEventType +value: ReasoningSummaryPartAddedEventType = "response.reasoning_summary_part.added" +``` + + +## Values + +- `"response.reasoning_summary_part.added"` diff --git a/docs/components/reasoningsummarypartdoneevent.mdx b/docs/components/reasoningsummarypartdoneevent.mdx new file mode 100644 index 00000000..f648a1e1 --- /dev/null +++ b/docs/components/reasoningsummarypartdoneevent.mdx @@ -0,0 +1,17 @@ +--- +title: "ReasoningSummaryPartDoneEvent" +--- + +Event emitted when a reasoning summary part is complete + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `item_id` | *str* | :heavy_check_mark: | N/A | | +| `output_index` | *int* | :heavy_check_mark: | N/A | | +| `part` | [components.ReasoningSummaryText](../components/reasoningsummarytext.mdx) | :heavy_check_mark: | N/A | \{
"text": "Analyzed the problem using first principles",
"type": "summary_text"
} | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | | +| `summary_index` | *int* | :heavy_check_mark: | N/A | | +| `type` | [components.ReasoningSummaryPartDoneEventType](../components/reasoningsummarypartdoneeventtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/reasoningsummarypartdoneeventtype.mdx b/docs/components/reasoningsummarypartdoneeventtype.mdx new file mode 100644 index 00000000..74d96535 --- /dev/null +++ b/docs/components/reasoningsummarypartdoneeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ReasoningSummaryPartDoneEventType" +--- + +## Example Usage + +```python +from openrouter.components import ReasoningSummaryPartDoneEventType +value: ReasoningSummaryPartDoneEventType = "response.reasoning_summary_part.done" +``` + + +## Values + +- `"response.reasoning_summary_part.done"` diff --git a/docs/components/reasoningsummarytext.md b/docs/components/reasoningsummarytext.mdx similarity index 87% rename from docs/components/reasoningsummarytext.md rename to docs/components/reasoningsummarytext.mdx index 9786305e..0a97676e 100644 --- a/docs/components/reasoningsummarytext.md +++ b/docs/components/reasoningsummarytext.mdx @@ -1,9 +1,10 @@ -# ReasoningSummaryText - +--- +title: "ReasoningSummaryText" +--- ## Fields | Field | Type | Required | Description | | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | | `text` | *str* | :heavy_check_mark: | N/A | -| `type` | [components.ReasoningSummaryTextType](../components/reasoningsummarytexttype.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| `type` | [components.ReasoningSummaryTextType](../components/reasoningsummarytexttype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/reasoningsummarytextdeltaevent.mdx b/docs/components/reasoningsummarytextdeltaevent.mdx new file mode 100644 index 00000000..204b30ef --- /dev/null +++ b/docs/components/reasoningsummarytextdeltaevent.mdx @@ -0,0 +1,17 @@ +--- +title: "ReasoningSummaryTextDeltaEvent" +--- + +Event emitted when reasoning summary text delta is streamed + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `delta` | *str* | :heavy_check_mark: | N/A | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `summary_index` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.ReasoningSummaryTextDeltaEventType](../components/reasoningsummarytextdeltaeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/reasoningsummarytextdeltaeventtype.mdx b/docs/components/reasoningsummarytextdeltaeventtype.mdx new file mode 100644 index 00000000..a7ac9a93 --- /dev/null +++ b/docs/components/reasoningsummarytextdeltaeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ReasoningSummaryTextDeltaEventType" +--- + +## Example Usage + +```python +from openrouter.components import ReasoningSummaryTextDeltaEventType +value: ReasoningSummaryTextDeltaEventType = "response.reasoning_summary_text.delta" +``` + + +## Values + +- `"response.reasoning_summary_text.delta"` diff --git a/docs/components/reasoningsummarytextdoneevent.mdx b/docs/components/reasoningsummarytextdoneevent.mdx new file mode 100644 index 00000000..540a20ce --- /dev/null +++ b/docs/components/reasoningsummarytextdoneevent.mdx @@ -0,0 +1,17 @@ +--- +title: "ReasoningSummaryTextDoneEvent" +--- + +Event emitted when reasoning summary text streaming is complete + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `summary_index` | *int* | :heavy_check_mark: | N/A | +| `text` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.ReasoningSummaryTextDoneEventType](../components/reasoningsummarytextdoneeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/reasoningsummarytextdoneeventtype.mdx b/docs/components/reasoningsummarytextdoneeventtype.mdx new file mode 100644 index 00000000..64982e79 --- /dev/null +++ b/docs/components/reasoningsummarytextdoneeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ReasoningSummaryTextDoneEventType" +--- + +## Example Usage + +```python +from openrouter.components import ReasoningSummaryTextDoneEventType +value: ReasoningSummaryTextDoneEventType = "response.reasoning_summary_text.done" +``` + + +## Values + +- `"response.reasoning_summary_text.done"` diff --git a/docs/components/reasoningsummarytexttype.md b/docs/components/reasoningsummarytexttype.md deleted file mode 100644 index af36e333..00000000 --- a/docs/components/reasoningsummarytexttype.md +++ /dev/null @@ -1,8 +0,0 @@ -# ReasoningSummaryTextType - - -## Values - -| Name | Value | -| -------------- | -------------- | -| `SUMMARY_TEXT` | summary_text | \ No newline at end of file diff --git a/docs/components/reasoningsummarytexttype.mdx b/docs/components/reasoningsummarytexttype.mdx new file mode 100644 index 00000000..47685283 --- /dev/null +++ b/docs/components/reasoningsummarytexttype.mdx @@ -0,0 +1,15 @@ +--- +title: "ReasoningSummaryTextType" +--- + +## Example Usage + +```python +from openrouter.components import ReasoningSummaryTextType +value: ReasoningSummaryTextType = "summary_text" +``` + + +## Values + +- `"summary_text"` diff --git a/docs/components/reasoningsummaryverbosity.mdx b/docs/components/reasoningsummaryverbosity.mdx new file mode 100644 index 00000000..a62813b9 --- /dev/null +++ b/docs/components/reasoningsummaryverbosity.mdx @@ -0,0 +1,21 @@ +--- +title: "ReasoningSummaryVerbosity" +--- + +## Example Usage + +```python +from openrouter.components import ReasoningSummaryVerbosity + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ReasoningSummaryVerbosity = "auto" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"auto"` +- `"concise"` +- `"detailed"` diff --git a/docs/components/reasoningtextcontent.md b/docs/components/reasoningtextcontent.mdx similarity index 87% rename from docs/components/reasoningtextcontent.md rename to docs/components/reasoningtextcontent.mdx index 500d7a1a..6fbaeeed 100644 --- a/docs/components/reasoningtextcontent.md +++ b/docs/components/reasoningtextcontent.mdx @@ -1,9 +1,10 @@ -# ReasoningTextContent - +--- +title: "ReasoningTextContent" +--- ## Fields | Field | Type | Required | Description | | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | | `text` | *str* | :heavy_check_mark: | N/A | -| `type` | [components.ReasoningTextContentType](../components/reasoningtextcontenttype.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| `type` | [components.ReasoningTextContentType](../components/reasoningtextcontenttype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/reasoningtextcontenttype.md b/docs/components/reasoningtextcontenttype.md deleted file mode 100644 index f3646d44..00000000 --- a/docs/components/reasoningtextcontenttype.md +++ /dev/null @@ -1,8 +0,0 @@ -# ReasoningTextContentType - - -## Values - -| Name | Value | -| ---------------- | ---------------- | -| `REASONING_TEXT` | reasoning_text | \ No newline at end of file diff --git a/docs/components/reasoningtextcontenttype.mdx b/docs/components/reasoningtextcontenttype.mdx new file mode 100644 index 00000000..9724b529 --- /dev/null +++ b/docs/components/reasoningtextcontenttype.mdx @@ -0,0 +1,15 @@ +--- +title: "ReasoningTextContentType" +--- + +## Example Usage + +```python +from openrouter.components import ReasoningTextContentType +value: ReasoningTextContentType = "reasoning_text" +``` + + +## Values + +- `"reasoning_text"` diff --git a/docs/components/refusaldeltaevent.mdx b/docs/components/refusaldeltaevent.mdx new file mode 100644 index 00000000..046947a1 --- /dev/null +++ b/docs/components/refusaldeltaevent.mdx @@ -0,0 +1,17 @@ +--- +title: "RefusalDeltaEvent" +--- + +Event emitted when a refusal delta is streamed + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `content_index` | *int* | :heavy_check_mark: | N/A | +| `delta` | *str* | :heavy_check_mark: | N/A | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.RefusalDeltaEventType](../components/refusaldeltaeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/refusaldeltaeventtype.mdx b/docs/components/refusaldeltaeventtype.mdx new file mode 100644 index 00000000..eb1088e8 --- /dev/null +++ b/docs/components/refusaldeltaeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "RefusalDeltaEventType" +--- + +## Example Usage + +```python +from openrouter.components import RefusalDeltaEventType +value: RefusalDeltaEventType = "response.refusal.delta" +``` + + +## Values + +- `"response.refusal.delta"` diff --git a/docs/components/refusaldoneevent.mdx b/docs/components/refusaldoneevent.mdx new file mode 100644 index 00000000..ccc2709f --- /dev/null +++ b/docs/components/refusaldoneevent.mdx @@ -0,0 +1,17 @@ +--- +title: "RefusalDoneEvent" +--- + +Event emitted when refusal streaming is complete + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `content_index` | *int* | :heavy_check_mark: | N/A | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `refusal` | *str* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.RefusalDoneEventType](../components/refusaldoneeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/refusaldoneeventtype.mdx b/docs/components/refusaldoneeventtype.mdx new file mode 100644 index 00000000..a6e370bd --- /dev/null +++ b/docs/components/refusaldoneeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "RefusalDoneEventType" +--- + +## Example Usage + +```python +from openrouter.components import RefusalDoneEventType +value: RefusalDoneEventType = "response.refusal.done" +``` + + +## Values + +- `"response.refusal.done"` diff --git a/docs/components/region.mdx b/docs/components/region.mdx new file mode 100644 index 00000000..51b26cc8 --- /dev/null +++ b/docs/components/region.mdx @@ -0,0 +1,20 @@ +--- +title: "Region" +--- + +## Example Usage + +```python +from openrouter.components import Region + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Region = "us" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"us"` +- `"eu"` diff --git a/docs/components/requesttimeoutresponseerrordata.md b/docs/components/requesttimeoutresponseerrordata.mdx similarity index 92% rename from docs/components/requesttimeoutresponseerrordata.md rename to docs/components/requesttimeoutresponseerrordata.mdx index 2e062ef5..71579d93 100644 --- a/docs/components/requesttimeoutresponseerrordata.md +++ b/docs/components/requesttimeoutresponseerrordata.mdx @@ -1,4 +1,6 @@ -# RequestTimeoutResponseErrorData +--- +title: "RequestTimeoutResponseErrorData" +--- Error data for RequestTimeoutResponse diff --git a/docs/components/requireapproval.mdx b/docs/components/requireapproval.mdx new file mode 100644 index 00000000..79583bfa --- /dev/null +++ b/docs/components/requireapproval.mdx @@ -0,0 +1,10 @@ +--- +title: "RequireApproval" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `always` | [Optional[components.Always]](../components/always.mdx) | :heavy_minus_sign: | N/A | +| `never` | [Optional[components.Never]](../components/never.mdx) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/requireapprovalalways.mdx b/docs/components/requireapprovalalways.mdx new file mode 100644 index 00000000..520f072a --- /dev/null +++ b/docs/components/requireapprovalalways.mdx @@ -0,0 +1,15 @@ +--- +title: "RequireApprovalAlways" +--- + +## Example Usage + +```python +from openrouter.components import RequireApprovalAlways +value: RequireApprovalAlways = "always" +``` + + +## Values + +- `"always"` diff --git a/docs/components/requireapprovalnever.mdx b/docs/components/requireapprovalnever.mdx new file mode 100644 index 00000000..0e65abee --- /dev/null +++ b/docs/components/requireapprovalnever.mdx @@ -0,0 +1,15 @@ +--- +title: "RequireApprovalNever" +--- + +## Example Usage + +```python +from openrouter.components import RequireApprovalNever +value: RequireApprovalNever = "never" +``` + + +## Values + +- `"never"` diff --git a/docs/components/requireapprovalunion.mdx b/docs/components/requireapprovalunion.mdx new file mode 100644 index 00000000..9ff15b47 --- /dev/null +++ b/docs/components/requireapprovalunion.mdx @@ -0,0 +1,30 @@ +--- +title: "RequireApprovalUnion" +--- + +## Supported Types + +### `components.RequireApproval` + +```python +value: components.RequireApproval = /* values here */ +``` + +### `components.RequireApprovalAlways` + +```python +value: components.RequireApprovalAlways = /* values here */ +``` + +### `components.RequireApprovalNever` + +```python +value: components.RequireApprovalNever = /* values here */ +``` + +### `Any` + +```python +value: Any = /* values here */ +``` + diff --git a/docs/components/resetinterval.mdx b/docs/components/resetinterval.mdx new file mode 100644 index 00000000..a22e2043 --- /dev/null +++ b/docs/components/resetinterval.mdx @@ -0,0 +1,23 @@ +--- +title: "ResetInterval" +--- + +Interval at which spend resets. Null means a lifetime (one-time) budget. + +## Example Usage + +```python +from openrouter.components import ResetInterval + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ResetInterval = "daily" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"daily"` +- `"weekly"` +- `"monthly"` diff --git a/docs/components/response.mdx b/docs/components/response.mdx new file mode 100644 index 00000000..f12a0a04 --- /dev/null +++ b/docs/components/response.mdx @@ -0,0 +1,10 @@ +--- +title: "Response" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `content` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `model` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/responseformat.md b/docs/components/responseformat.mdx similarity index 95% rename from docs/components/responseformat.md rename to docs/components/responseformat.mdx index 86cd0050..29709eff 100644 --- a/docs/components/responseformat.md +++ b/docs/components/responseformat.mdx @@ -1,4 +1,6 @@ -# ResponseFormat +--- +title: "ResponseFormat" +--- Response format configuration diff --git a/docs/components/responseformatenum.mdx b/docs/components/responseformatenum.mdx new file mode 100644 index 00000000..0b7c4b07 --- /dev/null +++ b/docs/components/responseformatenum.mdx @@ -0,0 +1,22 @@ +--- +title: "ResponseFormatEnum" +--- + +Audio output format + +## Example Usage + +```python +from openrouter.components import ResponseFormatEnum + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ResponseFormatEnum = "mp3" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"mp3"` +- `"pcm"` diff --git a/docs/components/responsehealingplugin.mdx b/docs/components/responsehealingplugin.mdx new file mode 100644 index 00000000..8b89cfa9 --- /dev/null +++ b/docs/components/responsehealingplugin.mdx @@ -0,0 +1,10 @@ +--- +title: "ResponseHealingPlugin" +--- + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `enabled` | *Optional[bool]* | :heavy_minus_sign: | Set to false to disable the response-healing plugin for this request. Defaults to true. | +| `id` | [components.ResponseHealingPluginID](../components/responsehealingpluginid.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/responsehealingpluginid.mdx b/docs/components/responsehealingpluginid.mdx new file mode 100644 index 00000000..0dce5cee --- /dev/null +++ b/docs/components/responsehealingpluginid.mdx @@ -0,0 +1,15 @@ +--- +title: "ResponseHealingPluginID" +--- + +## Example Usage + +```python +from openrouter.components import ResponseHealingPluginID +value: ResponseHealingPluginID = "response-healing" +``` + + +## Values + +- `"response-healing"` diff --git a/docs/components/responseincludesenum.mdx b/docs/components/responseincludesenum.mdx new file mode 100644 index 00000000..a5cb0103 --- /dev/null +++ b/docs/components/responseincludesenum.mdx @@ -0,0 +1,23 @@ +--- +title: "ResponseIncludesEnum" +--- + +## Example Usage + +```python +from openrouter.components import ResponseIncludesEnum + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ResponseIncludesEnum = "file_search_call.results" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"file_search_call.results"` +- `"message.input_image.image_url"` +- `"computer_call_output.output.image_url"` +- `"reasoning.encrypted_content"` +- `"code_interpreter_call.outputs"` diff --git a/docs/components/responseoutputtext.md b/docs/components/responseoutputtext.mdx similarity index 66% rename from docs/components/responseoutputtext.md rename to docs/components/responseoutputtext.mdx index ad73bf9f..a6879aa8 100644 --- a/docs/components/responseoutputtext.md +++ b/docs/components/responseoutputtext.mdx @@ -1,11 +1,12 @@ -# ResponseOutputText - +--- +title: "ResponseOutputText" +--- ## Fields | Field | Type | Required | Description | | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `annotations` | List[[components.OpenAIResponsesAnnotation](../components/openairesponsesannotation.md)] | :heavy_minus_sign: | N/A | -| `logprobs` | List[[components.Logprob](../components/logprob.md)] | :heavy_minus_sign: | N/A | +| `annotations` | List[[components.OpenAIResponsesAnnotation](../components/openairesponsesannotation.mdx)] | :heavy_minus_sign: | N/A | +| `logprobs` | List[[components.Logprob](../components/logprob.mdx)] | :heavy_minus_sign: | N/A | | `text` | *str* | :heavy_check_mark: | N/A | -| `type` | [components.ResponseOutputTextType](../components/responseoutputtexttype.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| `type` | [components.ResponseOutputTextType](../components/responseoutputtexttype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/responseoutputtexttoplogprob.mdx b/docs/components/responseoutputtexttoplogprob.mdx new file mode 100644 index 00000000..b085f188 --- /dev/null +++ b/docs/components/responseoutputtexttoplogprob.mdx @@ -0,0 +1,11 @@ +--- +title: "ResponseOutputTextTopLogprob" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `bytes_` | List[*int*] | :heavy_check_mark: | N/A | +| `logprob` | *float* | :heavy_check_mark: | N/A | +| `token` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/responseoutputtexttype.md b/docs/components/responseoutputtexttype.md deleted file mode 100644 index 8c8a3d72..00000000 --- a/docs/components/responseoutputtexttype.md +++ /dev/null @@ -1,8 +0,0 @@ -# ResponseOutputTextType - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `OUTPUT_TEXT` | output_text | \ No newline at end of file diff --git a/docs/components/responseoutputtexttype.mdx b/docs/components/responseoutputtexttype.mdx new file mode 100644 index 00000000..aa7c8923 --- /dev/null +++ b/docs/components/responseoutputtexttype.mdx @@ -0,0 +1,15 @@ +--- +title: "ResponseOutputTextType" +--- + +## Example Usage + +```python +from openrouter.components import ResponseOutputTextType +value: ResponseOutputTextType = "output_text" +``` + + +## Values + +- `"output_text"` diff --git a/docs/components/responseserrorfield.md b/docs/components/responseserrorfield.mdx similarity index 81% rename from docs/components/responseserrorfield.md rename to docs/components/responseserrorfield.mdx index e21193bb..996cffee 100644 --- a/docs/components/responseserrorfield.md +++ b/docs/components/responseserrorfield.mdx @@ -1,4 +1,6 @@ -# ResponsesErrorField +--- +title: "ResponsesErrorField" +--- Error information returned from the API @@ -7,5 +9,5 @@ Error information returned from the API | Field | Type | Required | Description | | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| `code` | [components.Code](../components/code.md) | :heavy_check_mark: | N/A | +| `code` | [components.Code](../components/code.mdx) | :heavy_check_mark: | N/A | | `message` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/responsesrequest.mdx b/docs/components/responsesrequest.mdx new file mode 100644 index 00000000..eb2f6540 --- /dev/null +++ b/docs/components/responsesrequest.mdx @@ -0,0 +1,49 @@ +--- +title: "ResponsesRequest" +--- + +Request schema for Responses endpoint + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `background` | *OptionalNullable[bool]* | :heavy_minus_sign: | N/A | | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `debug` | [Optional[components.ChatDebugOptions]](../components/chatdebugoptions.mdx) | :heavy_minus_sign: | Debug options for inspecting request transformations (streaming only) | \{
"echo_upstream_body": true
} | +| `frequency_penalty` | *OptionalNullable[float]* | :heavy_minus_sign: | N/A | | +| `image_config` | Dict[str, [components.ImageConfig](../components/imageconfig.mdx)] | :heavy_minus_sign: | Provider-specific image configuration options. Keys and values vary by model/provider. See https://openrouter.ai/docs/guides/overview/multimodal/image-generation for more details. | \{
"aspect_ratio": "16:9",
"quality": "high"
} | +| `include` | List[[components.ResponseIncludesEnum](../components/responseincludesenum.mdx)] | :heavy_minus_sign: | N/A | | +| `input` | [Optional[components.InputsUnion]](../components/inputsunion.mdx) | :heavy_minus_sign: | Input for a response request - can be a string or array of items | [
\{
"content": "What is the weather today?",
"role": "user"
}
] | +| `instructions` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `max_output_tokens` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | | +| `max_tool_calls` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Metadata key-value pairs for the request. Keys must be ≤64 characters and cannot contain brackets. Values must be ≤512 characters. Maximum 16 pairs allowed. | \{
"session_id": "abc-def-ghi",
"user_id": "123"
} | +| `modalities` | List[[components.OutputModalityEnum](../components/outputmodalityenum.mdx)] | :heavy_minus_sign: | Output modalities for the response. Supported values are "text" and "image". | [
"text",
"image"
] | +| `model` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `models` | List[*str*] | :heavy_minus_sign: | N/A | | +| `parallel_tool_calls` | *OptionalNullable[bool]* | :heavy_minus_sign: | N/A | | +| `plugins` | List[[components.ResponsesRequestPlugin](../components/responsesrequestplugin.mdx)] | :heavy_minus_sign: | Plugins you want to enable for this request, including their settings. | | +| `presence_penalty` | *OptionalNullable[float]* | :heavy_minus_sign: | N/A | | +| `previous_response_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `prompt` | [OptionalNullable[components.StoredPromptTemplate]](../components/storedprompttemplate.mdx) | :heavy_minus_sign: | N/A | \{
"id": "prompt-abc123",
"variables": \{
"name": "John"
}
} | +| `prompt_cache_key` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `provider` | [OptionalNullable[components.ProviderPreferences]](../components/providerpreferences.mdx) | :heavy_minus_sign: | When multiple model providers are available, optionally indicate your routing preference. | \{
"allow_fallbacks": true
} | +| `reasoning` | [OptionalNullable[components.ReasoningConfig]](../components/reasoningconfig.mdx) | :heavy_minus_sign: | Configuration for reasoning mode in the response | \{
"enabled": true,
"summary": "auto"
} | +| `safety_identifier` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `service_tier` | [OptionalNullable[components.ResponsesRequestServiceTier]](../components/responsesrequestservicetier.mdx) | :heavy_minus_sign: | N/A | | +| `session_id` | *Optional[str]* | :heavy_minus_sign: | A unique identifier for grouping related requests (e.g., a conversation or agent workflow). When provided, OpenRouter uses it as the sticky routing key, routing all requests in the session to the same provider to maximize prompt cache hits. Also used for observability grouping. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. | | +| `stop_server_tools_when` | List[[components.StopServerToolsWhenCondition](../components/stopservertoolswhencondition.mdx)] | :heavy_minus_sign: | Stop conditions for the server-tool agent loop. Any condition firing halts the loop (OR logic). When set, this overrides `max_tool_calls`. | [
\{
"step_count": 5,
"type": "step_count_is"
},
\{
"max_cost_in_dollars": 0.5,
"type": "max_cost"
}
] | +| `store` | *Optional[Literal[False]]* | :heavy_minus_sign: | N/A | | +| `stream` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `temperature` | *OptionalNullable[float]* | :heavy_minus_sign: | N/A | | +| `text` | [Optional[components.TextExtendedConfig]](../components/textextendedconfig.mdx) | :heavy_minus_sign: | Text output configuration including format and verbosity | \{
"format": \{
"type": "text"
}
} | +| `tool_choice` | [Optional[components.OpenAIResponsesToolChoiceUnion]](../components/openairesponsestoolchoiceunion.mdx) | :heavy_minus_sign: | N/A | auto | +| `tools` | List[[components.ResponsesRequestToolUnion](../components/responsesrequesttoolunion.mdx)] | :heavy_minus_sign: | N/A | | +| `top_k` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `top_logprobs` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | | +| `top_p` | *OptionalNullable[float]* | :heavy_minus_sign: | N/A | | +| `trace` | [Optional[components.TraceConfig]](../components/traceconfig.mdx) | :heavy_minus_sign: | Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. | \{
"trace_id": "trace-abc123",
"trace_name": "my-app-trace"
} | +| `truncation` | [OptionalNullable[components.OpenAIResponsesTruncation]](../components/openairesponsestruncation.mdx) | :heavy_minus_sign: | N/A | auto | +| `user` | *Optional[str]* | :heavy_minus_sign: | A unique identifier representing your end-user, which helps distinguish between different users of your app. This allows your app to identify specific users in case of abuse reports, preventing your entire app from being affected by the actions of individual users. Maximum of 256 characters. | | \ No newline at end of file diff --git a/docs/components/responsesrequestplugin.mdx b/docs/components/responsesrequestplugin.mdx new file mode 100644 index 00000000..7121cf5e --- /dev/null +++ b/docs/components/responsesrequestplugin.mdx @@ -0,0 +1,60 @@ +--- +title: "ResponsesRequestPlugin" +--- + +## Supported Types + +### `components.AutoRouterPlugin` + +```python +value: components.AutoRouterPlugin = /* values here */ +``` + +### `components.ContextCompressionPlugin` + +```python +value: components.ContextCompressionPlugin = /* values here */ +``` + +### `components.FileParserPlugin` + +```python +value: components.FileParserPlugin = /* values here */ +``` + +### `components.FusionPlugin` + +```python +value: components.FusionPlugin = /* values here */ +``` + +### `components.ModerationPlugin` + +```python +value: components.ModerationPlugin = /* values here */ +``` + +### `components.ParetoRouterPlugin` + +```python +value: components.ParetoRouterPlugin = /* values here */ +``` + +### `components.ResponseHealingPlugin` + +```python +value: components.ResponseHealingPlugin = /* values here */ +``` + +### `components.WebSearchPlugin` + +```python +value: components.WebSearchPlugin = /* values here */ +``` + +### `components.WebFetchPlugin` + +```python +value: components.WebFetchPlugin = /* values here */ +``` + diff --git a/docs/components/responsesrequestservicetier.mdx b/docs/components/responsesrequestservicetier.mdx new file mode 100644 index 00000000..51f9b599 --- /dev/null +++ b/docs/components/responsesrequestservicetier.mdx @@ -0,0 +1,23 @@ +--- +title: "ResponsesRequestServiceTier" +--- + +## Example Usage + +```python +from openrouter.components import ResponsesRequestServiceTier + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ResponsesRequestServiceTier = "auto" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"auto"` +- `"default"` +- `"flex"` +- `"priority"` +- `"scale"` diff --git a/docs/components/responsesrequesttoolfunction.mdx b/docs/components/responsesrequesttoolfunction.mdx new file mode 100644 index 00000000..5f6cc606 --- /dev/null +++ b/docs/components/responsesrequesttoolfunction.mdx @@ -0,0 +1,16 @@ +--- +title: "ResponsesRequestToolFunction" +--- + +Function tool definition + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `name` | *str* | :heavy_check_mark: | N/A | +| `parameters` | Dict[str, *Nullable[Any]*] | :heavy_check_mark: | N/A | +| `strict` | *OptionalNullable[bool]* | :heavy_minus_sign: | N/A | +| `type` | [components.ResponsesRequestType](../components/responsesrequesttype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/responsesrequesttoolunion.mdx b/docs/components/responsesrequesttoolunion.mdx new file mode 100644 index 00000000..504c0873 --- /dev/null +++ b/docs/components/responsesrequesttoolunion.mdx @@ -0,0 +1,156 @@ +--- +title: "ResponsesRequestToolUnion" +--- + +## Supported Types + +### `components.ResponsesRequestToolFunction` + +```python +value: components.ResponsesRequestToolFunction = /* values here */ +``` + +### `components.PreviewWebSearchServerTool` + +```python +value: components.PreviewWebSearchServerTool = /* values here */ +``` + +### `components.Preview20250311WebSearchServerTool` + +```python +value: components.Preview20250311WebSearchServerTool = /* values here */ +``` + +### `components.LegacyWebSearchServerTool` + +```python +value: components.LegacyWebSearchServerTool = /* values here */ +``` + +### `components.WebSearchServerTool` + +```python +value: components.WebSearchServerTool = /* values here */ +``` + +### `components.FileSearchServerTool` + +```python +value: components.FileSearchServerTool = /* values here */ +``` + +### `components.ComputerUseServerTool` + +```python +value: components.ComputerUseServerTool = /* values here */ +``` + +### `components.CodeInterpreterServerTool` + +```python +value: components.CodeInterpreterServerTool = /* values here */ +``` + +### `components.McpServerTool` + +```python +value: components.McpServerTool = /* values here */ +``` + +### `components.ImageGenerationServerTool` + +```python +value: components.ImageGenerationServerTool = /* values here */ +``` + +### `components.CodexLocalShellTool` + +```python +value: components.CodexLocalShellTool = /* values here */ +``` + +### `components.ShellServerTool` + +```python +value: components.ShellServerTool = /* values here */ +``` + +### `components.ApplyPatchServerTool` + +```python +value: components.ApplyPatchServerTool = /* values here */ +``` + +### `components.CustomTool` + +```python +value: components.CustomTool = /* values here */ +``` + +### `components.AdvisorServerToolOpenRouter` + +```python +value: components.AdvisorServerToolOpenRouter = /* values here */ +``` + +### `components.SubagentServerToolOpenRouter` + +```python +value: components.SubagentServerToolOpenRouter = /* values here */ +``` + +### `components.DatetimeServerTool` + +```python +value: components.DatetimeServerTool = /* values here */ +``` + +### `components.FusionServerToolOpenRouter` + +```python +value: components.FusionServerToolOpenRouter = /* values here */ +``` + +### `components.ImageGenerationServerToolOpenRouter` + +```python +value: components.ImageGenerationServerToolOpenRouter = /* values here */ +``` + +### `components.ChatSearchModelsServerTool` + +```python +value: components.ChatSearchModelsServerTool = /* values here */ +``` + +### `components.WebFetchServerTool` + +```python +value: components.WebFetchServerTool = /* values here */ +``` + +### `components.WebSearchServerToolOpenRouter` + +```python +value: components.WebSearchServerToolOpenRouter = /* values here */ +``` + +### `components.ApplyPatchServerToolOpenRouter` + +```python +value: components.ApplyPatchServerToolOpenRouter = /* values here */ +``` + +### `components.BashServerTool` + +```python +value: components.BashServerTool = /* values here */ +``` + +### `components.ShellServerToolOpenRouter` + +```python +value: components.ShellServerToolOpenRouter = /* values here */ +``` + diff --git a/docs/components/responsesrequesttype.mdx b/docs/components/responsesrequesttype.mdx new file mode 100644 index 00000000..bd4d080a --- /dev/null +++ b/docs/components/responsesrequesttype.mdx @@ -0,0 +1,15 @@ +--- +title: "ResponsesRequestType" +--- + +## Example Usage + +```python +from openrouter.components import ResponsesRequestType +value: ResponsesRequestType = "function" +``` + + +## Values + +- `"function"` diff --git a/docs/components/responsesstreamingresponse.mdx b/docs/components/responsesstreamingresponse.mdx new file mode 100644 index 00000000..a9e4e2a7 --- /dev/null +++ b/docs/components/responsesstreamingresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "ResponsesStreamingResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [components.StreamEvents](../components/streamevents.mdx) | :heavy_check_mark: | Union of all possible event types emitted during response streaming | \{
"response": \{
"created_at": 1704067200,
"error": null,
"id": "resp-abc123",
"incomplete_details": null,
"instructions": null,
"max_output_tokens": null,
"metadata": null,
"model": "gpt-4",
"object": "response",
"output": [],
"parallel_tool_calls": true,
"status": "in_progress",
"temperature": null,
"tool_choice": "auto",
"tools": [],
"top_p": null
},
"sequence_number": 0,
"type": "response.created"
} | \ No newline at end of file diff --git a/docs/components/routerattempt.mdx b/docs/components/routerattempt.mdx new file mode 100644 index 00000000..a082fd19 --- /dev/null +++ b/docs/components/routerattempt.mdx @@ -0,0 +1,11 @@ +--- +title: "RouterAttempt" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `model` | *str* | :heavy_check_mark: | N/A | +| `provider` | *str* | :heavy_check_mark: | N/A | +| `status` | *int* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/routerparams.mdx b/docs/components/routerparams.mdx new file mode 100644 index 00000000..e5316d78 --- /dev/null +++ b/docs/components/routerparams.mdx @@ -0,0 +1,12 @@ +--- +title: "RouterParams" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| `quality_floor` | *Optional[float]* | :heavy_minus_sign: | N/A | | +| `throughput_floor` | *Optional[float]* | :heavy_minus_sign: | N/A | | +| `version_group` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `__pydantic_extra__` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | \{
"version_group": "anthropic/claude-sonnet-4"
} | \ No newline at end of file diff --git a/docs/components/routingstrategy.mdx b/docs/components/routingstrategy.mdx new file mode 100644 index 00000000..02852267 --- /dev/null +++ b/docs/components/routingstrategy.mdx @@ -0,0 +1,27 @@ +--- +title: "RoutingStrategy" +--- + +## Example Usage + +```python +from openrouter.components import RoutingStrategy + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: RoutingStrategy = "direct" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"direct"` +- `"auto"` +- `"free"` +- `"latest"` +- `"alias"` +- `"fallback"` +- `"pareto"` +- `"bodybuilder"` +- `"fusion"` diff --git a/docs/components/rule.mdx b/docs/components/rule.mdx new file mode 100644 index 00000000..d585c3be --- /dev/null +++ b/docs/components/rule.mdx @@ -0,0 +1,11 @@ +--- +title: "Rule" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `field` | [components.FieldT](../components/fieldt.mdx) | :heavy_check_mark: | N/A | +| `operator` | [components.Operator](../components/operator.mdx) | :heavy_check_mark: | N/A | +| `value` | [Optional[components.ObservabilityFilterRulesConfigValue]](../components/observabilityfilterrulesconfigvalue.mdx) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/searchcontextsizeenum.mdx b/docs/components/searchcontextsizeenum.mdx new file mode 100644 index 00000000..ba86ee34 --- /dev/null +++ b/docs/components/searchcontextsizeenum.mdx @@ -0,0 +1,23 @@ +--- +title: "SearchContextSizeEnum" +--- + +Size of the search context for web search tools + +## Example Usage + +```python +from openrouter.components import SearchContextSizeEnum + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: SearchContextSizeEnum = "low" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"low"` +- `"medium"` +- `"high"` diff --git a/docs/components/searchmodelsservertoolconfig.mdx b/docs/components/searchmodelsservertoolconfig.mdx new file mode 100644 index 00000000..fb2f7f7c --- /dev/null +++ b/docs/components/searchmodelsservertoolconfig.mdx @@ -0,0 +1,12 @@ +--- +title: "SearchModelsServerToolConfig" +--- + +Configuration for the openrouter:experimental__search_models server tool + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `max_results` | *Optional[int]* | :heavy_minus_sign: | Maximum number of models to return. Defaults to 5, max 20. | 5 | \ No newline at end of file diff --git a/docs/components/searchqualitylevel.mdx b/docs/components/searchqualitylevel.mdx new file mode 100644 index 00000000..09c66119 --- /dev/null +++ b/docs/components/searchqualitylevel.mdx @@ -0,0 +1,23 @@ +--- +title: "SearchQualityLevel" +--- + +How much context to retrieve per result. Applies to Exa, Parallel, and Perplexity engines; ignored with native provider search and Firecrawl. For Exa, pins a fixed per-result character cap (low=5,000, medium=15,000, high=30,000); when omitted, Exa picks an adaptive size per query and document (typically ~2,000–4,000 characters per result). For Parallel, controls the total characters across all results; when omitted, Parallel uses its own default size. For Perplexity, maps directly to the Search API's native search_context_size parameter. Overridden by `max_characters` when both are set. + +## Example Usage + +```python +from openrouter.components import SearchQualityLevel + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: SearchQualityLevel = "low" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"low"` +- `"medium"` +- `"high"` diff --git a/docs/components/security.md b/docs/components/security.mdx similarity index 91% rename from docs/components/security.md rename to docs/components/security.mdx index 2e0839d0..185abbfd 100644 --- a/docs/components/security.md +++ b/docs/components/security.mdx @@ -1,5 +1,6 @@ -# Security - +--- +title: "Security" +--- ## Fields diff --git a/docs/components/servertooluse.mdx b/docs/components/servertooluse.mdx new file mode 100644 index 00000000..a90fbbef --- /dev/null +++ b/docs/components/servertooluse.mdx @@ -0,0 +1,14 @@ +--- +title: "ServerToolUse" +--- + +Usage for server-side tool execution (e.g., web search) + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `tool_calls_executed` | *OptionalNullable[int]* | :heavy_minus_sign: | Number of OpenRouter server tool calls that executed and produced a result. | +| `tool_calls_requested` | *OptionalNullable[int]* | :heavy_minus_sign: | Total number of OpenRouter server-orchestrated tool calls the model requested, across all tool types. Provider-native tools (e.g. native web search) are not counted here. | +| `web_search_requests` | *OptionalNullable[int]* | :heavy_minus_sign: | Number of web searches performed by server-side tools. For server-orchestrated tool calls a web search is also counted in tool_calls_requested; provider-native web search may report web_search_requests only. Do not sum the two. | \ No newline at end of file diff --git a/docs/components/servertoolusedetails.mdx b/docs/components/servertoolusedetails.mdx new file mode 100644 index 00000000..a9f0d64b --- /dev/null +++ b/docs/components/servertoolusedetails.mdx @@ -0,0 +1,14 @@ +--- +title: "ServerToolUseDetails" +--- + +Usage for server-side tool execution (e.g., web search) + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `tool_calls_executed` | *OptionalNullable[int]* | :heavy_minus_sign: | Number of OpenRouter server tool calls that executed and produced a result | +| `tool_calls_requested` | *OptionalNullable[int]* | :heavy_minus_sign: | Total number of OpenRouter server-orchestrated tool calls the model requested, across all tool types. Provider-native tools (e.g. native web search) are not counted here. | +| `web_search_requests` | *OptionalNullable[int]* | :heavy_minus_sign: | Number of web searches performed by server-side tools. For server-orchestrated tool calls a web search is also counted in tool_calls_requested; provider-native web search may report web_search_requests only. Do not sum the two. | \ No newline at end of file diff --git a/docs/components/serviceunavailableresponseerrordata.md b/docs/components/serviceunavailableresponseerrordata.mdx similarity index 92% rename from docs/components/serviceunavailableresponseerrordata.md rename to docs/components/serviceunavailableresponseerrordata.mdx index 797c8310..c4f86510 100644 --- a/docs/components/serviceunavailableresponseerrordata.md +++ b/docs/components/serviceunavailableresponseerrordata.mdx @@ -1,4 +1,6 @@ -# ServiceUnavailableResponseErrorData +--- +title: "ServiceUnavailableResponseErrorData" +--- Error data for ServiceUnavailableResponse diff --git a/docs/components/shellcallitem.mdx b/docs/components/shellcallitem.mdx new file mode 100644 index 00000000..02c5c8a8 --- /dev/null +++ b/docs/components/shellcallitem.mdx @@ -0,0 +1,17 @@ +--- +title: "ShellCallItem" +--- + +A shell command execution call (newer variant) + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `action` | [components.ShellCallItemAction](../components/shellcallitemaction.mdx) | :heavy_check_mark: | N/A | | +| `call_id` | *str* | :heavy_check_mark: | N/A | | +| `environment` | *OptionalNullable[Any]* | :heavy_minus_sign: | N/A | | +| `id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `status` | [OptionalNullable[components.ShellCallItemStatus]](../components/shellcallitemstatus.mdx) | :heavy_minus_sign: | N/A | completed | +| `type` | [components.ShellCallItemType](../components/shellcallitemtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/shellcallitemaction.mdx b/docs/components/shellcallitemaction.mdx new file mode 100644 index 00000000..cca3bb61 --- /dev/null +++ b/docs/components/shellcallitemaction.mdx @@ -0,0 +1,11 @@ +--- +title: "ShellCallItemAction" +--- + +## Fields + +| Field | Type | Required | Description | +| ----------------------- | ----------------------- | ----------------------- | ----------------------- | +| `commands` | List[*str*] | :heavy_check_mark: | N/A | +| `max_output_length` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | +| `timeout_ms` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/shellcallitemstatus.mdx b/docs/components/shellcallitemstatus.mdx new file mode 100644 index 00000000..b6ec73cd --- /dev/null +++ b/docs/components/shellcallitemstatus.mdx @@ -0,0 +1,21 @@ +--- +title: "ShellCallItemStatus" +--- + +## Example Usage + +```python +from openrouter.components import ShellCallItemStatus + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ShellCallItemStatus = "in_progress" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"in_progress"` +- `"completed"` +- `"incomplete"` diff --git a/docs/components/shellcallitemtype.mdx b/docs/components/shellcallitemtype.mdx new file mode 100644 index 00000000..fe8aa0d8 --- /dev/null +++ b/docs/components/shellcallitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ShellCallItemType" +--- + +## Example Usage + +```python +from openrouter.components import ShellCallItemType +value: ShellCallItemType = "shell_call" +``` + + +## Values + +- `"shell_call"` diff --git a/docs/components/shellcalloutputitem.mdx b/docs/components/shellcalloutputitem.mdx new file mode 100644 index 00000000..e4456b9c --- /dev/null +++ b/docs/components/shellcalloutputitem.mdx @@ -0,0 +1,17 @@ +--- +title: "ShellCallOutputItem" +--- + +Output from a shell command execution (newer variant) + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `call_id` | *str* | :heavy_check_mark: | N/A | | +| `id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `max_output_length` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | | +| `output` | List[[components.ShellCallOutputItemOutput](../components/shellcalloutputitemoutput.mdx)] | :heavy_check_mark: | N/A | | +| `status` | [OptionalNullable[components.ShellCallOutputItemStatus]](../components/shellcalloutputitemstatus.mdx) | :heavy_minus_sign: | N/A | completed | +| `type` | [components.ShellCallOutputItemType](../components/shellcalloutputitemtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/shellcalloutputitemoutput.mdx b/docs/components/shellcalloutputitemoutput.mdx new file mode 100644 index 00000000..9d485575 --- /dev/null +++ b/docs/components/shellcalloutputitemoutput.mdx @@ -0,0 +1,12 @@ +--- +title: "ShellCallOutputItemOutput" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------- | -------------------------- | -------------------------- | -------------------------- | +| `content` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `exit_code` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | +| `type` | *str* | :heavy_check_mark: | N/A | +| `__pydantic_extra__` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/shellcalloutputitemstatus.mdx b/docs/components/shellcalloutputitemstatus.mdx new file mode 100644 index 00000000..d1b61c6d --- /dev/null +++ b/docs/components/shellcalloutputitemstatus.mdx @@ -0,0 +1,21 @@ +--- +title: "ShellCallOutputItemStatus" +--- + +## Example Usage + +```python +from openrouter.components import ShellCallOutputItemStatus + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ShellCallOutputItemStatus = "in_progress" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"in_progress"` +- `"completed"` +- `"incomplete"` diff --git a/docs/components/shellcalloutputitemtype.mdx b/docs/components/shellcalloutputitemtype.mdx new file mode 100644 index 00000000..90b55526 --- /dev/null +++ b/docs/components/shellcalloutputitemtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ShellCallOutputItemType" +--- + +## Example Usage + +```python +from openrouter.components import ShellCallOutputItemType +value: ShellCallOutputItemType = "shell_call_output" +``` + + +## Values + +- `"shell_call_output"` diff --git a/docs/components/shellcallstatus.mdx b/docs/components/shellcallstatus.mdx new file mode 100644 index 00000000..27aa179a --- /dev/null +++ b/docs/components/shellcallstatus.mdx @@ -0,0 +1,23 @@ +--- +title: "ShellCallStatus" +--- + +Status of a shell call or its output. + +## Example Usage + +```python +from openrouter.components import ShellCallStatus + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ShellCallStatus = "in_progress" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"in_progress"` +- `"completed"` +- `"incomplete"` diff --git a/docs/components/shellservertool.mdx b/docs/components/shellservertool.mdx new file mode 100644 index 00000000..0f55c379 --- /dev/null +++ b/docs/components/shellservertool.mdx @@ -0,0 +1,12 @@ +--- +title: "ShellServerTool" +--- + +Shell tool configuration + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `type` | [components.ShellServerToolType](../components/shellservertooltype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/shellservertoolconfig.mdx b/docs/components/shellservertoolconfig.mdx new file mode 100644 index 00000000..5f24f1a8 --- /dev/null +++ b/docs/components/shellservertoolconfig.mdx @@ -0,0 +1,14 @@ +--- +title: "ShellServerToolConfig" +--- + +Configuration for the openrouter:shell server tool + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `engine` | [Optional[components.ShellServerToolEngine]](../components/shellservertoolengine.mdx) | :heavy_minus_sign: | Which shell engine to use. "openrouter" runs commands server-side in the OpenRouter sandbox. "auto" (default) keeps the provider's native hosted shell when available (OpenAI); on other providers the call is routed to the OpenRouter sandbox. | openrouter | +| `environment` | [Optional[components.ShellServerToolEnvironment]](../components/shellservertoolenvironment.mdx) | :heavy_minus_sign: | Server-side execution environment for the shell tool. Only container-backed environments are supported; "local" shells are not. | \{
"type": "container_auto"
} | +| `sleep_after_seconds` | *Optional[int]* | :heavy_minus_sign: | How long (in seconds) the container stays warm after its last command before sleeping, freeing its capacity slot. Idle-based: each command renews the timer. Defaults to 900 (15 minutes); capped at 2592000 (30 days). | 900 | \ No newline at end of file diff --git a/docs/components/shellservertoolengine.mdx b/docs/components/shellservertoolengine.mdx new file mode 100644 index 00000000..e5a09119 --- /dev/null +++ b/docs/components/shellservertoolengine.mdx @@ -0,0 +1,22 @@ +--- +title: "ShellServerToolEngine" +--- + +Which shell engine to use. "openrouter" runs commands server-side in the OpenRouter sandbox. "auto" (default) keeps the provider's native hosted shell when available (OpenAI); on other providers the call is routed to the OpenRouter sandbox. + +## Example Usage + +```python +from openrouter.components import ShellServerToolEngine + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ShellServerToolEngine = "auto" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"auto"` +- `"openrouter"` diff --git a/docs/components/shellservertoolenvironment.mdx b/docs/components/shellservertoolenvironment.mdx new file mode 100644 index 00000000..c61d1889 --- /dev/null +++ b/docs/components/shellservertoolenvironment.mdx @@ -0,0 +1,21 @@ +--- +title: "ShellServerToolEnvironment" +--- + +Server-side execution environment for the shell tool. Only container-backed environments are supported; "local" shells are not. + + +## Supported Types + +### `components.ContainerAutoEnvironment` + +```python +value: components.ContainerAutoEnvironment = /* values here */ +``` + +### `components.ContainerReferenceEnvironment` + +```python +value: components.ContainerReferenceEnvironment = /* values here */ +``` + diff --git a/docs/components/shellservertoolopenrouter.mdx b/docs/components/shellservertoolopenrouter.mdx new file mode 100644 index 00000000..fa031486 --- /dev/null +++ b/docs/components/shellservertoolopenrouter.mdx @@ -0,0 +1,13 @@ +--- +title: "ShellServerToolOpenRouter" +--- + +OpenRouter built-in server tool: runs shell commands server-side in a sandboxed container (a sandbox-backed clone of OpenAI's hosted shell tool) + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `parameters` | [Optional[components.ShellServerToolConfig]](../components/shellservertoolconfig.mdx) | :heavy_minus_sign: | Configuration for the openrouter:shell server tool | \{
"engine": "openrouter",
"environment": \{
"type": "container_auto"
}
} | +| `type` | [components.ShellServerToolOpenRouterType](../components/shellservertoolopenroutertype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/shellservertoolopenroutertype.mdx b/docs/components/shellservertoolopenroutertype.mdx new file mode 100644 index 00000000..9c46cc10 --- /dev/null +++ b/docs/components/shellservertoolopenroutertype.mdx @@ -0,0 +1,15 @@ +--- +title: "ShellServerToolOpenRouterType" +--- + +## Example Usage + +```python +from openrouter.components import ShellServerToolOpenRouterType +value: ShellServerToolOpenRouterType = "openrouter:shell" +``` + + +## Values + +- `"openrouter:shell"` diff --git a/docs/components/shellservertooltype.mdx b/docs/components/shellservertooltype.mdx new file mode 100644 index 00000000..1c0dd3c4 --- /dev/null +++ b/docs/components/shellservertooltype.mdx @@ -0,0 +1,15 @@ +--- +title: "ShellServerToolType" +--- + +## Example Usage + +```python +from openrouter.components import ShellServerToolType +value: ShellServerToolType = "shell" +``` + + +## Values + +- `"shell"` diff --git a/docs/components/size.mdx b/docs/components/size.mdx new file mode 100644 index 00000000..707abe98 --- /dev/null +++ b/docs/components/size.mdx @@ -0,0 +1,22 @@ +--- +title: "Size" +--- + +## Example Usage + +```python +from openrouter.components import Size + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Size = "1024x1024" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"1024x1024"` +- `"1024x1536"` +- `"1536x1024"` +- `"auto"` diff --git a/docs/components/sort.mdx b/docs/components/sort.mdx new file mode 100644 index 00000000..b12340f4 --- /dev/null +++ b/docs/components/sort.mdx @@ -0,0 +1,27 @@ +--- +title: "Sort" +--- + +The sorting strategy to use for this request, if "order" is not specified. When set, no load balancing is performed. + + +## Supported Types + +### `components.ProviderSort` + +```python +value: components.ProviderSort = /* values here */ +``` + +### `components.ProviderSortConfig` + +```python +value: components.ProviderSortConfig = /* values here */ +``` + +### `Any` + +```python +value: Any = /* values here */ +``` + diff --git a/docs/components/sourcecontent.mdx b/docs/components/sourcecontent.mdx new file mode 100644 index 00000000..792f4054 --- /dev/null +++ b/docs/components/sourcecontent.mdx @@ -0,0 +1,10 @@ +--- +title: "SourceContent" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `content` | [components.AnthropicDocumentBlockParamContent2](../components/anthropicdocumentblockparamcontent2.mdx) | :heavy_check_mark: | N/A | +| `type` | [components.SourceType](../components/sourcetype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/sourcetype.mdx b/docs/components/sourcetype.mdx new file mode 100644 index 00000000..5d617cac --- /dev/null +++ b/docs/components/sourcetype.mdx @@ -0,0 +1,15 @@ +--- +title: "SourceType" +--- + +## Example Usage + +```python +from openrouter.components import SourceType +value: SourceType = "content" +``` + + +## Values + +- `"content"` diff --git a/docs/components/speechrequest.mdx b/docs/components/speechrequest.mdx new file mode 100644 index 00000000..e984d1fc --- /dev/null +++ b/docs/components/speechrequest.mdx @@ -0,0 +1,17 @@ +--- +title: "SpeechRequest" +--- + +Text-to-speech request input + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| `input` | *str* | :heavy_check_mark: | Text to synthesize | Hello world | +| `model` | *str* | :heavy_check_mark: | TTS model identifier | elevenlabs/eleven-turbo-v2 | +| `provider` | [Optional[components.SpeechRequestProvider]](../components/speechrequestprovider.mdx) | :heavy_minus_sign: | Provider-specific passthrough configuration | | +| `response_format` | [Optional[components.ResponseFormatEnum]](../components/responseformatenum.mdx) | :heavy_minus_sign: | Audio output format | pcm | +| `speed` | *Optional[float]* | :heavy_minus_sign: | Playback speed multiplier. Only used by models that support it (e.g. OpenAI TTS). Ignored by other providers. | 1 | +| `voice` | *str* | :heavy_check_mark: | Voice identifier (provider-specific). | alloy | \ No newline at end of file diff --git a/docs/components/speechrequestprovider.mdx b/docs/components/speechrequestprovider.mdx new file mode 100644 index 00000000..3a95d19f --- /dev/null +++ b/docs/components/speechrequestprovider.mdx @@ -0,0 +1,12 @@ +--- +title: "SpeechRequestProvider" +--- + +Provider-specific passthrough configuration + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `options` | [Optional[components.ProviderOptions]](../components/provideroptions.mdx) | :heavy_minus_sign: | Provider-specific options keyed by provider slug. Only options for the matched provider are forwarded; the rest are ignored. Unrecognized keys are silently dropped. | \{
"openai": \{
"max_tokens": 1000
}
} | \ No newline at end of file diff --git a/docs/components/speed.mdx b/docs/components/speed.mdx new file mode 100644 index 00000000..f120cfef --- /dev/null +++ b/docs/components/speed.mdx @@ -0,0 +1,22 @@ +--- +title: "Speed" +--- + +Controls output generation speed. When set to `fast`, uses a higher-speed inference configuration at premium pricing. Defaults to `standard` when omitted. + +## Example Usage + +```python +from openrouter.components import Speed + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Speed = "fast" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"fast"` +- `"standard"` diff --git a/docs/components/stance.mdx b/docs/components/stance.mdx new file mode 100644 index 00000000..3a93298e --- /dev/null +++ b/docs/components/stance.mdx @@ -0,0 +1,10 @@ +--- +title: "Stance" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `model` | *str* | :heavy_check_mark: | N/A | +| `stance` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/stop.md b/docs/components/stop.mdx similarity index 91% rename from docs/components/stop.md rename to docs/components/stop.mdx index c36d9108..0f147f6e 100644 --- a/docs/components/stop.md +++ b/docs/components/stop.mdx @@ -1,4 +1,6 @@ -# Stop +--- +title: "Stop" +--- Stop sequences (up to 4) diff --git a/docs/components/stopservertoolswhencondition.mdx b/docs/components/stopservertoolswhencondition.mdx new file mode 100644 index 00000000..34d7863a --- /dev/null +++ b/docs/components/stopservertoolswhencondition.mdx @@ -0,0 +1,39 @@ +--- +title: "StopServerToolsWhenCondition" +--- + +A single condition that, when met, halts the server-tool agent loop. + + +## Supported Types + +### `components.StopServerToolsWhenFinishReasonIs` + +```python +value: components.StopServerToolsWhenFinishReasonIs = /* values here */ +``` + +### `components.StopServerToolsWhenHasToolCall` + +```python +value: components.StopServerToolsWhenHasToolCall = /* values here */ +``` + +### `components.StopServerToolsWhenMaxCost` + +```python +value: components.StopServerToolsWhenMaxCost = /* values here */ +``` + +### `components.StopServerToolsWhenMaxTokensUsed` + +```python +value: components.StopServerToolsWhenMaxTokensUsed = /* values here */ +``` + +### `components.StopServerToolsWhenStepCountIs` + +```python +value: components.StopServerToolsWhenStepCountIs = /* values here */ +``` + diff --git a/docs/components/stopservertoolswhenfinishreasonis.mdx b/docs/components/stopservertoolswhenfinishreasonis.mdx new file mode 100644 index 00000000..ef2f143f --- /dev/null +++ b/docs/components/stopservertoolswhenfinishreasonis.mdx @@ -0,0 +1,13 @@ +--- +title: "StopServerToolsWhenFinishReasonIs" +--- + +Stop when the upstream model emits this finish reason (e.g. `length`). + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `reason` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.StopServerToolsWhenFinishReasonIsType](../components/stopservertoolswhenfinishreasonistype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/stopservertoolswhenfinishreasonistype.mdx b/docs/components/stopservertoolswhenfinishreasonistype.mdx new file mode 100644 index 00000000..e54b4fe3 --- /dev/null +++ b/docs/components/stopservertoolswhenfinishreasonistype.mdx @@ -0,0 +1,15 @@ +--- +title: "StopServerToolsWhenFinishReasonIsType" +--- + +## Example Usage + +```python +from openrouter.components import StopServerToolsWhenFinishReasonIsType +value: StopServerToolsWhenFinishReasonIsType = "finish_reason_is" +``` + + +## Values + +- `"finish_reason_is"` diff --git a/docs/components/stopservertoolswhenhastoolcall.mdx b/docs/components/stopservertoolswhenhastoolcall.mdx new file mode 100644 index 00000000..890af332 --- /dev/null +++ b/docs/components/stopservertoolswhenhastoolcall.mdx @@ -0,0 +1,13 @@ +--- +title: "StopServerToolsWhenHasToolCall" +--- + +Stop after a tool with this name has been called. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `tool_name` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.StopServerToolsWhenHasToolCallType](../components/stopservertoolswhenhastoolcalltype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/stopservertoolswhenhastoolcalltype.mdx b/docs/components/stopservertoolswhenhastoolcalltype.mdx new file mode 100644 index 00000000..9b1a468c --- /dev/null +++ b/docs/components/stopservertoolswhenhastoolcalltype.mdx @@ -0,0 +1,15 @@ +--- +title: "StopServerToolsWhenHasToolCallType" +--- + +## Example Usage + +```python +from openrouter.components import StopServerToolsWhenHasToolCallType +value: StopServerToolsWhenHasToolCallType = "has_tool_call" +``` + + +## Values + +- `"has_tool_call"` diff --git a/docs/components/stopservertoolswhenmaxcost.mdx b/docs/components/stopservertoolswhenmaxcost.mdx new file mode 100644 index 00000000..11ec5264 --- /dev/null +++ b/docs/components/stopservertoolswhenmaxcost.mdx @@ -0,0 +1,13 @@ +--- +title: "StopServerToolsWhenMaxCost" +--- + +Stop once cumulative cost across the loop exceeds this dollar threshold. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `max_cost_in_dollars` | *float* | :heavy_check_mark: | N/A | +| `type` | [components.StopServerToolsWhenMaxCostType](../components/stopservertoolswhenmaxcosttype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/stopservertoolswhenmaxcosttype.mdx b/docs/components/stopservertoolswhenmaxcosttype.mdx new file mode 100644 index 00000000..34953abc --- /dev/null +++ b/docs/components/stopservertoolswhenmaxcosttype.mdx @@ -0,0 +1,15 @@ +--- +title: "StopServerToolsWhenMaxCostType" +--- + +## Example Usage + +```python +from openrouter.components import StopServerToolsWhenMaxCostType +value: StopServerToolsWhenMaxCostType = "max_cost" +``` + + +## Values + +- `"max_cost"` diff --git a/docs/components/stopservertoolswhenmaxtokensused.mdx b/docs/components/stopservertoolswhenmaxtokensused.mdx new file mode 100644 index 00000000..33d4618b --- /dev/null +++ b/docs/components/stopservertoolswhenmaxtokensused.mdx @@ -0,0 +1,13 @@ +--- +title: "StopServerToolsWhenMaxTokensUsed" +--- + +Stop once cumulative token usage across the loop exceeds this threshold. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `max_tokens` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.StopServerToolsWhenMaxTokensUsedType](../components/stopservertoolswhenmaxtokensusedtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/stopservertoolswhenmaxtokensusedtype.mdx b/docs/components/stopservertoolswhenmaxtokensusedtype.mdx new file mode 100644 index 00000000..3818d9bf --- /dev/null +++ b/docs/components/stopservertoolswhenmaxtokensusedtype.mdx @@ -0,0 +1,15 @@ +--- +title: "StopServerToolsWhenMaxTokensUsedType" +--- + +## Example Usage + +```python +from openrouter.components import StopServerToolsWhenMaxTokensUsedType +value: StopServerToolsWhenMaxTokensUsedType = "max_tokens_used" +``` + + +## Values + +- `"max_tokens_used"` diff --git a/docs/components/stopservertoolswhenstepcountis.mdx b/docs/components/stopservertoolswhenstepcountis.mdx new file mode 100644 index 00000000..0544b66f --- /dev/null +++ b/docs/components/stopservertoolswhenstepcountis.mdx @@ -0,0 +1,13 @@ +--- +title: "StopServerToolsWhenStepCountIs" +--- + +Stop after the agent loop has executed this many steps. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `step_count` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.StopServerToolsWhenStepCountIsType](../components/stopservertoolswhenstepcountistype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/stopservertoolswhenstepcountistype.mdx b/docs/components/stopservertoolswhenstepcountistype.mdx new file mode 100644 index 00000000..709393f4 --- /dev/null +++ b/docs/components/stopservertoolswhenstepcountistype.mdx @@ -0,0 +1,15 @@ +--- +title: "StopServerToolsWhenStepCountIsType" +--- + +## Example Usage + +```python +from openrouter.components import StopServerToolsWhenStepCountIsType +value: StopServerToolsWhenStepCountIsType = "step_count_is" +``` + + +## Values + +- `"step_count_is"` diff --git a/docs/components/storedprompttemplate.mdx b/docs/components/storedprompttemplate.mdx new file mode 100644 index 00000000..a9461bc3 --- /dev/null +++ b/docs/components/storedprompttemplate.mdx @@ -0,0 +1,10 @@ +--- +title: "StoredPromptTemplate" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | N/A | +| `variables` | Dict[str, [components.Variables](../components/variables.mdx)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/streamevents.mdx b/docs/components/streamevents.mdx new file mode 100644 index 00000000..149400c4 --- /dev/null +++ b/docs/components/streamevents.mdx @@ -0,0 +1,273 @@ +--- +title: "StreamEvents" +--- + +Union of all possible event types emitted during response streaming + + +## Supported Types + +### `components.ErrorEvent` + +```python +value: components.ErrorEvent = /* values here */ +``` + +### `components.ApplyPatchCallOperationDiffDeltaEvent` + +```python +value: components.ApplyPatchCallOperationDiffDeltaEvent = /* values here */ +``` + +### `components.ApplyPatchCallOperationDiffDoneEvent` + +```python +value: components.ApplyPatchCallOperationDiffDoneEvent = /* values here */ +``` + +### `components.StreamEventsResponseCompleted` + +```python +value: components.StreamEventsResponseCompleted = /* values here */ +``` + +### `components.ContentPartAddedEvent` + +```python +value: components.ContentPartAddedEvent = /* values here */ +``` + +### `components.ContentPartDoneEvent` + +```python +value: components.ContentPartDoneEvent = /* values here */ +``` + +### `components.OpenResponsesCreatedEvent` + +```python +value: components.OpenResponsesCreatedEvent = /* values here */ +``` + +### `components.CustomToolCallInputDeltaEvent` + +```python +value: components.CustomToolCallInputDeltaEvent = /* values here */ +``` + +### `components.CustomToolCallInputDoneEvent` + +```python +value: components.CustomToolCallInputDoneEvent = /* values here */ +``` + +### `components.DebugEvent` + +```python +value: components.DebugEvent = /* values here */ +``` + +### `components.StreamEventsResponseFailed` + +```python +value: components.StreamEventsResponseFailed = /* values here */ +``` + +### `components.FunctionCallArgsDeltaEvent` + +```python +value: components.FunctionCallArgsDeltaEvent = /* values here */ +``` + +### `components.FunctionCallArgsDoneEvent` + +```python +value: components.FunctionCallArgsDoneEvent = /* values here */ +``` + +### `components.FusionCallAnalysisCompletedEvent` + +```python +value: components.FusionCallAnalysisCompletedEvent = /* values here */ +``` + +### `components.FusionCallAnalysisInProgressEvent` + +```python +value: components.FusionCallAnalysisInProgressEvent = /* values here */ +``` + +### `components.FusionCallCompletedEvent` + +```python +value: components.FusionCallCompletedEvent = /* values here */ +``` + +### `components.FusionCallInProgressEvent` + +```python +value: components.FusionCallInProgressEvent = /* values here */ +``` + +### `components.FusionCallPanelAddedEvent` + +```python +value: components.FusionCallPanelAddedEvent = /* values here */ +``` + +### `components.FusionCallPanelCompletedEvent` + +```python +value: components.FusionCallPanelCompletedEvent = /* values here */ +``` + +### `components.FusionCallPanelDeltaEvent` + +```python +value: components.FusionCallPanelDeltaEvent = /* values here */ +``` + +### `components.FusionCallPanelFailedEvent` + +```python +value: components.FusionCallPanelFailedEvent = /* values here */ +``` + +### `components.FusionCallPanelReasoningDeltaEvent` + +```python +value: components.FusionCallPanelReasoningDeltaEvent = /* values here */ +``` + +### `components.ImageGenCallCompletedEvent` + +```python +value: components.ImageGenCallCompletedEvent = /* values here */ +``` + +### `components.ImageGenCallGeneratingEvent` + +```python +value: components.ImageGenCallGeneratingEvent = /* values here */ +``` + +### `components.ImageGenCallInProgressEvent` + +```python +value: components.ImageGenCallInProgressEvent = /* values here */ +``` + +### `components.ImageGenCallPartialImageEvent` + +```python +value: components.ImageGenCallPartialImageEvent = /* values here */ +``` + +### `components.OpenResponsesInProgressEvent` + +```python +value: components.OpenResponsesInProgressEvent = /* values here */ +``` + +### `components.StreamEventsResponseIncomplete` + +```python +value: components.StreamEventsResponseIncomplete = /* values here */ +``` + +### `components.StreamEventsResponseOutputItemAdded` + +```python +value: components.StreamEventsResponseOutputItemAdded = /* values here */ +``` + +### `components.StreamEventsResponseOutputItemDone` + +```python +value: components.StreamEventsResponseOutputItemDone = /* values here */ +``` + +### `components.AnnotationAddedEvent` + +```python +value: components.AnnotationAddedEvent = /* values here */ +``` + +### `components.TextDeltaEvent` + +```python +value: components.TextDeltaEvent = /* values here */ +``` + +### `components.TextDoneEvent` + +```python +value: components.TextDoneEvent = /* values here */ +``` + +### `components.ReasoningSummaryPartAddedEvent` + +```python +value: components.ReasoningSummaryPartAddedEvent = /* values here */ +``` + +### `components.ReasoningSummaryPartDoneEvent` + +```python +value: components.ReasoningSummaryPartDoneEvent = /* values here */ +``` + +### `components.ReasoningSummaryTextDeltaEvent` + +```python +value: components.ReasoningSummaryTextDeltaEvent = /* values here */ +``` + +### `components.ReasoningSummaryTextDoneEvent` + +```python +value: components.ReasoningSummaryTextDoneEvent = /* values here */ +``` + +### `components.ReasoningDeltaEvent` + +```python +value: components.ReasoningDeltaEvent = /* values here */ +``` + +### `components.ReasoningDoneEvent` + +```python +value: components.ReasoningDoneEvent = /* values here */ +``` + +### `components.RefusalDeltaEvent` + +```python +value: components.RefusalDeltaEvent = /* values here */ +``` + +### `components.RefusalDoneEvent` + +```python +value: components.RefusalDoneEvent = /* values here */ +``` + +### `components.WebSearchCallCompletedEvent` + +```python +value: components.WebSearchCallCompletedEvent = /* values here */ +``` + +### `components.WebSearchCallInProgressEvent` + +```python +value: components.WebSearchCallInProgressEvent = /* values here */ +``` + +### `components.WebSearchCallSearchingEvent` + +```python +value: components.WebSearchCallSearchingEvent = /* values here */ +``` + diff --git a/docs/components/streameventsresponsecompleted.mdx b/docs/components/streameventsresponsecompleted.mdx new file mode 100644 index 00000000..cd399518 --- /dev/null +++ b/docs/components/streameventsresponsecompleted.mdx @@ -0,0 +1,14 @@ +--- +title: "StreamEventsResponseCompleted" +--- + +Event emitted when a response has completed successfully + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `response` | [components.OpenResponsesResult](../components/openresponsesresult.mdx) | :heavy_check_mark: | Complete non-streaming response from the Responses API | \{
"created_at": 1704067200,
"error": null,
"id": "resp-abc123",
"incomplete_details": null,
"instructions": null,
"max_output_tokens": null,
"metadata": null,
"model": "gpt-4",
"object": "response",
"output": [
\{
"content": [
\{
"annotations": [],
"text": "Hello! How can I help you today?",
"type": "output_text"
}
],
"id": "msg-abc123",
"role": "assistant",
"status": "completed",
"type": "message"
}
],
"parallel_tool_calls": true,
"status": "completed",
"temperature": null,
"tool_choice": "auto",
"tools": [],
"top_p": null,
"usage": \{
"input_tokens": 10,
"input_tokens_details": \{
"cached_tokens": 0
},
"output_tokens": 25,
"output_tokens_details": \{
"reasoning_tokens": 0
},
"total_tokens": 35
}
} | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | | +| `type` | [components.StreamEventsResponseCompletedType](../components/streameventsresponsecompletedtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/streameventsresponsecompletedtype.mdx b/docs/components/streameventsresponsecompletedtype.mdx new file mode 100644 index 00000000..1854d017 --- /dev/null +++ b/docs/components/streameventsresponsecompletedtype.mdx @@ -0,0 +1,15 @@ +--- +title: "StreamEventsResponseCompletedType" +--- + +## Example Usage + +```python +from openrouter.components import StreamEventsResponseCompletedType +value: StreamEventsResponseCompletedType = "response.completed" +``` + + +## Values + +- `"response.completed"` diff --git a/docs/components/streameventsresponsefailed.mdx b/docs/components/streameventsresponsefailed.mdx new file mode 100644 index 00000000..4c53cdcc --- /dev/null +++ b/docs/components/streameventsresponsefailed.mdx @@ -0,0 +1,14 @@ +--- +title: "StreamEventsResponseFailed" +--- + +Event emitted when a response has failed + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `response` | [components.OpenResponsesResult](../components/openresponsesresult.mdx) | :heavy_check_mark: | Complete non-streaming response from the Responses API | \{
"created_at": 1704067200,
"error": null,
"id": "resp-abc123",
"incomplete_details": null,
"instructions": null,
"max_output_tokens": null,
"metadata": null,
"model": "gpt-4",
"object": "response",
"output": [
\{
"content": [
\{
"annotations": [],
"text": "Hello! How can I help you today?",
"type": "output_text"
}
],
"id": "msg-abc123",
"role": "assistant",
"status": "completed",
"type": "message"
}
],
"parallel_tool_calls": true,
"status": "completed",
"temperature": null,
"tool_choice": "auto",
"tools": [],
"top_p": null,
"usage": \{
"input_tokens": 10,
"input_tokens_details": \{
"cached_tokens": 0
},
"output_tokens": 25,
"output_tokens_details": \{
"reasoning_tokens": 0
},
"total_tokens": 35
}
} | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | | +| `type` | [components.StreamEventsResponseFailedType](../components/streameventsresponsefailedtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/streameventsresponsefailedtype.mdx b/docs/components/streameventsresponsefailedtype.mdx new file mode 100644 index 00000000..cbec95a0 --- /dev/null +++ b/docs/components/streameventsresponsefailedtype.mdx @@ -0,0 +1,15 @@ +--- +title: "StreamEventsResponseFailedType" +--- + +## Example Usage + +```python +from openrouter.components import StreamEventsResponseFailedType +value: StreamEventsResponseFailedType = "response.failed" +``` + + +## Values + +- `"response.failed"` diff --git a/docs/components/streameventsresponseincomplete.mdx b/docs/components/streameventsresponseincomplete.mdx new file mode 100644 index 00000000..b493c3ea --- /dev/null +++ b/docs/components/streameventsresponseincomplete.mdx @@ -0,0 +1,14 @@ +--- +title: "StreamEventsResponseIncomplete" +--- + +Event emitted when a response is incomplete + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `response` | [components.OpenResponsesResult](../components/openresponsesresult.mdx) | :heavy_check_mark: | Complete non-streaming response from the Responses API | \{
"created_at": 1704067200,
"error": null,
"id": "resp-abc123",
"incomplete_details": null,
"instructions": null,
"max_output_tokens": null,
"metadata": null,
"model": "gpt-4",
"object": "response",
"output": [
\{
"content": [
\{
"annotations": [],
"text": "Hello! How can I help you today?",
"type": "output_text"
}
],
"id": "msg-abc123",
"role": "assistant",
"status": "completed",
"type": "message"
}
],
"parallel_tool_calls": true,
"status": "completed",
"temperature": null,
"tool_choice": "auto",
"tools": [],
"top_p": null,
"usage": \{
"input_tokens": 10,
"input_tokens_details": \{
"cached_tokens": 0
},
"output_tokens": 25,
"output_tokens_details": \{
"reasoning_tokens": 0
},
"total_tokens": 35
}
} | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | | +| `type` | [components.StreamEventsResponseIncompleteType](../components/streameventsresponseincompletetype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/streameventsresponseincompletetype.mdx b/docs/components/streameventsresponseincompletetype.mdx new file mode 100644 index 00000000..1d886a31 --- /dev/null +++ b/docs/components/streameventsresponseincompletetype.mdx @@ -0,0 +1,15 @@ +--- +title: "StreamEventsResponseIncompleteType" +--- + +## Example Usage + +```python +from openrouter.components import StreamEventsResponseIncompleteType +value: StreamEventsResponseIncompleteType = "response.incomplete" +``` + + +## Values + +- `"response.incomplete"` diff --git a/docs/components/streameventsresponseoutputitemadded.mdx b/docs/components/streameventsresponseoutputitemadded.mdx new file mode 100644 index 00000000..8121198a --- /dev/null +++ b/docs/components/streameventsresponseoutputitemadded.mdx @@ -0,0 +1,15 @@ +--- +title: "StreamEventsResponseOutputItemAdded" +--- + +Event emitted when a new output item is added to the response + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `item` | [components.OutputItems](../components/outputitems.mdx) | :heavy_check_mark: | An output item from the response | \{
"content": [
\{
"text": "Hello! How can I help you today?",
"type": "output_text"
}
],
"id": "msg-abc123",
"role": "assistant",
"status": "completed",
"type": "message"
} | +| `output_index` | *int* | :heavy_check_mark: | N/A | | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | | +| `type` | [components.StreamEventsResponseOutputItemAddedType](../components/streameventsresponseoutputitemaddedtype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/streameventsresponseoutputitemaddedtype.mdx b/docs/components/streameventsresponseoutputitemaddedtype.mdx new file mode 100644 index 00000000..acf8df90 --- /dev/null +++ b/docs/components/streameventsresponseoutputitemaddedtype.mdx @@ -0,0 +1,15 @@ +--- +title: "StreamEventsResponseOutputItemAddedType" +--- + +## Example Usage + +```python +from openrouter.components import StreamEventsResponseOutputItemAddedType +value: StreamEventsResponseOutputItemAddedType = "response.output_item.added" +``` + + +## Values + +- `"response.output_item.added"` diff --git a/docs/components/streameventsresponseoutputitemdone.mdx b/docs/components/streameventsresponseoutputitemdone.mdx new file mode 100644 index 00000000..5d02fd8e --- /dev/null +++ b/docs/components/streameventsresponseoutputitemdone.mdx @@ -0,0 +1,15 @@ +--- +title: "StreamEventsResponseOutputItemDone" +--- + +Event emitted when an output item is complete + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `item` | [components.OutputItems](../components/outputitems.mdx) | :heavy_check_mark: | An output item from the response | \{
"content": [
\{
"text": "Hello! How can I help you today?",
"type": "output_text"
}
],
"id": "msg-abc123",
"role": "assistant",
"status": "completed",
"type": "message"
} | +| `output_index` | *int* | :heavy_check_mark: | N/A | | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | | +| `type` | [components.StreamEventsResponseOutputItemDoneType](../components/streameventsresponseoutputitemdonetype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/streameventsresponseoutputitemdonetype.mdx b/docs/components/streameventsresponseoutputitemdonetype.mdx new file mode 100644 index 00000000..7671de0f --- /dev/null +++ b/docs/components/streameventsresponseoutputitemdonetype.mdx @@ -0,0 +1,15 @@ +--- +title: "StreamEventsResponseOutputItemDoneType" +--- + +## Example Usage + +```python +from openrouter.components import StreamEventsResponseOutputItemDoneType +value: StreamEventsResponseOutputItemDoneType = "response.output_item.done" +``` + + +## Values + +- `"response.output_item.done"` diff --git a/docs/components/streamlogprob.mdx b/docs/components/streamlogprob.mdx new file mode 100644 index 00000000..39882464 --- /dev/null +++ b/docs/components/streamlogprob.mdx @@ -0,0 +1,15 @@ +--- +title: "StreamLogprob" +--- + +Log probability information for a token + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `bytes_` | List[*int*] | :heavy_minus_sign: | N/A | +| `logprob` | *float* | :heavy_check_mark: | N/A | +| `token` | *str* | :heavy_check_mark: | N/A | +| `top_logprobs` | List[[components.StreamLogprobTopLogprob](../components/streamlogprobtoplogprob.mdx)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/streamlogprobtoplogprob.mdx b/docs/components/streamlogprobtoplogprob.mdx new file mode 100644 index 00000000..972fa7f6 --- /dev/null +++ b/docs/components/streamlogprobtoplogprob.mdx @@ -0,0 +1,14 @@ +--- +title: "StreamLogprobTopLogprob" +--- + +Alternative token with its log probability + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `bytes_` | List[*int*] | :heavy_minus_sign: | N/A | +| `logprob` | *Optional[float]* | :heavy_minus_sign: | N/A | +| `token` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/sttinputaudio.mdx b/docs/components/sttinputaudio.mdx new file mode 100644 index 00000000..70a2660b --- /dev/null +++ b/docs/components/sttinputaudio.mdx @@ -0,0 +1,13 @@ +--- +title: "STTInputAudio" +--- + +Base64-encoded audio to transcribe + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `data` | *str* | :heavy_check_mark: | Base64-encoded audio data (raw bytes, not a data URI) | +| `format_` | *str* | :heavy_check_mark: | Audio format (e.g., wav, mp3, flac, m4a, ogg, webm, aac). Supported formats vary by provider. | \ No newline at end of file diff --git a/docs/components/sttrequest.mdx b/docs/components/sttrequest.mdx new file mode 100644 index 00000000..198ca47d --- /dev/null +++ b/docs/components/sttrequest.mdx @@ -0,0 +1,16 @@ +--- +title: "STTRequest" +--- + +Speech-to-text request input. Accepts a JSON body with input_audio containing base64-encoded audio. + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `input_audio` | [components.STTInputAudio](../components/sttinputaudio.mdx) | :heavy_check_mark: | Base64-encoded audio to transcribe | \{
"data": "UklGRiQA...",
"format": "wav"
} | +| `language` | *Optional[str]* | :heavy_minus_sign: | ISO-639-1 language code (e.g., "en", "ja"). Auto-detected if omitted. | en | +| `model` | *str* | :heavy_check_mark: | STT model identifier | openai/whisper-large-v3 | +| `provider` | [Optional[components.STTRequestProvider]](../components/sttrequestprovider.mdx) | :heavy_minus_sign: | Provider-specific passthrough configuration | | +| `temperature` | *Optional[float]* | :heavy_minus_sign: | Sampling temperature for transcription | 0 | \ No newline at end of file diff --git a/docs/components/sttrequestprovider.mdx b/docs/components/sttrequestprovider.mdx new file mode 100644 index 00000000..5eebff08 --- /dev/null +++ b/docs/components/sttrequestprovider.mdx @@ -0,0 +1,12 @@ +--- +title: "STTRequestProvider" +--- + +Provider-specific passthrough configuration + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `options` | [Optional[components.ProviderOptions]](../components/provideroptions.mdx) | :heavy_minus_sign: | Provider-specific options keyed by provider slug. Only options for the matched provider are forwarded; the rest are ignored. Unrecognized keys are silently dropped. | \{
"openai": \{
"max_tokens": 1000
}
} | \ No newline at end of file diff --git a/docs/components/sttresponse.mdx b/docs/components/sttresponse.mdx new file mode 100644 index 00000000..9a610145 --- /dev/null +++ b/docs/components/sttresponse.mdx @@ -0,0 +1,13 @@ +--- +title: "STTResponse" +--- + +STT response containing transcribed text and optional usage statistics + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `text` | *str* | :heavy_check_mark: | The transcribed text | Hello, this is a test of OpenAI speech-to-text transcription. The weather is sunny today and the temperature is around 72 degrees. | +| `usage` | [Optional[components.STTUsage]](../components/sttusage.mdx) | :heavy_minus_sign: | Aggregated usage statistics for the request | \{
"cost": 0.000508,
"input_tokens": 83,
"output_tokens": 30,
"seconds": 9.2,
"total_tokens": 113
} | \ No newline at end of file diff --git a/docs/components/sttusage.mdx b/docs/components/sttusage.mdx new file mode 100644 index 00000000..f0b56839 --- /dev/null +++ b/docs/components/sttusage.mdx @@ -0,0 +1,16 @@ +--- +title: "STTUsage" +--- + +Aggregated usage statistics for the request + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | +| `cost` | *Optional[float]* | :heavy_minus_sign: | Total cost of the request in USD | 0.000508 | +| `input_tokens` | *Optional[int]* | :heavy_minus_sign: | Number of input tokens billed for this request | 83 | +| `output_tokens` | *Optional[int]* | :heavy_minus_sign: | Number of output tokens generated | 30 | +| `seconds` | *Optional[float]* | :heavy_minus_sign: | Duration of the input audio in seconds | 9.2 | +| `total_tokens` | *Optional[int]* | :heavy_minus_sign: | Total number of tokens used (input + output) | 113 | \ No newline at end of file diff --git a/docs/components/subagentnestedtool.mdx b/docs/components/subagentnestedtool.mdx new file mode 100644 index 00000000..f8c149bf --- /dev/null +++ b/docs/components/subagentnestedtool.mdx @@ -0,0 +1,14 @@ +--- +title: "SubagentNestedTool" +--- + +A tool made available to the subagent. Only OpenRouter server tools (e.g. openrouter:web_search) are supported; function tools are rejected because the worker has no way to execute them. The subagent tool may not list itself. + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `parameters` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | | +| `type` | *str* | :heavy_check_mark: | N/A | | +| `__pydantic_extra__` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | \{
"type": "openrouter:web_search"
} | \ No newline at end of file diff --git a/docs/components/subagentreasoning.mdx b/docs/components/subagentreasoning.mdx new file mode 100644 index 00000000..17ee212d --- /dev/null +++ b/docs/components/subagentreasoning.mdx @@ -0,0 +1,13 @@ +--- +title: "SubagentReasoning" +--- + +Reasoning configuration forwarded to the subagent call. Use this to control reasoning effort and token budget for models that support extended thinking. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | +| `effort` | [Optional[components.SubagentReasoningEffort]](../components/subagentreasoningeffort.mdx) | :heavy_minus_sign: | Reasoning effort level for the subagent call. | +| `max_tokens` | *Optional[int]* | :heavy_minus_sign: | Maximum number of reasoning tokens the subagent may use. Accepted and validated but not yet forwarded to the subagent call. | \ No newline at end of file diff --git a/docs/components/subagentreasoningeffort.mdx b/docs/components/subagentreasoningeffort.mdx new file mode 100644 index 00000000..6ff0d51d --- /dev/null +++ b/docs/components/subagentreasoningeffort.mdx @@ -0,0 +1,27 @@ +--- +title: "SubagentReasoningEffort" +--- + +Reasoning effort level for the subagent call. + +## Example Usage + +```python +from openrouter.components import SubagentReasoningEffort + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: SubagentReasoningEffort = "max" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"max"` +- `"xhigh"` +- `"high"` +- `"medium"` +- `"low"` +- `"minimal"` +- `"none"` diff --git a/docs/components/subagentservertoolconfig.mdx b/docs/components/subagentservertoolconfig.mdx new file mode 100644 index 00000000..3ce20c0c --- /dev/null +++ b/docs/components/subagentservertoolconfig.mdx @@ -0,0 +1,18 @@ +--- +title: "SubagentServerToolConfig" +--- + +Configuration for the openrouter:subagent server tool. + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `instructions` | *Optional[str]* | :heavy_minus_sign: | System instructions for the subagent. When omitted, the subagent responds with no system prompt of its own. | You are a fast, focused worker. Complete the task exactly as described. | +| `max_completion_tokens` | *Optional[int]* | :heavy_minus_sign: | Maximum number of output tokens (including reasoning) the subagent may produce. When omitted, the provider's default applies. | 2048 | +| `max_tool_calls` | *Optional[int]* | :heavy_minus_sign: | Maximum number of tool-calling steps the subagent may take during its agentic loop. Capped at 25. Only relevant when the subagent is given tools. Accepted and validated but not yet enforced on the subagent call. | 5 | +| `model` | *Optional[str]* | :heavy_minus_sign: | Slug of the model that executes delegated tasks (any OpenRouter model). Typically a smaller, cheaper, faster model than the one delegating. When omitted, the model from the outer API request is used. The subagent tool itself cannot be the subagent model. | ~anthropic/claude-haiku-latest | +| `reasoning` | [Optional[components.SubagentReasoning]](../components/subagentreasoning.mdx) | :heavy_minus_sign: | Reasoning configuration forwarded to the subagent call. Use this to control reasoning effort and token budget for models that support extended thinking. | \{
"effort": "low"
} | +| `temperature` | *Optional[float]* | :heavy_minus_sign: | Sampling temperature forwarded to the subagent call. When omitted, the provider's default applies. | 0.7 | +| `tools` | List[[components.SubagentNestedTool](../components/subagentnestedtool.mdx)] | :heavy_minus_sign: | Tools the subagent may use while executing a delegated task. The subagent runs as an agentic sub-agent over these tools, then returns its outcome. Only OpenRouter server tools are supported — function tools are rejected — and the list must not include the subagent tool itself. | | \ No newline at end of file diff --git a/docs/components/subagentservertoolopenrouter.mdx b/docs/components/subagentservertoolopenrouter.mdx new file mode 100644 index 00000000..c50f5bf8 --- /dev/null +++ b/docs/components/subagentservertoolopenrouter.mdx @@ -0,0 +1,13 @@ +--- +title: "SubagentServerToolOpenRouter" +--- + +OpenRouter built-in server tool: delegates self-contained tasks to a smaller, cheaper, faster worker model (any OpenRouter model) mid-generation and returns its outcome. The worker may run as a sub-agent with its own tools. + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `parameters` | [Optional[components.SubagentServerToolConfig]](../components/subagentservertoolconfig.mdx) | :heavy_minus_sign: | Configuration for the openrouter:subagent server tool. | \{
"model": "~anthropic/claude-haiku-latest"
} | +| `type` | [components.SubagentServerToolOpenRouterType](../components/subagentservertoolopenroutertype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/subagentservertoolopenroutertype.mdx b/docs/components/subagentservertoolopenroutertype.mdx new file mode 100644 index 00000000..a93cd736 --- /dev/null +++ b/docs/components/subagentservertoolopenroutertype.mdx @@ -0,0 +1,15 @@ +--- +title: "SubagentServerToolOpenRouterType" +--- + +## Example Usage + +```python +from openrouter.components import SubagentServerToolOpenRouterType +value: SubagentServerToolOpenRouterType = "openrouter:subagent" +``` + + +## Values + +- `"openrouter:subagent"` diff --git a/docs/components/supportedaspectratio.mdx b/docs/components/supportedaspectratio.mdx new file mode 100644 index 00000000..ae925e49 --- /dev/null +++ b/docs/components/supportedaspectratio.mdx @@ -0,0 +1,27 @@ +--- +title: "SupportedAspectRatio" +--- + +## Example Usage + +```python +from openrouter.components import SupportedAspectRatio + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: SupportedAspectRatio = "16:9" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"16:9"` +- `"9:16"` +- `"1:1"` +- `"4:3"` +- `"3:4"` +- `"3:2"` +- `"2:3"` +- `"21:9"` +- `"9:21"` diff --git a/docs/components/supportedframeimage.mdx b/docs/components/supportedframeimage.mdx new file mode 100644 index 00000000..64a19c18 --- /dev/null +++ b/docs/components/supportedframeimage.mdx @@ -0,0 +1,20 @@ +--- +title: "SupportedFrameImage" +--- + +## Example Usage + +```python +from openrouter.components import SupportedFrameImage + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: SupportedFrameImage = "first_frame" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"first_frame"` +- `"last_frame"` diff --git a/docs/components/supportedresolution.mdx b/docs/components/supportedresolution.mdx new file mode 100644 index 00000000..ea274d2a --- /dev/null +++ b/docs/components/supportedresolution.mdx @@ -0,0 +1,24 @@ +--- +title: "SupportedResolution" +--- + +## Example Usage + +```python +from openrouter.components import SupportedResolution + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: SupportedResolution = "480p" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"480p"` +- `"720p"` +- `"1080p"` +- `"1K"` +- `"2K"` +- `"4K"` diff --git a/docs/components/supportedsize.mdx b/docs/components/supportedsize.mdx new file mode 100644 index 00000000..e221cb32 --- /dev/null +++ b/docs/components/supportedsize.mdx @@ -0,0 +1,54 @@ +--- +title: "SupportedSize" +--- + +## Example Usage + +```python +from openrouter.components import SupportedSize + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: SupportedSize = "480x480" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"480x480"` +- `"480x640"` +- `"480x720"` +- `"480x854"` +- `"480x1120"` +- `"640x480"` +- `"720x480"` +- `"720x720"` +- `"720x960"` +- `"720x1080"` +- `"720x1280"` +- `"720x1680"` +- `"854x480"` +- `"960x720"` +- `"1080x720"` +- `"1080x1080"` +- `"1080x1440"` +- `"1080x1620"` +- `"1080x1920"` +- `"1080x2520"` +- `"1120x480"` +- `"1280x720"` +- `"1440x1080"` +- `"1620x1080"` +- `"1680x720"` +- `"1920x1080"` +- `"2160x2160"` +- `"2160x2880"` +- `"2160x3240"` +- `"2160x3840"` +- `"2160x5040"` +- `"2520x1080"` +- `"2880x2160"` +- `"3240x2160"` +- `"3840x2160"` +- `"5040x2160"` diff --git a/docs/components/syntax.mdx b/docs/components/syntax.mdx new file mode 100644 index 00000000..62827a82 --- /dev/null +++ b/docs/components/syntax.mdx @@ -0,0 +1,20 @@ +--- +title: "Syntax" +--- + +## Example Usage + +```python +from openrouter.components import Syntax + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Syntax = "lark" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"lark"` +- `"regex"` diff --git a/docs/components/system.mdx b/docs/components/system.mdx new file mode 100644 index 00000000..dbe433a6 --- /dev/null +++ b/docs/components/system.mdx @@ -0,0 +1,18 @@ +--- +title: "System" +--- + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `List[components.AnthropicTextBlockParam]` + +```python +value: List[components.AnthropicTextBlockParam] = /* values here */ +``` + diff --git a/docs/components/taskbudget.mdx b/docs/components/taskbudget.mdx new file mode 100644 index 00000000..c98814d6 --- /dev/null +++ b/docs/components/taskbudget.mdx @@ -0,0 +1,14 @@ +--- +title: "TaskBudget" +--- + +Task budget for an agentic turn. The model sees a countdown of remaining tokens and uses it to prioritize work and wind down gracefully. Advisory — does not enforce a hard cap. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | +| `remaining` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | +| `total` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.TypeTokens](../components/typetokens.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/taskclassificationitem.mdx b/docs/components/taskclassificationitem.mdx new file mode 100644 index 00000000..905d9090 --- /dev/null +++ b/docs/components/taskclassificationitem.mdx @@ -0,0 +1,16 @@ +--- +title: "TaskClassificationItem" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `category_token_share` | *float* | :heavy_check_mark: | Fraction of this classification's token volume within its macro-category (0–1). Sums to 1 across all classifications sharing the same `macro_category`. | 0.48 | +| `category_usage_share` | *float* | :heavy_check_mark: | Fraction of this classification's usage within its macro-category (0–1). Sums to 1 across all classifications sharing the same `macro_category`. | 0.51 | +| `display_name` | *str* | :heavy_check_mark: | Human-readable label for the classification. | Code Generation | +| `macro_category` | *str* | :heavy_check_mark: | Coarse grouping derived from the tag prefix: `code`, `data`, `agent`, or `general`. | code | +| `models` | List[[components.TaskClassificationModel](../components/taskclassificationmodel.mdx)] | :heavy_check_mark: | Top models for this classification by request volume, sorted descending. Each entry reports the model's share of this classification's requests and tokens. | | +| `tag` | *str* | :heavy_check_mark: | Classification tag identifier (e.g. `code:general_impl`, `agent:web_search`). | code:general_impl | +| `token_share` | *float* | :heavy_check_mark: | Fraction of classified sampled token volume (prompt + completion) attributed to this classification (0–1). The unclassified `other` bucket is excluded from the denominator. | 0.31 | +| `usage_share` | *float* | :heavy_check_mark: | Fraction of classified sampled requests attributed to this classification (0–1). The unclassified `other` bucket is excluded from the denominator. | 0.23 | \ No newline at end of file diff --git a/docs/components/taskclassificationmacrocategory.mdx b/docs/components/taskclassificationmacrocategory.mdx new file mode 100644 index 00000000..1f45abf4 --- /dev/null +++ b/docs/components/taskclassificationmacrocategory.mdx @@ -0,0 +1,12 @@ +--- +title: "TaskClassificationMacroCategory" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `key` | *str* | :heavy_check_mark: | Macro-category identifier. | code | +| `label` | *str* | :heavy_check_mark: | Human-readable label for the macro-category. | Code | +| `token_share` | *float* | :heavy_check_mark: | Combined token share of all classifications in this macro-category (0–1). | 0.52 | +| `usage_share` | *float* | :heavy_check_mark: | Combined usage share of all classifications in this macro-category (0–1). | 0.45 | \ No newline at end of file diff --git a/docs/components/taskclassificationmodel.mdx b/docs/components/taskclassificationmodel.mdx new file mode 100644 index 00000000..137c9bc4 --- /dev/null +++ b/docs/components/taskclassificationmodel.mdx @@ -0,0 +1,11 @@ +--- +title: "TaskClassificationModel" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | Model identifier (permaslug). | openai/gpt-4.1-mini | +| `tag_token_share` | *float* | :heavy_check_mark: | Fraction of this classification's sampled token volume attributed to this model (0–1). Sums to ≤1 across the returned models (only top-N are included and unattributed requests are excluded). | 0.75 | +| `tag_usage_share` | *float* | :heavy_check_mark: | Fraction of this classification's sampled requests attributed to this model (0–1). Sums to ≤1 across the returned models (only top-N are included and unattributed requests are excluded). | 0.55 | \ No newline at end of file diff --git a/docs/components/taskclassificationresponse.mdx b/docs/components/taskclassificationresponse.mdx new file mode 100644 index 00000000..40e0bc7f --- /dev/null +++ b/docs/components/taskclassificationresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "TaskClassificationResponse" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `data` | [components.TaskClassificationResponseData](../components/taskclassificationresponsedata.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/taskclassificationresponsedata.mdx b/docs/components/taskclassificationresponsedata.mdx new file mode 100644 index 00000000..a22f20ac --- /dev/null +++ b/docs/components/taskclassificationresponsedata.mdx @@ -0,0 +1,12 @@ +--- +title: "TaskClassificationResponseData" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `as_of` | *str* | :heavy_check_mark: | UTC date (YYYY-MM-DD) of the window upper bound (yesterday). Data is exclusive of the current incomplete UTC day. This is the expected latest date in the snapshot; it does not confirm data presence for that date. | 2026-06-17 | +| `classifications` | List[[components.TaskClassificationItem](../components/taskclassificationitem.mdx)] | :heavy_check_mark: | Per-task classification market-share data, sorted by usage_share descending. | | +| `macro_categories` | List[[components.TaskClassificationMacroCategory](../components/taskclassificationmacrocategory.mdx)] | :heavy_check_mark: | Aggregate market-share data per macro-category (code, data, agent, general). | | +| `window_days` | *int* | :heavy_check_mark: | Number of trailing days covered by this snapshot. | 7 | \ No newline at end of file diff --git a/docs/components/textdeltaevent.mdx b/docs/components/textdeltaevent.mdx new file mode 100644 index 00000000..8214536b --- /dev/null +++ b/docs/components/textdeltaevent.mdx @@ -0,0 +1,18 @@ +--- +title: "TextDeltaEvent" +--- + +Event emitted when a text delta is streamed + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `content_index` | *int* | :heavy_check_mark: | N/A | +| `delta` | *str* | :heavy_check_mark: | N/A | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `logprobs` | List[[components.StreamLogprob](../components/streamlogprob.mdx)] | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.TextDeltaEventType](../components/textdeltaeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/textdeltaeventtype.mdx b/docs/components/textdeltaeventtype.mdx new file mode 100644 index 00000000..13ece493 --- /dev/null +++ b/docs/components/textdeltaeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "TextDeltaEventType" +--- + +## Example Usage + +```python +from openrouter.components import TextDeltaEventType +value: TextDeltaEventType = "response.output_text.delta" +``` + + +## Values + +- `"response.output_text.delta"` diff --git a/docs/components/textdoneevent.mdx b/docs/components/textdoneevent.mdx new file mode 100644 index 00000000..d2d16600 --- /dev/null +++ b/docs/components/textdoneevent.mdx @@ -0,0 +1,18 @@ +--- +title: "TextDoneEvent" +--- + +Event emitted when text streaming is complete + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `content_index` | *int* | :heavy_check_mark: | N/A | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `logprobs` | List[[components.StreamLogprob](../components/streamlogprob.mdx)] | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `text` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.TextDoneEventType](../components/textdoneeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/textdoneeventtype.mdx b/docs/components/textdoneeventtype.mdx new file mode 100644 index 00000000..ce3ac0eb --- /dev/null +++ b/docs/components/textdoneeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "TextDoneEventType" +--- + +## Example Usage + +```python +from openrouter.components import TextDoneEventType +value: TextDoneEventType = "response.output_text.done" +``` + + +## Values + +- `"response.output_text.done"` diff --git a/docs/components/textextendedconfig.mdx b/docs/components/textextendedconfig.mdx new file mode 100644 index 00000000..04c08c1d --- /dev/null +++ b/docs/components/textextendedconfig.mdx @@ -0,0 +1,13 @@ +--- +title: "TextExtendedConfig" +--- + +Text output configuration including format and verbosity + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `format_` | [Optional[components.Formats]](../components/formats.mdx) | :heavy_minus_sign: | Text response format configuration | \{
"type": "text"
} | +| `verbosity` | [OptionalNullable[components.Verbosity]](../components/verbosity.mdx) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/components/thinking.mdx b/docs/components/thinking.mdx new file mode 100644 index 00000000..2a631dc9 --- /dev/null +++ b/docs/components/thinking.mdx @@ -0,0 +1,24 @@ +--- +title: "Thinking" +--- + +## Supported Types + +### `components.ThinkingEnabled` + +```python +value: components.ThinkingEnabled = /* values here */ +``` + +### `components.ThinkingDisabled` + +```python +value: components.ThinkingDisabled = /* values here */ +``` + +### `components.ThinkingAdaptive` + +```python +value: components.ThinkingAdaptive = /* values here */ +``` + diff --git a/docs/components/thinkingadaptive.mdx b/docs/components/thinkingadaptive.mdx new file mode 100644 index 00000000..970ce43c --- /dev/null +++ b/docs/components/thinkingadaptive.mdx @@ -0,0 +1,10 @@ +--- +title: "ThinkingAdaptive" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `display` | [OptionalNullable[components.AnthropicThinkingDisplay]](../components/anthropicthinkingdisplay.mdx) | :heavy_minus_sign: | N/A | summarized | +| `type` | [components.TypeAdaptive](../components/typeadaptive.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/thinkingdisabled.mdx b/docs/components/thinkingdisabled.mdx new file mode 100644 index 00000000..ef2829f6 --- /dev/null +++ b/docs/components/thinkingdisabled.mdx @@ -0,0 +1,9 @@ +--- +title: "ThinkingDisabled" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `type` | [components.TypeDisabled](../components/typedisabled.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/thinkingenabled.mdx b/docs/components/thinkingenabled.mdx new file mode 100644 index 00000000..533ba7c8 --- /dev/null +++ b/docs/components/thinkingenabled.mdx @@ -0,0 +1,11 @@ +--- +title: "ThinkingEnabled" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `budget_tokens` | *int* | :heavy_check_mark: | N/A | | +| `display` | [OptionalNullable[components.AnthropicThinkingDisplay]](../components/anthropicthinkingdisplay.mdx) | :heavy_minus_sign: | N/A | summarized | +| `type` | [components.TypeEnabled](../components/typeenabled.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/timings.mdx b/docs/components/timings.mdx new file mode 100644 index 00000000..8d52bfae --- /dev/null +++ b/docs/components/timings.mdx @@ -0,0 +1,11 @@ +--- +title: "Timings" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------ | ------------------------------------------ | ------------------------------------------ | ------------------------------------------ | +| `epoch_ms` | *int* | :heavy_check_mark: | N/A | +| `event` | [components.Event](../components/event.mdx) | :heavy_check_mark: | N/A | +| `start_ms` | *int* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/tokenizer.md b/docs/components/tokenizer.md deleted file mode 100644 index 3811d6ed..00000000 --- a/docs/components/tokenizer.md +++ /dev/null @@ -1,29 +0,0 @@ -# Tokenizer - -Tokenizer type used by the model - - -## Values - -| Name | Value | -| ----------- | ----------- | -| `ROUTER` | Router | -| `MEDIA` | Media | -| `OTHER` | Other | -| `GPT` | GPT | -| `CLAUDE` | Claude | -| `GEMINI` | Gemini | -| `GEMMA` | Gemma | -| `GROK` | Grok | -| `COHERE` | Cohere | -| `NOVA` | Nova | -| `QWEN` | Qwen | -| `YI` | Yi | -| `DEEP_SEEK` | DeepSeek | -| `MISTRAL` | Mistral | -| `LLAMA2` | Llama2 | -| `LLAMA3` | Llama3 | -| `LLAMA4` | Llama4 | -| `PA_LM` | PaLM | -| `RWKV` | RWKV | -| `QWEN3` | Qwen3 | \ No newline at end of file diff --git a/docs/components/tokenizer.mdx b/docs/components/tokenizer.mdx new file mode 100644 index 00000000..54a76270 --- /dev/null +++ b/docs/components/tokenizer.mdx @@ -0,0 +1,40 @@ +--- +title: "Tokenizer" +--- + +Tokenizer type used by the model + +## Example Usage + +```python +from openrouter.components import Tokenizer + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Tokenizer = "Router" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"Router"` +- `"Media"` +- `"Other"` +- `"GPT"` +- `"Claude"` +- `"Gemini"` +- `"Gemma"` +- `"Grok"` +- `"Cohere"` +- `"Nova"` +- `"Qwen"` +- `"Yi"` +- `"DeepSeek"` +- `"Mistral"` +- `"Llama2"` +- `"Llama3"` +- `"Llama4"` +- `"PaLM"` +- `"RWKV"` +- `"Qwen3"` diff --git a/docs/components/tooladvisor20260301.mdx b/docs/components/tooladvisor20260301.mdx new file mode 100644 index 00000000..ee1f63bc --- /dev/null +++ b/docs/components/tooladvisor20260301.mdx @@ -0,0 +1,16 @@ +--- +title: "ToolAdvisor20260301" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `allowed_callers` | List[[components.AnthropicAllowedCallers](../components/anthropicallowedcallers.mdx)] | :heavy_minus_sign: | N/A | [
"direct"
] | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `caching` | [OptionalNullable[components.Caching]](../components/caching.mdx) | :heavy_minus_sign: | N/A | \{
"type": "ephemeral"
} | +| `defer_loading` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `max_uses` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `model` | *str* | :heavy_check_mark: | N/A | | +| `name` | [components.NameAdvisor](../components/nameadvisor.mdx) | :heavy_check_mark: | N/A | | +| `type` | [components.TypeAdvisor20260301](../components/typeadvisor20260301.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/toolbash20250124.mdx b/docs/components/toolbash20250124.mdx new file mode 100644 index 00000000..d9f17ef2 --- /dev/null +++ b/docs/components/toolbash20250124.mdx @@ -0,0 +1,11 @@ +--- +title: "ToolBash20250124" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `name` | [components.NameBash](../components/namebash.mdx) | :heavy_check_mark: | N/A | | +| `type` | [components.TypeBash20250124](../components/typebash20250124.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/toolcallstatus.mdx b/docs/components/toolcallstatus.mdx new file mode 100644 index 00000000..71119be6 --- /dev/null +++ b/docs/components/toolcallstatus.mdx @@ -0,0 +1,21 @@ +--- +title: "ToolCallStatus" +--- + +## Example Usage + +```python +from openrouter.components import ToolCallStatus + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ToolCallStatus = "in_progress" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"in_progress"` +- `"completed"` +- `"incomplete"` diff --git a/docs/components/toolchoice.mdx b/docs/components/toolchoice.mdx new file mode 100644 index 00000000..4a4be403 --- /dev/null +++ b/docs/components/toolchoice.mdx @@ -0,0 +1,30 @@ +--- +title: "ToolChoice" +--- + +## Supported Types + +### `components.ToolChoiceAuto` + +```python +value: components.ToolChoiceAuto = /* values here */ +``` + +### `components.ToolChoiceAny` + +```python +value: components.ToolChoiceAny = /* values here */ +``` + +### `components.ToolChoiceNone` + +```python +value: components.ToolChoiceNone = /* values here */ +``` + +### `components.ToolChoiceTool` + +```python +value: components.ToolChoiceTool = /* values here */ +``` + diff --git a/docs/components/toolchoiceallowed.mdx b/docs/components/toolchoiceallowed.mdx new file mode 100644 index 00000000..b33a149e --- /dev/null +++ b/docs/components/toolchoiceallowed.mdx @@ -0,0 +1,14 @@ +--- +title: "ToolChoiceAllowed" +--- + +Constrains the model to a pre-defined set of allowed tools + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `mode` | [components.Mode](../components/mode.mdx) | :heavy_check_mark: | N/A | +| `tools` | List[Dict[str, *Nullable[Any]*]] | :heavy_check_mark: | N/A | +| `type` | [components.ToolChoiceAllowedType](../components/toolchoiceallowedtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/toolchoiceallowedtype.mdx b/docs/components/toolchoiceallowedtype.mdx new file mode 100644 index 00000000..898ee050 --- /dev/null +++ b/docs/components/toolchoiceallowedtype.mdx @@ -0,0 +1,15 @@ +--- +title: "ToolChoiceAllowedType" +--- + +## Example Usage + +```python +from openrouter.components import ToolChoiceAllowedType +value: ToolChoiceAllowedType = "allowed_tools" +``` + + +## Values + +- `"allowed_tools"` diff --git a/docs/components/toolchoiceany.mdx b/docs/components/toolchoiceany.mdx new file mode 100644 index 00000000..444b7015 --- /dev/null +++ b/docs/components/toolchoiceany.mdx @@ -0,0 +1,10 @@ +--- +title: "ToolChoiceAny" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | +| `disable_parallel_tool_use` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `type` | [components.TypeAny](../components/typeany.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/toolchoiceauto.mdx b/docs/components/toolchoiceauto.mdx new file mode 100644 index 00000000..8759b2ff --- /dev/null +++ b/docs/components/toolchoiceauto.mdx @@ -0,0 +1,10 @@ +--- +title: "ToolChoiceAuto" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `disable_parallel_tool_use` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `type` | [components.ToolChoiceTypeAuto](../components/toolchoicetypeauto.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/toolchoicenone.mdx b/docs/components/toolchoicenone.mdx new file mode 100644 index 00000000..a042d898 --- /dev/null +++ b/docs/components/toolchoicenone.mdx @@ -0,0 +1,9 @@ +--- +title: "ToolChoiceNone" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| `type` | [components.TypeNone](../components/typenone.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/toolchoicetool.mdx b/docs/components/toolchoicetool.mdx new file mode 100644 index 00000000..08139fd7 --- /dev/null +++ b/docs/components/toolchoicetool.mdx @@ -0,0 +1,11 @@ +--- +title: "ToolChoiceTool" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| `disable_parallel_tool_use` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `name` | *str* | :heavy_check_mark: | N/A | +| `type` | [components.TypeTool](../components/typetool.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/toolchoicetypeauto.mdx b/docs/components/toolchoicetypeauto.mdx new file mode 100644 index 00000000..6817216b --- /dev/null +++ b/docs/components/toolchoicetypeauto.mdx @@ -0,0 +1,15 @@ +--- +title: "ToolChoiceTypeAuto" +--- + +## Example Usage + +```python +from openrouter.components import ToolChoiceTypeAuto +value: ToolChoiceTypeAuto = "auto" +``` + + +## Values + +- `"auto"` diff --git a/docs/components/toolcustom.mdx b/docs/components/toolcustom.mdx new file mode 100644 index 00000000..57073f64 --- /dev/null +++ b/docs/components/toolcustom.mdx @@ -0,0 +1,13 @@ +--- +title: "ToolCustom" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `description` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `input_schema` | [components.InputSchema](../components/inputschema.mdx) | :heavy_check_mark: | N/A | | +| `name` | *str* | :heavy_check_mark: | N/A | | +| `type` | [Optional[components.ToolTypeCustom]](../components/tooltypecustom.mdx) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/components/tooltexteditor20250124.mdx b/docs/components/tooltexteditor20250124.mdx new file mode 100644 index 00000000..0fe06a93 --- /dev/null +++ b/docs/components/tooltexteditor20250124.mdx @@ -0,0 +1,11 @@ +--- +title: "ToolTextEditor20250124" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `name` | [components.NameStrReplaceEditor](../components/namestrreplaceeditor.mdx) | :heavy_check_mark: | N/A | | +| `type` | [components.TypeTextEditor20250124](../components/typetexteditor20250124.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/tooltypecustom.mdx b/docs/components/tooltypecustom.mdx new file mode 100644 index 00000000..f5ff9bfa --- /dev/null +++ b/docs/components/tooltypecustom.mdx @@ -0,0 +1,15 @@ +--- +title: "ToolTypeCustom" +--- + +## Example Usage + +```python +from openrouter.components import ToolTypeCustom +value: ToolTypeCustom = "custom" +``` + + +## Values + +- `"custom"` diff --git a/docs/components/tooltypeephemeral.mdx b/docs/components/tooltypeephemeral.mdx new file mode 100644 index 00000000..48e6f8af --- /dev/null +++ b/docs/components/tooltypeephemeral.mdx @@ -0,0 +1,15 @@ +--- +title: "ToolTypeEphemeral" +--- + +## Example Usage + +```python +from openrouter.components import ToolTypeEphemeral +value: ToolTypeEphemeral = "ephemeral" +``` + + +## Values + +- `"ephemeral"` diff --git a/docs/components/toolwebsearch20250305.mdx b/docs/components/toolwebsearch20250305.mdx new file mode 100644 index 00000000..33510135 --- /dev/null +++ b/docs/components/toolwebsearch20250305.mdx @@ -0,0 +1,15 @@ +--- +title: "ToolWebSearch20250305" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `allowed_domains` | List[*str*] | :heavy_minus_sign: | N/A | | +| `blocked_domains` | List[*str*] | :heavy_minus_sign: | N/A | | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `max_uses` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | | +| `name` | [components.NameWebSearch1](../components/namewebsearch1.mdx) | :heavy_check_mark: | N/A | | +| `type` | [components.TypeWebSearch20250305](../components/typewebsearch20250305.mdx) | :heavy_check_mark: | N/A | | +| `user_location` | [OptionalNullable[components.AnthropicWebSearchToolUserLocation]](../components/anthropicwebsearchtooluserlocation.mdx) | :heavy_minus_sign: | N/A | \{
"city": "San Francisco",
"country": "US",
"region": "California",
"timezone": "America/Los_Angeles",
"type": "approximate"
} | \ No newline at end of file diff --git a/docs/components/toolwebsearch20260209.mdx b/docs/components/toolwebsearch20260209.mdx new file mode 100644 index 00000000..a70393e5 --- /dev/null +++ b/docs/components/toolwebsearch20260209.mdx @@ -0,0 +1,16 @@ +--- +title: "ToolWebSearch20260209" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `allowed_callers` | List[[components.AnthropicAllowedCallers](../components/anthropicallowedcallers.mdx)] | :heavy_minus_sign: | N/A | [
"direct"
] | +| `allowed_domains` | List[*str*] | :heavy_minus_sign: | N/A | | +| `blocked_domains` | List[*str*] | :heavy_minus_sign: | N/A | | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `max_uses` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | | +| `name` | [components.NameWebSearch2](../components/namewebsearch2.mdx) | :heavy_check_mark: | N/A | | +| `type` | [components.TypeWebSearch20260209](../components/typewebsearch20260209.mdx) | :heavy_check_mark: | N/A | | +| `user_location` | [OptionalNullable[components.AnthropicWebSearchToolUserLocation]](../components/anthropicwebsearchtooluserlocation.mdx) | :heavy_minus_sign: | N/A | \{
"city": "San Francisco",
"country": "US",
"region": "California",
"timezone": "America/Los_Angeles",
"type": "approximate"
} | \ No newline at end of file diff --git a/docs/components/toomanyrequestsresponseerrordata.md b/docs/components/toomanyrequestsresponseerrordata.mdx similarity index 92% rename from docs/components/toomanyrequestsresponseerrordata.md rename to docs/components/toomanyrequestsresponseerrordata.mdx index a957677d..09697e35 100644 --- a/docs/components/toomanyrequestsresponseerrordata.md +++ b/docs/components/toomanyrequestsresponseerrordata.mdx @@ -1,4 +1,6 @@ -# TooManyRequestsResponseErrorData +--- +title: "TooManyRequestsResponseErrorData" +--- Error data for TooManyRequestsResponse diff --git a/docs/components/topproviderinfo.md b/docs/components/topproviderinfo.mdx similarity index 97% rename from docs/components/topproviderinfo.md rename to docs/components/topproviderinfo.mdx index e66d615f..76323666 100644 --- a/docs/components/topproviderinfo.md +++ b/docs/components/topproviderinfo.mdx @@ -1,4 +1,6 @@ -# TopProviderInfo +--- +title: "TopProviderInfo" +--- Information about the top provider for this model diff --git a/docs/components/tournamentstats.mdx b/docs/components/tournamentstats.mdx new file mode 100644 index 00000000..bf6cd57c --- /dev/null +++ b/docs/components/tournamentstats.mdx @@ -0,0 +1,16 @@ +--- +title: "TournamentStats" +--- + +Placement distribution from tournament matches. + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `first_place` | *Nullable[int]* | :heavy_check_mark: | N/A | +| `fourth_place` | *Nullable[int]* | :heavy_check_mark: | N/A | +| `second_place` | *Nullable[int]* | :heavy_check_mark: | N/A | +| `third_place` | *Nullable[int]* | :heavy_check_mark: | N/A | +| `total` | *Nullable[int]* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/traceconfig.mdx b/docs/components/traceconfig.mdx new file mode 100644 index 00000000..faeac4da --- /dev/null +++ b/docs/components/traceconfig.mdx @@ -0,0 +1,17 @@ +--- +title: "TraceConfig" +--- + +Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `generation_name` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `parent_span_id` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `span_name` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `trace_id` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `trace_name` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `__pydantic_extra__` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | \{
"trace_id": "trace-abc123",
"trace_name": "my-app-trace"
} | \ No newline at end of file diff --git a/docs/components/trigger.mdx b/docs/components/trigger.mdx new file mode 100644 index 00000000..2c9910c8 --- /dev/null +++ b/docs/components/trigger.mdx @@ -0,0 +1,18 @@ +--- +title: "Trigger" +--- + +## Supported Types + +### `components.AnthropicInputTokensTrigger` + +```python +value: components.AnthropicInputTokensTrigger = /* values here */ +``` + +### `components.AnthropicToolUsesTrigger` + +```python +value: components.AnthropicToolUsesTrigger = /* values here */ +``` + diff --git a/docs/components/triggerinputtokens.mdx b/docs/components/triggerinputtokens.mdx new file mode 100644 index 00000000..45784f00 --- /dev/null +++ b/docs/components/triggerinputtokens.mdx @@ -0,0 +1,10 @@ +--- +title: "TriggerInputTokens" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `type` | [components.EditTypeInputTokens](../components/edittypeinputtokens.mdx) | :heavy_check_mark: | N/A | +| `value` | *int* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/truncation.mdx b/docs/components/truncation.mdx new file mode 100644 index 00000000..6b46b4c1 --- /dev/null +++ b/docs/components/truncation.mdx @@ -0,0 +1,20 @@ +--- +title: "Truncation" +--- + +## Example Usage + +```python +from openrouter.components import Truncation + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Truncation = "auto" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"auto"` +- `"disabled"` diff --git a/docs/components/type.md b/docs/components/type.mdx similarity index 94% rename from docs/components/type.md rename to docs/components/type.mdx index 6eaadffe..496e8a8d 100644 --- a/docs/components/type.md +++ b/docs/components/type.mdx @@ -1,5 +1,6 @@ -# Type - +--- +title: "Type" +--- ## Supported Types diff --git a/docs/components/typeadaptive.mdx b/docs/components/typeadaptive.mdx new file mode 100644 index 00000000..01eae6d7 --- /dev/null +++ b/docs/components/typeadaptive.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeAdaptive" +--- + +## Example Usage + +```python +from openrouter.components import TypeAdaptive +value: TypeAdaptive = "adaptive" +``` + + +## Values + +- `"adaptive"` diff --git a/docs/components/typeadvisor20260301.mdx b/docs/components/typeadvisor20260301.mdx new file mode 100644 index 00000000..92220371 --- /dev/null +++ b/docs/components/typeadvisor20260301.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeAdvisor20260301" +--- + +## Example Usage + +```python +from openrouter.components import TypeAdvisor20260301 +value: TypeAdvisor20260301 = "advisor_20260301" +``` + + +## Values + +- `"advisor_20260301"` diff --git a/docs/components/typeany.mdx b/docs/components/typeany.mdx new file mode 100644 index 00000000..658b1791 --- /dev/null +++ b/docs/components/typeany.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeAny" +--- + +## Example Usage + +```python +from openrouter.components import TypeAny +value: TypeAny = "any" +``` + + +## Values + +- `"any"` diff --git a/docs/components/typebash20250124.mdx b/docs/components/typebash20250124.mdx new file mode 100644 index 00000000..02338a09 --- /dev/null +++ b/docs/components/typebash20250124.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeBash20250124" +--- + +## Example Usage + +```python +from openrouter.components import TypeBash20250124 +value: TypeBash20250124 = "bash_20250124" +``` + + +## Values + +- `"bash_20250124"` diff --git a/docs/components/typeclearthinking20251015.mdx b/docs/components/typeclearthinking20251015.mdx new file mode 100644 index 00000000..1af8cc45 --- /dev/null +++ b/docs/components/typeclearthinking20251015.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeClearThinking20251015" +--- + +## Example Usage + +```python +from openrouter.components import TypeClearThinking20251015 +value: TypeClearThinking20251015 = "clear_thinking_20251015" +``` + + +## Values + +- `"clear_thinking_20251015"` diff --git a/docs/components/typecleartooluses20250919.mdx b/docs/components/typecleartooluses20250919.mdx new file mode 100644 index 00000000..5be064a6 --- /dev/null +++ b/docs/components/typecleartooluses20250919.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeClearToolUses20250919" +--- + +## Example Usage + +```python +from openrouter.components import TypeClearToolUses20250919 +value: TypeClearToolUses20250919 = "clear_tool_uses_20250919" +``` + + +## Values + +- `"clear_tool_uses_20250919"` diff --git a/docs/components/typecodeinterpreter.mdx b/docs/components/typecodeinterpreter.mdx new file mode 100644 index 00000000..6af79cae --- /dev/null +++ b/docs/components/typecodeinterpreter.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeCodeInterpreter" +--- + +## Example Usage + +```python +from openrouter.components import TypeCodeInterpreter +value: TypeCodeInterpreter = "code_interpreter" +``` + + +## Values + +- `"code_interpreter"` diff --git a/docs/components/typecodeinterpretercall.mdx b/docs/components/typecodeinterpretercall.mdx new file mode 100644 index 00000000..374132b2 --- /dev/null +++ b/docs/components/typecodeinterpretercall.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeCodeInterpreterCall" +--- + +## Example Usage + +```python +from openrouter.components import TypeCodeInterpreterCall +value: TypeCodeInterpreterCall = "code_interpreter_call" +``` + + +## Values + +- `"code_interpreter_call"` diff --git a/docs/components/typecompact20260112.mdx b/docs/components/typecompact20260112.mdx new file mode 100644 index 00000000..8c90b7c0 --- /dev/null +++ b/docs/components/typecompact20260112.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeCompact20260112" +--- + +## Example Usage + +```python +from openrouter.components import TypeCompact20260112 +value: TypeCompact20260112 = "compact_20260112" +``` + + +## Values + +- `"compact_20260112"` diff --git a/docs/components/typedisabled.mdx b/docs/components/typedisabled.mdx new file mode 100644 index 00000000..65c2b6da --- /dev/null +++ b/docs/components/typedisabled.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeDisabled" +--- + +## Example Usage + +```python +from openrouter.components import TypeDisabled +value: TypeDisabled = "disabled" +``` + + +## Values + +- `"disabled"` diff --git a/docs/components/typedocument.mdx b/docs/components/typedocument.mdx new file mode 100644 index 00000000..328ae7fc --- /dev/null +++ b/docs/components/typedocument.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeDocument" +--- + +## Example Usage + +```python +from openrouter.components import TypeDocument +value: TypeDocument = "document" +``` + + +## Values + +- `"document"` diff --git a/docs/components/typeenabled.mdx b/docs/components/typeenabled.mdx new file mode 100644 index 00000000..52ed7b16 --- /dev/null +++ b/docs/components/typeenabled.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeEnabled" +--- + +## Example Usage + +```python +from openrouter.components import TypeEnabled +value: TypeEnabled = "enabled" +``` + + +## Values + +- `"enabled"` diff --git a/docs/components/typeexec.mdx b/docs/components/typeexec.mdx new file mode 100644 index 00000000..f35d6080 --- /dev/null +++ b/docs/components/typeexec.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeExec" +--- + +## Example Usage + +```python +from openrouter.components import TypeExec +value: TypeExec = "exec" +``` + + +## Values + +- `"exec"` diff --git a/docs/components/typeexit.mdx b/docs/components/typeexit.mdx new file mode 100644 index 00000000..a1b9dbb3 --- /dev/null +++ b/docs/components/typeexit.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeExit" +--- + +## Example Usage + +```python +from openrouter.components import TypeExit +value: TypeExit = "exit" +``` + + +## Values + +- `"exit"` diff --git a/docs/components/typefilesearch.mdx b/docs/components/typefilesearch.mdx new file mode 100644 index 00000000..a3f18c8a --- /dev/null +++ b/docs/components/typefilesearch.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeFileSearch" +--- + +## Example Usage + +```python +from openrouter.components import TypeFileSearch +value: TypeFileSearch = "file_search" +``` + + +## Values + +- `"file_search"` diff --git a/docs/components/typefindinpage.mdx b/docs/components/typefindinpage.mdx new file mode 100644 index 00000000..e56d1f3c --- /dev/null +++ b/docs/components/typefindinpage.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeFindInPage" +--- + +## Example Usage + +```python +from openrouter.components import TypeFindInPage +value: TypeFindInPage = "find_in_page" +``` + + +## Values + +- `"find_in_page"` diff --git a/docs/components/typelocalshellcall.mdx b/docs/components/typelocalshellcall.mdx new file mode 100644 index 00000000..0af8acd6 --- /dev/null +++ b/docs/components/typelocalshellcall.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeLocalShellCall" +--- + +## Example Usage + +```python +from openrouter.components import TypeLocalShellCall +value: TypeLocalShellCall = "local_shell_call" +``` + + +## Values + +- `"local_shell_call"` diff --git a/docs/components/typelogs.mdx b/docs/components/typelogs.mdx new file mode 100644 index 00000000..accf2ed9 --- /dev/null +++ b/docs/components/typelogs.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeLogs" +--- + +## Example Usage + +```python +from openrouter.components import TypeLogs +value: TypeLogs = "logs" +``` + + +## Values + +- `"logs"` diff --git a/docs/components/typenone.mdx b/docs/components/typenone.mdx new file mode 100644 index 00000000..797eb174 --- /dev/null +++ b/docs/components/typenone.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeNone" +--- + +## Example Usage + +```python +from openrouter.components import TypeNone +value: TypeNone = "none" +``` + + +## Values + +- `"none"` diff --git a/docs/components/typeopenpage.mdx b/docs/components/typeopenpage.mdx new file mode 100644 index 00000000..e7e1d470 --- /dev/null +++ b/docs/components/typeopenpage.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeOpenPage" +--- + +## Example Usage + +```python +from openrouter.components import TypeOpenPage +value: TypeOpenPage = "open_page" +``` + + +## Values + +- `"open_page"` diff --git a/docs/components/typeredactedthinking.mdx b/docs/components/typeredactedthinking.mdx new file mode 100644 index 00000000..c02fa818 --- /dev/null +++ b/docs/components/typeredactedthinking.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeRedactedThinking" +--- + +## Example Usage + +```python +from openrouter.components import TypeRedactedThinking +value: TypeRedactedThinking = "redacted_thinking" +``` + + +## Values + +- `"redacted_thinking"` diff --git a/docs/components/typeservertooluse.mdx b/docs/components/typeservertooluse.mdx new file mode 100644 index 00000000..9c498fcc --- /dev/null +++ b/docs/components/typeservertooluse.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeServerToolUse" +--- + +## Example Usage + +```python +from openrouter.components import TypeServerToolUse +value: TypeServerToolUse = "server_tool_use" +``` + + +## Values + +- `"server_tool_use"` diff --git a/docs/components/typetexteditor20250124.mdx b/docs/components/typetexteditor20250124.mdx new file mode 100644 index 00000000..21cc14ae --- /dev/null +++ b/docs/components/typetexteditor20250124.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeTextEditor20250124" +--- + +## Example Usage + +```python +from openrouter.components import TypeTextEditor20250124 +value: TypeTextEditor20250124 = "text_editor_20250124" +``` + + +## Values + +- `"text_editor_20250124"` diff --git a/docs/components/typethinking.mdx b/docs/components/typethinking.mdx new file mode 100644 index 00000000..d2a69036 --- /dev/null +++ b/docs/components/typethinking.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeThinking" +--- + +## Example Usage + +```python +from openrouter.components import TypeThinking +value: TypeThinking = "thinking" +``` + + +## Values + +- `"thinking"` diff --git a/docs/components/typetimeout.mdx b/docs/components/typetimeout.mdx new file mode 100644 index 00000000..8a9237d7 --- /dev/null +++ b/docs/components/typetimeout.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeTimeout" +--- + +## Example Usage + +```python +from openrouter.components import TypeTimeout +value: TypeTimeout = "timeout" +``` + + +## Values + +- `"timeout"` diff --git a/docs/components/typetokens.mdx b/docs/components/typetokens.mdx new file mode 100644 index 00000000..b98ea9da --- /dev/null +++ b/docs/components/typetokens.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeTokens" +--- + +## Example Usage + +```python +from openrouter.components import TypeTokens +value: TypeTokens = "tokens" +``` + + +## Values + +- `"tokens"` diff --git a/docs/components/typetool.mdx b/docs/components/typetool.mdx new file mode 100644 index 00000000..4cef3b74 --- /dev/null +++ b/docs/components/typetool.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeTool" +--- + +## Example Usage + +```python +from openrouter.components import TypeTool +value: TypeTool = "tool" +``` + + +## Values + +- `"tool"` diff --git a/docs/components/typetoolreference.mdx b/docs/components/typetoolreference.mdx new file mode 100644 index 00000000..ac0f247e --- /dev/null +++ b/docs/components/typetoolreference.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeToolReference" +--- + +## Example Usage + +```python +from openrouter.components import TypeToolReference +value: TypeToolReference = "tool_reference" +``` + + +## Values + +- `"tool_reference"` diff --git a/docs/components/typetoolresult.mdx b/docs/components/typetoolresult.mdx new file mode 100644 index 00000000..e7702ba4 --- /dev/null +++ b/docs/components/typetoolresult.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeToolResult" +--- + +## Example Usage + +```python +from openrouter.components import TypeToolResult +value: TypeToolResult = "tool_result" +``` + + +## Values + +- `"tool_result"` diff --git a/docs/components/typetooluse.mdx b/docs/components/typetooluse.mdx new file mode 100644 index 00000000..6e4df39f --- /dev/null +++ b/docs/components/typetooluse.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeToolUse" +--- + +## Example Usage + +```python +from openrouter.components import TypeToolUse +value: TypeToolUse = "tool_use" +``` + + +## Values + +- `"tool_use"` diff --git a/docs/components/typewebsearch20250305.mdx b/docs/components/typewebsearch20250305.mdx new file mode 100644 index 00000000..0eb55d9b --- /dev/null +++ b/docs/components/typewebsearch20250305.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeWebSearch20250305" +--- + +## Example Usage + +```python +from openrouter.components import TypeWebSearch20250305 +value: TypeWebSearch20250305 = "web_search_20250305" +``` + + +## Values + +- `"web_search_20250305"` diff --git a/docs/components/typewebsearch20260209.mdx b/docs/components/typewebsearch20260209.mdx new file mode 100644 index 00000000..f9c864e4 --- /dev/null +++ b/docs/components/typewebsearch20260209.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeWebSearch20260209" +--- + +## Example Usage + +```python +from openrouter.components import TypeWebSearch20260209 +value: TypeWebSearch20260209 = "web_search_20260209" +``` + + +## Values + +- `"web_search_20260209"` diff --git a/docs/components/typewebsearchcall.mdx b/docs/components/typewebsearchcall.mdx new file mode 100644 index 00000000..981349ba --- /dev/null +++ b/docs/components/typewebsearchcall.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeWebSearchCall" +--- + +## Example Usage + +```python +from openrouter.components import TypeWebSearchCall +value: TypeWebSearchCall = "web_search_call" +``` + + +## Values + +- `"web_search_call"` diff --git a/docs/components/typewebsearchtoolresult.mdx b/docs/components/typewebsearchtoolresult.mdx new file mode 100644 index 00000000..1d9df7e9 --- /dev/null +++ b/docs/components/typewebsearchtoolresult.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeWebSearchToolResult" +--- + +## Example Usage + +```python +from openrouter.components import TypeWebSearchToolResult +value: TypeWebSearchToolResult = "web_search_tool_result" +``` + + +## Values + +- `"web_search_tool_result"` diff --git a/docs/components/typewebsearchtoolresulterror.mdx b/docs/components/typewebsearchtoolresulterror.mdx new file mode 100644 index 00000000..ff44734c --- /dev/null +++ b/docs/components/typewebsearchtoolresulterror.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeWebSearchToolResultError" +--- + +## Example Usage + +```python +from openrouter.components import TypeWebSearchToolResultError +value: TypeWebSearchToolResultError = "web_search_tool_result_error" +``` + + +## Values + +- `"web_search_tool_result_error"` diff --git a/docs/components/unauthorizedresponseerrordata.md b/docs/components/unauthorizedresponseerrordata.mdx similarity index 93% rename from docs/components/unauthorizedresponseerrordata.md rename to docs/components/unauthorizedresponseerrordata.mdx index 1db2a3a9..2b412cd7 100644 --- a/docs/components/unauthorizedresponseerrordata.md +++ b/docs/components/unauthorizedresponseerrordata.mdx @@ -1,4 +1,6 @@ -# UnauthorizedResponseErrorData +--- +title: "UnauthorizedResponseErrorData" +--- Error data for UnauthorizedResponse diff --git a/docs/components/unifiedbenchmarkpricing.mdx b/docs/components/unifiedbenchmarkpricing.mdx new file mode 100644 index 00000000..322906a4 --- /dev/null +++ b/docs/components/unifiedbenchmarkpricing.mdx @@ -0,0 +1,13 @@ +--- +title: "UnifiedBenchmarkPricing" +--- + +OpenRouter pricing per token for this model. Null if pricing is unavailable. + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | +| `completion` | *str* | :heavy_check_mark: | Cost per output token (USD, decimal string). | 0.000015 | +| `prompt` | *str* | :heavy_check_mark: | Cost per input token (USD, decimal string). | 0.000003 | \ No newline at end of file diff --git a/docs/components/unifiedbenchmarksaaitem.mdx b/docs/components/unifiedbenchmarksaaitem.mdx new file mode 100644 index 00000000..0a22591f --- /dev/null +++ b/docs/components/unifiedbenchmarksaaitem.mdx @@ -0,0 +1,15 @@ +--- +title: "UnifiedBenchmarksAAItem" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `agentic_index` | *Nullable[float]* | :heavy_check_mark: | Artificial Analysis Agentic Index composite score. Higher is better. | 58.3 | +| `coding_index` | *Nullable[float]* | :heavy_check_mark: | Artificial Analysis Coding Index composite score. Higher is better. | 65.8 | +| `display_name` | *str* | :heavy_check_mark: | Model name as listed on Artificial Analysis. | GPT-4o | +| `intelligence_index` | *Nullable[float]* | :heavy_check_mark: | Artificial Analysis Intelligence Index composite score. Higher is better. | 71.2 | +| `model_permaslug` | *str* | :heavy_check_mark: | Stable OpenRouter model identifier. | openai/gpt-4o | +| `pricing` | [Nullable[components.UnifiedBenchmarkPricing]](../components/unifiedbenchmarkpricing.mdx) | :heavy_check_mark: | OpenRouter pricing per token for this model. Null if pricing is unavailable. | \{
"completion": "0.000015",
"prompt": "0.000003"
} | +| `source` | [components.UnifiedBenchmarksAAItemSource](../components/unifiedbenchmarksaaitemsource.mdx) | :heavy_check_mark: | Benchmark source discriminator. | | \ No newline at end of file diff --git a/docs/components/unifiedbenchmarksaaitemsource.mdx b/docs/components/unifiedbenchmarksaaitemsource.mdx new file mode 100644 index 00000000..cf9d11cd --- /dev/null +++ b/docs/components/unifiedbenchmarksaaitemsource.mdx @@ -0,0 +1,17 @@ +--- +title: "UnifiedBenchmarksAAItemSource" +--- + +Benchmark source discriminator. + +## Example Usage + +```python +from openrouter.components import UnifiedBenchmarksAAItemSource +value: UnifiedBenchmarksAAItemSource = "artificial-analysis" +``` + + +## Values + +- `"artificial-analysis"` diff --git a/docs/components/unifiedbenchmarksdaitem.mdx b/docs/components/unifiedbenchmarksdaitem.mdx new file mode 100644 index 00000000..95f66134 --- /dev/null +++ b/docs/components/unifiedbenchmarksdaitem.mdx @@ -0,0 +1,18 @@ +--- +title: "UnifiedBenchmarksDAItem" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `arena` | *str* | :heavy_check_mark: | Arena this ranking belongs to. | models | +| `avg_generation_time_ms` | *Nullable[float]* | :heavy_check_mark: | Average generation time in milliseconds. | 3200 | +| `category` | *str* | :heavy_check_mark: | Category within the arena. | codecategories | +| `display_name` | *str* | :heavy_check_mark: | Human-readable model name from Design Arena. | Claude Sonnet 4 | +| `elo` | *float* | :heavy_check_mark: | ELO rating from head-to-head arena battles. | 1423 | +| `model_permaslug` | *str* | :heavy_check_mark: | Stable OpenRouter model identifier when mapped; otherwise the upstream Design Arena model id. | anthropic/claude-sonnet-4 | +| `pricing` | [Nullable[components.UnifiedBenchmarkPricing]](../components/unifiedbenchmarkpricing.mdx) | :heavy_check_mark: | OpenRouter pricing per token for this model. Null if pricing is unavailable. | \{
"completion": "0.000015",
"prompt": "0.000003"
} | +| `source` | [components.UnifiedBenchmarksDAItemSource](../components/unifiedbenchmarksdaitemsource.mdx) | :heavy_check_mark: | Benchmark source discriminator. | | +| `tournament_stats` | [components.TournamentStats](../components/tournamentstats.mdx) | :heavy_check_mark: | Placement distribution from tournament matches. | | +| `win_rate` | *float* | :heavy_check_mark: | Win rate as a percentage (0–100). | 72 | \ No newline at end of file diff --git a/docs/components/unifiedbenchmarksdaitemsource.mdx b/docs/components/unifiedbenchmarksdaitemsource.mdx new file mode 100644 index 00000000..a194185c --- /dev/null +++ b/docs/components/unifiedbenchmarksdaitemsource.mdx @@ -0,0 +1,17 @@ +--- +title: "UnifiedBenchmarksDAItemSource" +--- + +Benchmark source discriminator. + +## Example Usage + +```python +from openrouter.components import UnifiedBenchmarksDAItemSource +value: UnifiedBenchmarksDAItemSource = "design-arena" +``` + + +## Values + +- `"design-arena"` diff --git a/docs/components/unifiedbenchmarksmeta.mdx b/docs/components/unifiedbenchmarksmeta.mdx new file mode 100644 index 00000000..ea52df6e --- /dev/null +++ b/docs/components/unifiedbenchmarksmeta.mdx @@ -0,0 +1,15 @@ +--- +title: "UnifiedBenchmarksMeta" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `as_of` | *str* | :heavy_check_mark: | ISO-8601 timestamp of when this data was last updated. | 2026-06-03T12:00:00Z | +| `citation` | *Nullable[str]* | :heavy_check_mark: | Required attribution when republishing this data, or null when results span multiple sources (attribute each item individually by its `source` discriminator). | Source: Artificial Analysis (artificialanalysis.ai) via OpenRouter (openrouter.ai/rankings). | +| `model_count` | *int* | :heavy_check_mark: | Number of unique models in the response. | | +| `source` | [Nullable[components.UnifiedBenchmarksMetaSource]](../components/unifiedbenchmarksmetasource.mdx) | :heavy_check_mark: | The source filter applied, or null when all sources are returned. | artificial-analysis | +| `source_url` | *Nullable[str]* | :heavy_check_mark: | URL of the upstream data source, or null when results span multiple sources. | https://artificialanalysis.ai | +| `task_type` | *Nullable[str]* | :heavy_check_mark: | The task_type filter applied, or null if showing all. | | +| `version` | [components.UnifiedBenchmarksMetaVersion](../components/unifiedbenchmarksmetaversion.mdx) | :heavy_check_mark: | Dataset version. | | \ No newline at end of file diff --git a/docs/components/unifiedbenchmarksmetasource.mdx b/docs/components/unifiedbenchmarksmetasource.mdx new file mode 100644 index 00000000..1bcb8e01 --- /dev/null +++ b/docs/components/unifiedbenchmarksmetasource.mdx @@ -0,0 +1,22 @@ +--- +title: "UnifiedBenchmarksMetaSource" +--- + +The source filter applied, or null when all sources are returned. + +## Example Usage + +```python +from openrouter.components import UnifiedBenchmarksMetaSource + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: UnifiedBenchmarksMetaSource = "artificial-analysis" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"artificial-analysis"` +- `"design-arena"` diff --git a/docs/components/unifiedbenchmarksmetaversion.mdx b/docs/components/unifiedbenchmarksmetaversion.mdx new file mode 100644 index 00000000..23ef4c9a --- /dev/null +++ b/docs/components/unifiedbenchmarksmetaversion.mdx @@ -0,0 +1,17 @@ +--- +title: "UnifiedBenchmarksMetaVersion" +--- + +Dataset version. + +## Example Usage + +```python +from openrouter.components import UnifiedBenchmarksMetaVersion +value: UnifiedBenchmarksMetaVersion = "v1" +``` + + +## Values + +- `"v1"` diff --git a/docs/components/unifiedbenchmarksresponse.mdx b/docs/components/unifiedbenchmarksresponse.mdx new file mode 100644 index 00000000..ee48e645 --- /dev/null +++ b/docs/components/unifiedbenchmarksresponse.mdx @@ -0,0 +1,10 @@ +--- +title: "UnifiedBenchmarksResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | List[[components.UnifiedBenchmarksResponseData](../components/unifiedbenchmarksresponsedata.mdx)] | :heavy_check_mark: | N/A | | +| `meta` | [components.UnifiedBenchmarksMeta](../components/unifiedbenchmarksmeta.mdx) | :heavy_check_mark: | N/A | \{
"as_of": "2026-06-03T12:00:00Z",
"citation": "Source: Artificial Analysis (artificialanalysis.ai) via OpenRouter (openrouter.ai/rankings).",
"model_count": 50,
"source": "artificial-analysis",
"source_url": "https://artificialanalysis.ai",
"task_type": null,
"version": "v1"
} | \ No newline at end of file diff --git a/docs/components/unifiedbenchmarksresponsedata.mdx b/docs/components/unifiedbenchmarksresponsedata.mdx new file mode 100644 index 00000000..eb8045de --- /dev/null +++ b/docs/components/unifiedbenchmarksresponsedata.mdx @@ -0,0 +1,18 @@ +--- +title: "UnifiedBenchmarksResponseData" +--- + +## Supported Types + +### `components.UnifiedBenchmarksAAItem` + +```python +value: components.UnifiedBenchmarksAAItem = /* values here */ +``` + +### `components.UnifiedBenchmarksDAItem` + +```python +value: components.UnifiedBenchmarksDAItem = /* values here */ +``` + diff --git a/docs/components/uniqueinsight.mdx b/docs/components/uniqueinsight.mdx new file mode 100644 index 00000000..2dd2e0e3 --- /dev/null +++ b/docs/components/uniqueinsight.mdx @@ -0,0 +1,10 @@ +--- +title: "UniqueInsight" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `insight` | *str* | :heavy_check_mark: | N/A | +| `model` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/unit.mdx b/docs/components/unit.mdx new file mode 100644 index 00000000..83f68ad4 --- /dev/null +++ b/docs/components/unit.mdx @@ -0,0 +1,21 @@ +--- +title: "Unit" +--- + +## Example Usage + +```python +from openrouter.components import Unit + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Unit = "image" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"image"` +- `"megapixel"` +- `"token"` diff --git a/docs/components/unprocessableentityresponseerrordata.md b/docs/components/unprocessableentityresponseerrordata.mdx similarity index 92% rename from docs/components/unprocessableentityresponseerrordata.md rename to docs/components/unprocessableentityresponseerrordata.mdx index 9ccd3c05..ef85de0e 100644 --- a/docs/components/unprocessableentityresponseerrordata.md +++ b/docs/components/unprocessableentityresponseerrordata.mdx @@ -1,4 +1,6 @@ -# UnprocessableEntityResponseErrorData +--- +title: "UnprocessableEntityResponseErrorData" +--- Error data for UnprocessableEntityResponse diff --git a/docs/components/updatebyokkeyrequest.mdx b/docs/components/updatebyokkeyrequest.mdx new file mode 100644 index 00000000..fcdb0bb2 --- /dev/null +++ b/docs/components/updatebyokkeyrequest.mdx @@ -0,0 +1,14 @@ +--- +title: "UpdateBYOKKeyRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `allowed_models` | List[*str*] | :heavy_minus_sign: | Optional allowlist of model slugs this credential may be used for. `null` means no restriction. | null | +| `allowed_user_ids` | List[*str*] | :heavy_minus_sign: | Optional allowlist of user IDs that may use this credential. `null` means no restriction. | null | +| `disabled` | *Optional[bool]* | :heavy_minus_sign: | Whether this credential is disabled. | false | +| `is_fallback` | *Optional[bool]* | :heavy_minus_sign: | Whether this credential is treated as a fallback — used only after non-fallback keys for the same provider have been tried. | false | +| `key` | *Optional[str]* | :heavy_minus_sign: | A new raw provider API key to rotate the credential in-place. The previous key material is overwritten and the masked label is regenerated. Encrypted at rest and never returned in API responses. | sk-proj-newkey456... | +| `name` | *OptionalNullable[str]* | :heavy_minus_sign: | Optional human-readable name for the credential. | Updated OpenAI Key | \ No newline at end of file diff --git a/docs/components/updatebyokkeyresponse.mdx b/docs/components/updatebyokkeyresponse.mdx new file mode 100644 index 00000000..335feb18 --- /dev/null +++ b/docs/components/updatebyokkeyresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "UpdateBYOKKeyResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `data` | [components.BYOKKey](../components/byokkey.mdx) | :heavy_check_mark: | N/A | \{
"allowed_api_key_hashes": null,
"allowed_models": null,
"allowed_user_ids": null,
"created_at": "2025-08-24T10:30:00Z",
"disabled": false,
"id": "11111111-2222-3333-4444-555555555555",
"is_fallback": false,
"label": "sk-...AbCd",
"name": "Production OpenAI Key",
"provider": "openai",
"sort_order": 0,
"workspace_id": "550e8400-e29b-41d4-a716-446655440000"
} | \ No newline at end of file diff --git a/docs/components/updateguardrailrequest.mdx b/docs/components/updateguardrailrequest.mdx new file mode 100644 index 00000000..6127914d --- /dev/null +++ b/docs/components/updateguardrailrequest.mdx @@ -0,0 +1,23 @@ +--- +title: "UpdateGuardrailRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `allowed_models` | List[*str*] | :heavy_minus_sign: | Array of model identifiers (slug or canonical_slug accepted) | [
"openai/gpt-5.2"
] | +| `allowed_providers` | List[*str*] | :heavy_minus_sign: | New list of allowed provider IDs | [
"openai",
"anthropic",
"deepseek"
] | +| `content_filter_builtins` | List[[components.ContentFilterBuiltinEntryInput](../components/contentfilterbuiltinentryinput.mdx)] | :heavy_minus_sign: | Builtin content filters to apply. Set to null to remove. The "flag" action is only supported for "regex-prompt-injection"; PII slugs (email, phone, ssn, credit-card, ip-address, person-name, address) accept "block" or "redact" only. | [
\{
"action": "block",
"slug": "regex-prompt-injection"
}
] | +| `content_filters` | List[[components.ContentFilterEntry](../components/contentfilterentry.mdx)] | :heavy_minus_sign: | Custom regex content filters to apply. Set to null to remove. | null | +| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | New description for the guardrail | Updated description | +| ~~`enforce_zdr`~~ | *OptionalNullable[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Deprecated. Use enforce_zdr_anthropic, enforce_zdr_openai, enforce_zdr_google, and enforce_zdr_other instead. When provided, its value is copied into any of those per-provider fields that are not explicitly specified on the request. | true | +| `enforce_zdr_anthropic` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to enforce zero data retention for Anthropic models. Falls back to enforce_zdr when not provided. | true | +| `enforce_zdr_google` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to enforce zero data retention for Google models. Falls back to enforce_zdr when not provided. | true | +| `enforce_zdr_openai` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to enforce zero data retention for OpenAI models. Falls back to enforce_zdr when not provided. | true | +| `enforce_zdr_other` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to enforce zero data retention for models that are not from Anthropic, OpenAI, or Google. Falls back to enforce_zdr when not provided. | true | +| `ignored_models` | List[*str*] | :heavy_minus_sign: | Array of model identifiers to exclude from routing (slug or canonical_slug accepted) | [
"openai/gpt-4o-mini"
] | +| `ignored_providers` | List[*str*] | :heavy_minus_sign: | List of provider IDs to exclude from routing | [
"azure"
] | +| `limit_usd` | *OptionalNullable[float]* | :heavy_minus_sign: | New spending limit in USD | 75 | +| `name` | *Optional[str]* | :heavy_minus_sign: | New name for the guardrail | Updated Guardrail Name | +| `reset_interval` | [OptionalNullable[components.GuardrailInterval]](../components/guardrailinterval.mdx) | :heavy_minus_sign: | Interval at which the limit resets (daily, weekly, monthly) | monthly | \ No newline at end of file diff --git a/docs/components/updateguardrailresponse.mdx b/docs/components/updateguardrailresponse.mdx new file mode 100644 index 00000000..9c958618 --- /dev/null +++ b/docs/components/updateguardrailresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "UpdateGuardrailResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [components.Guardrail](../components/guardrail.mdx) | :heavy_check_mark: | N/A | \{
"allowed_models": null,
"allowed_providers": [
"openai",
"anthropic",
"google"
],
"content_filter_builtins": [
\{
"action": "redact",
"label": "[EMAIL]",
"slug": "email"
}
],
"content_filters": null,
"created_at": "2025-08-24T10:30:00Z",
"description": "Guardrail for production environment",
"enforce_zdr": null,
"enforce_zdr_anthropic": true,
"enforce_zdr_google": false,
"enforce_zdr_openai": true,
"enforce_zdr_other": false,
"id": "550e8400-e29b-41d4-a716-446655440000",
"ignored_models": null,
"ignored_providers": null,
"limit_usd": 100,
"name": "Production Guardrail",
"reset_interval": "monthly",
"updated_at": "2025-08-24T15:45:00Z",
"workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"
} | \ No newline at end of file diff --git a/docs/components/updateobservabilitydestinationrequest.mdx b/docs/components/updateobservabilitydestinationrequest.mdx new file mode 100644 index 00000000..1a6d0410 --- /dev/null +++ b/docs/components/updateobservabilitydestinationrequest.mdx @@ -0,0 +1,15 @@ +--- +title: "UpdateObservabilityDestinationRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `api_key_hashes` | List[*str*] | :heavy_minus_sign: | Optional allowlist of OpenRouter API key hashes. `null` clears the filter (all keys). Omitting leaves the current value. Must contain at least one hash if provided. | null | +| `config` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | Provider-specific configuration fields to update. Masked values are ignored; unset fields keep their current value. | \{
"baseUrl": "https://us.cloud.langfuse.com",
"publicKey": "pk-l...EfGh",
"secretKey": "sk-l...AbCd"
} | +| `enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether the destination is enabled. | true | +| `filter_rules` | [OptionalNullable[components.ObservabilityFilterRulesConfig]](../components/observabilityfilterrulesconfig.mdx) | :heavy_minus_sign: | N/A | null | +| `name` | *Optional[str]* | :heavy_minus_sign: | Human-readable name for the destination. | Production Langfuse | +| `privacy_mode` | *Optional[bool]* | :heavy_minus_sign: | When true, request/response bodies are not forwarded — only metadata. | false | +| `sampling_rate` | *Optional[float]* | :heavy_minus_sign: | Sampling rate between 0.0001 and 1 (1 = 100%). | 1 | \ No newline at end of file diff --git a/docs/components/updateobservabilitydestinationresponse.mdx b/docs/components/updateobservabilitydestinationresponse.mdx new file mode 100644 index 00000000..c7aba437 --- /dev/null +++ b/docs/components/updateobservabilitydestinationresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "UpdateObservabilityDestinationResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [components.ObservabilityDestination](../components/observabilitydestination.mdx) | :heavy_check_mark: | N/A | \{
"api_key_hashes": null,
"config": \{
"baseUrl": "https://us.cloud.langfuse.com",
"publicKey": "pk-l...EfGh",
"secretKey": "sk-l...AbCd"
},
"created_at": "2025-08-24T10:30:00Z",
"enabled": true,
"filter_rules": null,
"id": "99999999-aaaa-bbbb-cccc-dddddddddddd",
"name": "Production Langfuse",
"privacy_mode": false,
"sampling_rate": 1,
"type": "langfuse",
"updated_at": "2025-08-24T15:45:00Z",
"workspace_id": "550e8400-e29b-41d4-a716-446655440000"
} | \ No newline at end of file diff --git a/docs/components/updateworkspacerequest.mdx b/docs/components/updateworkspacerequest.mdx new file mode 100644 index 00000000..f7e95917 --- /dev/null +++ b/docs/components/updateworkspacerequest.mdx @@ -0,0 +1,19 @@ +--- +title: "UpdateWorkspaceRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `default_image_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default image model for this workspace | openai/dall-e-3 | +| `default_provider_sort` | *OptionalNullable[str]* | :heavy_minus_sign: | Default provider sort preference (price, throughput, latency, exacto) | price | +| `default_text_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default text model for this workspace | openai/gpt-4o | +| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | New description for the workspace | Updated description | +| `io_logging_api_key_ids` | List[*int*] | :heavy_minus_sign: | Optional array of API key IDs to filter I/O logging | null | +| `io_logging_sampling_rate` | *Optional[float]* | :heavy_minus_sign: | Sampling rate for I/O logging (0.0001-1) | 1 | +| `is_data_discount_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether data discount logging is enabled | true | +| `is_observability_broadcast_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether broadcast is enabled | false | +| `is_observability_io_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether private logging is enabled | false | +| `name` | *Optional[str]* | :heavy_minus_sign: | New name for the workspace | Updated Workspace | +| `slug` | *Optional[str]* | :heavy_minus_sign: | New URL-friendly slug (lowercase alphanumeric segments separated by single hyphens, no leading/trailing hyphens) | updated-workspace | \ No newline at end of file diff --git a/docs/components/updateworkspaceresponse.mdx b/docs/components/updateworkspaceresponse.mdx new file mode 100644 index 00000000..28f14c82 --- /dev/null +++ b/docs/components/updateworkspaceresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "UpdateWorkspaceResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [components.Workspace](../components/workspace.mdx) | :heavy_check_mark: | N/A | \{
"created_at": "2025-08-24T10:30:00Z",
"created_by": "user_abc123",
"default_image_model": "openai/dall-e-3",
"default_provider_sort": "price",
"default_text_model": "openai/gpt-4o",
"description": "Production environment workspace",
"id": "550e8400-e29b-41d4-a716-446655440000",
"io_logging_api_key_ids": null,
"io_logging_sampling_rate": 1,
"is_data_discount_logging_enabled": true,
"is_observability_broadcast_enabled": false,
"is_observability_io_logging_enabled": false,
"name": "Production",
"slug": "production",
"updated_at": "2025-08-24T15:45:00Z"
} | \ No newline at end of file diff --git a/docs/components/upsertworkspacebudgetrequest.mdx b/docs/components/upsertworkspacebudgetrequest.mdx new file mode 100644 index 00000000..ce9dd9f2 --- /dev/null +++ b/docs/components/upsertworkspacebudgetrequest.mdx @@ -0,0 +1,9 @@ +--- +title: "UpsertWorkspaceBudgetRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | +| `limit_usd` | *float* | :heavy_check_mark: | Spending limit in USD. Must be greater than 0. | 100 | \ No newline at end of file diff --git a/docs/components/upsertworkspacebudgetresponse.mdx b/docs/components/upsertworkspacebudgetresponse.mdx new file mode 100644 index 00000000..6c975bc4 --- /dev/null +++ b/docs/components/upsertworkspacebudgetresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "UpsertWorkspaceBudgetResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [components.WorkspaceBudget](../components/workspacebudget.mdx) | :heavy_check_mark: | N/A | \{
"created_at": "2025-08-24T10:30:00Z",
"id": "770e8400-e29b-41d4-a716-446655440000",
"limit_usd": 100,
"reset_interval": "monthly",
"updated_at": "2025-08-24T15:45:00Z",
"workspace_id": "550e8400-e29b-41d4-a716-446655440000"
} | \ No newline at end of file diff --git a/docs/components/urlcitation.md b/docs/components/urlcitation.mdx similarity index 92% rename from docs/components/urlcitation.md rename to docs/components/urlcitation.mdx index 385629f9..0386b33d 100644 --- a/docs/components/urlcitation.md +++ b/docs/components/urlcitation.mdx @@ -1,5 +1,6 @@ -# URLCitation - +--- +title: "URLCitation" +--- ## Fields @@ -9,5 +10,5 @@ | `end_index` | *int* | :heavy_check_mark: | N/A | | `start_index` | *int* | :heavy_check_mark: | N/A | | `title` | *str* | :heavy_check_mark: | N/A | -| `type` | [components.URLCitationType](../components/urlcitationtype.md) | :heavy_check_mark: | N/A | +| `type` | [components.URLCitationType](../components/urlcitationtype.mdx) | :heavy_check_mark: | N/A | | `url` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/urlcitationtype.md b/docs/components/urlcitationtype.md deleted file mode 100644 index 2b6e38f5..00000000 --- a/docs/components/urlcitationtype.md +++ /dev/null @@ -1,8 +0,0 @@ -# URLCitationType - - -## Values - -| Name | Value | -| -------------- | -------------- | -| `URL_CITATION` | url_citation | \ No newline at end of file diff --git a/docs/components/urlcitationtype.mdx b/docs/components/urlcitationtype.mdx new file mode 100644 index 00000000..c5fe94eb --- /dev/null +++ b/docs/components/urlcitationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "URLCitationType" +--- + +## Example Usage + +```python +from openrouter.components import URLCitationType +value: URLCitationType = "url_citation" +``` + + +## Values + +- `"url_citation"` diff --git a/docs/components/usage.mdx b/docs/components/usage.mdx new file mode 100644 index 00000000..c400fc42 --- /dev/null +++ b/docs/components/usage.mdx @@ -0,0 +1,19 @@ +--- +title: "Usage" +--- + +Token usage information for the response + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `input_tokens` | *int* | :heavy_check_mark: | N/A | +| `input_tokens_details` | [components.InputTokensDetails](../components/inputtokensdetails.mdx) | :heavy_check_mark: | N/A | +| `output_tokens` | *int* | :heavy_check_mark: | N/A | +| `output_tokens_details` | [components.OutputTokensDetails](../components/outputtokensdetails.mdx) | :heavy_check_mark: | N/A | +| `total_tokens` | *int* | :heavy_check_mark: | N/A | +| `cost` | *OptionalNullable[float]* | :heavy_minus_sign: | Cost of the completion | +| `cost_details` | [Optional[components.UsageCostDetails]](../components/usagecostdetails.mdx) | :heavy_minus_sign: | N/A | +| `is_byok` | *Optional[bool]* | :heavy_minus_sign: | Whether a request was made using a Bring Your Own Key configuration | \ No newline at end of file diff --git a/docs/components/usagecostdetails.mdx b/docs/components/usagecostdetails.mdx new file mode 100644 index 00000000..646988e4 --- /dev/null +++ b/docs/components/usagecostdetails.mdx @@ -0,0 +1,11 @@ +--- +title: "UsageCostDetails" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | +| `upstream_inference_cost` | *OptionalNullable[float]* | :heavy_minus_sign: | N/A | +| `upstream_inference_input_cost` | *float* | :heavy_check_mark: | N/A | +| `upstream_inference_output_cost` | *float* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/userlocation.mdx b/docs/components/userlocation.mdx new file mode 100644 index 00000000..2b1814db --- /dev/null +++ b/docs/components/userlocation.mdx @@ -0,0 +1,16 @@ +--- +title: "UserLocation" +--- + +Approximate user location for location-biased search results. Passed through to native providers that support it (e.g. Anthropic). + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `city` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `country` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `region` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `timezone` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `type` | [components.WebSearchPluginType](../components/websearchplugintype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/variables.md b/docs/components/variables.mdx similarity index 92% rename from docs/components/variables.md rename to docs/components/variables.mdx index 0698d062..cd3d46d3 100644 --- a/docs/components/variables.md +++ b/docs/components/variables.mdx @@ -1,5 +1,6 @@ -# Variables - +--- +title: "Variables" +--- ## Supported Types diff --git a/docs/components/verbosity.mdx b/docs/components/verbosity.mdx new file mode 100644 index 00000000..7dedd74d --- /dev/null +++ b/docs/components/verbosity.mdx @@ -0,0 +1,23 @@ +--- +title: "Verbosity" +--- + +## Example Usage + +```python +from openrouter.components import Verbosity + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Verbosity = "low" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"low"` +- `"medium"` +- `"high"` +- `"xhigh"` +- `"max"` diff --git a/docs/components/videogenerationrequest.mdx b/docs/components/videogenerationrequest.mdx new file mode 100644 index 00000000..c624ac69 --- /dev/null +++ b/docs/components/videogenerationrequest.mdx @@ -0,0 +1,20 @@ +--- +title: "VideoGenerationRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `aspect_ratio` | [Optional[components.VideoGenerationRequestAspectRatio]](../components/videogenerationrequestaspectratio.mdx) | :heavy_minus_sign: | Aspect ratio of the generated video | 16:9 | +| `callback_url` | *Optional[str]* | :heavy_minus_sign: | URL to receive a webhook notification when the video generation job completes. Overrides the workspace-level default callback URL if set. Must be HTTPS. | https://example.com/webhook | +| `duration` | *Optional[int]* | :heavy_minus_sign: | Duration of the generated video in seconds | 8 | +| `frame_images` | List[[components.FrameImage](../components/frameimage.mdx)] | :heavy_minus_sign: | Images to use as the first and/or last frame of the generated video. Each image must specify a frame_type of first_frame or last_frame. | | +| `generate_audio` | *Optional[bool]* | :heavy_minus_sign: | Whether to generate audio alongside the video. Defaults to the endpoint's generate_audio capability flag, false if not set. | true | +| `input_references` | List[[components.InputReference](../components/inputreference.mdx)] | :heavy_minus_sign: | Reference assets to guide video generation. Accepts image, audio, and video references. Audio and video references are only honored by providers that support them (currently BytePlus Seedance 2.0); other providers use image references and ignore the rest. | | +| `model` | *str* | :heavy_check_mark: | N/A | | +| `prompt` | *str* | :heavy_check_mark: | N/A | | +| `provider` | [Optional[components.VideoGenerationRequestProvider]](../components/videogenerationrequestprovider.mdx) | :heavy_minus_sign: | Provider-specific passthrough configuration | | +| `resolution` | [Optional[components.VideoGenerationRequestResolution]](../components/videogenerationrequestresolution.mdx) | :heavy_minus_sign: | Resolution of the generated video | 720p | +| `seed` | *Optional[int]* | :heavy_minus_sign: | If specified, the generation will sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed for all providers. | | +| `size` | *Optional[str]* | :heavy_minus_sign: | Exact pixel dimensions of the generated video in "WIDTHxHEIGHT" format (e.g. "1280x720"). Interchangeable with resolution + aspect_ratio. | 1280x720 | \ No newline at end of file diff --git a/docs/components/videogenerationrequestaspectratio.mdx b/docs/components/videogenerationrequestaspectratio.mdx new file mode 100644 index 00000000..67f56887 --- /dev/null +++ b/docs/components/videogenerationrequestaspectratio.mdx @@ -0,0 +1,29 @@ +--- +title: "VideoGenerationRequestAspectRatio" +--- + +Aspect ratio of the generated video + +## Example Usage + +```python +from openrouter.components import VideoGenerationRequestAspectRatio + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: VideoGenerationRequestAspectRatio = "16:9" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"16:9"` +- `"9:16"` +- `"1:1"` +- `"4:3"` +- `"3:4"` +- `"3:2"` +- `"2:3"` +- `"21:9"` +- `"9:21"` diff --git a/docs/components/videogenerationrequestoptions.mdx b/docs/components/videogenerationrequestoptions.mdx new file mode 100644 index 00000000..f3d6474e --- /dev/null +++ b/docs/components/videogenerationrequestoptions.mdx @@ -0,0 +1,131 @@ +--- +title: "VideoGenerationRequestOptions" +--- + +Provider-specific options keyed by provider slug. Only options for the matched provider are forwarded; the rest are ignored. Unrecognized keys are silently dropped. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------- | -------------------------- | -------------------------- | -------------------------- | +| `oneai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `ai21` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `aion_labs` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `akashml` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `alibaba` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `amazon_bedrock` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `amazon_nova` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `ambient` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `anthropic` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `anyscale` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `arcee_ai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `atlas_cloud` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `atoma` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `avian` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `azure` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `baidu` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `baseten` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `black_forest_labs` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `byteplus` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `centml` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `cerebras` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `chutes` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `cirrascale` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `clarifai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `cloudflare` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `cohere` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `crofai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `crucible` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `crusoe` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `darkbloom` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `decart` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `deepinfra` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `deepseek` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `dekallm` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `digitalocean` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `enfer` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `fake_provider` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `featherless` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `fireworks` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `friendli` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `gmicloud` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `google_ai_studio` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `google_vertex` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `gopomelo` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `groq` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `heygen` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `huggingface` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `hyperbolic` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `hyperbolic_quantized` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `inception` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `inceptron` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `inferact_vllm` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `inference_net` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `infermatic` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `inflection` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `inocloud` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `io_net` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `ionstream` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `klusterai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `lambda_` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `lepton` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `liquid` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `lynn` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `lynn_private` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `mancer` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `mancer_old` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `mara` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `meta` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `minimax` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `mistral` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `modal` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `modelrun` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `modular` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `moonshotai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `morph` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `ncompass` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `nebius` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `nex_agi` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `nextbit` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `nineteen` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `novita` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `nvidia` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `octoai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `open_inference` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `openai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `parasail` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `perceptron` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `perplexity` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `phala` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `poolside` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `quiver` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `recraft` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `recursal` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `reflection` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `reka` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `relace` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `replicate` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `sakana_ai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `sambanova` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `sambanova_cloaked` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `seed` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `sf_compute` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `siliconflow` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `sourceful` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `stealth` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `stepfun` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `streamlake` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `switchpoint` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `targon` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `tenstorrent` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `together` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `together_lite` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `ubicloud` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `upstage` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `venice` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `wafer` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `wandb` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `xai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `xiaomi` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | +| `z_ai` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/videogenerationrequestprovider.mdx b/docs/components/videogenerationrequestprovider.mdx new file mode 100644 index 00000000..63d00957 --- /dev/null +++ b/docs/components/videogenerationrequestprovider.mdx @@ -0,0 +1,12 @@ +--- +title: "VideoGenerationRequestProvider" +--- + +Provider-specific passthrough configuration + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `options` | [Optional[components.VideoGenerationRequestOptions]](../components/videogenerationrequestoptions.mdx) | :heavy_minus_sign: | N/A | \{
"google-vertex": \{
"output_config": \{
"effort": "low"
}
}
} | \ No newline at end of file diff --git a/docs/components/videogenerationrequestresolution.mdx b/docs/components/videogenerationrequestresolution.mdx new file mode 100644 index 00000000..0b860ff3 --- /dev/null +++ b/docs/components/videogenerationrequestresolution.mdx @@ -0,0 +1,26 @@ +--- +title: "VideoGenerationRequestResolution" +--- + +Resolution of the generated video + +## Example Usage + +```python +from openrouter.components import VideoGenerationRequestResolution + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: VideoGenerationRequestResolution = "480p" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"480p"` +- `"720p"` +- `"1080p"` +- `"1K"` +- `"2K"` +- `"4K"` diff --git a/docs/components/videogenerationresponse.mdx b/docs/components/videogenerationresponse.mdx new file mode 100644 index 00000000..dd365941 --- /dev/null +++ b/docs/components/videogenerationresponse.mdx @@ -0,0 +1,15 @@ +--- +title: "VideoGenerationResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | +| `error` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `generation_id` | *Optional[str]* | :heavy_minus_sign: | The generation ID associated with this video generation job. Available once the job has been processed. | | +| `id` | *str* | :heavy_check_mark: | N/A | | +| `polling_url` | *str* | :heavy_check_mark: | N/A | | +| `status` | [components.VideoGenerationResponseStatus](../components/videogenerationresponsestatus.mdx) | :heavy_check_mark: | N/A | | +| `unsigned_urls` | List[*str*] | :heavy_minus_sign: | N/A | | +| `usage` | [Optional[components.VideoGenerationUsage]](../components/videogenerationusage.mdx) | :heavy_minus_sign: | Usage and cost information for the video generation. Available once the job has completed. | \{
"cost": 0.5,
"is_byok": false
} | \ No newline at end of file diff --git a/docs/components/videogenerationresponsestatus.mdx b/docs/components/videogenerationresponsestatus.mdx new file mode 100644 index 00000000..5e612dc4 --- /dev/null +++ b/docs/components/videogenerationresponsestatus.mdx @@ -0,0 +1,24 @@ +--- +title: "VideoGenerationResponseStatus" +--- + +## Example Usage + +```python +from openrouter.components import VideoGenerationResponseStatus + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: VideoGenerationResponseStatus = "pending" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"pending"` +- `"in_progress"` +- `"completed"` +- `"failed"` +- `"cancelled"` +- `"expired"` diff --git a/docs/components/videogenerationusage.mdx b/docs/components/videogenerationusage.mdx new file mode 100644 index 00000000..19166590 --- /dev/null +++ b/docs/components/videogenerationusage.mdx @@ -0,0 +1,13 @@ +--- +title: "VideoGenerationUsage" +--- + +Usage and cost information for the video generation. Available once the job has completed. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `cost` | *OptionalNullable[float]* | :heavy_minus_sign: | The cost of the video generation in USD. | +| `is_byok` | *Optional[bool]* | :heavy_minus_sign: | Whether the request was made using a Bring Your Own Key configuration. | \ No newline at end of file diff --git a/docs/components/videomodel.mdx b/docs/components/videomodel.mdx new file mode 100644 index 00000000..ad8a6c3f --- /dev/null +++ b/docs/components/videomodel.mdx @@ -0,0 +1,23 @@ +--- +title: "VideoModel" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `allowed_passthrough_parameters` | List[*str*] | :heavy_check_mark: | List of parameters that are allowed to be passed through to the provider | | +| `canonical_slug` | *str* | :heavy_check_mark: | Canonical slug for the model | openai/gpt-4 | +| `created` | *int* | :heavy_check_mark: | Unix timestamp of when the model was created | 1692901234 | +| `description` | *Optional[str]* | :heavy_minus_sign: | Description of the model | GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy. | +| `generate_audio` | *Nullable[bool]* | :heavy_check_mark: | Whether the model supports generating audio alongside video | | +| `hugging_face_id` | *OptionalNullable[str]* | :heavy_minus_sign: | Hugging Face model identifier, if applicable | microsoft/DialoGPT-medium | +| `id` | *str* | :heavy_check_mark: | Unique identifier for the model | openai/gpt-4 | +| `name` | *str* | :heavy_check_mark: | Display name of the model | GPT-4 | +| `pricing_skus` | Dict[str, *str*] | :heavy_minus_sign: | Pricing SKUs with provider prefix stripped, values as strings | | +| `seed` | *Nullable[bool]* | :heavy_check_mark: | Whether the model supports deterministic generation via seed parameter | | +| `supported_aspect_ratios` | List[[components.SupportedAspectRatio](../components/supportedaspectratio.mdx)] | :heavy_check_mark: | Supported output aspect ratios | | +| `supported_durations` | List[*int*] | :heavy_check_mark: | Supported video durations in seconds | | +| `supported_frame_images` | List[[components.SupportedFrameImage](../components/supportedframeimage.mdx)] | :heavy_check_mark: | Supported frame image types (e.g. first_frame, last_frame) | | +| `supported_resolutions` | List[[components.SupportedResolution](../components/supportedresolution.mdx)] | :heavy_check_mark: | Supported output resolutions | | +| `supported_sizes` | List[[components.SupportedSize](../components/supportedsize.mdx)] | :heavy_check_mark: | Supported output sizes (width x height) | | \ No newline at end of file diff --git a/docs/components/videomodelslistresponse.mdx b/docs/components/videomodelslistresponse.mdx new file mode 100644 index 00000000..9199c3b3 --- /dev/null +++ b/docs/components/videomodelslistresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "VideoModelsListResponse" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `data` | List[[components.VideoModel](../components/videomodel.mdx)] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/videourl.mdx b/docs/components/videourl.mdx new file mode 100644 index 00000000..7cbbaeaa --- /dev/null +++ b/docs/components/videourl.mdx @@ -0,0 +1,9 @@ +--- +title: "VideoURL" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `url` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/webfetchengineenum.mdx b/docs/components/webfetchengineenum.mdx new file mode 100644 index 00000000..ee395780 --- /dev/null +++ b/docs/components/webfetchengineenum.mdx @@ -0,0 +1,26 @@ +--- +title: "WebFetchEngineEnum" +--- + +Which fetch engine to use. "auto" (default) uses native if the provider supports it, otherwise Exa. "native" forces the provider's built-in fetch. "exa" uses Exa Contents API. "openrouter" uses direct HTTP fetch. "firecrawl" uses Firecrawl scrape (requires BYOK). "parallel" uses the Parallel extract API. + +## Example Usage + +```python +from openrouter.components import WebFetchEngineEnum + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: WebFetchEngineEnum = "auto" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"auto"` +- `"native"` +- `"openrouter"` +- `"exa"` +- `"parallel"` +- `"firecrawl"` diff --git a/docs/components/webfetchplugin.mdx b/docs/components/webfetchplugin.mdx new file mode 100644 index 00000000..f4651287 --- /dev/null +++ b/docs/components/webfetchplugin.mdx @@ -0,0 +1,13 @@ +--- +title: "WebFetchPlugin" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `allowed_domains` | List[*str*] | :heavy_minus_sign: | Only fetch from these domains. | +| `blocked_domains` | List[*str*] | :heavy_minus_sign: | Never fetch from these domains. | +| `id` | [components.WebFetchPluginID](../components/webfetchpluginid.mdx) | :heavy_check_mark: | N/A | +| `max_content_tokens` | *Optional[int]* | :heavy_minus_sign: | Maximum content length in approximate tokens. Content exceeding this limit is truncated. | +| `max_uses` | *Optional[int]* | :heavy_minus_sign: | Maximum number of web fetches per request. Once exceeded, the tool returns an error. | \ No newline at end of file diff --git a/docs/components/webfetchpluginid.mdx b/docs/components/webfetchpluginid.mdx new file mode 100644 index 00000000..962475a5 --- /dev/null +++ b/docs/components/webfetchpluginid.mdx @@ -0,0 +1,15 @@ +--- +title: "WebFetchPluginID" +--- + +## Example Usage + +```python +from openrouter.components import WebFetchPluginID +value: WebFetchPluginID = "web-fetch" +``` + + +## Values + +- `"web-fetch"` diff --git a/docs/components/webfetchservertool.mdx b/docs/components/webfetchservertool.mdx new file mode 100644 index 00000000..fe93938c --- /dev/null +++ b/docs/components/webfetchservertool.mdx @@ -0,0 +1,13 @@ +--- +title: "WebFetchServerTool" +--- + +OpenRouter built-in server tool: fetches full content from a URL (web page or PDF) + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `parameters` | [Optional[components.WebFetchServerToolConfig]](../components/webfetchservertoolconfig.mdx) | :heavy_minus_sign: | Configuration for the openrouter:web_fetch server tool | \{
"max_content_tokens": 100000,
"max_uses": 10
} | +| `type` | [components.WebFetchServerToolType](../components/webfetchservertooltype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/webfetchservertoolconfig.mdx b/docs/components/webfetchservertoolconfig.mdx new file mode 100644 index 00000000..1d52d81a --- /dev/null +++ b/docs/components/webfetchservertoolconfig.mdx @@ -0,0 +1,16 @@ +--- +title: "WebFetchServerToolConfig" +--- + +Configuration for the openrouter:web_fetch server tool + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `allowed_domains` | List[*str*] | :heavy_minus_sign: | Only fetch from these domains. | | +| `blocked_domains` | List[*str*] | :heavy_minus_sign: | Never fetch from these domains. | | +| `engine` | [Optional[components.WebFetchEngineEnum]](../components/webfetchengineenum.mdx) | :heavy_minus_sign: | Which fetch engine to use. "auto" (default) uses native if the provider supports it, otherwise Exa. "native" forces the provider's built-in fetch. "exa" uses Exa Contents API. "openrouter" uses direct HTTP fetch. "firecrawl" uses Firecrawl scrape (requires BYOK). "parallel" uses the Parallel extract API. | auto | +| `max_content_tokens` | *Optional[int]* | :heavy_minus_sign: | Maximum content length in approximate tokens. Content exceeding this limit is truncated. | 100000 | +| `max_uses` | *Optional[int]* | :heavy_minus_sign: | Maximum number of web fetches per request. Once exceeded, the tool returns an error. | 10 | \ No newline at end of file diff --git a/docs/components/webfetchservertooltype.mdx b/docs/components/webfetchservertooltype.mdx new file mode 100644 index 00000000..d507399c --- /dev/null +++ b/docs/components/webfetchservertooltype.mdx @@ -0,0 +1,15 @@ +--- +title: "WebFetchServerToolType" +--- + +## Example Usage + +```python +from openrouter.components import WebFetchServerToolType +value: WebFetchServerToolType = "openrouter:web_fetch" +``` + + +## Values + +- `"openrouter:web_fetch"` diff --git a/docs/components/websearchcallcompletedevent.mdx b/docs/components/websearchcallcompletedevent.mdx new file mode 100644 index 00000000..34bcc1fe --- /dev/null +++ b/docs/components/websearchcallcompletedevent.mdx @@ -0,0 +1,15 @@ +--- +title: "WebSearchCallCompletedEvent" +--- + +Web search call completed + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.WebSearchCallCompletedEventType](../components/websearchcallcompletedeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/websearchcallcompletedeventtype.mdx b/docs/components/websearchcallcompletedeventtype.mdx new file mode 100644 index 00000000..e1e9088e --- /dev/null +++ b/docs/components/websearchcallcompletedeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "WebSearchCallCompletedEventType" +--- + +## Example Usage + +```python +from openrouter.components import WebSearchCallCompletedEventType +value: WebSearchCallCompletedEventType = "response.web_search_call.completed" +``` + + +## Values + +- `"response.web_search_call.completed"` diff --git a/docs/components/websearchcallinprogressevent.mdx b/docs/components/websearchcallinprogressevent.mdx new file mode 100644 index 00000000..eaf3e606 --- /dev/null +++ b/docs/components/websearchcallinprogressevent.mdx @@ -0,0 +1,15 @@ +--- +title: "WebSearchCallInProgressEvent" +--- + +Web search call in progress + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.WebSearchCallInProgressEventType](../components/websearchcallinprogresseventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/websearchcallinprogresseventtype.mdx b/docs/components/websearchcallinprogresseventtype.mdx new file mode 100644 index 00000000..04ef37c8 --- /dev/null +++ b/docs/components/websearchcallinprogresseventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "WebSearchCallInProgressEventType" +--- + +## Example Usage + +```python +from openrouter.components import WebSearchCallInProgressEventType +value: WebSearchCallInProgressEventType = "response.web_search_call.in_progress" +``` + + +## Values + +- `"response.web_search_call.in_progress"` diff --git a/docs/components/websearchcallsearchingevent.mdx b/docs/components/websearchcallsearchingevent.mdx new file mode 100644 index 00000000..5cd28105 --- /dev/null +++ b/docs/components/websearchcallsearchingevent.mdx @@ -0,0 +1,15 @@ +--- +title: "WebSearchCallSearchingEvent" +--- + +Web search call is searching + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `item_id` | *str* | :heavy_check_mark: | N/A | +| `output_index` | *int* | :heavy_check_mark: | N/A | +| `sequence_number` | *int* | :heavy_check_mark: | N/A | +| `type` | [components.WebSearchCallSearchingEventType](../components/websearchcallsearchingeventtype.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/websearchcallsearchingeventtype.mdx b/docs/components/websearchcallsearchingeventtype.mdx new file mode 100644 index 00000000..6453f10f --- /dev/null +++ b/docs/components/websearchcallsearchingeventtype.mdx @@ -0,0 +1,15 @@ +--- +title: "WebSearchCallSearchingEventType" +--- + +## Example Usage + +```python +from openrouter.components import WebSearchCallSearchingEventType +value: WebSearchCallSearchingEventType = "response.web_search_call.searching" +``` + + +## Values + +- `"response.web_search_call.searching"` diff --git a/docs/components/websearchconfig.mdx b/docs/components/websearchconfig.mdx new file mode 100644 index 00000000..7fce2c52 --- /dev/null +++ b/docs/components/websearchconfig.mdx @@ -0,0 +1,16 @@ +--- +title: "WebSearchConfig" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `allowed_domains` | List[*str*] | :heavy_minus_sign: | Limit search results to these domains. Supported by Exa, Firecrawl, Parallel, Perplexity, and most native providers (Anthropic, OpenAI, xAI). Cannot be used with excluded_domains. | | +| `engine` | [Optional[components.WebSearchEngineEnum]](../components/websearchengineenum.mdx) | :heavy_minus_sign: | Which search engine to use. "auto" (default) uses native if the provider supports it, otherwise Exa. "native" forces the provider's built-in search. "exa" forces the Exa search API. "firecrawl" uses Firecrawl (requires BYOK). "parallel" uses the Parallel search API. "perplexity" uses the Perplexity Search API (raw ranked results). | auto | +| `excluded_domains` | List[*str*] | :heavy_minus_sign: | Exclude search results from these domains. Supported by Exa, Firecrawl, Parallel, Perplexity, Anthropic, and xAI. Not supported with OpenAI (silently ignored). Cannot be used with allowed_domains. | | +| `max_characters` | *Optional[int]* | :heavy_minus_sign: | Exact maximum number of characters of content per search result. Applies to the Exa, Parallel, and Perplexity engines; ignored with native provider search and Firecrawl. For Exa, caps highlight content per result. For Parallel, caps excerpt content per result (default 1,500 when omitted). For Perplexity, maps to the native `max_tokens_per_page` parameter (converted from characters to tokens) and trims the response to the exact character cap. When both `max_characters` and `search_context_size` are set, `max_characters` takes precedence. When omitted, falls back to `search_context_size` mapping (Exa) or engine defaults (Parallel, Perplexity). | 2000 | +| `max_results` | *Optional[int]* | :heavy_minus_sign: | Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, Parallel, and Perplexity engines; ignored with native provider search. Perplexity supports a maximum of 20; values above 20 are clamped. | 5 | +| `max_total_results` | *Optional[int]* | :heavy_minus_sign: | Maximum total number of search results across all search calls in a single request. Once this limit is reached, the tool will stop returning new results. Useful for controlling cost and context size in agentic loops. Defaults to 50 when not specified. | 50 | +| `search_context_size` | [Optional[components.SearchQualityLevel]](../components/searchqualitylevel.mdx) | :heavy_minus_sign: | How much context to retrieve per result. Applies to Exa, Parallel, and Perplexity engines; ignored with native provider search and Firecrawl. For Exa, pins a fixed per-result character cap (low=5,000, medium=15,000, high=30,000); when omitted, Exa picks an adaptive size per query and document (typically ~2,000–4,000 characters per result). For Parallel, controls the total characters across all results; when omitted, Parallel uses its own default size. For Perplexity, maps directly to the Search API's native search_context_size parameter. Overridden by `max_characters` when both are set. | medium | +| `user_location` | [Optional[components.WebSearchUserLocationServerTool]](../components/websearchuserlocationservertool.mdx) | :heavy_minus_sign: | Approximate user location for location-biased results. | \{
"city": "San Francisco",
"country": "US",
"region": "California",
"timezone": "America/Los_Angeles",
"type": "approximate"
} | \ No newline at end of file diff --git a/docs/components/websearchdomainfilter.mdx b/docs/components/websearchdomainfilter.mdx new file mode 100644 index 00000000..7f963cd9 --- /dev/null +++ b/docs/components/websearchdomainfilter.mdx @@ -0,0 +1,10 @@ +--- +title: "WebSearchDomainFilter" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `allowed_domains` | List[*str*] | :heavy_minus_sign: | N/A | +| `excluded_domains` | List[*str*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/websearchengine.md b/docs/components/websearchengine.md deleted file mode 100644 index 8772c8f2..00000000 --- a/docs/components/websearchengine.md +++ /dev/null @@ -1,14 +0,0 @@ -# WebSearchEngine - -The search engine to use for web search. - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `NATIVE` | native | -| `EXA` | exa | -| `FIRECRAWL` | firecrawl | -| `PARALLEL` | parallel | -| `PERPLEXITY` | perplexity | \ No newline at end of file diff --git a/docs/components/websearchengine.mdx b/docs/components/websearchengine.mdx new file mode 100644 index 00000000..32467b81 --- /dev/null +++ b/docs/components/websearchengine.mdx @@ -0,0 +1,25 @@ +--- +title: "WebSearchEngine" +--- + +The search engine to use for web search. + +## Example Usage + +```python +from openrouter.components import WebSearchEngine + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: WebSearchEngine = "native" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"native"` +- `"exa"` +- `"firecrawl"` +- `"parallel"` +- `"perplexity"` diff --git a/docs/components/websearchengineenum.mdx b/docs/components/websearchengineenum.mdx new file mode 100644 index 00000000..d0c7f832 --- /dev/null +++ b/docs/components/websearchengineenum.mdx @@ -0,0 +1,26 @@ +--- +title: "WebSearchEngineEnum" +--- + +Which search engine to use. "auto" (default) uses native if the provider supports it, otherwise Exa. "native" forces the provider's built-in search. "exa" forces the Exa search API. "firecrawl" uses Firecrawl (requires BYOK). "parallel" uses the Parallel search API. "perplexity" uses the Perplexity Search API (raw ranked results). + +## Example Usage + +```python +from openrouter.components import WebSearchEngineEnum + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: WebSearchEngineEnum = "native" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"native"` +- `"exa"` +- `"parallel"` +- `"firecrawl"` +- `"perplexity"` +- `"auto"` diff --git a/docs/components/websearchplugin.mdx b/docs/components/websearchplugin.mdx new file mode 100644 index 00000000..c4cbc7b9 --- /dev/null +++ b/docs/components/websearchplugin.mdx @@ -0,0 +1,17 @@ +--- +title: "WebSearchPlugin" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| `enabled` | *Optional[bool]* | :heavy_minus_sign: | Set to false to disable the web-search plugin for this request. Defaults to true. | | +| `engine` | [Optional[components.WebSearchEngine]](../components/websearchengine.mdx) | :heavy_minus_sign: | The search engine to use for web search. | exa | +| `exclude_domains` | List[*str*] | :heavy_minus_sign: | A list of domains to exclude from web search results. Supports wildcards (e.g. "*.substack.com") and path filtering (e.g. "openai.com/blog"). | [
"example.com",
"*.substack.com",
"openai.com/blog"
] | +| `id` | [components.WebSearchPluginID](../components/websearchpluginid.mdx) | :heavy_check_mark: | N/A | | +| `include_domains` | List[*str*] | :heavy_minus_sign: | A list of domains to restrict web search results to. Supports wildcards (e.g. "*.substack.com") and path filtering (e.g. "openai.com/blog"). | [
"example.com",
"*.substack.com",
"openai.com/blog"
] | +| `max_results` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `max_uses` | *Optional[int]* | :heavy_minus_sign: | Maximum number of times the model can invoke web search in a single turn. Passed through to native providers that support it (e.g. Anthropic). | | +| `search_prompt` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `user_location` | [OptionalNullable[components.UserLocation]](../components/userlocation.mdx) | :heavy_minus_sign: | N/A | \{
"city": "San Francisco",
"country": "US",
"region": "California",
"timezone": "America/Los_Angeles",
"type": "approximate"
} | \ No newline at end of file diff --git a/docs/components/websearchpluginid.mdx b/docs/components/websearchpluginid.mdx new file mode 100644 index 00000000..4e2731fc --- /dev/null +++ b/docs/components/websearchpluginid.mdx @@ -0,0 +1,15 @@ +--- +title: "WebSearchPluginID" +--- + +## Example Usage + +```python +from openrouter.components import WebSearchPluginID +value: WebSearchPluginID = "web" +``` + + +## Values + +- `"web"` diff --git a/docs/components/websearchplugintype.mdx b/docs/components/websearchplugintype.mdx new file mode 100644 index 00000000..35edaa6c --- /dev/null +++ b/docs/components/websearchplugintype.mdx @@ -0,0 +1,15 @@ +--- +title: "WebSearchPluginType" +--- + +## Example Usage + +```python +from openrouter.components import WebSearchPluginType +value: WebSearchPluginType = "approximate" +``` + + +## Values + +- `"approximate"` diff --git a/docs/components/websearchservertool.mdx b/docs/components/websearchservertool.mdx new file mode 100644 index 00000000..12501386 --- /dev/null +++ b/docs/components/websearchservertool.mdx @@ -0,0 +1,17 @@ +--- +title: "WebSearchServerTool" +--- + +Web search tool configuration (2025-08-26 version) + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `engine` | [Optional[components.WebSearchEngineEnum]](../components/websearchengineenum.mdx) | :heavy_minus_sign: | Which search engine to use. "auto" (default) uses native if the provider supports it, otherwise Exa. "native" forces the provider's built-in search. "exa" forces the Exa search API. "firecrawl" uses Firecrawl (requires BYOK). "parallel" uses the Parallel search API. "perplexity" uses the Perplexity Search API (raw ranked results). | auto | +| `filters` | [OptionalNullable[components.WebSearchDomainFilter]](../components/websearchdomainfilter.mdx) | :heavy_minus_sign: | N/A | \{
"allowed_domains": [
"example.com"
],
"excluded_domains": [
"spam.com"
]
} | +| `max_results` | *Optional[int]* | :heavy_minus_sign: | Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, Parallel, and Perplexity engines; ignored with native provider search. Perplexity supports a maximum of 20; values above 20 are clamped. | 5 | +| `search_context_size` | [Optional[components.SearchContextSizeEnum]](../components/searchcontextsizeenum.mdx) | :heavy_minus_sign: | Size of the search context for web search tools | medium | +| `type` | [components.WebSearchServerToolType](../components/websearchservertooltype.mdx) | :heavy_check_mark: | N/A | | +| `user_location` | [OptionalNullable[components.WebSearchUserLocation]](../components/websearchuserlocation.mdx) | :heavy_minus_sign: | User location information for web search | \{
"city": "San Francisco",
"country": "USA",
"region": "California",
"timezone": "America/Los_Angeles",
"type": "approximate"
} | \ No newline at end of file diff --git a/docs/components/websearchservertoolconfig.mdx b/docs/components/websearchservertoolconfig.mdx new file mode 100644 index 00000000..f06444b6 --- /dev/null +++ b/docs/components/websearchservertoolconfig.mdx @@ -0,0 +1,19 @@ +--- +title: "WebSearchServerToolConfig" +--- + +Configuration for the openrouter:web_search server tool + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `allowed_domains` | List[*str*] | :heavy_minus_sign: | Limit search results to these domains. Supported by Exa, Firecrawl, Parallel, Perplexity, and most native providers (Anthropic, OpenAI, xAI). Cannot be used with excluded_domains. | | +| `engine` | [Optional[components.WebSearchEngineEnum]](../components/websearchengineenum.mdx) | :heavy_minus_sign: | Which search engine to use. "auto" (default) uses native if the provider supports it, otherwise Exa. "native" forces the provider's built-in search. "exa" forces the Exa search API. "firecrawl" uses Firecrawl (requires BYOK). "parallel" uses the Parallel search API. "perplexity" uses the Perplexity Search API (raw ranked results). | auto | +| `excluded_domains` | List[*str*] | :heavy_minus_sign: | Exclude search results from these domains. Supported by Exa, Firecrawl, Parallel, Perplexity, Anthropic, and xAI. Not supported with OpenAI (silently ignored). Cannot be used with allowed_domains. | | +| `max_characters` | *Optional[int]* | :heavy_minus_sign: | Exact maximum number of characters of content per search result. Applies to the Exa, Parallel, and Perplexity engines; ignored with native provider search and Firecrawl. For Exa, caps highlight content per result. For Parallel, caps excerpt content per result (default 1,500 when omitted). For Perplexity, maps to the native `max_tokens_per_page` parameter (converted from characters to tokens) and trims the response to the exact character cap. When both `max_characters` and `search_context_size` are set, `max_characters` takes precedence. When omitted, falls back to `search_context_size` mapping (Exa) or engine defaults (Parallel, Perplexity). | 2000 | +| `max_results` | *Optional[int]* | :heavy_minus_sign: | Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, Parallel, and Perplexity engines; ignored with native provider search. Perplexity supports a maximum of 20; values above 20 are clamped. | 5 | +| `max_total_results` | *Optional[int]* | :heavy_minus_sign: | Maximum total number of search results across all search calls in a single request. Once this limit is reached, the tool will stop returning new results. Useful for controlling cost and context size in agentic loops. Defaults to 50 when not specified. | 50 | +| `search_context_size` | [Optional[components.SearchQualityLevel]](../components/searchqualitylevel.mdx) | :heavy_minus_sign: | How much context to retrieve per result. Applies to Exa, Parallel, and Perplexity engines; ignored with native provider search and Firecrawl. For Exa, pins a fixed per-result character cap (low=5,000, medium=15,000, high=30,000); when omitted, Exa picks an adaptive size per query and document (typically ~2,000–4,000 characters per result). For Parallel, controls the total characters across all results; when omitted, Parallel uses its own default size. For Perplexity, maps directly to the Search API's native search_context_size parameter. Overridden by `max_characters` when both are set. | medium | +| `user_location` | [Optional[components.WebSearchUserLocationServerTool]](../components/websearchuserlocationservertool.mdx) | :heavy_minus_sign: | Approximate user location for location-biased results. | \{
"city": "San Francisco",
"country": "US",
"region": "California",
"timezone": "America/Los_Angeles",
"type": "approximate"
} | \ No newline at end of file diff --git a/docs/components/websearchservertoolopenrouter.mdx b/docs/components/websearchservertoolopenrouter.mdx new file mode 100644 index 00000000..1e3301d3 --- /dev/null +++ b/docs/components/websearchservertoolopenrouter.mdx @@ -0,0 +1,13 @@ +--- +title: "WebSearchServerToolOpenRouter" +--- + +OpenRouter built-in server tool: searches the web for current information + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `parameters` | [Optional[components.WebSearchServerToolConfig]](../components/websearchservertoolconfig.mdx) | :heavy_minus_sign: | Configuration for the openrouter:web_search server tool | \{
"max_results": 5,
"search_context_size": "medium"
} | +| `type` | [components.WebSearchServerToolOpenRouterType](../components/websearchservertoolopenroutertype.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/components/websearchservertoolopenroutertype.mdx b/docs/components/websearchservertoolopenroutertype.mdx new file mode 100644 index 00000000..4a6088e9 --- /dev/null +++ b/docs/components/websearchservertoolopenroutertype.mdx @@ -0,0 +1,15 @@ +--- +title: "WebSearchServerToolOpenRouterType" +--- + +## Example Usage + +```python +from openrouter.components import WebSearchServerToolOpenRouterType +value: WebSearchServerToolOpenRouterType = "openrouter:web_search" +``` + + +## Values + +- `"openrouter:web_search"` diff --git a/docs/components/websearchservertooltype.mdx b/docs/components/websearchservertooltype.mdx new file mode 100644 index 00000000..0a2ba3db --- /dev/null +++ b/docs/components/websearchservertooltype.mdx @@ -0,0 +1,15 @@ +--- +title: "WebSearchServerToolType" +--- + +## Example Usage + +```python +from openrouter.components import WebSearchServerToolType +value: WebSearchServerToolType = "web_search_2025_08_26" +``` + + +## Values + +- `"web_search_2025_08_26"` diff --git a/docs/components/websearchsource.mdx b/docs/components/websearchsource.mdx new file mode 100644 index 00000000..870075f9 --- /dev/null +++ b/docs/components/websearchsource.mdx @@ -0,0 +1,10 @@ +--- +title: "WebSearchSource" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `type` | [components.WebSearchSourceType](../components/websearchsourcetype.mdx) | :heavy_check_mark: | N/A | +| `url` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/components/websearchsourcetype.mdx b/docs/components/websearchsourcetype.mdx new file mode 100644 index 00000000..a7be3b3d --- /dev/null +++ b/docs/components/websearchsourcetype.mdx @@ -0,0 +1,15 @@ +--- +title: "WebSearchSourceType" +--- + +## Example Usage + +```python +from openrouter.components import WebSearchSourceType +value: WebSearchSourceType = "url" +``` + + +## Values + +- `"url"` diff --git a/docs/components/websearchstatus.md b/docs/components/websearchstatus.md deleted file mode 100644 index 53303ec3..00000000 --- a/docs/components/websearchstatus.md +++ /dev/null @@ -1,11 +0,0 @@ -# WebSearchStatus - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `COMPLETED` | completed | -| `SEARCHING` | searching | -| `IN_PROGRESS` | in_progress | -| `FAILED` | failed | \ No newline at end of file diff --git a/docs/components/websearchstatus.mdx b/docs/components/websearchstatus.mdx new file mode 100644 index 00000000..d24fe5f4 --- /dev/null +++ b/docs/components/websearchstatus.mdx @@ -0,0 +1,22 @@ +--- +title: "WebSearchStatus" +--- + +## Example Usage + +```python +from openrouter.components import WebSearchStatus + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: WebSearchStatus = "completed" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"completed"` +- `"searching"` +- `"in_progress"` +- `"failed"` diff --git a/docs/components/websearchuserlocation.mdx b/docs/components/websearchuserlocation.mdx new file mode 100644 index 00000000..dccb9d9a --- /dev/null +++ b/docs/components/websearchuserlocation.mdx @@ -0,0 +1,16 @@ +--- +title: "WebSearchUserLocation" +--- + +User location information for web search + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `city` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `country` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `region` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `timezone` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `type` | [Optional[components.WebSearchUserLocationType]](../components/websearchuserlocationtype.mdx) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/websearchuserlocationservertool.mdx b/docs/components/websearchuserlocationservertool.mdx new file mode 100644 index 00000000..98a2e0b6 --- /dev/null +++ b/docs/components/websearchuserlocationservertool.mdx @@ -0,0 +1,16 @@ +--- +title: "WebSearchUserLocationServerTool" +--- + +Approximate user location for location-biased results. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `city` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `country` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `region` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `timezone` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `type` | [Optional[components.WebSearchUserLocationServerToolType]](../components/websearchuserlocationservertooltype.mdx) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/components/websearchuserlocationservertooltype.mdx b/docs/components/websearchuserlocationservertooltype.mdx new file mode 100644 index 00000000..e10fc7e4 --- /dev/null +++ b/docs/components/websearchuserlocationservertooltype.mdx @@ -0,0 +1,15 @@ +--- +title: "WebSearchUserLocationServerToolType" +--- + +## Example Usage + +```python +from openrouter.components import WebSearchUserLocationServerToolType +value: WebSearchUserLocationServerToolType = "approximate" +``` + + +## Values + +- `"approximate"` diff --git a/docs/components/websearchuserlocationtype.mdx b/docs/components/websearchuserlocationtype.mdx new file mode 100644 index 00000000..e8a68909 --- /dev/null +++ b/docs/components/websearchuserlocationtype.mdx @@ -0,0 +1,15 @@ +--- +title: "WebSearchUserLocationType" +--- + +## Example Usage + +```python +from openrouter.components import WebSearchUserLocationType +value: WebSearchUserLocationType = "approximate" +``` + + +## Values + +- `"approximate"` diff --git a/docs/components/workspace.mdx b/docs/components/workspace.mdx new file mode 100644 index 00000000..897afc9c --- /dev/null +++ b/docs/components/workspace.mdx @@ -0,0 +1,23 @@ +--- +title: "Workspace" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `created_at` | *str* | :heavy_check_mark: | ISO 8601 timestamp of when the workspace was created | 2025-08-24T10:30:00Z | +| `created_by` | *Nullable[str]* | :heavy_check_mark: | User ID of the workspace creator | user_abc123 | +| `default_image_model` | *Nullable[str]* | :heavy_check_mark: | Default image model for this workspace | openai/dall-e-3 | +| `default_provider_sort` | *Nullable[str]* | :heavy_check_mark: | Default provider sort preference (price, throughput, latency, exacto) | price | +| `default_text_model` | *Nullable[str]* | :heavy_check_mark: | Default text model for this workspace | openai/gpt-4o | +| `description` | *Nullable[str]* | :heavy_check_mark: | Description of the workspace | Production environment workspace | +| `id` | *str* | :heavy_check_mark: | Unique identifier for the workspace | 550e8400-e29b-41d4-a716-446655440000 | +| `io_logging_api_key_ids` | List[*int*] | :heavy_check_mark: | Optional array of API key IDs to filter I/O logging. Null means all keys are logged. | null | +| `io_logging_sampling_rate` | *float* | :heavy_check_mark: | Sampling rate for I/O logging (0.0001-1). 1 means 100% of requests are logged. | 1 | +| `is_data_discount_logging_enabled` | *bool* | :heavy_check_mark: | Whether data discount logging is enabled for this workspace | true | +| `is_observability_broadcast_enabled` | *bool* | :heavy_check_mark: | Whether broadcast is enabled for this workspace | false | +| `is_observability_io_logging_enabled` | *bool* | :heavy_check_mark: | Whether private logging is enabled for this workspace | false | +| `name` | *str* | :heavy_check_mark: | Name of the workspace | Production | +| `slug` | *str* | :heavy_check_mark: | URL-friendly slug for the workspace | production | +| `updated_at` | *Nullable[str]* | :heavy_check_mark: | ISO 8601 timestamp of when the workspace was last updated | 2025-08-24T15:45:00Z | \ No newline at end of file diff --git a/docs/components/workspacebudget.mdx b/docs/components/workspacebudget.mdx new file mode 100644 index 00000000..d9aa348c --- /dev/null +++ b/docs/components/workspacebudget.mdx @@ -0,0 +1,14 @@ +--- +title: "WorkspaceBudget" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `created_at` | *str* | :heavy_check_mark: | ISO 8601 timestamp of when the budget was created | 2025-08-24T10:30:00Z | +| `id` | *str* | :heavy_check_mark: | Unique identifier for the budget | 770e8400-e29b-41d4-a716-446655440000 | +| `limit_usd` | *float* | :heavy_check_mark: | Spending limit in USD for this interval | 100 | +| `reset_interval` | [Nullable[components.ResetInterval]](../components/resetinterval.mdx) | :heavy_check_mark: | Interval at which spend resets. Null means a lifetime (one-time) budget. | monthly | +| `updated_at` | *str* | :heavy_check_mark: | ISO 8601 timestamp of when the budget was last updated | 2025-08-24T15:45:00Z | +| `workspace_id` | *str* | :heavy_check_mark: | ID of the workspace the budget belongs to | 550e8400-e29b-41d4-a716-446655440000 | \ No newline at end of file diff --git a/docs/components/workspacebudgetinterval.mdx b/docs/components/workspacebudgetinterval.mdx new file mode 100644 index 00000000..d6b8881a --- /dev/null +++ b/docs/components/workspacebudgetinterval.mdx @@ -0,0 +1,24 @@ +--- +title: "WorkspaceBudgetInterval" +--- + +Budget reset interval. Use "lifetime" for a one-time budget that never resets. + +## Example Usage + +```python +from openrouter.components import WorkspaceBudgetInterval + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: WorkspaceBudgetInterval = "daily" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"daily"` +- `"weekly"` +- `"monthly"` +- `"lifetime"` diff --git a/docs/components/workspacemember.mdx b/docs/components/workspacemember.mdx new file mode 100644 index 00000000..3e77b3d5 --- /dev/null +++ b/docs/components/workspacemember.mdx @@ -0,0 +1,13 @@ +--- +title: "WorkspaceMember" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `created_at` | *str* | :heavy_check_mark: | ISO 8601 timestamp of when the membership was created | 2025-08-24T10:30:00Z | +| `id` | *str* | :heavy_check_mark: | Unique identifier for the workspace membership | 660e8400-e29b-41d4-a716-446655440000 | +| `role` | [components.WorkspaceMemberRole](../components/workspacememberrole.mdx) | :heavy_check_mark: | Role of the member in the workspace | member | +| `user_id` | *str* | :heavy_check_mark: | Clerk user ID of the member | user_abc123 | +| `workspace_id` | *str* | :heavy_check_mark: | ID of the workspace | 550e8400-e29b-41d4-a716-446655440000 | \ No newline at end of file diff --git a/docs/components/workspacememberrole.mdx b/docs/components/workspacememberrole.mdx new file mode 100644 index 00000000..aa60a54a --- /dev/null +++ b/docs/components/workspacememberrole.mdx @@ -0,0 +1,22 @@ +--- +title: "WorkspaceMemberRole" +--- + +Role of the member in the workspace + +## Example Usage + +```python +from openrouter.components import WorkspaceMemberRole + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: WorkspaceMemberRole = "admin" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"admin"` +- `"member"` diff --git a/docs/docs.json b/docs/docs.json new file mode 100644 index 00000000..e7e14135 --- /dev/null +++ b/docs/docs.json @@ -0,0 +1,50 @@ +{ + "$schema": "https://mintlify.com/docs.json", + "theme": "mint", + "name": "Python SDK", + "colors": { + "primary": "#6467f2", + "light": "#6467f2", + "dark": "#6467f2" + }, + "navigation": { + "groups": [ + { + "group": "Getting Started", + "pages": ["overview"] + }, + { + "group": "API Reference", + "pages": [ + "sdks/chat/README", + "sdks/responses/README", + "sdks/models/README", + "sdks/embeddings/README", + "sdks/rerank/README", + "sdks/images/README", + "sdks/tts/README", + "sdks/stt/README", + "sdks/videogeneration/README", + "sdks/classifications/README", + "sdks/generations/README", + "sdks/endpoints/README", + "sdks/providers/README", + "sdks/credits/README", + "sdks/apikeys/README", + "sdks/oauth/README", + "sdks/byok/README", + "sdks/presets/README", + "sdks/guardrails/README", + "sdks/datasets/README", + "sdks/files/README", + "sdks/analytics/README", + "sdks/betaanalytics/README", + "sdks/benchmarks/README", + "sdks/observability/README", + "sdks/organization/README", + "sdks/workspaces/README" + ] + } + ] + } +} diff --git a/docs/errors/badgatewayresponseerror.md b/docs/errors/badgatewayresponseerror.mdx similarity index 84% rename from docs/errors/badgatewayresponseerror.md rename to docs/errors/badgatewayresponseerror.mdx index 5bd359e8..62ce7a1a 100644 --- a/docs/errors/badgatewayresponseerror.md +++ b/docs/errors/badgatewayresponseerror.mdx @@ -1,4 +1,6 @@ -# BadGatewayResponseError +--- +title: "BadGatewayResponseError" +--- Bad Gateway - Provider/upstream API failure @@ -7,6 +9,6 @@ Bad Gateway - Provider/upstream API failure | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `error` | [components.BadGatewayResponseErrorData](../components/badgatewayresponseerrordata.md) | :heavy_check_mark: | Error data for BadGatewayResponse | {
"code": 502,
"message": "Provider returned error"
} | +| `error` | [components.BadGatewayResponseErrorData](../components/badgatewayresponseerrordata.mdx) | :heavy_check_mark: | Error data for BadGatewayResponse | \{
"code": 502,
"message": "Provider returned error"
} | | `openrouter_metadata` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | | | `user_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/errors/badrequestresponseerror.md b/docs/errors/badrequestresponseerror.mdx similarity index 84% rename from docs/errors/badrequestresponseerror.md rename to docs/errors/badrequestresponseerror.mdx index 6bb5d84d..5453987e 100644 --- a/docs/errors/badrequestresponseerror.md +++ b/docs/errors/badrequestresponseerror.mdx @@ -1,4 +1,6 @@ -# BadRequestResponseError +--- +title: "BadRequestResponseError" +--- Bad Request - Invalid request parameters or malformed input @@ -7,6 +9,6 @@ Bad Request - Invalid request parameters or malformed input | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `error` | [components.BadRequestResponseErrorData](../components/badrequestresponseerrordata.md) | :heavy_check_mark: | Error data for BadRequestResponse | {
"code": 400,
"message": "Invalid request parameters"
} | +| `error` | [components.BadRequestResponseErrorData](../components/badrequestresponseerrordata.mdx) | :heavy_check_mark: | Error data for BadRequestResponse | \{
"code": 400,
"message": "Invalid request parameters"
} | | `openrouter_metadata` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | | | `user_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/errors/conflictresponseerror.mdx b/docs/errors/conflictresponseerror.mdx new file mode 100644 index 00000000..e3a48471 --- /dev/null +++ b/docs/errors/conflictresponseerror.mdx @@ -0,0 +1,14 @@ +--- +title: "ConflictResponseError" +--- + +Conflict - Resource conflict or concurrent modification + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `error` | [components.ConflictResponseErrorData](../components/conflictresponseerrordata.mdx) | :heavy_check_mark: | Error data for ConflictResponse | \{
"code": 409,
"message": "Resource conflict. Please try again later."
} | +| `openrouter_metadata` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | | +| `user_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/errors/edgenetworktimeoutresponseerror.md b/docs/errors/edgenetworktimeoutresponseerror.mdx similarity index 86% rename from docs/errors/edgenetworktimeoutresponseerror.md rename to docs/errors/edgenetworktimeoutresponseerror.mdx index 3720bcc7..5e48d2eb 100644 --- a/docs/errors/edgenetworktimeoutresponseerror.md +++ b/docs/errors/edgenetworktimeoutresponseerror.mdx @@ -1,4 +1,6 @@ -# EdgeNetworkTimeoutResponseError +--- +title: "EdgeNetworkTimeoutResponseError" +--- Infrastructure Timeout - Provider request timed out at edge network @@ -7,6 +9,6 @@ Infrastructure Timeout - Provider request timed out at edge network | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -| `error` | [components.EdgeNetworkTimeoutResponseErrorData](../components/edgenetworktimeoutresponseerrordata.md) | :heavy_check_mark: | Error data for EdgeNetworkTimeoutResponse | {
"code": 524,
"message": "Request timed out. Please try again later."
} | +| `error` | [components.EdgeNetworkTimeoutResponseErrorData](../components/edgenetworktimeoutresponseerrordata.mdx) | :heavy_check_mark: | Error data for EdgeNetworkTimeoutResponse | \{
"code": 524,
"message": "Request timed out. Please try again later."
} | | `openrouter_metadata` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | | | `user_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/errors/forbiddenresponseerror.md b/docs/errors/forbiddenresponseerror.mdx similarity index 84% rename from docs/errors/forbiddenresponseerror.md rename to docs/errors/forbiddenresponseerror.mdx index 8015439a..c520471d 100644 --- a/docs/errors/forbiddenresponseerror.md +++ b/docs/errors/forbiddenresponseerror.mdx @@ -1,4 +1,6 @@ -# ForbiddenResponseError +--- +title: "ForbiddenResponseError" +--- Forbidden - Authentication successful but insufficient permissions @@ -7,6 +9,6 @@ Forbidden - Authentication successful but insufficient permissions | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `error` | [components.ForbiddenResponseErrorData](../components/forbiddenresponseerrordata.md) | :heavy_check_mark: | Error data for ForbiddenResponse | {
"code": 403,
"message": "Only management keys can perform this operation"
} | +| `error` | [components.ForbiddenResponseErrorData](../components/forbiddenresponseerrordata.mdx) | :heavy_check_mark: | Error data for ForbiddenResponse | \{
"code": 403,
"message": "Only management keys can perform this operation"
} | | `openrouter_metadata` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | | | `user_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/errors/internalserverresponseerror.md b/docs/errors/internalserverresponseerror.mdx similarity index 86% rename from docs/errors/internalserverresponseerror.md rename to docs/errors/internalserverresponseerror.mdx index 5db18a9b..c4a95bf1 100644 --- a/docs/errors/internalserverresponseerror.md +++ b/docs/errors/internalserverresponseerror.mdx @@ -1,4 +1,6 @@ -# InternalServerResponseError +--- +title: "InternalServerResponseError" +--- Internal Server Error - Unexpected server error @@ -7,6 +9,6 @@ Internal Server Error - Unexpected server error | Field | Type | Required | Description | Example | | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `error` | [components.InternalServerResponseErrorData](../components/internalserverresponseerrordata.md) | :heavy_check_mark: | Error data for InternalServerResponse | {
"code": 500,
"message": "Internal Server Error"
} | +| `error` | [components.InternalServerResponseErrorData](../components/internalserverresponseerrordata.mdx) | :heavy_check_mark: | Error data for InternalServerResponse | \{
"code": 500,
"message": "Internal Server Error"
} | | `openrouter_metadata` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | | | `user_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/errors/notfoundresponseerror.md b/docs/errors/notfoundresponseerror.mdx similarity index 84% rename from docs/errors/notfoundresponseerror.md rename to docs/errors/notfoundresponseerror.mdx index 3f377475..c9c23ff0 100644 --- a/docs/errors/notfoundresponseerror.md +++ b/docs/errors/notfoundresponseerror.mdx @@ -1,4 +1,6 @@ -# NotFoundResponseError +--- +title: "NotFoundResponseError" +--- Not Found - Resource does not exist @@ -7,6 +9,6 @@ Not Found - Resource does not exist | Field | Type | Required | Description | Example | | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `error` | [components.NotFoundResponseErrorData](../components/notfoundresponseerrordata.md) | :heavy_check_mark: | Error data for NotFoundResponse | {
"code": 404,
"message": "Resource not found"
} | +| `error` | [components.NotFoundResponseErrorData](../components/notfoundresponseerrordata.mdx) | :heavy_check_mark: | Error data for NotFoundResponse | \{
"code": 404,
"message": "Resource not found"
} | | `openrouter_metadata` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | | | `user_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/errors/payloadtoolargeresponseerror.md b/docs/errors/payloadtoolargeresponseerror.mdx similarity index 86% rename from docs/errors/payloadtoolargeresponseerror.md rename to docs/errors/payloadtoolargeresponseerror.mdx index 5027338f..06c96f02 100644 --- a/docs/errors/payloadtoolargeresponseerror.md +++ b/docs/errors/payloadtoolargeresponseerror.mdx @@ -1,4 +1,6 @@ -# PayloadTooLargeResponseError +--- +title: "PayloadTooLargeResponseError" +--- Payload Too Large - Request payload exceeds size limits @@ -7,6 +9,6 @@ Payload Too Large - Request payload exceeds size limits | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `error` | [components.PayloadTooLargeResponseErrorData](../components/payloadtoolargeresponseerrordata.md) | :heavy_check_mark: | Error data for PayloadTooLargeResponse | {
"code": 413,
"message": "Request payload too large"
} | +| `error` | [components.PayloadTooLargeResponseErrorData](../components/payloadtoolargeresponseerrordata.mdx) | :heavy_check_mark: | Error data for PayloadTooLargeResponse | \{
"code": 413,
"message": "Request payload too large"
} | | `openrouter_metadata` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | | | `user_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/errors/paymentrequiredresponseerror.md b/docs/errors/paymentrequiredresponseerror.mdx similarity index 86% rename from docs/errors/paymentrequiredresponseerror.md rename to docs/errors/paymentrequiredresponseerror.mdx index 97431896..959733da 100644 --- a/docs/errors/paymentrequiredresponseerror.md +++ b/docs/errors/paymentrequiredresponseerror.mdx @@ -1,4 +1,6 @@ -# PaymentRequiredResponseError +--- +title: "PaymentRequiredResponseError" +--- Payment Required - Insufficient credits or quota to complete request @@ -7,6 +9,6 @@ Payment Required - Insufficient credits or quota to complete request | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `error` | [components.PaymentRequiredResponseErrorData](../components/paymentrequiredresponseerrordata.md) | :heavy_check_mark: | Error data for PaymentRequiredResponse | {
"code": 402,
"message": "Insufficient credits. Add more using https://openrouter.ai/credits"
} | +| `error` | [components.PaymentRequiredResponseErrorData](../components/paymentrequiredresponseerrordata.mdx) | :heavy_check_mark: | Error data for PaymentRequiredResponse | \{
"code": 402,
"message": "Insufficient credits. Add more using https://openrouter.ai/credits"
} | | `openrouter_metadata` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | | | `user_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/errors/provideroverloadedresponseerror.md b/docs/errors/provideroverloadedresponseerror.mdx similarity index 85% rename from docs/errors/provideroverloadedresponseerror.md rename to docs/errors/provideroverloadedresponseerror.mdx index 7a2e5781..44e71a2b 100644 --- a/docs/errors/provideroverloadedresponseerror.md +++ b/docs/errors/provideroverloadedresponseerror.mdx @@ -1,4 +1,6 @@ -# ProviderOverloadedResponseError +--- +title: "ProviderOverloadedResponseError" +--- Provider Overloaded - Provider is temporarily overloaded @@ -7,6 +9,6 @@ Provider Overloaded - Provider is temporarily overloaded | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -| `error` | [components.ProviderOverloadedResponseErrorData](../components/provideroverloadedresponseerrordata.md) | :heavy_check_mark: | Error data for ProviderOverloadedResponse | {
"code": 529,
"message": "Provider returned error"
} | +| `error` | [components.ProviderOverloadedResponseErrorData](../components/provideroverloadedresponseerrordata.mdx) | :heavy_check_mark: | Error data for ProviderOverloadedResponse | \{
"code": 529,
"message": "Provider returned error"
} | | `openrouter_metadata` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | | | `user_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/errors/requesttimeoutresponseerror.md b/docs/errors/requesttimeoutresponseerror.mdx similarity index 86% rename from docs/errors/requesttimeoutresponseerror.md rename to docs/errors/requesttimeoutresponseerror.mdx index 40297994..c7bdd746 100644 --- a/docs/errors/requesttimeoutresponseerror.md +++ b/docs/errors/requesttimeoutresponseerror.mdx @@ -1,4 +1,6 @@ -# RequestTimeoutResponseError +--- +title: "RequestTimeoutResponseError" +--- Request Timeout - Operation exceeded time limit @@ -7,6 +9,6 @@ Request Timeout - Operation exceeded time limit | Field | Type | Required | Description | Example | | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `error` | [components.RequestTimeoutResponseErrorData](../components/requesttimeoutresponseerrordata.md) | :heavy_check_mark: | Error data for RequestTimeoutResponse | {
"code": 408,
"message": "Operation timed out. Please try again later."
} | +| `error` | [components.RequestTimeoutResponseErrorData](../components/requesttimeoutresponseerrordata.mdx) | :heavy_check_mark: | Error data for RequestTimeoutResponse | \{
"code": 408,
"message": "Operation timed out. Please try again later."
} | | `openrouter_metadata` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | | | `user_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/errors/serviceunavailableresponseerror.md b/docs/errors/serviceunavailableresponseerror.mdx similarity index 85% rename from docs/errors/serviceunavailableresponseerror.md rename to docs/errors/serviceunavailableresponseerror.mdx index ac2fed91..978785d1 100644 --- a/docs/errors/serviceunavailableresponseerror.md +++ b/docs/errors/serviceunavailableresponseerror.mdx @@ -1,4 +1,6 @@ -# ServiceUnavailableResponseError +--- +title: "ServiceUnavailableResponseError" +--- Service Unavailable - Service temporarily unavailable @@ -7,6 +9,6 @@ Service Unavailable - Service temporarily unavailable | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -| `error` | [components.ServiceUnavailableResponseErrorData](../components/serviceunavailableresponseerrordata.md) | :heavy_check_mark: | Error data for ServiceUnavailableResponse | {
"code": 503,
"message": "Service temporarily unavailable"
} | +| `error` | [components.ServiceUnavailableResponseErrorData](../components/serviceunavailableresponseerrordata.mdx) | :heavy_check_mark: | Error data for ServiceUnavailableResponse | \{
"code": 503,
"message": "Service temporarily unavailable"
} | | `openrouter_metadata` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | | | `user_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/errors/toomanyrequestsresponseerror.md b/docs/errors/toomanyrequestsresponseerror.mdx similarity index 86% rename from docs/errors/toomanyrequestsresponseerror.md rename to docs/errors/toomanyrequestsresponseerror.mdx index 294f6957..dae39dad 100644 --- a/docs/errors/toomanyrequestsresponseerror.md +++ b/docs/errors/toomanyrequestsresponseerror.mdx @@ -1,4 +1,6 @@ -# TooManyRequestsResponseError +--- +title: "TooManyRequestsResponseError" +--- Too Many Requests - Rate limit exceeded @@ -7,6 +9,6 @@ Too Many Requests - Rate limit exceeded | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `error` | [components.TooManyRequestsResponseErrorData](../components/toomanyrequestsresponseerrordata.md) | :heavy_check_mark: | Error data for TooManyRequestsResponse | {
"code": 429,
"message": "Rate limit exceeded"
} | +| `error` | [components.TooManyRequestsResponseErrorData](../components/toomanyrequestsresponseerrordata.mdx) | :heavy_check_mark: | Error data for TooManyRequestsResponse | \{
"code": 429,
"message": "Rate limit exceeded"
} | | `openrouter_metadata` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | | | `user_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/errors/unauthorizedresponseerror.md b/docs/errors/unauthorizedresponseerror.mdx similarity index 84% rename from docs/errors/unauthorizedresponseerror.md rename to docs/errors/unauthorizedresponseerror.mdx index 50d78da4..5a1e49f8 100644 --- a/docs/errors/unauthorizedresponseerror.md +++ b/docs/errors/unauthorizedresponseerror.mdx @@ -1,4 +1,6 @@ -# UnauthorizedResponseError +--- +title: "UnauthorizedResponseError" +--- Unauthorized - Authentication required or invalid credentials @@ -7,6 +9,6 @@ Unauthorized - Authentication required or invalid credentials | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `error` | [components.UnauthorizedResponseErrorData](../components/unauthorizedresponseerrordata.md) | :heavy_check_mark: | Error data for UnauthorizedResponse | {
"code": 401,
"message": "Missing Authentication header"
} | +| `error` | [components.UnauthorizedResponseErrorData](../components/unauthorizedresponseerrordata.mdx) | :heavy_check_mark: | Error data for UnauthorizedResponse | \{
"code": 401,
"message": "Missing Authentication header"
} | | `openrouter_metadata` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | | | `user_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/errors/unprocessableentityresponseerror.md b/docs/errors/unprocessableentityresponseerror.mdx similarity index 88% rename from docs/errors/unprocessableentityresponseerror.md rename to docs/errors/unprocessableentityresponseerror.mdx index 77b55729..f8c3a25b 100644 --- a/docs/errors/unprocessableentityresponseerror.md +++ b/docs/errors/unprocessableentityresponseerror.mdx @@ -1,4 +1,6 @@ -# UnprocessableEntityResponseError +--- +title: "UnprocessableEntityResponseError" +--- Unprocessable Entity - Semantic validation failure @@ -7,6 +9,6 @@ Unprocessable Entity - Semantic validation failure | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -| `error` | [components.UnprocessableEntityResponseErrorData](../components/unprocessableentityresponseerrordata.md) | :heavy_check_mark: | Error data for UnprocessableEntityResponse | {
"code": 422,
"message": "Invalid argument"
} | +| `error` | [components.UnprocessableEntityResponseErrorData](../components/unprocessableentityresponseerrordata.mdx) | :heavy_check_mark: | Error data for UnprocessableEntityResponse | \{
"code": 422,
"message": "Invalid argument"
} | | `openrouter_metadata` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | N/A | | | `user_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/operations/createkeysglobals.md b/docs/models/internal/globals.mdx similarity index 99% rename from docs/operations/createkeysglobals.md rename to docs/models/internal/globals.mdx index 6fea4617..905f480d 100644 --- a/docs/operations/createkeysglobals.md +++ b/docs/models/internal/globals.mdx @@ -1,5 +1,6 @@ -# CreateKeysGlobals - +--- +title: "Globals" +--- ## Fields diff --git a/docs/models/utils/retryconfig.md b/docs/models/utils/retryconfig.mdx similarity index 97% rename from docs/models/utils/retryconfig.md rename to docs/models/utils/retryconfig.mdx index 69dd549e..5342a8f5 100644 --- a/docs/models/utils/retryconfig.md +++ b/docs/models/utils/retryconfig.mdx @@ -1,4 +1,6 @@ -# RetryConfig +--- +title: "RetryConfig" +--- Allows customizing the default retry configuration. Only usable with methods that mention they support retries. diff --git a/docs/operations/arena.mdx b/docs/operations/arena.mdx new file mode 100644 index 00000000..455ab607 --- /dev/null +++ b/docs/operations/arena.mdx @@ -0,0 +1,23 @@ +--- +title: "Arena" +--- + +Design Arena only: arena to query. Defaults to `models` when source is `design-arena`. + +## Example Usage + +```python +from openrouter.operations import Arena + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Arena = "models" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"models"` +- `"builders"` +- `"agents"` diff --git a/docs/operations/bulkaddworkspacemembersglobals.mdx b/docs/operations/bulkaddworkspacemembersglobals.mdx new file mode 100644 index 00000000..a53ed369 --- /dev/null +++ b/docs/operations/bulkaddworkspacemembersglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "BulkAddWorkspaceMembersGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/bulkaddworkspacemembersrequest.mdx b/docs/operations/bulkaddworkspacemembersrequest.mdx new file mode 100644 index 00000000..5b61022c --- /dev/null +++ b/docs/operations/bulkaddworkspacemembersrequest.mdx @@ -0,0 +1,13 @@ +--- +title: "BulkAddWorkspaceMembersRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `id` | *str* | :heavy_check_mark: | The workspace ID (UUID) or slug | production | +| `bulk_add_workspace_members_request` | [components.BulkAddWorkspaceMembersRequest](../components/bulkaddworkspacemembersrequest.mdx) | :heavy_check_mark: | N/A | \{
"user_ids": [
"user_abc123",
"user_def456"
]
} | \ No newline at end of file diff --git a/docs/operations/bulkassignkeystoguardrailglobals.mdx b/docs/operations/bulkassignkeystoguardrailglobals.mdx new file mode 100644 index 00000000..c5e78a4b --- /dev/null +++ b/docs/operations/bulkassignkeystoguardrailglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "BulkAssignKeysToGuardrailGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/bulkassignkeystoguardrailrequest.md b/docs/operations/bulkassignkeystoguardrailrequest.mdx similarity index 91% rename from docs/operations/bulkassignkeystoguardrailrequest.md rename to docs/operations/bulkassignkeystoguardrailrequest.mdx index b1790688..47d8a382 100644 --- a/docs/operations/bulkassignkeystoguardrailrequest.md +++ b/docs/operations/bulkassignkeystoguardrailrequest.mdx @@ -1,5 +1,6 @@ -# BulkAssignKeysToGuardrailRequest - +--- +title: "BulkAssignKeysToGuardrailRequest" +--- ## Fields @@ -9,4 +10,4 @@ | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | | `id` | *str* | :heavy_check_mark: | The unique identifier of the guardrail | 550e8400-e29b-41d4-a716-446655440000 | -| `bulk_assign_keys_request` | [components.BulkAssignKeysRequest](../components/bulkassignkeysrequest.md) | :heavy_check_mark: | N/A | {
"key_hashes": [
"c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93"
]
} | \ No newline at end of file +| `bulk_assign_keys_request` | [components.BulkAssignKeysRequest](../components/bulkassignkeysrequest.mdx) | :heavy_check_mark: | N/A | \{
"key_hashes": [
"c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93"
]
} | \ No newline at end of file diff --git a/docs/operations/bulkassignmemberstoguardrailglobals.mdx b/docs/operations/bulkassignmemberstoguardrailglobals.mdx new file mode 100644 index 00000000..4b04ca8a --- /dev/null +++ b/docs/operations/bulkassignmemberstoguardrailglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "BulkAssignMembersToGuardrailGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/bulkassignmemberstoguardrailrequest.md b/docs/operations/bulkassignmemberstoguardrailrequest.mdx similarity index 90% rename from docs/operations/bulkassignmemberstoguardrailrequest.md rename to docs/operations/bulkassignmemberstoguardrailrequest.mdx index f15474f2..ede199d3 100644 --- a/docs/operations/bulkassignmemberstoguardrailrequest.md +++ b/docs/operations/bulkassignmemberstoguardrailrequest.mdx @@ -1,5 +1,6 @@ -# BulkAssignMembersToGuardrailRequest - +--- +title: "BulkAssignMembersToGuardrailRequest" +--- ## Fields @@ -9,4 +10,4 @@ | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | | `id` | *str* | :heavy_check_mark: | The unique identifier of the guardrail | 550e8400-e29b-41d4-a716-446655440000 | -| `bulk_assign_members_request` | [components.BulkAssignMembersRequest](../components/bulkassignmembersrequest.md) | :heavy_check_mark: | N/A | {
"member_user_ids": [
"user_abc123",
"user_def456"
]
} | \ No newline at end of file +| `bulk_assign_members_request` | [components.BulkAssignMembersRequest](../components/bulkassignmembersrequest.mdx) | :heavy_check_mark: | N/A | \{
"member_user_ids": [
"user_abc123",
"user_def456"
]
} | \ No newline at end of file diff --git a/docs/operations/bulkremoveworkspacemembersglobals.mdx b/docs/operations/bulkremoveworkspacemembersglobals.mdx new file mode 100644 index 00000000..9b483f8f --- /dev/null +++ b/docs/operations/bulkremoveworkspacemembersglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "BulkRemoveWorkspaceMembersGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/bulkremoveworkspacemembersrequest.mdx b/docs/operations/bulkremoveworkspacemembersrequest.mdx new file mode 100644 index 00000000..40b34889 --- /dev/null +++ b/docs/operations/bulkremoveworkspacemembersrequest.mdx @@ -0,0 +1,13 @@ +--- +title: "BulkRemoveWorkspaceMembersRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `id` | *str* | :heavy_check_mark: | The workspace ID (UUID) or slug | production | +| `bulk_remove_workspace_members_request` | [components.BulkRemoveWorkspaceMembersRequest](../components/bulkremoveworkspacemembersrequest.mdx) | :heavy_check_mark: | N/A | \{
"user_ids": [
"user_abc123",
"user_def456"
]
} | \ No newline at end of file diff --git a/docs/operations/bulkunassignkeysfromguardrailglobals.mdx b/docs/operations/bulkunassignkeysfromguardrailglobals.mdx new file mode 100644 index 00000000..0fee944a --- /dev/null +++ b/docs/operations/bulkunassignkeysfromguardrailglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "BulkUnassignKeysFromGuardrailGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/bulkunassignkeysfromguardrailrequest.md b/docs/operations/bulkunassignkeysfromguardrailrequest.mdx similarity index 90% rename from docs/operations/bulkunassignkeysfromguardrailrequest.md rename to docs/operations/bulkunassignkeysfromguardrailrequest.mdx index eb2cae6e..fba4dbe7 100644 --- a/docs/operations/bulkunassignkeysfromguardrailrequest.md +++ b/docs/operations/bulkunassignkeysfromguardrailrequest.mdx @@ -1,5 +1,6 @@ -# BulkUnassignKeysFromGuardrailRequest - +--- +title: "BulkUnassignKeysFromGuardrailRequest" +--- ## Fields @@ -9,4 +10,4 @@ | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | | `id` | *str* | :heavy_check_mark: | The unique identifier of the guardrail | 550e8400-e29b-41d4-a716-446655440000 | -| `bulk_unassign_keys_request` | [components.BulkUnassignKeysRequest](../components/bulkunassignkeysrequest.md) | :heavy_check_mark: | N/A | {
"key_hashes": [
"c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93"
]
} | \ No newline at end of file +| `bulk_unassign_keys_request` | [components.BulkUnassignKeysRequest](../components/bulkunassignkeysrequest.mdx) | :heavy_check_mark: | N/A | \{
"key_hashes": [
"c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93"
]
} | \ No newline at end of file diff --git a/docs/operations/bulkunassignmembersfromguardrailglobals.md b/docs/operations/bulkunassignmembersfromguardrailglobals.md deleted file mode 100644 index 5df6bb6d..00000000 --- a/docs/operations/bulkunassignmembersfromguardrailglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# BulkUnassignMembersFromGuardrailGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/bulkunassignmembersfromguardrailglobals.mdx b/docs/operations/bulkunassignmembersfromguardrailglobals.mdx new file mode 100644 index 00000000..e21cf59f --- /dev/null +++ b/docs/operations/bulkunassignmembersfromguardrailglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "BulkUnassignMembersFromGuardrailGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/bulkunassignmembersfromguardrailrequest.md b/docs/operations/bulkunassignmembersfromguardrailrequest.mdx similarity index 90% rename from docs/operations/bulkunassignmembersfromguardrailrequest.md rename to docs/operations/bulkunassignmembersfromguardrailrequest.mdx index 31832c55..de22a4c7 100644 --- a/docs/operations/bulkunassignmembersfromguardrailrequest.md +++ b/docs/operations/bulkunassignmembersfromguardrailrequest.mdx @@ -1,5 +1,6 @@ -# BulkUnassignMembersFromGuardrailRequest - +--- +title: "BulkUnassignMembersFromGuardrailRequest" +--- ## Fields @@ -9,4 +10,4 @@ | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | | `id` | *str* | :heavy_check_mark: | The unique identifier of the guardrail | 550e8400-e29b-41d4-a716-446655440000 | -| `bulk_unassign_members_request` | [components.BulkUnassignMembersRequest](../components/bulkunassignmembersrequest.md) | :heavy_check_mark: | N/A | {
"member_user_ids": [
"user_abc123",
"user_def456"
]
} | \ No newline at end of file +| `bulk_unassign_members_request` | [components.BulkUnassignMembersRequest](../components/bulkunassignmembersrequest.mdx) | :heavy_check_mark: | N/A | \{
"member_user_ids": [
"user_abc123",
"user_def456"
]
} | \ No newline at end of file diff --git a/docs/operations/content.md b/docs/operations/content.mdx similarity index 95% rename from docs/operations/content.md rename to docs/operations/content.mdx index 22aef159..1df0aac2 100644 --- a/docs/operations/content.md +++ b/docs/operations/content.mdx @@ -1,5 +1,6 @@ -# Content - +--- +title: "Content" +--- ## Supported Types diff --git a/docs/operations/contentimageurl.md b/docs/operations/contentimageurl.mdx similarity index 61% rename from docs/operations/contentimageurl.md rename to docs/operations/contentimageurl.mdx index 7fedfe30..d0e186ad 100644 --- a/docs/operations/contentimageurl.md +++ b/docs/operations/contentimageurl.mdx @@ -1,9 +1,10 @@ -# ContentImageURL - +--- +title: "ContentImageURL" +--- ## Fields | Field | Type | Required | Description | | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -| `image_url` | [operations.ImageURL](../operations/imageurl.md) | :heavy_check_mark: | N/A | -| `type` | [operations.TypeImageURL](../operations/typeimageurl.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| `image_url` | [operations.ImageURL](../operations/imageurl.mdx) | :heavy_check_mark: | N/A | +| `type` | [operations.TypeImageURL](../operations/typeimageurl.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/operations/contenttext.md b/docs/operations/contenttext.mdx similarity index 80% rename from docs/operations/contenttext.md rename to docs/operations/contenttext.mdx index 522f4978..08e418f7 100644 --- a/docs/operations/contenttext.md +++ b/docs/operations/contenttext.mdx @@ -1,9 +1,10 @@ -# ContentText - +--- +title: "ContentText" +--- ## Fields | Field | Type | Required | Description | | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | | `text` | *str* | :heavy_check_mark: | N/A | -| `type` | [operations.TypeText](../operations/typetext.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| `type` | [operations.TypeText](../operations/typetext.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/operations/costdetails.mdx b/docs/operations/costdetails.mdx new file mode 100644 index 00000000..753493b8 --- /dev/null +++ b/docs/operations/costdetails.mdx @@ -0,0 +1,14 @@ +--- +title: "CostDetails" +--- + +Breakdown of upstream inference costs + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | +| `upstream_inference_completions_cost` | *float* | :heavy_check_mark: | N/A | +| `upstream_inference_cost` | *OptionalNullable[float]* | :heavy_minus_sign: | N/A | +| `upstream_inference_prompt_cost` | *float* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/operations/createaudiospeechglobals.mdx b/docs/operations/createaudiospeechglobals.mdx new file mode 100644 index 00000000..78fe3a35 --- /dev/null +++ b/docs/operations/createaudiospeechglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "CreateAudioSpeechGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/createaudiospeechrequest.mdx b/docs/operations/createaudiospeechrequest.mdx new file mode 100644 index 00000000..176fe250 --- /dev/null +++ b/docs/operations/createaudiospeechrequest.mdx @@ -0,0 +1,12 @@ +--- +title: "CreateAudioSpeechRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `speech_request` | [components.SpeechRequest](../components/speechrequest.mdx) | :heavy_check_mark: | N/A | \{
"input": "Hello world",
"model": "elevenlabs/eleven-turbo-v2",
"response_format": "pcm",
"speed": 1,
"voice": "alloy"
} | \ No newline at end of file diff --git a/docs/operations/createaudiotranscriptionsglobals.mdx b/docs/operations/createaudiotranscriptionsglobals.mdx new file mode 100644 index 00000000..2427dcaa --- /dev/null +++ b/docs/operations/createaudiotranscriptionsglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "CreateAudioTranscriptionsGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/createaudiotranscriptionsrequest.mdx b/docs/operations/createaudiotranscriptionsrequest.mdx new file mode 100644 index 00000000..63faa868 --- /dev/null +++ b/docs/operations/createaudiotranscriptionsrequest.mdx @@ -0,0 +1,12 @@ +--- +title: "CreateAudioTranscriptionsRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `stt_request` | [components.STTRequest](../components/sttrequest.mdx) | :heavy_check_mark: | N/A | \{
"input_audio": \{
"data": "UklGRiQA...",
"format": "wav"
},
"language": "en",
"model": "openai/whisper-large-v3"
} | \ No newline at end of file diff --git a/docs/operations/createauthkeyscodecodechallengemethod.md b/docs/operations/createauthkeyscodecodechallengemethod.md deleted file mode 100644 index cd496b74..00000000 --- a/docs/operations/createauthkeyscodecodechallengemethod.md +++ /dev/null @@ -1,11 +0,0 @@ -# CreateAuthKeysCodeCodeChallengeMethod - -The method used to generate the code challenge - - -## Values - -| Name | Value | -| ------- | ------- | -| `S256` | S256 | -| `PLAIN` | plain | \ No newline at end of file diff --git a/docs/operations/createauthkeyscodecodechallengemethod.mdx b/docs/operations/createauthkeyscodecodechallengemethod.mdx new file mode 100644 index 00000000..a3c062d1 --- /dev/null +++ b/docs/operations/createauthkeyscodecodechallengemethod.mdx @@ -0,0 +1,22 @@ +--- +title: "CreateAuthKeysCodeCodeChallengeMethod" +--- + +The method used to generate the code challenge + +## Example Usage + +```python +from openrouter.operations import CreateAuthKeysCodeCodeChallengeMethod + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: CreateAuthKeysCodeCodeChallengeMethod = "S256" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"S256"` +- `"plain"` diff --git a/docs/operations/createauthkeyscodedata.md b/docs/operations/createauthkeyscodedata.mdx similarity index 97% rename from docs/operations/createauthkeyscodedata.md rename to docs/operations/createauthkeyscodedata.mdx index 23309c75..7089ba19 100644 --- a/docs/operations/createauthkeyscodedata.md +++ b/docs/operations/createauthkeyscodedata.mdx @@ -1,4 +1,6 @@ -# CreateAuthKeysCodeData +--- +title: "CreateAuthKeysCodeData" +--- Auth code data diff --git a/docs/operations/createauthkeyscodeglobals.mdx b/docs/operations/createauthkeyscodeglobals.mdx new file mode 100644 index 00000000..4332a240 --- /dev/null +++ b/docs/operations/createauthkeyscodeglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "CreateAuthKeysCodeGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/createauthkeyscoderequest.md b/docs/operations/createauthkeyscoderequest.mdx similarity index 91% rename from docs/operations/createauthkeyscoderequest.md rename to docs/operations/createauthkeyscoderequest.mdx index 6dc06174..cdafce62 100644 --- a/docs/operations/createauthkeyscoderequest.md +++ b/docs/operations/createauthkeyscoderequest.mdx @@ -1,5 +1,6 @@ -# CreateAuthKeysCodeRequest - +--- +title: "CreateAuthKeysCodeRequest" +--- ## Fields @@ -8,4 +9,4 @@ | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `request_body` | [operations.CreateAuthKeysCodeRequestBody](../operations/createauthkeyscoderequestbody.md) | :heavy_check_mark: | N/A | {
"callback_url": "https://myapp.com/auth/callback",
"code_challenge": "E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM",
"code_challenge_method": "S256",
"limit": 100
} | \ No newline at end of file +| `request_body` | [operations.CreateAuthKeysCodeRequestBody](../operations/createauthkeyscoderequestbody.mdx) | :heavy_check_mark: | N/A | \{
"callback_url": "https://myapp.com/auth/callback",
"code_challenge": "E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM",
"code_challenge_method": "S256",
"limit": 100
} | \ No newline at end of file diff --git a/docs/operations/createauthkeyscoderequestbody.md b/docs/operations/createauthkeyscoderequestbody.mdx similarity index 88% rename from docs/operations/createauthkeyscoderequestbody.md rename to docs/operations/createauthkeyscoderequestbody.mdx index d37c2194..2b4c4db9 100644 --- a/docs/operations/createauthkeyscoderequestbody.md +++ b/docs/operations/createauthkeyscoderequestbody.mdx @@ -1,5 +1,6 @@ -# CreateAuthKeysCodeRequestBody - +--- +title: "CreateAuthKeysCodeRequestBody" +--- ## Fields @@ -7,9 +8,9 @@ | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | | `callback_url` | *str* | :heavy_check_mark: | The callback URL to redirect to after authorization. Supports https URLs and localhost/127.0.0.1 URLs on any port for local CLI tools. | https://myapp.com/auth/callback | | `code_challenge` | *Optional[str]* | :heavy_minus_sign: | PKCE code challenge for enhanced security | E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM | -| `code_challenge_method` | [Optional[operations.CreateAuthKeysCodeCodeChallengeMethod]](../operations/createauthkeyscodecodechallengemethod.md) | :heavy_minus_sign: | The method used to generate the code challenge | S256 | +| `code_challenge_method` | [Optional[operations.CreateAuthKeysCodeCodeChallengeMethod]](../operations/createauthkeyscodecodechallengemethod.mdx) | :heavy_minus_sign: | The method used to generate the code challenge | S256 | | `expires_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Optional expiration time for the API key to be created | 2027-12-31T23:59:59Z | | `key_label` | *Optional[str]* | :heavy_minus_sign: | Optional custom label for the API key. Defaults to the app name if not provided. | My Custom Key | | `limit` | *Optional[float]* | :heavy_minus_sign: | Credit limit for the API key to be created | 100 | -| `usage_limit_type` | [Optional[operations.UsageLimitType]](../operations/usagelimittype.md) | :heavy_minus_sign: | Optional credit limit reset interval. When set, the credit limit resets on this interval. | monthly | +| `usage_limit_type` | [Optional[operations.UsageLimitType]](../operations/usagelimittype.mdx) | :heavy_minus_sign: | Optional credit limit reset interval. When set, the credit limit resets on this interval. | monthly | | `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Optional workspace ID to associate the API key with | | \ No newline at end of file diff --git a/docs/operations/createauthkeyscoderesponse.md b/docs/operations/createauthkeyscoderesponse.mdx similarity index 74% rename from docs/operations/createauthkeyscoderesponse.md rename to docs/operations/createauthkeyscoderesponse.mdx index 8951a7ad..5044f577 100644 --- a/docs/operations/createauthkeyscoderesponse.md +++ b/docs/operations/createauthkeyscoderesponse.mdx @@ -1,4 +1,6 @@ -# CreateAuthKeysCodeResponse +--- +title: "CreateAuthKeysCodeResponse" +--- Successfully created authorization code @@ -7,4 +9,4 @@ Successfully created authorization code | Field | Type | Required | Description | Example | | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | -| `data` | [operations.CreateAuthKeysCodeData](../operations/createauthkeyscodedata.md) | :heavy_check_mark: | Auth code data | {
"app_id": 12345,
"created_at": "2025-08-24T10:30:00Z",
"id": "auth_code_xyz789"
} | \ No newline at end of file +| `data` | [operations.CreateAuthKeysCodeData](../operations/createauthkeyscodedata.mdx) | :heavy_check_mark: | Auth code data | \{
"app_id": 12345,
"created_at": "2025-08-24T10:30:00Z",
"id": "auth_code_xyz789"
} | \ No newline at end of file diff --git a/docs/operations/createbyokkeyglobals.mdx b/docs/operations/createbyokkeyglobals.mdx new file mode 100644 index 00000000..7a4e3e75 --- /dev/null +++ b/docs/operations/createbyokkeyglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "CreateBYOKKeyGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/createbyokkeyrequest.mdx b/docs/operations/createbyokkeyrequest.mdx new file mode 100644 index 00000000..f8b09da3 --- /dev/null +++ b/docs/operations/createbyokkeyrequest.mdx @@ -0,0 +1,12 @@ +--- +title: "CreateBYOKKeyRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `create_byok_key_request` | [components.CreateBYOKKeyRequest](../components/createbyokkeyrequest.mdx) | :heavy_check_mark: | N/A | \{
"key": "sk-proj-abc123...",
"name": "Production OpenAI Key",
"provider": "openai"
} | \ No newline at end of file diff --git a/docs/operations/createembeddingsdata.md b/docs/operations/createembeddingsdata.mdx similarity index 70% rename from docs/operations/createembeddingsdata.md rename to docs/operations/createembeddingsdata.mdx index c473e71e..07670e00 100644 --- a/docs/operations/createembeddingsdata.md +++ b/docs/operations/createembeddingsdata.mdx @@ -1,4 +1,6 @@ -# CreateEmbeddingsData +--- +title: "CreateEmbeddingsData" +--- A single embedding object @@ -7,6 +9,6 @@ A single embedding object | Field | Type | Required | Description | Example | | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `embedding` | [operations.Embedding](../operations/embedding.md) | :heavy_check_mark: | Embedding vector as an array of floats or a base64 string | [
0.0023064255,
-0.009327292,
0.015797347
] | +| `embedding` | [operations.Embedding](../operations/embedding.mdx) | :heavy_check_mark: | Embedding vector as an array of floats or a base64 string | [
0.0023064255,
-0.009327292,
0.015797347
] | | `index` | *Optional[int]* | :heavy_minus_sign: | Index of the embedding in the input list | 0 | -| `object` | [operations.ObjectEmbedding](../operations/objectembedding.md) | :heavy_check_mark: | N/A | | \ No newline at end of file +| `object` | [operations.ObjectEmbedding](../operations/objectembedding.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/operations/createembeddingsglobals.mdx b/docs/operations/createembeddingsglobals.mdx new file mode 100644 index 00000000..2325d62e --- /dev/null +++ b/docs/operations/createembeddingsglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "CreateEmbeddingsGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/createembeddingsrequest.md b/docs/operations/createembeddingsrequest.mdx similarity index 89% rename from docs/operations/createembeddingsrequest.md rename to docs/operations/createembeddingsrequest.mdx index 9b7a73a6..6d20f015 100644 --- a/docs/operations/createembeddingsrequest.md +++ b/docs/operations/createembeddingsrequest.mdx @@ -1,5 +1,6 @@ -# CreateEmbeddingsRequest - +--- +title: "CreateEmbeddingsRequest" +--- ## Fields @@ -8,4 +9,4 @@ | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `request_body` | [operations.CreateEmbeddingsRequestBody](../operations/createembeddingsrequestbody.md) | :heavy_check_mark: | N/A | {
"dimensions": 1536,
"input": "The quick brown fox jumps over the lazy dog",
"model": "openai/text-embedding-3-small"
} | \ No newline at end of file +| `request_body` | [operations.CreateEmbeddingsRequestBody](../operations/createembeddingsrequestbody.mdx) | :heavy_check_mark: | N/A | \{
"dimensions": 1536,
"input": "The quick brown fox jumps over the lazy dog",
"model": "openai/text-embedding-3-small"
} | \ No newline at end of file diff --git a/docs/operations/createembeddingsrequestbody.md b/docs/operations/createembeddingsrequestbody.mdx similarity index 76% rename from docs/operations/createembeddingsrequestbody.md rename to docs/operations/createembeddingsrequestbody.mdx index 9ea89389..a669d4e6 100644 --- a/docs/operations/createembeddingsrequestbody.md +++ b/docs/operations/createembeddingsrequestbody.mdx @@ -1,4 +1,6 @@ -# CreateEmbeddingsRequestBody +--- +title: "CreateEmbeddingsRequestBody" +--- Embeddings request input @@ -8,9 +10,9 @@ Embeddings request input | Field | Type | Required | Description | Example | | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | | `dimensions` | *Optional[int]* | :heavy_minus_sign: | The number of dimensions for the output embeddings | 1536 | -| `encoding_format` | [Optional[operations.EncodingFormat]](../operations/encodingformat.md) | :heavy_minus_sign: | The format of the output embeddings | float | -| `input` | [operations.InputUnion](../operations/inputunion.md) | :heavy_check_mark: | Text, token, or multimodal input(s) to embed | The quick brown fox jumps over the lazy dog | +| `encoding_format` | [Optional[operations.EncodingFormat]](../operations/encodingformat.mdx) | :heavy_minus_sign: | The format of the output embeddings | float | +| `input` | [operations.InputUnion](../operations/inputunion.mdx) | :heavy_check_mark: | Text, token, or multimodal input(s) to embed | The quick brown fox jumps over the lazy dog | | `input_type` | *Optional[str]* | :heavy_minus_sign: | The type of input (e.g. search_query, search_document) | search_query | | `model` | *str* | :heavy_check_mark: | The model to use for embeddings | openai/text-embedding-3-small | -| `provider` | [OptionalNullable[components.ProviderPreferences]](../components/providerpreferences.md) | :heavy_minus_sign: | N/A | {
"allow_fallbacks": true
} | +| `provider` | [OptionalNullable[components.ProviderPreferences]](../components/providerpreferences.mdx) | :heavy_minus_sign: | N/A | \{
"allow_fallbacks": true
} | | `user` | *Optional[str]* | :heavy_minus_sign: | A unique identifier for the end-user | user-1234 | \ No newline at end of file diff --git a/docs/operations/createembeddingsresponse.md b/docs/operations/createembeddingsresponse.mdx similarity index 83% rename from docs/operations/createembeddingsresponse.md rename to docs/operations/createembeddingsresponse.mdx index 4c379be0..b845fd2c 100644 --- a/docs/operations/createembeddingsresponse.md +++ b/docs/operations/createembeddingsresponse.mdx @@ -1,5 +1,6 @@ -# CreateEmbeddingsResponse - +--- +title: "CreateEmbeddingsResponse" +--- ## Supported Types diff --git a/docs/operations/createembeddingsresponsebody.md b/docs/operations/createembeddingsresponsebody.mdx similarity index 68% rename from docs/operations/createembeddingsresponsebody.md rename to docs/operations/createembeddingsresponsebody.mdx index 1ff75cb8..4efeda7a 100644 --- a/docs/operations/createembeddingsresponsebody.md +++ b/docs/operations/createembeddingsresponsebody.mdx @@ -1,4 +1,6 @@ -# CreateEmbeddingsResponseBody +--- +title: "CreateEmbeddingsResponseBody" +--- Embeddings response containing embedding vectors @@ -7,8 +9,8 @@ Embeddings response containing embedding vectors | Field | Type | Required | Description | Example | | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | -| `data` | List[[operations.CreateEmbeddingsData](../operations/createembeddingsdata.md)] | :heavy_check_mark: | List of embedding objects | [
{
"embedding": [
0.0023064255,
-0.009327292,
0.015797347
],
"index": 0,
"object": "embedding"
}
] | +| `data` | List[[operations.CreateEmbeddingsData](../operations/createembeddingsdata.mdx)] | :heavy_check_mark: | List of embedding objects | [
\{
"embedding": [
0.0023064255,
-0.009327292,
0.015797347
],
"index": 0,
"object": "embedding"
}
] | | `id` | *Optional[str]* | :heavy_minus_sign: | Unique identifier for the embeddings response | embd-1234567890 | | `model` | *str* | :heavy_check_mark: | The model used for embeddings | openai/text-embedding-3-small | -| `object` | [operations.Object](../operations/object.md) | :heavy_check_mark: | N/A | | -| `usage` | [Optional[operations.CreateEmbeddingsUsage]](../operations/createembeddingsusage.md) | :heavy_minus_sign: | Token usage statistics | {
"prompt_tokens": 8,
"total_tokens": 8
} | \ No newline at end of file +| `object` | [operations.Object](../operations/object.mdx) | :heavy_check_mark: | N/A | | +| `usage` | [Optional[operations.CreateEmbeddingsUsage]](../operations/createembeddingsusage.mdx) | :heavy_minus_sign: | Token usage statistics | \{
"prompt_tokens": 8,
"total_tokens": 8
} | \ No newline at end of file diff --git a/docs/operations/createembeddingsusage.mdx b/docs/operations/createembeddingsusage.mdx new file mode 100644 index 00000000..1050293a --- /dev/null +++ b/docs/operations/createembeddingsusage.mdx @@ -0,0 +1,17 @@ +--- +title: "CreateEmbeddingsUsage" +--- + +Token usage statistics + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `cost` | *Optional[float]* | :heavy_minus_sign: | Cost of the request in credits | 0.0001 | +| `cost_details` | [OptionalNullable[operations.CostDetails]](../operations/costdetails.mdx) | :heavy_minus_sign: | Breakdown of upstream inference costs | \{
"upstream_inference_completions_cost": 0.0004,
"upstream_inference_cost": null,
"upstream_inference_prompt_cost": 0.0008
} | +| `is_byok` | *Optional[bool]* | :heavy_minus_sign: | Whether a request was made using a Bring Your Own Key configuration | | +| `prompt_tokens` | *int* | :heavy_check_mark: | Number of tokens in the input | 8 | +| `prompt_tokens_details` | [Optional[operations.PromptTokensDetails]](../operations/prompttokensdetails.mdx) | :heavy_minus_sign: | Per-modality token breakdown. Only present when the input contains 2+ modalities (e.g. text + image) and the upstream provider returns modality-level usage data. Only non-zero modality counts are included. | | +| `total_tokens` | *int* | :heavy_check_mark: | Total number of tokens used | 8 | \ No newline at end of file diff --git a/docs/operations/bulkunassignkeysfromguardrailglobals.md b/docs/operations/createguardrailglobals.mdx similarity index 98% rename from docs/operations/bulkunassignkeysfromguardrailglobals.md rename to docs/operations/createguardrailglobals.mdx index 8472ab41..89d6df04 100644 --- a/docs/operations/bulkunassignkeysfromguardrailglobals.md +++ b/docs/operations/createguardrailglobals.mdx @@ -1,5 +1,6 @@ -# BulkUnassignKeysFromGuardrailGlobals - +--- +title: "CreateGuardrailGlobals" +--- ## Fields diff --git a/docs/operations/createguardrailrequest.md b/docs/operations/createguardrailrequest.mdx similarity index 94% rename from docs/operations/createguardrailrequest.md rename to docs/operations/createguardrailrequest.mdx index 74958a26..906c9930 100644 --- a/docs/operations/createguardrailrequest.md +++ b/docs/operations/createguardrailrequest.mdx @@ -1,5 +1,6 @@ -# CreateGuardrailRequest - +--- +title: "CreateGuardrailRequest" +--- ## Fields @@ -8,4 +9,4 @@ | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `create_guardrail_request` | [components.CreateGuardrailRequest](../components/createguardrailrequest.md) | :heavy_check_mark: | N/A | {
"allowed_models": null,
"allowed_providers": [
"openai",
"anthropic",
"deepseek"
],
"content_filter_builtins": [
{
"action": "block",
"slug": "regex-prompt-injection"
}
],
"content_filters": null,
"description": "A guardrail for limiting API usage",
"enforce_zdr_anthropic": true,
"enforce_zdr_google": false,
"enforce_zdr_openai": true,
"enforce_zdr_other": false,
"ignored_models": null,
"ignored_providers": null,
"limit_usd": 50,
"name": "My New Guardrail",
"reset_interval": "monthly"
} | \ No newline at end of file +| `create_guardrail_request` | [components.CreateGuardrailRequest](../components/createguardrailrequest.mdx) | :heavy_check_mark: | N/A | \{
"allowed_models": null,
"allowed_providers": [
"openai",
"anthropic",
"deepseek"
],
"content_filter_builtins": [
\{
"action": "block",
"slug": "regex-prompt-injection"
}
],
"content_filters": null,
"description": "A guardrail for limiting API usage",
"enforce_zdr_anthropic": true,
"enforce_zdr_google": false,
"enforce_zdr_openai": true,
"enforce_zdr_other": false,
"ignored_models": null,
"ignored_providers": null,
"limit_usd": 50,
"name": "My New Guardrail",
"reset_interval": "monthly"
} | \ No newline at end of file diff --git a/docs/operations/createimagesglobals.mdx b/docs/operations/createimagesglobals.mdx new file mode 100644 index 00000000..98b5f6f8 --- /dev/null +++ b/docs/operations/createimagesglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "CreateImagesGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/createimagesrequest.mdx b/docs/operations/createimagesrequest.mdx new file mode 100644 index 00000000..5e9a2d73 --- /dev/null +++ b/docs/operations/createimagesrequest.mdx @@ -0,0 +1,12 @@ +--- +title: "CreateImagesRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `image_generation_request` | [components.ImageGenerationRequest](../components/imagegenerationrequest.mdx) | :heavy_check_mark: | N/A | \{
"model": "bytedance-seed/seedream-4.5",
"prompt": "a red panda astronaut floating in space, studio lighting"
} | \ No newline at end of file diff --git a/docs/operations/createimagesresponse.mdx b/docs/operations/createimagesresponse.mdx new file mode 100644 index 00000000..77636052 --- /dev/null +++ b/docs/operations/createimagesresponse.mdx @@ -0,0 +1,18 @@ +--- +title: "CreateImagesResponse" +--- + +## Supported Types + +### `components.ImageGenerationResponse` + +```python +value: components.ImageGenerationResponse = /* values here */ +``` + +### `Union[eventstreaming.EventStream[components.ImageStreamingResponseData], eventstreaming.EventStreamAsync[components.ImageStreamingResponseData]]` + +```python +value: Union[eventstreaming.EventStream[components.ImageStreamingResponseData], eventstreaming.EventStreamAsync[components.ImageStreamingResponseData]] = /* values here */ +``` + diff --git a/docs/operations/createkeysdata.md b/docs/operations/createkeysdata.mdx similarity index 99% rename from docs/operations/createkeysdata.md rename to docs/operations/createkeysdata.mdx index e60eaf9f..61f267fb 100644 --- a/docs/operations/createkeysdata.md +++ b/docs/operations/createkeysdata.mdx @@ -1,4 +1,6 @@ -# CreateKeysData +--- +title: "CreateKeysData" +--- The created API key information diff --git a/docs/operations/createkeysglobals.mdx b/docs/operations/createkeysglobals.mdx new file mode 100644 index 00000000..976d57a6 --- /dev/null +++ b/docs/operations/createkeysglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "CreateKeysGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/createkeyslimitreset.md b/docs/operations/createkeyslimitreset.md deleted file mode 100644 index 5d1659c4..00000000 --- a/docs/operations/createkeyslimitreset.md +++ /dev/null @@ -1,12 +0,0 @@ -# CreateKeysLimitReset - -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. - - -## Values - -| Name | Value | -| --------- | --------- | -| `DAILY` | daily | -| `WEEKLY` | weekly | -| `MONTHLY` | monthly | \ No newline at end of file diff --git a/docs/operations/createkeyslimitreset.mdx b/docs/operations/createkeyslimitreset.mdx new file mode 100644 index 00000000..89738fb9 --- /dev/null +++ b/docs/operations/createkeyslimitreset.mdx @@ -0,0 +1,23 @@ +--- +title: "CreateKeysLimitReset" +--- + +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. + +## Example Usage + +```python +from openrouter.operations import CreateKeysLimitReset + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: CreateKeysLimitReset = "daily" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"daily"` +- `"weekly"` +- `"monthly"` diff --git a/docs/operations/createkeysrequest.md b/docs/operations/createkeysrequest.mdx similarity index 89% rename from docs/operations/createkeysrequest.md rename to docs/operations/createkeysrequest.mdx index f587de75..9ec01bf6 100644 --- a/docs/operations/createkeysrequest.md +++ b/docs/operations/createkeysrequest.mdx @@ -1,5 +1,6 @@ -# CreateKeysRequest - +--- +title: "CreateKeysRequest" +--- ## Fields @@ -8,4 +9,4 @@ | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `request_body` | [operations.CreateKeysRequestBody](../operations/createkeysrequestbody.md) | :heavy_check_mark: | N/A | {
"expires_at": "2027-12-31T23:59:59Z",
"include_byok_in_limit": true,
"limit": 50,
"limit_reset": "monthly",
"name": "My New API Key"
} | \ No newline at end of file +| `request_body` | [operations.CreateKeysRequestBody](../operations/createkeysrequestbody.mdx) | :heavy_check_mark: | N/A | \{
"expires_at": "2027-12-31T23:59:59Z",
"include_byok_in_limit": true,
"limit": 50,
"limit_reset": "monthly",
"name": "My New API Key"
} | \ No newline at end of file diff --git a/docs/operations/createkeysrequestbody.md b/docs/operations/createkeysrequestbody.mdx similarity index 94% rename from docs/operations/createkeysrequestbody.md rename to docs/operations/createkeysrequestbody.mdx index e63e997b..37ca00af 100644 --- a/docs/operations/createkeysrequestbody.md +++ b/docs/operations/createkeysrequestbody.mdx @@ -1,5 +1,6 @@ -# CreateKeysRequestBody - +--- +title: "CreateKeysRequestBody" +--- ## Fields @@ -9,6 +10,6 @@ | `expires_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Optional ISO 8601 UTC timestamp when the API key should expire. Must be UTC, other timezones will be rejected | 2027-12-31T23:59:59Z | | `include_byok_in_limit` | *Optional[bool]* | :heavy_minus_sign: | Whether to include BYOK usage in the limit | true | | `limit` | *OptionalNullable[float]* | :heavy_minus_sign: | Optional spending limit for the API key in USD | 50 | -| `limit_reset` | [OptionalNullable[operations.CreateKeysLimitReset]](../operations/createkeyslimitreset.md) | :heavy_minus_sign: | 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. | monthly | +| `limit_reset` | [OptionalNullable[operations.CreateKeysLimitReset]](../operations/createkeyslimitreset.mdx) | :heavy_minus_sign: | 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. | monthly | | `name` | *str* | :heavy_check_mark: | Name for the new API key | My New API Key | | `workspace_id` | *Optional[str]* | :heavy_minus_sign: | The workspace to create the API key in. Defaults to the default workspace if not provided. | 0df9e665-d932-5740-b2c7-b52af166bc11 | \ No newline at end of file diff --git a/docs/operations/createkeysresponse.md b/docs/operations/createkeysresponse.mdx similarity index 91% rename from docs/operations/createkeysresponse.md rename to docs/operations/createkeysresponse.mdx index 91744f3d..f5caa2c4 100644 --- a/docs/operations/createkeysresponse.md +++ b/docs/operations/createkeysresponse.mdx @@ -1,4 +1,6 @@ -# CreateKeysResponse +--- +title: "CreateKeysResponse" +--- API key created successfully @@ -7,5 +9,5 @@ API key created successfully | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `data` | [operations.CreateKeysData](../operations/createkeysdata.md) | :heavy_check_mark: | The created API key information | {
"byok_usage": 17.38,
"byok_usage_daily": 17.38,
"byok_usage_monthly": 17.38,
"byok_usage_weekly": 17.38,
"created_at": "2025-08-24T10:30:00Z",
"creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000",
"disabled": false,
"expires_at": "2027-12-31T23:59:59Z",
"hash": "f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943",
"include_byok_in_limit": false,
"label": "sk-or-v1-0e6...1c96",
"limit": 100,
"limit_remaining": 74.5,
"limit_reset": "monthly",
"name": "My Production Key",
"updated_at": "2025-08-24T15:45:00Z",
"usage": 25.5,
"usage_daily": 25.5,
"usage_monthly": 25.5,
"usage_weekly": 25.5,
"workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"
} | +| `data` | [operations.CreateKeysData](../operations/createkeysdata.mdx) | :heavy_check_mark: | The created API key information | \{
"byok_usage": 17.38,
"byok_usage_daily": 17.38,
"byok_usage_monthly": 17.38,
"byok_usage_weekly": 17.38,
"created_at": "2025-08-24T10:30:00Z",
"creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000",
"disabled": false,
"expires_at": "2027-12-31T23:59:59Z",
"hash": "f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943",
"include_byok_in_limit": false,
"label": "sk-or-v1-0e6...1c96",
"limit": 100,
"limit_remaining": 74.5,
"limit_reset": "monthly",
"name": "My Production Key",
"updated_at": "2025-08-24T15:45:00Z",
"usage": 25.5,
"usage_daily": 25.5,
"usage_monthly": 25.5,
"usage_weekly": 25.5,
"workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"
} | | `key` | *str* | :heavy_check_mark: | The actual API key string (only shown once) | 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 | \ No newline at end of file diff --git a/docs/operations/createobservabilitydestinationglobals.mdx b/docs/operations/createobservabilitydestinationglobals.mdx new file mode 100644 index 00000000..778aba14 --- /dev/null +++ b/docs/operations/createobservabilitydestinationglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "CreateObservabilityDestinationGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/createobservabilitydestinationrequest.mdx b/docs/operations/createobservabilitydestinationrequest.mdx new file mode 100644 index 00000000..3c62d6ca --- /dev/null +++ b/docs/operations/createobservabilitydestinationrequest.mdx @@ -0,0 +1,12 @@ +--- +title: "CreateObservabilityDestinationRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `create_observability_destination_request` | [components.CreateObservabilityDestinationRequest](../components/createobservabilitydestinationrequest.mdx) | :heavy_check_mark: | N/A | \{
"config": \{
"baseUrl": "https://us.cloud.langfuse.com",
"publicKey": "pk-l...EfGh",
"secretKey": "sk-l...AbCd"
},
"name": "Production Langfuse",
"type": "langfuse"
} | \ No newline at end of file diff --git a/docs/operations/createpresetschatcompletionsglobals.mdx b/docs/operations/createpresetschatcompletionsglobals.mdx new file mode 100644 index 00000000..47f31115 --- /dev/null +++ b/docs/operations/createpresetschatcompletionsglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "CreatePresetsChatCompletionsGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/sendchatcompletionrequestrequest.md b/docs/operations/createpresetschatcompletionsrequest.mdx similarity index 86% rename from docs/operations/sendchatcompletionrequestrequest.md rename to docs/operations/createpresetschatcompletionsrequest.mdx index bcb4bc42..c6bd7807 100644 --- a/docs/operations/sendchatcompletionrequestrequest.md +++ b/docs/operations/createpresetschatcompletionsrequest.mdx @@ -1,5 +1,6 @@ -# SendChatCompletionRequestRequest - +--- +title: "CreatePresetsChatCompletionsRequest" +--- ## Fields @@ -8,5 +9,5 @@ | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `x_open_router_metadata` | [Optional[components.MetadataLevel]](../components/metadatalevel.md) | :heavy_minus_sign: | 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. | enabled | -| `chat_request` | [components.ChatRequest](../components/chatrequest.md) | :heavy_check_mark: | N/A | {
"max_tokens": 150,
"messages": [
{
"content": "You are a helpful assistant.",
"role": "system"
},
{
"content": "What is the capital of France?",
"role": "user"
}
],
"model": "openai/gpt-4",
"temperature": 0.7
} | \ No newline at end of file +| `slug` | *str* | :heavy_check_mark: | URL-safe slug identifying the preset. Created if it does not exist. | my-preset | +| `chat_request` | [components.ChatRequest](../components/chatrequest.mdx) | :heavy_check_mark: | N/A | \{
"max_tokens": 150,
"messages": [
\{
"content": "You are a helpful assistant.",
"role": "system"
},
\{
"content": "What is the capital of France?",
"role": "user"
}
],
"model": "openai/gpt-4",
"temperature": 0.7
} | \ No newline at end of file diff --git a/docs/operations/createpresetsmessagesglobals.mdx b/docs/operations/createpresetsmessagesglobals.mdx new file mode 100644 index 00000000..278c5d1f --- /dev/null +++ b/docs/operations/createpresetsmessagesglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "CreatePresetsMessagesGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/createpresetsmessagesrequest.mdx b/docs/operations/createpresetsmessagesrequest.mdx new file mode 100644 index 00000000..71d6249e --- /dev/null +++ b/docs/operations/createpresetsmessagesrequest.mdx @@ -0,0 +1,13 @@ +--- +title: "CreatePresetsMessagesRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `slug` | *str* | :heavy_check_mark: | URL-safe slug identifying the preset. Created if it does not exist. | my-preset | +| `messages_request` | [components.MessagesRequest](../components/messagesrequest.mdx) | :heavy_check_mark: | N/A | \{
"max_tokens": 1024,
"messages": [
\{
"content": "Hello, how are you?",
"role": "user"
}
],
"model": "anthropic/claude-4.5-sonnet-20250929",
"temperature": 0.7
} | \ No newline at end of file diff --git a/docs/operations/createpresetsresponsesglobals.mdx b/docs/operations/createpresetsresponsesglobals.mdx new file mode 100644 index 00000000..9d4fce86 --- /dev/null +++ b/docs/operations/createpresetsresponsesglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "CreatePresetsResponsesGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/createpresetsresponsesrequest.mdx b/docs/operations/createpresetsresponsesrequest.mdx new file mode 100644 index 00000000..54dde0eb --- /dev/null +++ b/docs/operations/createpresetsresponsesrequest.mdx @@ -0,0 +1,13 @@ +--- +title: "CreatePresetsResponsesRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `slug` | *str* | :heavy_check_mark: | URL-safe slug identifying the preset. Created if it does not exist. | my-preset | +| `responses_request` | [components.ResponsesRequest](../components/responsesrequest.mdx) | :heavy_check_mark: | N/A | \{
"input": [
\{
"content": "Hello, how are you?",
"role": "user",
"type": "message"
}
],
"model": "anthropic/claude-4.5-sonnet-20250929",
"temperature": 0.7,
"tools": [
\{
"description": "Get the current weather in a given location",
"name": "get_current_weather",
"parameters": \{
"properties": \{
"location": \{
"type": "string"
}
},
"type": "object"
},
"type": "function"
}
],
"top_p": 0.9
} | \ No newline at end of file diff --git a/docs/operations/creatererankglobals.mdx b/docs/operations/creatererankglobals.mdx new file mode 100644 index 00000000..e0e136ff --- /dev/null +++ b/docs/operations/creatererankglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "CreateRerankGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/creatererankrequest.mdx b/docs/operations/creatererankrequest.mdx new file mode 100644 index 00000000..f0d351fc --- /dev/null +++ b/docs/operations/creatererankrequest.mdx @@ -0,0 +1,12 @@ +--- +title: "CreateRerankRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `request_body` | [operations.CreateRerankRequestBody](../operations/creatererankrequestbody.mdx) | :heavy_check_mark: | N/A | \{
"documents": [
"Paris is the capital of France.",
"Berlin is the capital of Germany."
],
"model": "cohere/rerank-v3.5",
"query": "What is the capital of France?",
"top_n": 3
} | \ No newline at end of file diff --git a/docs/operations/creatererankrequestbody.mdx b/docs/operations/creatererankrequestbody.mdx new file mode 100644 index 00000000..b5640657 --- /dev/null +++ b/docs/operations/creatererankrequestbody.mdx @@ -0,0 +1,16 @@ +--- +title: "CreateRerankRequestBody" +--- + +Rerank request input + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `documents` | List[[operations.Document](../operations/document.mdx)] | :heavy_check_mark: | The list of documents to rerank. Documents may be plain strings, or structured objects with `text` and/or `image` for multimodal models. | [
"Paris is the capital of France.",
"Berlin is the capital of Germany."
] | +| `model` | *str* | :heavy_check_mark: | The rerank model to use | cohere/rerank-v3.5 | +| `provider` | [OptionalNullable[components.ProviderPreferences]](../components/providerpreferences.mdx) | :heavy_minus_sign: | N/A | \{
"allow_fallbacks": true
} | +| `query` | *str* | :heavy_check_mark: | The search query to rerank documents against | What is the capital of France? | +| `top_n` | *Optional[int]* | :heavy_minus_sign: | Number of most relevant documents to return | 3 | \ No newline at end of file diff --git a/docs/operations/creatererankresponse.mdx b/docs/operations/creatererankresponse.mdx new file mode 100644 index 00000000..2d6beaa1 --- /dev/null +++ b/docs/operations/creatererankresponse.mdx @@ -0,0 +1,18 @@ +--- +title: "CreateRerankResponse" +--- + +## Supported Types + +### `operations.CreateRerankResponseBody` + +```python +value: operations.CreateRerankResponseBody = /* values here */ +``` + +### `str` + +```python +value: str = /* values here */ +``` + diff --git a/docs/operations/creatererankresponsebody.mdx b/docs/operations/creatererankresponsebody.mdx new file mode 100644 index 00000000..9dc87532 --- /dev/null +++ b/docs/operations/creatererankresponsebody.mdx @@ -0,0 +1,16 @@ +--- +title: "CreateRerankResponseBody" +--- + +Rerank response containing ranked results + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `id` | *Optional[str]* | :heavy_minus_sign: | Unique identifier for the rerank response (ORID format) | gen-rerank-1234567890-abc | +| `model` | *str* | :heavy_check_mark: | The model used for reranking | cohere/rerank-v3.5 | +| `provider` | *Optional[str]* | :heavy_minus_sign: | The provider that served the rerank request | Cohere | +| `results` | List[[operations.Result](../operations/result.mdx)] | :heavy_check_mark: | List of rerank results sorted by relevance | [
\{
"document": \{
"text": "Paris is the capital of France."
},
"index": 0,
"relevance_score": 0.98
}
] | +| `usage` | [Optional[operations.CreateRerankUsage]](../operations/creatererankusage.mdx) | :heavy_minus_sign: | Usage statistics | \{
"search_units": 1,
"total_tokens": 150
} | \ No newline at end of file diff --git a/docs/operations/creatererankusage.mdx b/docs/operations/creatererankusage.mdx new file mode 100644 index 00000000..66beef7e --- /dev/null +++ b/docs/operations/creatererankusage.mdx @@ -0,0 +1,14 @@ +--- +title: "CreateRerankUsage" +--- + +Usage statistics + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| `cost` | *Optional[float]* | :heavy_minus_sign: | Cost of the request in credits | 0.001 | +| `search_units` | *Optional[int]* | :heavy_minus_sign: | Number of search units consumed (Cohere billing) | 1 | +| `total_tokens` | *Optional[int]* | :heavy_minus_sign: | Total number of tokens used | 150 | \ No newline at end of file diff --git a/docs/operations/createresponsesglobals.md b/docs/operations/createresponsesglobals.md deleted file mode 100644 index 265872cb..00000000 --- a/docs/operations/createresponsesglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# CreateResponsesGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/createresponsesglobals.mdx b/docs/operations/createresponsesglobals.mdx new file mode 100644 index 00000000..60b3ee5d --- /dev/null +++ b/docs/operations/createresponsesglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "CreateResponsesGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/createresponsesrequest.md b/docs/operations/createresponsesrequest.mdx similarity index 90% rename from docs/operations/createresponsesrequest.md rename to docs/operations/createresponsesrequest.mdx index 87238b0b..bd72e62c 100644 --- a/docs/operations/createresponsesrequest.md +++ b/docs/operations/createresponsesrequest.mdx @@ -1,5 +1,6 @@ -# CreateResponsesRequest - +--- +title: "CreateResponsesRequest" +--- ## Fields @@ -8,5 +9,5 @@ | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `x_open_router_metadata` | [Optional[components.MetadataLevel]](../components/metadatalevel.md) | :heavy_minus_sign: | 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. | enabled | -| `responses_request` | [components.ResponsesRequest](../components/responsesrequest.md) | :heavy_check_mark: | N/A | {
"input": [
{
"content": "Hello, how are you?",
"role": "user",
"type": "message"
}
],
"model": "anthropic/claude-4.5-sonnet-20250929",
"temperature": 0.7,
"tools": [
{
"description": "Get the current weather in a given location",
"name": "get_current_weather",
"parameters": {
"properties": {
"location": {
"type": "string"
}
},
"type": "object"
},
"type": "function"
}
],
"top_p": 0.9
} | \ No newline at end of file +| `x_open_router_metadata` | [Optional[components.MetadataLevel]](../components/metadatalevel.mdx) | :heavy_minus_sign: | 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. | enabled | +| `responses_request` | [components.ResponsesRequest](../components/responsesrequest.mdx) | :heavy_check_mark: | N/A | \{
"input": [
\{
"content": "Hello, how are you?",
"role": "user",
"type": "message"
}
],
"model": "anthropic/claude-4.5-sonnet-20250929",
"temperature": 0.7,
"tools": [
\{
"description": "Get the current weather in a given location",
"name": "get_current_weather",
"parameters": \{
"properties": \{
"location": \{
"type": "string"
}
},
"type": "object"
},
"type": "function"
}
],
"top_p": 0.9
} | \ No newline at end of file diff --git a/docs/operations/createresponsesresponse.md b/docs/operations/createresponsesresponse.mdx similarity index 91% rename from docs/operations/createresponsesresponse.md rename to docs/operations/createresponsesresponse.mdx index 5c515b1d..a51a1e37 100644 --- a/docs/operations/createresponsesresponse.md +++ b/docs/operations/createresponsesresponse.mdx @@ -1,5 +1,6 @@ -# CreateResponsesResponse - +--- +title: "CreateResponsesResponse" +--- ## Supported Types diff --git a/docs/operations/createvideosglobals.mdx b/docs/operations/createvideosglobals.mdx new file mode 100644 index 00000000..be83bcae --- /dev/null +++ b/docs/operations/createvideosglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "CreateVideosGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/createvideosrequest.mdx b/docs/operations/createvideosrequest.mdx new file mode 100644 index 00000000..2bb242fb --- /dev/null +++ b/docs/operations/createvideosrequest.mdx @@ -0,0 +1,12 @@ +--- +title: "CreateVideosRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `video_generation_request` | [components.VideoGenerationRequest](../components/videogenerationrequest.mdx) | :heavy_check_mark: | N/A | \{
"aspect_ratio": "16:9",
"duration": 8,
"model": "google/veo-3.1",
"prompt": "A serene mountain landscape at sunset",
"resolution": "720p"
} | \ No newline at end of file diff --git a/docs/operations/createworkspaceglobals.mdx b/docs/operations/createworkspaceglobals.mdx new file mode 100644 index 00000000..c85655e7 --- /dev/null +++ b/docs/operations/createworkspaceglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "CreateWorkspaceGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/createworkspacerequest.mdx b/docs/operations/createworkspacerequest.mdx new file mode 100644 index 00000000..c4c5d7a8 --- /dev/null +++ b/docs/operations/createworkspacerequest.mdx @@ -0,0 +1,12 @@ +--- +title: "CreateWorkspaceRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `create_workspace_request` | [components.CreateWorkspaceRequest](../components/createworkspacerequest.mdx) | :heavy_check_mark: | N/A | \{
"default_image_model": "openai/dall-e-3",
"default_provider_sort": "price",
"default_text_model": "openai/gpt-4o",
"description": "Production environment workspace",
"name": "Production",
"slug": "production"
} | \ No newline at end of file diff --git a/docs/operations/datacenter.mdx b/docs/operations/datacenter.mdx new file mode 100644 index 00000000..03cecfd4 --- /dev/null +++ b/docs/operations/datacenter.mdx @@ -0,0 +1,267 @@ +--- +title: "Datacenter" +--- + +## Example Usage + +```python +from openrouter.operations import Datacenter + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Datacenter = "AD" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"AD"` +- `"AE"` +- `"AF"` +- `"AG"` +- `"AI"` +- `"AL"` +- `"AM"` +- `"AO"` +- `"AQ"` +- `"AR"` +- `"AS"` +- `"AT"` +- `"AU"` +- `"AW"` +- `"AX"` +- `"AZ"` +- `"BA"` +- `"BB"` +- `"BD"` +- `"BE"` +- `"BF"` +- `"BG"` +- `"BH"` +- `"BI"` +- `"BJ"` +- `"BL"` +- `"BM"` +- `"BN"` +- `"BO"` +- `"BQ"` +- `"BR"` +- `"BS"` +- `"BT"` +- `"BV"` +- `"BW"` +- `"BY"` +- `"BZ"` +- `"CA"` +- `"CC"` +- `"CD"` +- `"CF"` +- `"CG"` +- `"CH"` +- `"CI"` +- `"CK"` +- `"CL"` +- `"CM"` +- `"CN"` +- `"CO"` +- `"CR"` +- `"CU"` +- `"CV"` +- `"CW"` +- `"CX"` +- `"CY"` +- `"CZ"` +- `"DE"` +- `"DJ"` +- `"DK"` +- `"DM"` +- `"DO"` +- `"DZ"` +- `"EC"` +- `"EE"` +- `"EG"` +- `"EH"` +- `"ER"` +- `"ES"` +- `"ET"` +- `"FI"` +- `"FJ"` +- `"FK"` +- `"FM"` +- `"FO"` +- `"FR"` +- `"GA"` +- `"GB"` +- `"GD"` +- `"GE"` +- `"GF"` +- `"GG"` +- `"GH"` +- `"GI"` +- `"GL"` +- `"GM"` +- `"GN"` +- `"GP"` +- `"GQ"` +- `"GR"` +- `"GS"` +- `"GT"` +- `"GU"` +- `"GW"` +- `"GY"` +- `"HK"` +- `"HM"` +- `"HN"` +- `"HR"` +- `"HT"` +- `"HU"` +- `"ID"` +- `"IE"` +- `"IL"` +- `"IM"` +- `"IN"` +- `"IO"` +- `"IQ"` +- `"IR"` +- `"IS"` +- `"IT"` +- `"JE"` +- `"JM"` +- `"JO"` +- `"JP"` +- `"KE"` +- `"KG"` +- `"KH"` +- `"KI"` +- `"KM"` +- `"KN"` +- `"KP"` +- `"KR"` +- `"KW"` +- `"KY"` +- `"KZ"` +- `"LA"` +- `"LB"` +- `"LC"` +- `"LI"` +- `"LK"` +- `"LR"` +- `"LS"` +- `"LT"` +- `"LU"` +- `"LV"` +- `"LY"` +- `"MA"` +- `"MC"` +- `"MD"` +- `"ME"` +- `"MF"` +- `"MG"` +- `"MH"` +- `"MK"` +- `"ML"` +- `"MM"` +- `"MN"` +- `"MO"` +- `"MP"` +- `"MQ"` +- `"MR"` +- `"MS"` +- `"MT"` +- `"MU"` +- `"MV"` +- `"MW"` +- `"MX"` +- `"MY"` +- `"MZ"` +- `"NA"` +- `"NC"` +- `"NE"` +- `"NF"` +- `"NG"` +- `"NI"` +- `"NL"` +- `"NO"` +- `"NP"` +- `"NR"` +- `"NU"` +- `"NZ"` +- `"OM"` +- `"PA"` +- `"PE"` +- `"PF"` +- `"PG"` +- `"PH"` +- `"PK"` +- `"PL"` +- `"PM"` +- `"PN"` +- `"PR"` +- `"PS"` +- `"PT"` +- `"PW"` +- `"PY"` +- `"QA"` +- `"RE"` +- `"RO"` +- `"RS"` +- `"RU"` +- `"RW"` +- `"SA"` +- `"SB"` +- `"SC"` +- `"SD"` +- `"SE"` +- `"SG"` +- `"SH"` +- `"SI"` +- `"SJ"` +- `"SK"` +- `"SL"` +- `"SM"` +- `"SN"` +- `"SO"` +- `"SR"` +- `"SS"` +- `"ST"` +- `"SV"` +- `"SX"` +- `"SY"` +- `"SZ"` +- `"TC"` +- `"TD"` +- `"TF"` +- `"TG"` +- `"TH"` +- `"TJ"` +- `"TK"` +- `"TL"` +- `"TM"` +- `"TN"` +- `"TO"` +- `"TR"` +- `"TT"` +- `"TV"` +- `"TW"` +- `"TZ"` +- `"UA"` +- `"UG"` +- `"UM"` +- `"US"` +- `"UY"` +- `"UZ"` +- `"VA"` +- `"VC"` +- `"VE"` +- `"VG"` +- `"VI"` +- `"VN"` +- `"VU"` +- `"WF"` +- `"WS"` +- `"YE"` +- `"YT"` +- `"ZA"` +- `"ZM"` +- `"ZW"` diff --git a/docs/operations/deletebyokkeyglobals.mdx b/docs/operations/deletebyokkeyglobals.mdx new file mode 100644 index 00000000..fa05fb4e --- /dev/null +++ b/docs/operations/deletebyokkeyglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "DeleteBYOKKeyGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/deletebyokkeyrequest.mdx b/docs/operations/deletebyokkeyrequest.mdx new file mode 100644 index 00000000..7fdac955 --- /dev/null +++ b/docs/operations/deletebyokkeyrequest.mdx @@ -0,0 +1,12 @@ +--- +title: "DeleteBYOKKeyRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `id` | *str* | :heavy_check_mark: | The BYOK credential ID (UUID). | 11111111-2222-3333-4444-555555555555 | \ No newline at end of file diff --git a/docs/operations/deletefileglobals.mdx b/docs/operations/deletefileglobals.mdx new file mode 100644 index 00000000..7cab840a --- /dev/null +++ b/docs/operations/deletefileglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "DeleteFileGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/deletefilerequest.mdx b/docs/operations/deletefilerequest.mdx new file mode 100644 index 00000000..3202a43f --- /dev/null +++ b/docs/operations/deletefilerequest.mdx @@ -0,0 +1,13 @@ +--- +title: "DeleteFileRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `file_id` | *str* | :heavy_check_mark: | N/A | file_011CNha8iCJcU1wXNR6q4V8w | +| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Workspace to scope the request to. Defaults to the caller’s default workspace. | a103d8b6-42f0-4e50-9a3c-bf41e2c3c1a7 | \ No newline at end of file diff --git a/docs/operations/deleteguardrailglobals.md b/docs/operations/deleteguardrailglobals.md deleted file mode 100644 index 8b3caa04..00000000 --- a/docs/operations/deleteguardrailglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# DeleteGuardrailGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/deleteguardrailglobals.mdx b/docs/operations/deleteguardrailglobals.mdx new file mode 100644 index 00000000..0c506f59 --- /dev/null +++ b/docs/operations/deleteguardrailglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "DeleteGuardrailGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/deleteguardrailrequest.md b/docs/operations/deleteguardrailrequest.mdx similarity index 99% rename from docs/operations/deleteguardrailrequest.md rename to docs/operations/deleteguardrailrequest.mdx index 14aa025d..ba80054b 100644 --- a/docs/operations/deleteguardrailrequest.md +++ b/docs/operations/deleteguardrailrequest.mdx @@ -1,5 +1,6 @@ -# DeleteGuardrailRequest - +--- +title: "DeleteGuardrailRequest" +--- ## Fields diff --git a/docs/operations/deletekeysglobals.md b/docs/operations/deletekeysglobals.md deleted file mode 100644 index 0bbd4985..00000000 --- a/docs/operations/deletekeysglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# DeleteKeysGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/deletekeysglobals.mdx b/docs/operations/deletekeysglobals.mdx new file mode 100644 index 00000000..e89ca07d --- /dev/null +++ b/docs/operations/deletekeysglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "DeleteKeysGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/deletekeysrequest.md b/docs/operations/deletekeysrequest.mdx similarity index 99% rename from docs/operations/deletekeysrequest.md rename to docs/operations/deletekeysrequest.mdx index 61b97141..f7ef7a94 100644 --- a/docs/operations/deletekeysrequest.md +++ b/docs/operations/deletekeysrequest.mdx @@ -1,5 +1,6 @@ -# DeleteKeysRequest - +--- +title: "DeleteKeysRequest" +--- ## Fields diff --git a/docs/operations/deletekeysresponse.md b/docs/operations/deletekeysresponse.mdx similarity index 95% rename from docs/operations/deletekeysresponse.md rename to docs/operations/deletekeysresponse.mdx index cc7cddbd..5e83f266 100644 --- a/docs/operations/deletekeysresponse.md +++ b/docs/operations/deletekeysresponse.mdx @@ -1,4 +1,6 @@ -# DeleteKeysResponse +--- +title: "DeleteKeysResponse" +--- API key deleted successfully diff --git a/docs/operations/deleteobservabilitydestinationglobals.mdx b/docs/operations/deleteobservabilitydestinationglobals.mdx new file mode 100644 index 00000000..14ee5de0 --- /dev/null +++ b/docs/operations/deleteobservabilitydestinationglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "DeleteObservabilityDestinationGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/deleteobservabilitydestinationrequest.mdx b/docs/operations/deleteobservabilitydestinationrequest.mdx new file mode 100644 index 00000000..6dee392d --- /dev/null +++ b/docs/operations/deleteobservabilitydestinationrequest.mdx @@ -0,0 +1,12 @@ +--- +title: "DeleteObservabilityDestinationRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `id` | *str* | :heavy_check_mark: | The destination ID (UUID). | 99999999-aaaa-bbbb-cccc-dddddddddddd | \ No newline at end of file diff --git a/docs/operations/deleteworkspacebudgetglobals.mdx b/docs/operations/deleteworkspacebudgetglobals.mdx new file mode 100644 index 00000000..f0aff819 --- /dev/null +++ b/docs/operations/deleteworkspacebudgetglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "DeleteWorkspaceBudgetGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/deleteworkspacebudgetrequest.mdx b/docs/operations/deleteworkspacebudgetrequest.mdx new file mode 100644 index 00000000..1073b36b --- /dev/null +++ b/docs/operations/deleteworkspacebudgetrequest.mdx @@ -0,0 +1,13 @@ +--- +title: "DeleteWorkspaceBudgetRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `id` | *str* | :heavy_check_mark: | The workspace ID (UUID) or slug | production | +| `interval` | [components.WorkspaceBudgetInterval](../components/workspacebudgetinterval.mdx) | :heavy_check_mark: | Budget reset interval. Use "lifetime" for a one-time budget that never resets. | monthly | \ No newline at end of file diff --git a/docs/operations/deleteworkspaceglobals.mdx b/docs/operations/deleteworkspaceglobals.mdx new file mode 100644 index 00000000..c7f6f46c --- /dev/null +++ b/docs/operations/deleteworkspaceglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "DeleteWorkspaceGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/deleteworkspacerequest.mdx b/docs/operations/deleteworkspacerequest.mdx new file mode 100644 index 00000000..ba1a6161 --- /dev/null +++ b/docs/operations/deleteworkspacerequest.mdx @@ -0,0 +1,12 @@ +--- +title: "DeleteWorkspaceRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `id` | *str* | :heavy_check_mark: | The workspace ID (UUID) or slug | production | \ No newline at end of file diff --git a/docs/operations/dimension.mdx b/docs/operations/dimension.mdx new file mode 100644 index 00000000..3659423d --- /dev/null +++ b/docs/operations/dimension.mdx @@ -0,0 +1,10 @@ +--- +title: "Dimension" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | +| `display_label` | *str* | :heavy_check_mark: | Human-readable label | Model | +| `name` | *str* | :heavy_check_mark: | Dimension identifier used in query requests | model | \ No newline at end of file diff --git a/docs/operations/direction.mdx b/docs/operations/direction.mdx new file mode 100644 index 00000000..0f574110 --- /dev/null +++ b/docs/operations/direction.mdx @@ -0,0 +1,20 @@ +--- +title: "Direction" +--- + +## Example Usage + +```python +from openrouter.operations import Direction + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Direction = "asc" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"asc"` +- `"desc"` diff --git a/docs/operations/displayformat.mdx b/docs/operations/displayformat.mdx new file mode 100644 index 00000000..a444dfd6 --- /dev/null +++ b/docs/operations/displayformat.mdx @@ -0,0 +1,25 @@ +--- +title: "DisplayFormat" +--- + +How this metric value should be formatted for display (e.g. percent → multiply by 100 and append %, currency → prefix with $) + +## Example Usage + +```python +from openrouter.operations import DisplayFormat + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: DisplayFormat = "number" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"number"` +- `"currency"` +- `"percent"` +- `"latency"` +- `"throughput"` diff --git a/docs/operations/distillable.mdx b/docs/operations/distillable.mdx new file mode 100644 index 00000000..93477874 --- /dev/null +++ b/docs/operations/distillable.mdx @@ -0,0 +1,22 @@ +--- +title: "Distillable" +--- + +Filter by distillation capability. "true" returns only distillable models, "false" excludes them. + +## Example Usage + +```python +from openrouter.operations import Distillable + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Distillable = "true" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"true"` +- `"false"` diff --git a/docs/operations/document.mdx b/docs/operations/document.mdx new file mode 100644 index 00000000..89efca13 --- /dev/null +++ b/docs/operations/document.mdx @@ -0,0 +1,21 @@ +--- +title: "Document" +--- + +A document to rerank. Either a plain string, or a structured object with optional `text` and/or `image`. + + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `operations.DocumentRequest` + +```python +value: operations.DocumentRequest = /* values here */ +``` + diff --git a/docs/operations/documentrequest.mdx b/docs/operations/documentrequest.mdx new file mode 100644 index 00000000..4c0dd9f8 --- /dev/null +++ b/docs/operations/documentrequest.mdx @@ -0,0 +1,13 @@ +--- +title: "DocumentRequest" +--- + +A structured document with optional text and/or image content. At least one of `text` or `image` must be provided. + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `image` | *Optional[str]* | :heavy_minus_sign: | An image associated with the document, as a remote URL (http/https) or a base64-encoded data URI (data:image/...). | https://upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Phytogenic.png | +| `text` | *Optional[str]* | :heavy_minus_sign: | The document text | AI enables robots to perceive, plan, and act autonomously. | \ No newline at end of file diff --git a/docs/operations/documentresponse.mdx b/docs/operations/documentresponse.mdx new file mode 100644 index 00000000..5dc0d7b0 --- /dev/null +++ b/docs/operations/documentresponse.mdx @@ -0,0 +1,13 @@ +--- +title: "DocumentResponse" +--- + +The document object echoing the original input (text and/or image) + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `image` | *Optional[str]* | :heavy_minus_sign: | The image (URL or data URI) from the original document | https://example.com/image.png | +| `text` | *Optional[str]* | :heavy_minus_sign: | The document text | Paris is the capital of France. | \ No newline at end of file diff --git a/docs/operations/downloadfilecontentglobals.mdx b/docs/operations/downloadfilecontentglobals.mdx new file mode 100644 index 00000000..8415a668 --- /dev/null +++ b/docs/operations/downloadfilecontentglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "DownloadFileContentGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/downloadfilecontentrequest.mdx b/docs/operations/downloadfilecontentrequest.mdx new file mode 100644 index 00000000..dcb0cb35 --- /dev/null +++ b/docs/operations/downloadfilecontentrequest.mdx @@ -0,0 +1,13 @@ +--- +title: "DownloadFileContentRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `file_id` | *str* | :heavy_check_mark: | N/A | file_011CNha8iCJcU1wXNR6q4V8w | +| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Workspace to scope the request to. Defaults to the caller’s default workspace. | a103d8b6-42f0-4e50-9a3c-bf41e2c3c1a7 | \ No newline at end of file diff --git a/docs/operations/embedding.md b/docs/operations/embedding.mdx similarity index 88% rename from docs/operations/embedding.md rename to docs/operations/embedding.mdx index f6344cab..166a8bd4 100644 --- a/docs/operations/embedding.md +++ b/docs/operations/embedding.mdx @@ -1,4 +1,6 @@ -# Embedding +--- +title: "Embedding" +--- Embedding vector as an array of floats or a base64 string diff --git a/docs/operations/encodingformat.md b/docs/operations/encodingformat.md deleted file mode 100644 index 7f532c1c..00000000 --- a/docs/operations/encodingformat.md +++ /dev/null @@ -1,11 +0,0 @@ -# EncodingFormat - -The format of the output embeddings - - -## Values - -| Name | Value | -| -------- | -------- | -| `FLOAT` | float | -| `BASE64` | base64 | \ No newline at end of file diff --git a/docs/operations/encodingformat.mdx b/docs/operations/encodingformat.mdx new file mode 100644 index 00000000..6da2037d --- /dev/null +++ b/docs/operations/encodingformat.mdx @@ -0,0 +1,22 @@ +--- +title: "EncodingFormat" +--- + +The format of the output embeddings + +## Example Usage + +```python +from openrouter.operations import EncodingFormat + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: EncodingFormat = "float" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"float"` +- `"base64"` diff --git a/docs/operations/exchangeauthcodeforapikeycodechallengemethod.md b/docs/operations/exchangeauthcodeforapikeycodechallengemethod.md deleted file mode 100644 index eec31e8c..00000000 --- a/docs/operations/exchangeauthcodeforapikeycodechallengemethod.md +++ /dev/null @@ -1,11 +0,0 @@ -# ExchangeAuthCodeForAPIKeyCodeChallengeMethod - -The method used to generate the code challenge - - -## Values - -| Name | Value | -| ------- | ------- | -| `S256` | S256 | -| `PLAIN` | plain | \ No newline at end of file diff --git a/docs/operations/exchangeauthcodeforapikeycodechallengemethod.mdx b/docs/operations/exchangeauthcodeforapikeycodechallengemethod.mdx new file mode 100644 index 00000000..38862420 --- /dev/null +++ b/docs/operations/exchangeauthcodeforapikeycodechallengemethod.mdx @@ -0,0 +1,22 @@ +--- +title: "ExchangeAuthCodeForAPIKeyCodeChallengeMethod" +--- + +The method used to generate the code challenge + +## Example Usage + +```python +from openrouter.operations import ExchangeAuthCodeForAPIKeyCodeChallengeMethod + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ExchangeAuthCodeForAPIKeyCodeChallengeMethod = "S256" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"S256"` +- `"plain"` diff --git a/docs/operations/exchangeauthcodeforapikeyglobals.md b/docs/operations/exchangeauthcodeforapikeyglobals.md deleted file mode 100644 index 91c87730..00000000 --- a/docs/operations/exchangeauthcodeforapikeyglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# ExchangeAuthCodeForAPIKeyGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/exchangeauthcodeforapikeyglobals.mdx b/docs/operations/exchangeauthcodeforapikeyglobals.mdx new file mode 100644 index 00000000..3e9fa323 --- /dev/null +++ b/docs/operations/exchangeauthcodeforapikeyglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ExchangeAuthCodeForAPIKeyGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/exchangeauthcodeforapikeyrequest.md b/docs/operations/exchangeauthcodeforapikeyrequest.mdx similarity index 89% rename from docs/operations/exchangeauthcodeforapikeyrequest.md rename to docs/operations/exchangeauthcodeforapikeyrequest.mdx index 05bbc427..a52648cd 100644 --- a/docs/operations/exchangeauthcodeforapikeyrequest.md +++ b/docs/operations/exchangeauthcodeforapikeyrequest.mdx @@ -1,5 +1,6 @@ -# ExchangeAuthCodeForAPIKeyRequest - +--- +title: "ExchangeAuthCodeForAPIKeyRequest" +--- ## Fields @@ -8,4 +9,4 @@ | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `request_body` | [operations.ExchangeAuthCodeForAPIKeyRequestBody](../operations/exchangeauthcodeforapikeyrequestbody.md) | :heavy_check_mark: | N/A | {
"code": "auth_code_abc123def456",
"code_challenge_method": "S256",
"code_verifier": "dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk"
} | \ No newline at end of file +| `request_body` | [operations.ExchangeAuthCodeForAPIKeyRequestBody](../operations/exchangeauthcodeforapikeyrequestbody.mdx) | :heavy_check_mark: | N/A | \{
"code": "auth_code_abc123def456",
"code_challenge_method": "S256",
"code_verifier": "dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk"
} | \ No newline at end of file diff --git a/docs/operations/exchangeauthcodeforapikeyrequestbody.md b/docs/operations/exchangeauthcodeforapikeyrequestbody.mdx similarity index 91% rename from docs/operations/exchangeauthcodeforapikeyrequestbody.md rename to docs/operations/exchangeauthcodeforapikeyrequestbody.mdx index 6361a13c..27265f4f 100644 --- a/docs/operations/exchangeauthcodeforapikeyrequestbody.md +++ b/docs/operations/exchangeauthcodeforapikeyrequestbody.mdx @@ -1,10 +1,11 @@ -# ExchangeAuthCodeForAPIKeyRequestBody - +--- +title: "ExchangeAuthCodeForAPIKeyRequestBody" +--- ## Fields | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | | `code` | *str* | :heavy_check_mark: | The authorization code received from the OAuth redirect | auth_code_abc123def456 | -| `code_challenge_method` | [OptionalNullable[operations.ExchangeAuthCodeForAPIKeyCodeChallengeMethod]](../operations/exchangeauthcodeforapikeycodechallengemethod.md) | :heavy_minus_sign: | The method used to generate the code challenge | S256 | +| `code_challenge_method` | [OptionalNullable[operations.ExchangeAuthCodeForAPIKeyCodeChallengeMethod]](../operations/exchangeauthcodeforapikeycodechallengemethod.mdx) | :heavy_minus_sign: | The method used to generate the code challenge | S256 | | `code_verifier` | *Optional[str]* | :heavy_minus_sign: | The code verifier if code_challenge was used in the authorization request | dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk | \ No newline at end of file diff --git a/docs/operations/exchangeauthcodeforapikeyresponse.md b/docs/operations/exchangeauthcodeforapikeyresponse.mdx similarity index 96% rename from docs/operations/exchangeauthcodeforapikeyresponse.md rename to docs/operations/exchangeauthcodeforapikeyresponse.mdx index 11975e02..2642f99d 100644 --- a/docs/operations/exchangeauthcodeforapikeyresponse.md +++ b/docs/operations/exchangeauthcodeforapikeyresponse.mdx @@ -1,4 +1,6 @@ -# ExchangeAuthCodeForAPIKeyResponse +--- +title: "ExchangeAuthCodeForAPIKeyResponse" +--- Successfully exchanged code for an API key diff --git a/docs/operations/file.mdx b/docs/operations/file.mdx new file mode 100644 index 00000000..0c3c666c --- /dev/null +++ b/docs/operations/file.mdx @@ -0,0 +1,11 @@ +--- +title: "File" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | +| `file_name` | *str* | :heavy_check_mark: | N/A | +| `content` | *Union[bytes, IO[bytes], io.IOBase]* | :heavy_check_mark: | N/A | +| `content_type` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/operations/filter_.mdx b/docs/operations/filter_.mdx new file mode 100644 index 00000000..3dbded7e --- /dev/null +++ b/docs/operations/filter_.mdx @@ -0,0 +1,11 @@ +--- +title: "Filter" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `field` | *str* | :heavy_check_mark: | Dimension to filter on. Use the /meta endpoint for available dimensions. | model | +| `operator` | *str* | :heavy_check_mark: | Filter operator | eq | +| `value` | [operations.Value1](../operations/value1.mdx) | :heavy_check_mark: | Filter value (scalar or array depending on operator). Several dimensions are enriched in responses (returned as human-readable labels), but filters must use the underlying ID: `api_key_id` — numeric ID (from generation metadata) or key hash (64-char hex from GET /api/v1/keys, resolved server-side); `user` — Clerk user ID (e.g. "user_abc123"), not the display name; `workspace` — workspace UUID, not the workspace name; `app` — numeric app ID, not the app title; `model` — permaslug (e.g. "openai/gpt-4o"), not the display name. Other dimensions (provider, origin, country, etc.) are not enriched and accept the value as returned. | | \ No newline at end of file diff --git a/docs/operations/getanalyticsmetadata.mdx b/docs/operations/getanalyticsmetadata.mdx new file mode 100644 index 00000000..6eacfe52 --- /dev/null +++ b/docs/operations/getanalyticsmetadata.mdx @@ -0,0 +1,12 @@ +--- +title: "GetAnalyticsMetaData" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `dimensions` | List[[operations.Dimension](../operations/dimension.mdx)] | :heavy_check_mark: | N/A | +| `granularities` | List[[operations.Granularity](../operations/granularity.mdx)] | :heavy_check_mark: | N/A | +| `metrics` | List[[operations.Metric](../operations/metric.mdx)] | :heavy_check_mark: | N/A | +| `operators` | List[[operations.Operator](../operations/operator.mdx)] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/operations/getanalyticsmetaglobals.mdx b/docs/operations/getanalyticsmetaglobals.mdx new file mode 100644 index 00000000..a44950e1 --- /dev/null +++ b/docs/operations/getanalyticsmetaglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "GetAnalyticsMetaGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getanalyticsmetarequest.mdx b/docs/operations/getanalyticsmetarequest.mdx new file mode 100644 index 00000000..9ca0cb3d --- /dev/null +++ b/docs/operations/getanalyticsmetarequest.mdx @@ -0,0 +1,11 @@ +--- +title: "GetAnalyticsMetaRequest" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getanalyticsmetaresponse.mdx b/docs/operations/getanalyticsmetaresponse.mdx new file mode 100644 index 00000000..f2a6915c --- /dev/null +++ b/docs/operations/getanalyticsmetaresponse.mdx @@ -0,0 +1,12 @@ +--- +title: "GetAnalyticsMetaResponse" +--- + +Returns analytics query metadata + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `data` | [operations.GetAnalyticsMetaData](../operations/getanalyticsmetadata.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/operations/getapprankingscategory.mdx b/docs/operations/getapprankingscategory.mdx new file mode 100644 index 00000000..a40dd4f5 --- /dev/null +++ b/docs/operations/getapprankingscategory.mdx @@ -0,0 +1,24 @@ +--- +title: "GetAppRankingsCategory" +--- + +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. + +## Example Usage + +```python +from openrouter.operations import GetAppRankingsCategory + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: GetAppRankingsCategory = "coding" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"coding"` +- `"creative"` +- `"productivity"` +- `"entertainment"` diff --git a/docs/operations/bulkassignmemberstoguardrailglobals.md b/docs/operations/getapprankingsglobals.mdx similarity index 98% rename from docs/operations/bulkassignmemberstoguardrailglobals.md rename to docs/operations/getapprankingsglobals.mdx index b970409d..0dd87c38 100644 --- a/docs/operations/bulkassignmemberstoguardrailglobals.md +++ b/docs/operations/getapprankingsglobals.mdx @@ -1,5 +1,6 @@ -# BulkAssignMembersToGuardrailGlobals - +--- +title: "GetAppRankingsGlobals" +--- ## Fields diff --git a/docs/operations/getapprankingsrequest.mdx b/docs/operations/getapprankingsrequest.mdx new file mode 100644 index 00000000..48980600 --- /dev/null +++ b/docs/operations/getapprankingsrequest.mdx @@ -0,0 +1,18 @@ +--- +title: "GetAppRankingsRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `category` | [Optional[operations.GetAppRankingsCategory]](../operations/getapprankingscategory.mdx) | :heavy_minus_sign: | 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. | coding | +| `subcategory` | [Optional[operations.Subcategory]](../operations/subcategory.mdx) | :heavy_minus_sign: | 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. | cli-agent | +| `sort` | [Optional[operations.GetAppRankingsSort]](../operations/getapprankingssort.mdx) | :heavy_minus_sign: | `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. | popular | +| `start_date` | *Optional[str]* | :heavy_minus_sign: | Start of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to 30 days before `end_date`. The dataset begins at 2025-01-01; earlier values are clamped forward to that floor and the resolved value is echoed in `meta.start_date`. | 2026-04-12 | +| `end_date` | *Optional[str]* | :heavy_minus_sign: | 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. | 2026-05-11 | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of apps to return (1-100). Defaults to 50. | 50 | +| `offset` | *Optional[int]* | :heavy_minus_sign: | 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`. | 0 | \ No newline at end of file diff --git a/docs/operations/getapprankingsresponse.mdx b/docs/operations/getapprankingsresponse.mdx new file mode 100644 index 00000000..8353352d --- /dev/null +++ b/docs/operations/getapprankingsresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "GetAppRankingsResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `result` | [components.AppRankingsResponse](../components/apprankingsresponse.mdx) | :heavy_check_mark: | N/A | \{
"data": [
\{
"app_id": 12345,
"app_name": "Cline",
"rank": 1,
"total_requests": 4321,
"total_tokens": "12345678"
},
\{
"app_id": 67890,
"app_name": "Roo Code",
"rank": 2,
"total_requests": 2109,
"total_tokens": "9876543"
}
],
"meta": \{
"as_of": "2026-05-12T02:00:00Z",
"end_date": "2026-05-11",
"start_date": "2026-04-12",
"version": "v1"
}
} | \ No newline at end of file diff --git a/docs/operations/getapprankingssort.mdx b/docs/operations/getapprankingssort.mdx new file mode 100644 index 00000000..a9d72a3e --- /dev/null +++ b/docs/operations/getapprankingssort.mdx @@ -0,0 +1,22 @@ +--- +title: "GetAppRankingsSort" +--- + +`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. + +## Example Usage + +```python +from openrouter.operations import GetAppRankingsSort + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: GetAppRankingsSort = "popular" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"popular"` +- `"trending"` diff --git a/docs/operations/getbenchmarksglobals.mdx b/docs/operations/getbenchmarksglobals.mdx new file mode 100644 index 00000000..679923bf --- /dev/null +++ b/docs/operations/getbenchmarksglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "GetBenchmarksGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getbenchmarksrequest.mdx b/docs/operations/getbenchmarksrequest.mdx new file mode 100644 index 00000000..c5acba5b --- /dev/null +++ b/docs/operations/getbenchmarksrequest.mdx @@ -0,0 +1,16 @@ +--- +title: "GetBenchmarksRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `source` | [Optional[operations.Source]](../operations/source.mdx) | :heavy_minus_sign: | Benchmark source to query. Determines the shape of the returned items. When omitted, returns results from all sources. | artificial-analysis | +| `task_type` | [Optional[operations.TaskType]](../operations/tasktype.mdx) | :heavy_minus_sign: | Filter results by task type. For Artificial Analysis, maps to the corresponding index. For Design Arena, maps to the matching category. | coding | +| `arena` | [Optional[operations.Arena]](../operations/arena.mdx) | :heavy_minus_sign: | Design Arena only: arena to query. Defaults to `models` when source is `design-arena`. | models | +| `category` | *Optional[str]* | :heavy_minus_sign: | Design Arena only: category within the arena (e.g. `codecategories`, `uicomponent`, `gamedev`, `3d`, `dataviz`, `image`, `video`, `svg`). When omitted, returns all categories. | codecategories | +| `max_results` | *Optional[int]* | :heavy_minus_sign: | Maximum number of items to return. When omitted, all matching results are returned. | 50 | \ No newline at end of file diff --git a/docs/operations/getbyokkeyglobals.mdx b/docs/operations/getbyokkeyglobals.mdx new file mode 100644 index 00000000..02962c39 --- /dev/null +++ b/docs/operations/getbyokkeyglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "GetBYOKKeyGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getbyokkeyrequest.mdx b/docs/operations/getbyokkeyrequest.mdx new file mode 100644 index 00000000..7c258212 --- /dev/null +++ b/docs/operations/getbyokkeyrequest.mdx @@ -0,0 +1,12 @@ +--- +title: "GetBYOKKeyRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `id` | *str* | :heavy_check_mark: | The BYOK credential ID (UUID). | 11111111-2222-3333-4444-555555555555 | \ No newline at end of file diff --git a/docs/operations/getcreditsdata.md b/docs/operations/getcreditsdata.mdx similarity index 94% rename from docs/operations/getcreditsdata.md rename to docs/operations/getcreditsdata.mdx index 9ba4582d..b0a60e0c 100644 --- a/docs/operations/getcreditsdata.md +++ b/docs/operations/getcreditsdata.mdx @@ -1,5 +1,6 @@ -# GetCreditsData - +--- +title: "GetCreditsData" +--- ## Fields diff --git a/docs/operations/getcreditsglobals.md b/docs/operations/getcreditsglobals.md deleted file mode 100644 index bb29d2da..00000000 --- a/docs/operations/getcreditsglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetCreditsGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getcreditsglobals.mdx b/docs/operations/getcreditsglobals.mdx new file mode 100644 index 00000000..e31d9868 --- /dev/null +++ b/docs/operations/getcreditsglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "GetCreditsGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getcreditsrequest.md b/docs/operations/getcreditsrequest.md deleted file mode 100644 index f86e9758..00000000 --- a/docs/operations/getcreditsrequest.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetCreditsRequest - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getcreditsrequest.mdx b/docs/operations/getcreditsrequest.mdx new file mode 100644 index 00000000..6e73894a --- /dev/null +++ b/docs/operations/getcreditsrequest.mdx @@ -0,0 +1,11 @@ +--- +title: "GetCreditsRequest" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getcreditsresponse.md b/docs/operations/getcreditsresponse.mdx similarity index 71% rename from docs/operations/getcreditsresponse.md rename to docs/operations/getcreditsresponse.mdx index a58a336f..1f584bb9 100644 --- a/docs/operations/getcreditsresponse.md +++ b/docs/operations/getcreditsresponse.mdx @@ -1,4 +1,6 @@ -# GetCreditsResponse +--- +title: "GetCreditsResponse" +--- Total credits purchased and used @@ -7,4 +9,4 @@ Total credits purchased and used | Field | Type | Required | Description | Example | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `data` | [operations.GetCreditsData](../operations/getcreditsdata.md) | :heavy_check_mark: | N/A | {
"total_credits": 100.5,
"total_usage": 25.75
} | \ No newline at end of file +| `data` | [operations.GetCreditsData](../operations/getcreditsdata.mdx) | :heavy_check_mark: | N/A | \{
"total_credits": 100.5,
"total_usage": 25.75
} | \ No newline at end of file diff --git a/docs/operations/getcurrentkeydata.md b/docs/operations/getcurrentkeydata.mdx similarity index 96% rename from docs/operations/getcurrentkeydata.md rename to docs/operations/getcurrentkeydata.mdx index dc97980a..a73217d1 100644 --- a/docs/operations/getcurrentkeydata.md +++ b/docs/operations/getcurrentkeydata.mdx @@ -1,4 +1,6 @@ -# GetCurrentKeyData +--- +title: "GetCurrentKeyData" +--- Current API key information @@ -21,7 +23,7 @@ Current API key information | `limit` | *Nullable[float]* | :heavy_check_mark: | Spending limit for the API key in USD | 100 | | `limit_remaining` | *Nullable[float]* | :heavy_check_mark: | Remaining spending limit in USD | 74.5 | | `limit_reset` | *Nullable[str]* | :heavy_check_mark: | Type of limit reset for the API key | monthly | -| ~~`rate_limit`~~ | [operations.RateLimit](../operations/ratelimit.md) | :heavy_check_mark: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Legacy rate limit information about a key. Will always return -1. | {
"interval": "1h",
"note": "This field is deprecated and safe to ignore.",
"requests": 1000
} | +| ~~`rate_limit`~~ | [operations.RateLimit](../operations/ratelimit.mdx) | :heavy_check_mark: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Legacy rate limit information about a key. Will always return -1. | \{
"interval": "1h",
"note": "This field is deprecated and safe to ignore.",
"requests": 1000
} | | `usage` | *float* | :heavy_check_mark: | Total OpenRouter credit usage (in USD) for the API key | 25.5 | | `usage_daily` | *float* | :heavy_check_mark: | OpenRouter credit usage (in USD) for the current UTC day | 25.5 | | `usage_monthly` | *float* | :heavy_check_mark: | OpenRouter credit usage (in USD) for the current UTC month | 25.5 | diff --git a/docs/operations/getcurrentkeyglobals.md b/docs/operations/getcurrentkeyglobals.md deleted file mode 100644 index 905f7d1d..00000000 --- a/docs/operations/getcurrentkeyglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetCurrentKeyGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getcurrentkeyglobals.mdx b/docs/operations/getcurrentkeyglobals.mdx new file mode 100644 index 00000000..784c3ac3 --- /dev/null +++ b/docs/operations/getcurrentkeyglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "GetCurrentKeyGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getcurrentkeyrequest.md b/docs/operations/getcurrentkeyrequest.md deleted file mode 100644 index e2097460..00000000 --- a/docs/operations/getcurrentkeyrequest.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetCurrentKeyRequest - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getcurrentkeyrequest.mdx b/docs/operations/getcurrentkeyrequest.mdx new file mode 100644 index 00000000..720e0e05 --- /dev/null +++ b/docs/operations/getcurrentkeyrequest.mdx @@ -0,0 +1,11 @@ +--- +title: "GetCurrentKeyRequest" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getcurrentkeyresponse.md b/docs/operations/getcurrentkeyresponse.mdx similarity index 88% rename from docs/operations/getcurrentkeyresponse.md rename to docs/operations/getcurrentkeyresponse.mdx index 2855d5b9..9b358b33 100644 --- a/docs/operations/getcurrentkeyresponse.md +++ b/docs/operations/getcurrentkeyresponse.mdx @@ -1,4 +1,6 @@ -# GetCurrentKeyResponse +--- +title: "GetCurrentKeyResponse" +--- API key details @@ -7,4 +9,4 @@ API key details | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `data` | [operations.GetCurrentKeyData](../operations/getcurrentkeydata.md) | :heavy_check_mark: | Current API key information | {
"byok_usage": 17.38,
"byok_usage_daily": 17.38,
"byok_usage_monthly": 17.38,
"byok_usage_weekly": 17.38,
"creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000",
"expires_at": "2027-12-31T23:59:59Z",
"include_byok_in_limit": false,
"is_free_tier": false,
"is_management_key": false,
"is_provisioning_key": false,
"label": "sk-or-v1-au7...890",
"limit": 100,
"limit_remaining": 74.5,
"limit_reset": "monthly",
"rate_limit": {
"interval": "1h",
"note": "This field is deprecated and safe to ignore.",
"requests": 1000
},
"usage": 25.5,
"usage_daily": 25.5,
"usage_monthly": 25.5,
"usage_weekly": 25.5
} | \ No newline at end of file +| `data` | [operations.GetCurrentKeyData](../operations/getcurrentkeydata.mdx) | :heavy_check_mark: | Current API key information | \{
"byok_usage": 17.38,
"byok_usage_daily": 17.38,
"byok_usage_monthly": 17.38,
"byok_usage_weekly": 17.38,
"creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000",
"expires_at": "2027-12-31T23:59:59Z",
"include_byok_in_limit": false,
"is_free_tier": false,
"is_management_key": false,
"is_provisioning_key": false,
"label": "sk-or-v1-au7...890",
"limit": 100,
"limit_remaining": 74.5,
"limit_reset": "monthly",
"rate_limit": \{
"interval": "1h",
"note": "This field is deprecated and safe to ignore.",
"requests": 1000
},
"usage": 25.5,
"usage_daily": 25.5,
"usage_monthly": 25.5,
"usage_weekly": 25.5
} | \ No newline at end of file diff --git a/docs/operations/getfilemetadataglobals.mdx b/docs/operations/getfilemetadataglobals.mdx new file mode 100644 index 00000000..4b9270d7 --- /dev/null +++ b/docs/operations/getfilemetadataglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "GetFileMetadataGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getfilemetadatarequest.mdx b/docs/operations/getfilemetadatarequest.mdx new file mode 100644 index 00000000..eee13955 --- /dev/null +++ b/docs/operations/getfilemetadatarequest.mdx @@ -0,0 +1,13 @@ +--- +title: "GetFileMetadataRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `file_id` | *str* | :heavy_check_mark: | N/A | file_011CNha8iCJcU1wXNR6q4V8w | +| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Workspace to scope the request to. Defaults to the caller’s default workspace. | a103d8b6-42f0-4e50-9a3c-bf41e2c3c1a7 | \ No newline at end of file diff --git a/docs/operations/getgenerationglobals.md b/docs/operations/getgenerationglobals.md deleted file mode 100644 index 84200359..00000000 --- a/docs/operations/getgenerationglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetGenerationGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getgenerationglobals.mdx b/docs/operations/getgenerationglobals.mdx new file mode 100644 index 00000000..450a95a8 --- /dev/null +++ b/docs/operations/getgenerationglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "GetGenerationGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getgenerationrequest.md b/docs/operations/getgenerationrequest.mdx similarity index 99% rename from docs/operations/getgenerationrequest.md rename to docs/operations/getgenerationrequest.mdx index 8c54a7a4..318c9801 100644 --- a/docs/operations/getgenerationrequest.md +++ b/docs/operations/getgenerationrequest.mdx @@ -1,5 +1,6 @@ -# GetGenerationRequest - +--- +title: "GetGenerationRequest" +--- ## Fields diff --git a/docs/operations/getguardrailglobals.md b/docs/operations/getguardrailglobals.md deleted file mode 100644 index 63bf9d69..00000000 --- a/docs/operations/getguardrailglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetGuardrailGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getguardrailglobals.mdx b/docs/operations/getguardrailglobals.mdx new file mode 100644 index 00000000..3cd67137 --- /dev/null +++ b/docs/operations/getguardrailglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "GetGuardrailGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getguardrailrequest.md b/docs/operations/getguardrailrequest.mdx similarity index 99% rename from docs/operations/getguardrailrequest.md rename to docs/operations/getguardrailrequest.mdx index ad49c823..15bebf62 100644 --- a/docs/operations/getguardrailrequest.md +++ b/docs/operations/getguardrailrequest.mdx @@ -1,5 +1,6 @@ -# GetGuardrailRequest - +--- +title: "GetGuardrailRequest" +--- ## Fields diff --git a/docs/operations/getkeydata.md b/docs/operations/getkeydata.mdx similarity index 99% rename from docs/operations/getkeydata.md rename to docs/operations/getkeydata.mdx index c5a3db6f..b41432d2 100644 --- a/docs/operations/getkeydata.md +++ b/docs/operations/getkeydata.mdx @@ -1,4 +1,6 @@ -# GetKeyData +--- +title: "GetKeyData" +--- The API key information diff --git a/docs/operations/getkeyglobals.md b/docs/operations/getkeyglobals.md deleted file mode 100644 index 585d2a33..00000000 --- a/docs/operations/getkeyglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetKeyGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/models/internal/globals.md b/docs/operations/getkeyglobals.mdx similarity index 98% rename from docs/models/internal/globals.md rename to docs/operations/getkeyglobals.mdx index 5b30448a..59d0a567 100644 --- a/docs/models/internal/globals.md +++ b/docs/operations/getkeyglobals.mdx @@ -1,5 +1,6 @@ -# Globals - +--- +title: "GetKeyGlobals" +--- ## Fields diff --git a/docs/operations/getkeyrequest.md b/docs/operations/getkeyrequest.mdx similarity index 99% rename from docs/operations/getkeyrequest.md rename to docs/operations/getkeyrequest.mdx index b7b0a302..917f4073 100644 --- a/docs/operations/getkeyrequest.md +++ b/docs/operations/getkeyrequest.mdx @@ -1,5 +1,6 @@ -# GetKeyRequest - +--- +title: "GetKeyRequest" +--- ## Fields diff --git a/docs/operations/getkeyresponse.md b/docs/operations/getkeyresponse.mdx similarity index 89% rename from docs/operations/getkeyresponse.md rename to docs/operations/getkeyresponse.mdx index 72e8055b..52562a4f 100644 --- a/docs/operations/getkeyresponse.md +++ b/docs/operations/getkeyresponse.mdx @@ -1,4 +1,6 @@ -# GetKeyResponse +--- +title: "GetKeyResponse" +--- API key details @@ -7,4 +9,4 @@ API key details | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `data` | [operations.GetKeyData](../operations/getkeydata.md) | :heavy_check_mark: | The API key information | {
"byok_usage": 17.38,
"byok_usage_daily": 17.38,
"byok_usage_monthly": 17.38,
"byok_usage_weekly": 17.38,
"created_at": "2025-08-24T10:30:00Z",
"creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000",
"disabled": false,
"expires_at": "2027-12-31T23:59:59Z",
"hash": "f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943",
"include_byok_in_limit": false,
"label": "sk-or-v1-0e6...1c96",
"limit": 100,
"limit_remaining": 74.5,
"limit_reset": "monthly",
"name": "My Production Key",
"updated_at": "2025-08-24T15:45:00Z",
"usage": 25.5,
"usage_daily": 25.5,
"usage_monthly": 25.5,
"usage_weekly": 25.5,
"workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"
} | \ No newline at end of file +| `data` | [operations.GetKeyData](../operations/getkeydata.mdx) | :heavy_check_mark: | The API key information | \{
"byok_usage": 17.38,
"byok_usage_daily": 17.38,
"byok_usage_monthly": 17.38,
"byok_usage_weekly": 17.38,
"created_at": "2025-08-24T10:30:00Z",
"creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000",
"disabled": false,
"expires_at": "2027-12-31T23:59:59Z",
"hash": "f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943",
"include_byok_in_limit": false,
"label": "sk-or-v1-0e6...1c96",
"limit": 100,
"limit_remaining": 74.5,
"limit_reset": "monthly",
"name": "My Production Key",
"updated_at": "2025-08-24T15:45:00Z",
"usage": 25.5,
"usage_daily": 25.5,
"usage_monthly": 25.5,
"usage_weekly": 25.5,
"workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"
} | \ No newline at end of file diff --git a/docs/operations/createembeddingsglobals.md b/docs/operations/getmodelglobals.mdx similarity index 98% rename from docs/operations/createembeddingsglobals.md rename to docs/operations/getmodelglobals.mdx index 13b9e13d..e253e026 100644 --- a/docs/operations/createembeddingsglobals.md +++ b/docs/operations/getmodelglobals.mdx @@ -1,5 +1,6 @@ -# CreateEmbeddingsGlobals - +--- +title: "GetModelGlobals" +--- ## Fields diff --git a/docs/operations/getmodelrequest.mdx b/docs/operations/getmodelrequest.mdx new file mode 100644 index 00000000..860150ab --- /dev/null +++ b/docs/operations/getmodelrequest.mdx @@ -0,0 +1,13 @@ +--- +title: "GetModelRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `author` | *str* | :heavy_check_mark: | The author/organization of the model | openai | +| `slug` | *str* | :heavy_check_mark: | The model slug, optionally including a variant suffix (e.g. gpt-4 or gpt-4:free) | gpt-4 | \ No newline at end of file diff --git a/docs/operations/getmodelscategory.mdx b/docs/operations/getmodelscategory.mdx new file mode 100644 index 00000000..80c967a8 --- /dev/null +++ b/docs/operations/getmodelscategory.mdx @@ -0,0 +1,32 @@ +--- +title: "GetModelsCategory" +--- + +Filter models by use case category + +## Example Usage + +```python +from openrouter.operations import GetModelsCategory + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: GetModelsCategory = "programming" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"programming"` +- `"roleplay"` +- `"marketing"` +- `"marketing/seo"` +- `"technology"` +- `"science"` +- `"translation"` +- `"legal"` +- `"finance"` +- `"health"` +- `"trivia"` +- `"academia"` diff --git a/docs/operations/getmodelsglobals.md b/docs/operations/getmodelsglobals.md deleted file mode 100644 index 9533d03c..00000000 --- a/docs/operations/getmodelsglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetModelsGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/createguardrailglobals.md b/docs/operations/getmodelsglobals.mdx similarity index 98% rename from docs/operations/createguardrailglobals.md rename to docs/operations/getmodelsglobals.mdx index 862c3641..e6beafcf 100644 --- a/docs/operations/createguardrailglobals.md +++ b/docs/operations/getmodelsglobals.mdx @@ -1,5 +1,6 @@ -# CreateGuardrailGlobals - +--- +title: "GetModelsGlobals" +--- ## Fields diff --git a/docs/operations/getmodelsrequest.md b/docs/operations/getmodelsrequest.mdx similarity index 96% rename from docs/operations/getmodelsrequest.md rename to docs/operations/getmodelsrequest.mdx index 57de7f79..272e1449 100644 --- a/docs/operations/getmodelsrequest.md +++ b/docs/operations/getmodelsrequest.mdx @@ -1,5 +1,6 @@ -# GetModelsRequest - +--- +title: "GetModelsRequest" +--- ## Fields @@ -8,10 +9,10 @@ | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `category` | [Optional[operations.GetModelsCategory]](../operations/getmodelscategory.md) | :heavy_minus_sign: | Filter models by use case category | programming | +| `category` | [Optional[operations.GetModelsCategory]](../operations/getmodelscategory.mdx) | :heavy_minus_sign: | Filter models by use case category | programming | | `supported_parameters` | *Optional[str]* | :heavy_minus_sign: | Filter models by supported parameter (comma-separated) | temperature | | `output_modalities` | *Optional[str]* | :heavy_minus_sign: | 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". | text | -| `sort` | [Optional[operations.GetModelsSort]](../operations/getmodelssort.md) | :heavy_minus_sign: | 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. | newest | +| `sort` | [Optional[operations.GetModelsSort]](../operations/getmodelssort.mdx) | :heavy_minus_sign: | 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. | newest | | `q` | *Optional[str]* | :heavy_minus_sign: | Free-text search by model name or slug. | gpt-4 | | `input_modalities` | *Optional[str]* | :heavy_minus_sign: | Filter models by input modality. Comma-separated list of: text, image, audio, file. | text,image | | `context` | *Optional[int]* | :heavy_minus_sign: | Minimum context length (tokens). Models with smaller context are excluded. | 128000 | @@ -20,6 +21,6 @@ | `arch` | *Optional[str]* | :heavy_minus_sign: | Filter models by architecture/model family (e.g. GPT, Claude, Gemini, Llama). | GPT | | `model_authors` | *Optional[str]* | :heavy_minus_sign: | Filter models by the organization that created the model. Comma-separated list of author slugs. | openai,anthropic | | `providers` | *Optional[str]* | :heavy_minus_sign: | Filter models by hosting provider. Comma-separated list of provider names. | OpenAI,Anthropic | -| `distillable` | [Optional[operations.Distillable]](../operations/distillable.md) | :heavy_minus_sign: | Filter by distillation capability. "true" returns only distillable models, "false" excludes them. | true | -| `zdr` | [Optional[operations.Zdr]](../operations/zdr.md) | :heavy_minus_sign: | When set to "true", return only models with zero data retention endpoints. | true | -| `region` | [Optional[operations.Region]](../operations/region.md) | :heavy_minus_sign: | Filter to models with endpoints in the given data region. Currently only "eu" is supported. | eu | \ No newline at end of file +| `distillable` | [Optional[operations.Distillable]](../operations/distillable.mdx) | :heavy_minus_sign: | Filter by distillation capability. "true" returns only distillable models, "false" excludes them. | true | +| `zdr` | [Optional[operations.Zdr]](../operations/zdr.mdx) | :heavy_minus_sign: | When set to "true", return only models with zero data retention endpoints. | true | +| `region` | [Optional[operations.Region]](../operations/region.mdx) | :heavy_minus_sign: | Filter to models with endpoints in the given data region. Currently only "eu" is supported. | eu | \ No newline at end of file diff --git a/docs/operations/getmodelssort.mdx b/docs/operations/getmodelssort.mdx new file mode 100644 index 00000000..9a5681eb --- /dev/null +++ b/docs/operations/getmodelssort.mdx @@ -0,0 +1,30 @@ +--- +title: "GetModelsSort" +--- + +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. + +## Example Usage + +```python +from openrouter.operations import GetModelsSort + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: GetModelsSort = "most-popular" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"most-popular"` +- `"newest"` +- `"top-weekly"` +- `"pricing-low-to-high"` +- `"pricing-high-to-low"` +- `"context-high-to-low"` +- `"throughput-high-to-low"` +- `"latency-low-to-high"` +- `"intelligence-high-to-low"` +- `"design-arena-elo-high-to-low"` diff --git a/docs/operations/getobservabilitydestinationglobals.mdx b/docs/operations/getobservabilitydestinationglobals.mdx new file mode 100644 index 00000000..aeec24b0 --- /dev/null +++ b/docs/operations/getobservabilitydestinationglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "GetObservabilityDestinationGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getobservabilitydestinationrequest.mdx b/docs/operations/getobservabilitydestinationrequest.mdx new file mode 100644 index 00000000..39b2655a --- /dev/null +++ b/docs/operations/getobservabilitydestinationrequest.mdx @@ -0,0 +1,12 @@ +--- +title: "GetObservabilityDestinationRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `id` | *str* | :heavy_check_mark: | The destination ID (UUID). | 99999999-aaaa-bbbb-cccc-dddddddddddd | \ No newline at end of file diff --git a/docs/operations/getpresetglobals.mdx b/docs/operations/getpresetglobals.mdx new file mode 100644 index 00000000..b3e3cb51 --- /dev/null +++ b/docs/operations/getpresetglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "GetPresetGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getpresetrequest.mdx b/docs/operations/getpresetrequest.mdx new file mode 100644 index 00000000..37383989 --- /dev/null +++ b/docs/operations/getpresetrequest.mdx @@ -0,0 +1,12 @@ +--- +title: "GetPresetRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `slug` | *str* | :heavy_check_mark: | URL-safe slug identifying the preset. | my-preset | \ No newline at end of file diff --git a/docs/operations/getpresetversionglobals.mdx b/docs/operations/getpresetversionglobals.mdx new file mode 100644 index 00000000..55879e9b --- /dev/null +++ b/docs/operations/getpresetversionglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "GetPresetVersionGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getpresetversionrequest.mdx b/docs/operations/getpresetversionrequest.mdx new file mode 100644 index 00000000..c7cf4011 --- /dev/null +++ b/docs/operations/getpresetversionrequest.mdx @@ -0,0 +1,13 @@ +--- +title: "GetPresetVersionRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `slug` | *str* | :heavy_check_mark: | URL-safe slug identifying the preset. | my-preset | +| `version` | *str* | :heavy_check_mark: | Version number of the preset. | 1 | \ No newline at end of file diff --git a/docs/operations/getrankingsdailyglobals.mdx b/docs/operations/getrankingsdailyglobals.mdx new file mode 100644 index 00000000..4bc1a2bf --- /dev/null +++ b/docs/operations/getrankingsdailyglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "GetRankingsDailyGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getrankingsdailyrequest.mdx b/docs/operations/getrankingsdailyrequest.mdx new file mode 100644 index 00000000..1788b942 --- /dev/null +++ b/docs/operations/getrankingsdailyrequest.mdx @@ -0,0 +1,13 @@ +--- +title: "GetRankingsDailyRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `start_date` | *Optional[str]* | :heavy_minus_sign: | Start of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to 30 days before `end_date`. The dataset begins at 2025-01-01; earlier values are clamped forward to that floor and the resolved value is echoed in `meta.start_date`. | 2026-04-12 | +| `end_date` | *Optional[str]* | :heavy_minus_sign: | 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. | 2026-05-11 | \ No newline at end of file diff --git a/docs/operations/gettaskclassificationsglobals.mdx b/docs/operations/gettaskclassificationsglobals.mdx new file mode 100644 index 00000000..34e94c3b --- /dev/null +++ b/docs/operations/gettaskclassificationsglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "GetTaskClassificationsGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/gettaskclassificationsrequest.mdx b/docs/operations/gettaskclassificationsrequest.mdx new file mode 100644 index 00000000..acb6b483 --- /dev/null +++ b/docs/operations/gettaskclassificationsrequest.mdx @@ -0,0 +1,12 @@ +--- +title: "GetTaskClassificationsRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `window` | [Optional[operations.Window]](../operations/window.mdx) | :heavy_minus_sign: | Trailing time window for the classification data. Currently only `7d` (trailing 7 days) is supported. | 7d | \ No newline at end of file diff --git a/docs/operations/getuseractivityglobals.md b/docs/operations/getuseractivityglobals.md deleted file mode 100644 index a67a41d7..00000000 --- a/docs/operations/getuseractivityglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetUserActivityGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getuseractivityglobals.mdx b/docs/operations/getuseractivityglobals.mdx new file mode 100644 index 00000000..f31e1317 --- /dev/null +++ b/docs/operations/getuseractivityglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "GetUserActivityGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getuseractivityrequest.md b/docs/operations/getuseractivityrequest.mdx similarity index 99% rename from docs/operations/getuseractivityrequest.md rename to docs/operations/getuseractivityrequest.mdx index 302da8dc..6ff32ecb 100644 --- a/docs/operations/getuseractivityrequest.md +++ b/docs/operations/getuseractivityrequest.mdx @@ -1,5 +1,6 @@ -# GetUserActivityRequest - +--- +title: "GetUserActivityRequest" +--- ## Fields diff --git a/docs/operations/getvideosglobals.mdx b/docs/operations/getvideosglobals.mdx new file mode 100644 index 00000000..7dfb4628 --- /dev/null +++ b/docs/operations/getvideosglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "GetVideosGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getvideosrequest.mdx b/docs/operations/getvideosrequest.mdx new file mode 100644 index 00000000..1b1c0875 --- /dev/null +++ b/docs/operations/getvideosrequest.mdx @@ -0,0 +1,12 @@ +--- +title: "GetVideosRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `job_id` | *str* | :heavy_check_mark: | N/A | job-abc123 | \ No newline at end of file diff --git a/docs/operations/getworkspaceglobals.mdx b/docs/operations/getworkspaceglobals.mdx new file mode 100644 index 00000000..b3d863a2 --- /dev/null +++ b/docs/operations/getworkspaceglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "GetWorkspaceGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/getworkspacerequest.mdx b/docs/operations/getworkspacerequest.mdx new file mode 100644 index 00000000..b9ee3b72 --- /dev/null +++ b/docs/operations/getworkspacerequest.mdx @@ -0,0 +1,12 @@ +--- +title: "GetWorkspaceRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `id` | *str* | :heavy_check_mark: | The workspace ID (UUID) or slug | production | \ No newline at end of file diff --git a/docs/operations/granularity.mdx b/docs/operations/granularity.mdx new file mode 100644 index 00000000..8aa00fc1 --- /dev/null +++ b/docs/operations/granularity.mdx @@ -0,0 +1,10 @@ +--- +title: "Granularity" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | +| `display_label` | *str* | :heavy_check_mark: | Human-readable label | Day | +| `name` | [operations.GranularityName](../operations/granularityname.mdx) | :heavy_check_mark: | Granularity identifier | day | \ No newline at end of file diff --git a/docs/operations/granularityname.mdx b/docs/operations/granularityname.mdx new file mode 100644 index 00000000..9d6dfd53 --- /dev/null +++ b/docs/operations/granularityname.mdx @@ -0,0 +1,25 @@ +--- +title: "GranularityName" +--- + +Granularity identifier + +## Example Usage + +```python +from openrouter.operations import GranularityName + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: GranularityName = "minute" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"minute"` +- `"hour"` +- `"day"` +- `"week"` +- `"month"` diff --git a/docs/operations/headquarters.mdx b/docs/operations/headquarters.mdx new file mode 100644 index 00000000..383ef289 --- /dev/null +++ b/docs/operations/headquarters.mdx @@ -0,0 +1,269 @@ +--- +title: "Headquarters" +--- + +ISO 3166-1 Alpha-2 country code of the provider headquarters + +## Example Usage + +```python +from openrouter.operations import Headquarters + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Headquarters = "AD" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"AD"` +- `"AE"` +- `"AF"` +- `"AG"` +- `"AI"` +- `"AL"` +- `"AM"` +- `"AO"` +- `"AQ"` +- `"AR"` +- `"AS"` +- `"AT"` +- `"AU"` +- `"AW"` +- `"AX"` +- `"AZ"` +- `"BA"` +- `"BB"` +- `"BD"` +- `"BE"` +- `"BF"` +- `"BG"` +- `"BH"` +- `"BI"` +- `"BJ"` +- `"BL"` +- `"BM"` +- `"BN"` +- `"BO"` +- `"BQ"` +- `"BR"` +- `"BS"` +- `"BT"` +- `"BV"` +- `"BW"` +- `"BY"` +- `"BZ"` +- `"CA"` +- `"CC"` +- `"CD"` +- `"CF"` +- `"CG"` +- `"CH"` +- `"CI"` +- `"CK"` +- `"CL"` +- `"CM"` +- `"CN"` +- `"CO"` +- `"CR"` +- `"CU"` +- `"CV"` +- `"CW"` +- `"CX"` +- `"CY"` +- `"CZ"` +- `"DE"` +- `"DJ"` +- `"DK"` +- `"DM"` +- `"DO"` +- `"DZ"` +- `"EC"` +- `"EE"` +- `"EG"` +- `"EH"` +- `"ER"` +- `"ES"` +- `"ET"` +- `"FI"` +- `"FJ"` +- `"FK"` +- `"FM"` +- `"FO"` +- `"FR"` +- `"GA"` +- `"GB"` +- `"GD"` +- `"GE"` +- `"GF"` +- `"GG"` +- `"GH"` +- `"GI"` +- `"GL"` +- `"GM"` +- `"GN"` +- `"GP"` +- `"GQ"` +- `"GR"` +- `"GS"` +- `"GT"` +- `"GU"` +- `"GW"` +- `"GY"` +- `"HK"` +- `"HM"` +- `"HN"` +- `"HR"` +- `"HT"` +- `"HU"` +- `"ID"` +- `"IE"` +- `"IL"` +- `"IM"` +- `"IN"` +- `"IO"` +- `"IQ"` +- `"IR"` +- `"IS"` +- `"IT"` +- `"JE"` +- `"JM"` +- `"JO"` +- `"JP"` +- `"KE"` +- `"KG"` +- `"KH"` +- `"KI"` +- `"KM"` +- `"KN"` +- `"KP"` +- `"KR"` +- `"KW"` +- `"KY"` +- `"KZ"` +- `"LA"` +- `"LB"` +- `"LC"` +- `"LI"` +- `"LK"` +- `"LR"` +- `"LS"` +- `"LT"` +- `"LU"` +- `"LV"` +- `"LY"` +- `"MA"` +- `"MC"` +- `"MD"` +- `"ME"` +- `"MF"` +- `"MG"` +- `"MH"` +- `"MK"` +- `"ML"` +- `"MM"` +- `"MN"` +- `"MO"` +- `"MP"` +- `"MQ"` +- `"MR"` +- `"MS"` +- `"MT"` +- `"MU"` +- `"MV"` +- `"MW"` +- `"MX"` +- `"MY"` +- `"MZ"` +- `"NA"` +- `"NC"` +- `"NE"` +- `"NF"` +- `"NG"` +- `"NI"` +- `"NL"` +- `"NO"` +- `"NP"` +- `"NR"` +- `"NU"` +- `"NZ"` +- `"OM"` +- `"PA"` +- `"PE"` +- `"PF"` +- `"PG"` +- `"PH"` +- `"PK"` +- `"PL"` +- `"PM"` +- `"PN"` +- `"PR"` +- `"PS"` +- `"PT"` +- `"PW"` +- `"PY"` +- `"QA"` +- `"RE"` +- `"RO"` +- `"RS"` +- `"RU"` +- `"RW"` +- `"SA"` +- `"SB"` +- `"SC"` +- `"SD"` +- `"SE"` +- `"SG"` +- `"SH"` +- `"SI"` +- `"SJ"` +- `"SK"` +- `"SL"` +- `"SM"` +- `"SN"` +- `"SO"` +- `"SR"` +- `"SS"` +- `"ST"` +- `"SV"` +- `"SX"` +- `"SY"` +- `"SZ"` +- `"TC"` +- `"TD"` +- `"TF"` +- `"TG"` +- `"TH"` +- `"TJ"` +- `"TK"` +- `"TL"` +- `"TM"` +- `"TN"` +- `"TO"` +- `"TR"` +- `"TT"` +- `"TV"` +- `"TW"` +- `"TZ"` +- `"UA"` +- `"UG"` +- `"UM"` +- `"US"` +- `"UY"` +- `"UZ"` +- `"VA"` +- `"VC"` +- `"VE"` +- `"VG"` +- `"VI"` +- `"VN"` +- `"VU"` +- `"WF"` +- `"WS"` +- `"YE"` +- `"YT"` +- `"ZA"` +- `"ZM"` +- `"ZW"` diff --git a/docs/operations/imageurl.mdx b/docs/operations/imageurl.mdx new file mode 100644 index 00000000..693064d9 --- /dev/null +++ b/docs/operations/imageurl.mdx @@ -0,0 +1,9 @@ +--- +title: "ImageURL" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `url` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/operations/input.md b/docs/operations/input.mdx similarity index 74% rename from docs/operations/input.md rename to docs/operations/input.mdx index 45598590..deecee21 100644 --- a/docs/operations/input.md +++ b/docs/operations/input.mdx @@ -1,8 +1,9 @@ -# Input - +--- +title: "Input" +--- ## Fields | Field | Type | Required | Description | | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | -| `content` | List[[operations.Content](../operations/content.md)] | :heavy_check_mark: | N/A | \ No newline at end of file +| `content` | List[[operations.Content](../operations/content.mdx)] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/operations/inputunion.md b/docs/operations/inputunion.mdx similarity index 94% rename from docs/operations/inputunion.md rename to docs/operations/inputunion.mdx index 655cca3c..23949521 100644 --- a/docs/operations/inputunion.md +++ b/docs/operations/inputunion.mdx @@ -1,4 +1,6 @@ -# InputUnion +--- +title: "InputUnion" +--- Text, token, or multimodal input(s) to embed diff --git a/docs/operations/listbyokkeysglobals.mdx b/docs/operations/listbyokkeysglobals.mdx new file mode 100644 index 00000000..67a37d54 --- /dev/null +++ b/docs/operations/listbyokkeysglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ListBYOKKeysGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listbyokkeysrequest.mdx b/docs/operations/listbyokkeysrequest.mdx new file mode 100644 index 00000000..ed0a6574 --- /dev/null +++ b/docs/operations/listbyokkeysrequest.mdx @@ -0,0 +1,15 @@ +--- +title: "ListBYOKKeysRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `offset` | *Optional[int]* | :heavy_minus_sign: | Number of records to skip for pagination | 0 | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of records to return (max 100) | 50 | +| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Optional workspace ID to filter by. Defaults to the authenticated entity's default workspace. | 550e8400-e29b-41d4-a716-446655440000 | +| `provider` | [Optional[operations.Provider]](../operations/provider.mdx) | :heavy_minus_sign: | Optional provider slug to filter by (e.g. `openai`, `anthropic`, `amazon-bedrock`). | openai | \ No newline at end of file diff --git a/docs/operations/listbyokkeysresponse.mdx b/docs/operations/listbyokkeysresponse.mdx new file mode 100644 index 00000000..213ea97a --- /dev/null +++ b/docs/operations/listbyokkeysresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "ListBYOKKeysResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `result` | [components.ListBYOKKeysResponse](../components/listbyokkeysresponse.mdx) | :heavy_check_mark: | N/A | \{
"data": [
\{
"allowed_api_key_hashes": null,
"allowed_models": null,
"allowed_user_ids": null,
"created_at": "2025-08-24T10:30:00Z",
"disabled": false,
"id": "11111111-2222-3333-4444-555555555555",
"is_fallback": false,
"label": "sk-...AbCd",
"name": "Production OpenAI Key",
"provider": "openai",
"sort_order": 0,
"workspace_id": "550e8400-e29b-41d4-a716-446655440000"
}
],
"total_count": 1
} | \ No newline at end of file diff --git a/docs/operations/listdata.md b/docs/operations/listdata.mdx similarity index 99% rename from docs/operations/listdata.md rename to docs/operations/listdata.mdx index d2a0b36c..a35a3a39 100644 --- a/docs/operations/listdata.md +++ b/docs/operations/listdata.mdx @@ -1,5 +1,6 @@ -# ListData - +--- +title: "ListData" +--- ## Fields diff --git a/docs/operations/listembeddingsmodelsglobals.md b/docs/operations/listembeddingsmodelsglobals.md deleted file mode 100644 index 20150d77..00000000 --- a/docs/operations/listembeddingsmodelsglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# ListEmbeddingsModelsGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listembeddingsmodelsglobals.mdx b/docs/operations/listembeddingsmodelsglobals.mdx new file mode 100644 index 00000000..fad77722 --- /dev/null +++ b/docs/operations/listembeddingsmodelsglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ListEmbeddingsModelsGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listembeddingsmodelsrequest.md b/docs/operations/listembeddingsmodelsrequest.md deleted file mode 100644 index d3628eb9..00000000 --- a/docs/operations/listembeddingsmodelsrequest.md +++ /dev/null @@ -1,10 +0,0 @@ -# ListEmbeddingsModelsRequest - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listembeddingsmodelsrequest.mdx b/docs/operations/listembeddingsmodelsrequest.mdx new file mode 100644 index 00000000..76c365bf --- /dev/null +++ b/docs/operations/listembeddingsmodelsrequest.mdx @@ -0,0 +1,11 @@ +--- +title: "ListEmbeddingsModelsRequest" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listendpointsglobals.md b/docs/operations/listendpointsglobals.md deleted file mode 100644 index 5a811876..00000000 --- a/docs/operations/listendpointsglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# ListEndpointsGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listendpointsglobals.mdx b/docs/operations/listendpointsglobals.mdx new file mode 100644 index 00000000..3e37c978 --- /dev/null +++ b/docs/operations/listendpointsglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ListEndpointsGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listendpointsrequest.md b/docs/operations/listendpointsrequest.mdx similarity index 99% rename from docs/operations/listendpointsrequest.md rename to docs/operations/listendpointsrequest.mdx index 49dea4f8..ae60c367 100644 --- a/docs/operations/listendpointsrequest.md +++ b/docs/operations/listendpointsrequest.mdx @@ -1,5 +1,6 @@ -# ListEndpointsRequest - +--- +title: "ListEndpointsRequest" +--- ## Fields diff --git a/docs/operations/listendpointsresponse.md b/docs/operations/listendpointsresponse.mdx similarity index 89% rename from docs/operations/listendpointsresponse.md rename to docs/operations/listendpointsresponse.mdx index 130c7683..b3861b87 100644 --- a/docs/operations/listendpointsresponse.md +++ b/docs/operations/listendpointsresponse.mdx @@ -1,4 +1,6 @@ -# ListEndpointsResponse +--- +title: "ListEndpointsResponse" +--- Returns a list of endpoints @@ -7,4 +9,4 @@ Returns a list of endpoints | Field | Type | Required | Description | Example | | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `data` | [components.ListEndpointsResponse](../components/listendpointsresponse.md) | :heavy_check_mark: | List of available endpoints for a model | {
"architecture": {
"input_modalities": [
"text"
],
"instruct_type": "chatml",
"modality": "text-\u003etext",
"output_modalities": [
"text"
],
"tokenizer": "GPT"
},
"created": 1692901234,
"description": "GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.",
"endpoints": [
{
"context_length": 8192,
"latency_last_30m": {
"p50": 0.25,
"p75": 0.35,
"p90": 0.48,
"p99": 0.85
},
"max_completion_tokens": 4096,
"max_prompt_tokens": 8192,
"model_name": "GPT-4",
"name": "OpenAI: GPT-4",
"pricing": {
"completion": "0.00006",
"image": "0",
"prompt": "0.00003",
"request": "0"
},
"provider_name": "OpenAI",
"quantization": "fp16",
"status": "default",
"supported_parameters": [
"temperature",
"top_p",
"max_tokens",
"frequency_penalty",
"presence_penalty"
],
"supports_implicit_caching": true,
"tag": "openai",
"throughput_last_30m": {
"p50": 45.2,
"p75": 38.5,
"p90": 28.3,
"p99": 15.1
},
"uptime_last_1d": 99.8,
"uptime_last_30m": 99.5,
"uptime_last_5m": 100
}
],
"id": "openai/gpt-4",
"name": "GPT-4"
} | \ No newline at end of file +| `data` | [components.ListEndpointsResponse](../components/listendpointsresponse.mdx) | :heavy_check_mark: | List of available endpoints for a model | \{
"architecture": \{
"input_modalities": [
"text"
],
"instruct_type": "chatml",
"modality": "text-\u003etext",
"output_modalities": [
"text"
],
"tokenizer": "GPT"
},
"created": 1692901234,
"description": "GPT-4 is a large multimodal model that can solve difficult problems with greater accuracy.",
"endpoints": [
\{
"context_length": 8192,
"latency_last_30m": \{
"p50": 0.25,
"p75": 0.35,
"p90": 0.48,
"p99": 0.85
},
"max_completion_tokens": 4096,
"max_prompt_tokens": 8192,
"model_name": "GPT-4",
"name": "OpenAI: GPT-4",
"pricing": \{
"completion": "0.00006",
"image": "0",
"prompt": "0.00003",
"request": "0"
},
"provider_name": "OpenAI",
"quantization": "fp16",
"status": "default",
"supported_parameters": [
"temperature",
"top_p",
"max_tokens",
"frequency_penalty",
"presence_penalty"
],
"supports_implicit_caching": true,
"tag": "openai",
"throughput_last_30m": \{
"p50": 45.2,
"p75": 38.5,
"p90": 28.3,
"p99": 15.1
},
"uptime_last_1d": 99.8,
"uptime_last_30m": 99.5,
"uptime_last_5m": 100
}
],
"id": "openai/gpt-4",
"name": "GPT-4"
} | \ No newline at end of file diff --git a/docs/operations/listendpointszdrglobals.md b/docs/operations/listendpointszdrglobals.md deleted file mode 100644 index 6abb940e..00000000 --- a/docs/operations/listendpointszdrglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# ListEndpointsZdrGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listendpointszdrglobals.mdx b/docs/operations/listendpointszdrglobals.mdx new file mode 100644 index 00000000..8f47131c --- /dev/null +++ b/docs/operations/listendpointszdrglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ListEndpointsZdrGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listendpointszdrrequest.md b/docs/operations/listendpointszdrrequest.md deleted file mode 100644 index 727be2cd..00000000 --- a/docs/operations/listendpointszdrrequest.md +++ /dev/null @@ -1,10 +0,0 @@ -# ListEndpointsZdrRequest - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listendpointszdrrequest.mdx b/docs/operations/listendpointszdrrequest.mdx new file mode 100644 index 00000000..70f27d80 --- /dev/null +++ b/docs/operations/listendpointszdrrequest.mdx @@ -0,0 +1,11 @@ +--- +title: "ListEndpointsZdrRequest" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listendpointszdrresponse.md b/docs/operations/listendpointszdrresponse.mdx similarity index 79% rename from docs/operations/listendpointszdrresponse.md rename to docs/operations/listendpointszdrresponse.mdx index 54cf662a..31012e2c 100644 --- a/docs/operations/listendpointszdrresponse.md +++ b/docs/operations/listendpointszdrresponse.mdx @@ -1,4 +1,6 @@ -# ListEndpointsZdrResponse +--- +title: "ListEndpointsZdrResponse" +--- Returns a list of endpoints @@ -7,4 +9,4 @@ Returns a list of endpoints | Field | Type | Required | Description | | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| `data` | List[[components.PublicEndpoint](../components/publicendpoint.md)] | :heavy_check_mark: | N/A | \ No newline at end of file +| `data` | List[[components.PublicEndpoint](../components/publicendpoint.mdx)] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/operations/listfilesglobals.mdx b/docs/operations/listfilesglobals.mdx new file mode 100644 index 00000000..5e86176b --- /dev/null +++ b/docs/operations/listfilesglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ListFilesGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listfilesrequest.mdx b/docs/operations/listfilesrequest.mdx new file mode 100644 index 00000000..567c8a2e --- /dev/null +++ b/docs/operations/listfilesrequest.mdx @@ -0,0 +1,14 @@ +--- +title: "ListFilesRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of files to return (1–1000). | 100 | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | eyJjdXJzb3IiOiJmaWxlXzAxMUNOaGE4aUNKY1Uxd1hOUjZxNFY4dyJ9 | +| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Workspace to scope the request to. Defaults to the caller’s default workspace. | a103d8b6-42f0-4e50-9a3c-bf41e2c3c1a7 | \ No newline at end of file diff --git a/docs/operations/listfilesresponse.mdx b/docs/operations/listfilesresponse.mdx new file mode 100644 index 00000000..ba3f4b56 --- /dev/null +++ b/docs/operations/listfilesresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "ListFilesResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `result` | [components.FileListResponse](../components/filelistresponse.mdx) | :heavy_check_mark: | N/A | \{
"cursor": null,
"data": [
\{
"created_at": "2025-01-01T00:00:00Z",
"downloadable": false,
"filename": "document.pdf",
"id": "file_011CNha8iCJcU1wXNR6q4V8w",
"mime_type": "application/pdf",
"size_bytes": 1024000,
"type": "file"
}
],
"first_id": "file_011CNha8iCJcU1wXNR6q4V8w",
"has_more": false,
"last_id": "file_011CNha8iCJcU1wXNR6q4V8w"
} | \ No newline at end of file diff --git a/docs/operations/listgenerationcontentglobals.mdx b/docs/operations/listgenerationcontentglobals.mdx new file mode 100644 index 00000000..8096c174 --- /dev/null +++ b/docs/operations/listgenerationcontentglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ListGenerationContentGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listgenerationcontentrequest.mdx b/docs/operations/listgenerationcontentrequest.mdx new file mode 100644 index 00000000..d1caecbb --- /dev/null +++ b/docs/operations/listgenerationcontentrequest.mdx @@ -0,0 +1,12 @@ +--- +title: "ListGenerationContentRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `id` | *str* | :heavy_check_mark: | The generation ID | gen-1234567890 | \ No newline at end of file diff --git a/docs/operations/listglobals.md b/docs/operations/listglobals.md deleted file mode 100644 index 53064e43..00000000 --- a/docs/operations/listglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# ListGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/createauthkeyscodeglobals.md b/docs/operations/listglobals.mdx similarity index 99% rename from docs/operations/createauthkeyscodeglobals.md rename to docs/operations/listglobals.mdx index ab7e4e55..b13c7abd 100644 --- a/docs/operations/createauthkeyscodeglobals.md +++ b/docs/operations/listglobals.mdx @@ -1,5 +1,6 @@ -# CreateAuthKeysCodeGlobals - +--- +title: "ListGlobals" +--- ## Fields diff --git a/docs/operations/listguardrailkeyassignmentsglobals.md b/docs/operations/listguardrailkeyassignmentsglobals.md deleted file mode 100644 index a9cc4a39..00000000 --- a/docs/operations/listguardrailkeyassignmentsglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# ListGuardrailKeyAssignmentsGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listguardrailkeyassignmentsglobals.mdx b/docs/operations/listguardrailkeyassignmentsglobals.mdx new file mode 100644 index 00000000..8b06bf79 --- /dev/null +++ b/docs/operations/listguardrailkeyassignmentsglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ListGuardrailKeyAssignmentsGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listguardrailkeyassignmentsrequest.md b/docs/operations/listguardrailkeyassignmentsrequest.mdx similarity index 99% rename from docs/operations/listguardrailkeyassignmentsrequest.md rename to docs/operations/listguardrailkeyassignmentsrequest.mdx index 1873ab97..92b4303d 100644 --- a/docs/operations/listguardrailkeyassignmentsrequest.md +++ b/docs/operations/listguardrailkeyassignmentsrequest.mdx @@ -1,5 +1,6 @@ -# ListGuardrailKeyAssignmentsRequest - +--- +title: "ListGuardrailKeyAssignmentsRequest" +--- ## Fields diff --git a/docs/operations/listguardrailkeyassignmentsresponse.md b/docs/operations/listguardrailkeyassignmentsresponse.mdx similarity index 85% rename from docs/operations/listguardrailkeyassignmentsresponse.md rename to docs/operations/listguardrailkeyassignmentsresponse.mdx index 3ce3be71..86847586 100644 --- a/docs/operations/listguardrailkeyassignmentsresponse.md +++ b/docs/operations/listguardrailkeyassignmentsresponse.mdx @@ -1,8 +1,9 @@ -# ListGuardrailKeyAssignmentsResponse - +--- +title: "ListGuardrailKeyAssignmentsResponse" +--- ## Fields | Field | Type | Required | Description | Example | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `result` | [components.ListKeyAssignmentsResponse](../components/listkeyassignmentsresponse.md) | :heavy_check_mark: | N/A | {
"data": [
{
"assigned_by": "user_abc123",
"created_at": "2025-08-24T10:30:00Z",
"guardrail_id": "550e8400-e29b-41d4-a716-446655440001",
"id": "550e8400-e29b-41d4-a716-446655440000",
"key_hash": "c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93",
"key_label": "prod-key",
"key_name": "Production Key"
}
],
"total_count": 1
} | \ No newline at end of file +| `result` | [components.ListKeyAssignmentsResponse](../components/listkeyassignmentsresponse.mdx) | :heavy_check_mark: | N/A | \{
"data": [
\{
"assigned_by": "user_abc123",
"created_at": "2025-08-24T10:30:00Z",
"guardrail_id": "550e8400-e29b-41d4-a716-446655440001",
"id": "550e8400-e29b-41d4-a716-446655440000",
"key_hash": "c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93",
"key_label": "prod-key",
"key_name": "Production Key"
}
],
"total_count": 1
} | \ No newline at end of file diff --git a/docs/operations/listguardrailmemberassignmentsglobals.md b/docs/operations/listguardrailmemberassignmentsglobals.md deleted file mode 100644 index 58ce40eb..00000000 --- a/docs/operations/listguardrailmemberassignmentsglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# ListGuardrailMemberAssignmentsGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listguardrailmemberassignmentsglobals.mdx b/docs/operations/listguardrailmemberassignmentsglobals.mdx new file mode 100644 index 00000000..98c69e74 --- /dev/null +++ b/docs/operations/listguardrailmemberassignmentsglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ListGuardrailMemberAssignmentsGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listguardrailmemberassignmentsrequest.md b/docs/operations/listguardrailmemberassignmentsrequest.mdx similarity index 99% rename from docs/operations/listguardrailmemberassignmentsrequest.md rename to docs/operations/listguardrailmemberassignmentsrequest.mdx index 962eb0c3..740af2e6 100644 --- a/docs/operations/listguardrailmemberassignmentsrequest.md +++ b/docs/operations/listguardrailmemberassignmentsrequest.mdx @@ -1,5 +1,6 @@ -# ListGuardrailMemberAssignmentsRequest - +--- +title: "ListGuardrailMemberAssignmentsRequest" +--- ## Fields diff --git a/docs/operations/listguardrailmemberassignmentsresponse.md b/docs/operations/listguardrailmemberassignmentsresponse.mdx similarity index 85% rename from docs/operations/listguardrailmemberassignmentsresponse.md rename to docs/operations/listguardrailmemberassignmentsresponse.mdx index 766effbc..3c19a6f1 100644 --- a/docs/operations/listguardrailmemberassignmentsresponse.md +++ b/docs/operations/listguardrailmemberassignmentsresponse.mdx @@ -1,8 +1,9 @@ -# ListGuardrailMemberAssignmentsResponse - +--- +title: "ListGuardrailMemberAssignmentsResponse" +--- ## Fields | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `result` | [components.ListMemberAssignmentsResponse](../components/listmemberassignmentsresponse.md) | :heavy_check_mark: | N/A | {
"data": [
{
"assigned_by": "user_abc123",
"created_at": "2025-08-24T10:30:00Z",
"guardrail_id": "550e8400-e29b-41d4-a716-446655440001",
"id": "550e8400-e29b-41d4-a716-446655440000",
"organization_id": "org_xyz789",
"user_id": "user_abc123"
}
],
"total_count": 1
} | \ No newline at end of file +| `result` | [components.ListMemberAssignmentsResponse](../components/listmemberassignmentsresponse.mdx) | :heavy_check_mark: | N/A | \{
"data": [
\{
"assigned_by": "user_abc123",
"created_at": "2025-08-24T10:30:00Z",
"guardrail_id": "550e8400-e29b-41d4-a716-446655440001",
"id": "550e8400-e29b-41d4-a716-446655440000",
"organization_id": "org_xyz789",
"user_id": "user_abc123"
}
],
"total_count": 1
} | \ No newline at end of file diff --git a/docs/operations/listguardrailsglobals.md b/docs/operations/listguardrailsglobals.md deleted file mode 100644 index 4a623f2b..00000000 --- a/docs/operations/listguardrailsglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# ListGuardrailsGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listguardrailsglobals.mdx b/docs/operations/listguardrailsglobals.mdx new file mode 100644 index 00000000..60d11dfa --- /dev/null +++ b/docs/operations/listguardrailsglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ListGuardrailsGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listguardrailsrequest.md b/docs/operations/listguardrailsrequest.mdx similarity index 99% rename from docs/operations/listguardrailsrequest.md rename to docs/operations/listguardrailsrequest.mdx index e6f81260..285cb55c 100644 --- a/docs/operations/listguardrailsrequest.md +++ b/docs/operations/listguardrailsrequest.mdx @@ -1,5 +1,6 @@ -# ListGuardrailsRequest - +--- +title: "ListGuardrailsRequest" +--- ## Fields diff --git a/docs/operations/listguardrailsresponse.md b/docs/operations/listguardrailsresponse.mdx similarity index 90% rename from docs/operations/listguardrailsresponse.md rename to docs/operations/listguardrailsresponse.mdx index c2e3510e..519808b7 100644 --- a/docs/operations/listguardrailsresponse.md +++ b/docs/operations/listguardrailsresponse.mdx @@ -1,8 +1,9 @@ -# ListGuardrailsResponse - +--- +title: "ListGuardrailsResponse" +--- ## Fields | Field | Type | Required | Description | Example | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `result` | [components.ListGuardrailsResponse](../components/listguardrailsresponse.md) | :heavy_check_mark: | N/A | {
"data": [
{
"allowed_models": null,
"allowed_providers": [
"openai",
"anthropic",
"google"
],
"content_filter_builtins": [
{
"action": "redact",
"label": "[EMAIL]",
"slug": "email"
}
],
"content_filters": null,
"created_at": "2025-08-24T10:30:00Z",
"description": "Guardrail for production environment",
"enforce_zdr": null,
"enforce_zdr_anthropic": true,
"enforce_zdr_google": false,
"enforce_zdr_openai": true,
"enforce_zdr_other": false,
"id": "550e8400-e29b-41d4-a716-446655440000",
"ignored_models": null,
"ignored_providers": null,
"limit_usd": 100,
"name": "Production Guardrail",
"reset_interval": "monthly",
"updated_at": "2025-08-24T15:45:00Z",
"workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"
}
],
"total_count": 1
} | \ No newline at end of file +| `result` | [components.ListGuardrailsResponse](../components/listguardrailsresponse.mdx) | :heavy_check_mark: | N/A | \{
"data": [
\{
"allowed_models": null,
"allowed_providers": [
"openai",
"anthropic",
"google"
],
"content_filter_builtins": [
\{
"action": "redact",
"label": "[EMAIL]",
"slug": "email"
}
],
"content_filters": null,
"created_at": "2025-08-24T10:30:00Z",
"description": "Guardrail for production environment",
"enforce_zdr": null,
"enforce_zdr_anthropic": true,
"enforce_zdr_google": false,
"enforce_zdr_openai": true,
"enforce_zdr_other": false,
"id": "550e8400-e29b-41d4-a716-446655440000",
"ignored_models": null,
"ignored_providers": null,
"limit_usd": 100,
"name": "Production Guardrail",
"reset_interval": "monthly",
"updated_at": "2025-08-24T15:45:00Z",
"workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"
}
],
"total_count": 1
} | \ No newline at end of file diff --git a/docs/operations/listimagemodelendpointsglobals.mdx b/docs/operations/listimagemodelendpointsglobals.mdx new file mode 100644 index 00000000..ffac4de9 --- /dev/null +++ b/docs/operations/listimagemodelendpointsglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ListImageModelEndpointsGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listimagemodelendpointsrequest.mdx b/docs/operations/listimagemodelendpointsrequest.mdx new file mode 100644 index 00000000..871687a0 --- /dev/null +++ b/docs/operations/listimagemodelendpointsrequest.mdx @@ -0,0 +1,13 @@ +--- +title: "ListImageModelEndpointsRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `author` | *str* | :heavy_check_mark: | Model author/organization | bytedance-seed | +| `slug` | *str* | :heavy_check_mark: | Model slug | seedream-4.5 | \ No newline at end of file diff --git a/docs/operations/listimagemodelsglobals.mdx b/docs/operations/listimagemodelsglobals.mdx new file mode 100644 index 00000000..e3ad1251 --- /dev/null +++ b/docs/operations/listimagemodelsglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ListImageModelsGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listimagemodelsrequest.mdx b/docs/operations/listimagemodelsrequest.mdx new file mode 100644 index 00000000..590e46d8 --- /dev/null +++ b/docs/operations/listimagemodelsrequest.mdx @@ -0,0 +1,11 @@ +--- +title: "ListImageModelsRequest" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listkeyassignmentsglobals.md b/docs/operations/listkeyassignmentsglobals.md deleted file mode 100644 index 6c0713d6..00000000 --- a/docs/operations/listkeyassignmentsglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# ListKeyAssignmentsGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listkeyassignmentsglobals.mdx b/docs/operations/listkeyassignmentsglobals.mdx new file mode 100644 index 00000000..a93efaec --- /dev/null +++ b/docs/operations/listkeyassignmentsglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ListKeyAssignmentsGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listkeyassignmentsrequest.mdx b/docs/operations/listkeyassignmentsrequest.mdx new file mode 100644 index 00000000..449ce29f --- /dev/null +++ b/docs/operations/listkeyassignmentsrequest.mdx @@ -0,0 +1,13 @@ +--- +title: "ListKeyAssignmentsRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `offset` | *Optional[int]* | :heavy_minus_sign: | Number of records to skip for pagination | 0 | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of records to return (max 100) | 50 | \ No newline at end of file diff --git a/docs/operations/listkeyassignmentsresponse.md b/docs/operations/listkeyassignmentsresponse.mdx similarity index 86% rename from docs/operations/listkeyassignmentsresponse.md rename to docs/operations/listkeyassignmentsresponse.mdx index a083a116..b26f687d 100644 --- a/docs/operations/listkeyassignmentsresponse.md +++ b/docs/operations/listkeyassignmentsresponse.mdx @@ -1,8 +1,9 @@ -# ListKeyAssignmentsResponse - +--- +title: "ListKeyAssignmentsResponse" +--- ## Fields | Field | Type | Required | Description | Example | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `result` | [components.ListKeyAssignmentsResponse](../components/listkeyassignmentsresponse.md) | :heavy_check_mark: | N/A | {
"data": [
{
"assigned_by": "user_abc123",
"created_at": "2025-08-24T10:30:00Z",
"guardrail_id": "550e8400-e29b-41d4-a716-446655440001",
"id": "550e8400-e29b-41d4-a716-446655440000",
"key_hash": "c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93",
"key_label": "prod-key",
"key_name": "Production Key"
}
],
"total_count": 1
} | \ No newline at end of file +| `result` | [components.ListKeyAssignmentsResponse](../components/listkeyassignmentsresponse.mdx) | :heavy_check_mark: | N/A | \{
"data": [
\{
"assigned_by": "user_abc123",
"created_at": "2025-08-24T10:30:00Z",
"guardrail_id": "550e8400-e29b-41d4-a716-446655440001",
"id": "550e8400-e29b-41d4-a716-446655440000",
"key_hash": "c56454edb818d6b14bc0d61c46025f1450b0f4012d12304ab40aacb519fcbc93",
"key_label": "prod-key",
"key_name": "Production Key"
}
],
"total_count": 1
} | \ No newline at end of file diff --git a/docs/operations/listmemberassignmentsglobals.md b/docs/operations/listmemberassignmentsglobals.md deleted file mode 100644 index 7d4eb653..00000000 --- a/docs/operations/listmemberassignmentsglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# ListMemberAssignmentsGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listmemberassignmentsglobals.mdx b/docs/operations/listmemberassignmentsglobals.mdx new file mode 100644 index 00000000..e5d123af --- /dev/null +++ b/docs/operations/listmemberassignmentsglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ListMemberAssignmentsGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listmemberassignmentsrequest.mdx b/docs/operations/listmemberassignmentsrequest.mdx new file mode 100644 index 00000000..c49bcf39 --- /dev/null +++ b/docs/operations/listmemberassignmentsrequest.mdx @@ -0,0 +1,13 @@ +--- +title: "ListMemberAssignmentsRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `offset` | *Optional[int]* | :heavy_minus_sign: | Number of records to skip for pagination | 0 | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of records to return (max 100) | 50 | \ No newline at end of file diff --git a/docs/operations/listmemberassignmentsresponse.md b/docs/operations/listmemberassignmentsresponse.mdx similarity index 85% rename from docs/operations/listmemberassignmentsresponse.md rename to docs/operations/listmemberassignmentsresponse.mdx index 6ee5e606..0206ec09 100644 --- a/docs/operations/listmemberassignmentsresponse.md +++ b/docs/operations/listmemberassignmentsresponse.mdx @@ -1,8 +1,9 @@ -# ListMemberAssignmentsResponse - +--- +title: "ListMemberAssignmentsResponse" +--- ## Fields | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `result` | [components.ListMemberAssignmentsResponse](../components/listmemberassignmentsresponse.md) | :heavy_check_mark: | N/A | {
"data": [
{
"assigned_by": "user_abc123",
"created_at": "2025-08-24T10:30:00Z",
"guardrail_id": "550e8400-e29b-41d4-a716-446655440001",
"id": "550e8400-e29b-41d4-a716-446655440000",
"organization_id": "org_xyz789",
"user_id": "user_abc123"
}
],
"total_count": 1
} | \ No newline at end of file +| `result` | [components.ListMemberAssignmentsResponse](../components/listmemberassignmentsresponse.mdx) | :heavy_check_mark: | N/A | \{
"data": [
\{
"assigned_by": "user_abc123",
"created_at": "2025-08-24T10:30:00Z",
"guardrail_id": "550e8400-e29b-41d4-a716-446655440001",
"id": "550e8400-e29b-41d4-a716-446655440000",
"organization_id": "org_xyz789",
"user_id": "user_abc123"
}
],
"total_count": 1
} | \ No newline at end of file diff --git a/docs/operations/listmodelscountglobals.md b/docs/operations/listmodelscountglobals.md deleted file mode 100644 index 1c3931a3..00000000 --- a/docs/operations/listmodelscountglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# ListModelsCountGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listmodelscountglobals.mdx b/docs/operations/listmodelscountglobals.mdx new file mode 100644 index 00000000..0daab751 --- /dev/null +++ b/docs/operations/listmodelscountglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ListModelsCountGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listmodelscountrequest.md b/docs/operations/listmodelscountrequest.mdx similarity index 99% rename from docs/operations/listmodelscountrequest.md rename to docs/operations/listmodelscountrequest.mdx index 02da5e2e..7791b12f 100644 --- a/docs/operations/listmodelscountrequest.md +++ b/docs/operations/listmodelscountrequest.mdx @@ -1,5 +1,6 @@ -# ListModelsCountRequest - +--- +title: "ListModelsCountRequest" +--- ## Fields diff --git a/docs/operations/listmodelsuserglobals.md b/docs/operations/listmodelsuserglobals.md deleted file mode 100644 index b8ca3d37..00000000 --- a/docs/operations/listmodelsuserglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# ListModelsUserGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listmodelsuserglobals.mdx b/docs/operations/listmodelsuserglobals.mdx new file mode 100644 index 00000000..f0a80013 --- /dev/null +++ b/docs/operations/listmodelsuserglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ListModelsUserGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listmodelsuserrequest.md b/docs/operations/listmodelsuserrequest.md deleted file mode 100644 index 68b87e32..00000000 --- a/docs/operations/listmodelsuserrequest.md +++ /dev/null @@ -1,10 +0,0 @@ -# ListModelsUserRequest - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listmodelsuserrequest.mdx b/docs/operations/listmodelsuserrequest.mdx new file mode 100644 index 00000000..3b65b53f --- /dev/null +++ b/docs/operations/listmodelsuserrequest.mdx @@ -0,0 +1,11 @@ +--- +title: "ListModelsUserRequest" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listmodelsusersecurity.md b/docs/operations/listmodelsusersecurity.mdx similarity index 87% rename from docs/operations/listmodelsusersecurity.md rename to docs/operations/listmodelsusersecurity.mdx index 3d42e13f..c7dbff35 100644 --- a/docs/operations/listmodelsusersecurity.md +++ b/docs/operations/listmodelsusersecurity.mdx @@ -1,5 +1,6 @@ -# ListModelsUserSecurity - +--- +title: "ListModelsUserSecurity" +--- ## Fields diff --git a/docs/operations/listobservabilitydestinationsglobals.mdx b/docs/operations/listobservabilitydestinationsglobals.mdx new file mode 100644 index 00000000..40271fec --- /dev/null +++ b/docs/operations/listobservabilitydestinationsglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ListObservabilityDestinationsGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listobservabilitydestinationsrequest.mdx b/docs/operations/listobservabilitydestinationsrequest.mdx new file mode 100644 index 00000000..c9f43abc --- /dev/null +++ b/docs/operations/listobservabilitydestinationsrequest.mdx @@ -0,0 +1,14 @@ +--- +title: "ListObservabilityDestinationsRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `offset` | *Optional[int]* | :heavy_minus_sign: | Number of records to skip for pagination | 0 | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of records to return (max 100) | 50 | +| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Optional workspace ID to filter by. Defaults to the authenticated entity's default workspace. | 550e8400-e29b-41d4-a716-446655440000 | \ No newline at end of file diff --git a/docs/operations/listobservabilitydestinationsresponse.mdx b/docs/operations/listobservabilitydestinationsresponse.mdx new file mode 100644 index 00000000..da49e5fe --- /dev/null +++ b/docs/operations/listobservabilitydestinationsresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "ListObservabilityDestinationsResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `result` | [components.ListObservabilityDestinationsResponse](../components/listobservabilitydestinationsresponse.mdx) | :heavy_check_mark: | N/A | \{
"data": [
\{
"api_key_hashes": null,
"config": \{
"baseUrl": "https://us.cloud.langfuse.com",
"publicKey": "pk-l...EfGh",
"secretKey": "sk-l...AbCd"
},
"created_at": "2025-08-24T10:30:00Z",
"enabled": true,
"filter_rules": null,
"id": "99999999-aaaa-bbbb-cccc-dddddddddddd",
"name": "Production Langfuse",
"privacy_mode": false,
"sampling_rate": 1,
"type": "langfuse",
"updated_at": "2025-08-24T15:45:00Z",
"workspace_id": "550e8400-e29b-41d4-a716-446655440000"
}
],
"total_count": 1
} | \ No newline at end of file diff --git a/docs/operations/listorganizationmembersdata.mdx b/docs/operations/listorganizationmembersdata.mdx new file mode 100644 index 00000000..2469c6ae --- /dev/null +++ b/docs/operations/listorganizationmembersdata.mdx @@ -0,0 +1,13 @@ +--- +title: "ListOrganizationMembersData" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| `email` | *str* | :heavy_check_mark: | Email address of the member | jane.doe@example.com | +| `first_name` | *Nullable[str]* | :heavy_check_mark: | First name of the member | Jane | +| `id` | *str* | :heavy_check_mark: | User ID of the organization member | user_2dHFtVWx2n56w6HkM0000000000 | +| `last_name` | *Nullable[str]* | :heavy_check_mark: | Last name of the member | Doe | +| `role` | [operations.Role](../operations/role.mdx) | :heavy_check_mark: | Role of the member in the organization | org:member | \ No newline at end of file diff --git a/docs/operations/listorganizationmembersglobals.mdx b/docs/operations/listorganizationmembersglobals.mdx new file mode 100644 index 00000000..de31dc7f --- /dev/null +++ b/docs/operations/listorganizationmembersglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ListOrganizationMembersGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listorganizationmembersrequest.mdx b/docs/operations/listorganizationmembersrequest.mdx new file mode 100644 index 00000000..8e2a8b90 --- /dev/null +++ b/docs/operations/listorganizationmembersrequest.mdx @@ -0,0 +1,13 @@ +--- +title: "ListOrganizationMembersRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `offset` | *Optional[int]* | :heavy_minus_sign: | Number of records to skip for pagination | 0 | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of records to return (max 100) | 50 | \ No newline at end of file diff --git a/docs/operations/listorganizationmembersresponse.mdx b/docs/operations/listorganizationmembersresponse.mdx new file mode 100644 index 00000000..5de55209 --- /dev/null +++ b/docs/operations/listorganizationmembersresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "ListOrganizationMembersResponse" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `result` | [operations.ListOrganizationMembersResponseBody](../operations/listorganizationmembersresponsebody.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/operations/listorganizationmembersresponsebody.mdx b/docs/operations/listorganizationmembersresponsebody.mdx new file mode 100644 index 00000000..56cd9c55 --- /dev/null +++ b/docs/operations/listorganizationmembersresponsebody.mdx @@ -0,0 +1,13 @@ +--- +title: "ListOrganizationMembersResponseBody" +--- + +List of organization members + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `data` | List[[operations.ListOrganizationMembersData](../operations/listorganizationmembersdata.mdx)] | :heavy_check_mark: | List of organization members | | +| `total_count` | *int* | :heavy_check_mark: | Total number of members in the organization | 25 | \ No newline at end of file diff --git a/docs/operations/bulkassignkeystoguardrailglobals.md b/docs/operations/listpresetsglobals.mdx similarity index 98% rename from docs/operations/bulkassignkeystoguardrailglobals.md rename to docs/operations/listpresetsglobals.mdx index 1b45a853..73d98355 100644 --- a/docs/operations/bulkassignkeystoguardrailglobals.md +++ b/docs/operations/listpresetsglobals.mdx @@ -1,5 +1,6 @@ -# BulkAssignKeysToGuardrailGlobals - +--- +title: "ListPresetsGlobals" +--- ## Fields diff --git a/docs/operations/listmemberassignmentsrequest.md b/docs/operations/listpresetsrequest.mdx similarity index 99% rename from docs/operations/listmemberassignmentsrequest.md rename to docs/operations/listpresetsrequest.mdx index e58ec65d..165dbf2f 100644 --- a/docs/operations/listmemberassignmentsrequest.md +++ b/docs/operations/listpresetsrequest.mdx @@ -1,5 +1,6 @@ -# ListMemberAssignmentsRequest - +--- +title: "ListPresetsRequest" +--- ## Fields diff --git a/docs/operations/listpresetsresponse.mdx b/docs/operations/listpresetsresponse.mdx new file mode 100644 index 00000000..0bd7386a --- /dev/null +++ b/docs/operations/listpresetsresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "ListPresetsResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `result` | [components.ListPresetsResponse](../components/listpresetsresponse.mdx) | :heavy_check_mark: | N/A | \{
"data": [
\{
"created_at": "2026-04-20T10:00:00Z",
"creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000",
"description": null,
"designated_version_id": "550e8400-e29b-41d4-a716-446655440000",
"id": "650e8400-e29b-41d4-a716-446655440001",
"name": "my-preset",
"slug": "my-preset",
"status": "active",
"status_updated_at": null,
"updated_at": "2026-04-20T10:00:00Z",
"workspace_id": "750e8400-e29b-41d4-a716-446655440002"
}
],
"total_count": 1
} | \ No newline at end of file diff --git a/docs/operations/listpresetversionsglobals.mdx b/docs/operations/listpresetversionsglobals.mdx new file mode 100644 index 00000000..f97938ef --- /dev/null +++ b/docs/operations/listpresetversionsglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ListPresetVersionsGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listpresetversionsrequest.mdx b/docs/operations/listpresetversionsrequest.mdx new file mode 100644 index 00000000..268fd9aa --- /dev/null +++ b/docs/operations/listpresetversionsrequest.mdx @@ -0,0 +1,14 @@ +--- +title: "ListPresetVersionsRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `slug` | *str* | :heavy_check_mark: | URL-safe slug identifying the preset. | my-preset | +| `offset` | *Optional[int]* | :heavy_minus_sign: | Number of records to skip for pagination | 0 | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of records to return (max 100) | 50 | \ No newline at end of file diff --git a/docs/operations/listpresetversionsresponse.mdx b/docs/operations/listpresetversionsresponse.mdx new file mode 100644 index 00000000..794d77eb --- /dev/null +++ b/docs/operations/listpresetversionsresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "ListPresetVersionsResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `result` | [components.ListPresetVersionsResponse](../components/listpresetversionsresponse.mdx) | :heavy_check_mark: | N/A | \{
"data": [
\{
"config": \{
"model": "openai/gpt-4o",
"temperature": 0.7
},
"created_at": "2026-04-20T10:00:00Z",
"creator_id": "user_2dHFtVWx2n56w6HkM0000000000",
"id": "550e8400-e29b-41d4-a716-446655440000",
"preset_id": "650e8400-e29b-41d4-a716-446655440001",
"system_prompt": "You are a helpful assistant.",
"updated_at": "2026-04-20T10:00:00Z",
"version": 1
}
],
"total_count": 1
} | \ No newline at end of file diff --git a/docs/operations/listprovidersdata.md b/docs/operations/listprovidersdata.mdx similarity index 86% rename from docs/operations/listprovidersdata.md rename to docs/operations/listprovidersdata.mdx index 5179c87e..10580e98 100644 --- a/docs/operations/listprovidersdata.md +++ b/docs/operations/listprovidersdata.mdx @@ -1,12 +1,13 @@ -# ListProvidersData - +--- +title: "ListProvidersData" +--- ## Fields | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| `datacenters` | List[[operations.Datacenter](../operations/datacenter.md)] | :heavy_minus_sign: | ISO 3166-1 Alpha-2 country codes of the provider datacenter locations | [
"US",
"IE"
] | -| `headquarters` | [OptionalNullable[operations.Headquarters]](../operations/headquarters.md) | :heavy_minus_sign: | ISO 3166-1 Alpha-2 country code of the provider headquarters | US | +| `datacenters` | List[[operations.Datacenter](../operations/datacenter.mdx)] | :heavy_minus_sign: | ISO 3166-1 Alpha-2 country codes of the provider datacenter locations | [
"US",
"IE"
] | +| `headquarters` | [OptionalNullable[operations.Headquarters]](../operations/headquarters.mdx) | :heavy_minus_sign: | ISO 3166-1 Alpha-2 country code of the provider headquarters | US | | `name` | *str* | :heavy_check_mark: | Display name of the provider | OpenAI | | `privacy_policy_url` | *Nullable[str]* | :heavy_check_mark: | URL to the provider's privacy policy | https://openai.com/privacy | | `slug` | *str* | :heavy_check_mark: | URL-friendly identifier for the provider | openai | diff --git a/docs/operations/listprovidersglobals.md b/docs/operations/listprovidersglobals.md deleted file mode 100644 index 6aacb32d..00000000 --- a/docs/operations/listprovidersglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# ListProvidersGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listprovidersglobals.mdx b/docs/operations/listprovidersglobals.mdx new file mode 100644 index 00000000..2ad08ac0 --- /dev/null +++ b/docs/operations/listprovidersglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ListProvidersGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listprovidersrequest.md b/docs/operations/listprovidersrequest.md deleted file mode 100644 index 9e96cc6d..00000000 --- a/docs/operations/listprovidersrequest.md +++ /dev/null @@ -1,10 +0,0 @@ -# ListProvidersRequest - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listprovidersrequest.mdx b/docs/operations/listprovidersrequest.mdx new file mode 100644 index 00000000..5514d814 --- /dev/null +++ b/docs/operations/listprovidersrequest.mdx @@ -0,0 +1,11 @@ +--- +title: "ListProvidersRequest" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listprovidersresponse.md b/docs/operations/listprovidersresponse.mdx similarity index 78% rename from docs/operations/listprovidersresponse.md rename to docs/operations/listprovidersresponse.mdx index 922cc655..81b20bf4 100644 --- a/docs/operations/listprovidersresponse.md +++ b/docs/operations/listprovidersresponse.mdx @@ -1,4 +1,6 @@ -# ListProvidersResponse +--- +title: "ListProvidersResponse" +--- Returns a list of providers @@ -7,4 +9,4 @@ Returns a list of providers | Field | Type | Required | Description | | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | -| `data` | List[[operations.ListProvidersData](../operations/listprovidersdata.md)] | :heavy_check_mark: | N/A | \ No newline at end of file +| `data` | List[[operations.ListProvidersData](../operations/listprovidersdata.mdx)] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/operations/listrequest.md b/docs/operations/listrequest.mdx similarity index 99% rename from docs/operations/listrequest.md rename to docs/operations/listrequest.mdx index a5646bde..a48f6951 100644 --- a/docs/operations/listrequest.md +++ b/docs/operations/listrequest.mdx @@ -1,5 +1,6 @@ -# ListRequest - +--- +title: "ListRequest" +--- ## Fields diff --git a/docs/operations/listresponse.md b/docs/operations/listresponse.mdx similarity index 73% rename from docs/operations/listresponse.md rename to docs/operations/listresponse.mdx index 255d266c..ffadcfc3 100644 --- a/docs/operations/listresponse.md +++ b/docs/operations/listresponse.mdx @@ -1,4 +1,6 @@ -# ListResponse +--- +title: "ListResponse" +--- List of API keys @@ -7,4 +9,4 @@ List of API keys | Field | Type | Required | Description | | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | -| `data` | List[[operations.ListData](../operations/listdata.md)] | :heavy_check_mark: | List of API keys | \ No newline at end of file +| `data` | List[[operations.ListData](../operations/listdata.mdx)] | :heavy_check_mark: | List of API keys | \ No newline at end of file diff --git a/docs/operations/listvideoscontentglobals.mdx b/docs/operations/listvideoscontentglobals.mdx new file mode 100644 index 00000000..4a27d350 --- /dev/null +++ b/docs/operations/listvideoscontentglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ListVideosContentGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listvideoscontentrequest.mdx b/docs/operations/listvideoscontentrequest.mdx new file mode 100644 index 00000000..0ecef072 --- /dev/null +++ b/docs/operations/listvideoscontentrequest.mdx @@ -0,0 +1,13 @@ +--- +title: "ListVideosContentRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `job_id` | *str* | :heavy_check_mark: | N/A | job-abc123 | +| `index` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | 0 | \ No newline at end of file diff --git a/docs/operations/listvideosmodelsglobals.mdx b/docs/operations/listvideosmodelsglobals.mdx new file mode 100644 index 00000000..a7fc9b7b --- /dev/null +++ b/docs/operations/listvideosmodelsglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ListVideosModelsGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listvideosmodelsrequest.mdx b/docs/operations/listvideosmodelsrequest.mdx new file mode 100644 index 00000000..5bd866fd --- /dev/null +++ b/docs/operations/listvideosmodelsrequest.mdx @@ -0,0 +1,11 @@ +--- +title: "ListVideosModelsRequest" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listworkspacebudgetsglobals.mdx b/docs/operations/listworkspacebudgetsglobals.mdx new file mode 100644 index 00000000..88549dbd --- /dev/null +++ b/docs/operations/listworkspacebudgetsglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ListWorkspaceBudgetsGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listworkspacebudgetsrequest.mdx b/docs/operations/listworkspacebudgetsrequest.mdx new file mode 100644 index 00000000..f6101881 --- /dev/null +++ b/docs/operations/listworkspacebudgetsrequest.mdx @@ -0,0 +1,12 @@ +--- +title: "ListWorkspaceBudgetsRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `id` | *str* | :heavy_check_mark: | The workspace ID (UUID) or slug | production | \ No newline at end of file diff --git a/docs/operations/listworkspacesglobals.mdx b/docs/operations/listworkspacesglobals.mdx new file mode 100644 index 00000000..2a6be98c --- /dev/null +++ b/docs/operations/listworkspacesglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "ListWorkspacesGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/listkeyassignmentsrequest.md b/docs/operations/listworkspacesrequest.mdx similarity index 99% rename from docs/operations/listkeyassignmentsrequest.md rename to docs/operations/listworkspacesrequest.mdx index 4902d03a..b188a1a7 100644 --- a/docs/operations/listkeyassignmentsrequest.md +++ b/docs/operations/listworkspacesrequest.mdx @@ -1,5 +1,6 @@ -# ListKeyAssignmentsRequest - +--- +title: "ListWorkspacesRequest" +--- ## Fields diff --git a/docs/operations/listworkspacesresponse.mdx b/docs/operations/listworkspacesresponse.mdx new file mode 100644 index 00000000..d59e254c --- /dev/null +++ b/docs/operations/listworkspacesresponse.mdx @@ -0,0 +1,9 @@ +--- +title: "ListWorkspacesResponse" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `result` | [components.ListWorkspacesResponse](../components/listworkspacesresponse.mdx) | :heavy_check_mark: | N/A | \{
"data": [
\{
"created_at": "2025-08-24T10:30:00Z",
"created_by": "user_abc123",
"default_image_model": "openai/dall-e-3",
"default_provider_sort": "price",
"default_text_model": "openai/gpt-4o",
"description": "Production environment workspace",
"id": "550e8400-e29b-41d4-a716-446655440000",
"io_logging_api_key_ids": null,
"io_logging_sampling_rate": 1,
"is_data_discount_logging_enabled": true,
"is_observability_broadcast_enabled": false,
"is_observability_io_logging_enabled": false,
"name": "Production",
"slug": "production",
"updated_at": "2025-08-24T15:45:00Z"
}
],
"total_count": 1
} | \ No newline at end of file diff --git a/docs/operations/metadata.mdx b/docs/operations/metadata.mdx new file mode 100644 index 00000000..33c6b11a --- /dev/null +++ b/docs/operations/metadata.mdx @@ -0,0 +1,11 @@ +--- +title: "Metadata" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `query_time_ms` | *float* | :heavy_check_mark: | N/A | +| `row_count` | *int* | :heavy_check_mark: | N/A | +| `truncated` | *bool* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/operations/metric.mdx b/docs/operations/metric.mdx new file mode 100644 index 00000000..a1b3a3e1 --- /dev/null +++ b/docs/operations/metric.mdx @@ -0,0 +1,12 @@ +--- +title: "Metric" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | +| `display_format` | [operations.DisplayFormat](../operations/displayformat.mdx) | :heavy_check_mark: | How this metric value should be formatted for display (e.g. percent → multiply by 100 and append %, currency → prefix with $) | number | +| `display_label` | *str* | :heavy_check_mark: | Human-readable label | Request Count | +| `is_rate` | *bool* | :heavy_check_mark: | Whether this metric is a rate/ratio (averaged, not summed) | | +| `name` | *str* | :heavy_check_mark: | Metric identifier used in query requests | request_count | \ No newline at end of file diff --git a/docs/operations/object.md b/docs/operations/object.md deleted file mode 100644 index 39e8c0b8..00000000 --- a/docs/operations/object.md +++ /dev/null @@ -1,8 +0,0 @@ -# Object - - -## Values - -| Name | Value | -| ------ | ------ | -| `LIST` | list | \ No newline at end of file diff --git a/docs/operations/object.mdx b/docs/operations/object.mdx new file mode 100644 index 00000000..1bfe944c --- /dev/null +++ b/docs/operations/object.mdx @@ -0,0 +1,15 @@ +--- +title: "Object" +--- + +## Example Usage + +```python +from openrouter.operations import Object +value: Object = "list" +``` + + +## Values + +- `"list"` diff --git a/docs/operations/objectembedding.md b/docs/operations/objectembedding.md deleted file mode 100644 index 4f8c20dd..00000000 --- a/docs/operations/objectembedding.md +++ /dev/null @@ -1,8 +0,0 @@ -# ObjectEmbedding - - -## Values - -| Name | Value | -| ----------- | ----------- | -| `EMBEDDING` | embedding | \ No newline at end of file diff --git a/docs/operations/objectembedding.mdx b/docs/operations/objectembedding.mdx new file mode 100644 index 00000000..cd96e8c7 --- /dev/null +++ b/docs/operations/objectembedding.mdx @@ -0,0 +1,15 @@ +--- +title: "ObjectEmbedding" +--- + +## Example Usage + +```python +from openrouter.operations import ObjectEmbedding +value: ObjectEmbedding = "embedding" +``` + + +## Values + +- `"embedding"` diff --git a/docs/operations/operator.mdx b/docs/operations/operator.mdx new file mode 100644 index 00000000..f14d7d1a --- /dev/null +++ b/docs/operations/operator.mdx @@ -0,0 +1,10 @@ +--- +title: "Operator" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `name` | [operations.OperatorName](../operations/operatorname.mdx) | :heavy_check_mark: | Operator identifier used in filter definitions | eq | +| `value_type` | [operations.ValueType](../operations/valuetype.mdx) | :heavy_check_mark: | Whether the operator expects a single value or an array | | \ No newline at end of file diff --git a/docs/operations/operatorname.mdx b/docs/operations/operatorname.mdx new file mode 100644 index 00000000..8acee540 --- /dev/null +++ b/docs/operations/operatorname.mdx @@ -0,0 +1,28 @@ +--- +title: "OperatorName" +--- + +Operator identifier used in filter definitions + +## Example Usage + +```python +from openrouter.operations import OperatorName + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: OperatorName = "eq" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"eq"` +- `"neq"` +- `"in"` +- `"not_in"` +- `"gt"` +- `"gte"` +- `"lt"` +- `"lte"` diff --git a/docs/operations/orderby.mdx b/docs/operations/orderby.mdx new file mode 100644 index 00000000..91c6769e --- /dev/null +++ b/docs/operations/orderby.mdx @@ -0,0 +1,10 @@ +--- +title: "OrderBy" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `direction` | [operations.Direction](../operations/direction.mdx) | :heavy_check_mark: | N/A | | +| `field` | *str* | :heavy_check_mark: | Field to order by | request_count | \ No newline at end of file diff --git a/docs/operations/prompttokensdetails.mdx b/docs/operations/prompttokensdetails.mdx new file mode 100644 index 00000000..0f0b54e4 --- /dev/null +++ b/docs/operations/prompttokensdetails.mdx @@ -0,0 +1,16 @@ +--- +title: "PromptTokensDetails" +--- + +Per-modality token breakdown. Only present when the input contains 2+ modalities (e.g. text + image) and the upstream provider returns modality-level usage data. Only non-zero modality counts are included. + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | +| `audio_tokens` | *Optional[int]* | :heavy_minus_sign: | Number of audio tokens in the input | | +| `file_tokens` | *Optional[int]* | :heavy_minus_sign: | Number of file/document tokens in the input | | +| `image_tokens` | *Optional[int]* | :heavy_minus_sign: | Number of image tokens in the input | 258 | +| `text_tokens` | *Optional[int]* | :heavy_minus_sign: | Number of text tokens in the input | 8 | +| `video_tokens` | *Optional[int]* | :heavy_minus_sign: | Number of video tokens in the input | | \ No newline at end of file diff --git a/docs/operations/provider.mdx b/docs/operations/provider.mdx new file mode 100644 index 00000000..1b6b6202 --- /dev/null +++ b/docs/operations/provider.mdx @@ -0,0 +1,108 @@ +--- +title: "Provider" +--- + +Optional provider slug to filter by (e.g. `openai`, `anthropic`, `amazon-bedrock`). + +## Example Usage + +```python +from openrouter.operations import Provider + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Provider = "ai21" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"ai21"` +- `"aion-labs"` +- `"akashml"` +- `"alibaba"` +- `"amazon-bedrock"` +- `"amazon-nova"` +- `"ambient"` +- `"anthropic"` +- `"arcee-ai"` +- `"atlas-cloud"` +- `"avian"` +- `"azure"` +- `"baidu"` +- `"baseten"` +- `"black-forest-labs"` +- `"byteplus"` +- `"cerebras"` +- `"chutes"` +- `"cirrascale"` +- `"clarifai"` +- `"cloudflare"` +- `"cohere"` +- `"crusoe"` +- `"darkbloom"` +- `"decart"` +- `"deepinfra"` +- `"deepseek"` +- `"dekallm"` +- `"digitalocean"` +- `"featherless"` +- `"fireworks"` +- `"friendli"` +- `"gmicloud"` +- `"google-ai-studio"` +- `"google-vertex"` +- `"groq"` +- `"heygen"` +- `"inception"` +- `"inceptron"` +- `"inferact-vllm"` +- `"inference-net"` +- `"infermatic"` +- `"inflection"` +- `"io-net"` +- `"ionstream"` +- `"liquid"` +- `"mancer"` +- `"mara"` +- `"minimax"` +- `"mistral"` +- `"modelrun"` +- `"modular"` +- `"moonshotai"` +- `"morph"` +- `"ncompass"` +- `"nebius"` +- `"nex-agi"` +- `"nextbit"` +- `"novita"` +- `"nvidia"` +- `"open-inference"` +- `"openai"` +- `"parasail"` +- `"perceptron"` +- `"perplexity"` +- `"phala"` +- `"poolside"` +- `"quiver"` +- `"recraft"` +- `"reka"` +- `"relace"` +- `"sakana-ai"` +- `"sambanova"` +- `"seed"` +- `"siliconflow"` +- `"sourceful"` +- `"stepfun"` +- `"streamlake"` +- `"switchpoint"` +- `"tenstorrent"` +- `"together"` +- `"upstage"` +- `"venice"` +- `"wafer"` +- `"wandb"` +- `"xai"` +- `"xiaomi"` +- `"z-ai"` diff --git a/docs/operations/queryanalyticsdata1.mdx b/docs/operations/queryanalyticsdata1.mdx new file mode 100644 index 00000000..474b724d --- /dev/null +++ b/docs/operations/queryanalyticsdata1.mdx @@ -0,0 +1,11 @@ +--- +title: "QueryAnalyticsData1" +--- + +A row of analytics data with metric/dimension values + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/operations/queryanalyticsdata2.mdx b/docs/operations/queryanalyticsdata2.mdx new file mode 100644 index 00000000..669a0894 --- /dev/null +++ b/docs/operations/queryanalyticsdata2.mdx @@ -0,0 +1,12 @@ +--- +title: "QueryAnalyticsData2" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `cached_at` | *Optional[float]* | :heavy_minus_sign: | N/A | +| `data` | List[[operations.QueryAnalyticsData1](../operations/queryanalyticsdata1.mdx)] | :heavy_check_mark: | N/A | +| `metadata` | [operations.Metadata](../operations/metadata.mdx) | :heavy_check_mark: | N/A | +| `warnings` | List[*str*] | :heavy_minus_sign: | 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. | \ No newline at end of file diff --git a/docs/operations/queryanalyticsglobals.mdx b/docs/operations/queryanalyticsglobals.mdx new file mode 100644 index 00000000..d808bb39 --- /dev/null +++ b/docs/operations/queryanalyticsglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "QueryAnalyticsGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/queryanalyticsrequest.mdx b/docs/operations/queryanalyticsrequest.mdx new file mode 100644 index 00000000..5b3c7c98 --- /dev/null +++ b/docs/operations/queryanalyticsrequest.mdx @@ -0,0 +1,12 @@ +--- +title: "QueryAnalyticsRequest" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| +| `request_body` | [operations.QueryAnalyticsRequestBody](../operations/queryanalyticsrequestbody.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/operations/queryanalyticsrequestbody.mdx b/docs/operations/queryanalyticsrequestbody.mdx new file mode 100644 index 00000000..79876b7e --- /dev/null +++ b/docs/operations/queryanalyticsrequestbody.mdx @@ -0,0 +1,16 @@ +--- +title: "QueryAnalyticsRequestBody" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `dimensions` | List[*str*] | :heavy_minus_sign: | N/A | | +| `filters` | List[[operations.Filter](../operations/filter_.mdx)] | :heavy_minus_sign: | N/A | | +| `granularity` | *Optional[str]* | :heavy_minus_sign: | Time granularity | day | +| `group_limit` | *Optional[int]* | :heavy_minus_sign: | Maximum rows per distinct combination of dimensions. When omitted on time-series queries (granularity + dimensions), auto-computed to avoid truncating time windows. Explicit values override the default and may truncate time buckets if set lower than the number of buckets in the range. Ignored when no dimensions are specified. | 100 | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum total rows returned. Defaults to 1000. On time-series queries with dimensions and no explicit group_limit, the server may raise this to accommodate the expected number of unique time-bucket/dimension combinations. | | +| `metrics` | List[*str*] | :heavy_check_mark: | N/A | | +| `order_by` | [Optional[operations.OrderBy]](../operations/orderby.mdx) | :heavy_minus_sign: | N/A | | +| `time_range` | [Optional[operations.TimeRange]](../operations/timerange.mdx) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/operations/queryanalyticsresponse.mdx b/docs/operations/queryanalyticsresponse.mdx new file mode 100644 index 00000000..6c45e217 --- /dev/null +++ b/docs/operations/queryanalyticsresponse.mdx @@ -0,0 +1,12 @@ +--- +title: "QueryAnalyticsResponse" +--- + +Analytics query results + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `data` | [operations.QueryAnalyticsData2](../operations/queryanalyticsdata2.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/operations/ratelimit.md b/docs/operations/ratelimit.mdx similarity index 97% rename from docs/operations/ratelimit.md rename to docs/operations/ratelimit.mdx index eeed3720..f1aa5276 100644 --- a/docs/operations/ratelimit.md +++ b/docs/operations/ratelimit.mdx @@ -1,4 +1,6 @@ -# ~~RateLimit~~ +--- +title: "~~RateLimit~~" +--- Legacy rate limit information about a key. Will always return -1. diff --git a/docs/operations/region.mdx b/docs/operations/region.mdx new file mode 100644 index 00000000..051bb4d1 --- /dev/null +++ b/docs/operations/region.mdx @@ -0,0 +1,17 @@ +--- +title: "Region" +--- + +Filter to models with endpoints in the given data region. Currently only "eu" is supported. + +## Example Usage + +```python +from openrouter.operations import Region +value: Region = "eu" +``` + + +## Values + +- `"eu"` diff --git a/docs/operations/result.mdx b/docs/operations/result.mdx new file mode 100644 index 00000000..510072b9 --- /dev/null +++ b/docs/operations/result.mdx @@ -0,0 +1,14 @@ +--- +title: "Result" +--- + +A single rerank result + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `document` | [operations.DocumentResponse](../operations/documentresponse.mdx) | :heavy_check_mark: | The document object echoing the original input (text and/or image) | | +| `index` | *int* | :heavy_check_mark: | Index of the document in the original input list | 0 | +| `relevance_score` | *float* | :heavy_check_mark: | Relevance score of the document to the query | 0.98 | \ No newline at end of file diff --git a/docs/operations/role.mdx b/docs/operations/role.mdx new file mode 100644 index 00000000..9e1219b8 --- /dev/null +++ b/docs/operations/role.mdx @@ -0,0 +1,22 @@ +--- +title: "Role" +--- + +Role of the member in the organization + +## Example Usage + +```python +from openrouter.operations import Role + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Role = "org:admin" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"org:admin"` +- `"org:member"` diff --git a/docs/operations/sendchatcompletionrequestglobals.md b/docs/operations/sendchatcompletionrequestglobals.md deleted file mode 100644 index 3256c024..00000000 --- a/docs/operations/sendchatcompletionrequestglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# SendChatCompletionRequestGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/sendchatcompletionrequestglobals.mdx b/docs/operations/sendchatcompletionrequestglobals.mdx new file mode 100644 index 00000000..290c9540 --- /dev/null +++ b/docs/operations/sendchatcompletionrequestglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "SendChatCompletionRequestGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/sendchatcompletionrequestrequest.mdx b/docs/operations/sendchatcompletionrequestrequest.mdx new file mode 100644 index 00000000..bd3e6d5c --- /dev/null +++ b/docs/operations/sendchatcompletionrequestrequest.mdx @@ -0,0 +1,13 @@ +--- +title: "SendChatCompletionRequestRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `x_open_router_metadata` | [Optional[components.MetadataLevel]](../components/metadatalevel.mdx) | :heavy_minus_sign: | 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. | enabled | +| `chat_request` | [components.ChatRequest](../components/chatrequest.mdx) | :heavy_check_mark: | N/A | \{
"max_tokens": 150,
"messages": [
\{
"content": "You are a helpful assistant.",
"role": "system"
},
\{
"content": "What is the capital of France?",
"role": "user"
}
],
"model": "openai/gpt-4",
"temperature": 0.7
} | \ No newline at end of file diff --git a/docs/operations/sendchatcompletionrequestresponse.md b/docs/operations/sendchatcompletionrequestresponse.mdx similarity index 88% rename from docs/operations/sendchatcompletionrequestresponse.md rename to docs/operations/sendchatcompletionrequestresponse.mdx index c4ba8c79..ed3d7a92 100644 --- a/docs/operations/sendchatcompletionrequestresponse.md +++ b/docs/operations/sendchatcompletionrequestresponse.mdx @@ -1,5 +1,6 @@ -# SendChatCompletionRequestResponse - +--- +title: "SendChatCompletionRequestResponse" +--- ## Supported Types diff --git a/docs/operations/source.mdx b/docs/operations/source.mdx new file mode 100644 index 00000000..20b67f6c --- /dev/null +++ b/docs/operations/source.mdx @@ -0,0 +1,22 @@ +--- +title: "Source" +--- + +Benchmark source to query. Determines the shape of the returned items. When omitted, returns results from all sources. + +## Example Usage + +```python +from openrouter.operations import Source + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Source = "artificial-analysis" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"artificial-analysis"` +- `"design-arena"` diff --git a/docs/operations/subcategory.mdx b/docs/operations/subcategory.mdx new file mode 100644 index 00000000..af1d9e96 --- /dev/null +++ b/docs/operations/subcategory.mdx @@ -0,0 +1,35 @@ +--- +title: "Subcategory" +--- + +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. + +## Example Usage + +```python +from openrouter.operations import Subcategory + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: Subcategory = "cli-agent" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"cli-agent"` +- `"ide-extension"` +- `"cloud-agent"` +- `"programming-app"` +- `"native-app-builder"` +- `"creative-writing"` +- `"video-gen"` +- `"image-gen"` +- `"audio-gen"` +- `"roleplay"` +- `"game"` +- `"writing-assistant"` +- `"general-chat"` +- `"personal-agent"` +- `"legal"` diff --git a/docs/operations/tasktype.mdx b/docs/operations/tasktype.mdx new file mode 100644 index 00000000..7cdaa5db --- /dev/null +++ b/docs/operations/tasktype.mdx @@ -0,0 +1,23 @@ +--- +title: "TaskType" +--- + +Filter results by task type. For Artificial Analysis, maps to the corresponding index. For Design Arena, maps to the matching category. + +## Example Usage + +```python +from openrouter.operations import TaskType + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: TaskType = "coding" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"coding"` +- `"intelligence"` +- `"agentic"` diff --git a/docs/operations/timerange.mdx b/docs/operations/timerange.mdx new file mode 100644 index 00000000..dc194bad --- /dev/null +++ b/docs/operations/timerange.mdx @@ -0,0 +1,10 @@ +--- +title: "TimeRange" +--- + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `end` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | N/A | +| `start` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/operations/typeimageurl.md b/docs/operations/typeimageurl.md deleted file mode 100644 index addee7e9..00000000 --- a/docs/operations/typeimageurl.md +++ /dev/null @@ -1,8 +0,0 @@ -# TypeImageURL - - -## Values - -| Name | Value | -| ----------- | ----------- | -| `IMAGE_URL` | image_url | \ No newline at end of file diff --git a/docs/operations/typeimageurl.mdx b/docs/operations/typeimageurl.mdx new file mode 100644 index 00000000..655e6725 --- /dev/null +++ b/docs/operations/typeimageurl.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeImageURL" +--- + +## Example Usage + +```python +from openrouter.operations import TypeImageURL +value: TypeImageURL = "image_url" +``` + + +## Values + +- `"image_url"` diff --git a/docs/operations/typetext.md b/docs/operations/typetext.md deleted file mode 100644 index fb9c2cfc..00000000 --- a/docs/operations/typetext.md +++ /dev/null @@ -1,8 +0,0 @@ -# TypeText - - -## Values - -| Name | Value | -| ------ | ------ | -| `TEXT` | text | \ No newline at end of file diff --git a/docs/operations/typetext.mdx b/docs/operations/typetext.mdx new file mode 100644 index 00000000..7f151917 --- /dev/null +++ b/docs/operations/typetext.mdx @@ -0,0 +1,15 @@ +--- +title: "TypeText" +--- + +## Example Usage + +```python +from openrouter.operations import TypeText +value: TypeText = "text" +``` + + +## Values + +- `"text"` diff --git a/docs/operations/updatebyokkeyglobals.mdx b/docs/operations/updatebyokkeyglobals.mdx new file mode 100644 index 00000000..905abf79 --- /dev/null +++ b/docs/operations/updatebyokkeyglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "UpdateBYOKKeyGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/updatebyokkeyrequest.mdx b/docs/operations/updatebyokkeyrequest.mdx new file mode 100644 index 00000000..546e001d --- /dev/null +++ b/docs/operations/updatebyokkeyrequest.mdx @@ -0,0 +1,13 @@ +--- +title: "UpdateBYOKKeyRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `id` | *str* | :heavy_check_mark: | The BYOK credential ID (UUID). | 11111111-2222-3333-4444-555555555555 | +| `update_byok_key_request` | [components.UpdateBYOKKeyRequest](../components/updatebyokkeyrequest.mdx) | :heavy_check_mark: | N/A | \{
"disabled": false,
"name": "Updated OpenAI Key"
} | \ No newline at end of file diff --git a/docs/operations/updateguardrailglobals.md b/docs/operations/updateguardrailglobals.md deleted file mode 100644 index d72ffed2..00000000 --- a/docs/operations/updateguardrailglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# UpdateGuardrailGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/updateguardrailglobals.mdx b/docs/operations/updateguardrailglobals.mdx new file mode 100644 index 00000000..0cd4bcb1 --- /dev/null +++ b/docs/operations/updateguardrailglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "UpdateGuardrailGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/updateguardrailrequest.md b/docs/operations/updateguardrailrequest.mdx similarity index 91% rename from docs/operations/updateguardrailrequest.md rename to docs/operations/updateguardrailrequest.mdx index 58ac81b1..b89a6072 100644 --- a/docs/operations/updateguardrailrequest.md +++ b/docs/operations/updateguardrailrequest.mdx @@ -1,5 +1,6 @@ -# UpdateGuardrailRequest - +--- +title: "UpdateGuardrailRequest" +--- ## Fields @@ -9,4 +10,4 @@ | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | | `id` | *str* | :heavy_check_mark: | The unique identifier of the guardrail to update | 550e8400-e29b-41d4-a716-446655440000 | -| `update_guardrail_request` | [components.UpdateGuardrailRequest](../components/updateguardrailrequest.md) | :heavy_check_mark: | N/A | {
"description": "Updated description",
"limit_usd": 75,
"name": "Updated Guardrail Name",
"reset_interval": "weekly"
} | \ No newline at end of file +| `update_guardrail_request` | [components.UpdateGuardrailRequest](../components/updateguardrailrequest.mdx) | :heavy_check_mark: | N/A | \{
"description": "Updated description",
"limit_usd": 75,
"name": "Updated Guardrail Name",
"reset_interval": "weekly"
} | \ No newline at end of file diff --git a/docs/operations/updatekeysdata.md b/docs/operations/updatekeysdata.mdx similarity index 99% rename from docs/operations/updatekeysdata.md rename to docs/operations/updatekeysdata.mdx index f1ef3820..abc5d411 100644 --- a/docs/operations/updatekeysdata.md +++ b/docs/operations/updatekeysdata.mdx @@ -1,4 +1,6 @@ -# UpdateKeysData +--- +title: "UpdateKeysData" +--- The updated API key information diff --git a/docs/operations/updatekeysglobals.md b/docs/operations/updatekeysglobals.md deleted file mode 100644 index 4588f44c..00000000 --- a/docs/operations/updatekeysglobals.md +++ /dev/null @@ -1,10 +0,0 @@ -# UpdateKeysGlobals - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/updatekeysglobals.mdx b/docs/operations/updatekeysglobals.mdx new file mode 100644 index 00000000..2b4abc3f --- /dev/null +++ b/docs/operations/updatekeysglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "UpdateKeysGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/updatekeyslimitreset.md b/docs/operations/updatekeyslimitreset.md deleted file mode 100644 index 7a91c14c..00000000 --- a/docs/operations/updatekeyslimitreset.md +++ /dev/null @@ -1,12 +0,0 @@ -# UpdateKeysLimitReset - -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. - - -## Values - -| Name | Value | -| --------- | --------- | -| `DAILY` | daily | -| `WEEKLY` | weekly | -| `MONTHLY` | monthly | \ No newline at end of file diff --git a/docs/operations/updatekeyslimitreset.mdx b/docs/operations/updatekeyslimitreset.mdx new file mode 100644 index 00000000..d128ade1 --- /dev/null +++ b/docs/operations/updatekeyslimitreset.mdx @@ -0,0 +1,23 @@ +--- +title: "UpdateKeysLimitReset" +--- + +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. + +## Example Usage + +```python +from openrouter.operations import UpdateKeysLimitReset + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: UpdateKeysLimitReset = "daily" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"daily"` +- `"weekly"` +- `"monthly"` diff --git a/docs/operations/updatekeysrequest.md b/docs/operations/updatekeysrequest.mdx similarity index 91% rename from docs/operations/updatekeysrequest.md rename to docs/operations/updatekeysrequest.mdx index 1e35e334..e6d3d7f0 100644 --- a/docs/operations/updatekeysrequest.md +++ b/docs/operations/updatekeysrequest.mdx @@ -1,5 +1,6 @@ -# UpdateKeysRequest - +--- +title: "UpdateKeysRequest" +--- ## Fields @@ -9,4 +10,4 @@ | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | | `hash` | *str* | :heavy_check_mark: | The hash identifier of the API key to update | f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943 | -| `request_body` | [operations.UpdateKeysRequestBody](../operations/updatekeysrequestbody.md) | :heavy_check_mark: | N/A | {
"disabled": false,
"include_byok_in_limit": true,
"limit": 75,
"limit_reset": "daily",
"name": "Updated API Key Name"
} | \ No newline at end of file +| `request_body` | [operations.UpdateKeysRequestBody](../operations/updatekeysrequestbody.mdx) | :heavy_check_mark: | N/A | \{
"disabled": false,
"include_byok_in_limit": true,
"limit": 75,
"limit_reset": "daily",
"name": "Updated API Key Name"
} | \ No newline at end of file diff --git a/docs/operations/updatekeysrequestbody.md b/docs/operations/updatekeysrequestbody.mdx similarity index 92% rename from docs/operations/updatekeysrequestbody.md rename to docs/operations/updatekeysrequestbody.mdx index a6130fd7..b293f36e 100644 --- a/docs/operations/updatekeysrequestbody.md +++ b/docs/operations/updatekeysrequestbody.mdx @@ -1,5 +1,6 @@ -# UpdateKeysRequestBody - +--- +title: "UpdateKeysRequestBody" +--- ## Fields @@ -8,5 +9,5 @@ | `disabled` | *Optional[bool]* | :heavy_minus_sign: | Whether to disable the API key | false | | `include_byok_in_limit` | *Optional[bool]* | :heavy_minus_sign: | Whether to include BYOK usage in the limit | true | | `limit` | *OptionalNullable[float]* | :heavy_minus_sign: | New spending limit for the API key in USD | 75 | -| `limit_reset` | [OptionalNullable[operations.UpdateKeysLimitReset]](../operations/updatekeyslimitreset.md) | :heavy_minus_sign: | 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. | daily | +| `limit_reset` | [OptionalNullable[operations.UpdateKeysLimitReset]](../operations/updatekeyslimitreset.mdx) | :heavy_minus_sign: | 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. | daily | | `name` | *Optional[str]* | :heavy_minus_sign: | New name for the API key | Updated API Key Name | \ No newline at end of file diff --git a/docs/operations/updatekeysresponse.md b/docs/operations/updatekeysresponse.mdx similarity index 89% rename from docs/operations/updatekeysresponse.md rename to docs/operations/updatekeysresponse.mdx index 8b5ef1fc..942a8bf9 100644 --- a/docs/operations/updatekeysresponse.md +++ b/docs/operations/updatekeysresponse.mdx @@ -1,4 +1,6 @@ -# UpdateKeysResponse +--- +title: "UpdateKeysResponse" +--- API key updated successfully @@ -7,4 +9,4 @@ API key updated successfully | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `data` | [operations.UpdateKeysData](../operations/updatekeysdata.md) | :heavy_check_mark: | The updated API key information | {
"byok_usage": 17.38,
"byok_usage_daily": 17.38,
"byok_usage_monthly": 17.38,
"byok_usage_weekly": 17.38,
"created_at": "2025-08-24T10:30:00Z",
"creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000",
"disabled": false,
"expires_at": "2027-12-31T23:59:59Z",
"hash": "f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943",
"include_byok_in_limit": false,
"label": "sk-or-v1-0e6...1c96",
"limit": 100,
"limit_remaining": 74.5,
"limit_reset": "monthly",
"name": "My Production Key",
"updated_at": "2025-08-24T15:45:00Z",
"usage": 25.5,
"usage_daily": 25.5,
"usage_monthly": 25.5,
"usage_weekly": 25.5,
"workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"
} | \ No newline at end of file +| `data` | [operations.UpdateKeysData](../operations/updatekeysdata.mdx) | :heavy_check_mark: | The updated API key information | \{
"byok_usage": 17.38,
"byok_usage_daily": 17.38,
"byok_usage_monthly": 17.38,
"byok_usage_weekly": 17.38,
"created_at": "2025-08-24T10:30:00Z",
"creator_user_id": "user_2dHFtVWx2n56w6HkM0000000000",
"disabled": false,
"expires_at": "2027-12-31T23:59:59Z",
"hash": "f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943",
"include_byok_in_limit": false,
"label": "sk-or-v1-0e6...1c96",
"limit": 100,
"limit_remaining": 74.5,
"limit_reset": "monthly",
"name": "My Production Key",
"updated_at": "2025-08-24T15:45:00Z",
"usage": 25.5,
"usage_daily": 25.5,
"usage_monthly": 25.5,
"usage_weekly": 25.5,
"workspace_id": "0df9e665-d932-5740-b2c7-b52af166bc11"
} | \ No newline at end of file diff --git a/docs/operations/updateobservabilitydestinationglobals.mdx b/docs/operations/updateobservabilitydestinationglobals.mdx new file mode 100644 index 00000000..f5a0ba06 --- /dev/null +++ b/docs/operations/updateobservabilitydestinationglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "UpdateObservabilityDestinationGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/updateobservabilitydestinationrequest.mdx b/docs/operations/updateobservabilitydestinationrequest.mdx new file mode 100644 index 00000000..16926383 --- /dev/null +++ b/docs/operations/updateobservabilitydestinationrequest.mdx @@ -0,0 +1,13 @@ +--- +title: "UpdateObservabilityDestinationRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `id` | *str* | :heavy_check_mark: | The destination ID (UUID). | 99999999-aaaa-bbbb-cccc-dddddddddddd | +| `update_observability_destination_request` | [components.UpdateObservabilityDestinationRequest](../components/updateobservabilitydestinationrequest.mdx) | :heavy_check_mark: | N/A | \{
"enabled": false,
"name": "Updated Langfuse"
} | \ No newline at end of file diff --git a/docs/operations/updateworkspaceglobals.mdx b/docs/operations/updateworkspaceglobals.mdx new file mode 100644 index 00000000..34ddab96 --- /dev/null +++ b/docs/operations/updateworkspaceglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "UpdateWorkspaceGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/updateworkspacerequest.mdx b/docs/operations/updateworkspacerequest.mdx new file mode 100644 index 00000000..086cdf63 --- /dev/null +++ b/docs/operations/updateworkspacerequest.mdx @@ -0,0 +1,13 @@ +--- +title: "UpdateWorkspaceRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `id` | *str* | :heavy_check_mark: | The workspace ID (UUID) or slug | production | +| `update_workspace_request` | [components.UpdateWorkspaceRequest](../components/updateworkspacerequest.mdx) | :heavy_check_mark: | N/A | \{
"name": "Updated Workspace",
"slug": "updated-workspace"
} | \ No newline at end of file diff --git a/docs/operations/uploadfileglobals.mdx b/docs/operations/uploadfileglobals.mdx new file mode 100644 index 00000000..41aa595e --- /dev/null +++ b/docs/operations/uploadfileglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "UploadFileGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/uploadfilerequest.mdx b/docs/operations/uploadfilerequest.mdx new file mode 100644 index 00000000..70188129 --- /dev/null +++ b/docs/operations/uploadfilerequest.mdx @@ -0,0 +1,13 @@ +--- +title: "UploadFileRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Workspace to scope the request to. Defaults to the caller’s default workspace. | a103d8b6-42f0-4e50-9a3c-bf41e2c3c1a7 | +| `request_body` | [operations.UploadFileRequestBody](../operations/uploadfilerequestbody.mdx) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/operations/uploadfilerequestbody.mdx b/docs/operations/uploadfilerequestbody.mdx new file mode 100644 index 00000000..4a9975fe --- /dev/null +++ b/docs/operations/uploadfilerequestbody.mdx @@ -0,0 +1,9 @@ +--- +title: "UploadFileRequestBody" +--- + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| `file` | [operations.File](../operations/file.mdx) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/operations/upsertworkspacebudgetglobals.mdx b/docs/operations/upsertworkspacebudgetglobals.mdx new file mode 100644 index 00000000..67a0d7d1 --- /dev/null +++ b/docs/operations/upsertworkspacebudgetglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "UpsertWorkspaceBudgetGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/upsertworkspacebudgetrequest.mdx b/docs/operations/upsertworkspacebudgetrequest.mdx new file mode 100644 index 00000000..47fed589 --- /dev/null +++ b/docs/operations/upsertworkspacebudgetrequest.mdx @@ -0,0 +1,14 @@ +--- +title: "UpsertWorkspaceBudgetRequest" +--- + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `id` | *str* | :heavy_check_mark: | The workspace ID (UUID) or slug | production | +| `interval` | [components.WorkspaceBudgetInterval](../components/workspacebudgetinterval.mdx) | :heavy_check_mark: | Budget reset interval. Use "lifetime" for a one-time budget that never resets. | monthly | +| `upsert_workspace_budget_request` | [components.UpsertWorkspaceBudgetRequest](../components/upsertworkspacebudgetrequest.mdx) | :heavy_check_mark: | N/A | \{
"limit_usd": 100
} | \ No newline at end of file diff --git a/docs/operations/usagelimittype.md b/docs/operations/usagelimittype.md deleted file mode 100644 index 0d9e7c83..00000000 --- a/docs/operations/usagelimittype.md +++ /dev/null @@ -1,12 +0,0 @@ -# UsageLimitType - -Optional credit limit reset interval. When set, the credit limit resets on this interval. - - -## Values - -| Name | Value | -| --------- | --------- | -| `DAILY` | daily | -| `WEEKLY` | weekly | -| `MONTHLY` | monthly | \ No newline at end of file diff --git a/docs/operations/usagelimittype.mdx b/docs/operations/usagelimittype.mdx new file mode 100644 index 00000000..8541eefa --- /dev/null +++ b/docs/operations/usagelimittype.mdx @@ -0,0 +1,23 @@ +--- +title: "UsageLimitType" +--- + +Optional credit limit reset interval. When set, the credit limit resets on this interval. + +## Example Usage + +```python +from openrouter.operations import UsageLimitType + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: UsageLimitType = "daily" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"daily"` +- `"weekly"` +- `"monthly"` diff --git a/docs/operations/value1.mdx b/docs/operations/value1.mdx new file mode 100644 index 00000000..4d269a48 --- /dev/null +++ b/docs/operations/value1.mdx @@ -0,0 +1,27 @@ +--- +title: "Value1" +--- + +Filter value (scalar or array depending on operator). Several dimensions are enriched in responses (returned as human-readable labels), but filters must use the underlying ID: `api_key_id` — numeric ID (from generation metadata) or key hash (64-char hex from GET /api/v1/keys, resolved server-side); `user` — Clerk user ID (e.g. "user_abc123"), not the display name; `workspace` — workspace UUID, not the workspace name; `app` — numeric app ID, not the app title; `model` — permaslug (e.g. "openai/gpt-4o"), not the display name. Other dimensions (provider, origin, country, etc.) are not enriched and accept the value as returned. + + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `float` + +```python +value: float = /* values here */ +``` + +### `List[operations.Value2]` + +```python +value: List[operations.Value2] = /* values here */ +``` + diff --git a/docs/operations/value2.mdx b/docs/operations/value2.mdx new file mode 100644 index 00000000..f72dd54a --- /dev/null +++ b/docs/operations/value2.mdx @@ -0,0 +1,18 @@ +--- +title: "Value2" +--- + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `float` + +```python +value: float = /* values here */ +``` + diff --git a/docs/operations/valuetype.mdx b/docs/operations/valuetype.mdx new file mode 100644 index 00000000..87a439af --- /dev/null +++ b/docs/operations/valuetype.mdx @@ -0,0 +1,22 @@ +--- +title: "ValueType" +--- + +Whether the operator expects a single value or an array + +## Example Usage + +```python +from openrouter.operations import ValueType + +# Open enum: unrecognized values are captured as UnrecognizedStr +value: ValueType = "scalar" +``` + + +## Values + +This is an open enum. Unrecognized values will not fail type checks. + +- `"scalar"` +- `"array"` diff --git a/docs/operations/window.mdx b/docs/operations/window.mdx new file mode 100644 index 00000000..52168404 --- /dev/null +++ b/docs/operations/window.mdx @@ -0,0 +1,17 @@ +--- +title: "Window" +--- + +Trailing time window for the classification data. Currently only `7d` (trailing 7 days) is supported. + +## Example Usage + +```python +from openrouter.operations import Window +value: Window = "7d" +``` + + +## Values + +- `"7d"` diff --git a/docs/operations/zdr.mdx b/docs/operations/zdr.mdx new file mode 100644 index 00000000..f265978f --- /dev/null +++ b/docs/operations/zdr.mdx @@ -0,0 +1,17 @@ +--- +title: "Zdr" +--- + +When set to "true", return only models with zero data retention endpoints. + +## Example Usage + +```python +from openrouter.operations import Zdr +value: Zdr = "true" +``` + + +## Values + +- `"true"` diff --git a/docs/overview.mdx b/docs/overview.mdx new file mode 100644 index 00000000..3980c0be --- /dev/null +++ b/docs/overview.mdx @@ -0,0 +1,37 @@ +--- +title: "OpenRouter Python SDK" +sidebarTitle: "Overview" +description: "Python SDK for building AI features against 400+ models through OpenRouter." +--- + +The OpenRouter Python SDK gives you type-safe access to 400+ models across +providers through a single unified API, with both sync and async clients. + +## Installation + +```bash +pip install openrouter +``` + +## Quickstart + +```python +from openrouter import OpenRouter +import os + +with OpenRouter( + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + res = open_router.chat.send( + messages=[ + {"content": "What is the capital of France?", "role": "user"}, + ], + stream=False, + ) + print(res) +``` + +## API reference + +Browse the API reference for each resource in the sidebar. Type definitions for +every request, response, and model are linked inline from each resource page. diff --git a/docs/sdks/analytics/README.md b/docs/sdks/analytics/README.mdx similarity index 93% rename from docs/sdks/analytics/README.md rename to docs/sdks/analytics/README.mdx index 44f78122..4e5df616 100644 --- a/docs/sdks/analytics/README.md +++ b/docs/sdks/analytics/README.mdx @@ -1,4 +1,7 @@ -# Analytics +--- +title: "Analytics" +description: "Analytics and usage endpoints" +--- ## Overview @@ -14,7 +17,6 @@ Returns user activity data grouped by endpoint for the last 30 (completed) UTC d ### Example Usage - ```python from openrouter import OpenRouter import os @@ -44,11 +46,11 @@ with OpenRouter( | `date_` | *Optional[str]* | :heavy_minus_sign: | Filter by a single UTC date in the last 30 days (YYYY-MM-DD format). | 2025-08-24 | | `api_key_hash` | *Optional[str]* | :heavy_minus_sign: | Filter by API key hash (SHA-256 hex string, as returned by the keys API). | abc123def456... | | `user_id` | *Optional[str]* | :heavy_minus_sign: | Filter by org member user ID. Only applicable for organization accounts. | user_abc123 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[components.ActivityResponse](../../components/activityresponse.md)** +**[components.ActivityResponse](../../components/activityresponse.mdx)** ### Errors diff --git a/docs/sdks/apikeys/README.md b/docs/sdks/apikeys/README.mdx similarity index 92% rename from docs/sdks/apikeys/README.md rename to docs/sdks/apikeys/README.mdx index d3fbe9df..e5b775ce 100644 --- a/docs/sdks/apikeys/README.md +++ b/docs/sdks/apikeys/README.mdx @@ -1,4 +1,7 @@ -# APIKeys +--- +title: "APIKeys" +description: "API key management endpoints" +--- ## Overview @@ -19,7 +22,6 @@ Get information on the API key associated with the current authentication sessio ### Example Usage - ```python from openrouter import OpenRouter import os @@ -46,11 +48,11 @@ with OpenRouter( | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[operations.GetCurrentKeyResponse](../../operations/getcurrentkeyresponse.md)** +**[operations.GetCurrentKeyResponse](../../operations/getcurrentkeyresponse.mdx)** ### Errors @@ -66,7 +68,6 @@ List all API keys for the authenticated user. [Management key](/docs/guides/over ### Example Usage - ```python from openrouter import OpenRouter import os @@ -96,11 +97,11 @@ with OpenRouter( | `include_disabled` | *Optional[bool]* | :heavy_minus_sign: | Whether to include disabled API keys in the response | false | | `offset` | *Optional[int]* | :heavy_minus_sign: | Number of API keys to skip for pagination | 0 | | `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Filter API keys by workspace ID. By default, keys in the default workspace are returned. | 0df9e665-d932-5740-b2c7-b52af166bc11 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[operations.ListResponse](../../operations/listresponse.md)** +**[operations.ListResponse](../../operations/listresponse.mdx)** ### Errors @@ -117,7 +118,6 @@ Create a new API key for the authenticated user. The plaintext `key` is returned ### Example Usage - ```python from openrouter import OpenRouter from openrouter.utils import parse_datetime @@ -150,13 +150,13 @@ with OpenRouter( | `expires_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Optional ISO 8601 UTC timestamp when the API key should expire. Must be UTC, other timezones will be rejected | 2027-12-31T23:59:59Z | | `include_byok_in_limit` | *Optional[bool]* | :heavy_minus_sign: | Whether to include BYOK usage in the limit | true | | `limit` | *OptionalNullable[float]* | :heavy_minus_sign: | Optional spending limit for the API key in USD | 50 | -| `limit_reset` | [OptionalNullable[operations.CreateKeysLimitReset]](../../operations/createkeyslimitreset.md) | :heavy_minus_sign: | 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. | monthly | +| `limit_reset` | [OptionalNullable[operations.CreateKeysLimitReset]](../../operations/createkeyslimitreset.mdx) | :heavy_minus_sign: | 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. | monthly | | `workspace_id` | *Optional[str]* | :heavy_minus_sign: | The workspace to create the API key in. Defaults to the default workspace if not provided. | 0df9e665-d932-5740-b2c7-b52af166bc11 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[operations.CreateKeysResponse](../../operations/createkeysresponse.md)** +**[operations.CreateKeysResponse](../../operations/createkeysresponse.mdx)** ### Errors @@ -175,7 +175,6 @@ Delete an existing API key. [Management key](/docs/guides/overview/auth/manageme ### Example Usage - ```python from openrouter import OpenRouter import os @@ -203,11 +202,11 @@ with OpenRouter( | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[operations.DeleteKeysResponse](../../operations/deletekeysresponse.md)** +**[operations.DeleteKeysResponse](../../operations/deletekeysresponse.mdx)** ### Errors @@ -225,7 +224,6 @@ Get a single API key by hash. [Management key](/docs/guides/overview/auth/manage ### Example Usage - ```python from openrouter import OpenRouter import os @@ -253,11 +251,11 @@ with OpenRouter( | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[operations.GetKeyResponse](../../operations/getkeyresponse.md)** +**[operations.GetKeyResponse](../../operations/getkeyresponse.mdx)** ### Errors @@ -275,7 +273,6 @@ Update an existing API key. [Management key](/docs/guides/overview/auth/manageme ### Example Usage - ```python from openrouter import OpenRouter import os @@ -306,13 +303,13 @@ with OpenRouter( | `disabled` | *Optional[bool]* | :heavy_minus_sign: | Whether to disable the API key | false | | `include_byok_in_limit` | *Optional[bool]* | :heavy_minus_sign: | Whether to include BYOK usage in the limit | true | | `limit` | *OptionalNullable[float]* | :heavy_minus_sign: | New spending limit for the API key in USD | 75 | -| `limit_reset` | [OptionalNullable[operations.UpdateKeysLimitReset]](../../operations/updatekeyslimitreset.md) | :heavy_minus_sign: | 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. | daily | +| `limit_reset` | [OptionalNullable[operations.UpdateKeysLimitReset]](../../operations/updatekeyslimitreset.mdx) | :heavy_minus_sign: | 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. | daily | | `name` | *Optional[str]* | :heavy_minus_sign: | New name for the API key | Updated API Key Name | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[operations.UpdateKeysResponse](../../operations/updatekeysresponse.md)** +**[operations.UpdateKeysResponse](../../operations/updatekeysresponse.mdx)** ### Errors diff --git a/docs/sdks/benchmarks/README.mdx b/docs/sdks/benchmarks/README.mdx new file mode 100644 index 00000000..072d78b5 --- /dev/null +++ b/docs/sdks/benchmarks/README.mdx @@ -0,0 +1,65 @@ +--- +title: "Benchmarks" +description: "Benchmarks endpoints" +--- + +## Overview + +Benchmarks endpoints + +### Available Operations + +* [get_benchmarks](#get_benchmarks) - List Benchmarks + +## get_benchmarks + +Unified benchmark endpoint that aggregates scores from multiple benchmark sources (Artificial Analysis, Design Arena). Filter by source to reproduce the exact shapes from the legacy per-source endpoints, or use task_type to find models suited for specific workloads. Authenticate with any valid OpenRouter API key. Rate-limited to 30 requests/minute per key and 500 requests/day per account. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.benchmarks.get_benchmarks() + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `source` | [Optional[operations.Source]](../../operations/source.mdx) | :heavy_minus_sign: | Benchmark source to query. Determines the shape of the returned items. When omitted, returns results from all sources. | artificial-analysis | +| `task_type` | [Optional[operations.TaskType]](../../operations/tasktype.mdx) | :heavy_minus_sign: | Filter results by task type. For Artificial Analysis, maps to the corresponding index. For Design Arena, maps to the matching category. | coding | +| `arena` | [Optional[operations.Arena]](../../operations/arena.mdx) | :heavy_minus_sign: | Design Arena only: arena to query. Defaults to `models` when source is `design-arena`. | models | +| `category` | *Optional[str]* | :heavy_minus_sign: | Design Arena only: category within the arena (e.g. `codecategories`, `uicomponent`, `gamedev`, `3d`, `dataviz`, `image`, `video`, `svg`). When omitted, returns all categories. | codecategories | +| `max_results` | *Optional[int]* | :heavy_minus_sign: | Maximum number of items to return. When omitted, all matching results are returned. | 50 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.UnifiedBenchmarksResponse](../../components/unifiedbenchmarksresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.TooManyRequestsResponseError | 429 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/betaanalytics/README.mdx b/docs/sdks/betaanalytics/README.mdx new file mode 100644 index 00000000..716e4631 --- /dev/null +++ b/docs/sdks/betaanalytics/README.mdx @@ -0,0 +1,125 @@ +--- +title: "Beta.Analytics" +description: "beta.Analytics endpoints" +--- + +## Overview + +beta.Analytics endpoints + +### Available Operations + +* [get_analytics_meta](#get_analytics_meta) - Get available analytics metrics and dimensions +* [query_analytics](#query_analytics) - Query analytics data + +## get_analytics_meta + +Returns the available metrics, dimensions, filter operators, and granularities for the analytics query endpoint. [Management key](/docs/guides/overview/auth/management-api-keys) required. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.beta.analytics.get_analytics_meta() + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetAnalyticsMetaResponse](../../operations/getanalyticsmetaresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.ForbiddenResponseError | 403 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## query_analytics + +Execute an analytics query with specified metrics, dimensions, filters, and time range. [Management key](/docs/guides/overview/auth/management-api-keys) required. + +### Example Usage + +```python +from openrouter import OpenRouter +from openrouter.utils import parse_datetime +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.beta.analytics.query_analytics(metrics=[ + "request_count", + ], dimensions=[ + "model", + ], granularity="day", limit=100, time_range={ + "end": parse_datetime("2025-01-08T00:00:00Z"), + "start": parse_datetime("2025-01-01T00:00:00Z"), + }) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `metrics` | List[*str*] | :heavy_check_mark: | N/A | | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `dimensions` | List[*str*] | :heavy_minus_sign: | N/A | | +| `filters` | List[[operations.Filter](../../operations/filter_.mdx)] | :heavy_minus_sign: | N/A | | +| `granularity` | *Optional[str]* | :heavy_minus_sign: | Time granularity | day | +| `group_limit` | *Optional[int]* | :heavy_minus_sign: | Maximum rows per distinct combination of dimensions. When omitted on time-series queries (granularity + dimensions), auto-computed to avoid truncating time windows. Explicit values override the default and may truncate time buckets if set lower than the number of buckets in the range. Ignored when no dimensions are specified. | 100 | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum total rows returned. Defaults to 1000. On time-series queries with dimensions and no explicit group_limit, the server may raise this to accommodate the expected number of unique time-bucket/dimension combinations. | | +| `order_by` | [Optional[operations.OrderBy]](../../operations/orderby.mdx) | :heavy_minus_sign: | N/A | | +| `time_range` | [Optional[operations.TimeRange]](../../operations/timerange.mdx) | :heavy_minus_sign: | N/A | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[operations.QueryAnalyticsResponse](../../operations/queryanalyticsresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.ForbiddenResponseError | 403 | application/json | +| errors.RequestTimeoutResponseError | 408 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/byok/README.mdx b/docs/sdks/byok/README.mdx new file mode 100644 index 00000000..f1da2da0 --- /dev/null +++ b/docs/sdks/byok/README.mdx @@ -0,0 +1,275 @@ +--- +title: "Byok" +description: "BYOK endpoints" +--- + +## Overview + +BYOK endpoints + +### Available Operations + +* [list](#list) - List BYOK provider credentials +* [create](#create) - Create a BYOK provider credential +* [delete](#delete) - Delete a BYOK provider credential +* [get](#get) - Get a BYOK provider credential +* [update](#update) - Update a BYOK provider credential + +## list + +List the bring-your-own-key (BYOK) provider credentials for the authenticated entity's default workspace. Use the `workspace_id` query parameter to scope the result to a different workspace, or the `provider` query parameter to filter by upstream provider. [Management key](/docs/guides/overview/auth/management-api-keys) required. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.byok.list() + + while res is not None: + # Handle items + + res = res.next() + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `offset` | *Optional[int]* | :heavy_minus_sign: | Number of records to skip for pagination | 0 | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of records to return (max 100) | 50 | +| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Optional workspace ID to filter by. Defaults to the authenticated entity's default workspace. | 550e8400-e29b-41d4-a716-446655440000 | +| `provider` | [Optional[operations.Provider]](../../operations/provider.mdx) | :heavy_minus_sign: | Optional provider slug to filter by (e.g. `openai`, `anthropic`, `amazon-bedrock`). | openai | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[operations.ListBYOKKeysResponse](../../operations/listbyokkeysresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## create + +Create a new bring-your-own-key (BYOK) provider credential. The raw key is encrypted at rest and never returned in API responses. Defaults to the authenticated entity's default workspace; use the `workspace_id` body field to scope to a different workspace. Treat the raw key as write-only; it is never returned after creation. [Management key](/docs/guides/overview/auth/management-api-keys) required. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.byok.create(key="sk-proj-abc123...", provider="openai", name="Production OpenAI Key") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `key` | *str* | :heavy_check_mark: | The raw provider API key or credential. This value is encrypted at rest and never returned in API responses. | sk-proj-abc123... | +| `provider` | [components.BYOKProviderSlug](../../components/byokproviderslug.mdx) | :heavy_check_mark: | The upstream provider this credential authenticates against, as a lowercase slug (e.g. `openai`, `anthropic`, `amazon-bedrock`). | openai | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `allowed_models` | List[*str*] | :heavy_minus_sign: | Optional allowlist of model slugs this credential may be used for. `null` means no restriction. | null | +| `allowed_user_ids` | List[*str*] | :heavy_minus_sign: | Optional allowlist of user IDs that may use this credential. `null` means no restriction. | null | +| `disabled` | *Optional[bool]* | :heavy_minus_sign: | Whether this credential should be created in a disabled state. | false | +| `is_fallback` | *Optional[bool]* | :heavy_minus_sign: | Whether this credential is treated as a fallback — used only after non-fallback keys for the same provider have been tried. | false | +| `name` | *OptionalNullable[str]* | :heavy_minus_sign: | Optional human-readable name for the credential. | Production OpenAI Key | +| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Optional workspace ID. Defaults to the authenticated entity's default workspace. | 550e8400-e29b-41d4-a716-446655440000 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.CreateBYOKKeyResponse](../../components/createbyokkeyresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.ForbiddenResponseError | 403 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## delete + +Delete (soft-delete) a bring-your-own-key (BYOK) provider credential by its `id`. The encrypted key material is wiped and the record is marked as deleted. [Management key](/docs/guides/overview/auth/management-api-keys) required. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.byok.delete(id="11111111-2222-3333-4444-555555555555") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | The BYOK credential ID (UUID). | 11111111-2222-3333-4444-555555555555 | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.DeleteBYOKKeyResponse](../../components/deletebyokkeyresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## get + +Get a single bring-your-own-key (BYOK) provider credential by its `id`. [Management key](/docs/guides/overview/auth/management-api-keys) required. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.byok.get(id="11111111-2222-3333-4444-555555555555") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | The BYOK credential ID (UUID). | 11111111-2222-3333-4444-555555555555 | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.GetBYOKKeyResponse](../../components/getbyokkeyresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## update + +Update an existing bring-your-own-key (BYOK) provider credential by its `id`. Include the `key` field to rotate the raw provider API key in-place (the previous key material is overwritten). [Management key](/docs/guides/overview/auth/management-api-keys) required. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.byok.update(id="11111111-2222-3333-4444-555555555555", disabled=False, name="Updated OpenAI Key") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | The BYOK credential ID (UUID). | 11111111-2222-3333-4444-555555555555 | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `allowed_models` | List[*str*] | :heavy_minus_sign: | Optional allowlist of model slugs this credential may be used for. `null` means no restriction. | null | +| `allowed_user_ids` | List[*str*] | :heavy_minus_sign: | Optional allowlist of user IDs that may use this credential. `null` means no restriction. | null | +| `disabled` | *Optional[bool]* | :heavy_minus_sign: | Whether this credential is disabled. | false | +| `is_fallback` | *Optional[bool]* | :heavy_minus_sign: | Whether this credential is treated as a fallback — used only after non-fallback keys for the same provider have been tried. | false | +| `key` | *Optional[str]* | :heavy_minus_sign: | A new raw provider API key to rotate the credential in-place. The previous key material is overwritten and the masked label is regenerated. Encrypted at rest and never returned in API responses. | sk-proj-newkey456... | +| `name` | *OptionalNullable[str]* | :heavy_minus_sign: | Optional human-readable name for the credential. | Updated OpenAI Key | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.UpdateBYOKKeyResponse](../../components/updatebyokkeyresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/chat/README.md b/docs/sdks/chat/README.mdx similarity index 89% rename from docs/sdks/chat/README.md rename to docs/sdks/chat/README.mdx index 08b736f0..390ca7cf 100644 --- a/docs/sdks/chat/README.md +++ b/docs/sdks/chat/README.mdx @@ -1,4 +1,6 @@ -# Chat +--- +title: "Chat" +--- ## Overview @@ -10,9 +12,8 @@ Sends a request for a model response for the given chat conversation. Supports both streaming and non-streaming modes. -### Example Usage +### Example Usage: guardrail-blocked - ```python from openrouter import OpenRouter import os @@ -34,7 +35,38 @@ with OpenRouter( "content": "What is the capital of France?", "role": "user", }, - ], x_open_router_metadata="enabled", max_tokens=150, model="openai/gpt-4", stream=False, temperature=0.7) + ], stream=False) + + with res as event_stream: + for event in event_stream: + # handle event + print(event, flush=True) + +``` +### Example Usage: insufficient-permissions + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.chat.send(messages=[ + { + "content": "You are a helpful assistant.", + "role": "system", + }, + { + "content": "What is the capital of France?", + "role": "user", + }, + ], stream=False) with res as event_stream: for event in event_stream: @@ -47,53 +79,53 @@ with OpenRouter( | Parameter | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `messages` | List[[components.ChatMessages](../../components/chatmessages.md)] | :heavy_check_mark: | List of messages for the conversation | [
{
"content": "Hello!",
"role": "user"
}
] | +| `messages` | List[[components.ChatMessages](../../components/chatmessages.mdx)] | :heavy_check_mark: | List of messages for the conversation | [
\{
"content": "Hello!",
"role": "user"
}
] | | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `x_open_router_metadata` | [Optional[components.MetadataLevel]](../../components/metadatalevel.md) | :heavy_minus_sign: | 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. | enabled | -| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../../components/anthropiccachecontroldirective.md) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | {
"type": "ephemeral"
} | -| `debug` | [Optional[components.ChatDebugOptions]](../../components/chatdebugoptions.md) | :heavy_minus_sign: | Debug options for inspecting request transformations (streaming only) | {
"echo_upstream_body": true
} | +| `x_open_router_metadata` | [Optional[components.MetadataLevel]](../../components/metadatalevel.mdx) | :heavy_minus_sign: | 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. | enabled | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `debug` | [Optional[components.ChatDebugOptions]](../../components/chatdebugoptions.mdx) | :heavy_minus_sign: | Debug options for inspecting request transformations (streaming only) | \{
"echo_upstream_body": true
} | | `frequency_penalty` | *OptionalNullable[float]* | :heavy_minus_sign: | Frequency penalty (-2.0 to 2.0) | 0 | -| `image_config` | Dict[str, [components.ImageConfig](../../components/imageconfig.md)] | :heavy_minus_sign: | Provider-specific image configuration options. Keys and values vary by model/provider. See https://openrouter.ai/docs/guides/overview/multimodal/image-generation for more details. | {
"aspect_ratio": "16:9",
"quality": "high"
} | -| `logit_bias` | Dict[str, *float*] | :heavy_minus_sign: | Token logit bias adjustments | {
"50256": -100
} | +| `image_config` | Dict[str, [components.ImageConfig](../../components/imageconfig.mdx)] | :heavy_minus_sign: | Provider-specific image configuration options. Keys and values vary by model/provider. See https://openrouter.ai/docs/guides/overview/multimodal/image-generation for more details. | \{
"aspect_ratio": "16:9",
"quality": "high"
} | +| `logit_bias` | Dict[str, *float*] | :heavy_minus_sign: | Token logit bias adjustments | \{
"50256": -100
} | | `logprobs` | *OptionalNullable[bool]* | :heavy_minus_sign: | Return log probabilities | false | | `max_completion_tokens` | *OptionalNullable[int]* | :heavy_minus_sign: | Maximum tokens in completion | 100 | | `max_tokens` | *OptionalNullable[int]* | :heavy_minus_sign: | Maximum tokens (deprecated, use max_completion_tokens). Note: some providers enforce a minimum of 16. | 100 | -| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Key-value pairs for additional object information (max 16 pairs, 64 char keys, 512 char values) | {
"session_id": "session-456",
"user_id": "user-123"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Key-value pairs for additional object information (max 16 pairs, 64 char keys, 512 char values) | \{
"session_id": "session-456",
"user_id": "user-123"
} | | `min_p` | *OptionalNullable[float]* | :heavy_minus_sign: | Minimum probability threshold relative to the most likely token. Tokens with probability below min_p * (probability of top token) are filtered out. Not all providers support this parameter. | 0.1 | -| `modalities` | List[[components.Modality](../../components/modality.md)] | :heavy_minus_sign: | Output modalities for the response. Supported values are "text", "image", and "audio". | [
"text",
"image"
] | +| `modalities` | List[[components.Modality](../../components/modality.mdx)] | :heavy_minus_sign: | Output modalities for the response. Supported values are "text", "image", and "audio". | [
"text",
"image"
] | | `model` | *Optional[str]* | :heavy_minus_sign: | Model to use for completion | openai/gpt-4 | | `models` | List[*str*] | :heavy_minus_sign: | Models to use for completion | [
"openai/gpt-4",
"openai/gpt-4o"
] | | `parallel_tool_calls` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to enable parallel function calling during tool use. When true, the model may generate multiple tool calls in a single response. | true | -| `plugins` | List[[components.ChatRequestPlugin](../../components/chatrequestplugin.md)] | :heavy_minus_sign: | Plugins you want to enable for this request, including their settings. | | +| `plugins` | List[[components.ChatRequestPlugin](../../components/chatrequestplugin.mdx)] | :heavy_minus_sign: | Plugins you want to enable for this request, including their settings. | | | `presence_penalty` | *OptionalNullable[float]* | :heavy_minus_sign: | Presence penalty (-2.0 to 2.0) | 0 | -| `provider` | [OptionalNullable[components.ProviderPreferences]](../../components/providerpreferences.md) | :heavy_minus_sign: | When multiple model providers are available, optionally indicate your routing preference. | {
"allow_fallbacks": true
} | -| `reasoning` | [Optional[components.ChatRequestReasoning]](../../components/chatrequestreasoning.md) | :heavy_minus_sign: | Configuration options for reasoning models | {
"effort": "medium",
"summary": "concise"
} | -| `reasoning_effort` | [OptionalNullable[components.ChatRequestReasoningEffort]](../../components/chatrequestreasoningeffort.md) | :heavy_minus_sign: | Shorthand for setting reasoning effort. Equivalent to setting reasoning.effort. Cannot be used simultaneously with reasoning.effort if they differ. | medium | +| `provider` | [OptionalNullable[components.ProviderPreferences]](../../components/providerpreferences.mdx) | :heavy_minus_sign: | When multiple model providers are available, optionally indicate your routing preference. | \{
"allow_fallbacks": true
} | +| `reasoning` | [Optional[components.ChatRequestReasoning]](../../components/chatrequestreasoning.mdx) | :heavy_minus_sign: | Configuration options for reasoning models | \{
"effort": "medium",
"summary": "concise"
} | +| `reasoning_effort` | [OptionalNullable[components.ChatRequestReasoningEffort]](../../components/chatrequestreasoningeffort.mdx) | :heavy_minus_sign: | Shorthand for setting reasoning effort. Equivalent to setting reasoning.effort. Cannot be used simultaneously with reasoning.effort if they differ. | medium | | `repetition_penalty` | *OptionalNullable[float]* | :heavy_minus_sign: | Penalizes tokens based on how much they have already appeared in the text. A value of 1.0 means no penalty. Values above 1.0 penalize repeated tokens more strongly. Not all providers support this parameter. | 1 | -| `response_format` | [Optional[components.ResponseFormat]](../../components/responseformat.md) | :heavy_minus_sign: | Response format configuration | {
"type": "json_object"
} | +| `response_format` | [Optional[components.ResponseFormat]](../../components/responseformat.mdx) | :heavy_minus_sign: | Response format configuration | \{
"type": "json_object"
} | | `seed` | *OptionalNullable[int]* | :heavy_minus_sign: | Random seed for deterministic outputs | 42 | -| `service_tier` | [OptionalNullable[components.ChatRequestServiceTier]](../../components/chatrequestservicetier.md) | :heavy_minus_sign: | The service tier to use for processing this request. | auto | +| `service_tier` | [OptionalNullable[components.ChatRequestServiceTier]](../../components/chatrequestservicetier.mdx) | :heavy_minus_sign: | The service tier to use for processing this request. | auto | | `session_id` | *Optional[str]* | :heavy_minus_sign: | A unique identifier for grouping related requests (e.g., a conversation or agent workflow). When provided, OpenRouter uses it as the sticky routing key, routing all requests in the session to the same provider to maximize prompt cache hits. Also used for observability grouping. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. | | -| `stop` | [OptionalNullable[components.Stop]](../../components/stop.md) | :heavy_minus_sign: | Stop sequences (up to 4) | [
""
] | -| `stop_server_tools_when` | List[[components.StopServerToolsWhenCondition](../../components/stopservertoolswhencondition.md)] | :heavy_minus_sign: | Stop conditions for the server-tool agent loop. Any condition firing halts the loop (OR logic). When set, this overrides `max_tool_calls`. | [
{
"step_count": 5,
"type": "step_count_is"
},
{
"max_cost_in_dollars": 0.5,
"type": "max_cost"
}
] | +| `stop` | [OptionalNullable[components.Stop]](../../components/stop.mdx) | :heavy_minus_sign: | Stop sequences (up to 4) | [
""
] | +| `stop_server_tools_when` | List[[components.StopServerToolsWhenCondition](../../components/stopservertoolswhencondition.mdx)] | :heavy_minus_sign: | Stop conditions for the server-tool agent loop. Any condition firing halts the loop (OR logic). When set, this overrides `max_tool_calls`. | [
\{
"step_count": 5,
"type": "step_count_is"
},
\{
"max_cost_in_dollars": 0.5,
"type": "max_cost"
}
] | | `stream` | *Optional[bool]* | :heavy_minus_sign: | Enable streaming response | false | -| `stream_options` | [OptionalNullable[components.ChatStreamOptions]](../../components/chatstreamoptions.md) | :heavy_minus_sign: | Streaming configuration options | {
"include_usage": true
} | +| `stream_options` | [OptionalNullable[components.ChatStreamOptions]](../../components/chatstreamoptions.mdx) | :heavy_minus_sign: | Streaming configuration options | \{
"include_usage": true
} | | `temperature` | *OptionalNullable[float]* | :heavy_minus_sign: | Sampling temperature (0-2) | 0.7 | -| `tool_choice` | [Optional[components.ChatToolChoice]](../../components/chattoolchoice.md) | :heavy_minus_sign: | Tool choice configuration | auto | -| `tools` | List[[components.ChatFunctionTool](../../components/chatfunctiontool.md)] | :heavy_minus_sign: | Available tools for function calling | [
{
"function": {
"description": "Get weather",
"name": "get_weather"
},
"type": "function"
}
] | +| `tool_choice` | [Optional[components.ChatToolChoice]](../../components/chattoolchoice.mdx) | :heavy_minus_sign: | Tool choice configuration | auto | +| `tools` | List[[components.ChatFunctionTool](../../components/chatfunctiontool.mdx)] | :heavy_minus_sign: | Available tools for function calling | [
\{
"function": \{
"description": "Get weather",
"name": "get_weather"
},
"type": "function"
}
] | | `top_a` | *OptionalNullable[float]* | :heavy_minus_sign: | Consider only tokens with "sufficiently high" probabilities based on the probability of the most likely token. Not all providers support this parameter. | 0 | | `top_k` | *OptionalNullable[int]* | :heavy_minus_sign: | Limits the model to choose from the top K most likely tokens at each step. A value of 1 means the model will always pick the most likely next token. Not all providers support this parameter. | 40 | | `top_logprobs` | *OptionalNullable[int]* | :heavy_minus_sign: | Number of top log probabilities to return (0-20) | 5 | | `top_p` | *OptionalNullable[float]* | :heavy_minus_sign: | Nucleus sampling parameter (0-1) | 1 | -| `trace` | [Optional[components.TraceConfig]](../../components/traceconfig.md) | :heavy_minus_sign: | Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. | {
"trace_id": "trace-abc123",
"trace_name": "my-app-trace"
} | +| `trace` | [Optional[components.TraceConfig]](../../components/traceconfig.mdx) | :heavy_minus_sign: | Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. | \{
"trace_id": "trace-abc123",
"trace_name": "my-app-trace"
} | | `user` | *Optional[str]* | :heavy_minus_sign: | Unique user identifier | user-123 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[operations.SendChatCompletionRequestResponse](../../operations/sendchatcompletionrequestresponse.md)** +**[operations.SendChatCompletionRequestResponse](../../operations/sendchatcompletionrequestresponse.mdx)** ### Errors diff --git a/docs/sdks/classifications/README.mdx b/docs/sdks/classifications/README.mdx new file mode 100644 index 00000000..bed5f74e --- /dev/null +++ b/docs/sdks/classifications/README.mdx @@ -0,0 +1,79 @@ +--- +title: "Classifications" +description: "Task classification market-share endpoints" +--- + +## Overview + +Task classification market-share endpoints + +### Available Operations + +* [get_task_classifications](#get_task_classifications) - Task classification market share + +## get_task_classifications + +Returns the market-share breakdown of OpenRouter traffic by task classification +(e.g. code generation, web search, summarization) over a trailing time window. + +Each classification reports its share of classified sampled requests (`usage_share`) +and classified sampled token volume (`token_share`) as fractions between 0 and 1. +The unclassified `other` bucket is excluded. Absolute volumes are not exposed +because the underlying data is sampled. + +Each classification also includes a `models` array listing the top models by +request volume within that classification, with their within-tag usage and token shares. + +Classifications are grouped into macro-categories (Code, Data, Agent, General) +with aggregate shares provided for each. + +Authenticate with any valid OpenRouter API key (same key used for inference). +Rate-limited to 30 requests/minute per key and 500 requests/day per account. + +When republishing or quoting this data, cite as: +"Source: OpenRouter (openrouter.ai/rankings), as of \{as_of}." + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.classifications.get_task_classifications(window="7d") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `window` | [Optional[operations.Window]](../../operations/window.mdx) | :heavy_minus_sign: | Trailing time window for the classification data. Currently only `7d` (trailing 7 days) is supported. | 7d | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.TaskClassificationResponse](../../components/taskclassificationresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.TooManyRequestsResponseError | 429 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/credits/README.md b/docs/sdks/credits/README.mdx similarity index 91% rename from docs/sdks/credits/README.md rename to docs/sdks/credits/README.mdx index 1837ff59..414ae283 100644 --- a/docs/sdks/credits/README.md +++ b/docs/sdks/credits/README.mdx @@ -1,4 +1,7 @@ -# Credits +--- +title: "Credits" +description: "Credit management endpoints" +--- ## Overview @@ -14,7 +17,6 @@ Get total credits purchased and used for the authenticated user. [Management key ### Example Usage - ```python from openrouter import OpenRouter import os @@ -41,11 +43,11 @@ with OpenRouter( | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[operations.GetCreditsResponse](../../operations/getcreditsresponse.md)** +**[operations.GetCreditsResponse](../../operations/getcreditsresponse.mdx)** ### Errors diff --git a/docs/sdks/datasets/README.mdx b/docs/sdks/datasets/README.mdx new file mode 100644 index 00000000..9cdcae1f --- /dev/null +++ b/docs/sdks/datasets/README.mdx @@ -0,0 +1,160 @@ +--- +title: "Datasets" +description: "Datasets endpoints" +--- + +## Overview + +Datasets endpoints + +### Available Operations + +* [get_app_rankings](#get_app_rankings) - Top apps by token usage +* [get_rankings_daily](#get_rankings_daily) - Daily token totals for top 50 models + +## get_app_rankings + +Returns the top public apps on OpenRouter ranked by token usage inside the requested +date window, matching the public apps marketplace on openrouter.ai/apps. Token totals +are `prompt_tokens + completion_tokens`; hidden and private apps are excluded and +traffic from related app aliases is merged into the canonical visible app. + +`sort=popular` (default) ranks by total token volume inside the window. +`sort=trending` ranks 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, so `trending` may return fewer than `limit` rows. + +Filter with `category` (marketplace category group, e.g. `coding`) or `subcategory` +(e.g. `cli-agent`). Ranks are re-numbered 1..N after filtering. Page with `offset` — +`rank` stays absolute, so the first row of `offset=50` is `rank: 51`. + +Authenticate with any valid OpenRouter API key (same key used for inference). +Rate-limited to 30 requests/minute per key and 500 requests/day per account. + +When republishing or quoting this dataset, OpenRouter must be cited as: +"Source: OpenRouter (openrouter.ai/apps), as of \{as_of}." + +Token counts come from each upstream provider's own tokenizer, so a token attributed +to one app is not directly comparable to a token attributed to another app whose +traffic flows through a different provider. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.datasets.get_app_rankings(sort="popular", limit=50, offset=0) + + while res is not None: + # Handle items + + res = res.next() + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `category` | [Optional[operations.GetAppRankingsCategory]](../../operations/getapprankingscategory.mdx) | :heavy_minus_sign: | 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. | coding | +| `subcategory` | [Optional[operations.Subcategory]](../../operations/subcategory.mdx) | :heavy_minus_sign: | 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. | cli-agent | +| `sort` | [Optional[operations.GetAppRankingsSort]](../../operations/getapprankingssort.mdx) | :heavy_minus_sign: | `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. | popular | +| `start_date` | *Optional[str]* | :heavy_minus_sign: | Start of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to 30 days before `end_date`. The dataset begins at 2025-01-01; earlier values are clamped forward to that floor and the resolved value is echoed in `meta.start_date`. | 2026-04-12 | +| `end_date` | *Optional[str]* | :heavy_minus_sign: | 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. | 2026-05-11 | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of apps to return (1-100). Defaults to 50. | 50 | +| `offset` | *Optional[int]* | :heavy_minus_sign: | 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`. | 0 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[operations.GetAppRankingsResponse](../../operations/getapprankingsresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.TooManyRequestsResponseError | 429 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## get_rankings_daily + +Returns the top 50 public models per day by total token usage on OpenRouter, plus a +single aggregated `other` row per day that sums every model outside that top 50. +Token totals are `prompt_tokens + completion_tokens`, matching the public rankings +chart on openrouter.ai/rankings. + +Each row is a distinct `(date, model_permaslug)` pair. The `other` row uses the +reserved permaslug `other` and is always returned last within its date, so callers +can compute `top-50 traffic / total daily traffic` without a second request. + +Authenticate with any valid OpenRouter API key (same key used for inference). +Rate-limited to 30 requests/minute per key and 500 requests/day per account. + +When republishing or quoting this dataset, OpenRouter must be cited as: +"Source: OpenRouter (openrouter.ai/rankings), as of \{as_of}." + +Token counts come from each upstream provider's own tokenizer (Anthropic counts +are as reported by Anthropic, OpenAI counts are as reported by OpenAI, etc.), so +a token in one row is not directly comparable to a token in another row from a +different provider. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.datasets.get_rankings_daily() + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `start_date` | *Optional[str]* | :heavy_minus_sign: | Start of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to 30 days before `end_date`. The dataset begins at 2025-01-01; earlier values are clamped forward to that floor and the resolved value is echoed in `meta.start_date`. | 2026-04-12 | +| `end_date` | *Optional[str]* | :heavy_minus_sign: | 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. | 2026-05-11 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.RankingsDailyResponse](../../components/rankingsdailyresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.TooManyRequestsResponseError | 429 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/embeddings/README.md b/docs/sdks/embeddings/README.mdx similarity index 87% rename from docs/sdks/embeddings/README.md rename to docs/sdks/embeddings/README.mdx index b649f5b6..bf8b8c51 100644 --- a/docs/sdks/embeddings/README.md +++ b/docs/sdks/embeddings/README.mdx @@ -1,4 +1,7 @@ -# Embeddings +--- +title: "Embeddings" +description: "Text embedding endpoints" +--- ## Overview @@ -15,7 +18,6 @@ Submits an embedding request to the embeddings router ### Example Usage - ```python from openrouter import OpenRouter import os @@ -39,21 +41,21 @@ with OpenRouter( | Parameter | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `input` | [operations.InputUnion](../../operations/inputunion.md) | :heavy_check_mark: | Text, token, or multimodal input(s) to embed | The quick brown fox jumps over the lazy dog | +| `input` | [operations.InputUnion](../../operations/inputunion.mdx) | :heavy_check_mark: | Text, token, or multimodal input(s) to embed | The quick brown fox jumps over the lazy dog | | `model` | *str* | :heavy_check_mark: | The model to use for embeddings | openai/text-embedding-3-small | | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | | `dimensions` | *Optional[int]* | :heavy_minus_sign: | The number of dimensions for the output embeddings | 1536 | -| `encoding_format` | [Optional[operations.EncodingFormat]](../../operations/encodingformat.md) | :heavy_minus_sign: | The format of the output embeddings | float | +| `encoding_format` | [Optional[operations.EncodingFormat]](../../operations/encodingformat.mdx) | :heavy_minus_sign: | The format of the output embeddings | float | | `input_type` | *Optional[str]* | :heavy_minus_sign: | The type of input (e.g. search_query, search_document) | search_query | -| `provider` | [OptionalNullable[components.ProviderPreferences]](../../components/providerpreferences.md) | :heavy_minus_sign: | N/A | {
"allow_fallbacks": true
} | +| `provider` | [OptionalNullable[components.ProviderPreferences]](../../components/providerpreferences.mdx) | :heavy_minus_sign: | N/A | \{
"allow_fallbacks": true
} | | `user` | *Optional[str]* | :heavy_minus_sign: | A unique identifier for the end-user | user-1234 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[operations.CreateEmbeddingsResponse](../../operations/createembeddingsresponse.md)** +**[operations.CreateEmbeddingsResponse](../../operations/createembeddingsresponse.mdx)** ### Errors @@ -77,7 +79,6 @@ Returns a list of all available embeddings models and their properties ### Example Usage - ```python from openrouter import OpenRouter import os @@ -104,11 +105,11 @@ with OpenRouter( | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[components.ModelsListResponse](../../components/modelslistresponse.md)** +**[components.ModelsListResponse](../../components/modelslistresponse.mdx)** ### Errors diff --git a/docs/sdks/endpoints/README.md b/docs/sdks/endpoints/README.mdx similarity index 91% rename from docs/sdks/endpoints/README.md rename to docs/sdks/endpoints/README.mdx index 2ce96e9a..741c77c1 100644 --- a/docs/sdks/endpoints/README.md +++ b/docs/sdks/endpoints/README.mdx @@ -1,4 +1,7 @@ -# Endpoints +--- +title: "Endpoints" +description: "Endpoint information" +--- ## Overview @@ -15,7 +18,6 @@ Preview the impact of ZDR on the available endpoints ### Example Usage - ```python from openrouter import OpenRouter import os @@ -42,11 +44,11 @@ with OpenRouter( | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[operations.ListEndpointsZdrResponse](../../operations/listendpointszdrresponse.md)** +**[operations.ListEndpointsZdrResponse](../../operations/listendpointszdrresponse.mdx)** ### Errors @@ -61,7 +63,6 @@ List all endpoints for a model ### Example Usage - ```python from openrouter import OpenRouter import os @@ -90,11 +91,11 @@ with OpenRouter( | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[operations.ListEndpointsResponse](../../operations/listendpointsresponse.md)** +**[operations.ListEndpointsResponse](../../operations/listendpointsresponse.mdx)** ### Errors diff --git a/docs/sdks/files/README.mdx b/docs/sdks/files/README.mdx new file mode 100644 index 00000000..5327882a --- /dev/null +++ b/docs/sdks/files/README.mdx @@ -0,0 +1,275 @@ +--- +title: "Files" +description: "Files endpoints" +--- + +## Overview + +Files endpoints + +### Available Operations + +* [list](#list) - List files +* [upload](#upload) - Upload a file +* [delete](#delete) - Delete a file +* [retrieve](#retrieve) - Get file metadata +* [download](#download) - Download file content + +## list + +Lists files belonging to the workspace of the authenticating API key. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.files.list() + + while res is not None: + # Handle items + + res = res.next() + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of files to return (1–1000). | 100 | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | eyJjdXJzb3IiOiJmaWxlXzAxMUNOaGE4aUNKY1Uxd1hOUjZxNFY4dyJ9 | +| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Workspace to scope the request to. Defaults to the caller’s default workspace. | a103d8b6-42f0-4e50-9a3c-bf41e2c3c1a7 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[operations.ListFilesResponse](../../operations/listfilesresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.TooManyRequestsResponseError | 429 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## upload + +Uploads a file to be referenced in future API calls. The file is stored under the workspace of the authenticating API key. Maximum file size: 100 MB. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.files.upload(file={ + "file_name": "example.file", + "content": open("example.file", "rb"), + }) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `file` | [operations.File](../../operations/file.mdx) | :heavy_check_mark: | N/A | | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Workspace to scope the request to. Defaults to the caller’s default workspace. | a103d8b6-42f0-4e50-9a3c-bf41e2c3c1a7 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.FileMetadata](../../components/filemetadata.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.ForbiddenResponseError | 403 | application/json | +| errors.PayloadTooLargeResponseError | 413 | application/json | +| errors.TooManyRequestsResponseError | 429 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## delete + +Deletes a file owned by the requesting workspace. Deletion is irreversible. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.files.delete(file_id="file_011CNha8iCJcU1wXNR6q4V8w") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `file_id` | *str* | :heavy_check_mark: | N/A | file_011CNha8iCJcU1wXNR6q4V8w | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Workspace to scope the request to. Defaults to the caller’s default workspace. | a103d8b6-42f0-4e50-9a3c-bf41e2c3c1a7 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.FileDeleteResponse](../../components/filedeleteresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.TooManyRequestsResponseError | 429 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## retrieve + +Retrieves metadata for a single file owned by the requesting workspace. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.files.retrieve(file_id="file_011CNha8iCJcU1wXNR6q4V8w") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `file_id` | *str* | :heavy_check_mark: | N/A | file_011CNha8iCJcU1wXNR6q4V8w | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Workspace to scope the request to. Defaults to the caller’s default workspace. | a103d8b6-42f0-4e50-9a3c-bf41e2c3c1a7 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.FileMetadata](../../components/filemetadata.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.TooManyRequestsResponseError | 429 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## download + +Downloads the raw bytes of a file. Only files created server-side are downloadable; uploaded files return 400. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.files.download(file_id="file_011CNha8iCJcU1wXNR6q4V8w") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `file_id` | *str* | :heavy_check_mark: | N/A | file_011CNha8iCJcU1wXNR6q4V8w | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Workspace to scope the request to. Defaults to the caller’s default workspace. | a103d8b6-42f0-4e50-9a3c-bf41e2c3c1a7 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[httpx.Response](../../models/.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.TooManyRequestsResponseError | 429 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/generations/README.md b/docs/sdks/generations/README.mdx similarity index 92% rename from docs/sdks/generations/README.md rename to docs/sdks/generations/README.mdx index 7fd647d0..b29ea120 100644 --- a/docs/sdks/generations/README.md +++ b/docs/sdks/generations/README.mdx @@ -1,4 +1,7 @@ -# Generations +--- +title: "Generations" +description: "Generation history endpoints" +--- ## Overview @@ -15,7 +18,6 @@ Get request & usage metadata for a generation ### Example Usage - ```python from openrouter import OpenRouter import os @@ -43,11 +45,11 @@ with OpenRouter( | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[components.GenerationResponse](../../components/generationresponse.md)** +**[components.GenerationResponse](../../components/generationresponse.mdx)** ### Errors @@ -69,7 +71,6 @@ Get stored prompt and completion content for a generation ### Example Usage - ```python from openrouter import OpenRouter import os @@ -97,11 +98,11 @@ with OpenRouter( | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[components.GenerationContentResponse](../../components/generationcontentresponse.md)** +**[components.GenerationContentResponse](../../components/generationcontentresponse.mdx)** ### Errors diff --git a/docs/sdks/guardrails/README.md b/docs/sdks/guardrails/README.mdx similarity index 93% rename from docs/sdks/guardrails/README.md rename to docs/sdks/guardrails/README.mdx index 4b79890c..d164a1da 100644 --- a/docs/sdks/guardrails/README.md +++ b/docs/sdks/guardrails/README.mdx @@ -1,4 +1,7 @@ -# Guardrails +--- +title: "Guardrails" +description: "Guardrails endpoints" +--- ## Overview @@ -26,7 +29,6 @@ List all guardrails for the authenticated user. [Management key](/docs/guides/ov ### Example Usage - ```python from openrouter import OpenRouter import os @@ -58,11 +60,11 @@ with OpenRouter( | `offset` | *Optional[int]* | :heavy_minus_sign: | Number of records to skip for pagination | 0 | | `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of records to return (max 100) | 50 | | `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Filter guardrails by workspace ID. By default, guardrails in the default workspace are returned. | 0df9e665-d932-5740-b2c7-b52af166bc11 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[operations.ListGuardrailsResponse](../../operations/listguardrailsresponse.md)** +**[operations.ListGuardrailsResponse](../../operations/listguardrailsresponse.mdx)** ### Errors @@ -78,7 +80,6 @@ Create a new guardrail for the authenticated user. [Management key](/docs/guides ### Example Usage - ```python from openrouter import OpenRouter import os @@ -112,8 +113,8 @@ with OpenRouter( | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | | `allowed_models` | List[*str*] | :heavy_minus_sign: | Array of model identifiers (slug or canonical_slug accepted) | [
"openai/gpt-5.2",
"anthropic/claude-4.5-opus-20251124",
"deepseek/deepseek-r1-0528:free"
] | | `allowed_providers` | List[*str*] | :heavy_minus_sign: | List of allowed provider IDs | [
"openai",
"anthropic",
"deepseek"
] | -| `content_filter_builtins` | List[[components.ContentFilterBuiltinEntryInput](../../components/contentfilterbuiltinentryinput.md)] | :heavy_minus_sign: | Builtin content filters to apply. The "flag" action is only supported for "regex-prompt-injection"; PII slugs (email, phone, ssn, credit-card, ip-address, person-name, address) accept "block" or "redact" only. | [
{
"action": "block",
"slug": "regex-prompt-injection"
}
] | -| `content_filters` | List[[components.ContentFilterEntry](../../components/contentfilterentry.md)] | :heavy_minus_sign: | Custom regex content filters to apply to request messages | [
{
"action": "redact",
"label": "[API_KEY]",
"pattern": "\\b(sk-[a-zA-Z0-9]{48})\\b"
}
] | +| `content_filter_builtins` | List[[components.ContentFilterBuiltinEntryInput](../../components/contentfilterbuiltinentryinput.mdx)] | :heavy_minus_sign: | Builtin content filters to apply. The "flag" action is only supported for "regex-prompt-injection"; PII slugs (email, phone, ssn, credit-card, ip-address, person-name, address) accept "block" or "redact" only. | [
\{
"action": "block",
"slug": "regex-prompt-injection"
}
] | +| `content_filters` | List[[components.ContentFilterEntry](../../components/contentfilterentry.mdx)] | :heavy_minus_sign: | Custom regex content filters to apply to request messages | [
\{
"action": "redact",
"label": "[API_KEY]",
"pattern": "\\b(sk-[a-zA-Z0-9]\{48})\\b"
}
] | | `description` | *OptionalNullable[str]* | :heavy_minus_sign: | Description of the guardrail | A guardrail for limiting API usage | | `enforce_zdr` | *OptionalNullable[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Deprecated. Use enforce_zdr_anthropic, enforce_zdr_openai, enforce_zdr_google, and enforce_zdr_other instead. When provided, its value is copied into any of those per-provider fields that are not explicitly specified on the request. | false | | `enforce_zdr_anthropic` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to enforce zero data retention for Anthropic models. Falls back to enforce_zdr when not provided. | false | @@ -123,13 +124,13 @@ with OpenRouter( | `ignored_models` | List[*str*] | :heavy_minus_sign: | Array of model identifiers to exclude from routing (slug or canonical_slug accepted) | [
"openai/gpt-4o-mini"
] | | `ignored_providers` | List[*str*] | :heavy_minus_sign: | List of provider IDs to exclude from routing | [
"azure"
] | | `limit_usd` | *OptionalNullable[float]* | :heavy_minus_sign: | Spending limit in USD | 50 | -| `reset_interval` | [OptionalNullable[components.GuardrailInterval]](../../components/guardrailinterval.md) | :heavy_minus_sign: | Interval at which the limit resets (daily, weekly, monthly) | monthly | +| `reset_interval` | [OptionalNullable[components.GuardrailInterval]](../../components/guardrailinterval.mdx) | :heavy_minus_sign: | Interval at which the limit resets (daily, weekly, monthly) | monthly | | `workspace_id` | *Optional[str]* | :heavy_minus_sign: | The workspace to create the guardrail in. Defaults to the default workspace if not provided. | 0df9e665-d932-5740-b2c7-b52af166bc11 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[components.CreateGuardrailResponse](../../components/createguardrailresponse.md)** +**[components.CreateGuardrailResponse](../../components/createguardrailresponse.mdx)** ### Errors @@ -147,7 +148,6 @@ Delete an existing guardrail. [Management key](/docs/guides/overview/auth/manage ### Example Usage - ```python from openrouter import OpenRouter import os @@ -175,11 +175,11 @@ with OpenRouter( | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[components.DeleteGuardrailResponse](../../components/deleteguardrailresponse.md)** +**[components.DeleteGuardrailResponse](../../components/deleteguardrailresponse.mdx)** ### Errors @@ -196,7 +196,6 @@ Get a single guardrail by ID. [Management key](/docs/guides/overview/auth/manage ### Example Usage - ```python from openrouter import OpenRouter import os @@ -224,11 +223,11 @@ with OpenRouter( | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[components.GetGuardrailResponse](../../components/getguardrailresponse.md)** +**[components.GetGuardrailResponse](../../components/getguardrailresponse.mdx)** ### Errors @@ -245,7 +244,6 @@ Update an existing guardrail. Collection fields use replace semantics: send the ### Example Usage - ```python from openrouter import OpenRouter import os @@ -275,8 +273,8 @@ with OpenRouter( | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | | `allowed_models` | List[*str*] | :heavy_minus_sign: | Array of model identifiers (slug or canonical_slug accepted) | [
"openai/gpt-5.2"
] | | `allowed_providers` | List[*str*] | :heavy_minus_sign: | New list of allowed provider IDs | [
"openai",
"anthropic",
"deepseek"
] | -| `content_filter_builtins` | List[[components.ContentFilterBuiltinEntryInput](../../components/contentfilterbuiltinentryinput.md)] | :heavy_minus_sign: | Builtin content filters to apply. Set to null to remove. The "flag" action is only supported for "regex-prompt-injection"; PII slugs (email, phone, ssn, credit-card, ip-address, person-name, address) accept "block" or "redact" only. | [
{
"action": "block",
"slug": "regex-prompt-injection"
}
] | -| `content_filters` | List[[components.ContentFilterEntry](../../components/contentfilterentry.md)] | :heavy_minus_sign: | Custom regex content filters to apply. Set to null to remove. | | +| `content_filter_builtins` | List[[components.ContentFilterBuiltinEntryInput](../../components/contentfilterbuiltinentryinput.mdx)] | :heavy_minus_sign: | Builtin content filters to apply. Set to null to remove. The "flag" action is only supported for "regex-prompt-injection"; PII slugs (email, phone, ssn, credit-card, ip-address, person-name, address) accept "block" or "redact" only. | [
\{
"action": "block",
"slug": "regex-prompt-injection"
}
] | +| `content_filters` | List[[components.ContentFilterEntry](../../components/contentfilterentry.mdx)] | :heavy_minus_sign: | Custom regex content filters to apply. Set to null to remove. | null | | `description` | *OptionalNullable[str]* | :heavy_minus_sign: | New description for the guardrail | Updated description | | `enforce_zdr` | *OptionalNullable[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Deprecated. Use enforce_zdr_anthropic, enforce_zdr_openai, enforce_zdr_google, and enforce_zdr_other instead. When provided, its value is copied into any of those per-provider fields that are not explicitly specified on the request. | true | | `enforce_zdr_anthropic` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to enforce zero data retention for Anthropic models. Falls back to enforce_zdr when not provided. | true | @@ -287,12 +285,12 @@ with OpenRouter( | `ignored_providers` | List[*str*] | :heavy_minus_sign: | List of provider IDs to exclude from routing | [
"azure"
] | | `limit_usd` | *OptionalNullable[float]* | :heavy_minus_sign: | New spending limit in USD | 75 | | `name` | *Optional[str]* | :heavy_minus_sign: | New name for the guardrail | Updated Guardrail Name | -| `reset_interval` | [OptionalNullable[components.GuardrailInterval]](../../components/guardrailinterval.md) | :heavy_minus_sign: | Interval at which the limit resets (daily, weekly, monthly) | monthly | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `reset_interval` | [OptionalNullable[components.GuardrailInterval]](../../components/guardrailinterval.mdx) | :heavy_minus_sign: | Interval at which the limit resets (daily, weekly, monthly) | monthly | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[components.UpdateGuardrailResponse](../../components/updateguardrailresponse.md)** +**[components.UpdateGuardrailResponse](../../components/updateguardrailresponse.mdx)** ### Errors @@ -310,7 +308,6 @@ List all API key assignments for a specific guardrail. [Management key](/docs/gu ### Example Usage - ```python from openrouter import OpenRouter import os @@ -342,11 +339,11 @@ with OpenRouter( | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | | `offset` | *Optional[int]* | :heavy_minus_sign: | Number of records to skip for pagination | 0 | | `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of records to return (max 100) | 50 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[operations.ListGuardrailKeyAssignmentsResponse](../../operations/listguardrailkeyassignmentsresponse.md)** +**[operations.ListGuardrailKeyAssignmentsResponse](../../operations/listguardrailkeyassignmentsresponse.mdx)** ### Errors @@ -363,7 +360,6 @@ Assign multiple API keys to a specific guardrail. A key may hold at most one gua ### Example Usage - ```python from openrouter import OpenRouter import os @@ -394,11 +390,11 @@ with OpenRouter( | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[components.BulkAssignKeysResponse](../../components/bulkassignkeysresponse.md)** +**[components.BulkAssignKeysResponse](../../components/bulkassignkeysresponse.mdx)** ### Errors @@ -416,7 +412,6 @@ Unassign multiple API keys from a specific guardrail. [Management key](/docs/gui ### Example Usage - ```python from openrouter import OpenRouter import os @@ -447,11 +442,11 @@ with OpenRouter( | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[components.BulkUnassignKeysResponse](../../components/bulkunassignkeysresponse.md)** +**[components.BulkUnassignKeysResponse](../../components/bulkunassignkeysresponse.mdx)** ### Errors @@ -469,7 +464,6 @@ List all organization member assignments for a specific guardrail. [Management k ### Example Usage - ```python from openrouter import OpenRouter import os @@ -501,11 +495,11 @@ with OpenRouter( | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | | `offset` | *Optional[int]* | :heavy_minus_sign: | Number of records to skip for pagination | 0 | | `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of records to return (max 100) | 50 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[operations.ListGuardrailMemberAssignmentsResponse](../../operations/listguardrailmemberassignmentsresponse.md)** +**[operations.ListGuardrailMemberAssignmentsResponse](../../operations/listguardrailmemberassignmentsresponse.mdx)** ### Errors @@ -522,7 +516,6 @@ Assign multiple organization members to a specific guardrail. [Management key](/ ### Example Usage - ```python from openrouter import OpenRouter import os @@ -554,11 +547,11 @@ with OpenRouter( | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[components.BulkAssignMembersResponse](../../components/bulkassignmembersresponse.md)** +**[components.BulkAssignMembersResponse](../../components/bulkassignmembersresponse.mdx)** ### Errors @@ -576,7 +569,6 @@ Unassign multiple organization members from a specific guardrail. [Management ke ### Example Usage - ```python from openrouter import OpenRouter import os @@ -608,11 +600,11 @@ with OpenRouter( | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[components.BulkUnassignMembersResponse](../../components/bulkunassignmembersresponse.md)** +**[components.BulkUnassignMembersResponse](../../components/bulkunassignmembersresponse.mdx)** ### Errors @@ -630,7 +622,6 @@ List all API key guardrail assignments for the authenticated user. [Management k ### Example Usage - ```python from openrouter import OpenRouter import os @@ -661,11 +652,11 @@ with OpenRouter( | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | | `offset` | *Optional[int]* | :heavy_minus_sign: | Number of records to skip for pagination | 0 | | `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of records to return (max 100) | 50 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[operations.ListKeyAssignmentsResponse](../../operations/listkeyassignmentsresponse.md)** +**[operations.ListKeyAssignmentsResponse](../../operations/listkeyassignmentsresponse.mdx)** ### Errors @@ -681,7 +672,6 @@ List all organization member guardrail assignments for the authenticated user. [ ### Example Usage - ```python from openrouter import OpenRouter import os @@ -712,11 +702,11 @@ with OpenRouter( | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | | `offset` | *Optional[int]* | :heavy_minus_sign: | Number of records to skip for pagination | 0 | | `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of records to return (max 100) | 50 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[operations.ListMemberAssignmentsResponse](../../operations/listmemberassignmentsresponse.md)** +**[operations.ListMemberAssignmentsResponse](../../operations/listmemberassignmentsresponse.mdx)** ### Errors diff --git a/docs/sdks/images/README.mdx b/docs/sdks/images/README.mdx new file mode 100644 index 00000000..cb61de85 --- /dev/null +++ b/docs/sdks/images/README.mdx @@ -0,0 +1,177 @@ +--- +title: "Images" +description: "Images endpoints" +--- + +## Overview + +Images endpoints + +### Available Operations + +* [generate](#generate) - Generate an image +* [list_models](#list_models) - List image generation models +* [list_model_endpoints](#list_model_endpoints) - List endpoints for an image model + +## generate + +Generates an image from a text prompt via the image generation router + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.images.generate(model="bytedance-seed/seedream-4.5", prompt="a red panda astronaut floating in space, studio lighting") + + with res as event_stream: + for event in event_stream: + # handle event + print(event, flush=True) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `model` | *str* | :heavy_check_mark: | The image generation model to use | bytedance-seed/seedream-4.5 | +| `prompt` | *str* | :heavy_check_mark: | Text description of the desired image | a red panda astronaut floating in space, studio lighting | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `aspect_ratio` | [Optional[components.ImageGenerationRequestAspectRatio]](../../components/imagegenerationrequestaspectratio.mdx) | :heavy_minus_sign: | Normalized aspect ratio of the generated image. Providers clamp to their supported subset. | 16:9 | +| `background` | [Optional[components.ImageGenerationRequestBackground]](../../components/imagegenerationrequestbackground.mdx) | :heavy_minus_sign: | Background treatment. `transparent` requires an output_format that supports alpha (png or webp). | auto | +| `input_references` | List[[components.ContentPartImage](../../components/contentpartimage.mdx)] | :heavy_minus_sign: | Reference images to guide image-to-image generation, as base64 data URLs or HTTP(S) URLs. | | +| `n` | *Optional[int]* | :heavy_minus_sign: | Number of images to generate (1-10). Providers that only support single-image generation reject n > 1. | 1 | +| `output_compression` | *Optional[int]* | :heavy_minus_sign: | Compression level (0-100) for webp/jpeg output. Ignored for png and by providers without a compression knob. | 100 | +| `output_format` | [Optional[components.ImageGenerationRequestOutputFormat]](../../components/imagegenerationrequestoutputformat.mdx) | :heavy_minus_sign: | Encoding of the returned image bytes. Most models produce raster formats (png, jpeg, webp). SVG is supported by vectorization models (e.g. Quiver) — the SVG markup is UTF-8 base64-encoded in `b64_json`. | png | +| `provider` | [Optional[components.ImageGenerationRequestProvider]](../../components/imagegenerationrequestprovider.mdx) | :heavy_minus_sign: | Provider-specific passthrough configuration | | +| `quality` | [Optional[components.ImageGenerationRequestQuality]](../../components/imagegenerationrequestquality.mdx) | :heavy_minus_sign: | Rendering quality. Providers without a quality knob ignore this. | high | +| `resolution` | [Optional[components.ImageGenerationRequestResolution]](../../components/imagegenerationrequestresolution.mdx) | :heavy_minus_sign: | Normalized resolution tier of the generated image. Concrete pixel dimensions are derived per-provider. | 2K | +| `seed` | *Optional[int]* | :heavy_minus_sign: | If specified, the generation will sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed for all providers. | | +| `size` | *Optional[str]* | :heavy_minus_sign: | Optional. A convenience shorthand for output dimensions — pass a tier ("2K", "4K") or explicit pixels ("2048x2048") and we normalize it to the right dimensions for the chosen provider. Interchangeable with resolution + aspect_ratio; use those directly for enumerated, per-model discoverable values. Conflicting size + resolution/aspect_ratio is rejected. | 2K | +| `stream` | *Optional[bool]* | :heavy_minus_sign: | If true, partial images are streamed as SSE events as they become available. Only supported by providers with native streaming (currently OpenAI). Non-streaming providers ignore this flag and return a buffered response. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[operations.CreateImagesResponse](../../operations/createimagesresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.PaymentRequiredResponseError | 402 | application/json | +| errors.ForbiddenResponseError | 403 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.TooManyRequestsResponseError | 429 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.BadGatewayResponseError | 502 | application/json | +| errors.EdgeNetworkTimeoutResponseError | 524 | application/json | +| errors.ProviderOverloadedResponseError | 529 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## list_models + +Lists every image generation model with its top-level supported-parameter superset and a URL to its full per-endpoint records. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.images.list_models() + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[components.ImageModelsListResponse](../../components/imagemodelslistresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## list_model_endpoints + +Returns the full per-endpoint records for an image model: each endpoint's definitive supported parameters, pricing, and passthrough allowlist. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.images.list_model_endpoints(author="bytedance-seed", slug="seedream-4.5") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `author` | *str* | :heavy_check_mark: | Model author/organization | bytedance-seed | +| `slug` | *str* | :heavy_check_mark: | Model slug | seedream-4.5 | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.ImageModelEndpointsResponse](../../components/imagemodelendpointsresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.NotFoundResponseError | 404 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/models/README.md b/docs/sdks/models/README.mdx similarity index 94% rename from docs/sdks/models/README.md rename to docs/sdks/models/README.mdx index acaf3e22..cc84c8d7 100644 --- a/docs/sdks/models/README.md +++ b/docs/sdks/models/README.mdx @@ -1,4 +1,7 @@ -# Models +--- +title: "Models" +description: "Model information endpoints" +--- ## Overview @@ -17,7 +20,6 @@ Returns full details for a single model identified by its author and slug (e.g. ### Example Usage - ```python from openrouter import OpenRouter import os @@ -46,11 +48,11 @@ with OpenRouter( | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[components.ModelResponse](../../components/modelresponse.md)** +**[components.ModelResponse](../../components/modelresponse.mdx)** ### Errors @@ -66,7 +68,6 @@ List all models and their properties ### Example Usage - ```python from openrouter import OpenRouter import os @@ -93,10 +94,10 @@ with OpenRouter( | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `category` | [Optional[operations.GetModelsCategory]](../../operations/getmodelscategory.md) | :heavy_minus_sign: | Filter models by use case category | programming | +| `category` | [Optional[operations.GetModelsCategory]](../../operations/getmodelscategory.mdx) | :heavy_minus_sign: | Filter models by use case category | programming | | `supported_parameters` | *Optional[str]* | :heavy_minus_sign: | Filter models by supported parameter (comma-separated) | temperature | | `output_modalities` | *Optional[str]* | :heavy_minus_sign: | 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". | text | -| `sort` | [Optional[operations.GetModelsSort]](../../operations/getmodelssort.md) | :heavy_minus_sign: | 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. | newest | +| `sort` | [Optional[operations.GetModelsSort]](../../operations/getmodelssort.mdx) | :heavy_minus_sign: | 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. | newest | | `q` | *Optional[str]* | :heavy_minus_sign: | Free-text search by model name or slug. | gpt-4 | | `input_modalities` | *Optional[str]* | :heavy_minus_sign: | Filter models by input modality. Comma-separated list of: text, image, audio, file. | text,image | | `context` | *Optional[int]* | :heavy_minus_sign: | Minimum context length (tokens). Models with smaller context are excluded. | 128000 | @@ -105,14 +106,14 @@ with OpenRouter( | `arch` | *Optional[str]* | :heavy_minus_sign: | Filter models by architecture/model family (e.g. GPT, Claude, Gemini, Llama). | GPT | | `model_authors` | *Optional[str]* | :heavy_minus_sign: | Filter models by the organization that created the model. Comma-separated list of author slugs. | openai,anthropic | | `providers` | *Optional[str]* | :heavy_minus_sign: | Filter models by hosting provider. Comma-separated list of provider names. | OpenAI,Anthropic | -| `distillable` | [Optional[operations.Distillable]](../../operations/distillable.md) | :heavy_minus_sign: | Filter by distillation capability. "true" returns only distillable models, "false" excludes them. | true | -| `zdr` | [Optional[operations.Zdr]](../../operations/zdr.md) | :heavy_minus_sign: | When set to "true", return only models with zero data retention endpoints. | true | -| `region` | [Optional[operations.Region]](../../operations/region.md) | :heavy_minus_sign: | Filter to models with endpoints in the given data region. Currently only "eu" is supported. | eu | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `distillable` | [Optional[operations.Distillable]](../../operations/distillable.mdx) | :heavy_minus_sign: | Filter by distillation capability. "true" returns only distillable models, "false" excludes them. | true | +| `zdr` | [Optional[operations.Zdr]](../../operations/zdr.mdx) | :heavy_minus_sign: | When set to "true", return only models with zero data retention endpoints. | true | +| `region` | [Optional[operations.Region]](../../operations/region.mdx) | :heavy_minus_sign: | Filter to models with endpoints in the given data region. Currently only "eu" is supported. | eu | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[components.ModelsListResponse](../../components/modelslistresponse.md)** +**[components.ModelsListResponse](../../components/modelslistresponse.mdx)** ### Errors @@ -128,7 +129,6 @@ Get total count of available models ### Example Usage - ```python from openrouter import OpenRouter import os @@ -156,11 +156,11 @@ with OpenRouter( | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | | `output_modalities` | *Optional[str]* | :heavy_minus_sign: | 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". | text | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[components.ModelsCountResponse](../../components/modelscountresponse.md)** +**[components.ModelsCountResponse](../../components/modelscountresponse.mdx)** ### Errors @@ -176,7 +176,6 @@ List models filtered by user provider preferences, [privacy settings](https://op ### Example Usage - ```python from openrouter import OpenRouter, operations import os @@ -201,15 +200,15 @@ with OpenRouter( | Parameter | Type | Required | Description | | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `security` | [operations.ListModelsUserSecurity](../../operations/listmodelsusersecurity.md) | :heavy_check_mark: | N/A | +| `security` | [operations.ListModelsUserSecurity](../../operations/listmodelsusersecurity.mdx) | :heavy_check_mark: | N/A | | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[components.ModelsListResponse](../../components/modelslistresponse.md)** +**[components.ModelsListResponse](../../components/modelslistresponse.mdx)** ### Errors diff --git a/docs/sdks/oauth/README.md b/docs/sdks/oauth/README.mdx similarity index 89% rename from docs/sdks/oauth/README.md rename to docs/sdks/oauth/README.mdx index a99fae69..c8f7dfd9 100644 --- a/docs/sdks/oauth/README.md +++ b/docs/sdks/oauth/README.mdx @@ -1,4 +1,7 @@ -# OAuth +--- +title: "OAuth" +description: "OAuth authentication endpoints" +--- ## Overview @@ -15,7 +18,6 @@ Exchange an authorization code from the PKCE flow for a user-controlled API key ### Example Usage - ```python from openrouter import OpenRouter import os @@ -43,13 +45,13 @@ with OpenRouter( | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `code_challenge_method` | [OptionalNullable[operations.ExchangeAuthCodeForAPIKeyCodeChallengeMethod]](../../operations/exchangeauthcodeforapikeycodechallengemethod.md) | :heavy_minus_sign: | The method used to generate the code challenge | S256 | +| `code_challenge_method` | [OptionalNullable[operations.ExchangeAuthCodeForAPIKeyCodeChallengeMethod]](../../operations/exchangeauthcodeforapikeycodechallengemethod.mdx) | :heavy_minus_sign: | The method used to generate the code challenge | S256 | | `code_verifier` | *Optional[str]* | :heavy_minus_sign: | The code verifier if code_challenge was used in the authorization request | dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[operations.ExchangeAuthCodeForAPIKeyResponse](../../operations/exchangeauthcodeforapikeyresponse.md)** +**[operations.ExchangeAuthCodeForAPIKeyResponse](../../operations/exchangeauthcodeforapikeyresponse.mdx)** ### Errors @@ -66,7 +68,6 @@ Create an authorization code for the PKCE flow to generate a user-controlled API ### Example Usage - ```python from openrouter import OpenRouter import os @@ -95,17 +96,17 @@ with OpenRouter( | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | | `code_challenge` | *Optional[str]* | :heavy_minus_sign: | PKCE code challenge for enhanced security | E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM | -| `code_challenge_method` | [Optional[operations.CreateAuthKeysCodeCodeChallengeMethod]](../../operations/createauthkeyscodecodechallengemethod.md) | :heavy_minus_sign: | The method used to generate the code challenge | S256 | +| `code_challenge_method` | [Optional[operations.CreateAuthKeysCodeCodeChallengeMethod]](../../operations/createauthkeyscodecodechallengemethod.mdx) | :heavy_minus_sign: | The method used to generate the code challenge | S256 | | `expires_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Optional expiration time for the API key to be created | 2027-12-31T23:59:59Z | | `key_label` | *Optional[str]* | :heavy_minus_sign: | Optional custom label for the API key. Defaults to the app name if not provided. | My Custom Key | | `limit` | *Optional[float]* | :heavy_minus_sign: | Credit limit for the API key to be created | 100 | -| `usage_limit_type` | [Optional[operations.UsageLimitType]](../../operations/usagelimittype.md) | :heavy_minus_sign: | Optional credit limit reset interval. When set, the credit limit resets on this interval. | monthly | +| `usage_limit_type` | [Optional[operations.UsageLimitType]](../../operations/usagelimittype.mdx) | :heavy_minus_sign: | Optional credit limit reset interval. When set, the credit limit resets on this interval. | monthly | | `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Optional workspace ID to associate the API key with | | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[operations.CreateAuthKeysCodeResponse](../../operations/createauthkeyscoderesponse.md)** +**[operations.CreateAuthKeysCodeResponse](../../operations/createauthkeyscoderesponse.mdx)** ### Errors diff --git a/docs/sdks/observability/README.mdx b/docs/sdks/observability/README.mdx new file mode 100644 index 00000000..869bf82e --- /dev/null +++ b/docs/sdks/observability/README.mdx @@ -0,0 +1,282 @@ +--- +title: "Observability" +description: "Observability endpoints" +--- + +## Overview + +Observability endpoints + +### Available Operations + +* [list](#list) - List observability destinations +* [create](#create) - Create an observability destination +* [delete](#delete) - Delete an observability destination +* [get](#get) - Get an observability destination +* [update](#update) - Update an observability destination + +## list + +List the observability destinations configured for the authenticated entity's default workspace. Use the `workspace_id` query parameter to scope the result to a different workspace. Only destinations with stable release status are surfaced — destinations of other types are excluded. [Management key](/docs/guides/overview/auth/management-api-keys) required. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.observability.list() + + while res is not None: + # Handle items + + res = res.next() + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `offset` | *Optional[int]* | :heavy_minus_sign: | Number of records to skip for pagination | 0 | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of records to return (max 100) | 50 | +| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Optional workspace ID to filter by. Defaults to the authenticated entity's default workspace. | 550e8400-e29b-41d4-a716-446655440000 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[operations.ListObservabilityDestinationsResponse](../../operations/listobservabilitydestinationsresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## create + +Create a new observability destination. A maximum of 5 destinations per type is allowed. Defaults to the authenticated entity's default workspace; use the `workspace_id` body field to scope to a different workspace. [Management key](/docs/guides/overview/auth/management-api-keys) required. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.observability.create(config={ + "baseUrl": "https://us.cloud.langfuse.com", + "publicKey": "pk-l...EfGh", + "secretKey": "sk-l...AbCd", + }, name="Production Langfuse", type_="langfuse", enabled=True, privacy_mode=False) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `config` | Dict[str, *Nullable[Any]*] | :heavy_check_mark: | Provider-specific configuration. The shape depends on `type` and is validated server-side. | \{
"baseUrl": "https://us.cloud.langfuse.com",
"publicKey": "pk-l...EfGh",
"secretKey": "sk-l...AbCd"
} | +| `name` | *str* | :heavy_check_mark: | Human-readable name for the destination. | Production Langfuse | +| `type` | [components.CreateObservabilityDestinationRequestType](../../components/createobservabilitydestinationrequesttype.mdx) | :heavy_check_mark: | The destination type. Only stable destination types are accepted. | langfuse | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `api_key_hashes` | List[*str*] | :heavy_minus_sign: | Optional allowlist of OpenRouter API key hashes whose traffic is forwarded. `null` or omitted means all keys. Must contain at least one hash if provided. | null | +| `enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether this destination should be enabled immediately. | true | +| `filter_rules` | [OptionalNullable[components.ObservabilityFilterRulesConfig]](../../components/observabilityfilterrulesconfig.mdx) | :heavy_minus_sign: | Optional structured filter rules controlling which events are forwarded. | null | +| `privacy_mode` | *Optional[bool]* | :heavy_minus_sign: | When true, request/response bodies are not forwarded — only metadata. | false | +| `sampling_rate` | *Optional[float]* | :heavy_minus_sign: | Sampling rate between 0.0001 and 1 (1 = 100%). | 1 | +| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Optional workspace ID. Defaults to the authenticated entity's default workspace. | 550e8400-e29b-41d4-a716-446655440000 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.CreateObservabilityDestinationResponse](../../components/createobservabilitydestinationresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.ForbiddenResponseError | 403 | application/json | +| errors.ConflictResponseError | 409 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## delete + +Delete an existing observability destination. This performs a soft delete. [Management key](/docs/guides/overview/auth/management-api-keys) required. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.observability.delete(id="99999999-aaaa-bbbb-cccc-dddddddddddd") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | The destination ID (UUID). | 99999999-aaaa-bbbb-cccc-dddddddddddd | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.DeleteObservabilityDestinationResponse](../../components/deleteobservabilitydestinationresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## get + +Fetch a single observability destination by its UUID. [Management key](/docs/guides/overview/auth/management-api-keys) required. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.observability.get(id="99999999-aaaa-bbbb-cccc-dddddddddddd") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | The destination ID (UUID). | 99999999-aaaa-bbbb-cccc-dddddddddddd | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.GetObservabilityDestinationResponse](../../components/getobservabilitydestinationresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## update + +Update an existing observability destination. Only the fields provided in the request body are updated. [Management key](/docs/guides/overview/auth/management-api-keys) required. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.observability.update(id="99999999-aaaa-bbbb-cccc-dddddddddddd", enabled=False, name="Updated Langfuse") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | The destination ID (UUID). | 99999999-aaaa-bbbb-cccc-dddddddddddd | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `api_key_hashes` | List[*str*] | :heavy_minus_sign: | Optional allowlist of OpenRouter API key hashes. `null` clears the filter (all keys). Omitting leaves the current value. Must contain at least one hash if provided. | null | +| `config` | Dict[str, *Nullable[Any]*] | :heavy_minus_sign: | Provider-specific configuration fields to update. Masked values are ignored; unset fields keep their current value. | \{
"baseUrl": "https://us.cloud.langfuse.com",
"publicKey": "pk-l...EfGh",
"secretKey": "sk-l...AbCd"
} | +| `enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether the destination is enabled. | true | +| `filter_rules` | [OptionalNullable[components.ObservabilityFilterRulesConfig]](../../components/observabilityfilterrulesconfig.mdx) | :heavy_minus_sign: | N/A | null | +| `name` | *Optional[str]* | :heavy_minus_sign: | Human-readable name for the destination. | Production Langfuse | +| `privacy_mode` | *Optional[bool]* | :heavy_minus_sign: | When true, request/response bodies are not forwarded — only metadata. | false | +| `sampling_rate` | *Optional[float]* | :heavy_minus_sign: | Sampling rate between 0.0001 and 1 (1 = 100%). | 1 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.UpdateObservabilityDestinationResponse](../../components/updateobservabilitydestinationresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.ConflictResponseError | 409 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/organization/README.mdx b/docs/sdks/organization/README.mdx new file mode 100644 index 00000000..6e199aba --- /dev/null +++ b/docs/sdks/organization/README.mdx @@ -0,0 +1,63 @@ +--- +title: "Organization" +description: "Organization endpoints" +--- + +## Overview + +Organization endpoints + +### Available Operations + +* [list_members](#list_members) - List organization members + +## list_members + +List all members of the organization associated with the authenticated management key. [Management key](/docs/guides/overview/auth/management-api-keys) required. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.organization.list_members() + + while res is not None: + # Handle items + + res = res.next() + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `offset` | *Optional[int]* | :heavy_minus_sign: | Number of records to skip for pagination | 0 | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of records to return (max 100) | 50 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[operations.ListOrganizationMembersResponse](../../operations/listorganizationmembersresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/presets/README.mdx b/docs/sdks/presets/README.mdx new file mode 100644 index 00000000..5e8523f4 --- /dev/null +++ b/docs/sdks/presets/README.mdx @@ -0,0 +1,489 @@ +--- +title: "Presets" +description: "Presets endpoints" +--- + +## Overview + +Presets endpoints + +### Available Operations + +* [list](#list) - List presets +* [get](#get) - Get a preset +* [create_presets_chat_completions](#create_presets_chat_completions) - Create a preset from a chat-completions request body +* [create_presets_messages](#create_presets_messages) - Create a preset from a messages request body +* [create_presets_responses](#create_presets_responses) - Create a preset from a responses request body +* [list_versions](#list_versions) - List versions of a preset +* [get_version](#get_version) - Get a specific version of a preset + +## list + +Lists all presets for the authenticated user, ordered by most recently updated first. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.presets.list() + + while res is not None: + # Handle items + + res = res.next() + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `offset` | *Optional[int]* | :heavy_minus_sign: | Number of records to skip for pagination | 0 | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of records to return (max 100) | 50 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[operations.ListPresetsResponse](../../operations/listpresetsresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## get + +Retrieves a preset by its slug with its currently designated version inline. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.presets.get(slug="my-preset") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `slug` | *str* | :heavy_check_mark: | URL-safe slug identifying the preset. | my-preset | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.GetPresetResponse](../../components/getpresetresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## create_presets_chat_completions + +Creates a preset (or a new version of an existing one) from an inference request body. Only fields that overlap with the preset config are persisted; other fields (e.g. `messages`, `stream`, `prompt`) are silently ignored. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.presets.create_presets_chat_completions(slug="my-preset", messages=[ + { + "content": "You are a helpful assistant.", + "role": "system", + }, + { + "content": "Hello!", + "role": "user", + }, + ], model="openai/gpt-5.4", stream=False, temperature=0.7) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `slug` | *str* | :heavy_check_mark: | URL-safe slug identifying the preset. Created if it does not exist. | my-preset | +| `messages` | List[[components.ChatMessages](../../components/chatmessages.mdx)] | :heavy_check_mark: | List of messages for the conversation | [
\{
"content": "Hello!",
"role": "user"
}
] | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `debug` | [Optional[components.ChatDebugOptions]](../../components/chatdebugoptions.mdx) | :heavy_minus_sign: | Debug options for inspecting request transformations (streaming only) | \{
"echo_upstream_body": true
} | +| `frequency_penalty` | *OptionalNullable[float]* | :heavy_minus_sign: | Frequency penalty (-2.0 to 2.0) | 0 | +| `image_config` | Dict[str, [components.ImageConfig](../../components/imageconfig.mdx)] | :heavy_minus_sign: | Provider-specific image configuration options. Keys and values vary by model/provider. See https://openrouter.ai/docs/guides/overview/multimodal/image-generation for more details. | \{
"aspect_ratio": "16:9",
"quality": "high"
} | +| `logit_bias` | Dict[str, *float*] | :heavy_minus_sign: | Token logit bias adjustments | \{
"50256": -100
} | +| `logprobs` | *OptionalNullable[bool]* | :heavy_minus_sign: | Return log probabilities | false | +| `max_completion_tokens` | *OptionalNullable[int]* | :heavy_minus_sign: | Maximum tokens in completion | 100 | +| `max_tokens` | *OptionalNullable[int]* | :heavy_minus_sign: | Maximum tokens (deprecated, use max_completion_tokens). Note: some providers enforce a minimum of 16. | 100 | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Key-value pairs for additional object information (max 16 pairs, 64 char keys, 512 char values) | \{
"session_id": "session-456",
"user_id": "user-123"
} | +| `min_p` | *OptionalNullable[float]* | :heavy_minus_sign: | Minimum probability threshold relative to the most likely token. Tokens with probability below min_p * (probability of top token) are filtered out. Not all providers support this parameter. | 0.1 | +| `modalities` | List[[components.Modality](../../components/modality.mdx)] | :heavy_minus_sign: | Output modalities for the response. Supported values are "text", "image", and "audio". | [
"text",
"image"
] | +| `model` | *Optional[str]* | :heavy_minus_sign: | Model to use for completion | openai/gpt-4 | +| `models` | List[*str*] | :heavy_minus_sign: | Models to use for completion | [
"openai/gpt-4",
"openai/gpt-4o"
] | +| `parallel_tool_calls` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to enable parallel function calling during tool use. When true, the model may generate multiple tool calls in a single response. | true | +| `plugins` | List[[components.ChatRequestPlugin](../../components/chatrequestplugin.mdx)] | :heavy_minus_sign: | Plugins you want to enable for this request, including their settings. | | +| `presence_penalty` | *OptionalNullable[float]* | :heavy_minus_sign: | Presence penalty (-2.0 to 2.0) | 0 | +| `provider` | [OptionalNullable[components.ProviderPreferences]](../../components/providerpreferences.mdx) | :heavy_minus_sign: | When multiple model providers are available, optionally indicate your routing preference. | \{
"allow_fallbacks": true
} | +| `reasoning` | [Optional[components.ChatRequestReasoning]](../../components/chatrequestreasoning.mdx) | :heavy_minus_sign: | Configuration options for reasoning models | \{
"effort": "medium",
"summary": "concise"
} | +| `reasoning_effort` | [OptionalNullable[components.ChatRequestReasoningEffort]](../../components/chatrequestreasoningeffort.mdx) | :heavy_minus_sign: | Shorthand for setting reasoning effort. Equivalent to setting reasoning.effort. Cannot be used simultaneously with reasoning.effort if they differ. | medium | +| `repetition_penalty` | *OptionalNullable[float]* | :heavy_minus_sign: | Penalizes tokens based on how much they have already appeared in the text. A value of 1.0 means no penalty. Values above 1.0 penalize repeated tokens more strongly. Not all providers support this parameter. | 1 | +| `response_format` | [Optional[components.ResponseFormat]](../../components/responseformat.mdx) | :heavy_minus_sign: | Response format configuration | \{
"type": "json_object"
} | +| `seed` | *OptionalNullable[int]* | :heavy_minus_sign: | Random seed for deterministic outputs | 42 | +| `service_tier` | [OptionalNullable[components.ChatRequestServiceTier]](../../components/chatrequestservicetier.mdx) | :heavy_minus_sign: | The service tier to use for processing this request. | auto | +| `session_id` | *Optional[str]* | :heavy_minus_sign: | A unique identifier for grouping related requests (e.g., a conversation or agent workflow). When provided, OpenRouter uses it as the sticky routing key, routing all requests in the session to the same provider to maximize prompt cache hits. Also used for observability grouping. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. | | +| `stop` | [OptionalNullable[components.Stop]](../../components/stop.mdx) | :heavy_minus_sign: | Stop sequences (up to 4) | [
""
] | +| `stop_server_tools_when` | List[[components.StopServerToolsWhenCondition](../../components/stopservertoolswhencondition.mdx)] | :heavy_minus_sign: | Stop conditions for the server-tool agent loop. Any condition firing halts the loop (OR logic). When set, this overrides `max_tool_calls`. | [
\{
"step_count": 5,
"type": "step_count_is"
},
\{
"max_cost_in_dollars": 0.5,
"type": "max_cost"
}
] | +| `stream` | *Optional[bool]* | :heavy_minus_sign: | Enable streaming response | false | +| `stream_options` | [OptionalNullable[components.ChatStreamOptions]](../../components/chatstreamoptions.mdx) | :heavy_minus_sign: | Streaming configuration options | \{
"include_usage": true
} | +| `temperature` | *OptionalNullable[float]* | :heavy_minus_sign: | Sampling temperature (0-2) | 0.7 | +| `tool_choice` | [Optional[components.ChatToolChoice]](../../components/chattoolchoice.mdx) | :heavy_minus_sign: | Tool choice configuration | auto | +| `tools` | List[[components.ChatFunctionTool](../../components/chatfunctiontool.mdx)] | :heavy_minus_sign: | Available tools for function calling | [
\{
"function": \{
"description": "Get weather",
"name": "get_weather"
},
"type": "function"
}
] | +| `top_a` | *OptionalNullable[float]* | :heavy_minus_sign: | Consider only tokens with "sufficiently high" probabilities based on the probability of the most likely token. Not all providers support this parameter. | 0 | +| `top_k` | *OptionalNullable[int]* | :heavy_minus_sign: | Limits the model to choose from the top K most likely tokens at each step. A value of 1 means the model will always pick the most likely next token. Not all providers support this parameter. | 40 | +| `top_logprobs` | *OptionalNullable[int]* | :heavy_minus_sign: | Number of top log probabilities to return (0-20) | 5 | +| `top_p` | *OptionalNullable[float]* | :heavy_minus_sign: | Nucleus sampling parameter (0-1) | 1 | +| `trace` | [Optional[components.TraceConfig]](../../components/traceconfig.mdx) | :heavy_minus_sign: | Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. | \{
"trace_id": "trace-abc123",
"trace_name": "my-app-trace"
} | +| `user` | *Optional[str]* | :heavy_minus_sign: | Unique user identifier | user-123 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.CreatePresetFromInferenceResponse](../../components/createpresetfrominferenceresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.ForbiddenResponseError | 403 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.ConflictResponseError | 409 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## create_presets_messages + +Creates a preset (or a new version of an existing one) from an inference request body. Only fields that overlap with the preset config are persisted; other fields (e.g. `messages`, `stream`, `prompt`) are silently ignored. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.presets.create_presets_messages(slug="my-preset", messages=[ + { + "content": "Hello!", + "role": "user", + }, + ], model="anthropic/claude-4.6-sonnet", max_tokens=1024, system="You are a helpful assistant.") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `slug` | *str* | :heavy_check_mark: | URL-safe slug identifying the preset. Created if it does not exist. | my-preset | +| `messages` | List[[components.MessagesMessageParam](../../components/messagesmessageparam.mdx)] | :heavy_check_mark: | N/A | | +| `model` | *str* | :heavy_check_mark: | N/A | | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `context_management` | [OptionalNullable[components.ContextManagement]](../../components/contextmanagement.mdx) | :heavy_minus_sign: | N/A | | +| `fallbacks` | List[[components.MessagesFallbackParam](../../components/messagesfallbackparam.mdx)] | :heavy_minus_sign: | Fallback models to try if the primary model fails or refuses, in order. Handled by OpenRouter multi-model routing rather than Anthropic server-side fallbacks; cannot be combined with `models`. Each entry accepts only `model`. Maximum of 3 entries. | [
\{
"model": "claude-opus-4-8"
}
] | +| `max_tokens` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `metadata` | [Optional[components.MessagesRequestMetadata]](../../components/messagesrequestmetadata.mdx) | :heavy_minus_sign: | N/A | | +| `models` | List[*str*] | :heavy_minus_sign: | N/A | | +| `output_config` | [Optional[components.MessagesOutputConfig]](../../components/messagesoutputconfig.mdx) | :heavy_minus_sign: | Configuration for controlling output behavior. Supports the effort parameter and structured output format. | \{
"effort": "medium"
} | +| `plugins` | List[[components.MessagesRequestPlugin](../../components/messagesrequestplugin.mdx)] | :heavy_minus_sign: | Plugins you want to enable for this request, including their settings. | | +| `provider` | [OptionalNullable[components.ProviderPreferences]](../../components/providerpreferences.mdx) | :heavy_minus_sign: | When multiple model providers are available, optionally indicate your routing preference. | \{
"allow_fallbacks": true
} | +| `service_tier` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `session_id` | *Optional[str]* | :heavy_minus_sign: | A unique identifier for grouping related requests (e.g., a conversation or agent workflow). When provided, OpenRouter uses it as the sticky routing key, routing all requests in the session to the same provider to maximize prompt cache hits. Also used for observability grouping. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. | | +| `speed` | [OptionalNullable[components.Speed]](../../components/speed.mdx) | :heavy_minus_sign: | N/A | fast | +| `stop_sequences` | List[*str*] | :heavy_minus_sign: | N/A | | +| `stop_server_tools_when` | List[[components.StopServerToolsWhenCondition](../../components/stopservertoolswhencondition.mdx)] | :heavy_minus_sign: | Stop conditions for the server-tool agent loop. Any condition firing halts the loop (OR logic). When set, this overrides `max_tool_calls`. | [
\{
"step_count": 5,
"type": "step_count_is"
},
\{
"max_cost_in_dollars": 0.5,
"type": "max_cost"
}
] | +| `stream` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `system` | [Optional[components.System]](../../components/system.mdx) | :heavy_minus_sign: | N/A | | +| `temperature` | *Optional[float]* | :heavy_minus_sign: | N/A | | +| `thinking` | [Optional[components.Thinking]](../../components/thinking.mdx) | :heavy_minus_sign: | N/A | | +| `tool_choice` | [Optional[components.ToolChoice]](../../components/toolchoice.mdx) | :heavy_minus_sign: | N/A | | +| `tools` | List[[components.MessagesRequestToolUnion](../../components/messagesrequesttoolunion.mdx)] | :heavy_minus_sign: | N/A | | +| `top_k` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `top_p` | *Optional[float]* | :heavy_minus_sign: | N/A | | +| `trace` | [Optional[components.TraceConfig]](../../components/traceconfig.mdx) | :heavy_minus_sign: | Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. | \{
"trace_id": "trace-abc123",
"trace_name": "my-app-trace"
} | +| `user` | *Optional[str]* | :heavy_minus_sign: | A unique identifier representing your end-user, which helps distinguish between different users of your app. This allows your app to identify specific users in case of abuse reports, preventing your entire app from being affected by the actions of individual users. Maximum of 256 characters. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.CreatePresetFromInferenceResponse](../../components/createpresetfrominferenceresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.ForbiddenResponseError | 403 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.ConflictResponseError | 409 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## create_presets_responses + +Creates a preset (or a new version of an existing one) from an inference request body. Only fields that overlap with the preset config are persisted; other fields (e.g. `messages`, `stream`, `prompt`) are silently ignored. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.presets.create_presets_responses(slug="my-preset", input="Hello!", instructions="You are a helpful assistant.", model="openai/gpt-5.4", service_tier="auto", stream=False) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `slug` | *str* | :heavy_check_mark: | URL-safe slug identifying the preset. Created if it does not exist. | my-preset | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `background` | *OptionalNullable[bool]* | :heavy_minus_sign: | N/A | | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `debug` | [Optional[components.ChatDebugOptions]](../../components/chatdebugoptions.mdx) | :heavy_minus_sign: | Debug options for inspecting request transformations (streaming only) | \{
"echo_upstream_body": true
} | +| `frequency_penalty` | *OptionalNullable[float]* | :heavy_minus_sign: | N/A | | +| `image_config` | Dict[str, [components.ImageConfig](../../components/imageconfig.mdx)] | :heavy_minus_sign: | Provider-specific image configuration options. Keys and values vary by model/provider. See https://openrouter.ai/docs/guides/overview/multimodal/image-generation for more details. | \{
"aspect_ratio": "16:9",
"quality": "high"
} | +| `include` | List[[components.ResponseIncludesEnum](../../components/responseincludesenum.mdx)] | :heavy_minus_sign: | N/A | | +| `input` | [Optional[components.InputsUnion]](../../components/inputsunion.mdx) | :heavy_minus_sign: | Input for a response request - can be a string or array of items | [
\{
"content": "What is the weather today?",
"role": "user"
}
] | +| `instructions` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `max_output_tokens` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | | +| `max_tool_calls` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Metadata key-value pairs for the request. Keys must be ≤64 characters and cannot contain brackets. Values must be ≤512 characters. Maximum 16 pairs allowed. | \{
"session_id": "abc-def-ghi",
"user_id": "123"
} | +| `modalities` | List[[components.OutputModalityEnum](../../components/outputmodalityenum.mdx)] | :heavy_minus_sign: | Output modalities for the response. Supported values are "text" and "image". | [
"text",
"image"
] | +| `model` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `models` | List[*str*] | :heavy_minus_sign: | N/A | | +| `parallel_tool_calls` | *OptionalNullable[bool]* | :heavy_minus_sign: | N/A | | +| `plugins` | List[[components.ResponsesRequestPlugin](../../components/responsesrequestplugin.mdx)] | :heavy_minus_sign: | Plugins you want to enable for this request, including their settings. | | +| `presence_penalty` | *OptionalNullable[float]* | :heavy_minus_sign: | N/A | | +| `previous_response_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `prompt` | [OptionalNullable[components.StoredPromptTemplate]](../../components/storedprompttemplate.mdx) | :heavy_minus_sign: | N/A | \{
"id": "prompt-abc123",
"variables": \{
"name": "John"
}
} | +| `prompt_cache_key` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `provider` | [OptionalNullable[components.ProviderPreferences]](../../components/providerpreferences.mdx) | :heavy_minus_sign: | When multiple model providers are available, optionally indicate your routing preference. | \{
"allow_fallbacks": true
} | +| `reasoning` | [OptionalNullable[components.ReasoningConfig]](../../components/reasoningconfig.mdx) | :heavy_minus_sign: | Configuration for reasoning mode in the response | \{
"enabled": true,
"summary": "auto"
} | +| `safety_identifier` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | +| `service_tier` | [OptionalNullable[components.ResponsesRequestServiceTier]](../../components/responsesrequestservicetier.mdx) | :heavy_minus_sign: | N/A | | +| `session_id` | *Optional[str]* | :heavy_minus_sign: | A unique identifier for grouping related requests (e.g., a conversation or agent workflow). When provided, OpenRouter uses it as the sticky routing key, routing all requests in the session to the same provider to maximize prompt cache hits. Also used for observability grouping. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. | | +| `stop_server_tools_when` | List[[components.StopServerToolsWhenCondition](../../components/stopservertoolswhencondition.mdx)] | :heavy_minus_sign: | Stop conditions for the server-tool agent loop. Any condition firing halts the loop (OR logic). When set, this overrides `max_tool_calls`. | [
\{
"step_count": 5,
"type": "step_count_is"
},
\{
"max_cost_in_dollars": 0.5,
"type": "max_cost"
}
] | +| `stream` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `temperature` | *OptionalNullable[float]* | :heavy_minus_sign: | N/A | | +| `text` | [Optional[components.TextExtendedConfig]](../../components/textextendedconfig.mdx) | :heavy_minus_sign: | Text output configuration including format and verbosity | \{
"format": \{
"type": "text"
}
} | +| `tool_choice` | [Optional[components.OpenAIResponsesToolChoiceUnion]](../../components/openairesponsestoolchoiceunion.mdx) | :heavy_minus_sign: | N/A | auto | +| `tools` | List[[components.ResponsesRequestToolUnion](../../components/responsesrequesttoolunion.mdx)] | :heavy_minus_sign: | N/A | | +| `top_k` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `top_logprobs` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | | +| `top_p` | *OptionalNullable[float]* | :heavy_minus_sign: | N/A | | +| `trace` | [Optional[components.TraceConfig]](../../components/traceconfig.mdx) | :heavy_minus_sign: | Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. | \{
"trace_id": "trace-abc123",
"trace_name": "my-app-trace"
} | +| `truncation` | [OptionalNullable[components.OpenAIResponsesTruncation]](../../components/openairesponsestruncation.mdx) | :heavy_minus_sign: | N/A | auto | +| `user` | *Optional[str]* | :heavy_minus_sign: | A unique identifier representing your end-user, which helps distinguish between different users of your app. This allows your app to identify specific users in case of abuse reports, preventing your entire app from being affected by the actions of individual users. Maximum of 256 characters. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.CreatePresetFromInferenceResponse](../../components/createpresetfrominferenceresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.ForbiddenResponseError | 403 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.ConflictResponseError | 409 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## list_versions + +Lists all versions of a preset, ordered by version number ascending (oldest first). + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.presets.list_versions(slug="my-preset") + + while res is not None: + # Handle items + + res = res.next() + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `slug` | *str* | :heavy_check_mark: | URL-safe slug identifying the preset. | my-preset | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `offset` | *Optional[int]* | :heavy_minus_sign: | Number of records to skip for pagination | 0 | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of records to return (max 100) | 50 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[operations.ListPresetVersionsResponse](../../operations/listpresetversionsresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## get_version + +Retrieves a specific version of a preset by its slug and version number. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.presets.get_version(slug="my-preset", version="1") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `slug` | *str* | :heavy_check_mark: | URL-safe slug identifying the preset. | my-preset | +| `version` | *str* | :heavy_check_mark: | Version number of the preset. | 1 | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.GetPresetVersionResponse](../../components/getpresetversionresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/providers/README.md b/docs/sdks/providers/README.mdx similarity index 90% rename from docs/sdks/providers/README.md rename to docs/sdks/providers/README.mdx index b414ebc8..7571e258 100644 --- a/docs/sdks/providers/README.md +++ b/docs/sdks/providers/README.mdx @@ -1,4 +1,7 @@ -# Providers +--- +title: "Providers" +description: "Provider information endpoints" +--- ## Overview @@ -14,7 +17,6 @@ List all providers ### Example Usage - ```python from openrouter import OpenRouter import os @@ -41,11 +43,11 @@ with OpenRouter( | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[operations.ListProvidersResponse](../../operations/listprovidersresponse.md)** +**[operations.ListProvidersResponse](../../operations/listprovidersresponse.mdx)** ### Errors diff --git a/docs/sdks/rerank/README.mdx b/docs/sdks/rerank/README.mdx new file mode 100644 index 00000000..cd1b341b --- /dev/null +++ b/docs/sdks/rerank/README.mdx @@ -0,0 +1,74 @@ +--- +title: "Rerank" +description: "Rerank endpoints" +--- + +## Overview + +Rerank endpoints + +### Available Operations + +* [rerank](#rerank) - Submit a rerank request + +## rerank + +Submits a rerank request to the rerank router + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.rerank.rerank(documents=[ + "Paris is the capital of France.", + "Berlin is the capital of Germany.", + ], model="cohere/rerank-v3.5", query="What is the capital of France?") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `documents` | List[[operations.Document](../../operations/document.mdx)] | :heavy_check_mark: | The list of documents to rerank. Documents may be plain strings, or structured objects with `text` and/or `image` for multimodal models. | [
"Paris is the capital of France.",
"Berlin is the capital of Germany."
] | +| `model` | *str* | :heavy_check_mark: | The rerank model to use | cohere/rerank-v3.5 | +| `query` | *str* | :heavy_check_mark: | The search query to rerank documents against | What is the capital of France? | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `provider` | [OptionalNullable[components.ProviderPreferences]](../../components/providerpreferences.mdx) | :heavy_minus_sign: | N/A | \{
"allow_fallbacks": true
} | +| `top_n` | *Optional[int]* | :heavy_minus_sign: | Number of most relevant documents to return | 3 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[operations.CreateRerankResponse](../../operations/creatererankresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.PaymentRequiredResponseError | 402 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.TooManyRequestsResponseError | 429 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.BadGatewayResponseError | 502 | application/json | +| errors.ServiceUnavailableResponseError | 503 | application/json | +| errors.EdgeNetworkTimeoutResponseError | 524 | application/json | +| errors.ProviderOverloadedResponseError | 529 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/responses/README.md b/docs/sdks/responses/README.mdx similarity index 89% rename from docs/sdks/responses/README.md rename to docs/sdks/responses/README.mdx index c9601f17..03281f8c 100644 --- a/docs/sdks/responses/README.md +++ b/docs/sdks/responses/README.mdx @@ -1,4 +1,7 @@ -# Beta.Responses +--- +title: "Beta.Responses" +description: "beta.responses endpoints" +--- ## Overview @@ -12,9 +15,8 @@ beta.responses endpoints Creates a streaming or non-streaming response using OpenResponses API format -### Example Usage +### Example Usage: guardrail-blocked - ```python from openrouter import OpenRouter import os @@ -27,7 +29,29 @@ with OpenRouter( api_key=os.getenv("OPENROUTER_API_KEY", ""), ) as open_router: - res = open_router.beta.responses.send(x_open_router_metadata="enabled", input="Tell me a joke", model="openai/gpt-4o", service_tier="auto", stream=False) + res = open_router.beta.responses.send(service_tier="auto", stream=False) + + with res as event_stream: + for event in event_stream: + # handle event + print(event, flush=True) + +``` +### Example Usage: insufficient-permissions + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.beta.responses.send(service_tier="auto", stream=False) with res as event_stream: for event in event_stream: @@ -43,49 +67,49 @@ with OpenRouter( | `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `x_open_router_metadata` | [Optional[components.MetadataLevel]](../../components/metadatalevel.md) | :heavy_minus_sign: | 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. | enabled | +| `x_open_router_metadata` | [Optional[components.MetadataLevel]](../../components/metadatalevel.mdx) | :heavy_minus_sign: | 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. | enabled | | `background` | *OptionalNullable[bool]* | :heavy_minus_sign: | N/A | | -| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../../components/anthropiccachecontroldirective.md) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | {
"type": "ephemeral"
} | -| `debug` | [Optional[components.ChatDebugOptions]](../../components/chatdebugoptions.md) | :heavy_minus_sign: | Debug options for inspecting request transformations (streaming only) | {
"echo_upstream_body": true
} | +| `cache_control` | [Optional[components.AnthropicCacheControlDirective]](../../components/anthropiccachecontroldirective.mdx) | :heavy_minus_sign: | Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. | \{
"type": "ephemeral"
} | +| `debug` | [Optional[components.ChatDebugOptions]](../../components/chatdebugoptions.mdx) | :heavy_minus_sign: | Debug options for inspecting request transformations (streaming only) | \{
"echo_upstream_body": true
} | | `frequency_penalty` | *OptionalNullable[float]* | :heavy_minus_sign: | N/A | | -| `image_config` | Dict[str, [components.ImageConfig](../../components/imageconfig.md)] | :heavy_minus_sign: | Provider-specific image configuration options. Keys and values vary by model/provider. See https://openrouter.ai/docs/guides/overview/multimodal/image-generation for more details. | {
"aspect_ratio": "16:9",
"quality": "high"
} | -| `include` | List[[components.ResponseIncludesEnum](../../components/responseincludesenum.md)] | :heavy_minus_sign: | N/A | | -| `input` | [Optional[components.InputsUnion]](../../components/inputsunion.md) | :heavy_minus_sign: | Input for a response request - can be a string or array of items | [
{
"content": "What is the weather today?",
"role": "user"
}
] | +| `image_config` | Dict[str, [components.ImageConfig](../../components/imageconfig.mdx)] | :heavy_minus_sign: | Provider-specific image configuration options. Keys and values vary by model/provider. See https://openrouter.ai/docs/guides/overview/multimodal/image-generation for more details. | \{
"aspect_ratio": "16:9",
"quality": "high"
} | +| `include` | List[[components.ResponseIncludesEnum](../../components/responseincludesenum.mdx)] | :heavy_minus_sign: | N/A | | +| `input` | [Optional[components.InputsUnion]](../../components/inputsunion.mdx) | :heavy_minus_sign: | Input for a response request - can be a string or array of items | [
\{
"content": "What is the weather today?",
"role": "user"
}
] | | `instructions` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | | `max_output_tokens` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | | | `max_tool_calls` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | | -| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Metadata key-value pairs for the request. Keys must be ≤64 characters and cannot contain brackets. Values must be ≤512 characters. Maximum 16 pairs allowed. | {
"session_id": "abc-def-ghi",
"user_id": "123"
} | -| `modalities` | List[[components.OutputModalityEnum](../../components/outputmodalityenum.md)] | :heavy_minus_sign: | Output modalities for the response. Supported values are "text" and "image". | [
"text",
"image"
] | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Metadata key-value pairs for the request. Keys must be ≤64 characters and cannot contain brackets. Values must be ≤512 characters. Maximum 16 pairs allowed. | \{
"session_id": "abc-def-ghi",
"user_id": "123"
} | +| `modalities` | List[[components.OutputModalityEnum](../../components/outputmodalityenum.mdx)] | :heavy_minus_sign: | Output modalities for the response. Supported values are "text" and "image". | [
"text",
"image"
] | | `model` | *Optional[str]* | :heavy_minus_sign: | N/A | | | `models` | List[*str*] | :heavy_minus_sign: | N/A | | | `parallel_tool_calls` | *OptionalNullable[bool]* | :heavy_minus_sign: | N/A | | -| `plugins` | List[[components.ResponsesRequestPlugin](../../components/responsesrequestplugin.md)] | :heavy_minus_sign: | Plugins you want to enable for this request, including their settings. | | +| `plugins` | List[[components.ResponsesRequestPlugin](../../components/responsesrequestplugin.mdx)] | :heavy_minus_sign: | Plugins you want to enable for this request, including their settings. | | | `presence_penalty` | *OptionalNullable[float]* | :heavy_minus_sign: | N/A | | | `previous_response_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | -| `prompt` | [OptionalNullable[components.StoredPromptTemplate]](../../components/storedprompttemplate.md) | :heavy_minus_sign: | N/A | {
"id": "prompt-abc123",
"variables": {
"name": "John"
}
} | +| `prompt` | [OptionalNullable[components.StoredPromptTemplate]](../../components/storedprompttemplate.mdx) | :heavy_minus_sign: | N/A | \{
"id": "prompt-abc123",
"variables": \{
"name": "John"
}
} | | `prompt_cache_key` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | -| `provider` | [OptionalNullable[components.ProviderPreferences]](../../components/providerpreferences.md) | :heavy_minus_sign: | When multiple model providers are available, optionally indicate your routing preference. | {
"allow_fallbacks": true
} | -| `reasoning` | [OptionalNullable[components.ReasoningConfig]](../../components/reasoningconfig.md) | :heavy_minus_sign: | Configuration for reasoning mode in the response | {
"effort": "medium",
"summary": "auto"
} | +| `provider` | [OptionalNullable[components.ProviderPreferences]](../../components/providerpreferences.mdx) | :heavy_minus_sign: | When multiple model providers are available, optionally indicate your routing preference. | \{
"allow_fallbacks": true
} | +| `reasoning` | [OptionalNullable[components.ReasoningConfig]](../../components/reasoningconfig.mdx) | :heavy_minus_sign: | Configuration for reasoning mode in the response | \{
"enabled": true,
"summary": "auto"
} | | `safety_identifier` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | -| `service_tier` | [OptionalNullable[components.ResponsesRequestServiceTier]](../../components/responsesrequestservicetier.md) | :heavy_minus_sign: | N/A | | +| `service_tier` | [OptionalNullable[components.ResponsesRequestServiceTier]](../../components/responsesrequestservicetier.mdx) | :heavy_minus_sign: | N/A | | | `session_id` | *Optional[str]* | :heavy_minus_sign: | A unique identifier for grouping related requests (e.g., a conversation or agent workflow). When provided, OpenRouter uses it as the sticky routing key, routing all requests in the session to the same provider to maximize prompt cache hits. Also used for observability grouping. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. | | -| `stop_server_tools_when` | List[[components.StopServerToolsWhenCondition](../../components/stopservertoolswhencondition.md)] | :heavy_minus_sign: | Stop conditions for the server-tool agent loop. Any condition firing halts the loop (OR logic). When set, this overrides `max_tool_calls`. | [
{
"step_count": 5,
"type": "step_count_is"
},
{
"max_cost_in_dollars": 0.5,
"type": "max_cost"
}
] | +| `stop_server_tools_when` | List[[components.StopServerToolsWhenCondition](../../components/stopservertoolswhencondition.mdx)] | :heavy_minus_sign: | Stop conditions for the server-tool agent loop. Any condition firing halts the loop (OR logic). When set, this overrides `max_tool_calls`. | [
\{
"step_count": 5,
"type": "step_count_is"
},
\{
"max_cost_in_dollars": 0.5,
"type": "max_cost"
}
] | | `stream` | *Optional[bool]* | :heavy_minus_sign: | N/A | | | `temperature` | *OptionalNullable[float]* | :heavy_minus_sign: | N/A | | -| `text` | [Optional[components.TextExtendedConfig]](../../components/textextendedconfig.md) | :heavy_minus_sign: | Text output configuration including format and verbosity | {
"format": {
"type": "text"
},
"verbosity": "medium"
} | -| `tool_choice` | [Optional[components.OpenAIResponsesToolChoiceUnion]](../../components/openairesponsestoolchoiceunion.md) | :heavy_minus_sign: | N/A | auto | -| `tools` | List[[components.ResponsesRequestToolUnion](../../components/responsesrequesttoolunion.md)] | :heavy_minus_sign: | N/A | | +| `text` | [Optional[components.TextExtendedConfig]](../../components/textextendedconfig.mdx) | :heavy_minus_sign: | Text output configuration including format and verbosity | \{
"format": \{
"type": "text"
}
} | +| `tool_choice` | [Optional[components.OpenAIResponsesToolChoiceUnion]](../../components/openairesponsestoolchoiceunion.mdx) | :heavy_minus_sign: | N/A | auto | +| `tools` | List[[components.ResponsesRequestToolUnion](../../components/responsesrequesttoolunion.mdx)] | :heavy_minus_sign: | N/A | | | `top_k` | *Optional[int]* | :heavy_minus_sign: | N/A | | | `top_logprobs` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | | | `top_p` | *OptionalNullable[float]* | :heavy_minus_sign: | N/A | | -| `trace` | [Optional[components.TraceConfig]](../../components/traceconfig.md) | :heavy_minus_sign: | Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. | {
"trace_id": "trace-abc123",
"trace_name": "my-app-trace"
} | -| `truncation` | [OptionalNullable[components.OpenAIResponsesTruncation]](../../components/openairesponsestruncation.md) | :heavy_minus_sign: | N/A | auto | +| `trace` | [Optional[components.TraceConfig]](../../components/traceconfig.mdx) | :heavy_minus_sign: | Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. | \{
"trace_id": "trace-abc123",
"trace_name": "my-app-trace"
} | +| `truncation` | [OptionalNullable[components.OpenAIResponsesTruncation]](../../components/openairesponsestruncation.mdx) | :heavy_minus_sign: | N/A | auto | | `user` | *Optional[str]* | :heavy_minus_sign: | A unique identifier representing your end-user, which helps distinguish between different users of your app. This allows your app to identify specific users in case of abuse reports, preventing your entire app from being affected by the actions of individual users. Maximum of 256 characters. | | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[operations.CreateResponsesResponse](../../operations/createresponsesresponse.md)** +**[operations.CreateResponsesResponse](../../operations/createresponsesresponse.mdx)** ### Errors diff --git a/docs/sdks/stt/README.mdx b/docs/sdks/stt/README.mdx new file mode 100644 index 00000000..a5097c97 --- /dev/null +++ b/docs/sdks/stt/README.mdx @@ -0,0 +1,74 @@ +--- +title: "Stt" +description: "Speech-to-text endpoints" +--- + +## Overview + +Speech-to-text endpoints + +### Available Operations + +* [create_transcription](#create_transcription) - Create transcription + +## create_transcription + +Transcribes audio into text. Accepts base64-encoded audio input and returns the transcribed text. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.stt.create_transcription(input_audio={ + "data": "UklGRiQA...", + "format_": "wav", + }, model="openai/whisper-large-v3", language="en") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `input_audio` | [components.STTInputAudio](../../components/sttinputaudio.mdx) | :heavy_check_mark: | Base64-encoded audio to transcribe | \{
"data": "UklGRiQA...",
"format": "wav"
} | +| `model` | *str* | :heavy_check_mark: | STT model identifier | openai/whisper-large-v3 | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `language` | *Optional[str]* | :heavy_minus_sign: | ISO-639-1 language code (e.g., "en", "ja"). Auto-detected if omitted. | en | +| `provider` | [Optional[components.STTRequestProvider]](../../components/sttrequestprovider.mdx) | :heavy_minus_sign: | Provider-specific passthrough configuration | | +| `temperature` | *Optional[float]* | :heavy_minus_sign: | Sampling temperature for transcription | 0 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.STTResponse](../../components/sttresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.PaymentRequiredResponseError | 402 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.TooManyRequestsResponseError | 429 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.BadGatewayResponseError | 502 | application/json | +| errors.ServiceUnavailableResponseError | 503 | application/json | +| errors.EdgeNetworkTimeoutResponseError | 524 | application/json | +| errors.ProviderOverloadedResponseError | 529 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/tts/README.mdx b/docs/sdks/tts/README.mdx new file mode 100644 index 00000000..ece7fa92 --- /dev/null +++ b/docs/sdks/tts/README.mdx @@ -0,0 +1,72 @@ +--- +title: "Tts" +description: "Text-to-speech endpoints" +--- + +## Overview + +Text-to-speech endpoints + +### Available Operations + +* [create_speech](#create_speech) - Create speech + +## create_speech + +Synthesizes audio from the input text. Returns a raw audio bytestream in the requested format (e.g. mp3, pcm, wav). + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.tts.create_speech(input="Hello world", model="elevenlabs/eleven-turbo-v2", voice="alloy", response_format="pcm", speed=1) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `input` | *str* | :heavy_check_mark: | Text to synthesize | Hello world | +| `model` | *str* | :heavy_check_mark: | TTS model identifier | elevenlabs/eleven-turbo-v2 | +| `voice` | *str* | :heavy_check_mark: | Voice identifier (provider-specific). | alloy | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `provider` | [Optional[components.SpeechRequestProvider]](../../components/speechrequestprovider.mdx) | :heavy_minus_sign: | Provider-specific passthrough configuration | | +| `response_format` | [Optional[components.ResponseFormatEnum]](../../components/responseformatenum.mdx) | :heavy_minus_sign: | Audio output format | pcm | +| `speed` | *Optional[float]* | :heavy_minus_sign: | Playback speed multiplier. Only used by models that support it (e.g. OpenAI TTS). Ignored by other providers. | 1 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[httpx.Response](../../models/.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.PaymentRequiredResponseError | 402 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.TooManyRequestsResponseError | 429 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.BadGatewayResponseError | 502 | application/json | +| errors.ServiceUnavailableResponseError | 503 | application/json | +| errors.EdgeNetworkTimeoutResponseError | 524 | application/json | +| errors.ProviderOverloadedResponseError | 529 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/videogeneration/README.mdx b/docs/sdks/videogeneration/README.mdx new file mode 100644 index 00000000..429ca7da --- /dev/null +++ b/docs/sdks/videogeneration/README.mdx @@ -0,0 +1,222 @@ +--- +title: "VideoGeneration" +description: "Video Generation endpoints" +--- + +## Overview + +Video Generation endpoints + +### Available Operations + +* [generate](#generate) - Submit a video generation request +* [get_generation](#get_generation) - Poll video generation status +* [get_video_content](#get_video_content) - Download generated video content +* [list_videos_models](#list_videos_models) - List all video generation models + +## generate + +Submits a video generation request and returns a polling URL to check status + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.video_generation.generate(model="google/veo-3.1", prompt="A serene mountain landscape at sunset", aspect_ratio="16:9", duration=8, resolution="720p") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `model` | *str* | :heavy_check_mark: | N/A | | +| `prompt` | *str* | :heavy_check_mark: | N/A | | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `aspect_ratio` | [Optional[components.VideoGenerationRequestAspectRatio]](../../components/videogenerationrequestaspectratio.mdx) | :heavy_minus_sign: | Aspect ratio of the generated video | 16:9 | +| `callback_url` | *Optional[str]* | :heavy_minus_sign: | URL to receive a webhook notification when the video generation job completes. Overrides the workspace-level default callback URL if set. Must be HTTPS. | https://example.com/webhook | +| `duration` | *Optional[int]* | :heavy_minus_sign: | Duration of the generated video in seconds | 8 | +| `frame_images` | List[[components.FrameImage](../../components/frameimage.mdx)] | :heavy_minus_sign: | Images to use as the first and/or last frame of the generated video. Each image must specify a frame_type of first_frame or last_frame. | | +| `generate_audio` | *Optional[bool]* | :heavy_minus_sign: | Whether to generate audio alongside the video. Defaults to the endpoint's generate_audio capability flag, false if not set. | true | +| `input_references` | List[[components.InputReference](../../components/inputreference.mdx)] | :heavy_minus_sign: | Reference assets to guide video generation. Accepts image, audio, and video references. Audio and video references are only honored by providers that support them (currently BytePlus Seedance 2.0); other providers use image references and ignore the rest. | | +| `provider` | [Optional[components.VideoGenerationRequestProvider]](../../components/videogenerationrequestprovider.mdx) | :heavy_minus_sign: | Provider-specific passthrough configuration | | +| `resolution` | [Optional[components.VideoGenerationRequestResolution]](../../components/videogenerationrequestresolution.mdx) | :heavy_minus_sign: | Resolution of the generated video | 720p | +| `seed` | *Optional[int]* | :heavy_minus_sign: | If specified, the generation will sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed for all providers. | | +| `size` | *Optional[str]* | :heavy_minus_sign: | Exact pixel dimensions of the generated video in "WIDTHxHEIGHT" format (e.g. "1280x720"). Interchangeable with resolution + aspect_ratio. | 1280x720 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.VideoGenerationResponse](../../components/videogenerationresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.PaymentRequiredResponseError | 402 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.TooManyRequestsResponseError | 429 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## get_generation + +Returns job status and content URLs when completed + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.video_generation.get_generation(job_id="job-abc123") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `job_id` | *str* | :heavy_check_mark: | N/A | job-abc123 | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.VideoGenerationResponse](../../components/videogenerationresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## get_video_content + +Streams the generated video content from the upstream provider + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.video_generation.get_video_content(job_id="job-abc123", index=0) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `job_id` | *str* | :heavy_check_mark: | N/A | job-abc123 | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `index` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | 0 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[httpx.Response](../../models/.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.BadGatewayResponseError | 502 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## list_videos_models + +Returns a list of all available video generation models and their properties + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.video_generation.list_videos_models() + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[components.VideoModelsListResponse](../../components/videomodelslistresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/workspaces/README.mdx b/docs/sdks/workspaces/README.mdx new file mode 100644 index 00000000..cf4cc041 --- /dev/null +++ b/docs/sdks/workspaces/README.mdx @@ -0,0 +1,545 @@ +--- +title: "Workspaces" +description: "Workspaces endpoints" +--- + +## Overview + +Workspaces endpoints + +### Available Operations + +* [list](#list) - List workspaces +* [create](#create) - Create a workspace +* [delete](#delete) - Delete a workspace +* [get](#get) - Get a workspace +* [update](#update) - Update a workspace +* [list_budgets](#list_budgets) - List workspace budgets +* [delete_budget](#delete_budget) - Delete a workspace budget +* [set_budget](#set_budget) - Create or update a workspace budget +* [bulk_add_members](#bulk_add_members) - Bulk add members to a workspace +* [bulk_remove_members](#bulk_remove_members) - Bulk remove members from a workspace + +## list + +List all workspaces for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) required. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.workspaces.list() + + while res is not None: + # Handle items + + res = res.next() + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `offset` | *Optional[int]* | :heavy_minus_sign: | Number of records to skip for pagination | 0 | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Maximum number of records to return (max 100) | 50 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[operations.ListWorkspacesResponse](../../operations/listworkspacesresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## create + +Create a new workspace for the authenticated user. [Management key](/docs/guides/overview/auth/management-api-keys) required. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.workspaces.create(name="Production", slug="production", default_image_model="openai/dall-e-3", default_provider_sort="price", default_text_model="openai/gpt-4o", description="Production environment workspace") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` | *str* | :heavy_check_mark: | Name for the new workspace | Production | +| `slug` | *str* | :heavy_check_mark: | URL-friendly slug (lowercase alphanumeric segments separated by single hyphens, no leading/trailing hyphens) | production | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `default_image_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default image model for this workspace | openai/dall-e-3 | +| `default_provider_sort` | *OptionalNullable[str]* | :heavy_minus_sign: | Default provider sort preference (price, throughput, latency, exacto) | price | +| `default_text_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default text model for this workspace | openai/gpt-4o | +| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | Description of the workspace | Production environment workspace | +| `io_logging_api_key_ids` | List[*int*] | :heavy_minus_sign: | Optional array of API key IDs to filter I/O logging | null | +| `io_logging_sampling_rate` | *Optional[float]* | :heavy_minus_sign: | Sampling rate for I/O logging (0.0001-1) | 1 | +| `is_data_discount_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether data discount logging is enabled | true | +| `is_observability_broadcast_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether broadcast is enabled | false | +| `is_observability_io_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether private logging is enabled | false | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.CreateWorkspaceResponse](../../components/createworkspaceresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.ForbiddenResponseError | 403 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## delete + +Delete an existing workspace. The default workspace cannot be deleted. Workspaces with active API keys cannot be deleted; remove the keys first. [Management key](/docs/guides/overview/auth/management-api-keys) required. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.workspaces.delete(id="production") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | The workspace ID (UUID) or slug | production | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.DeleteWorkspaceResponse](../../components/deleteworkspaceresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.ForbiddenResponseError | 403 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## get + +Get a single workspace by ID or slug. [Management key](/docs/guides/overview/auth/management-api-keys) required. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.workspaces.get(id="production") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | The workspace ID (UUID) or slug | production | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.GetWorkspaceResponse](../../components/getworkspaceresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## update + +Update an existing workspace by ID or slug. [Management key](/docs/guides/overview/auth/management-api-keys) required. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.workspaces.update(id="production", name="Updated Workspace", slug="updated-workspace") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | The workspace ID (UUID) or slug | production | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `default_image_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default image model for this workspace | openai/dall-e-3 | +| `default_provider_sort` | *OptionalNullable[str]* | :heavy_minus_sign: | Default provider sort preference (price, throughput, latency, exacto) | price | +| `default_text_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default text model for this workspace | openai/gpt-4o | +| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | New description for the workspace | Updated description | +| `io_logging_api_key_ids` | List[*int*] | :heavy_minus_sign: | Optional array of API key IDs to filter I/O logging | null | +| `io_logging_sampling_rate` | *Optional[float]* | :heavy_minus_sign: | Sampling rate for I/O logging (0.0001-1) | 1 | +| `is_data_discount_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether data discount logging is enabled | true | +| `is_observability_broadcast_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether broadcast is enabled | false | +| `is_observability_io_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether private logging is enabled | false | +| `name` | *Optional[str]* | :heavy_minus_sign: | New name for the workspace | Updated Workspace | +| `slug` | *Optional[str]* | :heavy_minus_sign: | New URL-friendly slug (lowercase alphanumeric segments separated by single hyphens, no leading/trailing hyphens) | updated-workspace | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.UpdateWorkspaceResponse](../../components/updateworkspaceresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.ForbiddenResponseError | 403 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## list_budgets + +List all budgets configured for a workspace. [Management key](/docs/guides/overview/auth/management-api-keys) required. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.workspaces.list_budgets(id="production") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | The workspace ID (UUID) or slug | production | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.ListWorkspaceBudgetsResponse](../../components/listworkspacebudgetsresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## delete_budget + +Remove the budget for a given interval. [Management key](/docs/guides/overview/auth/management-api-keys) required. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.workspaces.delete_budget(id="production", interval="monthly") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | The workspace ID (UUID) or slug | production | +| `interval` | [components.WorkspaceBudgetInterval](../../components/workspacebudgetinterval.mdx) | :heavy_check_mark: | Budget reset interval. Use "lifetime" for a one-time budget that never resets. | monthly | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.DeleteWorkspaceBudgetResponse](../../components/deleteworkspacebudgetresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## set_budget + +Create or update the budget for a given interval. Budget limits must strictly decrease as the interval narrows (lifetime > monthly > weekly > daily). [Management key](/docs/guides/overview/auth/management-api-keys) required. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.workspaces.set_budget(id="production", interval="monthly", limit_usd=100) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | The workspace ID (UUID) or slug | production | +| `interval` | [components.WorkspaceBudgetInterval](../../components/workspacebudgetinterval.mdx) | :heavy_check_mark: | Budget reset interval. Use "lifetime" for a one-time budget that never resets. | monthly | +| `limit_usd` | *float* | :heavy_check_mark: | Spending limit in USD. Must be greater than 0. | 100 | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.UpsertWorkspaceBudgetResponse](../../components/upsertworkspacebudgetresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## bulk_add_members + +Add multiple organization members to a workspace. Members are assigned the same role they hold in the organization. [Management key](/docs/guides/overview/auth/management-api-keys) required. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.workspaces.bulk_add_members(id="production", user_ids=[ + "user_abc123", + "user_def456", + ]) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | The workspace ID (UUID) or slug | production | +| `user_ids` | List[*str*] | :heavy_check_mark: | List of user IDs to add to the workspace. Members are assigned the same role they hold in the organization. | [
"user_abc123",
"user_def456"
] | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.BulkAddWorkspaceMembersResponse](../../components/bulkaddworkspacemembersresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.ForbiddenResponseError | 403 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | + +## bulk_remove_members + +Remove multiple members from a workspace. Members with active API keys in the workspace cannot be removed. [Management key](/docs/guides/overview/auth/management-api-keys) required. + +### Example Usage + +```python +from openrouter import OpenRouter +import os + + +with OpenRouter( + http_referer="", + x_open_router_title="", + x_open_router_categories="", + api_key=os.getenv("OPENROUTER_API_KEY", ""), +) as open_router: + + res = open_router.workspaces.bulk_remove_members(id="production", user_ids=[ + "user_abc123", + "user_def456", + ]) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | The workspace ID (UUID) or slug | production | +| `user_ids` | List[*str*] | :heavy_check_mark: | List of user IDs to remove from the workspace | [
"user_abc123",
"user_def456"
] | +| `http_referer` | *Optional[str]* | :heavy_minus_sign: | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | +| `x_open_router_title` | *Optional[str]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | +| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[components.BulkRemoveWorkspaceMembersResponse](../../components/bulkremoveworkspacemembersresponse.mdx)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | +| errors.BadRequestResponseError | 400 | application/json | +| errors.UnauthorizedResponseError | 401 | application/json | +| errors.ForbiddenResponseError | 403 | application/json | +| errors.NotFoundResponseError | 404 | application/json | +| errors.InternalServerResponseError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 2c73ae56..8064de80 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,15 +1,15 @@ [project] name = "openrouter" -version = "0.10.8" +version = "0.11.0" description = "Official Python Client SDK for OpenRouter." authors = [{ name = "OpenRouter" },] readme = "README-PYPI.md" -requires-python = ">=3.9.2" +requires-python = ">=3.10" dependencies = [ "httpcore >=1.0.9", "httpx >=0.28.1", "jsonpath-python >=1.0.6", - "pydantic >=2.11.2", + "pydantic >=2.11.2,<2.13", ] urls.repository = "https://github.com/OpenRouterTeam/python-sdk.git" license = { text = "Apache-2.0" } diff --git a/src/openrouter/_hooks/types.py b/src/openrouter/_hooks/types.py index 07ace032..86713cfe 100644 --- a/src/openrouter/_hooks/types.py +++ b/src/openrouter/_hooks/types.py @@ -3,7 +3,7 @@ from abc import ABC, abstractmethod import httpx from openrouter.sdkconfiguration import SDKConfiguration -from typing import Any, Callable, List, Optional, Tuple, Union +from typing import Any, Callable, Dict, List, Optional, Tuple, Union class HookContext: @@ -12,6 +12,8 @@ class HookContext: operation_id: str oauth2_scopes: Optional[List[str]] = None security_source: Optional[Union[Any, Callable[[], Any]]] = None + tags: Optional[List[str]] = None + extensions: Optional[Dict[str, Any]] = None def __init__( self, @@ -20,12 +22,16 @@ def __init__( operation_id: str, oauth2_scopes: Optional[List[str]], security_source: Optional[Union[Any, Callable[[], Any]]], + tags: Optional[List[str]], + extensions: Optional[Dict[str, Any]], ): self.config = config self.base_url = base_url self.operation_id = operation_id self.oauth2_scopes = oauth2_scopes self.security_source = security_source + self.tags = tags + self.extensions = extensions class BeforeRequestContext(HookContext): @@ -36,6 +42,8 @@ def __init__(self, hook_ctx: HookContext): hook_ctx.operation_id, hook_ctx.oauth2_scopes, hook_ctx.security_source, + hook_ctx.tags, + hook_ctx.extensions, ) @@ -47,6 +55,8 @@ def __init__(self, hook_ctx: HookContext): hook_ctx.operation_id, hook_ctx.oauth2_scopes, hook_ctx.security_source, + hook_ctx.tags, + hook_ctx.extensions, ) @@ -58,6 +68,8 @@ def __init__(self, hook_ctx: HookContext): hook_ctx.operation_id, hook_ctx.oauth2_scopes, hook_ctx.security_source, + hook_ctx.tags, + hook_ctx.extensions, ) diff --git a/src/openrouter/_version.py b/src/openrouter/_version.py index ae046a12..ec5d51ee 100644 --- a/src/openrouter/_version.py +++ b/src/openrouter/_version.py @@ -3,10 +3,10 @@ import importlib.metadata __title__: str = "openrouter" -__version__: str = "0.10.8" +__version__: str = "0.11.0" __openapi_doc_version__: str = "1.0.0" -__gen_version__: str = "2.788.4" -__user_agent__: str = "speakeasy-sdk/python 0.10.8 2.788.4 1.0.0 openrouter" +__gen_version__: str = "2.914.0" +__user_agent__: str = "speakeasy-sdk/python 0.11.0 2.914.0 1.0.0 openrouter" try: if __package__ is not None: diff --git a/src/openrouter/analytics.py b/src/openrouter/analytics.py index ea004eaf..ddb44a12 100644 --- a/src/openrouter/analytics.py +++ b/src/openrouter/analytics.py @@ -107,9 +107,11 @@ def get_user_activity( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Analytics"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -249,9 +251,11 @@ async def get_user_activity_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Analytics"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/openrouter/api_keys.py b/src/openrouter/api_keys.py index 6c2cdf75..76eafbc6 100644 --- a/src/openrouter/api_keys.py +++ b/src/openrouter/api_keys.py @@ -99,9 +99,11 @@ def get_current_key_metadata( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["API Keys"], + extensions=None, ), request=req, - error_status_codes=["401", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -217,9 +219,11 @@ async def get_current_key_metadata_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["API Keys"], + extensions=None, ), request=req, - error_status_codes=["401", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -344,9 +348,11 @@ def list( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["API Keys"], + extensions=None, ), request=req, - error_status_codes=["401", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -476,9 +482,11 @@ async def list_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["API Keys"], + extensions=None, ), request=req, - error_status_codes=["401", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -629,9 +637,11 @@ def create( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["API Keys"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -792,9 +802,11 @@ async def create_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["API Keys"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -928,9 +940,11 @@ def delete( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["API Keys"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1059,9 +1073,11 @@ async def delete_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["API Keys"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1190,9 +1206,11 @@ def get( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["API Keys"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1321,9 +1339,11 @@ async def get_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["API Keys"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1476,9 +1496,11 @@ def update( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["API Keys"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1636,9 +1658,11 @@ async def update_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["API Keys"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/openrouter/basesdk.py b/src/openrouter/basesdk.py index fcffdcc6..7a562e21 100644 --- a/src/openrouter/basesdk.py +++ b/src/openrouter/basesdk.py @@ -7,8 +7,14 @@ AfterErrorContext, AfterSuccessContext, BeforeRequestContext, + HookContext, +) +from openrouter.utils import ( + RetryConfig, + SerializedRequestBody, + get_body_content, + run_sync_in_thread, ) -from openrouter.utils import RetryConfig, SerializedRequestBody, get_body_content from typing import Callable, List, Mapping, Optional, Tuple from urllib.parse import parse_qs, urlparse @@ -61,6 +67,7 @@ def _build_request_async( url_override: Optional[str] = None, http_headers: Optional[Mapping[str, str]] = None, allow_empty_value: Optional[List[str]] = None, + allowed_fields: Optional[List[str]] = None, ) -> httpx.Request: client = self.sdk_configuration.async_client return self._build_request_with_client( @@ -82,6 +89,7 @@ def _build_request_async( url_override, http_headers, allow_empty_value, + allowed_fields, ) def _build_request( @@ -105,6 +113,7 @@ def _build_request( url_override: Optional[str] = None, http_headers: Optional[Mapping[str, str]] = None, allow_empty_value: Optional[List[str]] = None, + allowed_fields: Optional[List[str]] = None, ) -> httpx.Request: client = self.sdk_configuration.client return self._build_request_with_client( @@ -126,6 +135,7 @@ def _build_request( url_override, http_headers, allow_empty_value, + allowed_fields, ) def _build_request_with_client( @@ -150,6 +160,7 @@ def _build_request_with_client( url_override: Optional[str] = None, http_headers: Optional[Mapping[str, str]] = None, allow_empty_value: Optional[List[str]] = None, + allowed_fields: Optional[List[str]] = None, ) -> httpx.Request: query_params = {} @@ -183,7 +194,9 @@ def _build_request_with_client( security = security() security = utils.get_security_from_env(security, components.Security) if security is not None: - security_headers, security_query_params = utils.get_security(security) + security_headers, security_query_params = utils.get_security( + security, allowed_fields + ) headers = {**headers, **security_headers} query_params = {**query_params, **security_query_params} @@ -220,15 +233,15 @@ def _build_request_with_client( data=serialized_request_body.data, files=serialized_request_body.files, headers=headers, - timeout=timeout, + timeout=timeout if timeout is not None else httpx.USE_CLIENT_DEFAULT, ) def do_request( self, - hook_ctx, - request, - error_status_codes, - stream=False, + hook_ctx: HookContext, + request: httpx.Request, + is_error_status_code: Callable[[int], bool], + stream: bool = False, retry_config: Optional[Tuple[RetryConfig, List[str]]] = None, ) -> httpx.Response: client = self.sdk_configuration.client @@ -240,6 +253,8 @@ def do(): http_res = None try: req = hooks.before_request(BeforeRequestContext(hook_ctx), request) + if "timeout" in request.extensions and "timeout" not in req.extensions: + req.extensions["timeout"] = request.extensions["timeout"] logger.debug( "Request:\nMethod: %s\nURL: %s\nHeaders: %s\nBody: %s", req.method, @@ -270,21 +285,6 @@ def do(): "" if stream else http_res.text, ) - if utils.match_status_codes(error_status_codes, http_res.status_code): - result, err = hooks.after_error( - AfterErrorContext(hook_ctx), http_res, None - ) - if err is not None: - logger.debug("Request Exception", exc_info=True) - raise err - if result is not None: - http_res = result - else: - logger.debug("Raising unexpected SDK error") - raise errors.OpenRouterDefaultError( - "Unexpected error occurred", http_res - ) - return http_res if retry_config is not None: @@ -292,17 +292,29 @@ def do(): else: http_res = do() - if not utils.match_status_codes(error_status_codes, http_res.status_code): + if is_error_status_code(http_res.status_code): + result, err = hooks.after_error(AfterErrorContext(hook_ctx), http_res, None) + if err is not None: + logger.debug("Request Exception", exc_info=True) + raise err + if result is not None: + http_res = result + else: + logger.debug("Raising unexpected SDK error") + raise errors.OpenRouterDefaultError( + "Unexpected error occurred", http_res + ) + else: http_res = hooks.after_success(AfterSuccessContext(hook_ctx), http_res) return http_res async def do_request_async( self, - hook_ctx, - request, - error_status_codes, - stream=False, + hook_ctx: HookContext, + request: httpx.Request, + is_error_status_code: Callable[[int], bool], + stream: bool = False, retry_config: Optional[Tuple[RetryConfig, List[str]]] = None, ) -> httpx.Response: client = self.sdk_configuration.async_client @@ -313,7 +325,12 @@ async def do_request_async( async def do(): http_res = None try: - req = hooks.before_request(BeforeRequestContext(hook_ctx), request) + req = await run_sync_in_thread( + hooks.before_request, BeforeRequestContext(hook_ctx), request + ) + + if "timeout" in request.extensions and "timeout" not in req.extensions: + req.extensions["timeout"] = request.extensions["timeout"] logger.debug( "Request:\nMethod: %s\nURL: %s\nHeaders: %s\nBody: %s", req.method, @@ -327,7 +344,10 @@ async def do(): http_res = await client.send(req, stream=stream) except Exception as e: - _, e = hooks.after_error(AfterErrorContext(hook_ctx), None, e) + _, e = await run_sync_in_thread( + hooks.after_error, AfterErrorContext(hook_ctx), None, e + ) + if e is not None: logger.debug("Request Exception", exc_info=True) raise e @@ -344,21 +364,6 @@ async def do(): "" if stream else http_res.text, ) - if utils.match_status_codes(error_status_codes, http_res.status_code): - result, err = hooks.after_error( - AfterErrorContext(hook_ctx), http_res, None - ) - if err is not None: - logger.debug("Request Exception", exc_info=True) - raise err - if result is not None: - http_res = result - else: - logger.debug("Raising unexpected SDK error") - raise errors.OpenRouterDefaultError( - "Unexpected error occurred", http_res - ) - return http_res if retry_config is not None: @@ -368,7 +373,24 @@ async def do(): else: http_res = await do() - if not utils.match_status_codes(error_status_codes, http_res.status_code): - http_res = hooks.after_success(AfterSuccessContext(hook_ctx), http_res) + if is_error_status_code(http_res.status_code): + result, err = await run_sync_in_thread( + hooks.after_error, AfterErrorContext(hook_ctx), http_res, None + ) + + if err is not None: + logger.debug("Request Exception", exc_info=True) + raise err + if result is not None: + http_res = result + else: + logger.debug("Raising unexpected SDK error") + raise errors.OpenRouterDefaultError( + "Unexpected error occurred", http_res + ) + else: + http_res = await run_sync_in_thread( + hooks.after_success, AfterSuccessContext(hook_ctx), http_res + ) return http_res diff --git a/src/openrouter/benchmarks.py b/src/openrouter/benchmarks.py index d29a6859..1b503c89 100644 --- a/src/openrouter/benchmarks.py +++ b/src/openrouter/benchmarks.py @@ -113,9 +113,11 @@ def get_benchmarks( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Benchmarks"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -258,9 +260,11 @@ async def get_benchmarks_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Benchmarks"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/openrouter/beta_analytics.py b/src/openrouter/beta_analytics.py index 9db10e86..bcf5829e 100644 --- a/src/openrouter/beta_analytics.py +++ b/src/openrouter/beta_analytics.py @@ -6,7 +6,7 @@ from openrouter.types import OptionalNullable, UNSET from openrouter.utils import get_security_from_env from openrouter.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, List, Mapping, Optional, Union +from typing import Any, Iterable, List, Mapping, Optional, Union class BetaAnalytics(BaseSDK): @@ -98,9 +98,11 @@ def get_analytics_meta( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["beta.Analytics"], + extensions=None, ), request=req, - error_status_codes=["401", "403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -223,9 +225,11 @@ async def get_analytics_meta_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["beta.Analytics"], + extensions=None, ), request=req, - error_status_codes=["401", "403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -265,13 +269,13 @@ async def get_analytics_meta_async( def query_analytics( self, *, - metrics: List[str], + metrics: Iterable[str], http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, - dimensions: Optional[List[str]] = None, + dimensions: Optional[Iterable[str]] = None, filters: Optional[ - Union[List[operations.Filter], List[operations.FilterTypedDict]] + Union[Iterable[operations.Filter], Iterable[operations.FilterTypedDict]] ] = None, granularity: Optional[str] = None, group_limit: Optional[int] = None, @@ -326,14 +330,14 @@ def query_analytics( x_open_router_title=x_open_router_title, x_open_router_categories=x_open_router_categories, request_body=operations.QueryAnalyticsRequestBody( - dimensions=dimensions, + dimensions=utils.unmarshal(dimensions, Optional[List[str]]), filters=utils.get_pydantic_model( filters, Optional[List[operations.Filter]] ), granularity=granularity, group_limit=group_limit, limit=limit, - metrics=metrics, + metrics=utils.unmarshal(metrics, List[str]), order_by=utils.get_pydantic_model( order_by, Optional[operations.OrderBy] ), @@ -393,9 +397,11 @@ def query_analytics( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["beta.Analytics"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "408", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -443,13 +449,13 @@ def query_analytics( async def query_analytics_async( self, *, - metrics: List[str], + metrics: Iterable[str], http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, - dimensions: Optional[List[str]] = None, + dimensions: Optional[Iterable[str]] = None, filters: Optional[ - Union[List[operations.Filter], List[operations.FilterTypedDict]] + Union[Iterable[operations.Filter], Iterable[operations.FilterTypedDict]] ] = None, granularity: Optional[str] = None, group_limit: Optional[int] = None, @@ -504,14 +510,14 @@ async def query_analytics_async( x_open_router_title=x_open_router_title, x_open_router_categories=x_open_router_categories, request_body=operations.QueryAnalyticsRequestBody( - dimensions=dimensions, + dimensions=utils.unmarshal(dimensions, Optional[List[str]]), filters=utils.get_pydantic_model( filters, Optional[List[operations.Filter]] ), granularity=granularity, group_limit=group_limit, limit=limit, - metrics=metrics, + metrics=utils.unmarshal(metrics, List[str]), order_by=utils.get_pydantic_model( order_by, Optional[operations.OrderBy] ), @@ -571,9 +577,11 @@ async def query_analytics_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["beta.Analytics"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "408", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/openrouter/byok.py b/src/openrouter/byok.py index e915cbb9..fcbfd1ac 100644 --- a/src/openrouter/byok.py +++ b/src/openrouter/byok.py @@ -7,7 +7,7 @@ from openrouter.types import OptionalNullable, UNSET from openrouter.utils import get_security_from_env from openrouter.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Awaitable, Dict, List, Mapping, Optional, Union +from typing import Any, Awaitable, Dict, Iterable, List, Mapping, Optional, Union class Byok(BaseSDK): @@ -111,24 +111,26 @@ def list( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["BYOK"], + extensions=None, ), request=req, - error_status_codes=["401", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) def next_func() -> Optional[operations.ListBYOKKeysResponse]: body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]]) - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return None results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return None - limit = request.limit if not request.limit is None else 0 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 0 + if len(results[0]) < limit_: return None next_offset = offset + len(results[0]) @@ -141,6 +143,9 @@ def next_func() -> Optional[operations.ListBYOKKeysResponse]: workspace_id=workspace_id, provider=provider, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -272,9 +277,11 @@ async def list_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["BYOK"], + extensions=None, ), request=req, - error_status_codes=["401", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -284,15 +291,15 @@ def next_func() -> Awaitable[Optional[operations.ListBYOKKeysResponse]]: async def empty_result(): return None - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return empty_result() results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return empty_result() - limit = request.limit if not request.limit is None else 0 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 0 + if len(results[0]) < limit_: return empty_result() next_offset = offset + len(results[0]) @@ -305,6 +312,9 @@ async def empty_result(): workspace_id=workspace_id, provider=provider, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -346,8 +356,8 @@ def create( http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, - allowed_models: OptionalNullable[List[str]] = UNSET, - allowed_user_ids: OptionalNullable[List[str]] = UNSET, + allowed_models: OptionalNullable[Iterable[str]] = UNSET, + allowed_user_ids: OptionalNullable[Iterable[str]] = UNSET, disabled: Optional[bool] = None, is_fallback: Optional[bool] = None, name: OptionalNullable[str] = UNSET, @@ -396,8 +406,12 @@ def create( x_open_router_title=x_open_router_title, x_open_router_categories=x_open_router_categories, create_byok_key_request=components.CreateBYOKKeyRequest( - allowed_models=allowed_models, - allowed_user_ids=allowed_user_ids, + allowed_models=utils.unmarshal( + allowed_models, OptionalNullable[List[str]] + ), + allowed_user_ids=utils.unmarshal( + allowed_user_ids, OptionalNullable[List[str]] + ), disabled=disabled, is_fallback=is_fallback, key=key, @@ -457,9 +471,11 @@ def create( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["BYOK"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -507,8 +523,8 @@ async def create_async( http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, - allowed_models: OptionalNullable[List[str]] = UNSET, - allowed_user_ids: OptionalNullable[List[str]] = UNSET, + allowed_models: OptionalNullable[Iterable[str]] = UNSET, + allowed_user_ids: OptionalNullable[Iterable[str]] = UNSET, disabled: Optional[bool] = None, is_fallback: Optional[bool] = None, name: OptionalNullable[str] = UNSET, @@ -557,8 +573,12 @@ async def create_async( x_open_router_title=x_open_router_title, x_open_router_categories=x_open_router_categories, create_byok_key_request=components.CreateBYOKKeyRequest( - allowed_models=allowed_models, - allowed_user_ids=allowed_user_ids, + allowed_models=utils.unmarshal( + allowed_models, OptionalNullable[List[str]] + ), + allowed_user_ids=utils.unmarshal( + allowed_user_ids, OptionalNullable[List[str]] + ), disabled=disabled, is_fallback=is_fallback, key=key, @@ -618,9 +638,11 @@ async def create_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["BYOK"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -749,9 +771,11 @@ def delete( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["BYOK"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -875,9 +899,11 @@ async def delete_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["BYOK"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1001,9 +1027,11 @@ def get( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["BYOK"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1127,9 +1155,11 @@ async def get_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["BYOK"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1171,8 +1201,8 @@ def update( http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, - allowed_models: OptionalNullable[List[str]] = UNSET, - allowed_user_ids: OptionalNullable[List[str]] = UNSET, + allowed_models: OptionalNullable[Iterable[str]] = UNSET, + allowed_user_ids: OptionalNullable[Iterable[str]] = UNSET, disabled: Optional[bool] = None, is_fallback: Optional[bool] = None, key: Optional[str] = None, @@ -1221,8 +1251,12 @@ def update( x_open_router_categories=x_open_router_categories, id=id, update_byok_key_request=components.UpdateBYOKKeyRequest( - allowed_models=allowed_models, - allowed_user_ids=allowed_user_ids, + allowed_models=utils.unmarshal( + allowed_models, OptionalNullable[List[str]] + ), + allowed_user_ids=utils.unmarshal( + allowed_user_ids, OptionalNullable[List[str]] + ), disabled=disabled, is_fallback=is_fallback, key=key, @@ -1280,9 +1314,11 @@ def update( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["BYOK"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1329,8 +1365,8 @@ async def update_async( http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, - allowed_models: OptionalNullable[List[str]] = UNSET, - allowed_user_ids: OptionalNullable[List[str]] = UNSET, + allowed_models: OptionalNullable[Iterable[str]] = UNSET, + allowed_user_ids: OptionalNullable[Iterable[str]] = UNSET, disabled: Optional[bool] = None, is_fallback: Optional[bool] = None, key: Optional[str] = None, @@ -1379,8 +1415,12 @@ async def update_async( x_open_router_categories=x_open_router_categories, id=id, update_byok_key_request=components.UpdateBYOKKeyRequest( - allowed_models=allowed_models, - allowed_user_ids=allowed_user_ids, + allowed_models=utils.unmarshal( + allowed_models, OptionalNullable[List[str]] + ), + allowed_user_ids=utils.unmarshal( + allowed_user_ids, OptionalNullable[List[str]] + ), disabled=disabled, is_fallback=is_fallback, key=key, @@ -1438,9 +1478,11 @@ async def update_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["BYOK"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/openrouter/chat.py b/src/openrouter/chat.py index a1894915..ab93b1be 100644 --- a/src/openrouter/chat.py +++ b/src/openrouter/chat.py @@ -1,18 +1,22 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from .basesdk import BaseSDK -from enum import Enum from openrouter import components, errors, operations, utils from openrouter._hooks import HookContext from openrouter.types import OptionalNullable, UNSET from openrouter.utils import eventstreaming, get_security_from_env from openrouter.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Dict, List, Literal, Mapping, Optional, Union, overload - - -class SendAcceptEnum(str, Enum): - APPLICATION_JSON = "application/json" - TEXT_EVENT_STREAM = "text/event-stream" +from typing import ( + Any, + Dict, + Iterable, + List, + Literal, + Mapping, + Optional, + Union, + overload, +) class Chat(BaseSDK): @@ -21,7 +25,8 @@ def send( self, *, messages: Union[ - List[components.ChatMessages], List[components.ChatMessagesTypedDict] + Iterable[components.ChatMessages], + Iterable[components.ChatMessagesTypedDict], ], http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, @@ -39,24 +44,24 @@ def send( frequency_penalty: OptionalNullable[float] = UNSET, image_config: Optional[ Union[ - Dict[str, components.ImageConfig], - Dict[str, components.ImageConfigTypedDict], + Mapping[str, components.ImageConfig], + Mapping[str, components.ImageConfigTypedDict], ] ] = None, - logit_bias: OptionalNullable[Dict[str, float]] = UNSET, + logit_bias: OptionalNullable[Mapping[str, float]] = UNSET, logprobs: OptionalNullable[bool] = UNSET, max_completion_tokens: OptionalNullable[int] = UNSET, max_tokens: OptionalNullable[int] = UNSET, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[Mapping[str, str]] = None, min_p: OptionalNullable[float] = UNSET, - modalities: Optional[List[components.Modality]] = None, + modalities: Optional[Iterable[components.Modality]] = None, model: Optional[str] = None, - models: Optional[List[str]] = None, + models: Optional[Iterable[str]] = None, parallel_tool_calls: OptionalNullable[bool] = UNSET, plugins: Optional[ Union[ - List[components.ChatRequestPlugin], - List[components.ChatRequestPluginTypedDict], + Iterable[components.ChatRequestPlugin], + Iterable[components.ChatRequestPluginTypedDict], ] ] = None, presence_penalty: OptionalNullable[float] = UNSET, @@ -86,8 +91,8 @@ def send( ] = UNSET, stop_server_tools_when: Optional[ Union[ - List[components.StopServerToolsWhenCondition], - List[components.StopServerToolsWhenConditionTypedDict], + Iterable[components.StopServerToolsWhenCondition], + Iterable[components.StopServerToolsWhenConditionTypedDict], ] ] = None, stream: Union[Literal[False], None] = None, @@ -100,8 +105,8 @@ def send( ] = None, tools: Optional[ Union[ - List[components.ChatFunctionTool], - List[components.ChatFunctionToolTypedDict], + Iterable[components.ChatFunctionTool], + Iterable[components.ChatFunctionToolTypedDict], ] ] = None, top_a: OptionalNullable[float] = UNSET, @@ -170,7 +175,6 @@ def send( :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method :param http_headers: Additional headers to set or replace on requests. """ @@ -179,7 +183,8 @@ def send( self, *, messages: Union[ - List[components.ChatMessages], List[components.ChatMessagesTypedDict] + Iterable[components.ChatMessages], + Iterable[components.ChatMessagesTypedDict], ], http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, @@ -197,24 +202,24 @@ def send( frequency_penalty: OptionalNullable[float] = UNSET, image_config: Optional[ Union[ - Dict[str, components.ImageConfig], - Dict[str, components.ImageConfigTypedDict], + Mapping[str, components.ImageConfig], + Mapping[str, components.ImageConfigTypedDict], ] ] = None, - logit_bias: OptionalNullable[Dict[str, float]] = UNSET, + logit_bias: OptionalNullable[Mapping[str, float]] = UNSET, logprobs: OptionalNullable[bool] = UNSET, max_completion_tokens: OptionalNullable[int] = UNSET, max_tokens: OptionalNullable[int] = UNSET, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[Mapping[str, str]] = None, min_p: OptionalNullable[float] = UNSET, - modalities: Optional[List[components.Modality]] = None, + modalities: Optional[Iterable[components.Modality]] = None, model: Optional[str] = None, - models: Optional[List[str]] = None, + models: Optional[Iterable[str]] = None, parallel_tool_calls: OptionalNullable[bool] = UNSET, plugins: Optional[ Union[ - List[components.ChatRequestPlugin], - List[components.ChatRequestPluginTypedDict], + Iterable[components.ChatRequestPlugin], + Iterable[components.ChatRequestPluginTypedDict], ] ] = None, presence_penalty: OptionalNullable[float] = UNSET, @@ -244,8 +249,8 @@ def send( ] = UNSET, stop_server_tools_when: Optional[ Union[ - List[components.StopServerToolsWhenCondition], - List[components.StopServerToolsWhenConditionTypedDict], + Iterable[components.StopServerToolsWhenCondition], + Iterable[components.StopServerToolsWhenConditionTypedDict], ] ] = None, stream: Literal[True], @@ -258,8 +263,8 @@ def send( ] = None, tools: Optional[ Union[ - List[components.ChatFunctionTool], - List[components.ChatFunctionToolTypedDict], + Iterable[components.ChatFunctionTool], + Iterable[components.ChatFunctionToolTypedDict], ] ] = None, top_a: OptionalNullable[float] = UNSET, @@ -328,7 +333,166 @@ def send( :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method + :param http_headers: Additional headers to set or replace on requests. + """ + + @overload + def send( + self, + *, + messages: Union[ + Iterable[components.ChatMessages], + Iterable[components.ChatMessagesTypedDict], + ], + http_referer: Optional[str] = None, + x_open_router_title: Optional[str] = None, + x_open_router_categories: Optional[str] = None, + x_open_router_metadata: Optional[components.MetadataLevel] = None, + cache_control: Optional[ + Union[ + components.AnthropicCacheControlDirective, + components.AnthropicCacheControlDirectiveTypedDict, + ] + ] = None, + debug: Optional[ + Union[components.ChatDebugOptions, components.ChatDebugOptionsTypedDict] + ] = None, + frequency_penalty: OptionalNullable[float] = UNSET, + image_config: Optional[ + Union[ + Mapping[str, components.ImageConfig], + Mapping[str, components.ImageConfigTypedDict], + ] + ] = None, + logit_bias: OptionalNullable[Mapping[str, float]] = UNSET, + logprobs: OptionalNullable[bool] = UNSET, + max_completion_tokens: OptionalNullable[int] = UNSET, + max_tokens: OptionalNullable[int] = UNSET, + metadata: Optional[Mapping[str, str]] = None, + min_p: OptionalNullable[float] = UNSET, + modalities: Optional[Iterable[components.Modality]] = None, + model: Optional[str] = None, + models: Optional[Iterable[str]] = None, + parallel_tool_calls: OptionalNullable[bool] = UNSET, + plugins: Optional[ + Union[ + Iterable[components.ChatRequestPlugin], + Iterable[components.ChatRequestPluginTypedDict], + ] + ] = None, + presence_penalty: OptionalNullable[float] = UNSET, + provider: OptionalNullable[ + Union[ + components.ProviderPreferences, components.ProviderPreferencesTypedDict + ] + ] = UNSET, + reasoning: Optional[ + Union[ + components.ChatRequestReasoning, + components.ChatRequestReasoningTypedDict, + ] + ] = None, + reasoning_effort: OptionalNullable[ + components.ChatRequestReasoningEffort + ] = UNSET, + repetition_penalty: OptionalNullable[float] = UNSET, + response_format: Optional[ + Union[components.ResponseFormat, components.ResponseFormatTypedDict] + ] = None, + seed: OptionalNullable[int] = UNSET, + service_tier: OptionalNullable[components.ChatRequestServiceTier] = UNSET, + session_id: Optional[str] = None, + stop: OptionalNullable[ + Union[components.Stop, components.StopTypedDict] + ] = UNSET, + stop_server_tools_when: Optional[ + Union[ + Iterable[components.StopServerToolsWhenCondition], + Iterable[components.StopServerToolsWhenConditionTypedDict], + ] + ] = None, + stream: bool, + stream_options: OptionalNullable[ + Union[components.ChatStreamOptions, components.ChatStreamOptionsTypedDict] + ] = UNSET, + temperature: OptionalNullable[float] = UNSET, + tool_choice: Optional[ + Union[components.ChatToolChoice, components.ChatToolChoiceTypedDict] + ] = None, + tools: Optional[ + Union[ + Iterable[components.ChatFunctionTool], + Iterable[components.ChatFunctionToolTypedDict], + ] + ] = None, + top_a: OptionalNullable[float] = UNSET, + top_k: OptionalNullable[int] = UNSET, + top_logprobs: OptionalNullable[int] = UNSET, + top_p: OptionalNullable[float] = UNSET, + trace: Optional[ + Union[components.TraceConfig, components.TraceConfigTypedDict] + ] = None, + user: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> Union[ + components.ChatResult, eventstreaming.EventStream[components.ChatStreamChunk] + ]: + r"""Create a chat completion + + Sends a request for a model response for the given chat conversation. Supports both streaming and non-streaming modes. + + :param messages: List of messages for the conversation + :param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings. + This is used to track API usage per application. + + :param x_open_router_title: The app display name allows you to customize how your app appears in OpenRouter's dashboard. + + :param x_open_router_categories: Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings. + + :param x_open_router_metadata: 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. + :param cache_control: Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. + :param debug: Debug options for inspecting request transformations (streaming only) + :param frequency_penalty: Frequency penalty (-2.0 to 2.0) + :param image_config: Provider-specific image configuration options. Keys and values vary by model/provider. See https://openrouter.ai/docs/guides/overview/multimodal/image-generation for more details. + :param logit_bias: Token logit bias adjustments + :param logprobs: Return log probabilities + :param max_completion_tokens: Maximum tokens in completion + :param max_tokens: Maximum tokens (deprecated, use max_completion_tokens). Note: some providers enforce a minimum of 16. + :param metadata: Key-value pairs for additional object information (max 16 pairs, 64 char keys, 512 char values) + :param min_p: Minimum probability threshold relative to the most likely token. Tokens with probability below min_p * (probability of top token) are filtered out. Not all providers support this parameter. + :param modalities: Output modalities for the response. Supported values are \"text\", \"image\", and \"audio\". + :param model: Model to use for completion + :param models: Models to use for completion + :param parallel_tool_calls: Whether to enable parallel function calling during tool use. When true, the model may generate multiple tool calls in a single response. + :param plugins: Plugins you want to enable for this request, including their settings. + :param presence_penalty: Presence penalty (-2.0 to 2.0) + :param provider: When multiple model providers are available, optionally indicate your routing preference. + :param reasoning: Configuration options for reasoning models + :param reasoning_effort: Shorthand for setting reasoning effort. Equivalent to setting reasoning.effort. Cannot be used simultaneously with reasoning.effort if they differ. + :param repetition_penalty: Penalizes tokens based on how much they have already appeared in the text. A value of 1.0 means no penalty. Values above 1.0 penalize repeated tokens more strongly. Not all providers support this parameter. + :param response_format: Response format configuration + :param seed: Random seed for deterministic outputs + :param service_tier: The service tier to use for processing this request. + :param session_id: A unique identifier for grouping related requests (e.g., a conversation or agent workflow). When provided, OpenRouter uses it as the sticky routing key, routing all requests in the session to the same provider to maximize prompt cache hits. Also used for observability grouping. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. + :param stop: Stop sequences (up to 4) + :param stop_server_tools_when: Stop conditions for the server-tool agent loop. Any condition firing halts the loop (OR logic). When set, this overrides `max_tool_calls`. + :param stream: Enable streaming response + :param stream_options: Streaming configuration options + :param temperature: Sampling temperature (0-2) + :param tool_choice: Tool choice configuration + :param tools: Available tools for function calling + :param top_a: Consider only tokens with \"sufficiently high\" probabilities based on the probability of the most likely token. Not all providers support this parameter. + :param top_k: Limits the model to choose from the top K most likely tokens at each step. A value of 1 means the model will always pick the most likely next token. Not all providers support this parameter. + :param top_logprobs: Number of top log probabilities to return (0-20) + :param top_p: Nucleus sampling parameter (0-1) + :param trace: Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. + :param user: Unique user identifier + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds :param http_headers: Additional headers to set or replace on requests. """ @@ -336,7 +500,8 @@ def send( self, *, messages: Union[ - List[components.ChatMessages], List[components.ChatMessagesTypedDict] + Iterable[components.ChatMessages], + Iterable[components.ChatMessagesTypedDict], ], http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, @@ -354,24 +519,24 @@ def send( frequency_penalty: OptionalNullable[float] = UNSET, image_config: Optional[ Union[ - Dict[str, components.ImageConfig], - Dict[str, components.ImageConfigTypedDict], + Mapping[str, components.ImageConfig], + Mapping[str, components.ImageConfigTypedDict], ] ] = None, - logit_bias: OptionalNullable[Dict[str, float]] = UNSET, + logit_bias: OptionalNullable[Mapping[str, float]] = UNSET, logprobs: OptionalNullable[bool] = UNSET, max_completion_tokens: OptionalNullable[int] = UNSET, max_tokens: OptionalNullable[int] = UNSET, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[Mapping[str, str]] = None, min_p: OptionalNullable[float] = UNSET, - modalities: Optional[List[components.Modality]] = None, + modalities: Optional[Iterable[components.Modality]] = None, model: Optional[str] = None, - models: Optional[List[str]] = None, + models: Optional[Iterable[str]] = None, parallel_tool_calls: OptionalNullable[bool] = UNSET, plugins: Optional[ Union[ - List[components.ChatRequestPlugin], - List[components.ChatRequestPluginTypedDict], + Iterable[components.ChatRequestPlugin], + Iterable[components.ChatRequestPluginTypedDict], ] ] = None, presence_penalty: OptionalNullable[float] = UNSET, @@ -401,8 +566,8 @@ def send( ] = UNSET, stop_server_tools_when: Optional[ Union[ - List[components.StopServerToolsWhenCondition], - List[components.StopServerToolsWhenConditionTypedDict], + Iterable[components.StopServerToolsWhenCondition], + Iterable[components.StopServerToolsWhenConditionTypedDict], ] ] = None, stream: Optional[bool] = False, @@ -415,8 +580,8 @@ def send( ] = None, tools: Optional[ Union[ - List[components.ChatFunctionTool], - List[components.ChatFunctionToolTypedDict], + Iterable[components.ChatFunctionTool], + Iterable[components.ChatFunctionToolTypedDict], ] ] = None, top_a: OptionalNullable[float] = UNSET, @@ -431,7 +596,9 @@ def send( server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.SendChatCompletionRequestResponse: + ) -> Union[ + components.ChatResult, eventstreaming.EventStream[components.ChatStreamChunk] + ]: r"""Create a chat completion Sends a request for a model response for the given chat conversation. Supports both streaming and non-streaming modes. @@ -485,7 +652,6 @@ def send( :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method :param http_headers: Additional headers to set or replace on requests. """ base_url = None @@ -511,19 +677,25 @@ def send( debug, Optional[components.ChatDebugOptions] ), frequency_penalty=frequency_penalty, - image_config=image_config, - logit_bias=logit_bias, + image_config=utils.unmarshal( + image_config, Optional[Dict[str, components.ImageConfig]] + ), + logit_bias=utils.unmarshal( + logit_bias, OptionalNullable[Dict[str, float]] + ), logprobs=logprobs, max_completion_tokens=max_completion_tokens, max_tokens=max_tokens, messages=utils.get_pydantic_model( messages, List[components.ChatMessages] ), - metadata=metadata, + metadata=utils.unmarshal(metadata, Optional[Dict[str, str]]), min_p=min_p, - modalities=modalities, + modalities=utils.unmarshal( + modalities, Optional[List[components.Modality]] + ), model=model, - models=models, + models=utils.unmarshal(models, Optional[List[str]]), parallel_tool_calls=parallel_tool_calls, plugins=utils.get_pydantic_model( plugins, Optional[List[components.ChatRequestPlugin]] @@ -543,7 +715,7 @@ def send( seed=seed, service_tier=service_tier, session_id=session_id, - stop=stop, + stop=utils.unmarshal(stop, OptionalNullable[components.Stop]), stop_server_tools_when=utils.get_pydantic_model( stop_server_tools_when, Optional[List[components.StopServerToolsWhenCondition]], @@ -578,7 +750,9 @@ def send( request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="text/event-stream" if stream else "application/json", + accept_header_value="text/event-stream" + if stream is True + else "application/json", http_headers=http_headers, _globals=operations.SendChatCompletionRequestGlobals( http_referer=self.sdk_configuration.globals.http_referer, @@ -614,27 +788,12 @@ def send( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Chat"], + extensions=None, ), request=req, - error_status_codes=[ - "400", - "401", - "402", - "403", - "404", - "408", - "413", - "422", - "429", - "4XX", - "500", - "502", - "503", - "524", - "529", - "5XX", - ], - stream=True, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + stream=stream is True, retry_config=retry_config, ) @@ -647,8 +806,8 @@ def send( if utils.match_response(http_res, "200", "text/event-stream"): return eventstreaming.EventStream( http_res, - lambda raw: utils.unmarshal_json( - raw, components.ChatStreamingResponse + lambda raw: unmarshal_json_response( + components.ChatStreamingResponse, http_res, raw ).data, sentinel="[DONE]", client_ref=self, @@ -778,7 +937,8 @@ async def send_async( self, *, messages: Union[ - List[components.ChatMessages], List[components.ChatMessagesTypedDict] + Iterable[components.ChatMessages], + Iterable[components.ChatMessagesTypedDict], ], http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, @@ -796,24 +956,24 @@ async def send_async( frequency_penalty: OptionalNullable[float] = UNSET, image_config: Optional[ Union[ - Dict[str, components.ImageConfig], - Dict[str, components.ImageConfigTypedDict], + Mapping[str, components.ImageConfig], + Mapping[str, components.ImageConfigTypedDict], ] ] = None, - logit_bias: OptionalNullable[Dict[str, float]] = UNSET, + logit_bias: OptionalNullable[Mapping[str, float]] = UNSET, logprobs: OptionalNullable[bool] = UNSET, max_completion_tokens: OptionalNullable[int] = UNSET, max_tokens: OptionalNullable[int] = UNSET, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[Mapping[str, str]] = None, min_p: OptionalNullable[float] = UNSET, - modalities: Optional[List[components.Modality]] = None, + modalities: Optional[Iterable[components.Modality]] = None, model: Optional[str] = None, - models: Optional[List[str]] = None, + models: Optional[Iterable[str]] = None, parallel_tool_calls: OptionalNullable[bool] = UNSET, plugins: Optional[ Union[ - List[components.ChatRequestPlugin], - List[components.ChatRequestPluginTypedDict], + Iterable[components.ChatRequestPlugin], + Iterable[components.ChatRequestPluginTypedDict], ] ] = None, presence_penalty: OptionalNullable[float] = UNSET, @@ -843,8 +1003,8 @@ async def send_async( ] = UNSET, stop_server_tools_when: Optional[ Union[ - List[components.StopServerToolsWhenCondition], - List[components.StopServerToolsWhenConditionTypedDict], + Iterable[components.StopServerToolsWhenCondition], + Iterable[components.StopServerToolsWhenConditionTypedDict], ] ] = None, stream: Union[Literal[False], None] = None, @@ -857,8 +1017,8 @@ async def send_async( ] = None, tools: Optional[ Union[ - List[components.ChatFunctionTool], - List[components.ChatFunctionToolTypedDict], + Iterable[components.ChatFunctionTool], + Iterable[components.ChatFunctionToolTypedDict], ] ] = None, top_a: OptionalNullable[float] = UNSET, @@ -927,7 +1087,6 @@ async def send_async( :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method :param http_headers: Additional headers to set or replace on requests. """ @@ -936,7 +1095,8 @@ async def send_async( self, *, messages: Union[ - List[components.ChatMessages], List[components.ChatMessagesTypedDict] + Iterable[components.ChatMessages], + Iterable[components.ChatMessagesTypedDict], ], http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, @@ -954,24 +1114,24 @@ async def send_async( frequency_penalty: OptionalNullable[float] = UNSET, image_config: Optional[ Union[ - Dict[str, components.ImageConfig], - Dict[str, components.ImageConfigTypedDict], + Mapping[str, components.ImageConfig], + Mapping[str, components.ImageConfigTypedDict], ] ] = None, - logit_bias: OptionalNullable[Dict[str, float]] = UNSET, + logit_bias: OptionalNullable[Mapping[str, float]] = UNSET, logprobs: OptionalNullable[bool] = UNSET, max_completion_tokens: OptionalNullable[int] = UNSET, max_tokens: OptionalNullable[int] = UNSET, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[Mapping[str, str]] = None, min_p: OptionalNullable[float] = UNSET, - modalities: Optional[List[components.Modality]] = None, + modalities: Optional[Iterable[components.Modality]] = None, model: Optional[str] = None, - models: Optional[List[str]] = None, + models: Optional[Iterable[str]] = None, parallel_tool_calls: OptionalNullable[bool] = UNSET, plugins: Optional[ Union[ - List[components.ChatRequestPlugin], - List[components.ChatRequestPluginTypedDict], + Iterable[components.ChatRequestPlugin], + Iterable[components.ChatRequestPluginTypedDict], ] ] = None, presence_penalty: OptionalNullable[float] = UNSET, @@ -1001,8 +1161,8 @@ async def send_async( ] = UNSET, stop_server_tools_when: Optional[ Union[ - List[components.StopServerToolsWhenCondition], - List[components.StopServerToolsWhenConditionTypedDict], + Iterable[components.StopServerToolsWhenCondition], + Iterable[components.StopServerToolsWhenConditionTypedDict], ] ] = None, stream: Literal[True], @@ -1015,8 +1175,8 @@ async def send_async( ] = None, tools: Optional[ Union[ - List[components.ChatFunctionTool], - List[components.ChatFunctionToolTypedDict], + Iterable[components.ChatFunctionTool], + Iterable[components.ChatFunctionToolTypedDict], ] ] = None, top_a: OptionalNullable[float] = UNSET, @@ -1085,7 +1245,167 @@ async def send_async( :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method + :param http_headers: Additional headers to set or replace on requests. + """ + + @overload + async def send_async( + self, + *, + messages: Union[ + Iterable[components.ChatMessages], + Iterable[components.ChatMessagesTypedDict], + ], + http_referer: Optional[str] = None, + x_open_router_title: Optional[str] = None, + x_open_router_categories: Optional[str] = None, + x_open_router_metadata: Optional[components.MetadataLevel] = None, + cache_control: Optional[ + Union[ + components.AnthropicCacheControlDirective, + components.AnthropicCacheControlDirectiveTypedDict, + ] + ] = None, + debug: Optional[ + Union[components.ChatDebugOptions, components.ChatDebugOptionsTypedDict] + ] = None, + frequency_penalty: OptionalNullable[float] = UNSET, + image_config: Optional[ + Union[ + Mapping[str, components.ImageConfig], + Mapping[str, components.ImageConfigTypedDict], + ] + ] = None, + logit_bias: OptionalNullable[Mapping[str, float]] = UNSET, + logprobs: OptionalNullable[bool] = UNSET, + max_completion_tokens: OptionalNullable[int] = UNSET, + max_tokens: OptionalNullable[int] = UNSET, + metadata: Optional[Mapping[str, str]] = None, + min_p: OptionalNullable[float] = UNSET, + modalities: Optional[Iterable[components.Modality]] = None, + model: Optional[str] = None, + models: Optional[Iterable[str]] = None, + parallel_tool_calls: OptionalNullable[bool] = UNSET, + plugins: Optional[ + Union[ + Iterable[components.ChatRequestPlugin], + Iterable[components.ChatRequestPluginTypedDict], + ] + ] = None, + presence_penalty: OptionalNullable[float] = UNSET, + provider: OptionalNullable[ + Union[ + components.ProviderPreferences, components.ProviderPreferencesTypedDict + ] + ] = UNSET, + reasoning: Optional[ + Union[ + components.ChatRequestReasoning, + components.ChatRequestReasoningTypedDict, + ] + ] = None, + reasoning_effort: OptionalNullable[ + components.ChatRequestReasoningEffort + ] = UNSET, + repetition_penalty: OptionalNullable[float] = UNSET, + response_format: Optional[ + Union[components.ResponseFormat, components.ResponseFormatTypedDict] + ] = None, + seed: OptionalNullable[int] = UNSET, + service_tier: OptionalNullable[components.ChatRequestServiceTier] = UNSET, + session_id: Optional[str] = None, + stop: OptionalNullable[ + Union[components.Stop, components.StopTypedDict] + ] = UNSET, + stop_server_tools_when: Optional[ + Union[ + Iterable[components.StopServerToolsWhenCondition], + Iterable[components.StopServerToolsWhenConditionTypedDict], + ] + ] = None, + stream: bool, + stream_options: OptionalNullable[ + Union[components.ChatStreamOptions, components.ChatStreamOptionsTypedDict] + ] = UNSET, + temperature: OptionalNullable[float] = UNSET, + tool_choice: Optional[ + Union[components.ChatToolChoice, components.ChatToolChoiceTypedDict] + ] = None, + tools: Optional[ + Union[ + Iterable[components.ChatFunctionTool], + Iterable[components.ChatFunctionToolTypedDict], + ] + ] = None, + top_a: OptionalNullable[float] = UNSET, + top_k: OptionalNullable[int] = UNSET, + top_logprobs: OptionalNullable[int] = UNSET, + top_p: OptionalNullable[float] = UNSET, + trace: Optional[ + Union[components.TraceConfig, components.TraceConfigTypedDict] + ] = None, + user: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> Union[ + components.ChatResult, + eventstreaming.EventStreamAsync[components.ChatStreamChunk], + ]: + r"""Create a chat completion + + Sends a request for a model response for the given chat conversation. Supports both streaming and non-streaming modes. + + :param messages: List of messages for the conversation + :param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings. + This is used to track API usage per application. + + :param x_open_router_title: The app display name allows you to customize how your app appears in OpenRouter's dashboard. + + :param x_open_router_categories: Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings. + + :param x_open_router_metadata: 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. + :param cache_control: Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. + :param debug: Debug options for inspecting request transformations (streaming only) + :param frequency_penalty: Frequency penalty (-2.0 to 2.0) + :param image_config: Provider-specific image configuration options. Keys and values vary by model/provider. See https://openrouter.ai/docs/guides/overview/multimodal/image-generation for more details. + :param logit_bias: Token logit bias adjustments + :param logprobs: Return log probabilities + :param max_completion_tokens: Maximum tokens in completion + :param max_tokens: Maximum tokens (deprecated, use max_completion_tokens). Note: some providers enforce a minimum of 16. + :param metadata: Key-value pairs for additional object information (max 16 pairs, 64 char keys, 512 char values) + :param min_p: Minimum probability threshold relative to the most likely token. Tokens with probability below min_p * (probability of top token) are filtered out. Not all providers support this parameter. + :param modalities: Output modalities for the response. Supported values are \"text\", \"image\", and \"audio\". + :param model: Model to use for completion + :param models: Models to use for completion + :param parallel_tool_calls: Whether to enable parallel function calling during tool use. When true, the model may generate multiple tool calls in a single response. + :param plugins: Plugins you want to enable for this request, including their settings. + :param presence_penalty: Presence penalty (-2.0 to 2.0) + :param provider: When multiple model providers are available, optionally indicate your routing preference. + :param reasoning: Configuration options for reasoning models + :param reasoning_effort: Shorthand for setting reasoning effort. Equivalent to setting reasoning.effort. Cannot be used simultaneously with reasoning.effort if they differ. + :param repetition_penalty: Penalizes tokens based on how much they have already appeared in the text. A value of 1.0 means no penalty. Values above 1.0 penalize repeated tokens more strongly. Not all providers support this parameter. + :param response_format: Response format configuration + :param seed: Random seed for deterministic outputs + :param service_tier: The service tier to use for processing this request. + :param session_id: A unique identifier for grouping related requests (e.g., a conversation or agent workflow). When provided, OpenRouter uses it as the sticky routing key, routing all requests in the session to the same provider to maximize prompt cache hits. Also used for observability grouping. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. + :param stop: Stop sequences (up to 4) + :param stop_server_tools_when: Stop conditions for the server-tool agent loop. Any condition firing halts the loop (OR logic). When set, this overrides `max_tool_calls`. + :param stream: Enable streaming response + :param stream_options: Streaming configuration options + :param temperature: Sampling temperature (0-2) + :param tool_choice: Tool choice configuration + :param tools: Available tools for function calling + :param top_a: Consider only tokens with \"sufficiently high\" probabilities based on the probability of the most likely token. Not all providers support this parameter. + :param top_k: Limits the model to choose from the top K most likely tokens at each step. A value of 1 means the model will always pick the most likely next token. Not all providers support this parameter. + :param top_logprobs: Number of top log probabilities to return (0-20) + :param top_p: Nucleus sampling parameter (0-1) + :param trace: Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. + :param user: Unique user identifier + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds :param http_headers: Additional headers to set or replace on requests. """ @@ -1093,7 +1413,8 @@ async def send_async( self, *, messages: Union[ - List[components.ChatMessages], List[components.ChatMessagesTypedDict] + Iterable[components.ChatMessages], + Iterable[components.ChatMessagesTypedDict], ], http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, @@ -1111,24 +1432,24 @@ async def send_async( frequency_penalty: OptionalNullable[float] = UNSET, image_config: Optional[ Union[ - Dict[str, components.ImageConfig], - Dict[str, components.ImageConfigTypedDict], + Mapping[str, components.ImageConfig], + Mapping[str, components.ImageConfigTypedDict], ] ] = None, - logit_bias: OptionalNullable[Dict[str, float]] = UNSET, + logit_bias: OptionalNullable[Mapping[str, float]] = UNSET, logprobs: OptionalNullable[bool] = UNSET, max_completion_tokens: OptionalNullable[int] = UNSET, max_tokens: OptionalNullable[int] = UNSET, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[Mapping[str, str]] = None, min_p: OptionalNullable[float] = UNSET, - modalities: Optional[List[components.Modality]] = None, + modalities: Optional[Iterable[components.Modality]] = None, model: Optional[str] = None, - models: Optional[List[str]] = None, + models: Optional[Iterable[str]] = None, parallel_tool_calls: OptionalNullable[bool] = UNSET, plugins: Optional[ Union[ - List[components.ChatRequestPlugin], - List[components.ChatRequestPluginTypedDict], + Iterable[components.ChatRequestPlugin], + Iterable[components.ChatRequestPluginTypedDict], ] ] = None, presence_penalty: OptionalNullable[float] = UNSET, @@ -1158,8 +1479,8 @@ async def send_async( ] = UNSET, stop_server_tools_when: Optional[ Union[ - List[components.StopServerToolsWhenCondition], - List[components.StopServerToolsWhenConditionTypedDict], + Iterable[components.StopServerToolsWhenCondition], + Iterable[components.StopServerToolsWhenConditionTypedDict], ] ] = None, stream: Optional[bool] = False, @@ -1172,8 +1493,8 @@ async def send_async( ] = None, tools: Optional[ Union[ - List[components.ChatFunctionTool], - List[components.ChatFunctionToolTypedDict], + Iterable[components.ChatFunctionTool], + Iterable[components.ChatFunctionToolTypedDict], ] ] = None, top_a: OptionalNullable[float] = UNSET, @@ -1188,7 +1509,10 @@ async def send_async( server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.SendChatCompletionRequestResponse: + ) -> Union[ + components.ChatResult, + eventstreaming.EventStreamAsync[components.ChatStreamChunk], + ]: r"""Create a chat completion Sends a request for a model response for the given chat conversation. Supports both streaming and non-streaming modes. @@ -1242,7 +1566,6 @@ async def send_async( :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method :param http_headers: Additional headers to set or replace on requests. """ base_url = None @@ -1268,19 +1591,25 @@ async def send_async( debug, Optional[components.ChatDebugOptions] ), frequency_penalty=frequency_penalty, - image_config=image_config, - logit_bias=logit_bias, + image_config=utils.unmarshal( + image_config, Optional[Dict[str, components.ImageConfig]] + ), + logit_bias=utils.unmarshal( + logit_bias, OptionalNullable[Dict[str, float]] + ), logprobs=logprobs, max_completion_tokens=max_completion_tokens, max_tokens=max_tokens, messages=utils.get_pydantic_model( messages, List[components.ChatMessages] ), - metadata=metadata, + metadata=utils.unmarshal(metadata, Optional[Dict[str, str]]), min_p=min_p, - modalities=modalities, + modalities=utils.unmarshal( + modalities, Optional[List[components.Modality]] + ), model=model, - models=models, + models=utils.unmarshal(models, Optional[List[str]]), parallel_tool_calls=parallel_tool_calls, plugins=utils.get_pydantic_model( plugins, Optional[List[components.ChatRequestPlugin]] @@ -1300,7 +1629,7 @@ async def send_async( seed=seed, service_tier=service_tier, session_id=session_id, - stop=stop, + stop=utils.unmarshal(stop, OptionalNullable[components.Stop]), stop_server_tools_when=utils.get_pydantic_model( stop_server_tools_when, Optional[List[components.StopServerToolsWhenCondition]], @@ -1335,7 +1664,9 @@ async def send_async( request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="text/event-stream" if stream else "application/json", + accept_header_value="text/event-stream" + if stream is True + else "application/json", http_headers=http_headers, _globals=operations.SendChatCompletionRequestGlobals( http_referer=self.sdk_configuration.globals.http_referer, @@ -1371,27 +1702,12 @@ async def send_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Chat"], + extensions=None, ), request=req, - error_status_codes=[ - "400", - "401", - "402", - "403", - "404", - "408", - "413", - "422", - "429", - "4XX", - "500", - "502", - "503", - "524", - "529", - "5XX", - ], - stream=True, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + stream=stream is True, retry_config=retry_config, ) @@ -1404,8 +1720,8 @@ async def send_async( if utils.match_response(http_res, "200", "text/event-stream"): return eventstreaming.EventStreamAsync( http_res, - lambda raw: utils.unmarshal_json( - raw, components.ChatStreamingResponse + lambda raw: unmarshal_json_response( + components.ChatStreamingResponse, http_res, raw ).data, sentinel="[DONE]", client_ref=self, diff --git a/src/openrouter/classifications.py b/src/openrouter/classifications.py index 2654cbc5..ad3d2479 100644 --- a/src/openrouter/classifications.py +++ b/src/openrouter/classifications.py @@ -119,9 +119,11 @@ def get_task_classifications( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Classifications"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -270,9 +272,11 @@ async def get_task_classifications_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Classifications"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/openrouter/components/__init__.py b/src/openrouter/components/__init__.py index 581b01ca..f3f0d61c 100644 --- a/src/openrouter/components/__init__.py +++ b/src/openrouter/components/__init__.py @@ -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 .aabenchmarkentry import AABenchmarkEntry, AABenchmarkEntryTypedDict @@ -204,6 +203,7 @@ from .applypatchcalloperation import ( ApplyPatchCallOperation, ApplyPatchCallOperationTypedDict, + UnknownApplyPatchCallOperation, ) from .applypatchcalloperationdiffdeltaevent import ( ApplyPatchCallOperationDiffDeltaEvent, @@ -289,6 +289,7 @@ BaseInputsUnion1, BaseInputsUnion1TypedDict, BaseInputsUnionTypedDict, + UnknownBaseInputsContent1, ) from .basereasoningconfig import BaseReasoningConfig, BaseReasoningConfigTypedDict from .bashservertool import ( @@ -363,6 +364,7 @@ from .capabilitydescriptor import ( CapabilityDescriptor, CapabilityDescriptorTypedDict, + UnknownCapabilityDescriptor, ) from .chatassistantimages import ( ChatAssistantImages, @@ -406,7 +408,11 @@ ChatContentImageType, ChatContentImageTypedDict, ) - from .chatcontentitems import ChatContentItems, ChatContentItemsTypedDict + from .chatcontentitems import ( + ChatContentItems, + ChatContentItemsTypedDict, + UnknownChatContentItems, + ) from .chatcontenttext import ( ChatContentText, ChatContentTextType, @@ -646,6 +652,7 @@ ContentPartAddedEventPartTypedDict, ContentPartAddedEventType, ContentPartAddedEventTypedDict, + UnknownContentPartAddedEventPart, ) from .contentpartaudio import ( AudioURL, @@ -660,6 +667,7 @@ ContentPartDoneEventPartTypedDict, ContentPartDoneEventType, ContentPartDoneEventTypedDict, + UnknownContentPartDoneEventPart, ) from .contentpartimage import ( ContentPartImage, @@ -747,6 +755,7 @@ FormatTypeText, FormatTypedDict, Syntax, + UnknownFormat, ) from .customtoolcallinputdeltaevent import ( CustomToolCallInputDeltaEvent, @@ -898,7 +907,7 @@ FormatJSONSchemaConfigType, FormatJSONSchemaConfigTypedDict, ) - from .formats import Formats, FormatsTypedDict + from .formats import Formats, FormatsTypedDict, UnknownFormats from .formattextconfig import ( FormatTextConfig, FormatTextConfigType, @@ -1186,6 +1195,7 @@ ImageStreamingResponseData, ImageStreamingResponseDataTypedDict, ImageStreamingResponseTypedDict, + UnknownImageStreamingResponseData, ) from .incompletedetails import IncompleteDetails, IncompleteDetailsTypedDict, Reason from .inputaudio import ( @@ -1585,6 +1595,7 @@ from .observabilitydestination import ( ObservabilityDestination, ObservabilityDestinationTypedDict, + UnknownObservabilityDestination, ) from .observabilityfilterrulesconfig import ( FieldT, @@ -1705,6 +1716,7 @@ OpenAIResponseCustomToolCallOutputOutput2TypedDict, OpenAIResponseCustomToolCallOutputType, OpenAIResponseCustomToolCallOutputTypedDict, + UnknownOpenAIResponseCustomToolCallOutputOutput1, ) from .openairesponsefunctiontoolcall import ( OpenAIResponseFunctionToolCall, @@ -1720,6 +1732,7 @@ OpenAIResponseFunctionToolCallOutputStatus, OpenAIResponseFunctionToolCallOutputType, OpenAIResponseFunctionToolCallOutputTypedDict, + UnknownOpenAIResponseFunctionToolCallOutputOutput1, ) from .openairesponseinputmessageitem import ( OpenAIResponseInputMessageItem, @@ -1732,10 +1745,12 @@ OpenAIResponseInputMessageItemRoleUser, OpenAIResponseInputMessageItemType, OpenAIResponseInputMessageItemTypedDict, + UnknownOpenAIResponseInputMessageItemContent, ) from .openairesponsesannotation import ( OpenAIResponsesAnnotation, OpenAIResponsesAnnotationTypedDict, + UnknownOpenAIResponsesAnnotation, ) from .openairesponsesrefusalcontent import ( OpenAIResponsesRefusalContent, @@ -1785,6 +1800,7 @@ OpenResponsesResultToolUnionTypedDict, OpenResponsesResultType, OpenResponsesResultTypedDict, + UnknownOpenResponsesResultToolUnion, ) from .openroutermetadata import OpenRouterMetadata, OpenRouterMetadataTypedDict from .openrouterwebsearchservertool import ( @@ -1829,6 +1845,7 @@ OutputLogsTypedDict, TypeCodeInterpreterCall, TypeLogs, + UnknownOutputCodeInterpreterCallItemOutputUnion, ) from .outputcodeinterpreterservertoolitem import ( OutputCodeInterpreterServerToolItem, @@ -1897,7 +1914,7 @@ OutputItemImageGenerationCallType, OutputItemImageGenerationCallTypedDict, ) - from .outputitems import OutputItems, OutputItemsTypedDict + from .outputitems import OutputItems, OutputItemsTypedDict, UnknownOutputItems from .outputmcpservertoolitem import ( OutputMcpServerToolItem, OutputMcpServerToolItemType, @@ -1925,6 +1942,7 @@ OutputMessageStatusUnionTypedDict, OutputMessageType, OutputMessageTypedDict, + UnknownOutputMessageContent, ) from .outputmessageitem import ( OutputMessageItem, @@ -1942,6 +1960,7 @@ OutputMessageItemStatusUnionTypedDict, OutputMessageItemType, OutputMessageItemTypedDict, + UnknownOutputMessageItemContent, ) from .outputmodality import OutputModality from .outputmodalityenum import OutputModalityEnum @@ -1981,6 +2000,7 @@ OutputShellCallOutputItemTypedDict, TypeExit, TypeTimeout, + UnknownOutcome, ) from .outputsubagentservertoolitem import ( OutputSubagentServerToolItem, @@ -2018,6 +2038,7 @@ TypeFindInPage, TypeOpenPage, TypeWebSearchCall, + UnknownAction, ) from .outputwebsearchservertoolitem import ( OutputWebSearchServerToolItem, @@ -2175,6 +2196,7 @@ from .reasoningdetailunion import ( ReasoningDetailUnion, ReasoningDetailUnionTypedDict, + UnknownReasoningDetailUnion, ) from .reasoningdoneevent import ( ReasoningDoneEvent, @@ -2366,7 +2388,7 @@ Variables, VariablesTypedDict, ) - from .streamevents import StreamEvents, StreamEventsTypedDict + from .streamevents import StreamEvents, StreamEventsTypedDict, UnknownStreamEvents from .streameventsresponsecompleted import ( StreamEventsResponseCompleted, StreamEventsResponseCompletedType, @@ -2498,6 +2520,7 @@ UnifiedBenchmarksResponseData, UnifiedBenchmarksResponseDataTypedDict, UnifiedBenchmarksResponseTypedDict, + UnknownUnifiedBenchmarksResponseData, ) from .unprocessableentityresponseerrordata import ( UnprocessableEntityResponseErrorData, @@ -4528,6 +4551,30 @@ "UniqueInsight", "UniqueInsightTypedDict", "Unit", + "UnknownAction", + "UnknownApplyPatchCallOperation", + "UnknownBaseInputsContent1", + "UnknownCapabilityDescriptor", + "UnknownChatContentItems", + "UnknownContentPartAddedEventPart", + "UnknownContentPartDoneEventPart", + "UnknownFormat", + "UnknownFormats", + "UnknownImageStreamingResponseData", + "UnknownObservabilityDestination", + "UnknownOpenAIResponseCustomToolCallOutputOutput1", + "UnknownOpenAIResponseFunctionToolCallOutputOutput1", + "UnknownOpenAIResponseInputMessageItemContent", + "UnknownOpenAIResponsesAnnotation", + "UnknownOpenResponsesResultToolUnion", + "UnknownOutcome", + "UnknownOutputCodeInterpreterCallItemOutputUnion", + "UnknownOutputItems", + "UnknownOutputMessageContent", + "UnknownOutputMessageItemContent", + "UnknownReasoningDetailUnion", + "UnknownStreamEvents", + "UnknownUnifiedBenchmarksResponseData", "UnprocessableEntityResponseErrorData", "UnprocessableEntityResponseErrorDataTypedDict", "UpdateBYOKKeyRequest", @@ -4768,6 +4815,7 @@ "ApplyPatchCallItemTypedDict": ".applypatchcallitem", "ApplyPatchCallOperation": ".applypatchcalloperation", "ApplyPatchCallOperationTypedDict": ".applypatchcalloperation", + "UnknownApplyPatchCallOperation": ".applypatchcalloperation", "ApplyPatchCallOperationDiffDeltaEvent": ".applypatchcalloperationdiffdeltaevent", "ApplyPatchCallOperationDiffDeltaEventType": ".applypatchcalloperationdiffdeltaevent", "ApplyPatchCallOperationDiffDeltaEventTypedDict": ".applypatchcalloperationdiffdeltaevent", @@ -4829,6 +4877,7 @@ "BaseInputsUnion1": ".baseinputs_union", "BaseInputsUnion1TypedDict": ".baseinputs_union", "BaseInputsUnionTypedDict": ".baseinputs_union", + "UnknownBaseInputsContent1": ".baseinputs_union", "BaseReasoningConfig": ".basereasoningconfig", "BaseReasoningConfigTypedDict": ".basereasoningconfig", "BashServerTool": ".bashservertool", @@ -4871,6 +4920,7 @@ "BYOKProviderSlug": ".byokproviderslug", "CapabilityDescriptor": ".capabilitydescriptor", "CapabilityDescriptorTypedDict": ".capabilitydescriptor", + "UnknownCapabilityDescriptor": ".capabilitydescriptor", "ChatAssistantImages": ".chatassistantimages", "ChatAssistantImagesImageURL": ".chatassistantimages", "ChatAssistantImagesImageURLTypedDict": ".chatassistantimages", @@ -4905,6 +4955,7 @@ "ChatContentImageTypedDict": ".chatcontentimage", "ChatContentItems": ".chatcontentitems", "ChatContentItemsTypedDict": ".chatcontentitems", + "UnknownChatContentItems": ".chatcontentitems", "ChatContentText": ".chatcontenttext", "ChatContentTextType": ".chatcontenttext", "ChatContentTextTypedDict": ".chatcontenttext", @@ -5079,6 +5130,7 @@ "ContentPartAddedEventPartTypedDict": ".contentpartaddedevent", "ContentPartAddedEventType": ".contentpartaddedevent", "ContentPartAddedEventTypedDict": ".contentpartaddedevent", + "UnknownContentPartAddedEventPart": ".contentpartaddedevent", "AudioURL": ".contentpartaudio", "AudioURLTypedDict": ".contentpartaudio", "ContentPartAudio": ".contentpartaudio", @@ -5089,6 +5141,7 @@ "ContentPartDoneEventPartTypedDict": ".contentpartdoneevent", "ContentPartDoneEventType": ".contentpartdoneevent", "ContentPartDoneEventTypedDict": ".contentpartdoneevent", + "UnknownContentPartDoneEventPart": ".contentpartdoneevent", "ContentPartImage": ".contentpartimage", "ContentPartImageImageURL": ".contentpartimage", "ContentPartImageImageURLTypedDict": ".contentpartimage", @@ -5145,6 +5198,7 @@ "FormatTypeText": ".customtool", "FormatTypedDict": ".customtool", "Syntax": ".customtool", + "UnknownFormat": ".customtool", "CustomToolCallInputDeltaEvent": ".customtoolcallinputdeltaevent", "CustomToolCallInputDeltaEventType": ".customtoolcallinputdeltaevent", "CustomToolCallInputDeltaEventTypedDict": ".customtoolcallinputdeltaevent", @@ -5268,6 +5322,7 @@ "FormatJSONSchemaConfigTypedDict": ".formatjsonschemaconfig", "Formats": ".formats", "FormatsTypedDict": ".formats", + "UnknownFormats": ".formats", "FormatTextConfig": ".formattextconfig", "FormatTextConfigType": ".formattextconfig", "FormatTextConfigTypedDict": ".formattextconfig", @@ -5473,6 +5528,7 @@ "ImageStreamingResponseData": ".imagestreamingresponse", "ImageStreamingResponseDataTypedDict": ".imagestreamingresponse", "ImageStreamingResponseTypedDict": ".imagestreamingresponse", + "UnknownImageStreamingResponseData": ".imagestreamingresponse", "IncompleteDetails": ".incompletedetails", "IncompleteDetailsTypedDict": ".incompletedetails", "Reason": ".incompletedetails", @@ -5820,6 +5876,7 @@ "ObservabilityDatadogDestinationTypedDict": ".observabilitydatadogdestination", "ObservabilityDestination": ".observabilitydestination", "ObservabilityDestinationTypedDict": ".observabilitydestination", + "UnknownObservabilityDestination": ".observabilitydestination", "FieldT": ".observabilityfilterrulesconfig", "Group": ".observabilityfilterrulesconfig", "GroupTypedDict": ".observabilityfilterrulesconfig", @@ -5908,6 +5965,7 @@ "OpenAIResponseCustomToolCallOutputOutput2TypedDict": ".openairesponsecustomtoolcalloutput", "OpenAIResponseCustomToolCallOutputType": ".openairesponsecustomtoolcalloutput", "OpenAIResponseCustomToolCallOutputTypedDict": ".openairesponsecustomtoolcalloutput", + "UnknownOpenAIResponseCustomToolCallOutputOutput1": ".openairesponsecustomtoolcalloutput", "OpenAIResponseFunctionToolCall": ".openairesponsefunctiontoolcall", "OpenAIResponseFunctionToolCallType": ".openairesponsefunctiontoolcall", "OpenAIResponseFunctionToolCallTypedDict": ".openairesponsefunctiontoolcall", @@ -5919,6 +5977,7 @@ "OpenAIResponseFunctionToolCallOutputStatus": ".openairesponsefunctiontoolcalloutput", "OpenAIResponseFunctionToolCallOutputType": ".openairesponsefunctiontoolcalloutput", "OpenAIResponseFunctionToolCallOutputTypedDict": ".openairesponsefunctiontoolcalloutput", + "UnknownOpenAIResponseFunctionToolCallOutputOutput1": ".openairesponsefunctiontoolcalloutput", "OpenAIResponseInputMessageItem": ".openairesponseinputmessageitem", "OpenAIResponseInputMessageItemContent": ".openairesponseinputmessageitem", "OpenAIResponseInputMessageItemContentTypedDict": ".openairesponseinputmessageitem", @@ -5929,8 +5988,10 @@ "OpenAIResponseInputMessageItemRoleUser": ".openairesponseinputmessageitem", "OpenAIResponseInputMessageItemType": ".openairesponseinputmessageitem", "OpenAIResponseInputMessageItemTypedDict": ".openairesponseinputmessageitem", + "UnknownOpenAIResponseInputMessageItemContent": ".openairesponseinputmessageitem", "OpenAIResponsesAnnotation": ".openairesponsesannotation", "OpenAIResponsesAnnotationTypedDict": ".openairesponsesannotation", + "UnknownOpenAIResponsesAnnotation": ".openairesponsesannotation", "OpenAIResponsesRefusalContent": ".openairesponsesrefusalcontent", "OpenAIResponsesRefusalContentType": ".openairesponsesrefusalcontent", "OpenAIResponsesRefusalContentTypedDict": ".openairesponsesrefusalcontent", @@ -5970,6 +6031,7 @@ "OpenResponsesResultToolUnionTypedDict": ".openresponsesresult", "OpenResponsesResultType": ".openresponsesresult", "OpenResponsesResultTypedDict": ".openresponsesresult", + "UnknownOpenResponsesResultToolUnion": ".openresponsesresult", "OpenRouterMetadata": ".openroutermetadata", "OpenRouterMetadataTypedDict": ".openroutermetadata", "OpenRouterWebSearchServerTool": ".openrouterwebsearchservertool", @@ -6001,6 +6063,7 @@ "OutputLogsTypedDict": ".outputcodeinterpretercallitem", "TypeCodeInterpreterCall": ".outputcodeinterpretercallitem", "TypeLogs": ".outputcodeinterpretercallitem", + "UnknownOutputCodeInterpreterCallItemOutputUnion": ".outputcodeinterpretercallitem", "OutputCodeInterpreterServerToolItem": ".outputcodeinterpreterservertoolitem", "OutputCodeInterpreterServerToolItemType": ".outputcodeinterpreterservertoolitem", "OutputCodeInterpreterServerToolItemTypedDict": ".outputcodeinterpreterservertoolitem", @@ -6048,6 +6111,7 @@ "OutputItemImageGenerationCallTypedDict": ".outputitemimagegenerationcall", "OutputItems": ".outputitems", "OutputItemsTypedDict": ".outputitems", + "UnknownOutputItems": ".outputitems", "OutputMcpServerToolItem": ".outputmcpservertoolitem", "OutputMcpServerToolItemType": ".outputmcpservertoolitem", "OutputMcpServerToolItemTypedDict": ".outputmcpservertoolitem", @@ -6070,6 +6134,7 @@ "OutputMessageStatusUnionTypedDict": ".outputmessage", "OutputMessageType": ".outputmessage", "OutputMessageTypedDict": ".outputmessage", + "UnknownOutputMessageContent": ".outputmessage", "OutputMessageItem": ".outputmessageitem", "OutputMessageItemContent": ".outputmessageitem", "OutputMessageItemContentTypedDict": ".outputmessageitem", @@ -6085,6 +6150,7 @@ "OutputMessageItemStatusUnionTypedDict": ".outputmessageitem", "OutputMessageItemType": ".outputmessageitem", "OutputMessageItemTypedDict": ".outputmessageitem", + "UnknownOutputMessageItemContent": ".outputmessageitem", "OutputModality": ".outputmodality", "OutputModalityEnum": ".outputmodalityenum", "OutputReasoningItem": ".outputreasoningitem", @@ -6116,6 +6182,7 @@ "OutputShellCallOutputItemTypedDict": ".outputshellcalloutputitem", "TypeExit": ".outputshellcalloutputitem", "TypeTimeout": ".outputshellcalloutputitem", + "UnknownOutcome": ".outputshellcalloutputitem", "OutputSubagentServerToolItem": ".outputsubagentservertoolitem", "OutputSubagentServerToolItemType": ".outputsubagentservertoolitem", "OutputSubagentServerToolItemTypedDict": ".outputsubagentservertoolitem", @@ -6143,6 +6210,7 @@ "TypeFindInPage": ".outputwebsearchcallitem", "TypeOpenPage": ".outputwebsearchcallitem", "TypeWebSearchCall": ".outputwebsearchcallitem", + "UnknownAction": ".outputwebsearchcallitem", "OutputWebSearchServerToolItem": ".outputwebsearchservertoolitem", "OutputWebSearchServerToolItemAction": ".outputwebsearchservertoolitem", "OutputWebSearchServerToolItemActionTypedDict": ".outputwebsearchservertoolitem", @@ -6258,6 +6326,7 @@ "ReasoningDetailTextTypedDict": ".reasoningdetailtext", "ReasoningDetailUnion": ".reasoningdetailunion", "ReasoningDetailUnionTypedDict": ".reasoningdetailunion", + "UnknownReasoningDetailUnion": ".reasoningdetailunion", "ReasoningDoneEvent": ".reasoningdoneevent", "ReasoningDoneEventType": ".reasoningdoneevent", "ReasoningDoneEventTypedDict": ".reasoningdoneevent", @@ -6389,6 +6458,7 @@ "VariablesTypedDict": ".storedprompttemplate", "StreamEvents": ".streamevents", "StreamEventsTypedDict": ".streamevents", + "UnknownStreamEvents": ".streamevents", "StreamEventsResponseCompleted": ".streameventsresponsecompleted", "StreamEventsResponseCompletedType": ".streameventsresponsecompleted", "StreamEventsResponseCompletedTypedDict": ".streameventsresponsecompleted", @@ -6482,6 +6552,7 @@ "UnifiedBenchmarksResponseData": ".unifiedbenchmarksresponse", "UnifiedBenchmarksResponseDataTypedDict": ".unifiedbenchmarksresponse", "UnifiedBenchmarksResponseTypedDict": ".unifiedbenchmarksresponse", + "UnknownUnifiedBenchmarksResponseData": ".unifiedbenchmarksresponse", "UnprocessableEntityResponseErrorData": ".unprocessableentityresponseerrordata", "UnprocessableEntityResponseErrorDataTypedDict": ".unprocessableentityresponseerrordata", "UpdateBYOKKeyRequest": ".updatebyokkeyrequest", @@ -6596,39 +6667,11 @@ } -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) diff --git a/src/openrouter/components/aabenchmarkentry.py b/src/openrouter/components/aabenchmarkentry.py index dcf36134..ad39bd97 100644 --- a/src/openrouter/components/aabenchmarkentry.py +++ b/src/openrouter/components/aabenchmarkentry.py @@ -31,30 +31,14 @@ class AABenchmarkEntry(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["agentic_index", "coding_index", "intelligence_index"] - 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 diff --git a/src/openrouter/components/activityitem.py b/src/openrouter/components/activityitem.py index 2f00349d..a234e6dd 100644 --- a/src/openrouter/components/activityitem.py +++ b/src/openrouter/components/activityitem.py @@ -64,3 +64,9 @@ class ActivityItem(BaseModel): usage: float r"""Total cost in USD (OpenRouter credits spent)""" + + +try: + ActivityItem.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/advisornestedtool.py b/src/openrouter/components/advisornestedtool.py index e21d2d23..b661de1e 100644 --- a/src/openrouter/components/advisornestedtool.py +++ b/src/openrouter/components/advisornestedtool.py @@ -1,9 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from openrouter.types import BaseModel, Nullable +from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL import pydantic -from pydantic import ConfigDict +from pydantic import ConfigDict, model_serializer from typing import Any, Dict, Optional from typing_extensions import NotRequired, TypedDict @@ -34,3 +34,22 @@ def additional_properties(self): @additional_properties.setter def additional_properties(self, value): self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["parameters"]) + 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)) + serialized.pop(k, serialized.pop(n, None)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + for k, v in serialized.items(): + m[k] = v + + return m diff --git a/src/openrouter/components/advisorreasoning.py b/src/openrouter/components/advisorreasoning.py index a2ab4386..0b87e3c6 100644 --- a/src/openrouter/components/advisorreasoning.py +++ b/src/openrouter/components/advisorreasoning.py @@ -1,11 +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 validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL, UnrecognizedStr +from pydantic import model_serializer from typing import Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict AdvisorReasoningEffort = Union[ @@ -35,10 +34,24 @@ class AdvisorReasoningTypedDict(TypedDict): class AdvisorReasoning(BaseModel): r"""Reasoning configuration forwarded to the advisor call. Use this to control reasoning effort and token budget for models that support extended thinking.""" - effort: Annotated[ - Optional[AdvisorReasoningEffort], PlainValidator(validate_open_enum(False)) - ] = None + effort: Optional[AdvisorReasoningEffort] = None r"""Reasoning effort level for the advisor call.""" max_tokens: Optional[int] = None r"""Maximum number of reasoning tokens the advisor may use.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["effort", "max_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 diff --git a/src/openrouter/components/advisorservertool_openrouter.py b/src/openrouter/components/advisorservertool_openrouter.py index 923d2636..ffec5519 100644 --- a/src/openrouter/components/advisorservertool_openrouter.py +++ b/src/openrouter/components/advisorservertool_openrouter.py @@ -5,7 +5,8 @@ AdvisorServerToolConfig, AdvisorServerToolConfigTypedDict, ) -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -28,3 +29,19 @@ class AdvisorServerToolOpenRouter(BaseModel): parameters: Optional[AdvisorServerToolConfig] = None r"""Configuration for one openrouter:advisor server tool entry.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["parameters"]) + 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 diff --git a/src/openrouter/components/advisorservertoolconfig.py b/src/openrouter/components/advisorservertoolconfig.py index 4540be9c..d92e19f8 100644 --- a/src/openrouter/components/advisorservertoolconfig.py +++ b/src/openrouter/components/advisorservertoolconfig.py @@ -3,7 +3,8 @@ from __future__ import annotations from .advisornestedtool import AdvisorNestedTool, AdvisorNestedToolTypedDict from .advisorreasoning import AdvisorReasoning, AdvisorReasoningTypedDict -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional from typing_extensions import NotRequired, TypedDict @@ -65,3 +66,32 @@ class AdvisorServerToolConfig(BaseModel): tools: Optional[List[AdvisorNestedTool]] = None r"""Tools the advisor sub-agent may use while forming its advice. The advisor runs as an agentic sub-agent over these tools, then returns its text. Only OpenRouter server tools are supported — function tools are rejected — and the list must not include the advisor tool itself.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "forward_transcript", + "instructions", + "max_completion_tokens", + "max_tool_calls", + "model", + "name", + "reasoning", + "stream", + "temperature", + "tools", + ] + ) + 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 diff --git a/src/openrouter/components/anthropicadvisormessageusageiteration.py b/src/openrouter/components/anthropicadvisormessageusageiteration.py index 86b0175b..7b83b750 100644 --- a/src/openrouter/components/anthropicadvisormessageusageiteration.py +++ b/src/openrouter/components/anthropicadvisormessageusageiteration.py @@ -47,36 +47,33 @@ class AnthropicAdvisorMessageUsageIteration(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "cache_creation", - "cache_creation_input_tokens", - "cache_read_input_tokens", - "input_tokens", - "output_tokens", - ] - nullable_fields = ["cache_creation"] - null_default_fields = [] - + optional_fields = set( + [ + "cache_creation", + "cache_creation_input_tokens", + "cache_read_input_tokens", + "input_tokens", + "output_tokens", + ] + ) + nullable_fields = set(["cache_creation"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/anthropicbase64imagesource.py b/src/openrouter/components/anthropicbase64imagesource.py index b49ef8ca..18b18404 100644 --- a/src/openrouter/components/anthropicbase64imagesource.py +++ b/src/openrouter/components/anthropicbase64imagesource.py @@ -3,10 +3,8 @@ from __future__ import annotations from .anthropicimagemimetype import AnthropicImageMimeType from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator from typing import Literal -from typing_extensions import Annotated, TypedDict +from typing_extensions import TypedDict AnthropicBase64ImageSourceType = Literal["base64",] @@ -21,8 +19,6 @@ class AnthropicBase64ImageSourceTypedDict(TypedDict): class AnthropicBase64ImageSource(BaseModel): data: str - media_type: Annotated[ - AnthropicImageMimeType, PlainValidator(validate_open_enum(False)) - ] + media_type: AnthropicImageMimeType type: AnthropicBase64ImageSourceType diff --git a/src/openrouter/components/anthropiccachecontroldirective.py b/src/openrouter/components/anthropiccachecontroldirective.py index 4b2567b5..a9292b2d 100644 --- a/src/openrouter/components/anthropiccachecontroldirective.py +++ b/src/openrouter/components/anthropiccachecontroldirective.py @@ -2,11 +2,10 @@ from __future__ import annotations from .anthropiccachecontrolttl import AnthropicCacheControlTTL -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict AnthropicCacheControlDirectiveType = Literal["ephemeral",] @@ -24,6 +23,20 @@ class AnthropicCacheControlDirective(BaseModel): type: AnthropicCacheControlDirectiveType - ttl: Annotated[ - Optional[AnthropicCacheControlTTL], PlainValidator(validate_open_enum(False)) - ] = None + ttl: Optional[AnthropicCacheControlTTL] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["ttl"]) + 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 diff --git a/src/openrouter/components/anthropiccitationcharlocationparam.py b/src/openrouter/components/anthropiccitationcharlocationparam.py index 08a89abd..4f0862e0 100644 --- a/src/openrouter/components/anthropiccitationcharlocationparam.py +++ b/src/openrouter/components/anthropiccitationcharlocationparam.py @@ -34,30 +34,14 @@ class AnthropicCitationCharLocationParam(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["document_title"] - 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 diff --git a/src/openrouter/components/anthropiccitationcontentblocklocationparam.py b/src/openrouter/components/anthropiccitationcontentblocklocationparam.py index 8763d42f..7bdfee1f 100644 --- a/src/openrouter/components/anthropiccitationcontentblocklocationparam.py +++ b/src/openrouter/components/anthropiccitationcontentblocklocationparam.py @@ -34,30 +34,14 @@ class AnthropicCitationContentBlockLocationParam(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["document_title"] - 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 diff --git a/src/openrouter/components/anthropiccitationpagelocationparam.py b/src/openrouter/components/anthropiccitationpagelocationparam.py index 24af0c24..cbe0a66b 100644 --- a/src/openrouter/components/anthropiccitationpagelocationparam.py +++ b/src/openrouter/components/anthropiccitationpagelocationparam.py @@ -34,30 +34,14 @@ class AnthropicCitationPageLocationParam(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["document_title"] - 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 diff --git a/src/openrouter/components/anthropiccitationsearchresultlocation.py b/src/openrouter/components/anthropiccitationsearchresultlocation.py index 2c3548be..8a90ed4f 100644 --- a/src/openrouter/components/anthropiccitationsearchresultlocation.py +++ b/src/openrouter/components/anthropiccitationsearchresultlocation.py @@ -37,30 +37,14 @@ class AnthropicCitationSearchResultLocation(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["title"] - 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 diff --git a/src/openrouter/components/anthropiccitationwebsearchresultlocation.py b/src/openrouter/components/anthropiccitationwebsearchresultlocation.py index e64d1692..4d061c61 100644 --- a/src/openrouter/components/anthropiccitationwebsearchresultlocation.py +++ b/src/openrouter/components/anthropiccitationwebsearchresultlocation.py @@ -31,30 +31,14 @@ class AnthropicCitationWebSearchResultLocation(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["title"] - 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 diff --git a/src/openrouter/components/anthropiccompactionusageiteration.py b/src/openrouter/components/anthropiccompactionusageiteration.py index 5b00555a..50ad24f3 100644 --- a/src/openrouter/components/anthropiccompactionusageiteration.py +++ b/src/openrouter/components/anthropiccompactionusageiteration.py @@ -44,36 +44,33 @@ class AnthropicCompactionUsageIteration(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "cache_creation", - "cache_creation_input_tokens", - "cache_read_input_tokens", - "input_tokens", - "output_tokens", - ] - nullable_fields = ["cache_creation"] - null_default_fields = [] - + optional_fields = set( + [ + "cache_creation", + "cache_creation_input_tokens", + "cache_read_input_tokens", + "input_tokens", + "output_tokens", + ] + ) + nullable_fields = set(["cache_creation"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/anthropicdocumentblockparam.py b/src/openrouter/components/anthropicdocumentblockparam.py index 9aef9c76..686764bb 100644 --- a/src/openrouter/components/anthropicdocumentblockparam.py +++ b/src/openrouter/components/anthropicdocumentblockparam.py @@ -46,6 +46,22 @@ class AnthropicDocumentBlockParamCitationsTypedDict(TypedDict): class AnthropicDocumentBlockParamCitations(BaseModel): enabled: Optional[bool] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["enabled"]) + 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 + AnthropicDocumentBlockParamContent1TypedDict = TypeAliasType( "AnthropicDocumentBlockParamContent1TypedDict", @@ -141,30 +157,25 @@ class AnthropicDocumentBlockParam(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["cache_control", "citations", "context", "title"] - nullable_fields = ["citations", "context", "title"] - null_default_fields = [] - + optional_fields = set(["cache_control", "citations", "context", "title"]) + nullable_fields = set(["citations", "context", "title"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/anthropicimageblockparam.py b/src/openrouter/components/anthropicimageblockparam.py index 05e67737..979d0464 100644 --- a/src/openrouter/components/anthropicimageblockparam.py +++ b/src/openrouter/components/anthropicimageblockparam.py @@ -13,9 +13,9 @@ AnthropicURLImageSource, AnthropicURLImageSourceTypedDict, ) -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL from openrouter.utils import get_discriminator -from pydantic import Discriminator, Tag +from pydantic import Discriminator, Tag, model_serializer from typing import Literal, Optional, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict @@ -52,3 +52,19 @@ class AnthropicImageBlockParam(BaseModel): cache_control: Optional[AnthropicCacheControlDirective] = None r"""Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["cache_control"]) + 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 diff --git a/src/openrouter/components/anthropiciterationcachecreation.py b/src/openrouter/components/anthropiciterationcachecreation.py index 94477718..b32195eb 100644 --- a/src/openrouter/components/anthropiciterationcachecreation.py +++ b/src/openrouter/components/anthropiciterationcachecreation.py @@ -1,7 +1,8 @@ """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 pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -15,3 +16,21 @@ class AnthropicIterationCacheCreation(BaseModel): ephemeral_1h_input_tokens: Optional[int] = None ephemeral_5m_input_tokens: Optional[int] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["ephemeral_1h_input_tokens", "ephemeral_5m_input_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 diff --git a/src/openrouter/components/anthropicmessageusageiteration.py b/src/openrouter/components/anthropicmessageusageiteration.py index 0c76c289..49e169b4 100644 --- a/src/openrouter/components/anthropicmessageusageiteration.py +++ b/src/openrouter/components/anthropicmessageusageiteration.py @@ -47,37 +47,34 @@ class AnthropicMessageUsageIteration(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "cache_creation", - "cache_creation_input_tokens", - "cache_read_input_tokens", - "input_tokens", - "output_tokens", - "model", - ] - nullable_fields = ["cache_creation"] - null_default_fields = [] - + optional_fields = set( + [ + "cache_creation", + "cache_creation_input_tokens", + "cache_read_input_tokens", + "input_tokens", + "output_tokens", + "model", + ] + ) + nullable_fields = set(["cache_creation"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/anthropicsearchresultblockparam.py b/src/openrouter/components/anthropicsearchresultblockparam.py index f953ecdc..59257329 100644 --- a/src/openrouter/components/anthropicsearchresultblockparam.py +++ b/src/openrouter/components/anthropicsearchresultblockparam.py @@ -9,7 +9,8 @@ AnthropicTextBlockParam, AnthropicTextBlockParamTypedDict, ) -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -21,6 +22,22 @@ class AnthropicSearchResultBlockParamCitationsTypedDict(TypedDict): class AnthropicSearchResultBlockParamCitations(BaseModel): enabled: Optional[bool] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["enabled"]) + 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 + AnthropicSearchResultBlockParamType = Literal["search_result",] @@ -48,3 +65,19 @@ class AnthropicSearchResultBlockParam(BaseModel): r"""Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models.""" citations: Optional[AnthropicSearchResultBlockParamCitations] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["cache_control", "citations"]) + 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 diff --git a/src/openrouter/components/anthropictextblockparam.py b/src/openrouter/components/anthropictextblockparam.py index 38b493a3..ed10fdcf 100644 --- a/src/openrouter/components/anthropictextblockparam.py +++ b/src/openrouter/components/anthropictextblockparam.py @@ -89,30 +89,25 @@ class AnthropicTextBlockParam(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["cache_control", "citations"] - nullable_fields = ["citations"] - null_default_fields = [] - + optional_fields = set(["cache_control", "citations"]) + nullable_fields = set(["citations"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/anthropicunknownusageiteration.py b/src/openrouter/components/anthropicunknownusageiteration.py index 5bbd2e0f..2bf0af88 100644 --- a/src/openrouter/components/anthropicunknownusageiteration.py +++ b/src/openrouter/components/anthropicunknownusageiteration.py @@ -41,36 +41,33 @@ class AnthropicUnknownUsageIteration(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "cache_creation", - "cache_creation_input_tokens", - "cache_read_input_tokens", - "input_tokens", - "output_tokens", - ] - nullable_fields = ["cache_creation"] - null_default_fields = [] - + optional_fields = set( + [ + "cache_creation", + "cache_creation_input_tokens", + "cache_read_input_tokens", + "input_tokens", + "output_tokens", + ] + ) + nullable_fields = set(["cache_creation"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/anthropicwebsearchresultblockparam.py b/src/openrouter/components/anthropicwebsearchresultblockparam.py index b9df82ce..fbd558ee 100644 --- a/src/openrouter/components/anthropicwebsearchresultblockparam.py +++ b/src/openrouter/components/anthropicwebsearchresultblockparam.py @@ -37,30 +37,25 @@ class AnthropicWebSearchResultBlockParam(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["page_age"] - nullable_fields = ["page_age"] - null_default_fields = [] - + optional_fields = set(["page_age"]) + nullable_fields = set(["page_age"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/anthropicwebsearchtooluserlocation.py b/src/openrouter/components/anthropicwebsearchtooluserlocation.py index 888de6cb..194443c5 100644 --- a/src/openrouter/components/anthropicwebsearchtooluserlocation.py +++ b/src/openrouter/components/anthropicwebsearchtooluserlocation.py @@ -37,30 +37,25 @@ class AnthropicWebSearchToolUserLocation(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["city", "country", "region", "timezone"] - nullable_fields = ["city", "country", "region", "timezone"] - null_default_fields = [] - + optional_fields = set(["city", "country", "region", "timezone"]) + nullable_fields = set(["city", "country", "region", "timezone"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/applypatchcallitem.py b/src/openrouter/components/applypatchcallitem.py index 1a5f1e02..798b10eb 100644 --- a/src/openrouter/components/applypatchcallitem.py +++ b/src/openrouter/components/applypatchcallitem.py @@ -13,11 +13,9 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Literal -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict ApplyPatchCallItemType = Literal["apply_patch_call",] @@ -43,7 +41,7 @@ class ApplyPatchCallItem(BaseModel): operation: ApplyPatchCallOperation r"""The patch operation requested by an `apply_patch_call`. `create_file` and `update_file` carry a V4A diff; `delete_file` omits it.""" - status: Annotated[ApplyPatchCallStatus, PlainValidator(validate_open_enum(False))] + status: ApplyPatchCallStatus r"""Lifecycle state of an `apply_patch_call` output item.""" type: ApplyPatchCallItemType @@ -52,30 +50,25 @@ class ApplyPatchCallItem(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["id"] - nullable_fields = ["id"] - null_default_fields = [] - + optional_fields = set(["id"]) + nullable_fields = set(["id"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/applypatchcalloperation.py b/src/openrouter/components/applypatchcalloperation.py index f0188f44..44452946 100644 --- a/src/openrouter/components/applypatchcalloperation.py +++ b/src/openrouter/components/applypatchcalloperation.py @@ -13,9 +13,12 @@ ApplyPatchUpdateFileOperation, ApplyPatchUpdateFileOperationTypedDict, ) -from openrouter.utils import get_discriminator -from pydantic import Discriminator, Tag -from typing import Union +from functools import partial +from openrouter.types import BaseModel +from openrouter.utils.unions import parse_open_union +from pydantic import ConfigDict +from pydantic.functional_validators import BeforeValidator +from typing import Any, Literal, Union from typing_extensions import Annotated, TypeAliasType @@ -30,12 +33,38 @@ r"""The patch operation requested by an `apply_patch_call`. `create_file` and `update_file` carry a V4A diff; `delete_file` omits it.""" +class UnknownApplyPatchCallOperation(BaseModel): + r"""A ApplyPatchCallOperation variant the SDK doesn't recognize. Preserves the raw payload.""" + + type: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_APPLY_PATCH_CALL_OPERATION_VARIANTS: dict[str, Any] = { + "create_file": ApplyPatchCreateFileOperation, + "delete_file": ApplyPatchDeleteFileOperation, + "update_file": ApplyPatchUpdateFileOperation, +} + + ApplyPatchCallOperation = Annotated[ Union[ - Annotated[ApplyPatchCreateFileOperation, Tag("create_file")], - Annotated[ApplyPatchDeleteFileOperation, Tag("delete_file")], - Annotated[ApplyPatchUpdateFileOperation, Tag("update_file")], + ApplyPatchCreateFileOperation, + ApplyPatchDeleteFileOperation, + ApplyPatchUpdateFileOperation, + UnknownApplyPatchCallOperation, ], - Discriminator(lambda m: get_discriminator(m, "type", "type")), + BeforeValidator( + partial( + parse_open_union, + disc_key="type", + variants=_APPLY_PATCH_CALL_OPERATION_VARIANTS, + unknown_cls=UnknownApplyPatchCallOperation, + union_name="ApplyPatchCallOperation", + ) + ), ] r"""The patch operation requested by an `apply_patch_call`. `create_file` and `update_file` carry a V4A diff; `delete_file` omits it.""" diff --git a/src/openrouter/components/applypatchcalloutputitem.py b/src/openrouter/components/applypatchcalloutputitem.py index 1b768e6e..7d543c9b 100644 --- a/src/openrouter/components/applypatchcalloutputitem.py +++ b/src/openrouter/components/applypatchcalloutputitem.py @@ -9,11 +9,9 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Literal, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict ApplyPatchCallOutputItemStatus = Union[ @@ -43,9 +41,7 @@ class ApplyPatchCallOutputItem(BaseModel): call_id: str - status: Annotated[ - ApplyPatchCallOutputItemStatus, PlainValidator(validate_open_enum(False)) - ] + status: ApplyPatchCallOutputItemStatus type: ApplyPatchCallOutputItemType @@ -55,30 +51,25 @@ class ApplyPatchCallOutputItem(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["id", "output"] - nullable_fields = ["id", "output"] - null_default_fields = [] - + optional_fields = set(["id", "output"]) + nullable_fields = set(["id", "output"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/applypatchservertool_openrouter.py b/src/openrouter/components/applypatchservertool_openrouter.py index 158c52b8..daf2de61 100644 --- a/src/openrouter/components/applypatchservertool_openrouter.py +++ b/src/openrouter/components/applypatchservertool_openrouter.py @@ -5,7 +5,8 @@ ApplyPatchServerToolConfig, ApplyPatchServerToolConfigTypedDict, ) -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -28,3 +29,19 @@ class ApplyPatchServerToolOpenRouter(BaseModel): parameters: Optional[ApplyPatchServerToolConfig] = None r"""Configuration for the openrouter:apply_patch server tool""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["parameters"]) + 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 diff --git a/src/openrouter/components/applypatchservertoolconfig.py b/src/openrouter/components/applypatchservertoolconfig.py index 61d5a3b4..62209939 100644 --- a/src/openrouter/components/applypatchservertoolconfig.py +++ b/src/openrouter/components/applypatchservertoolconfig.py @@ -2,11 +2,10 @@ from __future__ import annotations from .applypatchengineenum import ApplyPatchEngineEnum -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class ApplyPatchServerToolConfigTypedDict(TypedDict): @@ -19,7 +18,21 @@ class ApplyPatchServerToolConfigTypedDict(TypedDict): class ApplyPatchServerToolConfig(BaseModel): r"""Configuration for the openrouter:apply_patch server tool""" - engine: Annotated[ - Optional[ApplyPatchEngineEnum], PlainValidator(validate_open_enum(False)) - ] = None + engine: Optional[ApplyPatchEngineEnum] = None r"""Which apply_patch engine to use. \"auto\" (default) uses native passthrough when the endpoint advertises native apply_patch support, otherwise falls back to OpenRouter's HITL validator. \"native\" forces native passthrough — when the endpoint does not support native, the request falls back to HITL. \"openrouter\" always runs the HITL validator. Native passthrough streams the diff incrementally via `apply_patch_call_operation_diff.delta` events; HITL buffers the diff for atomic delivery as a single delta.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["engine"]) + 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 diff --git a/src/openrouter/components/autorouterplugin.py b/src/openrouter/components/autorouterplugin.py index 665aaa0a..64a07155 100644 --- a/src/openrouter/components/autorouterplugin.py +++ b/src/openrouter/components/autorouterplugin.py @@ -1,7 +1,8 @@ """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 pydantic import model_serializer from typing import List, Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -30,3 +31,19 @@ class AutoRouterPlugin(BaseModel): enabled: Optional[bool] = None r"""Set to false to disable the auto-router plugin for this request. Defaults to true.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["allowed_models", "cost_quality_tradeoff", "enabled"]) + 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 diff --git a/src/openrouter/components/badgatewayresponseerrordata.py b/src/openrouter/components/badgatewayresponseerrordata.py index c1740ad4..08905537 100644 --- a/src/openrouter/components/badgatewayresponseerrordata.py +++ b/src/openrouter/components/badgatewayresponseerrordata.py @@ -32,30 +32,25 @@ class BadGatewayResponseErrorData(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["metadata"] - nullable_fields = ["metadata"] - null_default_fields = [] - + optional_fields = set(["metadata"]) + nullable_fields = set(["metadata"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/badrequestresponseerrordata.py b/src/openrouter/components/badrequestresponseerrordata.py index caaacbde..c59b958c 100644 --- a/src/openrouter/components/badrequestresponseerrordata.py +++ b/src/openrouter/components/badrequestresponseerrordata.py @@ -32,30 +32,25 @@ class BadRequestResponseErrorData(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["metadata"] - nullable_fields = ["metadata"] - null_default_fields = [] - + optional_fields = set(["metadata"]) + nullable_fields = set(["metadata"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/baseinputs_union.py b/src/openrouter/components/baseinputs_union.py index 25128bdb..56b48e74 100644 --- a/src/openrouter/components/baseinputs_union.py +++ b/src/openrouter/components/baseinputs_union.py @@ -35,6 +35,7 @@ OutputItemImageGenerationCallTypedDict, ) from .outputmessage import OutputMessage, OutputMessageTypedDict +from functools import partial from openrouter.types import ( BaseModel, Nullable, @@ -42,8 +43,9 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import get_discriminator -from pydantic import Discriminator, Tag, model_serializer +from openrouter.utils.unions import parse_open_union +from pydantic import ConfigDict, model_serializer +from pydantic.functional_validators import BeforeValidator from typing import Any, List, Literal, Optional, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict @@ -56,14 +58,35 @@ ) +class UnknownBaseInputsContent1(BaseModel): + r"""A BaseInputsContent1 variant the SDK doesn't recognize. Preserves the raw payload.""" + + type: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_BASE_INPUTS_CONTENT_1_VARIANTS: dict[str, Any] = { + "input_audio": InputAudio, + "input_file": InputFile, + "input_image": InputImage, + "input_text": InputText, +} + + BaseInputsContent1 = Annotated[ - Union[ - Annotated[InputAudio, Tag("input_audio")], - Annotated[InputFile, Tag("input_file")], - Annotated[InputImage, Tag("input_image")], - Annotated[InputText, Tag("input_text")], - ], - Discriminator(lambda m: get_discriminator(m, "type", "type")), + Union[InputAudio, InputFile, InputImage, InputText, UnknownBaseInputsContent1], + BeforeValidator( + partial( + parse_open_union, + disc_key="type", + variants=_BASE_INPUTS_CONTENT_1_VARIANTS, + unknown_cls=UnknownBaseInputsContent1, + union_name="BaseInputsContent1", + ) + ), ] @@ -150,31 +173,26 @@ class BaseInputsMessage(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["phase", "type"] - nullable_fields = ["phase"] - null_default_fields = [] - + optional_fields = set(["phase", "type"]) + nullable_fields = set(["phase"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/basereasoningconfig.py b/src/openrouter/components/basereasoningconfig.py index 22bd9825..35d8ea77 100644 --- a/src/openrouter/components/basereasoningconfig.py +++ b/src/openrouter/components/basereasoningconfig.py @@ -10,10 +10,8 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class BaseReasoningConfigTypedDict(TypedDict): @@ -22,41 +20,31 @@ class BaseReasoningConfigTypedDict(TypedDict): class BaseReasoningConfig(BaseModel): - effort: Annotated[ - OptionalNullable[ReasoningEffort], PlainValidator(validate_open_enum(False)) - ] = UNSET + effort: OptionalNullable[ReasoningEffort] = UNSET - summary: Annotated[ - OptionalNullable[ReasoningSummaryVerbosity], - PlainValidator(validate_open_enum(False)), - ] = UNSET + summary: OptionalNullable[ReasoningSummaryVerbosity] = UNSET @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["effort", "summary"] - nullable_fields = ["effort", "summary"] - null_default_fields = [] - + optional_fields = set(["effort", "summary"]) + nullable_fields = set(["effort", "summary"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/bashservertool.py b/src/openrouter/components/bashservertool.py index a3021f92..b2a50762 100644 --- a/src/openrouter/components/bashservertool.py +++ b/src/openrouter/components/bashservertool.py @@ -2,7 +2,8 @@ from __future__ import annotations from .bashservertoolconfig import BashServerToolConfig, BashServerToolConfigTypedDict -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -25,3 +26,19 @@ class BashServerTool(BaseModel): parameters: Optional[BashServerToolConfig] = None r"""Configuration for the openrouter:bash server tool""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["parameters"]) + 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 diff --git a/src/openrouter/components/bashservertoolconfig.py b/src/openrouter/components/bashservertoolconfig.py index 4ccf38dd..7bb32209 100644 --- a/src/openrouter/components/bashservertoolconfig.py +++ b/src/openrouter/components/bashservertoolconfig.py @@ -6,11 +6,10 @@ BashServerToolEnvironment, BashServerToolEnvironmentTypedDict, ) -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class BashServerToolConfigTypedDict(TypedDict): @@ -27,9 +26,7 @@ class BashServerToolConfigTypedDict(TypedDict): class BashServerToolConfig(BaseModel): r"""Configuration for the openrouter:bash server tool""" - engine: Annotated[ - Optional[BashServerToolEngine], PlainValidator(validate_open_enum(False)) - ] = None + engine: Optional[BashServerToolEngine] = None r"""Which bash engine to use. \"openrouter\" runs commands server-side in the OpenRouter sandbox. \"auto\" (default) and \"native\" use native passthrough, returning the tool call to your application to run client-side; OpenRouter does not execute the commands.""" environment: Optional[BashServerToolEnvironment] = None @@ -37,3 +34,19 @@ class BashServerToolConfig(BaseModel): sleep_after_seconds: Optional[int] = None r"""How long (in seconds) the container stays warm after its last command before sleeping, freeing its capacity slot. Idle-based: each command renews the timer. Defaults to 900 (15 minutes); capped at 2592000 (30 days).""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["engine", "environment", "sleep_after_seconds"]) + 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 diff --git a/src/openrouter/components/byokkey.py b/src/openrouter/components/byokkey.py index 033a6f36..47ef267b 100644 --- a/src/openrouter/components/byokkey.py +++ b/src/openrouter/components/byokkey.py @@ -9,11 +9,9 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import List -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class BYOKKeyTypedDict(TypedDict): @@ -68,7 +66,7 @@ class BYOKKey(BaseModel): label: str r"""Short masked snippet of the key (e.g. the first/last few characters) used to identify it in the UI.""" - provider: Annotated[BYOKProviderSlug, PlainValidator(validate_open_enum(False))] + provider: BYOKProviderSlug r"""The upstream provider this credential authenticates against, as a lowercase slug (e.g. `openai`, `anthropic`, `amazon-bedrock`).""" sort_order: int @@ -82,35 +80,27 @@ class BYOKKey(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["name"] - nullable_fields = [ - "allowed_api_key_hashes", - "allowed_models", - "allowed_user_ids", - "name", - ] - null_default_fields = [] - + optional_fields = set(["name"]) + nullable_fields = set( + ["allowed_api_key_hashes", "allowed_models", "allowed_user_ids", "name"] + ) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/capabilitydescriptor.py b/src/openrouter/components/capabilitydescriptor.py index 3b40c65b..a1cb577d 100644 --- a/src/openrouter/components/capabilitydescriptor.py +++ b/src/openrouter/components/capabilitydescriptor.py @@ -4,9 +4,12 @@ from .booleancapability import BooleanCapability, BooleanCapabilityTypedDict from .enumcapability import EnumCapability, EnumCapabilityTypedDict from .rangecapability import RangeCapability, RangeCapabilityTypedDict -from openrouter.utils import get_discriminator -from pydantic import Discriminator, Tag -from typing import Union +from functools import partial +from openrouter.types import BaseModel +from openrouter.utils.unions import parse_open_union +from pydantic import ConfigDict +from pydantic.functional_validators import BeforeValidator +from typing import Any, Literal, Union from typing_extensions import Annotated, TypeAliasType @@ -19,12 +22,35 @@ r"""A typed descriptor for one supported request parameter.""" +class UnknownCapabilityDescriptor(BaseModel): + r"""A CapabilityDescriptor variant the SDK doesn't recognize. Preserves the raw payload.""" + + type: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_CAPABILITY_DESCRIPTOR_VARIANTS: dict[str, Any] = { + "enum": EnumCapability, + "range": RangeCapability, + "boolean": BooleanCapability, +} + + CapabilityDescriptor = Annotated[ Union[ - Annotated[EnumCapability, Tag("enum")], - Annotated[RangeCapability, Tag("range")], - Annotated[BooleanCapability, Tag("boolean")], + EnumCapability, RangeCapability, BooleanCapability, UnknownCapabilityDescriptor ], - Discriminator(lambda m: get_discriminator(m, "type", "type")), + BeforeValidator( + partial( + parse_open_union, + disc_key="type", + variants=_CAPABILITY_DESCRIPTOR_VARIANTS, + unknown_cls=UnknownCapabilityDescriptor, + union_name="CapabilityDescriptor", + ) + ), ] r"""A typed descriptor for one supported request parameter.""" diff --git a/src/openrouter/components/chatassistantmessage.py b/src/openrouter/components/chatassistantmessage.py index 60b919a3..f000d908 100644 --- a/src/openrouter/components/chatassistantmessage.py +++ b/src/openrouter/components/chatassistantmessage.py @@ -87,39 +87,36 @@ class ChatAssistantMessage(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "audio", - "content", - "images", - "name", - "reasoning", - "reasoning_details", - "refusal", - "tool_calls", - ] - nullable_fields = ["content", "reasoning", "refusal"] - null_default_fields = [] - + optional_fields = set( + [ + "audio", + "content", + "images", + "name", + "reasoning", + "reasoning_details", + "refusal", + "tool_calls", + ] + ) + nullable_fields = set(["content", "reasoning", "refusal"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/chataudiooutput.py b/src/openrouter/components/chataudiooutput.py index 0ce4edfd..7b5a13be 100644 --- a/src/openrouter/components/chataudiooutput.py +++ b/src/openrouter/components/chataudiooutput.py @@ -1,7 +1,8 @@ """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 pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -33,3 +34,19 @@ class ChatAudioOutput(BaseModel): transcript: Optional[str] = None r"""Audio transcript""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["data", "expires_at", "id", "transcript"]) + 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 diff --git a/src/openrouter/components/chatchoice.py b/src/openrouter/components/chatchoice.py index 86517592..c15a10e6 100644 --- a/src/openrouter/components/chatchoice.py +++ b/src/openrouter/components/chatchoice.py @@ -11,10 +11,8 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class ChatChoiceTypedDict(TypedDict): @@ -32,9 +30,7 @@ class ChatChoiceTypedDict(TypedDict): class ChatChoice(BaseModel): r"""Chat completion choice""" - finish_reason: Annotated[ - Nullable[ChatFinishReasonEnum], PlainValidator(validate_open_enum(False)) - ] + finish_reason: Nullable[ChatFinishReasonEnum] index: int r"""Choice index""" @@ -47,30 +43,25 @@ class ChatChoice(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["logprobs"] - nullable_fields = ["finish_reason", "logprobs"] - null_default_fields = [] - + optional_fields = set(["logprobs"]) + nullable_fields = set(["finish_reason", "logprobs"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/chatcontentaudio.py b/src/openrouter/components/chatcontentaudio.py index ad506c0e..b937a2df 100644 --- a/src/openrouter/components/chatcontentaudio.py +++ b/src/openrouter/components/chatcontentaudio.py @@ -38,3 +38,9 @@ class ChatContentAudio(BaseModel): input_audio: ChatContentAudioInputAudio type: ChatContentAudioType + + +try: + ChatContentAudioInputAudio.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/chatcontentcachecontrol.py b/src/openrouter/components/chatcontentcachecontrol.py index 7263adce..e23d4050 100644 --- a/src/openrouter/components/chatcontentcachecontrol.py +++ b/src/openrouter/components/chatcontentcachecontrol.py @@ -2,11 +2,10 @@ from __future__ import annotations from .anthropiccachecontrolttl import AnthropicCacheControlTTL -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict ChatContentCacheControlType = Literal["ephemeral",] @@ -24,6 +23,20 @@ class ChatContentCacheControl(BaseModel): type: ChatContentCacheControlType - ttl: Annotated[ - Optional[AnthropicCacheControlTTL], PlainValidator(validate_open_enum(False)) - ] = None + ttl: Optional[AnthropicCacheControlTTL] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["ttl"]) + 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 diff --git a/src/openrouter/components/chatcontentfile.py b/src/openrouter/components/chatcontentfile.py index e737cbd7..07d3d043 100644 --- a/src/openrouter/components/chatcontentfile.py +++ b/src/openrouter/components/chatcontentfile.py @@ -1,7 +1,8 @@ """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 pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -25,6 +26,22 @@ class File(BaseModel): filename: Optional[str] = None r"""Original filename""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["file_data", "file_id", "filename"]) + 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 + ChatContentFileType = Literal["file",] diff --git a/src/openrouter/components/chatcontentimage.py b/src/openrouter/components/chatcontentimage.py index 45430fd3..44c4909c 100644 --- a/src/openrouter/components/chatcontentimage.py +++ b/src/openrouter/components/chatcontentimage.py @@ -1,11 +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 validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL, UnrecognizedStr +from pydantic import model_serializer from typing import Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict ChatContentImageDetail = Union[ @@ -31,11 +30,25 @@ class ChatContentImageImageURL(BaseModel): url: str r"""URL of the image (data: URLs supported)""" - detail: Annotated[ - Optional[ChatContentImageDetail], PlainValidator(validate_open_enum(False)) - ] = None + detail: Optional[ChatContentImageDetail] = None r"""Image detail level for vision models. `original` is an OpenRouter extension (not in the OpenAI Chat Completions spec) requesting true original-resolution media; it is downgraded to `high` for providers that lack an original-resolution tier.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["detail"]) + 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 + ChatContentImageType = Literal["image_url",] diff --git a/src/openrouter/components/chatcontentitems.py b/src/openrouter/components/chatcontentitems.py index cb153a03..61415b0c 100644 --- a/src/openrouter/components/chatcontentitems.py +++ b/src/openrouter/components/chatcontentitems.py @@ -10,9 +10,12 @@ LegacyChatContentVideo, LegacyChatContentVideoTypedDict, ) -from openrouter.utils import get_discriminator -from pydantic import Discriminator, Tag -from typing import Union +from functools import partial +from openrouter.types import BaseModel +from openrouter.utils.unions import parse_open_union +from pydantic import ConfigDict +from pydantic.functional_validators import BeforeValidator +from typing import Any, Literal, Union from typing_extensions import Annotated, TypeAliasType @@ -30,15 +33,44 @@ r"""Content part for chat completion messages""" +class UnknownChatContentItems(BaseModel): + r"""A ChatContentItems variant the SDK doesn't recognize. Preserves the raw payload.""" + + type: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_CHAT_CONTENT_ITEMS_VARIANTS: dict[str, Any] = { + "file": ChatContentFile, + "image_url": ChatContentImage, + "input_audio": ChatContentAudio, + "input_video": LegacyChatContentVideo, + "text": ChatContentText, + "video_url": ChatContentVideo, +} + + ChatContentItems = Annotated[ Union[ - Annotated[ChatContentFile, Tag("file")], - Annotated[ChatContentImage, Tag("image_url")], - Annotated[ChatContentAudio, Tag("input_audio")], - Annotated[LegacyChatContentVideo, Tag("input_video")], - Annotated[ChatContentText, Tag("text")], - Annotated[ChatContentVideo, Tag("video_url")], + ChatContentFile, + ChatContentImage, + ChatContentAudio, + LegacyChatContentVideo, + ChatContentText, + ChatContentVideo, + UnknownChatContentItems, ], - Discriminator(lambda m: get_discriminator(m, "type", "type")), + BeforeValidator( + partial( + parse_open_union, + disc_key="type", + variants=_CHAT_CONTENT_ITEMS_VARIANTS, + unknown_cls=UnknownChatContentItems, + union_name="ChatContentItems", + ) + ), ] r"""Content part for chat completion messages""" diff --git a/src/openrouter/components/chatcontenttext.py b/src/openrouter/components/chatcontenttext.py index 4367bde9..86d0a046 100644 --- a/src/openrouter/components/chatcontenttext.py +++ b/src/openrouter/components/chatcontenttext.py @@ -5,7 +5,8 @@ ChatContentCacheControl, ChatContentCacheControlTypedDict, ) -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -31,3 +32,19 @@ class ChatContentText(BaseModel): cache_control: Optional[ChatContentCacheControl] = None r"""Cache control for the content part""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["cache_control"]) + 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 diff --git a/src/openrouter/components/chatdebugoptions.py b/src/openrouter/components/chatdebugoptions.py index 777d93ef..309df101 100644 --- a/src/openrouter/components/chatdebugoptions.py +++ b/src/openrouter/components/chatdebugoptions.py @@ -1,7 +1,8 @@ """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 pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -18,3 +19,19 @@ class ChatDebugOptions(BaseModel): echo_upstream_body: Optional[bool] = None r"""If true, includes the transformed upstream request body in a debug chunk at the start of the stream. Only works with streaming mode.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["echo_upstream_body"]) + 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 diff --git a/src/openrouter/components/chatdevelopermessage.py b/src/openrouter/components/chatdevelopermessage.py index 175218a9..56dcbb97 100644 --- a/src/openrouter/components/chatdevelopermessage.py +++ b/src/openrouter/components/chatdevelopermessage.py @@ -2,7 +2,8 @@ from __future__ import annotations from .chatcontenttext import ChatContentText, ChatContentTextTypedDict -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Literal, Optional, Union from typing_extensions import NotRequired, TypeAliasType, TypedDict @@ -42,3 +43,19 @@ class ChatDeveloperMessage(BaseModel): name: Optional[str] = None r"""Optional name for the developer message""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["name"]) + 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 diff --git a/src/openrouter/components/chatfunctiontool.py b/src/openrouter/components/chatfunctiontool.py index e0f23b38..3525ecad 100644 --- a/src/openrouter/components/chatfunctiontool.py +++ b/src/openrouter/components/chatfunctiontool.py @@ -39,10 +39,9 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import get_discriminator -from pydantic import Discriminator, Tag, model_serializer +from pydantic import model_serializer from typing import Any, Dict, Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict +from typing_extensions import NotRequired, TypeAliasType, TypedDict class ChatFunctionToolFunctionFunctionTypedDict(TypedDict): @@ -75,31 +74,26 @@ class ChatFunctionToolFunctionFunction(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["description", "parameters", "strict"] - nullable_fields = ["strict"] - null_default_fields = [] - + optional_fields = set(["description", "parameters", "strict"]) + nullable_fields = set(["strict"]) 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) - - 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 + 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 + ) + + 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 @@ -124,6 +118,22 @@ class ChatFunctionToolFunction(BaseModel): cache_control: Optional[ChatContentCacheControl] = None r"""Cache control for the content part""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["cache_control"]) + 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 + ChatFunctionToolTypedDict = TypeAliasType( "ChatFunctionToolTypedDict", @@ -143,26 +153,19 @@ class ChatFunctionToolFunction(BaseModel): r"""Tool definition for function calling (regular function or OpenRouter built-in server tool)""" -ChatFunctionTool = Annotated[ +ChatFunctionTool = TypeAliasType( + "ChatFunctionTool", Union[ - Annotated[ChatFunctionToolFunction, Tag("function")], - Annotated[AdvisorServerToolOpenRouter, Tag("openrouter:advisor")], - Annotated[BashServerTool, Tag("openrouter:bash")], - Annotated[DatetimeServerTool, Tag("openrouter:datetime")], - Annotated[ - ImageGenerationServerToolOpenRouter, Tag("openrouter:image_generation") - ], - Annotated[ - ChatSearchModelsServerTool, Tag("openrouter:experimental__search_models") - ], - Annotated[SubagentServerToolOpenRouter, Tag("openrouter:subagent")], - Annotated[WebFetchServerTool, Tag("openrouter:web_fetch")], - Annotated[OpenRouterWebSearchServerTool, Tag("openrouter:web_search")], - Annotated[ChatWebSearchShorthand, Tag("web_search")], - Annotated[ChatWebSearchShorthand, Tag("web_search_preview")], - Annotated[ChatWebSearchShorthand, Tag("web_search_preview_2025_03_11")], - Annotated[ChatWebSearchShorthand, Tag("web_search_2025_08_26")], + AdvisorServerToolOpenRouter, + BashServerTool, + DatetimeServerTool, + ImageGenerationServerToolOpenRouter, + ChatSearchModelsServerTool, + SubagentServerToolOpenRouter, + WebFetchServerTool, + OpenRouterWebSearchServerTool, + ChatFunctionToolFunction, + ChatWebSearchShorthand, ], - Discriminator(lambda m: get_discriminator(m, "type", "type")), -] +) r"""Tool definition for function calling (regular function or OpenRouter built-in server tool)""" diff --git a/src/openrouter/components/chatjsonschemaconfig.py b/src/openrouter/components/chatjsonschemaconfig.py index 01315442..4b3aa418 100644 --- a/src/openrouter/components/chatjsonschemaconfig.py +++ b/src/openrouter/components/chatjsonschemaconfig.py @@ -46,30 +46,31 @@ class ChatJSONSchemaConfig(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["description", "schema", "strict"] - nullable_fields = ["strict"] - null_default_fields = [] - + optional_fields = set(["description", "schema", "strict"]) + nullable_fields = set(["strict"]) 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) - - 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 + 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 + ) + + 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 + + +try: + ChatJSONSchemaConfig.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/chatrequest.py b/src/openrouter/components/chatrequest.py index f60f367c..3ab5ba1d 100644 --- a/src/openrouter/components/chatrequest.py +++ b/src/openrouter/components/chatrequest.py @@ -55,9 +55,8 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import get_discriminator, validate_open_enum +from openrouter.utils import get_discriminator from pydantic import Discriminator, Tag, model_serializer -from pydantic.functional_validators import PlainValidator from typing import Any, Dict, List, Literal, Optional, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict @@ -130,43 +129,33 @@ class ChatRequestReasoningTypedDict(TypedDict): class ChatRequestReasoning(BaseModel): r"""Configuration options for reasoning models""" - effort: Annotated[ - OptionalNullable[ChatRequestEffort], PlainValidator(validate_open_enum(False)) - ] = UNSET + effort: OptionalNullable[ChatRequestEffort] = UNSET r"""Constrains effort on reasoning for reasoning models""" - summary: Annotated[ - OptionalNullable[ChatReasoningSummaryVerbosityEnum], - PlainValidator(validate_open_enum(False)), - ] = UNSET + summary: OptionalNullable[ChatReasoningSummaryVerbosityEnum] = UNSET @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["effort", "summary"] - nullable_fields = ["effort", "summary"] - null_default_fields = [] - + optional_fields = set(["effort", "summary"]) + nullable_fields = set(["effort", "summary"]) 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) - - 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 + 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 + ) + + 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 @@ -350,9 +339,7 @@ class ChatRequest(BaseModel): min_p: OptionalNullable[float] = UNSET r"""Minimum probability threshold relative to the most likely token. Tokens with probability below min_p * (probability of top token) are filtered out. Not all providers support this parameter.""" - modalities: Optional[ - List[Annotated[Modality, PlainValidator(validate_open_enum(False))]] - ] = None + modalities: Optional[List[Modality]] = None r"""Output modalities for the response. Supported values are \"text\", \"image\", and \"audio\".""" model: Optional[str] = None @@ -376,10 +363,7 @@ class ChatRequest(BaseModel): reasoning: Optional[ChatRequestReasoning] = None r"""Configuration options for reasoning models""" - reasoning_effort: Annotated[ - OptionalNullable[ChatRequestReasoningEffort], - PlainValidator(validate_open_enum(False)), - ] = UNSET + reasoning_effort: OptionalNullable[ChatRequestReasoningEffort] = UNSET r"""Shorthand for setting reasoning effort. Equivalent to setting reasoning.effort. Cannot be used simultaneously with reasoning.effort if they differ.""" repetition_penalty: OptionalNullable[float] = UNSET @@ -391,10 +375,7 @@ class ChatRequest(BaseModel): seed: OptionalNullable[int] = UNSET r"""Random seed for deterministic outputs""" - service_tier: Annotated[ - OptionalNullable[ChatRequestServiceTier], - PlainValidator(validate_open_enum(False)), - ] = UNSET + service_tier: OptionalNullable[ChatRequestServiceTier] = UNSET r"""The service tier to use for processing this request.""" session_id: Optional[str] = None @@ -441,89 +422,88 @@ class ChatRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "cache_control", - "debug", - "frequency_penalty", - "image_config", - "logit_bias", - "logprobs", - "max_completion_tokens", - "max_tokens", - "metadata", - "min_p", - "modalities", - "model", - "models", - "parallel_tool_calls", - "plugins", - "presence_penalty", - "provider", - "reasoning", - "reasoning_effort", - "repetition_penalty", - "response_format", - "seed", - "service_tier", - "session_id", - "stop", - "stop_server_tools_when", - "stream", - "stream_options", - "temperature", - "tool_choice", - "tools", - "top_a", - "top_k", - "top_logprobs", - "top_p", - "trace", - "user", - ] - nullable_fields = [ - "frequency_penalty", - "logit_bias", - "logprobs", - "max_completion_tokens", - "max_tokens", - "min_p", - "parallel_tool_calls", - "presence_penalty", - "provider", - "reasoning_effort", - "repetition_penalty", - "seed", - "service_tier", - "stop", - "stream_options", - "temperature", - "top_a", - "top_k", - "top_logprobs", - "top_p", - ] - null_default_fields = [] - + optional_fields = set( + [ + "cache_control", + "debug", + "frequency_penalty", + "image_config", + "logit_bias", + "logprobs", + "max_completion_tokens", + "max_tokens", + "metadata", + "min_p", + "modalities", + "model", + "models", + "parallel_tool_calls", + "plugins", + "presence_penalty", + "provider", + "reasoning", + "reasoning_effort", + "repetition_penalty", + "response_format", + "seed", + "service_tier", + "session_id", + "stop", + "stop_server_tools_when", + "stream", + "stream_options", + "temperature", + "tool_choice", + "tools", + "top_a", + "top_k", + "top_logprobs", + "top_p", + "trace", + "user", + ] + ) + nullable_fields = set( + [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_completion_tokens", + "max_tokens", + "min_p", + "parallel_tool_calls", + "presence_penalty", + "provider", + "reasoning_effort", + "repetition_penalty", + "seed", + "service_tier", + "stop", + "stream_options", + "temperature", + "top_a", + "top_k", + "top_logprobs", + "top_p", + ] + ) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/chatresult.py b/src/openrouter/components/chatresult.py index 85bb6c1a..e91d1610 100644 --- a/src/openrouter/components/chatresult.py +++ b/src/openrouter/components/chatresult.py @@ -70,30 +70,25 @@ class ChatResult(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["openrouter_metadata", "service_tier", "usage"] - nullable_fields = ["service_tier", "system_fingerprint"] - null_default_fields = [] - + optional_fields = set(["openrouter_metadata", "service_tier", "usage"]) + nullable_fields = set(["service_tier", "system_fingerprint"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/chatsearchmodelsservertool.py b/src/openrouter/components/chatsearchmodelsservertool.py index 5c78164f..e6ea5476 100644 --- a/src/openrouter/components/chatsearchmodelsservertool.py +++ b/src/openrouter/components/chatsearchmodelsservertool.py @@ -5,7 +5,8 @@ SearchModelsServerToolConfig, SearchModelsServerToolConfigTypedDict, ) -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -28,3 +29,19 @@ class ChatSearchModelsServerTool(BaseModel): parameters: Optional[SearchModelsServerToolConfig] = None r"""Configuration for the openrouter:experimental__search_models server tool""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["parameters"]) + 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 diff --git a/src/openrouter/components/chatstreamchoice.py b/src/openrouter/components/chatstreamchoice.py index 9166d93e..688a877f 100644 --- a/src/openrouter/components/chatstreamchoice.py +++ b/src/openrouter/components/chatstreamchoice.py @@ -11,10 +11,8 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class ChatStreamChoiceTypedDict(TypedDict): @@ -35,9 +33,7 @@ class ChatStreamChoice(BaseModel): delta: ChatStreamDelta r"""Delta changes in streaming response""" - finish_reason: Annotated[ - Nullable[ChatFinishReasonEnum], PlainValidator(validate_open_enum(False)) - ] + finish_reason: Nullable[ChatFinishReasonEnum] index: int r"""Choice index""" @@ -47,30 +43,25 @@ class ChatStreamChoice(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["logprobs"] - nullable_fields = ["finish_reason", "logprobs"] - null_default_fields = [] - + optional_fields = set(["logprobs"]) + nullable_fields = set(["finish_reason", "logprobs"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/chatstreamchunk.py b/src/openrouter/components/chatstreamchunk.py index 1f00ab13..aec4bc5d 100644 --- a/src/openrouter/components/chatstreamchunk.py +++ b/src/openrouter/components/chatstreamchunk.py @@ -12,11 +12,9 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import List, Literal, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class ChatStreamChunkMetadataTypedDict(TypedDict): @@ -31,12 +29,28 @@ class ChatStreamChunkMetadataTypedDict(TypedDict): class ChatStreamChunkMetadata(BaseModel): r"""Structured error metadata""" - error_type: Annotated[APIErrorType, PlainValidator(validate_open_enum(False))] + error_type: APIErrorType r"""Canonical OpenRouter error type, stable across all API formats""" provider_code: Optional[str] = None r"""Upstream provider-specific error code, when available""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["provider_code"]) + 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 ChatStreamChunkErrorTypedDict(TypedDict): r"""Error information""" @@ -61,6 +75,22 @@ class ChatStreamChunkError(BaseModel): metadata: Optional[ChatStreamChunkMetadata] = None r"""Structured error metadata""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["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 + ChatStreamChunkObject = Literal["chat.completion.chunk",] @@ -121,36 +151,33 @@ class ChatStreamChunk(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "error", - "openrouter_metadata", - "service_tier", - "system_fingerprint", - "usage", - ] - nullable_fields = ["service_tier"] - null_default_fields = [] - + optional_fields = set( + [ + "error", + "openrouter_metadata", + "service_tier", + "system_fingerprint", + "usage", + ] + ) + nullable_fields = set(["service_tier"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/chatstreamdelta.py b/src/openrouter/components/chatstreamdelta.py index 8d0c74c4..6eb10789 100644 --- a/src/openrouter/components/chatstreamdelta.py +++ b/src/openrouter/components/chatstreamdelta.py @@ -63,38 +63,35 @@ class ChatStreamDelta(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "audio", - "content", - "reasoning", - "reasoning_details", - "refusal", - "role", - "tool_calls", - ] - nullable_fields = ["content", "reasoning", "refusal"] - null_default_fields = [] - + optional_fields = set( + [ + "audio", + "content", + "reasoning", + "reasoning_details", + "refusal", + "role", + "tool_calls", + ] + ) + nullable_fields = set(["content", "reasoning", "refusal"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/chatstreamoptions.py b/src/openrouter/components/chatstreamoptions.py index 48eb279a..cecb204b 100644 --- a/src/openrouter/components/chatstreamoptions.py +++ b/src/openrouter/components/chatstreamoptions.py @@ -1,8 +1,9 @@ """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 import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -24,3 +25,19 @@ class ChatStreamOptions(BaseModel): ), ] = None r"""Deprecated: This field has no effect. Full usage details are always included.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["include_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 diff --git a/src/openrouter/components/chatstreamtoolcall.py b/src/openrouter/components/chatstreamtoolcall.py index 46121398..936fefc2 100644 --- a/src/openrouter/components/chatstreamtoolcall.py +++ b/src/openrouter/components/chatstreamtoolcall.py @@ -1,7 +1,8 @@ """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 pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -24,6 +25,22 @@ class ChatStreamToolCallFunction(BaseModel): name: Optional[str] = None r"""Function name""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["arguments", "name"]) + 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 + ChatStreamToolCallType = Literal["function",] r"""Tool call type""" @@ -56,3 +73,19 @@ class ChatStreamToolCall(BaseModel): type: Optional[ChatStreamToolCallType] = None r"""Tool call type""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["function", "id", "type"]) + 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 diff --git a/src/openrouter/components/chatsystemmessage.py b/src/openrouter/components/chatsystemmessage.py index a9e7bb12..99beec85 100644 --- a/src/openrouter/components/chatsystemmessage.py +++ b/src/openrouter/components/chatsystemmessage.py @@ -2,7 +2,8 @@ from __future__ import annotations from .chatcontenttext import ChatContentText, ChatContentTextTypedDict -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Literal, Optional, Union from typing_extensions import NotRequired, TypeAliasType, TypedDict @@ -42,3 +43,19 @@ class ChatSystemMessage(BaseModel): name: Optional[str] = None r"""Optional name for the system message""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["name"]) + 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 diff --git a/src/openrouter/components/chattokenlogprob.py b/src/openrouter/components/chattokenlogprob.py index 2a82b99e..1a689698 100644 --- a/src/openrouter/components/chattokenlogprob.py +++ b/src/openrouter/components/chattokenlogprob.py @@ -23,30 +23,14 @@ class ChatTokenLogprobTopLogprob(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["bytes"] - 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) - - 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 + val = serialized.get(k, serialized.get(n)) - 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 @@ -82,30 +66,24 @@ class ChatTokenLogprob(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["bytes"] - 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) - - 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 + val = serialized.get(k, serialized.get(n)) - 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 + + +try: + ChatTokenLogprobTopLogprob.model_rebuild() +except NameError: + pass +try: + ChatTokenLogprob.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/chattokenlogprobs.py b/src/openrouter/components/chattokenlogprobs.py index 037f8b50..f450b8ee 100644 --- a/src/openrouter/components/chattokenlogprobs.py +++ b/src/openrouter/components/chattokenlogprobs.py @@ -34,30 +34,25 @@ class ChatTokenLogprobs(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["refusal"] - nullable_fields = ["content", "refusal"] - null_default_fields = [] - + optional_fields = set(["refusal"]) + nullable_fields = set(["content", "refusal"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/chatusage.py b/src/openrouter/components/chatusage.py index 8eb123a2..1410ca9d 100644 --- a/src/openrouter/components/chatusage.py +++ b/src/openrouter/components/chatusage.py @@ -44,41 +44,40 @@ class ChatUsageCompletionTokensDetails(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "accepted_prediction_tokens", - "audio_tokens", - "reasoning_tokens", - "rejected_prediction_tokens", - ] - nullable_fields = [ - "accepted_prediction_tokens", - "audio_tokens", - "reasoning_tokens", - "rejected_prediction_tokens", - ] - null_default_fields = [] - + optional_fields = set( + [ + "accepted_prediction_tokens", + "audio_tokens", + "reasoning_tokens", + "rejected_prediction_tokens", + ] + ) + nullable_fields = set( + [ + "accepted_prediction_tokens", + "audio_tokens", + "reasoning_tokens", + "rejected_prediction_tokens", + ] + ) 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) - - 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 + 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 + ) + + 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 @@ -111,6 +110,24 @@ class ChatUsagePromptTokensDetails(BaseModel): video_tokens: Optional[int] = None r"""Video input tokens""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["audio_tokens", "cache_write_tokens", "cached_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 ServerToolUseDetailsTypedDict(TypedDict): r"""Usage for server-side tool execution (e.g., web search)""" @@ -137,39 +154,30 @@ class ServerToolUseDetails(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "tool_calls_executed", - "tool_calls_requested", - "web_search_requests", - ] - nullable_fields = [ - "tool_calls_executed", - "tool_calls_requested", - "web_search_requests", - ] - null_default_fields = [] - + optional_fields = set( + ["tool_calls_executed", "tool_calls_requested", "web_search_requests"] + ) + nullable_fields = set( + ["tool_calls_executed", "tool_calls_requested", "web_search_requests"] + ) 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) - - 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 + 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 + ) + + 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 @@ -233,43 +241,42 @@ class ChatUsage(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "completion_tokens_details", - "cost", - "cost_details", - "is_byok", - "prompt_tokens_details", - "server_tool_use_details", - ] - nullable_fields = [ - "completion_tokens_details", - "cost", - "cost_details", - "prompt_tokens_details", - "server_tool_use_details", - ] - null_default_fields = [] - + optional_fields = set( + [ + "completion_tokens_details", + "cost", + "cost_details", + "is_byok", + "prompt_tokens_details", + "server_tool_use_details", + ] + ) + nullable_fields = set( + [ + "completion_tokens_details", + "cost", + "cost_details", + "prompt_tokens_details", + "server_tool_use_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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/chatusermessage.py b/src/openrouter/components/chatusermessage.py index 9092aa32..d5ebd465 100644 --- a/src/openrouter/components/chatusermessage.py +++ b/src/openrouter/components/chatusermessage.py @@ -2,7 +2,8 @@ from __future__ import annotations from .chatcontentitems import ChatContentItems, ChatContentItemsTypedDict -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Literal, Optional, Union from typing_extensions import NotRequired, TypeAliasType, TypedDict @@ -42,3 +43,19 @@ class ChatUserMessage(BaseModel): name: Optional[str] = None r"""Optional name for the user""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["name"]) + 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 diff --git a/src/openrouter/components/chatwebsearchshorthand.py b/src/openrouter/components/chatwebsearchshorthand.py index f97f2613..9d333c1d 100644 --- a/src/openrouter/components/chatwebsearchshorthand.py +++ b/src/openrouter/components/chatwebsearchshorthand.py @@ -8,11 +8,10 @@ WebSearchUserLocationServerTool, WebSearchUserLocationServerToolTypedDict, ) -from openrouter.types import BaseModel, UnrecognizedStr -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL, UnrecognizedStr +from pydantic import model_serializer from typing import List, Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict ChatWebSearchShorthandType = Union[ @@ -52,16 +51,12 @@ class ChatWebSearchShorthandTypedDict(TypedDict): class ChatWebSearchShorthand(BaseModel): r"""Web search tool using OpenAI Responses API syntax. Automatically converted to openrouter:web_search.""" - type: Annotated[ - ChatWebSearchShorthandType, PlainValidator(validate_open_enum(False)) - ] + type: ChatWebSearchShorthandType allowed_domains: Optional[List[str]] = None r"""Limit search results to these domains. Supported by Exa, Firecrawl, Parallel, Perplexity, and most native providers (Anthropic, OpenAI, xAI). Cannot be used with excluded_domains.""" - engine: Annotated[ - Optional[WebSearchEngineEnum], PlainValidator(validate_open_enum(False)) - ] = None + engine: Optional[WebSearchEngineEnum] = None r"""Which search engine to use. \"auto\" (default) uses native if the provider supports it, otherwise Exa. \"native\" forces the provider's built-in search. \"exa\" forces the Exa search API. \"firecrawl\" uses Firecrawl (requires BYOK). \"parallel\" uses the Parallel search API. \"perplexity\" uses the Perplexity Search API (raw ranked results).""" excluded_domains: Optional[List[str]] = None @@ -78,10 +73,36 @@ class ChatWebSearchShorthand(BaseModel): parameters: Optional[WebSearchConfig] = None - search_context_size: Annotated[ - Optional[SearchQualityLevel], PlainValidator(validate_open_enum(False)) - ] = None + search_context_size: Optional[SearchQualityLevel] = None r"""How much context to retrieve per result. Applies to Exa, Parallel, and Perplexity engines; ignored with native provider search and Firecrawl. For Exa, pins a fixed per-result character cap (low=5,000, medium=15,000, high=30,000); when omitted, Exa picks an adaptive size per query and document (typically ~2,000–4,000 characters per result). For Parallel, controls the total characters across all results; when omitted, Parallel uses its own default size. For Perplexity, maps directly to the Search API's native search_context_size parameter. Overridden by `max_characters` when both are set.""" user_location: Optional[WebSearchUserLocationServerTool] = None r"""Approximate user location for location-biased results.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "allowed_domains", + "engine", + "excluded_domains", + "max_characters", + "max_results", + "max_total_results", + "parameters", + "search_context_size", + "user_location", + ] + ) + 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 diff --git a/src/openrouter/components/codeinterpreterservertool.py b/src/openrouter/components/codeinterpreterservertool.py index 67d4cf9e..5705d69d 100644 --- a/src/openrouter/components/codeinterpreterservertool.py +++ b/src/openrouter/components/codeinterpreterservertool.py @@ -9,11 +9,9 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import List, Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict +from typing_extensions import NotRequired, TypeAliasType, TypedDict MemoryLimit = Union[ @@ -41,37 +39,30 @@ class ContainerAuto(BaseModel): file_ids: Optional[List[str]] = None - memory_limit: Annotated[ - OptionalNullable[MemoryLimit], PlainValidator(validate_open_enum(False)) - ] = UNSET + memory_limit: OptionalNullable[MemoryLimit] = UNSET @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["file_ids", "memory_limit"] - nullable_fields = ["memory_limit"] - null_default_fields = [] - + optional_fields = set(["file_ids", "memory_limit"]) + nullable_fields = set(["memory_limit"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/compactionitem.py b/src/openrouter/components/compactionitem.py index eb9ac698..0c6d7491 100644 --- a/src/openrouter/components/compactionitem.py +++ b/src/openrouter/components/compactionitem.py @@ -35,30 +35,25 @@ class CompactionItem(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["id"] - nullable_fields = ["id"] - null_default_fields = [] - + optional_fields = set(["id"]) + nullable_fields = set(["id"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/compoundfilter.py b/src/openrouter/components/compoundfilter.py index b32ff67d..c80781ee 100644 --- a/src/openrouter/components/compoundfilter.py +++ b/src/openrouter/components/compoundfilter.py @@ -2,10 +2,8 @@ from __future__ import annotations from openrouter.types import BaseModel, Nullable, UnrecognizedStr -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator from typing import Any, Dict, List, Literal, Union -from typing_extensions import Annotated, TypedDict +from typing_extensions import TypedDict CompoundFilterType = Union[ @@ -29,4 +27,4 @@ class CompoundFilter(BaseModel): filters: List[Dict[str, Nullable[Any]]] - type: Annotated[CompoundFilterType, PlainValidator(validate_open_enum(False))] + type: CompoundFilterType diff --git a/src/openrouter/components/computeruseservertool.py b/src/openrouter/components/computeruseservertool.py index 8f6128f9..f8c70070 100644 --- a/src/openrouter/components/computeruseservertool.py +++ b/src/openrouter/components/computeruseservertool.py @@ -2,10 +2,8 @@ from __future__ import annotations from openrouter.types import BaseModel, UnrecognizedStr -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator from typing import Literal, Union -from typing_extensions import Annotated, TypedDict +from typing_extensions import TypedDict Environment = Union[ @@ -39,6 +37,6 @@ class ComputerUseServerTool(BaseModel): display_width: int - environment: Annotated[Environment, PlainValidator(validate_open_enum(False))] + environment: Environment type: ComputerUseServerToolType diff --git a/src/openrouter/components/conflictresponseerrordata.py b/src/openrouter/components/conflictresponseerrordata.py index fdbfb167..39276ad8 100644 --- a/src/openrouter/components/conflictresponseerrordata.py +++ b/src/openrouter/components/conflictresponseerrordata.py @@ -32,30 +32,25 @@ class ConflictResponseErrorData(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["metadata"] - nullable_fields = ["metadata"] - null_default_fields = [] - + optional_fields = set(["metadata"]) + nullable_fields = set(["metadata"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/contentfilterbuiltinentry.py b/src/openrouter/components/contentfilterbuiltinentry.py index 294696be..ae3d7d5a 100644 --- a/src/openrouter/components/contentfilterbuiltinentry.py +++ b/src/openrouter/components/contentfilterbuiltinentry.py @@ -4,11 +4,10 @@ from .contentfilterbuiltinaction import ContentFilterBuiltinAction from .contentfilterbuiltinslug import ContentFilterBuiltinSlug from .promptinjectionscanscope import PromptInjectionScanScope -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class ContentFilterBuiltinEntryTypedDict(TypedDict): @@ -27,18 +26,30 @@ class ContentFilterBuiltinEntryTypedDict(TypedDict): class ContentFilterBuiltinEntry(BaseModel): r"""A builtin content filter entry. Builtin filters include PII detectors and the regex-based prompt injection detector.""" - action: Annotated[ - ContentFilterBuiltinAction, PlainValidator(validate_open_enum(False)) - ] + action: ContentFilterBuiltinAction r"""Action taken when the builtin filter triggers""" - slug: Annotated[ContentFilterBuiltinSlug, PlainValidator(validate_open_enum(False))] + slug: ContentFilterBuiltinSlug r"""The builtin filter identifier""" label: Optional[str] = None r"""Read-only, system-assigned redaction placeholder derived from the slug (e.g. \"[EMAIL]\", \"[PHONE]\"). Not settable by the caller.""" - scan_scope: Annotated[ - Optional[PromptInjectionScanScope], PlainValidator(validate_open_enum(False)) - ] = None + scan_scope: Optional[PromptInjectionScanScope] = None r"""Which message roles to scan for prompt injection. Only applies to the regex-prompt-injection builtin. Defaults to all_messages.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["label", "scan_scope"]) + 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 diff --git a/src/openrouter/components/contentfilterbuiltinentryinput.py b/src/openrouter/components/contentfilterbuiltinentryinput.py index b51baca5..50a14b21 100644 --- a/src/openrouter/components/contentfilterbuiltinentryinput.py +++ b/src/openrouter/components/contentfilterbuiltinentryinput.py @@ -4,10 +4,9 @@ from .contentfilterbuiltinaction import ContentFilterBuiltinAction from .contentfilterbuiltinslug import ContentFilterBuiltinSlug from .promptinjectionscanscope import PromptInjectionScanScope -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum +from openrouter.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic.functional_validators import PlainValidator +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -28,12 +27,10 @@ class ContentFilterBuiltinEntryInputTypedDict(TypedDict): class ContentFilterBuiltinEntryInput(BaseModel): r"""A builtin content filter entry for create/update requests. Labels are system-assigned and cannot be set by the caller.""" - action: Annotated[ - ContentFilterBuiltinAction, PlainValidator(validate_open_enum(False)) - ] + action: ContentFilterBuiltinAction r"""Action taken when the builtin filter triggers""" - slug: Annotated[ContentFilterBuiltinSlug, PlainValidator(validate_open_enum(False))] + slug: ContentFilterBuiltinSlug r"""The builtin filter identifier""" label: Annotated[ @@ -44,7 +41,21 @@ class ContentFilterBuiltinEntryInput(BaseModel): ] = None r"""Deprecated: labels are system-assigned and cannot be set by the caller. Accepted for backward compatibility but silently ignored.""" - scan_scope: Annotated[ - Optional[PromptInjectionScanScope], PlainValidator(validate_open_enum(False)) - ] = None + scan_scope: Optional[PromptInjectionScanScope] = None r"""Which message roles to scan for prompt injection. Only applies to the regex-prompt-injection builtin. Defaults to all_messages.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["label", "scan_scope"]) + 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 diff --git a/src/openrouter/components/contentfilterentry.py b/src/openrouter/components/contentfilterentry.py index 856522d0..882178bf 100644 --- a/src/openrouter/components/contentfilterentry.py +++ b/src/openrouter/components/contentfilterentry.py @@ -9,10 +9,8 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class ContentFilterEntryTypedDict(TypedDict): @@ -29,7 +27,7 @@ class ContentFilterEntryTypedDict(TypedDict): class ContentFilterEntry(BaseModel): r"""A custom regex content filter that scans request messages for matching patterns.""" - action: Annotated[ContentFilterAction, PlainValidator(validate_open_enum(False))] + action: ContentFilterAction r"""Action taken when the pattern matches""" pattern: str @@ -40,30 +38,25 @@ class ContentFilterEntry(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["label"] - nullable_fields = ["label"] - null_default_fields = [] - + optional_fields = set(["label"]) + nullable_fields = set(["label"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/contentpartaddedevent.py b/src/openrouter/components/contentpartaddedevent.py index 019b9064..f6f49db0 100644 --- a/src/openrouter/components/contentpartaddedevent.py +++ b/src/openrouter/components/contentpartaddedevent.py @@ -7,10 +7,12 @@ ) from .reasoningtextcontent import ReasoningTextContent, ReasoningTextContentTypedDict from .responseoutputtext import ResponseOutputText, ResponseOutputTextTypedDict +from functools import partial from openrouter.types import BaseModel -from openrouter.utils import get_discriminator -from pydantic import Discriminator, Tag -from typing import Literal, Union +from openrouter.utils.unions import parse_open_union +from pydantic import ConfigDict +from pydantic.functional_validators import BeforeValidator +from typing import Any, Literal, Union from typing_extensions import Annotated, TypeAliasType, TypedDict @@ -24,13 +26,39 @@ ) +class UnknownContentPartAddedEventPart(BaseModel): + r"""A ContentPartAddedEventPart variant the SDK doesn't recognize. Preserves the raw payload.""" + + type: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_CONTENT_PART_ADDED_EVENT_PART_VARIANTS: dict[str, Any] = { + "output_text": ResponseOutputText, + "reasoning_text": ReasoningTextContent, + "refusal": OpenAIResponsesRefusalContent, +} + + ContentPartAddedEventPart = Annotated[ Union[ - Annotated[ResponseOutputText, Tag("output_text")], - Annotated[ReasoningTextContent, Tag("reasoning_text")], - Annotated[OpenAIResponsesRefusalContent, Tag("refusal")], + ResponseOutputText, + ReasoningTextContent, + OpenAIResponsesRefusalContent, + UnknownContentPartAddedEventPart, ], - Discriminator(lambda m: get_discriminator(m, "type", "type")), + BeforeValidator( + partial( + parse_open_union, + disc_key="type", + variants=_CONTENT_PART_ADDED_EVENT_PART_VARIANTS, + unknown_cls=UnknownContentPartAddedEventPart, + union_name="ContentPartAddedEventPart", + ) + ), ] diff --git a/src/openrouter/components/contentpartdoneevent.py b/src/openrouter/components/contentpartdoneevent.py index 8a7f7380..3cd3ed82 100644 --- a/src/openrouter/components/contentpartdoneevent.py +++ b/src/openrouter/components/contentpartdoneevent.py @@ -7,10 +7,12 @@ ) from .reasoningtextcontent import ReasoningTextContent, ReasoningTextContentTypedDict from .responseoutputtext import ResponseOutputText, ResponseOutputTextTypedDict +from functools import partial from openrouter.types import BaseModel -from openrouter.utils import get_discriminator -from pydantic import Discriminator, Tag -from typing import Literal, Union +from openrouter.utils.unions import parse_open_union +from pydantic import ConfigDict +from pydantic.functional_validators import BeforeValidator +from typing import Any, Literal, Union from typing_extensions import Annotated, TypeAliasType, TypedDict @@ -24,13 +26,39 @@ ) +class UnknownContentPartDoneEventPart(BaseModel): + r"""A ContentPartDoneEventPart variant the SDK doesn't recognize. Preserves the raw payload.""" + + type: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_CONTENT_PART_DONE_EVENT_PART_VARIANTS: dict[str, Any] = { + "output_text": ResponseOutputText, + "reasoning_text": ReasoningTextContent, + "refusal": OpenAIResponsesRefusalContent, +} + + ContentPartDoneEventPart = Annotated[ Union[ - Annotated[ResponseOutputText, Tag("output_text")], - Annotated[ReasoningTextContent, Tag("reasoning_text")], - Annotated[OpenAIResponsesRefusalContent, Tag("refusal")], + ResponseOutputText, + ReasoningTextContent, + OpenAIResponsesRefusalContent, + UnknownContentPartDoneEventPart, ], - Discriminator(lambda m: get_discriminator(m, "type", "type")), + BeforeValidator( + partial( + parse_open_union, + disc_key="type", + variants=_CONTENT_PART_DONE_EVENT_PART_VARIANTS, + unknown_cls=UnknownContentPartDoneEventPart, + union_name="ContentPartDoneEventPart", + ) + ), ] diff --git a/src/openrouter/components/contextcompressionplugin.py b/src/openrouter/components/contextcompressionplugin.py index 22758a01..f6e8d18d 100644 --- a/src/openrouter/components/contextcompressionplugin.py +++ b/src/openrouter/components/contextcompressionplugin.py @@ -2,7 +2,8 @@ from __future__ import annotations from .contextcompressionengine import ContextCompressionEngine -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -26,3 +27,19 @@ class ContextCompressionPlugin(BaseModel): engine: Optional[ContextCompressionEngine] = None r"""The compression engine to use. Defaults to \"middle-out\".""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["enabled", "engine"]) + 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 diff --git a/src/openrouter/components/costdetails.py b/src/openrouter/components/costdetails.py index 7880cdc0..dbafc287 100644 --- a/src/openrouter/components/costdetails.py +++ b/src/openrouter/components/costdetails.py @@ -31,30 +31,25 @@ 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/createbyokkeyrequest.py b/src/openrouter/components/createbyokkeyrequest.py index 1287f0a8..4202c110 100644 --- a/src/openrouter/components/createbyokkeyrequest.py +++ b/src/openrouter/components/createbyokkeyrequest.py @@ -9,11 +9,9 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class CreateBYOKKeyRequestTypedDict(TypedDict): @@ -39,7 +37,7 @@ class CreateBYOKKeyRequest(BaseModel): key: str r"""The raw provider API key or credential. This value is encrypted at rest and never returned in API responses.""" - provider: Annotated[BYOKProviderSlug, PlainValidator(validate_open_enum(False))] + provider: BYOKProviderSlug r"""The upstream provider this credential authenticates against, as a lowercase slug (e.g. `openai`, `anthropic`, `amazon-bedrock`).""" allowed_models: OptionalNullable[List[str]] = UNSET @@ -62,37 +60,34 @@ class CreateBYOKKeyRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "allowed_models", - "allowed_user_ids", - "disabled", - "is_fallback", - "name", - "workspace_id", - ] - nullable_fields = ["allowed_models", "allowed_user_ids", "name"] - null_default_fields = [] - + optional_fields = set( + [ + "allowed_models", + "allowed_user_ids", + "disabled", + "is_fallback", + "name", + "workspace_id", + ] + ) + nullable_fields = set(["allowed_models", "allowed_user_ids", "name"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/createguardrailrequest.py b/src/openrouter/components/createguardrailrequest.py index 36bce657..fb9dae6f 100644 --- a/src/openrouter/components/createguardrailrequest.py +++ b/src/openrouter/components/createguardrailrequest.py @@ -14,10 +14,8 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum import pydantic from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -109,9 +107,7 @@ class CreateGuardrailRequest(BaseModel): limit_usd: OptionalNullable[float] = UNSET r"""Spending limit in USD""" - reset_interval: Annotated[ - OptionalNullable[GuardrailInterval], PlainValidator(validate_open_enum(False)) - ] = UNSET + reset_interval: OptionalNullable[GuardrailInterval] = UNSET r"""Interval at which the limit resets (daily, weekly, monthly)""" workspace_id: Optional[str] = None @@ -119,61 +115,60 @@ class CreateGuardrailRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "allowed_models", - "allowed_providers", - "content_filter_builtins", - "content_filters", - "description", - "enforce_zdr", - "enforce_zdr_anthropic", - "enforce_zdr_google", - "enforce_zdr_openai", - "enforce_zdr_other", - "ignored_models", - "ignored_providers", - "limit_usd", - "reset_interval", - "workspace_id", - ] - nullable_fields = [ - "allowed_models", - "allowed_providers", - "content_filter_builtins", - "content_filters", - "description", - "enforce_zdr", - "enforce_zdr_anthropic", - "enforce_zdr_google", - "enforce_zdr_openai", - "enforce_zdr_other", - "ignored_models", - "ignored_providers", - "limit_usd", - "reset_interval", - ] - null_default_fields = [] - + optional_fields = set( + [ + "allowed_models", + "allowed_providers", + "content_filter_builtins", + "content_filters", + "description", + "enforce_zdr", + "enforce_zdr_anthropic", + "enforce_zdr_google", + "enforce_zdr_openai", + "enforce_zdr_other", + "ignored_models", + "ignored_providers", + "limit_usd", + "reset_interval", + "workspace_id", + ] + ) + nullable_fields = set( + [ + "allowed_models", + "allowed_providers", + "content_filter_builtins", + "content_filters", + "description", + "enforce_zdr", + "enforce_zdr_anthropic", + "enforce_zdr_google", + "enforce_zdr_openai", + "enforce_zdr_other", + "ignored_models", + "ignored_providers", + "limit_usd", + "reset_interval", + ] + ) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/createobservabilitydestinationrequest.py b/src/openrouter/components/createobservabilitydestinationrequest.py index 65aab438..b7bf9755 100644 --- a/src/openrouter/components/createobservabilitydestinationrequest.py +++ b/src/openrouter/components/createobservabilitydestinationrequest.py @@ -13,11 +13,9 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Any, Dict, List, Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict CreateObservabilityDestinationRequestType = Union[ @@ -73,10 +71,7 @@ class CreateObservabilityDestinationRequest(BaseModel): name: str r"""Human-readable name for the destination.""" - type: Annotated[ - CreateObservabilityDestinationRequestType, - PlainValidator(validate_open_enum(False)), - ] + type: CreateObservabilityDestinationRequestType r"""The destination type. Only stable destination types are accepted.""" api_key_hashes: OptionalNullable[List[str]] = UNSET @@ -99,37 +94,34 @@ class CreateObservabilityDestinationRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "api_key_hashes", - "enabled", - "filter_rules", - "privacy_mode", - "sampling_rate", - "workspace_id", - ] - nullable_fields = ["api_key_hashes", "filter_rules"] - null_default_fields = [] - + optional_fields = set( + [ + "api_key_hashes", + "enabled", + "filter_rules", + "privacy_mode", + "sampling_rate", + "workspace_id", + ] + ) + nullable_fields = set(["api_key_hashes", "filter_rules"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/createworkspacerequest.py b/src/openrouter/components/createworkspacerequest.py index e068f808..0596d01d 100644 --- a/src/openrouter/components/createworkspacerequest.py +++ b/src/openrouter/components/createworkspacerequest.py @@ -74,46 +74,45 @@ class CreateWorkspaceRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "default_image_model", - "default_provider_sort", - "default_text_model", - "description", - "io_logging_api_key_ids", - "io_logging_sampling_rate", - "is_data_discount_logging_enabled", - "is_observability_broadcast_enabled", - "is_observability_io_logging_enabled", - ] - nullable_fields = [ - "default_image_model", - "default_provider_sort", - "default_text_model", - "description", - "io_logging_api_key_ids", - ] - null_default_fields = [] - + optional_fields = set( + [ + "default_image_model", + "default_provider_sort", + "default_text_model", + "description", + "io_logging_api_key_ids", + "io_logging_sampling_rate", + "is_data_discount_logging_enabled", + "is_observability_broadcast_enabled", + "is_observability_io_logging_enabled", + ] + ) + nullable_fields = set( + [ + "default_image_model", + "default_provider_sort", + "default_text_model", + "description", + "io_logging_api_key_ids", + ] + ) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/customtool.py b/src/openrouter/components/customtool.py index d2437932..b7e37678 100644 --- a/src/openrouter/components/customtool.py +++ b/src/openrouter/components/customtool.py @@ -1,12 +1,13 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from openrouter.types import BaseModel, UnrecognizedStr -from openrouter.utils import get_discriminator, validate_open_enum +from functools import partial +from openrouter.types import BaseModel, UNSET_SENTINEL, UnrecognizedStr +from openrouter.utils.unions import parse_open_union import pydantic -from pydantic import Discriminator, Tag -from pydantic.functional_validators import PlainValidator -from typing import Literal, Optional, Union +from pydantic import ConfigDict, model_serializer +from pydantic.functional_validators import BeforeValidator +from typing import Any, Literal, Optional, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict @@ -31,7 +32,7 @@ class FormatGrammarTypedDict(TypedDict): class FormatGrammar(BaseModel): definition: str - syntax: Annotated[Syntax, PlainValidator(validate_open_enum(False))] + syntax: Syntax type: FormatTypeGrammar @@ -52,9 +53,33 @@ class FormatText(BaseModel): ) +class UnknownFormat(BaseModel): + r"""A Format variant the SDK doesn't recognize. Preserves the raw payload.""" + + type: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_FORMAT__VARIANTS: dict[str, Any] = { + "text": FormatText, + "grammar": FormatGrammar, +} + + Format = Annotated[ - Union[Annotated[FormatText, Tag("text")], Annotated[FormatGrammar, Tag("grammar")]], - Discriminator(lambda m: get_discriminator(m, "type", "type")), + Union[FormatText, FormatGrammar, UnknownFormat], + BeforeValidator( + partial( + parse_open_union, + disc_key="type", + variants=_FORMAT__VARIANTS, + unknown_cls=UnknownFormat, + union_name="Format", + ) + ), ] @@ -80,3 +105,25 @@ class CustomTool(BaseModel): description: Optional[str] = None format_: Annotated[Optional[Format], pydantic.Field(alias="format")] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["description", "format"]) + 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 + + +try: + CustomTool.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/customtoolcallitem.py b/src/openrouter/components/customtoolcallitem.py index 486f76dc..3e47f148 100644 --- a/src/openrouter/components/customtoolcallitem.py +++ b/src/openrouter/components/customtoolcallitem.py @@ -1,7 +1,8 @@ """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 pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -36,3 +37,19 @@ class CustomToolCallItem(BaseModel): namespace: Optional[str] = None r"""Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server)""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id", "namespace"]) + 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 diff --git a/src/openrouter/components/customtoolcalloutputitem.py b/src/openrouter/components/customtoolcalloutputitem.py index c8201422..b80b24da 100644 --- a/src/openrouter/components/customtoolcalloutputitem.py +++ b/src/openrouter/components/customtoolcalloutputitem.py @@ -11,9 +11,8 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import get_discriminator, validate_open_enum +from openrouter.utils import get_discriminator 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 @@ -43,9 +42,7 @@ class CustomToolCallOutputItemOutputInputImageTypedDict(TypedDict): class CustomToolCallOutputItemOutputInputImage(BaseModel): r"""Image input content item""" - detail: Annotated[ - CustomToolCallOutputItemDetail, PlainValidator(validate_open_enum(False)) - ] + detail: CustomToolCallOutputItemDetail type: CustomToolCallOutputItemTypeInputImage @@ -53,31 +50,26 @@ class CustomToolCallOutputItemOutputInputImage(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["image_url"] - nullable_fields = ["image_url"] - null_default_fields = [] - + optional_fields = set(["image_url"]) + nullable_fields = set(["image_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) - - 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 + 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 + ) + + 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 @@ -136,3 +128,19 @@ class CustomToolCallOutputItem(BaseModel): type: CustomToolCallOutputItemTypeCustomToolCallOutput id: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["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 diff --git a/src/openrouter/components/datetimeservertool.py b/src/openrouter/components/datetimeservertool.py index d98c3fd0..31a1f907 100644 --- a/src/openrouter/components/datetimeservertool.py +++ b/src/openrouter/components/datetimeservertool.py @@ -5,7 +5,8 @@ DatetimeServerToolConfig, DatetimeServerToolConfigTypedDict, ) -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -28,3 +29,19 @@ class DatetimeServerTool(BaseModel): parameters: Optional[DatetimeServerToolConfig] = None r"""Configuration for the openrouter:datetime server tool""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["parameters"]) + 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 diff --git a/src/openrouter/components/datetimeservertoolconfig.py b/src/openrouter/components/datetimeservertoolconfig.py index 3eaaa33c..0858da19 100644 --- a/src/openrouter/components/datetimeservertoolconfig.py +++ b/src/openrouter/components/datetimeservertoolconfig.py @@ -1,7 +1,8 @@ """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 pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -18,3 +19,19 @@ class DatetimeServerToolConfig(BaseModel): timezone: Optional[str] = None r"""IANA timezone name (e.g. \"America/New_York\"). Defaults to UTC.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["timezone"]) + 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 diff --git a/src/openrouter/components/debugevent.py b/src/openrouter/components/debugevent.py index e163680e..3346002a 100644 --- a/src/openrouter/components/debugevent.py +++ b/src/openrouter/components/debugevent.py @@ -1,11 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from openrouter.types import BaseModel, Nullable, UnrecognizedStr -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL, UnrecognizedStr +from pydantic import model_serializer from typing import Any, Dict, Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict Event = Union[ @@ -28,7 +27,7 @@ class TimingsTypedDict(TypedDict): class Timings(BaseModel): epoch_ms: int - event: Annotated[Event, PlainValidator(validate_open_enum(False))] + event: Event start_ms: int @@ -43,6 +42,22 @@ class Debug(BaseModel): timings: Optional[Timings] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["echo_upstream_body", "timings"]) + 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 + DebugEventType = Literal["response.debug",] diff --git a/src/openrouter/components/defaultparameters.py b/src/openrouter/components/defaultparameters.py index 26ed6c6d..dccefb21 100644 --- a/src/openrouter/components/defaultparameters.py +++ b/src/openrouter/components/defaultparameters.py @@ -40,44 +40,43 @@ class DefaultParameters(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "frequency_penalty", - "presence_penalty", - "repetition_penalty", - "temperature", - "top_k", - "top_p", - ] - nullable_fields = [ - "frequency_penalty", - "presence_penalty", - "repetition_penalty", - "temperature", - "top_k", - "top_p", - ] - null_default_fields = [] - + optional_fields = set( + [ + "frequency_penalty", + "presence_penalty", + "repetition_penalty", + "temperature", + "top_k", + "top_p", + ] + ) + nullable_fields = set( + [ + "frequency_penalty", + "presence_penalty", + "repetition_penalty", + "temperature", + "top_k", + "top_p", + ] + ) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/deletebyokkeyresponse.py b/src/openrouter/components/deletebyokkeyresponse.py index 19946d23..3e3a7de0 100644 --- a/src/openrouter/components/deletebyokkeyresponse.py +++ b/src/openrouter/components/deletebyokkeyresponse.py @@ -20,3 +20,9 @@ class DeleteBYOKKeyResponse(BaseModel): pydantic.Field(alias="deleted"), ] = True r"""Confirmation that the BYOK credential was deleted.""" + + +try: + DeleteBYOKKeyResponse.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/deleteguardrailresponse.py b/src/openrouter/components/deleteguardrailresponse.py index f31843cf..0c4b2ec6 100644 --- a/src/openrouter/components/deleteguardrailresponse.py +++ b/src/openrouter/components/deleteguardrailresponse.py @@ -20,3 +20,9 @@ class DeleteGuardrailResponse(BaseModel): pydantic.Field(alias="deleted"), ] = True r"""Confirmation that the guardrail was deleted""" + + +try: + DeleteGuardrailResponse.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/deleteobservabilitydestinationresponse.py b/src/openrouter/components/deleteobservabilitydestinationresponse.py index 37651566..28a54ebb 100644 --- a/src/openrouter/components/deleteobservabilitydestinationresponse.py +++ b/src/openrouter/components/deleteobservabilitydestinationresponse.py @@ -20,3 +20,9 @@ class DeleteObservabilityDestinationResponse(BaseModel): pydantic.Field(alias="deleted"), ] = True r"""Always `true` on success.""" + + +try: + DeleteObservabilityDestinationResponse.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/deleteworkspacebudgetresponse.py b/src/openrouter/components/deleteworkspacebudgetresponse.py index 774a3ea2..be71670d 100644 --- a/src/openrouter/components/deleteworkspacebudgetresponse.py +++ b/src/openrouter/components/deleteworkspacebudgetresponse.py @@ -20,3 +20,9 @@ class DeleteWorkspaceBudgetResponse(BaseModel): pydantic.Field(alias="deleted"), ] = True r"""Confirmation that the budget was deleted (or did not exist)""" + + +try: + DeleteWorkspaceBudgetResponse.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/deleteworkspaceresponse.py b/src/openrouter/components/deleteworkspaceresponse.py index bed45958..708dfac6 100644 --- a/src/openrouter/components/deleteworkspaceresponse.py +++ b/src/openrouter/components/deleteworkspaceresponse.py @@ -20,3 +20,9 @@ class DeleteWorkspaceResponse(BaseModel): pydantic.Field(alias="deleted"), ] = True r"""Confirmation that the workspace was deleted""" + + +try: + DeleteWorkspaceResponse.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/easyinputmessage.py b/src/openrouter/components/easyinputmessage.py index 60dabdac..acc023a1 100644 --- a/src/openrouter/components/easyinputmessage.py +++ b/src/openrouter/components/easyinputmessage.py @@ -13,9 +13,8 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import get_discriminator, validate_open_enum +from openrouter.utils import get_discriminator from pydantic import Discriminator, Tag, model_serializer -from pydantic.functional_validators import PlainValidator from typing import Any, List, Literal, Optional, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict @@ -45,7 +44,7 @@ class EasyInputMessageContentInputImageTypedDict(TypedDict): class EasyInputMessageContentInputImage(BaseModel): r"""Image input content item""" - detail: Annotated[EasyInputMessageDetail, PlainValidator(validate_open_enum(False))] + detail: EasyInputMessageDetail type: EasyInputMessageTypeInputImage @@ -53,31 +52,26 @@ class EasyInputMessageContentInputImage(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["image_url"] - nullable_fields = ["image_url"] - null_default_fields = [] - + optional_fields = set(["image_url"]) + nullable_fields = set(["image_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) - - 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 + 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 + ) + + 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 @@ -195,30 +189,25 @@ class EasyInputMessage(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["content", "phase", "type"] - nullable_fields = ["content", "phase"] - null_default_fields = [] - + optional_fields = set(["content", "phase", "type"]) + nullable_fields = set(["content", "phase"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/edgenetworktimeoutresponseerrordata.py b/src/openrouter/components/edgenetworktimeoutresponseerrordata.py index b44fcaf3..9e421b3c 100644 --- a/src/openrouter/components/edgenetworktimeoutresponseerrordata.py +++ b/src/openrouter/components/edgenetworktimeoutresponseerrordata.py @@ -32,30 +32,25 @@ class EdgeNetworkTimeoutResponseErrorData(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["metadata"] - nullable_fields = ["metadata"] - null_default_fields = [] - + optional_fields = set(["metadata"]) + nullable_fields = set(["metadata"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/errorevent.py b/src/openrouter/components/errorevent.py index 83b6cd34..0b90b1c3 100644 --- a/src/openrouter/components/errorevent.py +++ b/src/openrouter/components/errorevent.py @@ -35,30 +35,14 @@ class ErrorEvent(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["code", "param"] - 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 diff --git a/src/openrouter/components/filelistresponse.py b/src/openrouter/components/filelistresponse.py index 68932994..3b40324c 100644 --- a/src/openrouter/components/filelistresponse.py +++ b/src/openrouter/components/filelistresponse.py @@ -35,30 +35,14 @@ class FileListResponse(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["cursor", "first_id", "last_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 diff --git a/src/openrouter/components/fileparserplugin.py b/src/openrouter/components/fileparserplugin.py index 4c88871d..28d11f1d 100644 --- a/src/openrouter/components/fileparserplugin.py +++ b/src/openrouter/components/fileparserplugin.py @@ -2,7 +2,8 @@ from __future__ import annotations from .pdfparseroptions import PDFParserOptions, PDFParserOptionsTypedDict -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -26,3 +27,19 @@ class FileParserPlugin(BaseModel): pdf: Optional[PDFParserOptions] = None r"""Options for PDF parsing.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["enabled", "pdf"]) + 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 diff --git a/src/openrouter/components/filesearchservertool.py b/src/openrouter/components/filesearchservertool.py index 974ee97d..5f5b45a9 100644 --- a/src/openrouter/components/filesearchservertool.py +++ b/src/openrouter/components/filesearchservertool.py @@ -10,11 +10,9 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Any, List, Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict +from typing_extensions import NotRequired, TypeAliasType, TypedDict FiltersType = Union[ @@ -61,7 +59,7 @@ class FiltersTypedDict(TypedDict): class Filters(BaseModel): key: str - type: Annotated[FiltersType, PlainValidator(validate_open_enum(False))] + type: FiltersType value: FileSearchServerToolValue2 @@ -89,12 +87,26 @@ class RankingOptionsTypedDict(TypedDict): class RankingOptions(BaseModel): - ranker: Annotated[Optional[Ranker], PlainValidator(validate_open_enum(False))] = ( - None - ) + ranker: Optional[Ranker] = None score_threshold: Optional[float] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["ranker", "score_threshold"]) + 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 + TypeFileSearch = Literal["file_search",] @@ -124,30 +136,25 @@ class FileSearchServerTool(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["filters", "max_num_results", "ranking_options"] - nullable_fields = ["filters"] - null_default_fields = [] - + optional_fields = set(["filters", "max_num_results", "ranking_options"]) + nullable_fields = set(["filters"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/forbiddenresponseerrordata.py b/src/openrouter/components/forbiddenresponseerrordata.py index a758f01d..e790a632 100644 --- a/src/openrouter/components/forbiddenresponseerrordata.py +++ b/src/openrouter/components/forbiddenresponseerrordata.py @@ -32,30 +32,25 @@ class ForbiddenResponseErrorData(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["metadata"] - nullable_fields = ["metadata"] - null_default_fields = [] - + optional_fields = set(["metadata"]) + nullable_fields = set(["metadata"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/formatjsonschemaconfig.py b/src/openrouter/components/formatjsonschemaconfig.py index 4a08f89d..f748cc22 100644 --- a/src/openrouter/components/formatjsonschemaconfig.py +++ b/src/openrouter/components/formatjsonschemaconfig.py @@ -42,30 +42,31 @@ class FormatJSONSchemaConfig(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["description", "strict"] - nullable_fields = ["strict"] - null_default_fields = [] - + optional_fields = set(["description", "strict"]) + nullable_fields = set(["strict"]) 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) - - 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 + 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 + ) + + 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 + + +try: + FormatJSONSchemaConfig.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/formats.py b/src/openrouter/components/formats.py index dcf04215..a1ac8c3e 100644 --- a/src/openrouter/components/formats.py +++ b/src/openrouter/components/formats.py @@ -10,9 +10,12 @@ FormatJSONSchemaConfigTypedDict, ) from .formattextconfig import FormatTextConfig, FormatTextConfigTypedDict -from openrouter.utils import get_discriminator -from pydantic import Discriminator, Tag -from typing import Union +from functools import partial +from openrouter.types import BaseModel +from openrouter.utils.unions import parse_open_union +from pydantic import ConfigDict +from pydantic.functional_validators import BeforeValidator +from typing import Any, Literal, Union from typing_extensions import Annotated, TypeAliasType @@ -27,12 +30,35 @@ r"""Text response format configuration""" +class UnknownFormats(BaseModel): + r"""A Formats variant the SDK doesn't recognize. Preserves the raw payload.""" + + type: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_FORMATS_VARIANTS: dict[str, Any] = { + "text": FormatTextConfig, + "json_object": FormatJSONObjectConfig, + "json_schema": FormatJSONSchemaConfig, +} + + Formats = Annotated[ Union[ - Annotated[FormatTextConfig, Tag("text")], - Annotated[FormatJSONObjectConfig, Tag("json_object")], - Annotated[FormatJSONSchemaConfig, Tag("json_schema")], + FormatTextConfig, FormatJSONObjectConfig, FormatJSONSchemaConfig, UnknownFormats ], - Discriminator(lambda m: get_discriminator(m, "type", "type")), + BeforeValidator( + partial( + parse_open_union, + disc_key="type", + variants=_FORMATS_VARIANTS, + unknown_cls=UnknownFormats, + union_name="Formats", + ) + ), ] r"""Text response format configuration""" diff --git a/src/openrouter/components/frameimage.py b/src/openrouter/components/frameimage.py index 9e5aa13a..00319c88 100644 --- a/src/openrouter/components/frameimage.py +++ b/src/openrouter/components/frameimage.py @@ -2,10 +2,8 @@ from __future__ import annotations from openrouter.types import BaseModel, UnrecognizedStr -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator from typing import Literal, Union -from typing_extensions import Annotated, TypedDict +from typing_extensions import TypedDict class FrameImageImageURLTypedDict(TypedDict): @@ -41,5 +39,5 @@ class FrameImage(BaseModel): type: FrameImageType - frame_type: Annotated[FrameType, PlainValidator(validate_open_enum(False))] + frame_type: FrameType r"""Whether this image represents the first or last frame of the video""" diff --git a/src/openrouter/components/functioncallitem.py b/src/openrouter/components/functioncallitem.py index 82a1e639..8d9002fa 100644 --- a/src/openrouter/components/functioncallitem.py +++ b/src/openrouter/components/functioncallitem.py @@ -2,11 +2,10 @@ from __future__ import annotations from .toolcallstatus import ToolCallStatus -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict FunctionCallItemType = Literal["function_call",] @@ -41,6 +40,20 @@ class FunctionCallItem(BaseModel): namespace: Optional[str] = None r"""Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server)""" - status: Annotated[ - Optional[ToolCallStatus], PlainValidator(validate_open_enum(False)) - ] = None + status: Optional[ToolCallStatus] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["namespace", "status"]) + 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 diff --git a/src/openrouter/components/functioncalloutputitem.py b/src/openrouter/components/functioncalloutputitem.py index 842269af..0f61f4d3 100644 --- a/src/openrouter/components/functioncalloutputitem.py +++ b/src/openrouter/components/functioncalloutputitem.py @@ -11,9 +11,8 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import get_discriminator, validate_open_enum +from openrouter.utils import get_discriminator from pydantic import Discriminator, Tag, model_serializer -from pydantic.functional_validators import PlainValidator from typing import List, Literal, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict @@ -43,9 +42,7 @@ class FunctionCallOutputItemOutputInputImageTypedDict(TypedDict): class FunctionCallOutputItemOutputInputImage(BaseModel): r"""Image input content item""" - detail: Annotated[ - FunctionCallOutputItemDetail, PlainValidator(validate_open_enum(False)) - ] + detail: FunctionCallOutputItemDetail type: FunctionCallOutputItemTypeInputImage @@ -53,31 +50,26 @@ class FunctionCallOutputItemOutputInputImage(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["image_url"] - nullable_fields = ["image_url"] - null_default_fields = [] - + optional_fields = set(["image_url"]) + nullable_fields = set(["image_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) - - 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 + 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 + ) + + 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 @@ -148,37 +140,29 @@ class FunctionCallOutputItem(BaseModel): id: OptionalNullable[str] = UNSET - status: Annotated[ - OptionalNullable[FunctionCallOutputItemStatus], - PlainValidator(validate_open_enum(False)), - ] = UNSET + status: OptionalNullable[FunctionCallOutputItemStatus] = UNSET @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["id", "status"] - nullable_fields = ["id", "status"] - null_default_fields = [] - + optional_fields = set(["id", "status"]) + nullable_fields = set(["id", "status"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/fusioncallpanelfailedevent.py b/src/openrouter/components/fusioncallpanelfailedevent.py index e1ac7919..3498ab2f 100644 --- a/src/openrouter/components/fusioncallpanelfailedevent.py +++ b/src/openrouter/components/fusioncallpanelfailedevent.py @@ -1,7 +1,8 @@ """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 pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -37,3 +38,19 @@ class FusionCallPanelFailedEvent(BaseModel): type: FusionCallPanelFailedEventType status_code: Optional[int] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["status_code"]) + 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 diff --git a/src/openrouter/components/fusionplugin.py b/src/openrouter/components/fusionplugin.py index d019e182..c04ecdca 100644 --- a/src/openrouter/components/fusionplugin.py +++ b/src/openrouter/components/fusionplugin.py @@ -1,11 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from openrouter.types import BaseModel, Nullable, UnrecognizedStr -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL, UnrecognizedStr +from pydantic import model_serializer from typing import Any, Dict, List, Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict FusionPluginID = Literal["fusion",] @@ -36,6 +35,22 @@ class FusionPluginTool(BaseModel): parameters: Optional[Dict[str, Nullable[Any]]] = None r"""Optional configuration forwarded as the tool's `parameters` object.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["parameters"]) + 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 FusionPluginTypedDict(TypedDict): id: FusionPluginID @@ -68,10 +83,26 @@ class FusionPlugin(BaseModel): model: Optional[str] = None r"""Slug of the model that performs both the judge step (with web_search + web_fetch) and the final synthesis. When omitted, defaults to the first model in the Quality preset.""" - preset: Annotated[ - Optional[PresetEnum], PlainValidator(validate_open_enum(False)) - ] = None + preset: Optional[PresetEnum] = None r"""A curated OpenRouter fusion preset (slugs follow `-`, e.g. `general-high`). Expands server-side into the preset's analysis_models panel and judge model, so callers never name individual models. Explicitly provided `analysis_models` / `model` take precedence.""" tools: Optional[List[FusionPluginTool]] = None r"""Server tools available to panelist and judge inner calls. Each entry uses the same `{ type, parameters? }` shorthand as the outer Chat Completions request. When omitted, defaults to `[{ type: \"openrouter:web_search\" }, { type: \"openrouter:web_fetch\" }]`. Pass an empty array to disable tools entirely (panelists answer from parametric knowledge only).""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["analysis_models", "enabled", "max_tool_calls", "model", "preset", "tools"] + ) + 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 diff --git a/src/openrouter/components/fusionservertool_openrouter.py b/src/openrouter/components/fusionservertool_openrouter.py index 5729ea0c..0015e263 100644 --- a/src/openrouter/components/fusionservertool_openrouter.py +++ b/src/openrouter/components/fusionservertool_openrouter.py @@ -5,7 +5,8 @@ FusionServerToolConfig, FusionServerToolConfigTypedDict, ) -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -28,3 +29,19 @@ class FusionServerToolOpenRouter(BaseModel): parameters: Optional[FusionServerToolConfig] = None r"""Configuration for the openrouter:fusion server tool.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["parameters"]) + 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 diff --git a/src/openrouter/components/fusionservertoolconfig.py b/src/openrouter/components/fusionservertoolconfig.py index 9d5ec202..5803dc6d 100644 --- a/src/openrouter/components/fusionservertoolconfig.py +++ b/src/openrouter/components/fusionservertoolconfig.py @@ -5,11 +5,10 @@ AnthropicCacheControlDirective, AnthropicCacheControlDirectiveTypedDict, ) -from openrouter.types import BaseModel, Nullable, UnrecognizedStr -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL, UnrecognizedStr +from pydantic import model_serializer from typing import Any, Dict, List, Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict FusionServerToolConfigEffort = Union[ @@ -39,15 +38,28 @@ class FusionServerToolConfigReasoningTypedDict(TypedDict): class FusionServerToolConfigReasoning(BaseModel): r"""Reasoning configuration forwarded to panelist and judge inner calls. Use this to control reasoning effort and token budget for models that support extended thinking.""" - effort: Annotated[ - Optional[FusionServerToolConfigEffort], - PlainValidator(validate_open_enum(False)), - ] = None + effort: Optional[FusionServerToolConfigEffort] = None r"""Reasoning effort level for panelist and judge inner calls.""" max_tokens: Optional[int] = None r"""Maximum number of reasoning tokens each panelist and judge model may use. Helps bound cost when models allocate too much budget to chain-of-thought.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["effort", "max_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 FusionServerToolConfigToolTypedDict(TypedDict): type: str @@ -63,6 +75,22 @@ class FusionServerToolConfigTool(BaseModel): parameters: Optional[Dict[str, Nullable[Any]]] = None r"""Optional configuration forwarded as the tool's `parameters` object.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["parameters"]) + 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 FusionServerToolConfigTypedDict(TypedDict): r"""Configuration for the openrouter:fusion server tool.""" @@ -111,3 +139,30 @@ class FusionServerToolConfig(BaseModel): tools: Optional[List[FusionServerToolConfigTool]] = None r"""Server tools available to panelist and judge inner calls. Each entry uses the same `{ type, parameters? }` shorthand as the outer Chat Completions request. When omitted, defaults to `[{ type: \"openrouter:web_search\" }, { type: \"openrouter:web_fetch\" }]`. Pass an empty array to disable tools entirely (panelists answer from parametric knowledge only).""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "analysis_models", + "cache_control", + "max_completion_tokens", + "max_tool_calls", + "model", + "reasoning", + "temperature", + "tools", + ] + ) + 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 diff --git a/src/openrouter/components/generationcontentdata.py b/src/openrouter/components/generationcontentdata.py index 065679a3..2005a3b5 100644 --- a/src/openrouter/components/generationcontentdata.py +++ b/src/openrouter/components/generationcontentdata.py @@ -53,30 +53,14 @@ class GenerationContentDataOutput(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["completion", "reasoning"] - 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 diff --git a/src/openrouter/components/generationresponse.py b/src/openrouter/components/generationresponse.py index 5c2e03b0..4016d8a8 100644 --- a/src/openrouter/components/generationresponse.py +++ b/src/openrouter/components/generationresponse.py @@ -10,11 +10,9 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import List, Literal, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict APIType = Union[ @@ -138,7 +136,7 @@ class GenerationResponseDataTypedDict(TypedDict): class GenerationResponseData(BaseModel): r"""Generation data""" - api_type: Annotated[Nullable[APIType], PlainValidator(validate_open_enum(False))] + api_type: Nullable[APIType] r"""Type of API used for the generation""" app_id: Nullable[int] @@ -153,7 +151,7 @@ class GenerationResponseData(BaseModel): created_at: str r"""ISO 8601 timestamp of when the generation was created""" - data_region: Annotated[DataRegion, PlainValidator(validate_open_enum(False))] + data_region: DataRegion r"""The data region this generation was routed through. 'europe' for EU-routed requests, 'global' otherwise.""" external_user: Nullable[str] @@ -272,68 +270,65 @@ class GenerationResponseData(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["request_id", "response_cache_source_id", "session_id"] - nullable_fields = [ - "api_type", - "app_id", - "cache_discount", - "cancelled", - "external_user", - "finish_reason", - "generation_time", - "http_referer", - "latency", - "moderation_latency", - "native_finish_reason", - "native_tokens_cached", - "native_tokens_completion", - "native_tokens_completion_images", - "native_tokens_prompt", - "native_tokens_reasoning", - "num_fetches", - "num_input_audio_prompt", - "num_media_completion", - "num_media_prompt", - "num_search_results", - "preset_id", - "provider_name", - "provider_responses", - "request_id", - "response_cache_source_id", - "router", - "service_tier", - "session_id", - "streamed", - "tokens_completion", - "tokens_prompt", - "upstream_id", - "upstream_inference_cost", - "user_agent", - "web_search_engine", - ] - null_default_fields = [] - + optional_fields = set(["request_id", "response_cache_source_id", "session_id"]) + nullable_fields = set( + [ + "api_type", + "app_id", + "cache_discount", + "cancelled", + "external_user", + "finish_reason", + "generation_time", + "http_referer", + "latency", + "moderation_latency", + "native_finish_reason", + "native_tokens_cached", + "native_tokens_completion", + "native_tokens_completion_images", + "native_tokens_prompt", + "native_tokens_reasoning", + "num_fetches", + "num_input_audio_prompt", + "num_media_completion", + "num_media_prompt", + "num_search_results", + "preset_id", + "provider_name", + "provider_responses", + "request_id", + "response_cache_source_id", + "router", + "service_tier", + "session_id", + "streamed", + "tokens_completion", + "tokens_prompt", + "upstream_id", + "upstream_inference_cost", + "user_agent", + "web_search_engine", + ] + ) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/getpresetversionresponse.py b/src/openrouter/components/getpresetversionresponse.py index c7fbebcf..122b9e8c 100644 --- a/src/openrouter/components/getpresetversionresponse.py +++ b/src/openrouter/components/getpresetversionresponse.py @@ -25,30 +25,14 @@ class GetPresetVersionResponse(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["data"] - 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 diff --git a/src/openrouter/components/guardrail.py b/src/openrouter/components/guardrail.py index ec0d1398..b087dc33 100644 --- a/src/openrouter/components/guardrail.py +++ b/src/openrouter/components/guardrail.py @@ -14,10 +14,8 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum import pydantic from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import List from typing_extensions import Annotated, NotRequired, TypedDict @@ -122,9 +120,7 @@ class Guardrail(BaseModel): limit_usd: OptionalNullable[float] = UNSET r"""Spending limit in USD""" - reset_interval: Annotated[ - OptionalNullable[GuardrailInterval], PlainValidator(validate_open_enum(False)) - ] = UNSET + reset_interval: OptionalNullable[GuardrailInterval] = UNSET r"""Interval at which the limit resets (daily, weekly, monthly)""" updated_at: OptionalNullable[str] = UNSET @@ -132,62 +128,61 @@ class Guardrail(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "allowed_models", - "allowed_providers", - "content_filter_builtins", - "content_filters", - "description", - "enforce_zdr", - "enforce_zdr_anthropic", - "enforce_zdr_google", - "enforce_zdr_openai", - "enforce_zdr_other", - "ignored_models", - "ignored_providers", - "limit_usd", - "reset_interval", - "updated_at", - ] - nullable_fields = [ - "allowed_models", - "allowed_providers", - "content_filter_builtins", - "content_filters", - "description", - "enforce_zdr", - "enforce_zdr_anthropic", - "enforce_zdr_google", - "enforce_zdr_openai", - "enforce_zdr_other", - "ignored_models", - "ignored_providers", - "limit_usd", - "reset_interval", - "updated_at", - ] - null_default_fields = [] - + optional_fields = set( + [ + "allowed_models", + "allowed_providers", + "content_filter_builtins", + "content_filters", + "description", + "enforce_zdr", + "enforce_zdr_anthropic", + "enforce_zdr_google", + "enforce_zdr_openai", + "enforce_zdr_other", + "ignored_models", + "ignored_providers", + "limit_usd", + "reset_interval", + "updated_at", + ] + ) + nullable_fields = set( + [ + "allowed_models", + "allowed_providers", + "content_filter_builtins", + "content_filters", + "description", + "enforce_zdr", + "enforce_zdr_anthropic", + "enforce_zdr_google", + "enforce_zdr_openai", + "enforce_zdr_other", + "ignored_models", + "ignored_providers", + "limit_usd", + "reset_interval", + "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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/imageendpoint.py b/src/openrouter/components/imageendpoint.py index 8d392046..7fe018a9 100644 --- a/src/openrouter/components/imageendpoint.py +++ b/src/openrouter/components/imageendpoint.py @@ -52,30 +52,14 @@ class ImageEndpoint(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["provider_tag"] - 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 diff --git a/src/openrouter/components/imagegencompletedevent.py b/src/openrouter/components/imagegencompletedevent.py index e767efe3..ca3f68a4 100644 --- a/src/openrouter/components/imagegencompletedevent.py +++ b/src/openrouter/components/imagegencompletedevent.py @@ -2,7 +2,8 @@ from __future__ import annotations from .imagegenerationusage import ImageGenerationUsage, ImageGenerationUsageTypedDict -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -43,3 +44,19 @@ class ImageGenCompletedEvent(BaseModel): usage: Optional[ImageGenerationUsage] = None r"""Token and cost usage for the image generation request, when available""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["media_type", "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 diff --git a/src/openrouter/components/imagegenerationrequest.py b/src/openrouter/components/imagegenerationrequest.py index 6c0fe3e3..5d2a7e63 100644 --- a/src/openrouter/components/imagegenerationrequest.py +++ b/src/openrouter/components/imagegenerationrequest.py @@ -2,10 +2,9 @@ from __future__ import annotations from .contentpartimage import ContentPartImage, ContentPartImageTypedDict -from openrouter.types import BaseModel, Nullable, UnrecognizedStr -from openrouter.utils import validate_open_enum +from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL, UnrecognizedStr import pydantic -from pydantic.functional_validators import PlainValidator +from pydantic import model_serializer from typing import Any, Dict, List, Literal, Optional, Union from typing_extensions import Annotated, NotRequired, TypedDict @@ -479,6 +478,145 @@ class ImageGenerationRequestOptions(BaseModel): Optional[Dict[str, Nullable[Any]]], pydantic.Field(alias="z-ai") ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "01ai", + "ai21", + "aion-labs", + "akashml", + "alibaba", + "amazon-bedrock", + "amazon-nova", + "ambient", + "anthropic", + "anyscale", + "arcee-ai", + "atlas-cloud", + "atoma", + "avian", + "azure", + "baidu", + "baseten", + "black-forest-labs", + "byteplus", + "centml", + "cerebras", + "chutes", + "cirrascale", + "clarifai", + "cloudflare", + "cohere", + "crofai", + "crucible", + "crusoe", + "darkbloom", + "decart", + "deepinfra", + "deepseek", + "dekallm", + "digitalocean", + "enfer", + "fake-provider", + "featherless", + "fireworks", + "friendli", + "gmicloud", + "google-ai-studio", + "google-vertex", + "gopomelo", + "groq", + "heygen", + "huggingface", + "hyperbolic", + "hyperbolic-quantized", + "inception", + "inceptron", + "inferact-vllm", + "inference-net", + "infermatic", + "inflection", + "inocloud", + "io-net", + "ionstream", + "klusterai", + "lambda", + "lepton", + "liquid", + "lynn", + "lynn-private", + "mancer", + "mancer-old", + "mara", + "meta", + "minimax", + "mistral", + "modal", + "modelrun", + "modular", + "moonshotai", + "morph", + "ncompass", + "nebius", + "nex-agi", + "nextbit", + "nineteen", + "novita", + "nvidia", + "octoai", + "open-inference", + "openai", + "parasail", + "perceptron", + "perplexity", + "phala", + "poolside", + "quiver", + "recraft", + "recursal", + "reflection", + "reka", + "relace", + "replicate", + "sakana-ai", + "sambanova", + "sambanova-cloaked", + "seed", + "sf-compute", + "siliconflow", + "sourceful", + "stealth", + "stepfun", + "streamlake", + "switchpoint", + "targon", + "tenstorrent", + "together", + "together-lite", + "ubicloud", + "upstage", + "venice", + "wafer", + "wandb", + "xai", + "xiaomi", + "z-ai", + ] + ) + 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 ImageGenerationRequestProviderTypedDict(TypedDict): r"""Provider-specific passthrough configuration""" @@ -491,6 +629,22 @@ class ImageGenerationRequestProvider(BaseModel): options: Optional[ImageGenerationRequestOptions] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["options"]) + 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 + ImageGenerationRequestQuality = Union[ Literal[ @@ -558,16 +712,10 @@ class ImageGenerationRequest(BaseModel): prompt: str r"""Text description of the desired image""" - aspect_ratio: Annotated[ - Optional[ImageGenerationRequestAspectRatio], - PlainValidator(validate_open_enum(False)), - ] = None + aspect_ratio: Optional[ImageGenerationRequestAspectRatio] = None r"""Normalized aspect ratio of the generated image. Providers clamp to their supported subset.""" - background: Annotated[ - Optional[ImageGenerationRequestBackground], - PlainValidator(validate_open_enum(False)), - ] = None + background: Optional[ImageGenerationRequestBackground] = None r"""Background treatment. `transparent` requires an output_format that supports alpha (png or webp).""" input_references: Optional[List[ContentPartImage]] = None @@ -579,25 +727,16 @@ class ImageGenerationRequest(BaseModel): output_compression: Optional[int] = None r"""Compression level (0-100) for webp/jpeg output. Ignored for png and by providers without a compression knob.""" - output_format: Annotated[ - Optional[ImageGenerationRequestOutputFormat], - PlainValidator(validate_open_enum(False)), - ] = None + output_format: Optional[ImageGenerationRequestOutputFormat] = None r"""Encoding of the returned image bytes. Most models produce raster formats (png, jpeg, webp). SVG is supported by vectorization models (e.g. Quiver) — the SVG markup is UTF-8 base64-encoded in `b64_json`.""" provider: Optional[ImageGenerationRequestProvider] = None r"""Provider-specific passthrough configuration""" - quality: Annotated[ - Optional[ImageGenerationRequestQuality], - PlainValidator(validate_open_enum(False)), - ] = None + quality: Optional[ImageGenerationRequestQuality] = None r"""Rendering quality. Providers without a quality knob ignore this.""" - resolution: Annotated[ - Optional[ImageGenerationRequestResolution], - PlainValidator(validate_open_enum(False)), - ] = None + resolution: Optional[ImageGenerationRequestResolution] = None r"""Normalized resolution tier of the generated image. Concrete pixel dimensions are derived per-provider.""" seed: Optional[int] = None @@ -608,3 +747,40 @@ class ImageGenerationRequest(BaseModel): stream: Optional[bool] = None r"""If true, partial images are streamed as SSE events as they become available. Only supported by providers with native streaming (currently OpenAI). Non-streaming providers ignore this flag and return a buffered response.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "aspect_ratio", + "background", + "input_references", + "n", + "output_compression", + "output_format", + "provider", + "quality", + "resolution", + "seed", + "size", + "stream", + ] + ) + 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 + + +try: + ImageGenerationRequestOptions.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/imagegenerationresponse.py b/src/openrouter/components/imagegenerationresponse.py index 64b059a1..7eddf64e 100644 --- a/src/openrouter/components/imagegenerationresponse.py +++ b/src/openrouter/components/imagegenerationresponse.py @@ -2,7 +2,8 @@ from __future__ import annotations from .imagegenerationusage import ImageGenerationUsage, ImageGenerationUsageTypedDict -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional from typing_extensions import NotRequired, TypedDict @@ -21,6 +22,22 @@ class ImageGenerationResponseData(BaseModel): media_type: Optional[str] = None r"""Media type (MIME type) of the image. Omitted when the output is a standard raster format (PNG). Present for non-raster outputs such as SVG (`image/svg+xml`).""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["media_type"]) + 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 ImageGenerationResponseTypedDict(TypedDict): r"""Image generation response""" @@ -44,3 +61,19 @@ class ImageGenerationResponse(BaseModel): usage: Optional[ImageGenerationUsage] = None r"""Token and cost usage for the image generation request, when available""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["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 diff --git a/src/openrouter/components/imagegenerationservertool.py b/src/openrouter/components/imagegenerationservertool.py index dfcb122b..6e4cf9a3 100644 --- a/src/openrouter/components/imagegenerationservertool.py +++ b/src/openrouter/components/imagegenerationservertool.py @@ -9,11 +9,9 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict ImageGenerationServerToolBackground = Union[ @@ -45,6 +43,22 @@ class InputImageMask(BaseModel): image_url: Optional[str] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["file_id", "image_url"]) + 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 + ModelEnum = Union[ Literal[ @@ -120,78 +134,60 @@ class ImageGenerationServerTool(BaseModel): type: ImageGenerationServerToolType - background: Annotated[ - Optional[ImageGenerationServerToolBackground], - PlainValidator(validate_open_enum(False)), - ] = None + background: Optional[ImageGenerationServerToolBackground] = None - input_fidelity: Annotated[ - OptionalNullable[InputFidelity], PlainValidator(validate_open_enum(False)) - ] = UNSET + input_fidelity: OptionalNullable[InputFidelity] = UNSET input_image_mask: Optional[InputImageMask] = None - model: Annotated[Optional[ModelEnum], PlainValidator(validate_open_enum(False))] = ( - None - ) + model: Optional[ModelEnum] = None - moderation: Annotated[ - Optional[Moderation], PlainValidator(validate_open_enum(False)) - ] = None + moderation: Optional[Moderation] = None output_compression: Optional[int] = None - output_format: Annotated[ - Optional[ImageGenerationServerToolOutputFormat], - PlainValidator(validate_open_enum(False)), - ] = None + output_format: Optional[ImageGenerationServerToolOutputFormat] = None partial_images: Optional[int] = None - quality: Annotated[ - Optional[ImageGenerationServerToolQuality], - PlainValidator(validate_open_enum(False)), - ] = None + quality: Optional[ImageGenerationServerToolQuality] = None - size: Annotated[Optional[Size], PlainValidator(validate_open_enum(False))] = None + size: Optional[Size] = None @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = [ - "background", - "input_fidelity", - "input_image_mask", - "model", - "moderation", - "output_compression", - "output_format", - "partial_images", - "quality", - "size", - ] - nullable_fields = ["input_fidelity"] - null_default_fields = [] - + def _serialize_model(self, handler): + optional_fields = set( + [ + "background", + "input_fidelity", + "input_image_mask", + "model", + "moderation", + "output_compression", + "output_format", + "partial_images", + "quality", + "size", + ] + ) + nullable_fields = set(["input_fidelity"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/imagegenerationservertool_openrouter.py b/src/openrouter/components/imagegenerationservertool_openrouter.py index c9609dbd..dbae6498 100644 --- a/src/openrouter/components/imagegenerationservertool_openrouter.py +++ b/src/openrouter/components/imagegenerationservertool_openrouter.py @@ -5,7 +5,8 @@ ImageGenerationServerToolConfig, ImageGenerationServerToolConfigTypedDict, ) -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -28,3 +29,19 @@ class ImageGenerationServerToolOpenRouter(BaseModel): parameters: Optional[ImageGenerationServerToolConfig] = None r"""Configuration for the openrouter:image_generation server tool. Accepts all image_config params (aspect_ratio, quality, size, background, output_format, output_compression, moderation, etc.) plus a model field.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["parameters"]) + 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 diff --git a/src/openrouter/components/imagegenerationservertoolconfig.py b/src/openrouter/components/imagegenerationservertoolconfig.py index 0fdc8f67..2458156e 100644 --- a/src/openrouter/components/imagegenerationservertoolconfig.py +++ b/src/openrouter/components/imagegenerationservertoolconfig.py @@ -2,9 +2,9 @@ from __future__ import annotations from .imagegenerationservertoolconfig_union import ImageGenerationServerToolConfigUnion -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import ConfigDict +from pydantic import ConfigDict, model_serializer from typing import Dict, Optional from typing_extensions import NotRequired, TypedDict @@ -36,3 +36,22 @@ def additional_properties(self): @additional_properties.setter def additional_properties(self, value): self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["model"]) + 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)) + serialized.pop(k, serialized.pop(n, None)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + for k, v in serialized.items(): + m[k] = v + + return m diff --git a/src/openrouter/components/imagegenerationusage.py b/src/openrouter/components/imagegenerationusage.py index ddc1c845..83ae9b1b 100644 --- a/src/openrouter/components/imagegenerationusage.py +++ b/src/openrouter/components/imagegenerationusage.py @@ -14,11 +14,9 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class ImageGenerationUsageCompletionTokensDetailsTypedDict(TypedDict): @@ -42,31 +40,26 @@ class ImageGenerationUsageCompletionTokensDetails(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["audio_tokens", "image_tokens", "reasoning_tokens"] - nullable_fields = ["audio_tokens", "image_tokens", "reasoning_tokens"] - null_default_fields = [] - + optional_fields = set(["audio_tokens", "image_tokens", "reasoning_tokens"]) + nullable_fields = set(["audio_tokens", "image_tokens", "reasoning_tokens"]) 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) - - 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 + 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 + ) + + 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 @@ -106,43 +99,42 @@ class ImageGenerationUsagePromptTokensDetails(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "audio_tokens", - "cache_write_tokens", - "cached_tokens", - "file_tokens", - "video_tokens", - ] - nullable_fields = [ - "audio_tokens", - "cache_write_tokens", - "cached_tokens", - "file_tokens", - "video_tokens", - ] - null_default_fields = [] - + optional_fields = set( + [ + "audio_tokens", + "cache_write_tokens", + "cached_tokens", + "file_tokens", + "video_tokens", + ] + ) + nullable_fields = set( + [ + "audio_tokens", + "cache_write_tokens", + "cached_tokens", + "file_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.pop(k, None) - - 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 + 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 + ) + + 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 @@ -172,39 +164,30 @@ class ServerToolUse(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "tool_calls_executed", - "tool_calls_requested", - "web_search_requests", - ] - nullable_fields = [ - "tool_calls_executed", - "tool_calls_requested", - "web_search_requests", - ] - null_default_fields = [] - + optional_fields = set( + ["tool_calls_executed", "tool_calls_requested", "web_search_requests"] + ) + nullable_fields = set( + ["tool_calls_executed", "tool_calls_requested", "web_search_requests"] + ) 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) - - 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 + 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 + ) + + 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 @@ -277,55 +260,52 @@ class ImageGenerationUsage(BaseModel): service_tier: OptionalNullable[str] = UNSET r"""The service tier used by the upstream provider for this request""" - speed: Annotated[ - OptionalNullable[AnthropicSpeed], PlainValidator(validate_open_enum(False)) - ] = UNSET + speed: OptionalNullable[AnthropicSpeed] = UNSET @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "completion_tokens_details", - "cost", - "cost_details", - "is_byok", - "iterations", - "prompt_tokens_details", - "server_tool_use", - "service_tier", - "speed", - ] - nullable_fields = [ - "completion_tokens_details", - "cost", - "cost_details", - "iterations", - "prompt_tokens_details", - "server_tool_use", - "service_tier", - "speed", - ] - null_default_fields = [] - + optional_fields = set( + [ + "completion_tokens_details", + "cost", + "cost_details", + "is_byok", + "iterations", + "prompt_tokens_details", + "server_tool_use", + "service_tier", + "speed", + ] + ) + nullable_fields = set( + [ + "completion_tokens_details", + "cost", + "cost_details", + "iterations", + "prompt_tokens_details", + "server_tool_use", + "service_tier", + "speed", + ] + ) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/imagegenstreamerrorevent.py b/src/openrouter/components/imagegenstreamerrorevent.py index 9396413a..80006d6d 100644 --- a/src/openrouter/components/imagegenstreamerrorevent.py +++ b/src/openrouter/components/imagegenstreamerrorevent.py @@ -43,31 +43,26 @@ class ImageGenStreamErrorEventError(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["code", "param", "type"] - nullable_fields = ["code", "param", "type"] - null_default_fields = [] - + optional_fields = set(["code", "param", "type"]) + nullable_fields = set(["code", "param", "type"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/imagemodelarchitecture.py b/src/openrouter/components/imagemodelarchitecture.py index 5e93aaa1..01f0cb5e 100644 --- a/src/openrouter/components/imagemodelarchitecture.py +++ b/src/openrouter/components/imagemodelarchitecture.py @@ -4,10 +4,8 @@ from .imageoutputmodality import ImageOutputModality from .inputmodality import InputModality from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator from typing import List -from typing_extensions import Annotated, TypedDict +from typing_extensions import TypedDict class ImageModelArchitectureTypedDict(TypedDict): @@ -18,12 +16,8 @@ class ImageModelArchitectureTypedDict(TypedDict): class ImageModelArchitecture(BaseModel): - input_modalities: List[ - Annotated[InputModality, PlainValidator(validate_open_enum(False))] - ] + input_modalities: List[InputModality] r"""Supported input modalities""" - output_modalities: List[ - Annotated[ImageOutputModality, PlainValidator(validate_open_enum(False))] - ] + output_modalities: List[ImageOutputModality] r"""Supported output modalities""" diff --git a/src/openrouter/components/imagepricingentry.py b/src/openrouter/components/imagepricingentry.py index 8a870046..4e4c1cb0 100644 --- a/src/openrouter/components/imagepricingentry.py +++ b/src/openrouter/components/imagepricingentry.py @@ -1,11 +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 validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL, UnrecognizedStr +from pydantic import model_serializer from typing import Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict Billable = Union[ @@ -42,10 +41,26 @@ class ImagePricingEntryTypedDict(TypedDict): class ImagePricingEntry(BaseModel): r"""One billable pricing line for an image provider.""" - billable: Annotated[Billable, PlainValidator(validate_open_enum(False))] + billable: Billable cost_usd: float - unit: Annotated[Unit, PlainValidator(validate_open_enum(False))] + unit: Unit variant: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["variant"]) + 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 diff --git a/src/openrouter/components/imagestreamingresponse.py b/src/openrouter/components/imagestreamingresponse.py index 74c8f066..877d1986 100644 --- a/src/openrouter/components/imagestreamingresponse.py +++ b/src/openrouter/components/imagestreamingresponse.py @@ -13,10 +13,12 @@ ImageGenStreamErrorEvent, ImageGenStreamErrorEventTypedDict, ) +from functools import partial from openrouter.types import BaseModel -from openrouter.utils import get_discriminator -from pydantic import Discriminator, Tag -from typing import Union +from openrouter.utils.unions import parse_open_union +from pydantic import ConfigDict +from pydantic.functional_validators import BeforeValidator +from typing import Any, Literal, Union from typing_extensions import Annotated, TypeAliasType, TypedDict @@ -30,13 +32,39 @@ ) +class UnknownImageStreamingResponseData(BaseModel): + r"""A ImageStreamingResponseData variant the SDK doesn't recognize. Preserves the raw payload.""" + + type: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_IMAGE_STREAMING_RESPONSE_DATA_VARIANTS: dict[str, Any] = { + "image_generation.partial_image": ImageGenPartialImageEvent, + "image_generation.completed": ImageGenCompletedEvent, + "error": ImageGenStreamErrorEvent, +} + + ImageStreamingResponseData = Annotated[ Union[ - Annotated[ImageGenPartialImageEvent, Tag("image_generation.partial_image")], - Annotated[ImageGenCompletedEvent, Tag("image_generation.completed")], - Annotated[ImageGenStreamErrorEvent, Tag("error")], + ImageGenPartialImageEvent, + ImageGenCompletedEvent, + ImageGenStreamErrorEvent, + UnknownImageStreamingResponseData, ], - Discriminator(lambda m: get_discriminator(m, "type", "type")), + BeforeValidator( + partial( + parse_open_union, + disc_key="type", + variants=_IMAGE_STREAMING_RESPONSE_DATA_VARIANTS, + unknown_cls=UnknownImageStreamingResponseData, + union_name="ImageStreamingResponseData", + ) + ), ] diff --git a/src/openrouter/components/incompletedetails.py b/src/openrouter/components/incompletedetails.py index 56dc0963..313c4e71 100644 --- a/src/openrouter/components/incompletedetails.py +++ b/src/openrouter/components/incompletedetails.py @@ -1,11 +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 validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL, UnrecognizedStr +from pydantic import model_serializer from typing import Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict Reason = Union[ @@ -22,6 +21,20 @@ class IncompleteDetailsTypedDict(TypedDict): class IncompleteDetails(BaseModel): - reason: Annotated[Optional[Reason], PlainValidator(validate_open_enum(False))] = ( - None - ) + reason: Optional[Reason] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["reason"]) + 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 diff --git a/src/openrouter/components/inputaudio.py b/src/openrouter/components/inputaudio.py index 00e2180b..bb86cd04 100644 --- a/src/openrouter/components/inputaudio.py +++ b/src/openrouter/components/inputaudio.py @@ -2,9 +2,7 @@ from __future__ import annotations from openrouter.types import BaseModel, UnrecognizedStr -from openrouter.utils import validate_open_enum import pydantic -from pydantic.functional_validators import PlainValidator from typing import Literal, Union from typing_extensions import Annotated, TypedDict @@ -26,10 +24,7 @@ class InputAudioInputAudioTypedDict(TypedDict): class InputAudioInputAudio(BaseModel): data: str - format_: Annotated[ - Annotated[FormatEnum, PlainValidator(validate_open_enum(False))], - pydantic.Field(alias="format"), - ] + format_: Annotated[FormatEnum, pydantic.Field(alias="format")] InputAudioType = Literal["input_audio",] @@ -48,3 +43,9 @@ class InputAudio(BaseModel): input_audio: InputAudioInputAudio type: InputAudioType + + +try: + InputAudioInputAudio.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/inputfile.py b/src/openrouter/components/inputfile.py index 7a6dacdc..96197cab 100644 --- a/src/openrouter/components/inputfile.py +++ b/src/openrouter/components/inputfile.py @@ -41,30 +41,25 @@ class InputFile(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["file_data", "file_id", "file_url", "filename"] - nullable_fields = ["file_id"] - null_default_fields = [] - + optional_fields = set(["file_data", "file_id", "file_url", "filename"]) + nullable_fields = set(["file_id"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/inputimage.py b/src/openrouter/components/inputimage.py index c249efe6..0e7edf2b 100644 --- a/src/openrouter/components/inputimage.py +++ b/src/openrouter/components/inputimage.py @@ -9,11 +9,9 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Literal, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict InputImageDetail = Union[ @@ -41,7 +39,7 @@ class InputImageTypedDict(TypedDict): class InputImage(BaseModel): r"""Image input content item""" - detail: Annotated[InputImageDetail, PlainValidator(validate_open_enum(False))] + detail: InputImageDetail type: InputImageType @@ -49,30 +47,25 @@ class InputImage(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["image_url"] - nullable_fields = ["image_url"] - null_default_fields = [] - + optional_fields = set(["image_url"]) + nullable_fields = set(["image_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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/inputmessageitem.py b/src/openrouter/components/inputmessageitem.py index 0a812fcf..654f6425 100644 --- a/src/openrouter/components/inputmessageitem.py +++ b/src/openrouter/components/inputmessageitem.py @@ -13,9 +13,8 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import get_discriminator, validate_open_enum +from openrouter.utils import get_discriminator 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 @@ -45,7 +44,7 @@ class InputMessageItemContentInputImageTypedDict(TypedDict): class InputMessageItemContentInputImage(BaseModel): r"""Image input content item""" - detail: Annotated[InputMessageItemDetail, PlainValidator(validate_open_enum(False))] + detail: InputMessageItemDetail type: InputMessageItemTypeInputImage @@ -53,31 +52,26 @@ class InputMessageItemContentInputImage(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["image_url"] - nullable_fields = ["image_url"] - null_default_fields = [] - + optional_fields = set(["image_url"]) + nullable_fields = set(["image_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) - - 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 + 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 + ) + + 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 @@ -156,30 +150,25 @@ class InputMessageItem(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["content", "id", "type"] - nullable_fields = ["content"] - null_default_fields = [] - + optional_fields = set(["content", "id", "type"]) + nullable_fields = set(["content"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/inputs_union.py b/src/openrouter/components/inputs_union.py index 04903b81..334026a2 100644 --- a/src/openrouter/components/inputs_union.py +++ b/src/openrouter/components/inputs_union.py @@ -146,10 +146,9 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import get_discriminator, validate_open_enum +from openrouter.utils import get_discriminator import pydantic from pydantic import Discriminator, Tag, model_serializer -from pydantic.functional_validators import PlainValidator from typing import Any, List, Literal, Optional, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict @@ -208,10 +207,7 @@ class InputsReasoning(BaseModel): status: Optional[InputsStatusUnion2] = None format_: Annotated[ - Annotated[ - OptionalNullable[ReasoningFormat], PlainValidator(validate_open_enum(False)) - ], - pydantic.Field(alias="format"), + OptionalNullable[ReasoningFormat], pydantic.Field(alias="format") ] = UNSET signature: OptionalNullable[str] = UNSET @@ -219,43 +215,30 @@ class InputsReasoning(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "content", - "encrypted_content", - "status", - "format", - "signature", - ] - nullable_fields = [ - "content", - "encrypted_content", - "summary", - "format", - "signature", - ] - null_default_fields = [] - + optional_fields = set( + ["content", "encrypted_content", "status", "format", "signature"] + ) + nullable_fields = set( + ["content", "encrypted_content", "summary", "format", "signature"] + ) 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) - - 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 + 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 + ) + + 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 @@ -359,31 +342,26 @@ class InputsMessage(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["phase", "status"] - nullable_fields = ["content", "phase"] - null_default_fields = [] - + optional_fields = set(["phase", "status"]) + nullable_fields = set(["content", "phase"]) 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) - - 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 + 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 + ) + + 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 @@ -500,3 +478,9 @@ def serialize_model(self, handler): InputsUnion = TypeAliasType("InputsUnion", Union[str, List[InputsUnion1]]) r"""Input for a response request - can be a string or array of items""" + + +try: + InputsReasoning.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/internalserverresponseerrordata.py b/src/openrouter/components/internalserverresponseerrordata.py index 499f4923..6742b2ec 100644 --- a/src/openrouter/components/internalserverresponseerrordata.py +++ b/src/openrouter/components/internalserverresponseerrordata.py @@ -32,30 +32,25 @@ class InternalServerResponseErrorData(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["metadata"] - nullable_fields = ["metadata"] - null_default_fields = [] - + optional_fields = set(["metadata"]) + nullable_fields = set(["metadata"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/keyassignment.py b/src/openrouter/components/keyassignment.py index 1598e464..d334197c 100644 --- a/src/openrouter/components/keyassignment.py +++ b/src/openrouter/components/keyassignment.py @@ -47,30 +47,14 @@ class KeyAssignment(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["assigned_by"] - 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 diff --git a/src/openrouter/components/legacy_websearchservertool.py b/src/openrouter/components/legacy_websearchservertool.py index 963b5905..5628eb87 100644 --- a/src/openrouter/components/legacy_websearchservertool.py +++ b/src/openrouter/components/legacy_websearchservertool.py @@ -12,11 +12,9 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Literal, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict LegacyWebSearchServerToolType = Literal["web_search",] @@ -42,9 +40,7 @@ class LegacyWebSearchServerTool(BaseModel): type: LegacyWebSearchServerToolType - engine: Annotated[ - Optional[WebSearchEngineEnum], PlainValidator(validate_open_enum(False)) - ] = None + engine: Optional[WebSearchEngineEnum] = None r"""Which search engine to use. \"auto\" (default) uses native if the provider supports it, otherwise Exa. \"native\" forces the provider's built-in search. \"exa\" forces the Exa search API. \"firecrawl\" uses Firecrawl (requires BYOK). \"parallel\" uses the Parallel search API. \"perplexity\" uses the Perplexity Search API (raw ranked results).""" filters: OptionalNullable[WebSearchDomainFilter] = UNSET @@ -52,9 +48,7 @@ class LegacyWebSearchServerTool(BaseModel): max_results: Optional[int] = None r"""Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, Parallel, and Perplexity engines; ignored with native provider search. Perplexity supports a maximum of 20; values above 20 are clamped.""" - search_context_size: Annotated[ - Optional[SearchContextSizeEnum], PlainValidator(validate_open_enum(False)) - ] = None + search_context_size: Optional[SearchContextSizeEnum] = None r"""Size of the search context for web search tools""" user_location: OptionalNullable[WebSearchUserLocation] = UNSET @@ -62,36 +56,27 @@ class LegacyWebSearchServerTool(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "engine", - "filters", - "max_results", - "search_context_size", - "user_location", - ] - nullable_fields = ["filters", "user_location"] - null_default_fields = [] - + optional_fields = set( + ["engine", "filters", "max_results", "search_context_size", "user_location"] + ) + nullable_fields = set(["filters", "user_location"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/listendpointsresponse.py b/src/openrouter/components/listendpointsresponse.py index de4f1215..9618ef27 100644 --- a/src/openrouter/components/listendpointsresponse.py +++ b/src/openrouter/components/listendpointsresponse.py @@ -6,11 +6,9 @@ from .outputmodality import OutputModality from .publicendpoint import PublicEndpoint, PublicEndpointTypedDict from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL, UnrecognizedStr -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import List, Literal, Union -from typing_extensions import Annotated, TypedDict +from typing_extensions import TypedDict Tokenizer = Union[ @@ -58,52 +56,30 @@ class ArchitectureTypedDict(TypedDict): class Architecture(BaseModel): r"""Model architecture information""" - input_modalities: List[ - Annotated[InputModality, PlainValidator(validate_open_enum(False))] - ] + input_modalities: List[InputModality] r"""Supported input modalities""" - instruct_type: Annotated[ - Nullable[InstructType], PlainValidator(validate_open_enum(False)) - ] + instruct_type: Nullable[InstructType] r"""Instruction format type""" modality: Nullable[str] r"""Primary modality of the model""" - output_modalities: List[ - Annotated[OutputModality, PlainValidator(validate_open_enum(False))] - ] + output_modalities: List[OutputModality] r"""Supported output modalities""" - tokenizer: Annotated[Nullable[Tokenizer], PlainValidator(validate_open_enum(False))] + tokenizer: Nullable[Tokenizer] @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["instruct_type", "modality", "tokenizer"] - 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 diff --git a/src/openrouter/components/localshellcallitem.py b/src/openrouter/components/localshellcallitem.py index 00560d64..5f661878 100644 --- a/src/openrouter/components/localshellcallitem.py +++ b/src/openrouter/components/localshellcallitem.py @@ -9,11 +9,9 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Dict, List, Literal -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict TypeExec = Literal["exec",] @@ -43,31 +41,26 @@ class LocalShellCallItemAction(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["timeout_ms", "user", "working_directory"] - nullable_fields = ["timeout_ms", "user", "working_directory"] - null_default_fields = [] - + optional_fields = set(["timeout_ms", "user", "working_directory"]) + nullable_fields = set(["timeout_ms", "user", "working_directory"]) 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) - - 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 + 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 + ) + + 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 @@ -94,6 +87,6 @@ class LocalShellCallItem(BaseModel): id: str - status: Annotated[ToolCallStatus, PlainValidator(validate_open_enum(False))] + status: ToolCallStatus type: TypeLocalShellCall diff --git a/src/openrouter/components/localshellcalloutputitem.py b/src/openrouter/components/localshellcalloutputitem.py index c1fc1796..24a827a2 100644 --- a/src/openrouter/components/localshellcalloutputitem.py +++ b/src/openrouter/components/localshellcalloutputitem.py @@ -9,11 +9,9 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Literal, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict LocalShellCallOutputItemStatus = Union[ @@ -47,37 +45,29 @@ class LocalShellCallOutputItem(BaseModel): type: LocalShellCallOutputItemType - status: Annotated[ - OptionalNullable[LocalShellCallOutputItemStatus], - PlainValidator(validate_open_enum(False)), - ] = UNSET + status: OptionalNullable[LocalShellCallOutputItemStatus] = UNSET @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["status"] - nullable_fields = ["status"] - null_default_fields = [] - + optional_fields = set(["status"]) + nullable_fields = set(["status"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/mcpapprovalresponseitem.py b/src/openrouter/components/mcpapprovalresponseitem.py index 3231df92..75dc3be4 100644 --- a/src/openrouter/components/mcpapprovalresponseitem.py +++ b/src/openrouter/components/mcpapprovalresponseitem.py @@ -41,30 +41,25 @@ class McpApprovalResponseItem(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["id", "reason"] - nullable_fields = ["id", "reason"] - null_default_fields = [] - + optional_fields = set(["id", "reason"]) + nullable_fields = set(["id", "reason"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/mcpcallitem.py b/src/openrouter/components/mcpcallitem.py index d593dd40..e5f37236 100644 --- a/src/openrouter/components/mcpcallitem.py +++ b/src/openrouter/components/mcpcallitem.py @@ -47,30 +47,25 @@ class McpCallItem(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["error", "output"] - nullable_fields = ["error", "output"] - null_default_fields = [] - + optional_fields = set(["error", "output"]) + nullable_fields = set(["error", "output"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/mcplisttoolsitem.py b/src/openrouter/components/mcplisttoolsitem.py index 305621bd..710c3db1 100644 --- a/src/openrouter/components/mcplisttoolsitem.py +++ b/src/openrouter/components/mcplisttoolsitem.py @@ -31,31 +31,26 @@ class McpListToolsItemTool(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["annotations", "description"] - nullable_fields = ["annotations", "description"] - null_default_fields = [] - + optional_fields = set(["annotations", "description"]) + nullable_fields = set(["annotations", "description"]) 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) - - 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 + 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 + ) + + 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 @@ -88,30 +83,25 @@ class McpListToolsItem(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["error"] - nullable_fields = ["error"] - null_default_fields = [] - + optional_fields = set(["error"]) + nullable_fields = set(["error"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/mcpservertool.py b/src/openrouter/components/mcpservertool.py index 2a2dce01..2b0489b5 100644 --- a/src/openrouter/components/mcpservertool.py +++ b/src/openrouter/components/mcpservertool.py @@ -9,11 +9,9 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Any, Dict, List, Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict +from typing_extensions import NotRequired, TypeAliasType, TypedDict class AllowedToolsTypedDict(TypedDict): @@ -26,6 +24,22 @@ class AllowedTools(BaseModel): tool_names: Optional[List[str]] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["read_only", "tool_names"]) + 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 + AllowedToolsUnionTypedDict = TypeAliasType( "AllowedToolsUnionTypedDict", Union[AllowedToolsTypedDict, List[str], Any] @@ -65,6 +79,22 @@ class AlwaysTypedDict(TypedDict): class Always(BaseModel): tool_names: Optional[List[str]] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tool_names"]) + 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 NeverTypedDict(TypedDict): tool_names: NotRequired[List[str]] @@ -73,6 +103,22 @@ class NeverTypedDict(TypedDict): class Never(BaseModel): tool_names: Optional[List[str]] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tool_names"]) + 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 RequireApprovalTypedDict(TypedDict): always: NotRequired[AlwaysTypedDict] @@ -84,6 +130,22 @@ class RequireApproval(BaseModel): never: Optional[Never] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["always", "never"]) + 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 + RequireApprovalUnionTypedDict = TypeAliasType( "RequireApprovalUnionTypedDict", @@ -125,9 +187,7 @@ class McpServerTool(BaseModel): authorization: Optional[str] = None - connector_id: Annotated[ - Optional[ConnectorID], PlainValidator(validate_open_enum(False)) - ] = None + connector_id: Optional[ConnectorID] = None headers: OptionalNullable[Dict[str, str]] = UNSET @@ -139,38 +199,35 @@ class McpServerTool(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "allowed_tools", - "authorization", - "connector_id", - "headers", - "require_approval", - "server_description", - "server_url", - ] - nullable_fields = ["allowed_tools", "headers", "require_approval"] - null_default_fields = [] - + optional_fields = set( + [ + "allowed_tools", + "authorization", + "connector_id", + "headers", + "require_approval", + "server_description", + "server_url", + ] + ) + nullable_fields = set(["allowed_tools", "headers", "require_approval"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/memberassignment.py b/src/openrouter/components/memberassignment.py index bf257605..7650d341 100644 --- a/src/openrouter/components/memberassignment.py +++ b/src/openrouter/components/memberassignment.py @@ -42,30 +42,14 @@ class MemberAssignment(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["assigned_by"] - 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 diff --git a/src/openrouter/components/messagesmessageparam.py b/src/openrouter/components/messagesmessageparam.py index 2eb70cad..8a9738b3 100644 --- a/src/openrouter/components/messagesmessageparam.py +++ b/src/openrouter/components/messagesmessageparam.py @@ -37,9 +37,8 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import get_discriminator, validate_open_enum +from openrouter.utils import get_discriminator from pydantic import Discriminator, Tag, model_serializer -from pydantic.functional_validators import PlainValidator from typing import Any, List, Literal, Optional, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict @@ -64,31 +63,26 @@ class ContentCompaction(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["cache_control"] - nullable_fields = ["content"] - null_default_fields = [] - + optional_fields = set(["cache_control"]) + nullable_fields = set(["content"]) 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) - - 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 + 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 + ) + + 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 @@ -114,7 +108,7 @@ class ContentWebSearchToolResultErrorTypedDict(TypedDict): class ContentWebSearchToolResultError(BaseModel): - error_code: Annotated[ErrorCode, PlainValidator(validate_open_enum(False))] + error_code: ErrorCode type: TypeWebSearchToolResultError @@ -155,6 +149,22 @@ class ContentWebSearchToolResult(BaseModel): cache_control: Optional[AnthropicCacheControlDirective] = None r"""Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["cache_control"]) + 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 + TypeServerToolUse = Literal["server_tool_use",] @@ -182,31 +192,26 @@ class ContentServerToolUse(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["cache_control", "input"] - nullable_fields = ["input"] - null_default_fields = [] - + optional_fields = set(["cache_control", "input"]) + nullable_fields = set(["input"]) 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) - - 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 + 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 + ) + + 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 @@ -316,6 +321,22 @@ class ContentToolResult(BaseModel): is_error: Optional[bool] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["cache_control", "content", "is_error"]) + 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 + TypeToolUse = Literal["tool_use",] @@ -343,31 +364,26 @@ class ContentToolUse(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["cache_control", "input"] - nullable_fields = ["input"] - null_default_fields = [] - + optional_fields = set(["cache_control", "input"]) + nullable_fields = set(["input"]) 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) - - 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 + 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 + ) + + 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 @@ -444,4 +460,4 @@ class MessagesMessageParam(BaseModel): content: MessagesMessageParamContentUnion5 - role: Annotated[MessagesMessageParamRole, PlainValidator(validate_open_enum(False))] + role: MessagesMessageParamRole diff --git a/src/openrouter/components/messagesoutputconfig.py b/src/openrouter/components/messagesoutputconfig.py index a5410bd9..9b033dd8 100644 --- a/src/openrouter/components/messagesoutputconfig.py +++ b/src/openrouter/components/messagesoutputconfig.py @@ -9,10 +9,8 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import validate_open_enum import pydantic from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Any, Dict, Literal, Union from typing_extensions import Annotated, NotRequired, TypedDict @@ -70,31 +68,26 @@ class TaskBudget(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["remaining"] - nullable_fields = ["remaining"] - null_default_fields = [] - + optional_fields = set(["remaining"]) + nullable_fields = set(["remaining"]) 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) - - 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 + 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 + ) + + 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 @@ -113,10 +106,7 @@ class MessagesOutputConfigTypedDict(TypedDict): class MessagesOutputConfig(BaseModel): r"""Configuration for controlling output behavior. Supports the effort parameter and structured output format.""" - effort: Annotated[ - OptionalNullable[MessagesOutputConfigEffort], - PlainValidator(validate_open_enum(False)), - ] = UNSET + effort: OptionalNullable[MessagesOutputConfigEffort] = UNSET r"""How much effort the model should put into its response. Higher effort levels may result in more thorough analysis but take longer. Valid values are `low`, `medium`, `high`, `xhigh`, or `max`.""" format_: Annotated[ @@ -129,30 +119,35 @@ class MessagesOutputConfig(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["effort", "format", "task_budget"] - nullable_fields = ["effort", "format", "task_budget"] - null_default_fields = [] - + optional_fields = set(["effort", "format", "task_budget"]) + nullable_fields = set(["effort", "format", "task_budget"]) 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) - - 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 + 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 + ) + + 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 + + +try: + MessagesOutputConfigFormat.model_rebuild() +except NameError: + pass +try: + MessagesOutputConfig.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/messagesrequest.py b/src/openrouter/components/messagesrequest.py index 2ccd8d8f..e87ddbde 100644 --- a/src/openrouter/components/messagesrequest.py +++ b/src/openrouter/components/messagesrequest.py @@ -77,10 +77,9 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import get_discriminator, validate_open_enum +from openrouter.utils import get_discriminator import pydantic from pydantic import ConfigDict, Discriminator, Tag, model_serializer -from pydantic.functional_validators import PlainValidator from typing import Any, Dict, List, Literal, Optional, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict @@ -120,31 +119,26 @@ class EditCompact20260112(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["instructions", "pause_after_compaction", "trigger"] - nullable_fields = ["instructions", "trigger"] - null_default_fields = [] - + optional_fields = set(["instructions", "pause_after_compaction", "trigger"]) + nullable_fields = set(["instructions", "trigger"]) 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) - - 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 + 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 + ) + + 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 +178,22 @@ class EditClearThinking20251015(BaseModel): keep: Optional[Keep] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["keep"]) + 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 + ClearToolInputsTypedDict = TypeAliasType( "ClearToolInputsTypedDict", Union[bool, List[str], Any] @@ -235,37 +245,28 @@ class EditClearToolUses20250919(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "clear_at_least", - "clear_tool_inputs", - "exclude_tools", - "keep", - "trigger", - ] - nullable_fields = ["clear_at_least", "clear_tool_inputs", "exclude_tools"] - null_default_fields = [] - + optional_fields = set( + ["clear_at_least", "clear_tool_inputs", "exclude_tools", "keep", "trigger"] + ) + nullable_fields = set(["clear_at_least", "clear_tool_inputs", "exclude_tools"]) 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) - - 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 + 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 + ) + + 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 @@ -297,6 +298,22 @@ class ContextManagementTypedDict(TypedDict): class ContextManagement(BaseModel): edits: Optional[List[Edit]] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["edits"]) + 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 MessagesRequestMetadataTypedDict(TypedDict): user_id: NotRequired[Nullable[str]] @@ -307,31 +324,26 @@ class MessagesRequestMetadata(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["user_id"] - nullable_fields = ["user_id"] - null_default_fields = [] - + optional_fields = set(["user_id"]) + nullable_fields = set(["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.pop(k, None) - - 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 + 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 + ) + + 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 @@ -397,38 +409,30 @@ class ThinkingAdaptiveTypedDict(TypedDict): class ThinkingAdaptive(BaseModel): type: TypeAdaptive - display: Annotated[ - OptionalNullable[AnthropicThinkingDisplay], - PlainValidator(validate_open_enum(False)), - ] = UNSET + display: OptionalNullable[AnthropicThinkingDisplay] = UNSET @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["display"] - nullable_fields = ["display"] - null_default_fields = [] - + optional_fields = set(["display"]) + nullable_fields = set(["display"]) 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) - - 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 + 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 + ) + + 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 @@ -458,38 +462,30 @@ class ThinkingEnabled(BaseModel): type: TypeEnabled - display: Annotated[ - OptionalNullable[AnthropicThinkingDisplay], - PlainValidator(validate_open_enum(False)), - ] = UNSET + display: OptionalNullable[AnthropicThinkingDisplay] = UNSET @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["display"] - nullable_fields = ["display"] - null_default_fields = [] - + optional_fields = set(["display"]) + nullable_fields = set(["display"]) 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) - - 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 + 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 + ) + + 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 @@ -528,6 +524,22 @@ class ToolChoiceTool(BaseModel): disable_parallel_tool_use: Optional[bool] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["disable_parallel_tool_use"]) + 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 + TypeNone = Literal["none",] @@ -553,6 +565,22 @@ class ToolChoiceAny(BaseModel): disable_parallel_tool_use: Optional[bool] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["disable_parallel_tool_use"]) + 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 + ToolChoiceTypeAuto = Literal["auto",] @@ -567,6 +595,22 @@ class ToolChoiceAuto(BaseModel): disable_parallel_tool_use: Optional[bool] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["disable_parallel_tool_use"]) + 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 + ToolChoiceTypedDict = TypeAliasType( "ToolChoiceTypedDict", @@ -626,9 +670,23 @@ class Caching(BaseModel): type: ToolTypeEphemeral - ttl: Annotated[ - Optional[AnthropicCacheControlTTL], PlainValidator(validate_open_enum(False)) - ] = None + ttl: Optional[AnthropicCacheControlTTL] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["ttl"]) + 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 NameAdvisor = Literal["advisor",] @@ -656,13 +714,7 @@ class ToolAdvisor20260301(BaseModel): type: TypeAdvisor20260301 - allowed_callers: Optional[ - List[ - Annotated[ - AnthropicAllowedCallers, PlainValidator(validate_open_enum(False)) - ] - ] - ] = None + allowed_callers: Optional[List[AnthropicAllowedCallers]] = None cache_control: Optional[AnthropicCacheControlDirective] = None r"""Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models.""" @@ -675,37 +727,28 @@ class ToolAdvisor20260301(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "allowed_callers", - "cache_control", - "caching", - "defer_loading", - "max_uses", - ] - nullable_fields = ["caching"] - null_default_fields = [] - + optional_fields = set( + ["allowed_callers", "cache_control", "caching", "defer_loading", "max_uses"] + ) + nullable_fields = set(["caching"]) 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) - - 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 + 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 + ) + + 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 @@ -733,13 +776,7 @@ class ToolWebSearch20260209(BaseModel): type: TypeWebSearch20260209 - allowed_callers: Optional[ - List[ - Annotated[ - AnthropicAllowedCallers, PlainValidator(validate_open_enum(False)) - ] - ] - ] = None + allowed_callers: Optional[List[AnthropicAllowedCallers]] = None allowed_domains: OptionalNullable[List[str]] = UNSET @@ -754,43 +791,37 @@ class ToolWebSearch20260209(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "allowed_callers", - "allowed_domains", - "blocked_domains", - "cache_control", - "max_uses", - "user_location", - ] - nullable_fields = [ - "allowed_domains", - "blocked_domains", - "max_uses", - "user_location", - ] - null_default_fields = [] - + optional_fields = set( + [ + "allowed_callers", + "allowed_domains", + "blocked_domains", + "cache_control", + "max_uses", + "user_location", + ] + ) + nullable_fields = set( + ["allowed_domains", "blocked_domains", "max_uses", "user_location"] + ) 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) - - 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 + 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 + ) + + 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 @@ -830,42 +861,36 @@ class ToolWebSearch20250305(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "allowed_domains", - "blocked_domains", - "cache_control", - "max_uses", - "user_location", - ] - nullable_fields = [ - "allowed_domains", - "blocked_domains", - "max_uses", - "user_location", - ] - null_default_fields = [] - + optional_fields = set( + [ + "allowed_domains", + "blocked_domains", + "cache_control", + "max_uses", + "user_location", + ] + ) + nullable_fields = set( + ["allowed_domains", "blocked_domains", "max_uses", "user_location"] + ) 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) - - 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 + 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 + ) + + 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 @@ -891,6 +916,22 @@ class ToolTextEditor20250124(BaseModel): cache_control: Optional[AnthropicCacheControlDirective] = None r"""Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["cache_control"]) + 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 + NameBash = Literal["bash",] @@ -913,6 +954,22 @@ class ToolBash20250124(BaseModel): cache_control: Optional[AnthropicCacheControlDirective] = None r"""Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["cache_control"]) + 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 InputSchemaTypedDict(TypedDict): properties: NotRequired[Nullable[Any]] @@ -942,32 +999,27 @@ def additional_properties(self, value): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["properties", "required", "type"] - nullable_fields = ["properties", "required"] - null_default_fields = [] - + optional_fields = set(["properties", "required", "type"]) + nullable_fields = set(["properties", "required"]) 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) - - 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 - + val = serialized.get(k, serialized.get(n)) + serialized.pop(k, serialized.pop(n, None)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val for k, v in serialized.items(): m[k] = v @@ -998,6 +1050,22 @@ class ToolCustom(BaseModel): type: Optional[ToolTypeCustom] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["cache_control", "description", "type"]) + 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 + MessagesRequestToolUnionTypedDict = TypeAliasType( "MessagesRequestToolUnionTypedDict", @@ -1114,9 +1182,7 @@ class MessagesRequest(BaseModel): session_id: Optional[str] = None r"""A unique identifier for grouping related requests (e.g., a conversation or agent workflow). When provided, OpenRouter uses it as the sticky routing key, routing all requests in the session to the same provider to maximize prompt cache hits. Also used for observability grouping. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters.""" - speed: Annotated[ - OptionalNullable[Speed], PlainValidator(validate_open_enum(False)) - ] = UNSET + speed: OptionalNullable[Speed] = UNSET stop_sequences: Optional[List[str]] = None @@ -1147,61 +1213,54 @@ class MessagesRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "cache_control", - "context_management", - "fallbacks", - "max_tokens", - "metadata", - "models", - "output_config", - "plugins", - "provider", - "service_tier", - "session_id", - "speed", - "stop_sequences", - "stop_server_tools_when", - "stream", - "system", - "temperature", - "thinking", - "tool_choice", - "tools", - "top_k", - "top_p", - "trace", - "user", - ] - nullable_fields = [ - "context_management", - "fallbacks", - "messages", - "provider", - "speed", - ] - null_default_fields = [] - + optional_fields = set( + [ + "cache_control", + "context_management", + "fallbacks", + "max_tokens", + "metadata", + "models", + "output_config", + "plugins", + "provider", + "service_tier", + "session_id", + "speed", + "stop_sequences", + "stop_server_tools_when", + "stream", + "system", + "temperature", + "thinking", + "tool_choice", + "tools", + "top_k", + "top_p", + "trace", + "user", + ] + ) + nullable_fields = set( + ["context_management", "fallbacks", "messages", "provider", "speed"] + ) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/model.py b/src/openrouter/components/model.py index c0345109..a76656cf 100644 --- a/src/openrouter/components/model.py +++ b/src/openrouter/components/model.py @@ -17,11 +17,9 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class ModelTypedDict(TypedDict): @@ -100,9 +98,7 @@ class Model(BaseModel): pricing: PublicPricing r"""Pricing information for the model""" - supported_parameters: List[ - Annotated[Parameter, PlainValidator(validate_open_enum(False))] - ] + supported_parameters: List[Parameter] r"""List of supported parameters for this model""" supported_voices: Nullable[List[str]] @@ -131,45 +127,44 @@ class Model(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "benchmarks", - "description", - "expiration_date", - "hugging_face_id", - "knowledge_cutoff", - "reasoning", - ] - nullable_fields = [ - "context_length", - "default_parameters", - "expiration_date", - "hugging_face_id", - "knowledge_cutoff", - "per_request_limits", - "supported_voices", - ] - null_default_fields = [] - + optional_fields = set( + [ + "benchmarks", + "description", + "expiration_date", + "hugging_face_id", + "knowledge_cutoff", + "reasoning", + ] + ) + nullable_fields = set( + [ + "context_length", + "default_parameters", + "expiration_date", + "hugging_face_id", + "knowledge_cutoff", + "per_request_limits", + "supported_voices", + ] + ) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/modelarchitecture.py b/src/openrouter/components/modelarchitecture.py index 2da26c7a..1fb1dbcc 100644 --- a/src/openrouter/components/modelarchitecture.py +++ b/src/openrouter/components/modelarchitecture.py @@ -12,11 +12,9 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import validate_open_enum 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 +from typing_extensions import NotRequired, TypedDict ModelArchitectureInstructType = Union[ @@ -67,56 +65,42 @@ class ModelArchitectureTypedDict(TypedDict): class ModelArchitecture(BaseModel): r"""Model architecture information""" - input_modalities: List[ - Annotated[InputModality, PlainValidator(validate_open_enum(False))] - ] + input_modalities: List[InputModality] r"""Supported input modalities""" modality: Nullable[str] r"""Primary modality of the model""" - output_modalities: List[ - Annotated[OutputModality, PlainValidator(validate_open_enum(False))] - ] + output_modalities: List[OutputModality] r"""Supported output modalities""" - instruct_type: Annotated[ - OptionalNullable[ModelArchitectureInstructType], - PlainValidator(validate_open_enum(False)), - ] = UNSET + instruct_type: OptionalNullable[ModelArchitectureInstructType] = UNSET r"""Instruction format type""" - tokenizer: Annotated[ - Optional[ModelGroup], PlainValidator(validate_open_enum(False)) - ] = None + tokenizer: Optional[ModelGroup] = None r"""Tokenizer type used by the model""" @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["instruct_type", "tokenizer"] - nullable_fields = ["instruct_type", "modality"] - null_default_fields = [] - + optional_fields = set(["instruct_type", "tokenizer"]) + nullable_fields = set(["instruct_type", "modality"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/modelbenchmarks.py b/src/openrouter/components/modelbenchmarks.py index 37d57a20..466a8274 100644 --- a/src/openrouter/components/modelbenchmarks.py +++ b/src/openrouter/components/modelbenchmarks.py @@ -3,7 +3,8 @@ from __future__ import annotations from .aabenchmarkentry import AABenchmarkEntry, AABenchmarkEntryTypedDict from .dabenchmarkentry import DABenchmarkEntry, DABenchmarkEntryTypedDict -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional from typing_extensions import NotRequired, TypedDict @@ -25,3 +26,19 @@ class ModelBenchmarks(BaseModel): artificial_analysis: Optional[AABenchmarkEntry] = None r"""Artificial Analysis benchmark index scores.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["artificial_analysis"]) + 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 diff --git a/src/openrouter/components/modelreasoning.py b/src/openrouter/components/modelreasoning.py index fa73b90a..a757560d 100644 --- a/src/openrouter/components/modelreasoning.py +++ b/src/openrouter/components/modelreasoning.py @@ -10,11 +10,9 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import validate_open_enum 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 +from typing_extensions import NotRequired, TypedDict DefaultEffort = Union[ @@ -52,20 +50,12 @@ class ModelReasoning(BaseModel): mandatory: bool r"""When true, reasoning cannot be disabled and effort \"none\" is rejected.""" - default_effort: Annotated[ - OptionalNullable[DefaultEffort], PlainValidator(validate_open_enum(False)) - ] = UNSET + default_effort: OptionalNullable[DefaultEffort] = UNSET default_enabled: Optional[bool] = None r"""Default reasoning enabled state when the client does not set `reasoning.enabled`.""" - supported_efforts: OptionalNullable[ - List[ - Annotated[ - Nullable[ReasoningEffort], PlainValidator(validate_open_enum(False)) - ] - ] - ] = UNSET + supported_efforts: OptionalNullable[List[Nullable[ReasoningEffort]]] = UNSET r"""Allowed reasoning effort values for this model, in descending effort order (highest first). Null means no allowlist — all gateway effort values are accepted.""" supports_max_tokens: Optional[bool] = None @@ -73,35 +63,32 @@ class ModelReasoning(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "default_effort", - "default_enabled", - "supported_efforts", - "supports_max_tokens", - ] - nullable_fields = ["default_effort", "supported_efforts"] - null_default_fields = [] - + optional_fields = set( + [ + "default_effort", + "default_enabled", + "supported_efforts", + "supports_max_tokens", + ] + ) + nullable_fields = set(["default_effort", "supported_efforts"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/multimodalmedia.py b/src/openrouter/components/multimodalmedia.py index 2cd306cd..d71cb727 100644 --- a/src/openrouter/components/multimodalmedia.py +++ b/src/openrouter/components/multimodalmedia.py @@ -1,8 +1,9 @@ """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 import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -16,3 +17,25 @@ class MultimodalMedia(BaseModel): data: str format_: Annotated[Optional[str], pydantic.Field(alias="format")] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["format"]) + 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 + + +try: + MultimodalMedia.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/notfoundresponseerrordata.py b/src/openrouter/components/notfoundresponseerrordata.py index 5b8ca0ce..b7549df7 100644 --- a/src/openrouter/components/notfoundresponseerrordata.py +++ b/src/openrouter/components/notfoundresponseerrordata.py @@ -32,30 +32,25 @@ class NotFoundResponseErrorData(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["metadata"] - nullable_fields = ["metadata"] - null_default_fields = [] - + optional_fields = set(["metadata"]) + nullable_fields = set(["metadata"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/observabilityarizedestination.py b/src/openrouter/components/observabilityarizedestination.py index fdcc98dd..d1fb6054 100644 --- a/src/openrouter/components/observabilityarizedestination.py +++ b/src/openrouter/components/observabilityarizedestination.py @@ -37,6 +37,22 @@ class ObservabilityArizeDestinationConfig(BaseModel): headers: Optional[Dict[str, str]] = None r"""Custom HTTP headers to include in requests to this destination.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["baseUrl", "headers"]) + 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 + ObservabilityArizeDestinationType = Literal["arize",] @@ -103,30 +119,20 @@ class ObservabilityArizeDestination(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["api_key_hashes", "filter_rules", "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 + + +try: + ObservabilityArizeDestinationConfig.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/observabilitybraintrustdestination.py b/src/openrouter/components/observabilitybraintrustdestination.py index 79807584..37016dc2 100644 --- a/src/openrouter/components/observabilitybraintrustdestination.py +++ b/src/openrouter/components/observabilitybraintrustdestination.py @@ -32,6 +32,22 @@ class ObservabilityBraintrustDestinationConfig(BaseModel): headers: Optional[Dict[str, str]] = None r"""Custom HTTP headers to include in requests to this destination.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["baseUrl", "headers"]) + 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 + ObservabilityBraintrustDestinationType = Literal["braintrust",] @@ -98,30 +114,20 @@ class ObservabilityBraintrustDestination(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["api_key_hashes", "filter_rules", "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 + + +try: + ObservabilityBraintrustDestinationConfig.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/observabilityclickhousedestination.py b/src/openrouter/components/observabilityclickhousedestination.py index 7a65ddbf..62812008 100644 --- a/src/openrouter/components/observabilityclickhousedestination.py +++ b/src/openrouter/components/observabilityclickhousedestination.py @@ -37,6 +37,22 @@ class ObservabilityClickhouseDestinationConfig(BaseModel): table: Optional[str] = "OPENROUTER_TRACES" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["headers", "table"]) + 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 + ObservabilityClickhouseDestinationType = Literal["clickhouse",] @@ -103,30 +119,14 @@ class ObservabilityClickhouseDestination(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["api_key_hashes", "filter_rules", "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) - - 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 + val = serialized.get(k, serialized.get(n)) - 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 diff --git a/src/openrouter/components/observabilitydatadogdestination.py b/src/openrouter/components/observabilitydatadogdestination.py index 8043ffca..40cafb2e 100644 --- a/src/openrouter/components/observabilitydatadogdestination.py +++ b/src/openrouter/components/observabilitydatadogdestination.py @@ -36,6 +36,22 @@ class ObservabilityDatadogDestinationConfig(BaseModel): url: Optional[str] = "https://api.us5.datadoghq.com" r"""Datadog API URL for your region (e.g., https://api.datadoghq.com, https://api.us3.datadoghq.com, https://api.datadoghq.eu)""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["headers", "url"]) + 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 + ObservabilityDatadogDestinationType = Literal["datadog",] @@ -102,30 +118,20 @@ class ObservabilityDatadogDestination(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["api_key_hashes", "filter_rules", "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 + + +try: + ObservabilityDatadogDestinationConfig.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/observabilitydestination.py b/src/openrouter/components/observabilitydestination.py index 340a94c5..b7a1d2f3 100644 --- a/src/openrouter/components/observabilitydestination.py +++ b/src/openrouter/components/observabilitydestination.py @@ -69,9 +69,12 @@ ObservabilityWebhookDestination, ObservabilityWebhookDestinationTypedDict, ) -from openrouter.utils import get_discriminator -from pydantic import Discriminator, Tag -from typing import Union +from functools import partial +from openrouter.types import BaseModel +from openrouter.utils.unions import parse_open_union +from pydantic import ConfigDict +from pydantic.functional_validators import BeforeValidator +from typing import Any, Literal, Union from typing_extensions import Annotated, TypeAliasType @@ -99,25 +102,65 @@ ) +class UnknownObservabilityDestination(BaseModel): + r"""A ObservabilityDestination variant the SDK doesn't recognize. Preserves the raw payload.""" + + type: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_OBSERVABILITY_DESTINATION_VARIANTS: dict[str, Any] = { + "arize": ObservabilityArizeDestination, + "braintrust": ObservabilityBraintrustDestination, + "clickhouse": ObservabilityClickhouseDestination, + "datadog": ObservabilityDatadogDestination, + "grafana": ObservabilityGrafanaDestination, + "langfuse": ObservabilityLangfuseDestination, + "langsmith": ObservabilityLangsmithDestination, + "newrelic": ObservabilityNewrelicDestination, + "opik": ObservabilityOpikDestination, + "otel-collector": ObservabilityOtelCollectorDestination, + "posthog": ObservabilityPosthogDestination, + "ramp": ObservabilityRampDestination, + "s3": ObservabilityS3Destination, + "sentry": ObservabilitySentryDestination, + "snowflake": ObservabilitySnowflakeDestination, + "weave": ObservabilityWeaveDestination, + "webhook": ObservabilityWebhookDestination, +} + + ObservabilityDestination = Annotated[ Union[ - Annotated[ObservabilityArizeDestination, Tag("arize")], - Annotated[ObservabilityBraintrustDestination, Tag("braintrust")], - Annotated[ObservabilityClickhouseDestination, Tag("clickhouse")], - Annotated[ObservabilityDatadogDestination, Tag("datadog")], - Annotated[ObservabilityGrafanaDestination, Tag("grafana")], - Annotated[ObservabilityLangfuseDestination, Tag("langfuse")], - Annotated[ObservabilityLangsmithDestination, Tag("langsmith")], - Annotated[ObservabilityNewrelicDestination, Tag("newrelic")], - Annotated[ObservabilityOpikDestination, Tag("opik")], - Annotated[ObservabilityOtelCollectorDestination, Tag("otel-collector")], - Annotated[ObservabilityPosthogDestination, Tag("posthog")], - Annotated[ObservabilityRampDestination, Tag("ramp")], - Annotated[ObservabilityS3Destination, Tag("s3")], - Annotated[ObservabilitySentryDestination, Tag("sentry")], - Annotated[ObservabilitySnowflakeDestination, Tag("snowflake")], - Annotated[ObservabilityWeaveDestination, Tag("weave")], - Annotated[ObservabilityWebhookDestination, Tag("webhook")], + ObservabilityArizeDestination, + ObservabilityBraintrustDestination, + ObservabilityClickhouseDestination, + ObservabilityDatadogDestination, + ObservabilityGrafanaDestination, + ObservabilityLangfuseDestination, + ObservabilityLangsmithDestination, + ObservabilityNewrelicDestination, + ObservabilityOpikDestination, + ObservabilityOtelCollectorDestination, + ObservabilityPosthogDestination, + ObservabilityRampDestination, + ObservabilityS3Destination, + ObservabilitySentryDestination, + ObservabilitySnowflakeDestination, + ObservabilityWeaveDestination, + ObservabilityWebhookDestination, + UnknownObservabilityDestination, ], - Discriminator(lambda m: get_discriminator(m, "type", "type")), + BeforeValidator( + partial( + parse_open_union, + disc_key="type", + variants=_OBSERVABILITY_DESTINATION_VARIANTS, + unknown_cls=UnknownObservabilityDestination, + union_name="ObservabilityDestination", + ) + ), ] diff --git a/src/openrouter/components/observabilityfilterrulesconfig.py b/src/openrouter/components/observabilityfilterrulesconfig.py index 25fc9cf1..76f042e2 100644 --- a/src/openrouter/components/observabilityfilterrulesconfig.py +++ b/src/openrouter/components/observabilityfilterrulesconfig.py @@ -1,11 +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 validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL, UnrecognizedStr +from pydantic import model_serializer from typing import List, Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict +from typing_extensions import NotRequired, TypeAliasType, TypedDict Logic = Union[ @@ -73,12 +72,28 @@ class RuleTypedDict(TypedDict): class Rule(BaseModel): - field: Annotated[FieldT, PlainValidator(validate_open_enum(False))] + field: FieldT - operator: Annotated[Operator, PlainValidator(validate_open_enum(False))] + operator: Operator value: Optional[ObservabilityFilterRulesConfigValue] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["value"]) + 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 GroupTypedDict(TypedDict): rules: List[RuleTypedDict] @@ -88,7 +103,23 @@ class GroupTypedDict(TypedDict): class Group(BaseModel): rules: List[Rule] - logic: Annotated[Optional[Logic], PlainValidator(validate_open_enum(False))] = "and" + logic: Optional[Logic] = "and" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["logic"]) + 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 ObservabilityFilterRulesConfigTypedDict(TypedDict): @@ -104,3 +135,19 @@ class ObservabilityFilterRulesConfig(BaseModel): groups: List[Group] enabled: Optional[bool] = True + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["enabled"]) + 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 diff --git a/src/openrouter/components/observabilitygrafanadestination.py b/src/openrouter/components/observabilitygrafanadestination.py index 184ba8b4..677a4cf6 100644 --- a/src/openrouter/components/observabilitygrafanadestination.py +++ b/src/openrouter/components/observabilitygrafanadestination.py @@ -32,6 +32,22 @@ class ObservabilityGrafanaDestinationConfig(BaseModel): headers: Optional[Dict[str, str]] = None r"""Custom HTTP headers to include in requests to this destination.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["baseUrl", "headers"]) + 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 + ObservabilityGrafanaDestinationType = Literal["grafana",] @@ -98,30 +114,20 @@ class ObservabilityGrafanaDestination(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["api_key_hashes", "filter_rules", "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 + + +try: + ObservabilityGrafanaDestinationConfig.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/observabilitylangfusedestination.py b/src/openrouter/components/observabilitylangfusedestination.py index a2ceb50a..961d4245 100644 --- a/src/openrouter/components/observabilitylangfusedestination.py +++ b/src/openrouter/components/observabilitylangfusedestination.py @@ -32,6 +32,22 @@ class ObservabilityLangfuseDestinationConfig(BaseModel): headers: Optional[Dict[str, str]] = None r"""Custom HTTP headers to include in requests to this destination.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["baseUrl", "headers"]) + 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 + ObservabilityLangfuseDestinationType = Literal["langfuse",] @@ -98,30 +114,20 @@ class ObservabilityLangfuseDestination(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["api_key_hashes", "filter_rules", "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 + + +try: + ObservabilityLangfuseDestinationConfig.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/observabilitylangsmithdestination.py b/src/openrouter/components/observabilitylangsmithdestination.py index cbde9709..84d1b830 100644 --- a/src/openrouter/components/observabilitylangsmithdestination.py +++ b/src/openrouter/components/observabilitylangsmithdestination.py @@ -37,6 +37,22 @@ class ObservabilityLangsmithDestinationConfig(BaseModel): workspace_id: Annotated[Optional[str], pydantic.Field(alias="workspaceId")] = None r"""Required for org-scoped API keys. Find this in your LangSmith workspace settings.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["endpoint", "headers", "project", "workspaceId"]) + 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 + ObservabilityLangsmithDestinationType = Literal["langsmith",] @@ -103,30 +119,20 @@ class ObservabilityLangsmithDestination(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["api_key_hashes", "filter_rules", "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 + + +try: + ObservabilityLangsmithDestinationConfig.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/observabilitynewrelicdestination.py b/src/openrouter/components/observabilitynewrelicdestination.py index b0560ca9..3cae22bc 100644 --- a/src/openrouter/components/observabilitynewrelicdestination.py +++ b/src/openrouter/components/observabilitynewrelicdestination.py @@ -6,10 +6,8 @@ ObservabilityFilterRulesConfigTypedDict, ) from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL, UnrecognizedStr -from openrouter.utils import validate_open_enum import pydantic from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Dict, List, Literal, Optional, Union from typing_extensions import Annotated, NotRequired, TypedDict @@ -36,9 +34,23 @@ class ObservabilityNewrelicDestinationConfig(BaseModel): headers: Optional[Dict[str, str]] = None r"""Custom HTTP headers to include in requests to this destination.""" - region: Annotated[Optional[Region], PlainValidator(validate_open_enum(False))] = ( - "us" - ) + region: Optional[Region] = "us" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["headers", "region"]) + 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 ObservabilityNewrelicDestinationType = Literal["newrelic",] @@ -106,30 +118,20 @@ class ObservabilityNewrelicDestination(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["api_key_hashes", "filter_rules", "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 + + +try: + ObservabilityNewrelicDestinationConfig.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/observabilityopikdestination.py b/src/openrouter/components/observabilityopikdestination.py index eaf453b8..1be42b17 100644 --- a/src/openrouter/components/observabilityopikdestination.py +++ b/src/openrouter/components/observabilityopikdestination.py @@ -30,6 +30,22 @@ class ObservabilityOpikDestinationConfig(BaseModel): headers: Optional[Dict[str, str]] = None r"""Custom HTTP headers to include in requests to this destination.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["headers"]) + 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 + ObservabilityOpikDestinationType = Literal["opik",] @@ -96,30 +112,20 @@ class ObservabilityOpikDestination(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["api_key_hashes", "filter_rules", "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 + + +try: + ObservabilityOpikDestinationConfig.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/observabilityotelcollectordestination.py b/src/openrouter/components/observabilityotelcollectordestination.py index f58eeb0e..00e7086f 100644 --- a/src/openrouter/components/observabilityotelcollectordestination.py +++ b/src/openrouter/components/observabilityotelcollectordestination.py @@ -23,6 +23,22 @@ class ObservabilityOtelCollectorDestinationConfig(BaseModel): headers: Optional[Dict[str, str]] = None r"""Custom HTTP headers as a JSON object. For Axiom, use {\"Authorization\": \"Bearer xaat-xxx\", \"X-Axiom-Dataset\": \"your-dataset\"}""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["headers"]) + 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 + ObservabilityOtelCollectorDestinationType = Literal["otel-collector",] @@ -89,30 +105,14 @@ class ObservabilityOtelCollectorDestination(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["api_key_hashes", "filter_rules", "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) - - 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 + val = serialized.get(k, serialized.get(n)) - 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 diff --git a/src/openrouter/components/observabilityposthogdestination.py b/src/openrouter/components/observabilityposthogdestination.py index abee5d81..3062e974 100644 --- a/src/openrouter/components/observabilityposthogdestination.py +++ b/src/openrouter/components/observabilityposthogdestination.py @@ -27,6 +27,22 @@ class ObservabilityPosthogDestinationConfig(BaseModel): headers: Optional[Dict[str, str]] = None r"""Custom HTTP headers to include in requests to this destination.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["endpoint", "headers"]) + 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 + ObservabilityPosthogDestinationType = Literal["posthog",] @@ -93,30 +109,20 @@ class ObservabilityPosthogDestination(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["api_key_hashes", "filter_rules", "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 + + +try: + ObservabilityPosthogDestinationConfig.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/observabilityrampdestination.py b/src/openrouter/components/observabilityrampdestination.py index f8e119cc..dd28ccf7 100644 --- a/src/openrouter/components/observabilityrampdestination.py +++ b/src/openrouter/components/observabilityrampdestination.py @@ -31,6 +31,22 @@ class ObservabilityRampDestinationConfig(BaseModel): headers: Optional[Dict[str, str]] = None r"""Custom HTTP headers to include in requests to Ramp.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["baseUrl", "headers"]) + 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 + ObservabilityRampDestinationType = Literal["ramp",] @@ -97,30 +113,20 @@ class ObservabilityRampDestination(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["api_key_hashes", "filter_rules", "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 + + +try: + ObservabilityRampDestinationConfig.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/observabilitys3destination.py b/src/openrouter/components/observabilitys3destination.py index 96ea2a8e..5c400317 100644 --- a/src/openrouter/components/observabilitys3destination.py +++ b/src/openrouter/components/observabilitys3destination.py @@ -51,6 +51,24 @@ class ObservabilityS3DestinationConfig(BaseModel): session_token: Annotated[Optional[str], pydantic.Field(alias="sessionToken")] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["endpoint", "headers", "pathTemplate", "prefix", "region", "sessionToken"] + ) + 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 + ObservabilityS3DestinationType = Literal["s3",] @@ -117,30 +135,20 @@ class ObservabilityS3Destination(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["api_key_hashes", "filter_rules", "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 + + +try: + ObservabilityS3DestinationConfig.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/observabilitysentrydestination.py b/src/openrouter/components/observabilitysentrydestination.py index 77f86c72..2c1a346e 100644 --- a/src/openrouter/components/observabilitysentrydestination.py +++ b/src/openrouter/components/observabilitysentrydestination.py @@ -27,6 +27,22 @@ class ObservabilitySentryDestinationConfig(BaseModel): headers: Optional[Dict[str, str]] = None r"""Custom HTTP headers to include in requests to this destination.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["headers"]) + 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 + ObservabilitySentryDestinationType = Literal["sentry",] @@ -93,30 +109,20 @@ class ObservabilitySentryDestination(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["api_key_hashes", "filter_rules", "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 + + +try: + ObservabilitySentryDestinationConfig.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/observabilitysnowflakedestination.py b/src/openrouter/components/observabilitysnowflakedestination.py index e6552f7a..9dd853c8 100644 --- a/src/openrouter/components/observabilitysnowflakedestination.py +++ b/src/openrouter/components/observabilitysnowflakedestination.py @@ -39,6 +39,22 @@ class ObservabilitySnowflakeDestinationConfig(BaseModel): warehouse: Optional[str] = "COMPUTE_WH" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["database", "headers", "schema", "table", "warehouse"]) + 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 + ObservabilitySnowflakeDestinationType = Literal["snowflake",] @@ -105,30 +121,20 @@ class ObservabilitySnowflakeDestination(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["api_key_hashes", "filter_rules", "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 + + +try: + ObservabilitySnowflakeDestinationConfig.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/observabilityweavedestination.py b/src/openrouter/components/observabilityweavedestination.py index 8474c7c7..81e7305b 100644 --- a/src/openrouter/components/observabilityweavedestination.py +++ b/src/openrouter/components/observabilityweavedestination.py @@ -35,6 +35,22 @@ class ObservabilityWeaveDestinationConfig(BaseModel): headers: Optional[Dict[str, str]] = None r"""Custom HTTP headers to include in requests to this destination.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["baseUrl", "headers"]) + 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 + ObservabilityWeaveDestinationType = Literal["weave",] @@ -101,30 +117,20 @@ class ObservabilityWeaveDestination(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["api_key_hashes", "filter_rules", "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 + + +try: + ObservabilityWeaveDestinationConfig.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/observabilitywebhookdestination.py b/src/openrouter/components/observabilitywebhookdestination.py index 3eced6d5..344abac0 100644 --- a/src/openrouter/components/observabilitywebhookdestination.py +++ b/src/openrouter/components/observabilitywebhookdestination.py @@ -6,11 +6,9 @@ ObservabilityFilterRulesConfigTypedDict, ) from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL, UnrecognizedStr -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Dict, List, Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict Method = Union[ @@ -33,9 +31,23 @@ class ObservabilityWebhookDestinationConfig(BaseModel): headers: Optional[Dict[str, str]] = None - method: Annotated[Optional[Method], PlainValidator(validate_open_enum(False))] = ( - "POST" - ) + method: Optional[Method] = "POST" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["headers", "method"]) + 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 ObservabilityWebhookDestinationType = Literal["webhook",] @@ -103,30 +115,14 @@ class ObservabilityWebhookDestination(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["api_key_hashes", "filter_rules", "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) - - 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 + val = serialized.get(k, serialized.get(n)) - 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 diff --git a/src/openrouter/components/openairesponsecustomtoolcall.py b/src/openrouter/components/openairesponsecustomtoolcall.py index a7c4d282..8e86d12f 100644 --- a/src/openrouter/components/openairesponsecustomtoolcall.py +++ b/src/openrouter/components/openairesponsecustomtoolcall.py @@ -1,7 +1,8 @@ """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 pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -32,3 +33,19 @@ class OpenAIResponseCustomToolCall(BaseModel): namespace: Optional[str] = None r"""Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server)""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id", "namespace"]) + 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 diff --git a/src/openrouter/components/openairesponsecustomtoolcalloutput.py b/src/openrouter/components/openairesponsecustomtoolcalloutput.py index 1fdfc556..4cfede4c 100644 --- a/src/openrouter/components/openairesponsecustomtoolcalloutput.py +++ b/src/openrouter/components/openairesponsecustomtoolcalloutput.py @@ -4,10 +4,12 @@ from .inputfile import InputFile, InputFileTypedDict from .inputimage import InputImage, InputImageTypedDict from .inputtext import InputText, InputTextTypedDict -from openrouter.types import BaseModel -from openrouter.utils import get_discriminator -from pydantic import Discriminator, Tag -from typing import List, Literal, Optional, Union +from functools import partial +from openrouter.types import BaseModel, UNSET_SENTINEL +from openrouter.utils.unions import parse_open_union +from pydantic import ConfigDict, model_serializer +from pydantic.functional_validators import BeforeValidator +from typing import Any, List, Literal, Optional, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict @@ -17,13 +19,39 @@ ) +class UnknownOpenAIResponseCustomToolCallOutputOutput1(BaseModel): + r"""A OpenAIResponseCustomToolCallOutputOutput1 variant the SDK doesn't recognize. Preserves the raw payload.""" + + type: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_OPEN_AI_RESPONSE_CUSTOM_TOOL_CALL_OUTPUT_OUTPUT_1_VARIANTS: dict[str, Any] = { + "input_file": InputFile, + "input_image": InputImage, + "input_text": InputText, +} + + OpenAIResponseCustomToolCallOutputOutput1 = Annotated[ Union[ - Annotated[InputFile, Tag("input_file")], - Annotated[InputImage, Tag("input_image")], - Annotated[InputText, Tag("input_text")], + InputFile, + InputImage, + InputText, + UnknownOpenAIResponseCustomToolCallOutputOutput1, ], - Discriminator(lambda m: get_discriminator(m, "type", "type")), + BeforeValidator( + partial( + parse_open_union, + disc_key="type", + variants=_OPEN_AI_RESPONSE_CUSTOM_TOOL_CALL_OUTPUT_OUTPUT_1_VARIANTS, + unknown_cls=UnknownOpenAIResponseCustomToolCallOutputOutput1, + union_name="OpenAIResponseCustomToolCallOutputOutput1", + ) + ), ] @@ -57,3 +85,19 @@ class OpenAIResponseCustomToolCallOutput(BaseModel): type: OpenAIResponseCustomToolCallOutputType id: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["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 diff --git a/src/openrouter/components/openairesponsefunctiontoolcall.py b/src/openrouter/components/openairesponsefunctiontoolcall.py index 2c0fa25b..2351f7f0 100644 --- a/src/openrouter/components/openairesponsefunctiontoolcall.py +++ b/src/openrouter/components/openairesponsefunctiontoolcall.py @@ -2,11 +2,10 @@ from __future__ import annotations from .toolcallstatus import ToolCallStatus -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict OpenAIResponseFunctionToolCallType = Literal["function_call",] @@ -37,6 +36,20 @@ class OpenAIResponseFunctionToolCall(BaseModel): namespace: Optional[str] = None r"""Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server)""" - status: Annotated[ - Optional[ToolCallStatus], PlainValidator(validate_open_enum(False)) - ] = None + status: Optional[ToolCallStatus] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id", "namespace", "status"]) + 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 diff --git a/src/openrouter/components/openairesponsefunctiontoolcalloutput.py b/src/openrouter/components/openairesponsefunctiontoolcalloutput.py index 491f3fa1..af8258c6 100644 --- a/src/openrouter/components/openairesponsefunctiontoolcalloutput.py +++ b/src/openrouter/components/openairesponsefunctiontoolcalloutput.py @@ -4,6 +4,7 @@ from .inputfile import InputFile, InputFileTypedDict from .inputimage import InputImage, InputImageTypedDict from .inputtext import InputText, InputTextTypedDict +from functools import partial from openrouter.types import ( BaseModel, Nullable, @@ -12,10 +13,10 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import get_discriminator, validate_open_enum -from pydantic import Discriminator, Tag, model_serializer -from pydantic.functional_validators import PlainValidator -from typing import List, Literal, Union +from openrouter.utils.unions import parse_open_union +from pydantic import ConfigDict, model_serializer +from pydantic.functional_validators import BeforeValidator +from typing import Any, List, Literal, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict @@ -25,13 +26,39 @@ ) +class UnknownOpenAIResponseFunctionToolCallOutputOutput1(BaseModel): + r"""A OpenAIResponseFunctionToolCallOutputOutput1 variant the SDK doesn't recognize. Preserves the raw payload.""" + + type: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_OPEN_AI_RESPONSE_FUNCTION_TOOL_CALL_OUTPUT_OUTPUT_1_VARIANTS: dict[str, Any] = { + "input_file": InputFile, + "input_image": InputImage, + "input_text": InputText, +} + + OpenAIResponseFunctionToolCallOutputOutput1 = Annotated[ Union[ - Annotated[InputFile, Tag("input_file")], - Annotated[InputImage, Tag("input_image")], - Annotated[InputText, Tag("input_text")], + InputFile, + InputImage, + InputText, + UnknownOpenAIResponseFunctionToolCallOutputOutput1, ], - Discriminator(lambda m: get_discriminator(m, "type", "type")), + BeforeValidator( + partial( + parse_open_union, + disc_key="type", + variants=_OPEN_AI_RESPONSE_FUNCTION_TOOL_CALL_OUTPUT_OUTPUT_1_VARIANTS, + unknown_cls=UnknownOpenAIResponseFunctionToolCallOutputOutput1, + union_name="OpenAIResponseFunctionToolCallOutputOutput1", + ) + ), ] @@ -77,37 +104,29 @@ class OpenAIResponseFunctionToolCallOutput(BaseModel): id: OptionalNullable[str] = UNSET - status: Annotated[ - OptionalNullable[OpenAIResponseFunctionToolCallOutputStatus], - PlainValidator(validate_open_enum(False)), - ] = UNSET + status: OptionalNullable[OpenAIResponseFunctionToolCallOutputStatus] = UNSET @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["id", "status"] - nullable_fields = ["id", "status"] - null_default_fields = [] - + optional_fields = set(["id", "status"]) + nullable_fields = set(["id", "status"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/openairesponseinputmessageitem.py b/src/openrouter/components/openairesponseinputmessageitem.py index 5aedf6b1..3dedde3c 100644 --- a/src/openrouter/components/openairesponseinputmessageitem.py +++ b/src/openrouter/components/openairesponseinputmessageitem.py @@ -5,10 +5,12 @@ from .inputfile import InputFile, InputFileTypedDict from .inputimage import InputImage, InputImageTypedDict from .inputtext import InputText, InputTextTypedDict -from openrouter.types import BaseModel -from openrouter.utils import get_discriminator -from pydantic import Discriminator, Tag -from typing import List, Literal, Optional, Union +from functools import partial +from openrouter.types import BaseModel, UNSET_SENTINEL +from openrouter.utils.unions import parse_open_union +from pydantic import ConfigDict, model_serializer +from pydantic.functional_validators import BeforeValidator +from typing import Any, List, Literal, Optional, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict @@ -20,14 +22,41 @@ ) +class UnknownOpenAIResponseInputMessageItemContent(BaseModel): + r"""A OpenAIResponseInputMessageItemContent variant the SDK doesn't recognize. Preserves the raw payload.""" + + type: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_OPEN_AI_RESPONSE_INPUT_MESSAGE_ITEM_CONTENT_VARIANTS: dict[str, Any] = { + "input_audio": InputAudio, + "input_file": InputFile, + "input_image": InputImage, + "input_text": InputText, +} + + OpenAIResponseInputMessageItemContent = Annotated[ Union[ - Annotated[InputAudio, Tag("input_audio")], - Annotated[InputFile, Tag("input_file")], - Annotated[InputImage, Tag("input_image")], - Annotated[InputText, Tag("input_text")], + InputAudio, + InputFile, + InputImage, + InputText, + UnknownOpenAIResponseInputMessageItemContent, ], - Discriminator(lambda m: get_discriminator(m, "type", "type")), + BeforeValidator( + partial( + parse_open_union, + disc_key="type", + variants=_OPEN_AI_RESPONSE_INPUT_MESSAGE_ITEM_CONTENT_VARIANTS, + unknown_cls=UnknownOpenAIResponseInputMessageItemContent, + union_name="OpenAIResponseInputMessageItemContent", + ) + ), ] @@ -78,3 +107,19 @@ class OpenAIResponseInputMessageItem(BaseModel): role: OpenAIResponseInputMessageItemRoleUnion type: Optional[OpenAIResponseInputMessageItemType] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["type"]) + 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 diff --git a/src/openrouter/components/openairesponsesannotation.py b/src/openrouter/components/openairesponsesannotation.py index 1303f981..004a5d0f 100644 --- a/src/openrouter/components/openairesponsesannotation.py +++ b/src/openrouter/components/openairesponsesannotation.py @@ -4,9 +4,12 @@ from .filecitation import FileCitation, FileCitationTypedDict from .filepath import FilePath, FilePathTypedDict from .urlcitation import URLCitation, URLCitationTypedDict -from openrouter.utils import get_discriminator -from pydantic import Discriminator, Tag -from typing import Union +from functools import partial +from openrouter.types import BaseModel +from openrouter.utils.unions import parse_open_union +from pydantic import ConfigDict +from pydantic.functional_validators import BeforeValidator +from typing import Any, Literal, Union from typing_extensions import Annotated, TypeAliasType @@ -16,11 +19,32 @@ ) +class UnknownOpenAIResponsesAnnotation(BaseModel): + r"""A OpenAIResponsesAnnotation variant the SDK doesn't recognize. Preserves the raw payload.""" + + type: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_OPEN_AI_RESPONSES_ANNOTATION_VARIANTS: dict[str, Any] = { + "file_citation": FileCitation, + "url_citation": URLCitation, + "file_path": FilePath, +} + + OpenAIResponsesAnnotation = Annotated[ - Union[ - Annotated[FileCitation, Tag("file_citation")], - Annotated[URLCitation, Tag("url_citation")], - Annotated[FilePath, Tag("file_path")], - ], - Discriminator(lambda m: get_discriminator(m, "type", "type")), + Union[FileCitation, URLCitation, FilePath, UnknownOpenAIResponsesAnnotation], + BeforeValidator( + partial( + parse_open_union, + disc_key="type", + variants=_OPEN_AI_RESPONSES_ANNOTATION_VARIANTS, + unknown_cls=UnknownOpenAIResponsesAnnotation, + union_name="OpenAIResponsesAnnotation", + ) + ), ] diff --git a/src/openrouter/components/openresponsesresult.py b/src/openrouter/components/openresponsesresult.py index d53fb70e..757158f7 100644 --- a/src/openrouter/components/openresponsesresult.py +++ b/src/openrouter/components/openresponsesresult.py @@ -45,6 +45,7 @@ from .truncation import Truncation from .usage import Usage, UsageTypedDict from .websearchservertool import WebSearchServerTool, WebSearchServerToolTypedDict +from functools import partial from openrouter.types import ( BaseModel, Nullable, @@ -52,9 +53,9 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import get_discriminator, validate_open_enum -from pydantic import Discriminator, Tag, model_serializer -from pydantic.functional_validators import PlainValidator +from openrouter.utils.unions import parse_open_union +from pydantic import ConfigDict, model_serializer +from pydantic.functional_validators import BeforeValidator from typing import Any, Dict, List, Literal, Optional, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict @@ -90,31 +91,26 @@ class OpenResponsesResultToolFunction(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["description", "strict"] - nullable_fields = ["description", "parameters", "strict"] - null_default_fields = [] - + optional_fields = set(["description", "strict"]) + nullable_fields = set(["description", "parameters", "strict"]) 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) - - 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 + 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 + ) + + 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 @@ -140,26 +136,61 @@ def serialize_model(self, handler): ) +class UnknownOpenResponsesResultToolUnion(BaseModel): + r"""A OpenResponsesResultToolUnion variant the SDK doesn't recognize. Preserves the raw payload.""" + + type: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_OPEN_RESPONSES_RESULT_TOOL_UNION_VARIANTS: dict[str, Any] = { + "function": OpenResponsesResultToolFunction, + "web_search_preview": PreviewWebSearchServerTool, + "web_search_preview_2025_03_11": Preview20250311WebSearchServerTool, + "web_search": LegacyWebSearchServerTool, + "web_search_2025_08_26": WebSearchServerTool, + "file_search": FileSearchServerTool, + "computer_use_preview": ComputerUseServerTool, + "code_interpreter": CodeInterpreterServerTool, + "mcp": McpServerTool, + "image_generation": ImageGenerationServerTool, + "local_shell": CodexLocalShellTool, + "shell": ShellServerTool, + "apply_patch": ApplyPatchServerTool, + "custom": CustomTool, +} + + OpenResponsesResultToolUnion = Annotated[ Union[ - Annotated[OpenResponsesResultToolFunction, Tag("function")], - Annotated[PreviewWebSearchServerTool, Tag("web_search_preview")], - Annotated[ - Preview20250311WebSearchServerTool, Tag("web_search_preview_2025_03_11") - ], - Annotated[LegacyWebSearchServerTool, Tag("web_search")], - Annotated[WebSearchServerTool, Tag("web_search_2025_08_26")], - Annotated[FileSearchServerTool, Tag("file_search")], - Annotated[ComputerUseServerTool, Tag("computer_use_preview")], - Annotated[CodeInterpreterServerTool, Tag("code_interpreter")], - Annotated[McpServerTool, Tag("mcp")], - Annotated[ImageGenerationServerTool, Tag("image_generation")], - Annotated[CodexLocalShellTool, Tag("local_shell")], - Annotated[ShellServerTool, Tag("shell")], - Annotated[ApplyPatchServerTool, Tag("apply_patch")], - Annotated[CustomTool, Tag("custom")], + OpenResponsesResultToolFunction, + PreviewWebSearchServerTool, + Preview20250311WebSearchServerTool, + LegacyWebSearchServerTool, + WebSearchServerTool, + FileSearchServerTool, + ComputerUseServerTool, + CodeInterpreterServerTool, + McpServerTool, + ImageGenerationServerTool, + CodexLocalShellTool, + ShellServerTool, + ApplyPatchServerTool, + CustomTool, + UnknownOpenResponsesResultToolUnion, ], - Discriminator(lambda m: get_discriminator(m, "type", "type")), + BeforeValidator( + partial( + parse_open_union, + disc_key="type", + variants=_OPEN_RESPONSES_RESULT_TOOL_UNION_VARIANTS, + unknown_cls=UnknownOpenResponsesResultToolUnion, + union_name="OpenResponsesResultToolUnion", + ) + ), ] @@ -240,9 +271,7 @@ class OpenResponsesResult(BaseModel): presence_penalty: Nullable[float] - status: Annotated[ - OpenAIResponsesResponseStatus, PlainValidator(validate_open_enum(False)) - ] + status: OpenAIResponsesResponseStatus temperature: Nullable[float] @@ -279,89 +308,84 @@ class OpenResponsesResult(BaseModel): top_logprobs: Optional[int] = None - truncation: Annotated[ - OptionalNullable[Truncation], PlainValidator(validate_open_enum(False)) - ] = UNSET + truncation: OptionalNullable[Truncation] = UNSET usage: OptionalNullable[Usage] = UNSET r"""Token usage information for the response""" user: OptionalNullable[str] = UNSET - error_type: Annotated[ - Optional[APIErrorType], PlainValidator(validate_open_enum(False)) - ] = None + error_type: Optional[APIErrorType] = None r"""Canonical OpenRouter error type, stable across all API formats""" openrouter_metadata: Optional[OpenRouterMetadata] = None @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "background", - "max_output_tokens", - "max_tool_calls", - "output_text", - "previous_response_id", - "prompt", - "prompt_cache_key", - "reasoning", - "safety_identifier", - "service_tier", - "store", - "text", - "top_logprobs", - "truncation", - "usage", - "user", - "error_type", - "openrouter_metadata", - ] - nullable_fields = [ - "background", - "completed_at", - "error", - "frequency_penalty", - "incomplete_details", - "instructions", - "max_output_tokens", - "max_tool_calls", - "metadata", - "presence_penalty", - "previous_response_id", - "prompt", - "prompt_cache_key", - "reasoning", - "safety_identifier", - "service_tier", - "temperature", - "top_p", - "truncation", - "usage", - "user", - ] - null_default_fields = [] - + optional_fields = set( + [ + "background", + "max_output_tokens", + "max_tool_calls", + "output_text", + "previous_response_id", + "prompt", + "prompt_cache_key", + "reasoning", + "safety_identifier", + "service_tier", + "store", + "text", + "top_logprobs", + "truncation", + "usage", + "user", + "error_type", + "openrouter_metadata", + ] + ) + nullable_fields = set( + [ + "background", + "completed_at", + "error", + "frequency_penalty", + "incomplete_details", + "instructions", + "max_output_tokens", + "max_tool_calls", + "metadata", + "presence_penalty", + "previous_response_id", + "prompt", + "prompt_cache_key", + "reasoning", + "safety_identifier", + "service_tier", + "temperature", + "top_p", + "truncation", + "usage", + "user", + ] + ) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/openroutermetadata.py b/src/openrouter/components/openroutermetadata.py index bc1d7f3b..09b552bd 100644 --- a/src/openrouter/components/openroutermetadata.py +++ b/src/openrouter/components/openroutermetadata.py @@ -7,11 +7,9 @@ from .routerparams import RouterParams, RouterParamsTypedDict from .routingstrategy import RoutingStrategy from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class OpenRouterMetadataTypedDict(TypedDict): @@ -38,7 +36,7 @@ class OpenRouterMetadata(BaseModel): requested: str - strategy: Annotated[RoutingStrategy, PlainValidator(validate_open_enum(False))] + strategy: RoutingStrategy summary: str @@ -50,30 +48,25 @@ class OpenRouterMetadata(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["attempts", "params", "pipeline"] - nullable_fields = ["region"] - null_default_fields = [] - + optional_fields = set(["attempts", "params", "pipeline"]) + nullable_fields = set(["region"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/openrouterwebsearchservertool.py b/src/openrouter/components/openrouterwebsearchservertool.py index 0f83d440..73c09231 100644 --- a/src/openrouter/components/openrouterwebsearchservertool.py +++ b/src/openrouter/components/openrouterwebsearchservertool.py @@ -2,7 +2,8 @@ from __future__ import annotations from .websearchconfig import WebSearchConfig, WebSearchConfigTypedDict -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -23,3 +24,19 @@ class OpenRouterWebSearchServerTool(BaseModel): type: OpenRouterWebSearchServerToolType parameters: Optional[WebSearchConfig] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["parameters"]) + 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 diff --git a/src/openrouter/components/outputadvisorservertoolitem.py b/src/openrouter/components/outputadvisorservertoolitem.py index 03871121..aef6c89e 100644 --- a/src/openrouter/components/outputadvisorservertoolitem.py +++ b/src/openrouter/components/outputadvisorservertoolitem.py @@ -2,11 +2,10 @@ from __future__ import annotations from .toolcallstatus import ToolCallStatus -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict OutputAdvisorServerToolItemType = Literal["openrouter:advisor",] @@ -33,7 +32,7 @@ class OutputAdvisorServerToolItemTypedDict(TypedDict): class OutputAdvisorServerToolItem(BaseModel): r"""An openrouter:advisor server tool output item""" - status: Annotated[ToolCallStatus, PlainValidator(validate_open_enum(False))] + status: ToolCallStatus type: OutputAdvisorServerToolItemType @@ -53,3 +52,21 @@ class OutputAdvisorServerToolItem(BaseModel): prompt: Optional[str] = None r"""The prompt the executor sent to the advisor.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["advice", "error", "id", "instance_name", "model", "prompt"] + ) + 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 diff --git a/src/openrouter/components/outputapplypatchcallitem.py b/src/openrouter/components/outputapplypatchcallitem.py index 14c02013..183c5517 100644 --- a/src/openrouter/components/outputapplypatchcallitem.py +++ b/src/openrouter/components/outputapplypatchcallitem.py @@ -7,10 +7,8 @@ ) from .applypatchcallstatus import ApplyPatchCallStatus from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator from typing import Literal -from typing_extensions import Annotated, TypedDict +from typing_extensions import TypedDict OutputApplyPatchCallItemType = Literal["apply_patch_call",] @@ -38,7 +36,7 @@ class OutputApplyPatchCallItem(BaseModel): operation: ApplyPatchCallOperation r"""The patch operation requested by an `apply_patch_call`. `create_file` and `update_file` carry a V4A diff; `delete_file` omits it.""" - status: Annotated[ApplyPatchCallStatus, PlainValidator(validate_open_enum(False))] + status: ApplyPatchCallStatus r"""Lifecycle state of an `apply_patch_call` output item.""" type: OutputApplyPatchCallItemType diff --git a/src/openrouter/components/outputapplypatchservertoolitem.py b/src/openrouter/components/outputapplypatchservertoolitem.py index 96d4dacc..919f2bb6 100644 --- a/src/openrouter/components/outputapplypatchservertoolitem.py +++ b/src/openrouter/components/outputapplypatchservertoolitem.py @@ -6,11 +6,10 @@ ApplyPatchCallOperationTypedDict, ) from .toolcallstatus import ToolCallStatus -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict OutputApplyPatchServerToolItemType = Literal["openrouter:apply_patch",] @@ -30,7 +29,7 @@ class OutputApplyPatchServerToolItemTypedDict(TypedDict): class OutputApplyPatchServerToolItem(BaseModel): r"""An openrouter:apply_patch server tool output item. The turn halts when validation succeeds so the client can apply the patch and echo an `apply_patch_call_output` on the next turn.""" - status: Annotated[ToolCallStatus, PlainValidator(validate_open_enum(False))] + status: ToolCallStatus type: OutputApplyPatchServerToolItemType @@ -40,3 +39,19 @@ class OutputApplyPatchServerToolItem(BaseModel): operation: Optional[ApplyPatchCallOperation] = None r"""The patch operation requested by an `apply_patch_call`. `create_file` and `update_file` carry a V4A diff; `delete_file` omits it.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["call_id", "id", "operation"]) + 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 diff --git a/src/openrouter/components/outputbashservertoolitem.py b/src/openrouter/components/outputbashservertoolitem.py index 2b9fe184..daa5bcc6 100644 --- a/src/openrouter/components/outputbashservertoolitem.py +++ b/src/openrouter/components/outputbashservertoolitem.py @@ -2,10 +2,9 @@ from __future__ import annotations from .toolcallstatus import ToolCallStatus -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum +from openrouter.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic.functional_validators import PlainValidator +from pydantic import model_serializer from typing import Literal, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -28,7 +27,7 @@ class OutputBashServerToolItemTypedDict(TypedDict): class OutputBashServerToolItem(BaseModel): r"""An openrouter:bash server tool output item""" - status: Annotated[ToolCallStatus, PlainValidator(validate_open_enum(False))] + status: ToolCallStatus type: OutputBashServerToolItemType @@ -41,3 +40,25 @@ class OutputBashServerToolItem(BaseModel): stderr: Optional[str] = None stdout: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["command", "exitCode", "id", "stderr", "stdout"]) + 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 + + +try: + OutputBashServerToolItem.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/outputbrowseruseservertoolitem.py b/src/openrouter/components/outputbrowseruseservertoolitem.py index 4e7aac5b..3366466a 100644 --- a/src/openrouter/components/outputbrowseruseservertoolitem.py +++ b/src/openrouter/components/outputbrowseruseservertoolitem.py @@ -2,10 +2,9 @@ from __future__ import annotations from .toolcallstatus import ToolCallStatus -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum +from openrouter.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic.functional_validators import PlainValidator +from pydantic import model_serializer from typing import Literal, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -26,7 +25,7 @@ class OutputBrowserUseServerToolItemTypedDict(TypedDict): class OutputBrowserUseServerToolItem(BaseModel): r"""An openrouter:browser_use server tool output item""" - status: Annotated[ToolCallStatus, PlainValidator(validate_open_enum(False))] + status: ToolCallStatus type: OutputBrowserUseServerToolItemType @@ -37,3 +36,25 @@ class OutputBrowserUseServerToolItem(BaseModel): screenshot_b64: Annotated[Optional[str], pydantic.Field(alias="screenshotB64")] = ( None ) + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["action", "id", "screenshotB64"]) + 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 + + +try: + OutputBrowserUseServerToolItem.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/outputcodeinterpretercallitem.py b/src/openrouter/components/outputcodeinterpretercallitem.py index e3221826..cdf3d63b 100644 --- a/src/openrouter/components/outputcodeinterpretercallitem.py +++ b/src/openrouter/components/outputcodeinterpretercallitem.py @@ -2,11 +2,12 @@ from __future__ import annotations from .toolcallstatus import ToolCallStatus +from functools import partial from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL -from openrouter.utils import get_discriminator, validate_open_enum -from pydantic import Discriminator, Tag, model_serializer -from pydantic.functional_validators import PlainValidator -from typing import List, Literal, Union +from openrouter.utils.unions import parse_open_union +from pydantic import ConfigDict, model_serializer +from pydantic.functional_validators import BeforeValidator +from typing import Any, List, Literal, Union from typing_extensions import Annotated, TypeAliasType, TypedDict @@ -44,9 +45,33 @@ class OutputImage(BaseModel): ) +class UnknownOutputCodeInterpreterCallItemOutputUnion(BaseModel): + r"""A OutputCodeInterpreterCallItemOutputUnion variant the SDK doesn't recognize. Preserves the raw payload.""" + + type: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_OUTPUT_CODE_INTERPRETER_CALL_ITEM_OUTPUT_UNION_VARIANTS: dict[str, Any] = { + "image": OutputImage, + "logs": OutputLogs, +} + + OutputCodeInterpreterCallItemOutputUnion = Annotated[ - Union[Annotated[OutputImage, Tag("image")], Annotated[OutputLogs, Tag("logs")]], - Discriminator(lambda m: get_discriminator(m, "type", "type")), + Union[OutputImage, OutputLogs, UnknownOutputCodeInterpreterCallItemOutputUnion], + BeforeValidator( + partial( + parse_open_union, + disc_key="type", + variants=_OUTPUT_CODE_INTERPRETER_CALL_ITEM_OUTPUT_UNION_VARIANTS, + unknown_cls=UnknownOutputCodeInterpreterCallItemOutputUnion, + union_name="OutputCodeInterpreterCallItemOutputUnion", + ) + ), ] @@ -75,36 +100,20 @@ class OutputCodeInterpreterCallItem(BaseModel): outputs: Nullable[List[OutputCodeInterpreterCallItemOutputUnion]] - status: Annotated[ToolCallStatus, PlainValidator(validate_open_enum(False))] + status: ToolCallStatus type: TypeCodeInterpreterCall @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["code", "outputs"] - 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 diff --git a/src/openrouter/components/outputcodeinterpreterservertoolitem.py b/src/openrouter/components/outputcodeinterpreterservertoolitem.py index 50a002ff..8820add3 100644 --- a/src/openrouter/components/outputcodeinterpreterservertoolitem.py +++ b/src/openrouter/components/outputcodeinterpreterservertoolitem.py @@ -2,10 +2,9 @@ from __future__ import annotations from .toolcallstatus import ToolCallStatus -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum +from openrouter.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic.functional_validators import PlainValidator +from pydantic import model_serializer from typing import Literal, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -29,7 +28,7 @@ class OutputCodeInterpreterServerToolItemTypedDict(TypedDict): class OutputCodeInterpreterServerToolItem(BaseModel): r"""An openrouter:code_interpreter server tool output item""" - status: Annotated[ToolCallStatus, PlainValidator(validate_open_enum(False))] + status: ToolCallStatus type: OutputCodeInterpreterServerToolItemType @@ -44,3 +43,27 @@ class OutputCodeInterpreterServerToolItem(BaseModel): stderr: Optional[str] = None stdout: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["code", "exitCode", "id", "language", "stderr", "stdout"] + ) + 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 + + +try: + OutputCodeInterpreterServerToolItem.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/outputcomputercallitem.py b/src/openrouter/components/outputcomputercallitem.py index 6d1009d4..f13810cd 100644 --- a/src/openrouter/components/outputcomputercallitem.py +++ b/src/openrouter/components/outputcomputercallitem.py @@ -9,11 +9,9 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Any, List, Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class PendingSafetyCheckTypedDict(TypedDict): @@ -57,9 +55,7 @@ class OutputComputerCallItem(BaseModel): pending_safety_checks: List[PendingSafetyCheck] - status: Annotated[ - OutputComputerCallItemStatus, PlainValidator(validate_open_enum(False)) - ] + status: OutputComputerCallItemStatus type: OutputComputerCallItemType @@ -69,30 +65,25 @@ class OutputComputerCallItem(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["action", "id"] - nullable_fields = ["action"] - null_default_fields = [] - + optional_fields = set(["action", "id"]) + nullable_fields = set(["action"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/outputcustomtoolcallitem.py b/src/openrouter/components/outputcustomtoolcallitem.py index 5c3049d8..07f9ca20 100644 --- a/src/openrouter/components/outputcustomtoolcallitem.py +++ b/src/openrouter/components/outputcustomtoolcallitem.py @@ -1,7 +1,8 @@ """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 pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -36,3 +37,19 @@ class OutputCustomToolCallItem(BaseModel): namespace: Optional[str] = None r"""Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server)""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id", "namespace"]) + 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 diff --git a/src/openrouter/components/outputdatetimeitem.py b/src/openrouter/components/outputdatetimeitem.py index e84df923..379dd07b 100644 --- a/src/openrouter/components/outputdatetimeitem.py +++ b/src/openrouter/components/outputdatetimeitem.py @@ -2,9 +2,9 @@ from __future__ import annotations from .toolcallstatus import ToolCallStatus -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer from typing import Literal, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -15,7 +15,7 @@ class OutputDatetimeItemTypedDict(TypedDict): r"""An openrouter:datetime server tool output item""" - datetime: str + datetime_: str r"""ISO 8601 datetime string""" status: ToolCallStatus timezone: str @@ -27,10 +27,10 @@ class OutputDatetimeItemTypedDict(TypedDict): class OutputDatetimeItem(BaseModel): r"""An openrouter:datetime server tool output item""" - datetime: str + datetime_: Annotated[str, pydantic.Field(alias="datetime")] r"""ISO 8601 datetime string""" - status: Annotated[ToolCallStatus, PlainValidator(validate_open_enum(False))] + status: ToolCallStatus timezone: str r"""IANA timezone name""" @@ -38,3 +38,25 @@ class OutputDatetimeItem(BaseModel): type: OutputDatetimeItemType id: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["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 + + +try: + OutputDatetimeItem.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/outputfilesearchcallitem.py b/src/openrouter/components/outputfilesearchcallitem.py index 0c3c4ba7..e6a7eb5f 100644 --- a/src/openrouter/components/outputfilesearchcallitem.py +++ b/src/openrouter/components/outputfilesearchcallitem.py @@ -3,10 +3,8 @@ from __future__ import annotations from .websearchstatus import WebSearchStatus from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator from typing import List, Literal -from typing_extensions import Annotated, TypedDict +from typing_extensions import TypedDict OutputFileSearchCallItemType = Literal["file_search_call",] @@ -24,6 +22,6 @@ class OutputFileSearchCallItem(BaseModel): queries: List[str] - status: Annotated[WebSearchStatus, PlainValidator(validate_open_enum(False))] + status: WebSearchStatus type: OutputFileSearchCallItemType diff --git a/src/openrouter/components/outputfilesearchservertoolitem.py b/src/openrouter/components/outputfilesearchservertoolitem.py index 1916f7da..5be87855 100644 --- a/src/openrouter/components/outputfilesearchservertoolitem.py +++ b/src/openrouter/components/outputfilesearchservertoolitem.py @@ -2,11 +2,10 @@ from __future__ import annotations from .toolcallstatus import ToolCallStatus -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Literal, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict OutputFileSearchServerToolItemType = Literal["openrouter:file_search",] @@ -24,10 +23,26 @@ class OutputFileSearchServerToolItemTypedDict(TypedDict): class OutputFileSearchServerToolItem(BaseModel): r"""An openrouter:file_search server tool output item""" - status: Annotated[ToolCallStatus, PlainValidator(validate_open_enum(False))] + status: ToolCallStatus type: OutputFileSearchServerToolItemType id: Optional[str] = None queries: Optional[List[str]] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id", "queries"]) + 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 diff --git a/src/openrouter/components/outputfunctioncallitem.py b/src/openrouter/components/outputfunctioncallitem.py index dcfc7a80..13dc4afc 100644 --- a/src/openrouter/components/outputfunctioncallitem.py +++ b/src/openrouter/components/outputfunctioncallitem.py @@ -1,7 +1,8 @@ """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 pydantic import model_serializer from typing import Literal, Optional, Union from typing_extensions import NotRequired, TypeAliasType, TypedDict @@ -64,3 +65,19 @@ class OutputFunctionCallItem(BaseModel): r"""Namespace qualifier for tools registered as part of a namespace tool group (e.g. an MCP server)""" status: Optional[OutputFunctionCallItemStatusUnion] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id", "namespace", "status"]) + 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 diff --git a/src/openrouter/components/outputfusionservertoolitem.py b/src/openrouter/components/outputfusionservertoolitem.py index 0e8e4e6e..78b73afe 100644 --- a/src/openrouter/components/outputfusionservertoolitem.py +++ b/src/openrouter/components/outputfusionservertoolitem.py @@ -4,11 +4,10 @@ from .fusionanalysisresult import FusionAnalysisResult, FusionAnalysisResultTypedDict from .fusionsource import FusionSource, FusionSourceTypedDict from .toolcallstatus import ToolCallStatus -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Literal, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class FailedModelTypedDict(TypedDict): @@ -30,6 +29,22 @@ class FailedModel(BaseModel): status_code: Optional[int] = None r"""HTTP status code from the upstream response, when available (e.g. 402, 429).""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["status_code"]) + 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 ResponseTypedDict(TypedDict): model: str @@ -41,6 +56,22 @@ class Response(BaseModel): content: Optional[str] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["content"]) + 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 + OutputFusionServerToolItemType = Literal["openrouter:fusion",] @@ -68,7 +99,7 @@ class OutputFusionServerToolItemTypedDict(TypedDict): class OutputFusionServerToolItem(BaseModel): r"""An openrouter:fusion server tool output item""" - status: Annotated[ToolCallStatus, PlainValidator(validate_open_enum(False))] + status: ToolCallStatus type: OutputFusionServerToolItemType @@ -91,3 +122,29 @@ class OutputFusionServerToolItem(BaseModel): sources: Optional[List[FusionSource]] = None r"""Web pages the analysis panels and judge retrieved via web search during this fusion run, deduplicated by URL across the whole run. Present when at least one model cited a source.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "analysis", + "error", + "failed_models", + "failure_reason", + "id", + "responses", + "sources", + ] + ) + 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 diff --git a/src/openrouter/components/outputimagegenerationcallitem.py b/src/openrouter/components/outputimagegenerationcallitem.py index abaaa536..f53fc079 100644 --- a/src/openrouter/components/outputimagegenerationcallitem.py +++ b/src/openrouter/components/outputimagegenerationcallitem.py @@ -3,11 +3,9 @@ from __future__ import annotations from .imagegenerationstatus import ImageGenerationStatus from openrouter.types import BaseModel, Nullable, OptionalNullable, UNSET_SENTINEL -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Literal -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict OutputImageGenerationCallItemType = Literal["image_generation_call",] @@ -23,7 +21,7 @@ class OutputImageGenerationCallItemTypedDict(TypedDict): class OutputImageGenerationCallItem(BaseModel): id: str - status: Annotated[ImageGenerationStatus, PlainValidator(validate_open_enum(False))] + status: ImageGenerationStatus type: OutputImageGenerationCallItemType @@ -31,30 +29,29 @@ class OutputImageGenerationCallItem(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["result"] - nullable_fields = ["result"] - null_default_fields = ["result"] - + optional_fields = set(["result"]) + nullable_fields = set(["result"]) + null_default_fields = set(["result"]) 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) - - 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 + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and ( + self.__pydantic_fields_set__.intersection({n}) + or k in null_default_fields + ) # pylint: disable=no-member + ) + + 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 diff --git a/src/openrouter/components/outputimagegenerationservertoolitem.py b/src/openrouter/components/outputimagegenerationservertoolitem.py index a94bd096..ae47b1b9 100644 --- a/src/openrouter/components/outputimagegenerationservertoolitem.py +++ b/src/openrouter/components/outputimagegenerationservertoolitem.py @@ -9,10 +9,8 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum import pydantic from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Literal, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -36,7 +34,7 @@ class OutputImageGenerationServerToolItemTypedDict(TypedDict): class OutputImageGenerationServerToolItem(BaseModel): r"""An openrouter:image_generation server tool output item""" - status: Annotated[ToolCallStatus, PlainValidator(validate_open_enum(False))] + status: ToolCallStatus type: OutputImageGenerationServerToolItemType @@ -55,30 +53,31 @@ class OutputImageGenerationServerToolItem(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["id", "imageB64", "imageUrl", "result", "revisedPrompt"] - nullable_fields = ["result"] - null_default_fields = [] - + optional_fields = set(["id", "imageB64", "imageUrl", "result", "revisedPrompt"]) + nullable_fields = set(["result"]) 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) - - 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 + 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 + ) + + 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 + + +try: + OutputImageGenerationServerToolItem.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/outputitemimagegenerationcall.py b/src/openrouter/components/outputitemimagegenerationcall.py index 897c4727..94af810b 100644 --- a/src/openrouter/components/outputitemimagegenerationcall.py +++ b/src/openrouter/components/outputitemimagegenerationcall.py @@ -3,11 +3,9 @@ from __future__ import annotations from .imagegenerationstatus import ImageGenerationStatus from openrouter.types import BaseModel, Nullable, OptionalNullable, UNSET_SENTINEL -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Literal -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict OutputItemImageGenerationCallType = Literal["image_generation_call",] @@ -23,7 +21,7 @@ class OutputItemImageGenerationCallTypedDict(TypedDict): class OutputItemImageGenerationCall(BaseModel): id: str - status: Annotated[ImageGenerationStatus, PlainValidator(validate_open_enum(False))] + status: ImageGenerationStatus type: OutputItemImageGenerationCallType @@ -31,30 +29,29 @@ class OutputItemImageGenerationCall(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["result"] - nullable_fields = ["result"] - null_default_fields = ["result"] - + optional_fields = set(["result"]) + nullable_fields = set(["result"]) + null_default_fields = set(["result"]) 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) - - 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 + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and ( + self.__pydantic_fields_set__.intersection({n}) + or k in null_default_fields + ) # pylint: disable=no-member + ) + + 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 diff --git a/src/openrouter/components/outputitems.py b/src/openrouter/components/outputitems.py index da3d9202..0e3e405a 100644 --- a/src/openrouter/components/outputitems.py +++ b/src/openrouter/components/outputitems.py @@ -105,9 +105,12 @@ OutputWebSearchServerToolItem, OutputWebSearchServerToolItemTypedDict, ) -from openrouter.utils import get_discriminator -from pydantic import Discriminator, Tag -from typing import Union +from functools import partial +from openrouter.types import BaseModel +from openrouter.utils.unions import parse_open_union +from pydantic import ConfigDict +from pydantic.functional_validators import BeforeValidator +from typing import Any, Literal, Union from typing_extensions import Annotated, TypeAliasType @@ -148,45 +151,90 @@ r"""An output item from the response""" +class UnknownOutputItems(BaseModel): + r"""A OutputItems variant the SDK doesn't recognize. Preserves the raw payload.""" + + type: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_OUTPUT_ITEMS_VARIANTS: dict[str, Any] = { + "apply_patch_call": OutputApplyPatchCallItem, + "code_interpreter_call": OutputCodeInterpreterCallItem, + "computer_call": OutputComputerCallItem, + "custom_tool_call": OutputCustomToolCallItem, + "file_search_call": OutputFileSearchCallItem, + "function_call": OutputFunctionCallItem, + "image_generation_call": OutputImageGenerationCallItem, + "message": OutputMessageItem, + "openrouter:advisor": OutputAdvisorServerToolItem, + "openrouter:apply_patch": OutputApplyPatchServerToolItem, + "openrouter:bash": OutputBashServerToolItem, + "openrouter:browser_use": OutputBrowserUseServerToolItem, + "openrouter:code_interpreter": OutputCodeInterpreterServerToolItem, + "openrouter:datetime": OutputDatetimeItem, + "openrouter:experimental__search_models": OutputSearchModelsServerToolItem, + "openrouter:file_search": OutputFileSearchServerToolItem, + "openrouter:fusion": OutputFusionServerToolItem, + "openrouter:image_generation": OutputImageGenerationServerToolItem, + "openrouter:mcp": OutputMcpServerToolItem, + "openrouter:memory": OutputMemoryServerToolItem, + "openrouter:subagent": OutputSubagentServerToolItem, + "openrouter:text_editor": OutputTextEditorServerToolItem, + "openrouter:tool_search": OutputToolSearchServerToolItem, + "openrouter:web_fetch": OutputWebFetchServerToolItem, + "openrouter:web_search": OutputWebSearchServerToolItem, + "reasoning": OutputReasoningItem, + "shell_call": OutputShellCallItem, + "shell_call_output": OutputShellCallOutputItem, + "web_search_call": OutputWebSearchCallItem, +} + + OutputItems = Annotated[ Union[ - Annotated[OutputApplyPatchCallItem, Tag("apply_patch_call")], - Annotated[OutputCodeInterpreterCallItem, Tag("code_interpreter_call")], - Annotated[OutputComputerCallItem, Tag("computer_call")], - Annotated[OutputCustomToolCallItem, Tag("custom_tool_call")], - Annotated[OutputFileSearchCallItem, Tag("file_search_call")], - Annotated[OutputFunctionCallItem, Tag("function_call")], - Annotated[OutputImageGenerationCallItem, Tag("image_generation_call")], - Annotated[OutputMessageItem, Tag("message")], - Annotated[OutputAdvisorServerToolItem, Tag("openrouter:advisor")], - Annotated[OutputApplyPatchServerToolItem, Tag("openrouter:apply_patch")], - Annotated[OutputBashServerToolItem, Tag("openrouter:bash")], - Annotated[OutputBrowserUseServerToolItem, Tag("openrouter:browser_use")], - Annotated[ - OutputCodeInterpreterServerToolItem, Tag("openrouter:code_interpreter") - ], - Annotated[OutputDatetimeItem, Tag("openrouter:datetime")], - Annotated[ - OutputSearchModelsServerToolItem, - Tag("openrouter:experimental__search_models"), - ], - Annotated[OutputFileSearchServerToolItem, Tag("openrouter:file_search")], - Annotated[OutputFusionServerToolItem, Tag("openrouter:fusion")], - Annotated[ - OutputImageGenerationServerToolItem, Tag("openrouter:image_generation") - ], - Annotated[OutputMcpServerToolItem, Tag("openrouter:mcp")], - Annotated[OutputMemoryServerToolItem, Tag("openrouter:memory")], - Annotated[OutputSubagentServerToolItem, Tag("openrouter:subagent")], - Annotated[OutputTextEditorServerToolItem, Tag("openrouter:text_editor")], - Annotated[OutputToolSearchServerToolItem, Tag("openrouter:tool_search")], - Annotated[OutputWebFetchServerToolItem, Tag("openrouter:web_fetch")], - Annotated[OutputWebSearchServerToolItem, Tag("openrouter:web_search")], - Annotated[OutputReasoningItem, Tag("reasoning")], - Annotated[OutputShellCallItem, Tag("shell_call")], - Annotated[OutputShellCallOutputItem, Tag("shell_call_output")], - Annotated[OutputWebSearchCallItem, Tag("web_search_call")], + OutputApplyPatchCallItem, + OutputCodeInterpreterCallItem, + OutputComputerCallItem, + OutputCustomToolCallItem, + OutputFileSearchCallItem, + OutputFunctionCallItem, + OutputImageGenerationCallItem, + OutputMessageItem, + OutputAdvisorServerToolItem, + OutputApplyPatchServerToolItem, + OutputBashServerToolItem, + OutputBrowserUseServerToolItem, + OutputCodeInterpreterServerToolItem, + OutputDatetimeItem, + OutputSearchModelsServerToolItem, + OutputFileSearchServerToolItem, + OutputFusionServerToolItem, + OutputImageGenerationServerToolItem, + OutputMcpServerToolItem, + OutputMemoryServerToolItem, + OutputSubagentServerToolItem, + OutputTextEditorServerToolItem, + OutputToolSearchServerToolItem, + OutputWebFetchServerToolItem, + OutputWebSearchServerToolItem, + OutputReasoningItem, + OutputShellCallItem, + OutputShellCallOutputItem, + OutputWebSearchCallItem, + UnknownOutputItems, ], - Discriminator(lambda m: get_discriminator(m, "type", "type")), + BeforeValidator( + partial( + parse_open_union, + disc_key="type", + variants=_OUTPUT_ITEMS_VARIANTS, + unknown_cls=UnknownOutputItems, + union_name="OutputItems", + ) + ), ] r"""An output item from the response""" diff --git a/src/openrouter/components/outputmcpservertoolitem.py b/src/openrouter/components/outputmcpservertoolitem.py index 25956618..58c21511 100644 --- a/src/openrouter/components/outputmcpservertoolitem.py +++ b/src/openrouter/components/outputmcpservertoolitem.py @@ -2,10 +2,9 @@ from __future__ import annotations from .toolcallstatus import ToolCallStatus -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum +from openrouter.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic.functional_validators import PlainValidator +from pydantic import model_serializer from typing import Literal, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -26,7 +25,7 @@ class OutputMcpServerToolItemTypedDict(TypedDict): class OutputMcpServerToolItem(BaseModel): r"""An openrouter:mcp server tool output item""" - status: Annotated[ToolCallStatus, PlainValidator(validate_open_enum(False))] + status: ToolCallStatus type: OutputMcpServerToolItemType @@ -35,3 +34,25 @@ class OutputMcpServerToolItem(BaseModel): server_label: Annotated[Optional[str], pydantic.Field(alias="serverLabel")] = None tool_name: Annotated[Optional[str], pydantic.Field(alias="toolName")] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id", "serverLabel", "toolName"]) + 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 + + +try: + OutputMcpServerToolItem.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/outputmemoryservertoolitem.py b/src/openrouter/components/outputmemoryservertoolitem.py index 204cc7d4..a7be8fb1 100644 --- a/src/openrouter/components/outputmemoryservertoolitem.py +++ b/src/openrouter/components/outputmemoryservertoolitem.py @@ -10,11 +10,9 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Any, Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict ActionEnum = Union[ @@ -44,13 +42,11 @@ class OutputMemoryServerToolItemTypedDict(TypedDict): class OutputMemoryServerToolItem(BaseModel): r"""An openrouter:memory server tool output item""" - status: Annotated[ToolCallStatus, PlainValidator(validate_open_enum(False))] + status: ToolCallStatus type: OutputMemoryServerToolItemType - action: Annotated[ - Optional[ActionEnum], PlainValidator(validate_open_enum(False)) - ] = None + action: Optional[ActionEnum] = None id: Optional[str] = None @@ -60,30 +56,25 @@ class OutputMemoryServerToolItem(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["action", "id", "key", "value"] - nullable_fields = ["value"] - null_default_fields = [] - + optional_fields = set(["action", "id", "key", "value"]) + nullable_fields = set(["value"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/outputmessage.py b/src/openrouter/components/outputmessage.py index def0cb71..4fff8bd8 100644 --- a/src/openrouter/components/outputmessage.py +++ b/src/openrouter/components/outputmessage.py @@ -6,6 +6,7 @@ OpenAIResponsesRefusalContentTypedDict, ) from .responseoutputtext import ResponseOutputText, ResponseOutputTextTypedDict +from functools import partial from openrouter.types import ( BaseModel, Nullable, @@ -13,8 +14,9 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import get_discriminator -from pydantic import Discriminator, Tag, model_serializer +from openrouter.utils.unions import parse_open_union +from pydantic import ConfigDict, model_serializer +from pydantic.functional_validators import BeforeValidator from typing import Any, List, Literal, Optional, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict @@ -25,12 +27,35 @@ ) +class UnknownOutputMessageContent(BaseModel): + r"""A OutputMessageContent variant the SDK doesn't recognize. Preserves the raw payload.""" + + type: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_OUTPUT_MESSAGE_CONTENT_VARIANTS: dict[str, Any] = { + "output_text": ResponseOutputText, + "refusal": OpenAIResponsesRefusalContent, +} + + OutputMessageContent = Annotated[ Union[ - Annotated[ResponseOutputText, Tag("output_text")], - Annotated[OpenAIResponsesRefusalContent, Tag("refusal")], + ResponseOutputText, OpenAIResponsesRefusalContent, UnknownOutputMessageContent ], - Discriminator(lambda m: get_discriminator(m, "type", "type")), + BeforeValidator( + partial( + parse_open_union, + disc_key="type", + variants=_OUTPUT_MESSAGE_CONTENT_VARIANTS, + unknown_cls=UnknownOutputMessageContent, + union_name="OutputMessageContent", + ) + ), ] @@ -115,30 +140,25 @@ class OutputMessage(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["phase", "status"] - nullable_fields = ["phase"] - null_default_fields = [] - + optional_fields = set(["phase", "status"]) + nullable_fields = set(["phase"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/outputmessageitem.py b/src/openrouter/components/outputmessageitem.py index ec59a9d5..3a2a1f8c 100644 --- a/src/openrouter/components/outputmessageitem.py +++ b/src/openrouter/components/outputmessageitem.py @@ -6,6 +6,7 @@ OpenAIResponsesRefusalContentTypedDict, ) from .responseoutputtext import ResponseOutputText, ResponseOutputTextTypedDict +from functools import partial from openrouter.types import ( BaseModel, Nullable, @@ -13,8 +14,9 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import get_discriminator -from pydantic import Discriminator, Tag, model_serializer +from openrouter.utils.unions import parse_open_union +from pydantic import ConfigDict, model_serializer +from pydantic.functional_validators import BeforeValidator from typing import Any, List, Literal, Optional, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict @@ -25,12 +27,37 @@ ) +class UnknownOutputMessageItemContent(BaseModel): + r"""A OutputMessageItemContent variant the SDK doesn't recognize. Preserves the raw payload.""" + + type: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_OUTPUT_MESSAGE_ITEM_CONTENT_VARIANTS: dict[str, Any] = { + "output_text": ResponseOutputText, + "refusal": OpenAIResponsesRefusalContent, +} + + OutputMessageItemContent = Annotated[ Union[ - Annotated[ResponseOutputText, Tag("output_text")], - Annotated[OpenAIResponsesRefusalContent, Tag("refusal")], + ResponseOutputText, + OpenAIResponsesRefusalContent, + UnknownOutputMessageItemContent, ], - Discriminator(lambda m: get_discriminator(m, "type", "type")), + BeforeValidator( + partial( + parse_open_union, + disc_key="type", + variants=_OUTPUT_MESSAGE_ITEM_CONTENT_VARIANTS, + unknown_cls=UnknownOutputMessageItemContent, + union_name="OutputMessageItemContent", + ) + ), ] @@ -119,30 +146,25 @@ class OutputMessageItem(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["phase", "status"] - nullable_fields = ["phase"] - null_default_fields = [] - + optional_fields = set(["phase", "status"]) + nullable_fields = set(["phase"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/outputreasoningitem.py b/src/openrouter/components/outputreasoningitem.py index 50eff94f..46e8472b 100644 --- a/src/openrouter/components/outputreasoningitem.py +++ b/src/openrouter/components/outputreasoningitem.py @@ -11,10 +11,8 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum 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, TypeAliasType, TypedDict @@ -81,10 +79,7 @@ class OutputReasoningItem(BaseModel): status: Optional[OutputReasoningItemStatusUnion] = None format_: Annotated[ - Annotated[ - OptionalNullable[ReasoningFormat], PlainValidator(validate_open_enum(False)) - ], - pydantic.Field(alias="format"), + OptionalNullable[ReasoningFormat], pydantic.Field(alias="format") ] = UNSET signature: OptionalNullable[str] = UNSET @@ -92,36 +87,33 @@ class OutputReasoningItem(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "content", - "encrypted_content", - "status", - "format", - "signature", - ] - nullable_fields = ["content", "encrypted_content", "format", "signature"] - null_default_fields = [] - + optional_fields = set( + ["content", "encrypted_content", "status", "format", "signature"] + ) + nullable_fields = set(["content", "encrypted_content", "format", "signature"]) 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) - - 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 + 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 + ) + + 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 + + +try: + OutputReasoningItem.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/outputsearchmodelsservertoolitem.py b/src/openrouter/components/outputsearchmodelsservertoolitem.py index f94949d2..b9f5ac2a 100644 --- a/src/openrouter/components/outputsearchmodelsservertoolitem.py +++ b/src/openrouter/components/outputsearchmodelsservertoolitem.py @@ -2,11 +2,10 @@ from __future__ import annotations from .toolcallstatus import ToolCallStatus -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict OutputSearchModelsServerToolItemType = Literal[ @@ -28,7 +27,7 @@ class OutputSearchModelsServerToolItemTypedDict(TypedDict): class OutputSearchModelsServerToolItem(BaseModel): r"""An openrouter:experimental__search_models server tool output item""" - status: Annotated[ToolCallStatus, PlainValidator(validate_open_enum(False))] + status: ToolCallStatus type: OutputSearchModelsServerToolItemType @@ -38,3 +37,19 @@ class OutputSearchModelsServerToolItem(BaseModel): id: Optional[str] = None query: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["arguments", "id", "query"]) + 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 diff --git a/src/openrouter/components/outputshellcallitem.py b/src/openrouter/components/outputshellcallitem.py index d2ecd9f1..b5840770 100644 --- a/src/openrouter/components/outputshellcallitem.py +++ b/src/openrouter/components/outputshellcallitem.py @@ -3,11 +3,9 @@ from __future__ import annotations from .shellcallstatus import ShellCallStatus from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import List, Literal, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class OutputShellCallItemActionTypedDict(TypedDict): @@ -25,30 +23,14 @@ class OutputShellCallItemAction(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["max_output_length", "timeout_ms"] - 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 @@ -75,9 +57,25 @@ class OutputShellCallItem(BaseModel): id: str - status: Annotated[ShellCallStatus, PlainValidator(validate_open_enum(False))] + status: ShellCallStatus r"""Status of a shell call or its output.""" type: OutputShellCallItemType action: Optional[OutputShellCallItemAction] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["action"]) + 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 diff --git a/src/openrouter/components/outputshellcalloutputitem.py b/src/openrouter/components/outputshellcalloutputitem.py index fca6bbd4..18a1f6df 100644 --- a/src/openrouter/components/outputshellcalloutputitem.py +++ b/src/openrouter/components/outputshellcalloutputitem.py @@ -2,6 +2,7 @@ from __future__ import annotations from .shellcallstatus import ShellCallStatus +from functools import partial from openrouter.types import ( BaseModel, Nullable, @@ -9,10 +10,10 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import get_discriminator, validate_open_enum -from pydantic import Discriminator, Tag, model_serializer -from pydantic.functional_validators import PlainValidator -from typing import List, Literal, Union +from openrouter.utils.unions import parse_open_union +from pydantic import ConfigDict, model_serializer +from pydantic.functional_validators import BeforeValidator +from typing import Any, List, Literal, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict @@ -46,11 +47,33 @@ class OutcomeExit(BaseModel): ) +class UnknownOutcome(BaseModel): + r"""A Outcome variant the SDK doesn't recognize. Preserves the raw payload.""" + + type: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_OUTCOME_VARIANTS: dict[str, Any] = { + "exit": OutcomeExit, + "timeout": OutcomeTimeout, +} + + Outcome = Annotated[ - Union[ - Annotated[OutcomeExit, Tag("exit")], Annotated[OutcomeTimeout, Tag("timeout")] - ], - Discriminator(lambda m: get_discriminator(m, "type", "type")), + Union[OutcomeExit, OutcomeTimeout, UnknownOutcome], + BeforeValidator( + partial( + parse_open_union, + disc_key="type", + variants=_OUTCOME_VARIANTS, + unknown_cls=UnknownOutcome, + union_name="Outcome", + ) + ), ] @@ -92,7 +115,7 @@ class OutputShellCallOutputItem(BaseModel): output: List[OutputShellCallOutputItemOutput] - status: Annotated[ShellCallStatus, PlainValidator(validate_open_enum(False))] + status: ShellCallStatus r"""Status of a shell call or its output.""" type: OutputShellCallOutputItemTypeShellCallOutput @@ -101,30 +124,25 @@ class OutputShellCallOutputItem(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["max_output_length"] - nullable_fields = ["max_output_length"] - null_default_fields = [] - + optional_fields = set(["max_output_length"]) + nullable_fields = set(["max_output_length"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/outputsubagentservertoolitem.py b/src/openrouter/components/outputsubagentservertoolitem.py index 35e06653..bec70ef5 100644 --- a/src/openrouter/components/outputsubagentservertoolitem.py +++ b/src/openrouter/components/outputsubagentservertoolitem.py @@ -2,11 +2,10 @@ from __future__ import annotations from .toolcallstatus import ToolCallStatus -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict OutputSubagentServerToolItemType = Literal["openrouter:subagent",] @@ -33,7 +32,7 @@ class OutputSubagentServerToolItemTypedDict(TypedDict): class OutputSubagentServerToolItem(BaseModel): r"""An openrouter:subagent server tool output item""" - status: Annotated[ToolCallStatus, PlainValidator(validate_open_enum(False))] + status: ToolCallStatus type: OutputSubagentServerToolItemType @@ -53,3 +52,21 @@ class OutputSubagentServerToolItem(BaseModel): task_name: Optional[str] = None r"""The short task identifier the delegating model supplied.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["error", "id", "model", "outcome", "task_description", "task_name"] + ) + 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 diff --git a/src/openrouter/components/outputtexteditorservertoolitem.py b/src/openrouter/components/outputtexteditorservertoolitem.py index 6b7dc1cb..bec8c97a 100644 --- a/src/openrouter/components/outputtexteditorservertoolitem.py +++ b/src/openrouter/components/outputtexteditorservertoolitem.py @@ -2,10 +2,9 @@ from __future__ import annotations from .toolcallstatus import ToolCallStatus -from openrouter.types import BaseModel, UnrecognizedStr -from openrouter.utils import validate_open_enum +from openrouter.types import BaseModel, UNSET_SENTINEL, UnrecognizedStr 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 @@ -37,14 +36,34 @@ class OutputTextEditorServerToolItemTypedDict(TypedDict): class OutputTextEditorServerToolItem(BaseModel): r"""An openrouter:text_editor server tool output item""" - status: Annotated[ToolCallStatus, PlainValidator(validate_open_enum(False))] + status: ToolCallStatus type: OutputTextEditorServerToolItemType - command: Annotated[Optional[Command], PlainValidator(validate_open_enum(False))] = ( - None - ) + command: Optional[Command] = None file_path: Annotated[Optional[str], pydantic.Field(alias="filePath")] = None id: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["command", "filePath", "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 + + +try: + OutputTextEditorServerToolItem.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/outputtoolsearchservertoolitem.py b/src/openrouter/components/outputtoolsearchservertoolitem.py index 45dfd93d..e9d0b14d 100644 --- a/src/openrouter/components/outputtoolsearchservertoolitem.py +++ b/src/openrouter/components/outputtoolsearchservertoolitem.py @@ -2,11 +2,10 @@ from __future__ import annotations from .toolcallstatus import ToolCallStatus -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict OutputToolSearchServerToolItemType = Literal["openrouter:tool_search",] @@ -24,10 +23,26 @@ class OutputToolSearchServerToolItemTypedDict(TypedDict): class OutputToolSearchServerToolItem(BaseModel): r"""An openrouter:tool_search server tool output item""" - status: Annotated[ToolCallStatus, PlainValidator(validate_open_enum(False))] + status: ToolCallStatus type: OutputToolSearchServerToolItemType id: Optional[str] = None query: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id", "query"]) + 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 diff --git a/src/openrouter/components/outputwebfetchservertoolitem.py b/src/openrouter/components/outputwebfetchservertoolitem.py index 71c97ae1..9b139a07 100644 --- a/src/openrouter/components/outputwebfetchservertoolitem.py +++ b/src/openrouter/components/outputwebfetchservertoolitem.py @@ -2,10 +2,9 @@ from __future__ import annotations from .toolcallstatus import ToolCallStatus -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum +from openrouter.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic.functional_validators import PlainValidator +from pydantic import model_serializer from typing import Literal, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -31,7 +30,7 @@ class OutputWebFetchServerToolItemTypedDict(TypedDict): class OutputWebFetchServerToolItem(BaseModel): r"""An openrouter:web_fetch server tool output item""" - status: Annotated[ToolCallStatus, PlainValidator(validate_open_enum(False))] + status: ToolCallStatus type: OutputWebFetchServerToolItemType @@ -48,3 +47,25 @@ class OutputWebFetchServerToolItem(BaseModel): title: Optional[str] = None url: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["content", "error", "httpStatus", "id", "title", "url"]) + 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 + + +try: + OutputWebFetchServerToolItem.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/outputwebsearchcallitem.py b/src/openrouter/components/outputwebsearchcallitem.py index 63fe1138..fd19c842 100644 --- a/src/openrouter/components/outputwebsearchcallitem.py +++ b/src/openrouter/components/outputwebsearchcallitem.py @@ -3,6 +3,7 @@ from __future__ import annotations from .websearchsource import WebSearchSource, WebSearchSourceTypedDict from .websearchstatus import WebSearchStatus +from functools import partial from openrouter.types import ( BaseModel, Nullable, @@ -10,10 +11,10 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import get_discriminator, validate_open_enum -from pydantic import Discriminator, Tag, model_serializer -from pydantic.functional_validators import PlainValidator -from typing import List, Literal, Optional, Union +from openrouter.utils.unions import parse_open_union +from pydantic import ConfigDict, model_serializer +from pydantic.functional_validators import BeforeValidator +from typing import Any, List, Literal, Optional, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict @@ -49,31 +50,26 @@ class ActionOpenPage(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["url"] - nullable_fields = ["url"] - null_default_fields = [] - + optional_fields = set(["url"]) + nullable_fields = set(["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) - - 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 + 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 + ) + + 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 @@ -97,6 +93,22 @@ class OutputWebSearchCallItemActionSearch(BaseModel): sources: Optional[List[WebSearchSource]] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["queries", "sources"]) + 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 + ActionTypedDict = TypeAliasType( "ActionTypedDict", @@ -108,13 +120,39 @@ class OutputWebSearchCallItemActionSearch(BaseModel): ) +class UnknownAction(BaseModel): + r"""A Action variant the SDK doesn't recognize. Preserves the raw payload.""" + + type: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_ACTION_VARIANTS: dict[str, Any] = { + "search": OutputWebSearchCallItemActionSearch, + "open_page": ActionOpenPage, + "find_in_page": ActionFindInPage, +} + + Action = Annotated[ Union[ - Annotated[OutputWebSearchCallItemActionSearch, Tag("search")], - Annotated[ActionOpenPage, Tag("open_page")], - Annotated[ActionFindInPage, Tag("find_in_page")], + OutputWebSearchCallItemActionSearch, + ActionOpenPage, + ActionFindInPage, + UnknownAction, ], - Discriminator(lambda m: get_discriminator(m, "type", "type")), + BeforeValidator( + partial( + parse_open_union, + disc_key="type", + variants=_ACTION_VARIANTS, + unknown_cls=UnknownAction, + union_name="Action", + ) + ), ] @@ -131,8 +169,24 @@ class OutputWebSearchCallItemTypedDict(TypedDict): class OutputWebSearchCallItem(BaseModel): id: str - status: Annotated[WebSearchStatus, PlainValidator(validate_open_enum(False))] + status: WebSearchStatus type: TypeWebSearchCall action: Optional[Action] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["action"]) + 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 diff --git a/src/openrouter/components/outputwebsearchservertoolitem.py b/src/openrouter/components/outputwebsearchservertoolitem.py index 7d63fc52..15fb96b7 100644 --- a/src/openrouter/components/outputwebsearchservertoolitem.py +++ b/src/openrouter/components/outputwebsearchservertoolitem.py @@ -2,11 +2,10 @@ from __future__ import annotations from .toolcallstatus import ToolCallStatus -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Literal, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict OutputWebSearchServerToolItemTypeURL = Literal["url",] @@ -43,6 +42,22 @@ class OutputWebSearchServerToolItemAction(BaseModel): sources: Optional[List[OutputWebSearchServerToolItemSource]] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["sources"]) + 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 + OutputWebSearchServerToolItemTypeOpenrouterWebSearch = Literal["openrouter:web_search",] @@ -60,7 +75,7 @@ class OutputWebSearchServerToolItemTypedDict(TypedDict): class OutputWebSearchServerToolItem(BaseModel): r"""An openrouter:web_search server tool output item""" - status: Annotated[ToolCallStatus, PlainValidator(validate_open_enum(False))] + status: ToolCallStatus type: OutputWebSearchServerToolItemTypeOpenrouterWebSearch @@ -68,3 +83,19 @@ class OutputWebSearchServerToolItem(BaseModel): r"""The search action performed, matching OpenAI web_search_call.action shape. Includes the query the model issued and optional source URLs returned by the search provider.""" id: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["action", "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 diff --git a/src/openrouter/components/paretorouterplugin.py b/src/openrouter/components/paretorouterplugin.py index 6b12a704..f010e7df 100644 --- a/src/openrouter/components/paretorouterplugin.py +++ b/src/openrouter/components/paretorouterplugin.py @@ -1,7 +1,8 @@ """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 pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -25,3 +26,19 @@ class ParetoRouterPlugin(BaseModel): min_coding_score: Optional[float] = None r"""Minimum desired coding score between 0 and 1, where 1 is best. Higher values select from stronger coding models (sourced from Artificial Analysis coding percentiles). Maps internally to one of three tiers (low, medium, high). Omit to use the router default tier.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["enabled", "min_coding_score"]) + 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 diff --git a/src/openrouter/components/payloadtoolargeresponseerrordata.py b/src/openrouter/components/payloadtoolargeresponseerrordata.py index ee1a068a..e644b941 100644 --- a/src/openrouter/components/payloadtoolargeresponseerrordata.py +++ b/src/openrouter/components/payloadtoolargeresponseerrordata.py @@ -32,30 +32,25 @@ class PayloadTooLargeResponseErrorData(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["metadata"] - nullable_fields = ["metadata"] - null_default_fields = [] - + optional_fields = set(["metadata"]) + nullable_fields = set(["metadata"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/paymentrequiredresponseerrordata.py b/src/openrouter/components/paymentrequiredresponseerrordata.py index 83abd1e8..2ddc388d 100644 --- a/src/openrouter/components/paymentrequiredresponseerrordata.py +++ b/src/openrouter/components/paymentrequiredresponseerrordata.py @@ -32,30 +32,25 @@ class PaymentRequiredResponseErrorData(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["metadata"] - nullable_fields = ["metadata"] - null_default_fields = [] - + optional_fields = set(["metadata"]) + nullable_fields = set(["metadata"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/pdfparserengine.py b/src/openrouter/components/pdfparserengine.py index 36c5f8f3..324fa117 100644 --- a/src/openrouter/components/pdfparserengine.py +++ b/src/openrouter/components/pdfparserengine.py @@ -2,10 +2,8 @@ from __future__ import annotations from openrouter.types import UnrecognizedStr -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator from typing import Literal, Union -from typing_extensions import Annotated, TypeAliasType +from typing_extensions import TypeAliasType PDFParserEnginePDFText = Literal["pdf-text",] @@ -28,10 +26,6 @@ PDFParserEngine = TypeAliasType( - "PDFParserEngine", - Union[ - Annotated[PDFParserEngineEnum, PlainValidator(validate_open_enum(False))], - PDFParserEnginePDFText, - ], + "PDFParserEngine", Union[PDFParserEngineEnum, PDFParserEnginePDFText] ) r"""The engine to use for parsing PDF files. \"pdf-text\" is deprecated and automatically redirected to \"cloudflare-ai\".""" diff --git a/src/openrouter/components/pdfparseroptions.py b/src/openrouter/components/pdfparseroptions.py index 4510e737..c041ce5a 100644 --- a/src/openrouter/components/pdfparseroptions.py +++ b/src/openrouter/components/pdfparseroptions.py @@ -2,7 +2,8 @@ from __future__ import annotations from .pdfparserengine import PDFParserEngine, PDFParserEngineTypedDict -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -19,3 +20,19 @@ class PDFParserOptions(BaseModel): engine: Optional[PDFParserEngine] = None r"""The engine to use for parsing PDF files. \"pdf-text\" is deprecated and automatically redirected to \"cloudflare-ai\".""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["engine"]) + 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 diff --git a/src/openrouter/components/percentilelatencycutoffs.py b/src/openrouter/components/percentilelatencycutoffs.py index fa8175fc..0680a134 100644 --- a/src/openrouter/components/percentilelatencycutoffs.py +++ b/src/openrouter/components/percentilelatencycutoffs.py @@ -42,30 +42,25 @@ class PercentileLatencyCutoffs(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["p50", "p75", "p90", "p99"] - nullable_fields = ["p50", "p75", "p90", "p99"] - null_default_fields = [] - + optional_fields = set(["p50", "p75", "p90", "p99"]) + nullable_fields = set(["p50", "p75", "p90", "p99"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/percentilethroughputcutoffs.py b/src/openrouter/components/percentilethroughputcutoffs.py index 17b28ced..d4fad42e 100644 --- a/src/openrouter/components/percentilethroughputcutoffs.py +++ b/src/openrouter/components/percentilethroughputcutoffs.py @@ -42,30 +42,25 @@ class PercentileThroughputCutoffs(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["p50", "p75", "p90", "p99"] - nullable_fields = ["p50", "p75", "p90", "p99"] - null_default_fields = [] - + optional_fields = set(["p50", "p75", "p90", "p99"]) + nullable_fields = set(["p50", "p75", "p90", "p99"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/pipelinestage.py b/src/openrouter/components/pipelinestage.py index a5a763d0..ddecb911 100644 --- a/src/openrouter/components/pipelinestage.py +++ b/src/openrouter/components/pipelinestage.py @@ -9,11 +9,9 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Any, Dict, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class PipelineStageTypedDict(TypedDict): @@ -30,7 +28,7 @@ class PipelineStageTypedDict(TypedDict): class PipelineStage(BaseModel): name: str - type: Annotated[PipelineStageType, PlainValidator(validate_open_enum(False))] + type: PipelineStageType r"""Categorical kind of a pipeline stage. Multiple plugins can share a type (e.g. all guardrail-level plugins emit `guardrail`); the `name` field disambiguates which plugin emitted it.""" cost_usd: OptionalNullable[float] = UNSET @@ -45,36 +43,27 @@ class PipelineStage(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "cost_usd", - "data", - "guardrail_id", - "guardrail_scope", - "summary", - ] - nullable_fields = ["cost_usd"] - null_default_fields = [] - + optional_fields = set( + ["cost_usd", "data", "guardrail_id", "guardrail_scope", "summary"] + ) + nullable_fields = set(["cost_usd"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/preset.py b/src/openrouter/components/preset.py index f1a974c2..9c2ceba7 100644 --- a/src/openrouter/components/preset.py +++ b/src/openrouter/components/preset.py @@ -3,10 +3,8 @@ from __future__ import annotations from .presetstatus import PresetStatus from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator -from typing_extensions import Annotated, TypedDict +from typing_extensions import TypedDict class PresetTypedDict(TypedDict): @@ -43,7 +41,7 @@ class Preset(BaseModel): slug: str - status: Annotated[PresetStatus, PlainValidator(validate_open_enum(False))] + status: PresetStatus r"""The status of a preset.""" status_updated_at: Nullable[str] @@ -54,36 +52,14 @@ class Preset(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = [ - "creator_user_id", - "description", - "designated_version_id", - "status_updated_at", - "workspace_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 diff --git a/src/openrouter/components/presetdesignatedversion.py b/src/openrouter/components/presetdesignatedversion.py index 620f08f9..504c90ea 100644 --- a/src/openrouter/components/presetdesignatedversion.py +++ b/src/openrouter/components/presetdesignatedversion.py @@ -41,30 +41,14 @@ class PresetDesignatedVersion(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["system_prompt"] - 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 diff --git a/src/openrouter/components/presetwithdesignatedversion.py b/src/openrouter/components/presetwithdesignatedversion.py index cb5c9108..6828e9dd 100644 --- a/src/openrouter/components/presetwithdesignatedversion.py +++ b/src/openrouter/components/presetwithdesignatedversion.py @@ -7,10 +7,8 @@ ) from .presetstatus import PresetStatus from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator -from typing_extensions import Annotated, TypedDict +from typing_extensions import TypedDict class PresetWithDesignatedVersionTypedDict(TypedDict): @@ -49,7 +47,7 @@ class PresetWithDesignatedVersion(BaseModel): slug: str - status: Annotated[PresetStatus, PlainValidator(validate_open_enum(False))] + status: PresetStatus r"""The status of a preset.""" status_updated_at: Nullable[str] @@ -63,37 +61,14 @@ class PresetWithDesignatedVersion(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = [ - "creator_user_id", - "description", - "designated_version_id", - "status_updated_at", - "workspace_id", - "designated_version", - ] - 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 diff --git a/src/openrouter/components/preview_20250311_websearchservertool.py b/src/openrouter/components/preview_20250311_websearchservertool.py index 89dfe4a5..b2ebdf07 100644 --- a/src/openrouter/components/preview_20250311_websearchservertool.py +++ b/src/openrouter/components/preview_20250311_websearchservertool.py @@ -15,11 +15,9 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Literal, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict Preview20250311WebSearchServerToolType = Literal["web_search_preview_2025_03_11",] @@ -44,9 +42,7 @@ class Preview20250311WebSearchServerTool(BaseModel): type: Preview20250311WebSearchServerToolType - engine: Annotated[ - Optional[WebSearchEngineEnum], PlainValidator(validate_open_enum(False)) - ] = None + engine: Optional[WebSearchEngineEnum] = None r"""Which search engine to use. \"auto\" (default) uses native if the provider supports it, otherwise Exa. \"native\" forces the provider's built-in search. \"exa\" forces the Exa search API. \"firecrawl\" uses Firecrawl (requires BYOK). \"parallel\" uses the Parallel search API. \"perplexity\" uses the Perplexity Search API (raw ranked results).""" filters: OptionalNullable[WebSearchDomainFilter] = UNSET @@ -54,45 +50,34 @@ class Preview20250311WebSearchServerTool(BaseModel): max_results: Optional[int] = None r"""Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, Parallel, and Perplexity engines; ignored with native provider search. Perplexity supports a maximum of 20; values above 20 are clamped.""" - search_context_size: Annotated[ - Optional[SearchContextSizeEnum], PlainValidator(validate_open_enum(False)) - ] = None + search_context_size: Optional[SearchContextSizeEnum] = None r"""Size of the search context for web search tools""" user_location: OptionalNullable[PreviewWebSearchUserLocation] = UNSET @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "engine", - "filters", - "max_results", - "search_context_size", - "user_location", - ] - nullable_fields = ["filters", "user_location"] - null_default_fields = [] - + optional_fields = set( + ["engine", "filters", "max_results", "search_context_size", "user_location"] + ) + nullable_fields = set(["filters", "user_location"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/preview_websearchservertool.py b/src/openrouter/components/preview_websearchservertool.py index a1e76de5..7decade6 100644 --- a/src/openrouter/components/preview_websearchservertool.py +++ b/src/openrouter/components/preview_websearchservertool.py @@ -15,11 +15,9 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Literal, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict PreviewWebSearchServerToolType = Literal["web_search_preview",] @@ -44,9 +42,7 @@ class PreviewWebSearchServerTool(BaseModel): type: PreviewWebSearchServerToolType - engine: Annotated[ - Optional[WebSearchEngineEnum], PlainValidator(validate_open_enum(False)) - ] = None + engine: Optional[WebSearchEngineEnum] = None r"""Which search engine to use. \"auto\" (default) uses native if the provider supports it, otherwise Exa. \"native\" forces the provider's built-in search. \"exa\" forces the Exa search API. \"firecrawl\" uses Firecrawl (requires BYOK). \"parallel\" uses the Parallel search API. \"perplexity\" uses the Perplexity Search API (raw ranked results).""" filters: OptionalNullable[WebSearchDomainFilter] = UNSET @@ -54,45 +50,34 @@ class PreviewWebSearchServerTool(BaseModel): max_results: Optional[int] = None r"""Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, Parallel, and Perplexity engines; ignored with native provider search. Perplexity supports a maximum of 20; values above 20 are clamped.""" - search_context_size: Annotated[ - Optional[SearchContextSizeEnum], PlainValidator(validate_open_enum(False)) - ] = None + search_context_size: Optional[SearchContextSizeEnum] = None r"""Size of the search context for web search tools""" user_location: OptionalNullable[PreviewWebSearchUserLocation] = UNSET @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "engine", - "filters", - "max_results", - "search_context_size", - "user_location", - ] - nullable_fields = ["filters", "user_location"] - null_default_fields = [] - + optional_fields = set( + ["engine", "filters", "max_results", "search_context_size", "user_location"] + ) + nullable_fields = set(["filters", "user_location"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/preview_websearchuserlocation.py b/src/openrouter/components/preview_websearchuserlocation.py index 72dd1524..90bdb267 100644 --- a/src/openrouter/components/preview_websearchuserlocation.py +++ b/src/openrouter/components/preview_websearchuserlocation.py @@ -37,30 +37,25 @@ class PreviewWebSearchUserLocation(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["city", "country", "region", "timezone"] - nullable_fields = ["city", "country", "region", "timezone"] - null_default_fields = [] - + optional_fields = set(["city", "country", "region", "timezone"]) + nullable_fields = set(["city", "country", "region", "timezone"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/provideroptions.py b/src/openrouter/components/provideroptions.py index 160b700e..d84b93de 100644 --- a/src/openrouter/components/provideroptions.py +++ b/src/openrouter/components/provideroptions.py @@ -1,8 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from openrouter.types import BaseModel, Nullable +from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Any, Dict, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -422,3 +423,148 @@ class ProviderOptions(BaseModel): z_ai: Annotated[ Optional[Dict[str, Nullable[Any]]], pydantic.Field(alias="z-ai") ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "01ai", + "ai21", + "aion-labs", + "akashml", + "alibaba", + "amazon-bedrock", + "amazon-nova", + "ambient", + "anthropic", + "anyscale", + "arcee-ai", + "atlas-cloud", + "atoma", + "avian", + "azure", + "baidu", + "baseten", + "black-forest-labs", + "byteplus", + "centml", + "cerebras", + "chutes", + "cirrascale", + "clarifai", + "cloudflare", + "cohere", + "crofai", + "crucible", + "crusoe", + "darkbloom", + "decart", + "deepinfra", + "deepseek", + "dekallm", + "digitalocean", + "enfer", + "fake-provider", + "featherless", + "fireworks", + "friendli", + "gmicloud", + "google-ai-studio", + "google-vertex", + "gopomelo", + "groq", + "heygen", + "huggingface", + "hyperbolic", + "hyperbolic-quantized", + "inception", + "inceptron", + "inferact-vllm", + "inference-net", + "infermatic", + "inflection", + "inocloud", + "io-net", + "ionstream", + "klusterai", + "lambda", + "lepton", + "liquid", + "lynn", + "lynn-private", + "mancer", + "mancer-old", + "mara", + "meta", + "minimax", + "mistral", + "modal", + "modelrun", + "modular", + "moonshotai", + "morph", + "ncompass", + "nebius", + "nex-agi", + "nextbit", + "nineteen", + "novita", + "nvidia", + "octoai", + "open-inference", + "openai", + "parasail", + "perceptron", + "perplexity", + "phala", + "poolside", + "quiver", + "recraft", + "recursal", + "reflection", + "reka", + "relace", + "replicate", + "sakana-ai", + "sambanova", + "sambanova-cloaked", + "seed", + "sf-compute", + "siliconflow", + "sourceful", + "stealth", + "stepfun", + "streamlake", + "switchpoint", + "targon", + "tenstorrent", + "together", + "together-lite", + "ubicloud", + "upstage", + "venice", + "wafer", + "wandb", + "xai", + "xiaomi", + "z-ai", + ] + ) + 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 + + +try: + ProviderOptions.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/provideroverloadedresponseerrordata.py b/src/openrouter/components/provideroverloadedresponseerrordata.py index f3d77568..c85a381a 100644 --- a/src/openrouter/components/provideroverloadedresponseerrordata.py +++ b/src/openrouter/components/provideroverloadedresponseerrordata.py @@ -32,30 +32,25 @@ class ProviderOverloadedResponseErrorData(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["metadata"] - nullable_fields = ["metadata"] - null_default_fields = [] - + optional_fields = set(["metadata"]) + nullable_fields = set(["metadata"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/providerpreferences.py b/src/openrouter/components/providerpreferences.py index ce5d942a..abbb3cb3 100644 --- a/src/openrouter/components/providerpreferences.py +++ b/src/openrouter/components/providerpreferences.py @@ -18,11 +18,9 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Any, List, Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict +from typing_extensions import NotRequired, TypeAliasType, TypedDict DataCollection = Union[ @@ -42,10 +40,7 @@ IgnoreTypedDict = TypeAliasType("IgnoreTypedDict", Union[ProviderName, str]) -Ignore = TypeAliasType( - "Ignore", - Union[Annotated[ProviderName, PlainValidator(validate_open_enum(False))], str], -) +Ignore = TypeAliasType("Ignore", Union[ProviderName, str]) class MaxPriceTypedDict(TypedDict): @@ -81,23 +76,33 @@ class MaxPrice(BaseModel): request: Optional[str] = None r"""Maximum price in USD per request""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["audio", "completion", "image", "prompt", "request"]) + 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 + OnlyTypedDict = TypeAliasType("OnlyTypedDict", Union[ProviderName, str]) -Only = TypeAliasType( - "Only", - Union[Annotated[ProviderName, PlainValidator(validate_open_enum(False))], str], -) +Only = TypeAliasType("Only", Union[ProviderName, str]) OrderTypedDict = TypeAliasType("OrderTypedDict", Union[ProviderName, str]) -Order = TypeAliasType( - "Order", - Union[Annotated[ProviderName, PlainValidator(validate_open_enum(False))], str], -) +Order = TypeAliasType("Order", Union[ProviderName, str]) SortTypedDict = TypeAliasType( @@ -106,14 +111,7 @@ class MaxPrice(BaseModel): r"""The sorting strategy to use for this request, if \"order\" is not specified. When set, no load balancing is performed.""" -Sort = TypeAliasType( - "Sort", - Union[ - ProviderSortConfig, - Annotated[ProviderSort, PlainValidator(validate_open_enum(False))], - Any, - ], -) +Sort = TypeAliasType("Sort", Union[ProviderSortConfig, ProviderSort, Any]) r"""The sorting strategy to use for this request, if \"order\" is not specified. When set, no load balancing is performed.""" @@ -166,9 +164,7 @@ class ProviderPreferences(BaseModel): """ - data_collection: Annotated[ - OptionalNullable[DataCollection], PlainValidator(validate_open_enum(False)) - ] = UNSET + data_collection: OptionalNullable[DataCollection] = UNSET r"""Data collection setting. If no available model provider meets the requirement, your request will return an error. - allow: (default) allow providers which store user data non-transiently and may train on it @@ -196,9 +192,7 @@ class ProviderPreferences(BaseModel): preferred_min_throughput: OptionalNullable[PreferredMinThroughput] = UNSET r"""Preferred minimum throughput (in tokens per second). Can be a number (applies to p50) or an object with percentile-specific cutoffs. Endpoints below the threshold(s) may still be used, but are deprioritized in routing. When using fallback models, this may cause a fallback model to be used instead of the primary model if it meets the threshold.""" - quantizations: OptionalNullable[ - List[Annotated[Quantization, PlainValidator(validate_open_enum(False))]] - ] = UNSET + quantizations: OptionalNullable[List[Quantization]] = UNSET r"""A list of quantization levels to filter the provider by.""" require_parameters: OptionalNullable[bool] = UNSET @@ -212,57 +206,56 @@ class ProviderPreferences(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "allow_fallbacks", - "data_collection", - "enforce_distillable_text", - "ignore", - "max_price", - "only", - "order", - "preferred_max_latency", - "preferred_min_throughput", - "quantizations", - "require_parameters", - "sort", - "zdr", - ] - nullable_fields = [ - "allow_fallbacks", - "data_collection", - "enforce_distillable_text", - "ignore", - "only", - "order", - "preferred_max_latency", - "preferred_min_throughput", - "quantizations", - "require_parameters", - "sort", - "zdr", - ] - null_default_fields = [] - + optional_fields = set( + [ + "allow_fallbacks", + "data_collection", + "enforce_distillable_text", + "ignore", + "max_price", + "only", + "order", + "preferred_max_latency", + "preferred_min_throughput", + "quantizations", + "require_parameters", + "sort", + "zdr", + ] + ) + nullable_fields = set( + [ + "allow_fallbacks", + "data_collection", + "enforce_distillable_text", + "ignore", + "only", + "order", + "preferred_max_latency", + "preferred_min_throughput", + "quantizations", + "require_parameters", + "sort", + "zdr", + ] + ) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/providerresponse.py b/src/openrouter/components/providerresponse.py index 5cad4c14..757907b8 100644 --- a/src/openrouter/components/providerresponse.py +++ b/src/openrouter/components/providerresponse.py @@ -2,11 +2,9 @@ from __future__ import annotations from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL, UnrecognizedStr -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict ProviderResponseProviderName = Union[ @@ -177,45 +175,39 @@ class ProviderResponse(BaseModel): model_permaslug: Optional[str] = None r"""Canonical model slug""" - provider_name: Annotated[ - Optional[ProviderResponseProviderName], - PlainValidator(validate_open_enum(False)), - ] = None + provider_name: Optional[ProviderResponseProviderName] = None r"""Name of the provider""" @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "endpoint_id", - "id", - "is_byok", - "latency", - "model_permaslug", - "provider_name", - ] - nullable_fields = ["status"] - null_default_fields = [] - + optional_fields = set( + [ + "endpoint_id", + "id", + "is_byok", + "latency", + "model_permaslug", + "provider_name", + ] + ) + nullable_fields = set(["status"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/providersortconfig.py b/src/openrouter/components/providersortconfig.py index 4e1073b4..1798ae9d 100644 --- a/src/openrouter/components/providersortconfig.py +++ b/src/openrouter/components/providersortconfig.py @@ -9,11 +9,9 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Literal, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict By = Union[ @@ -50,42 +48,33 @@ class ProviderSortConfigTypedDict(TypedDict): class ProviderSortConfig(BaseModel): r"""The provider sorting strategy (price, throughput, latency)""" - by: Annotated[OptionalNullable[By], PlainValidator(validate_open_enum(False))] = ( - UNSET - ) + by: OptionalNullable[By] = UNSET r"""The provider sorting strategy (price, throughput, latency)""" - partition: Annotated[ - OptionalNullable[Partition], PlainValidator(validate_open_enum(False)) - ] = UNSET + partition: OptionalNullable[Partition] = UNSET r"""Partitioning strategy for sorting: \"model\" (default) groups endpoints by model before sorting (fallback models remain fallbacks), \"none\" sorts all endpoints together regardless of model.""" @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["by", "partition"] - nullable_fields = ["by", "partition"] - null_default_fields = [] - + optional_fields = set(["by", "partition"]) + nullable_fields = set(["by", "partition"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/publicendpoint.py b/src/openrouter/components/publicendpoint.py index a7d3e523..270a46db 100644 --- a/src/openrouter/components/publicendpoint.py +++ b/src/openrouter/components/publicendpoint.py @@ -6,11 +6,9 @@ from .percentilestats import PercentileStats, PercentileStatsTypedDict from .providername import ProviderName from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL, UnrecognizedStr -from openrouter.utils import validate_open_enum 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 +from typing_extensions import NotRequired, TypedDict class PricingTypedDict(TypedDict): @@ -92,6 +90,38 @@ class Pricing(BaseModel): web_search: Optional[str] = None r"""Price in USD per web search""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "audio", + "audio_output", + "discount", + "image", + "image_output", + "image_token", + "input_audio_cache", + "input_cache_read", + "input_cache_write", + "input_cache_write_1h", + "internal_reasoning", + "request", + "web_search", + ] + ) + 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 + PublicEndpointQuantization = Union[ Literal[ @@ -157,15 +187,11 @@ class PublicEndpoint(BaseModel): pricing: Pricing - provider_name: Annotated[ProviderName, PlainValidator(validate_open_enum(False))] + provider_name: ProviderName - quantization: Annotated[ - Nullable[PublicEndpointQuantization], PlainValidator(validate_open_enum(False)) - ] + quantization: Nullable[PublicEndpointQuantization] - supported_parameters: List[ - Annotated[Parameter, PlainValidator(validate_open_enum(False))] - ] + supported_parameters: List[Parameter] supports_implicit_caching: bool @@ -181,45 +207,40 @@ class PublicEndpoint(BaseModel): uptime_last_5m: Nullable[float] r"""Uptime percentage over the last 5 minutes, calculated as successful requests / (successful + error requests) * 100. Rate-limited requests are excluded. Returns null if insufficient data.""" - status: Annotated[ - Optional[EndpointStatus], PlainValidator(validate_open_enum(True)) - ] = None + status: Optional[EndpointStatus] = None @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["status"] - nullable_fields = [ - "latency_last_30m", - "max_completion_tokens", - "max_prompt_tokens", - "quantization", - "throughput_last_30m", - "uptime_last_1d", - "uptime_last_30m", - "uptime_last_5m", - ] - null_default_fields = [] - + optional_fields = set(["status"]) + nullable_fields = set( + [ + "latency_last_30m", + "max_completion_tokens", + "max_prompt_tokens", + "quantization", + "throughput_last_30m", + "uptime_last_1d", + "uptime_last_30m", + "uptime_last_5m", + ] + ) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/publicpricing.py b/src/openrouter/components/publicpricing.py index 09a1bdd6..fc3f2cdb 100644 --- a/src/openrouter/components/publicpricing.py +++ b/src/openrouter/components/publicpricing.py @@ -1,7 +1,8 @@ """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 pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -88,3 +89,35 @@ class PublicPricing(BaseModel): web_search: Optional[str] = None r"""Price in USD per web search""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "audio", + "audio_output", + "discount", + "image", + "image_output", + "image_token", + "input_audio_cache", + "input_cache_read", + "input_cache_write", + "input_cache_write_1h", + "internal_reasoning", + "request", + "web_search", + ] + ) + 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 diff --git a/src/openrouter/components/rankingsdailyitem.py b/src/openrouter/components/rankingsdailyitem.py index 7325fa46..46a16b3c 100644 --- a/src/openrouter/components/rankingsdailyitem.py +++ b/src/openrouter/components/rankingsdailyitem.py @@ -24,3 +24,9 @@ class RankingsDailyItem(BaseModel): total_tokens: str r"""Sum of `prompt_tokens + completion_tokens` for the day, returned as a decimal string so 64-bit values are not truncated.""" + + +try: + RankingsDailyItem.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/reasoningconfig.py b/src/openrouter/components/reasoningconfig.py index 6f390d64..7e37f18a 100644 --- a/src/openrouter/components/reasoningconfig.py +++ b/src/openrouter/components/reasoningconfig.py @@ -10,10 +10,8 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class ReasoningConfigTypedDict(TypedDict): @@ -28,14 +26,9 @@ class ReasoningConfigTypedDict(TypedDict): class ReasoningConfig(BaseModel): r"""Configuration for reasoning mode in the response""" - effort: Annotated[ - OptionalNullable[ReasoningEffort], PlainValidator(validate_open_enum(False)) - ] = UNSET + effort: OptionalNullable[ReasoningEffort] = UNSET - summary: Annotated[ - OptionalNullable[ReasoningSummaryVerbosity], - PlainValidator(validate_open_enum(False)), - ] = UNSET + summary: OptionalNullable[ReasoningSummaryVerbosity] = UNSET enabled: OptionalNullable[bool] = UNSET @@ -43,30 +36,25 @@ class ReasoningConfig(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["effort", "summary", "enabled", "max_tokens"] - nullable_fields = ["effort", "summary", "enabled", "max_tokens"] - null_default_fields = [] - + optional_fields = set(["effort", "summary", "enabled", "max_tokens"]) + nullable_fields = set(["effort", "summary", "enabled", "max_tokens"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/reasoningdetailencrypted.py b/src/openrouter/components/reasoningdetailencrypted.py index 0cfaff93..0ba2daa8 100644 --- a/src/openrouter/components/reasoningdetailencrypted.py +++ b/src/openrouter/components/reasoningdetailencrypted.py @@ -9,10 +9,8 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum import pydantic from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Literal, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -38,10 +36,7 @@ class ReasoningDetailEncrypted(BaseModel): type: ReasoningDetailEncryptedType format_: Annotated[ - Annotated[ - OptionalNullable[ReasoningFormat], PlainValidator(validate_open_enum(False)) - ], - pydantic.Field(alias="format"), + OptionalNullable[ReasoningFormat], pydantic.Field(alias="format") ] = UNSET id: OptionalNullable[str] = UNSET @@ -50,30 +45,31 @@ class ReasoningDetailEncrypted(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["format", "id", "index"] - nullable_fields = ["format", "id"] - null_default_fields = [] - + optional_fields = set(["format", "id", "index"]) + nullable_fields = set(["format", "id"]) 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) - - 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 + 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 + ) + + 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 + + +try: + ReasoningDetailEncrypted.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/reasoningdetailsummary.py b/src/openrouter/components/reasoningdetailsummary.py index ceab1ea5..21c892cc 100644 --- a/src/openrouter/components/reasoningdetailsummary.py +++ b/src/openrouter/components/reasoningdetailsummary.py @@ -9,10 +9,8 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum import pydantic from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Literal, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -38,10 +36,7 @@ class ReasoningDetailSummary(BaseModel): type: ReasoningDetailSummaryType format_: Annotated[ - Annotated[ - OptionalNullable[ReasoningFormat], PlainValidator(validate_open_enum(False)) - ], - pydantic.Field(alias="format"), + OptionalNullable[ReasoningFormat], pydantic.Field(alias="format") ] = UNSET id: OptionalNullable[str] = UNSET @@ -50,30 +45,31 @@ class ReasoningDetailSummary(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["format", "id", "index"] - nullable_fields = ["format", "id"] - null_default_fields = [] - + optional_fields = set(["format", "id", "index"]) + nullable_fields = set(["format", "id"]) 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) - - 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 + 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 + ) + + 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 + + +try: + ReasoningDetailSummary.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/reasoningdetailtext.py b/src/openrouter/components/reasoningdetailtext.py index a21b8ede..49b08a20 100644 --- a/src/openrouter/components/reasoningdetailtext.py +++ b/src/openrouter/components/reasoningdetailtext.py @@ -9,10 +9,8 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum import pydantic from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Literal, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -37,10 +35,7 @@ class ReasoningDetailText(BaseModel): type: ReasoningDetailTextType format_: Annotated[ - Annotated[ - OptionalNullable[ReasoningFormat], PlainValidator(validate_open_enum(False)) - ], - pydantic.Field(alias="format"), + OptionalNullable[ReasoningFormat], pydantic.Field(alias="format") ] = UNSET id: OptionalNullable[str] = UNSET @@ -53,30 +48,31 @@ class ReasoningDetailText(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["format", "id", "index", "signature", "text"] - nullable_fields = ["format", "id", "signature", "text"] - null_default_fields = [] - + optional_fields = set(["format", "id", "index", "signature", "text"]) + nullable_fields = set(["format", "id", "signature", "text"]) 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) - - 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 + 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 + ) + + 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 + + +try: + ReasoningDetailText.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/reasoningdetailunion.py b/src/openrouter/components/reasoningdetailunion.py index 42ce6636..78e5924e 100644 --- a/src/openrouter/components/reasoningdetailunion.py +++ b/src/openrouter/components/reasoningdetailunion.py @@ -10,9 +10,12 @@ ReasoningDetailSummaryTypedDict, ) from .reasoningdetailtext import ReasoningDetailText, ReasoningDetailTextTypedDict -from openrouter.utils import get_discriminator -from pydantic import Discriminator, Tag -from typing import Union +from functools import partial +from openrouter.types import BaseModel +from openrouter.utils.unions import parse_open_union +from pydantic import ConfigDict +from pydantic.functional_validators import BeforeValidator +from typing import Any, Literal, Union from typing_extensions import Annotated, TypeAliasType @@ -27,12 +30,38 @@ r"""Reasoning detail union schema""" +class UnknownReasoningDetailUnion(BaseModel): + r"""A ReasoningDetailUnion variant the SDK doesn't recognize. Preserves the raw payload.""" + + type: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_REASONING_DETAIL_UNION_VARIANTS: dict[str, Any] = { + "reasoning.encrypted": ReasoningDetailEncrypted, + "reasoning.summary": ReasoningDetailSummary, + "reasoning.text": ReasoningDetailText, +} + + ReasoningDetailUnion = Annotated[ Union[ - Annotated[ReasoningDetailEncrypted, Tag("reasoning.encrypted")], - Annotated[ReasoningDetailSummary, Tag("reasoning.summary")], - Annotated[ReasoningDetailText, Tag("reasoning.text")], + ReasoningDetailEncrypted, + ReasoningDetailSummary, + ReasoningDetailText, + UnknownReasoningDetailUnion, ], - Discriminator(lambda m: get_discriminator(m, "type", "type")), + BeforeValidator( + partial( + parse_open_union, + disc_key="type", + variants=_REASONING_DETAIL_UNION_VARIANTS, + unknown_cls=UnknownReasoningDetailUnion, + union_name="ReasoningDetailUnion", + ) + ), ] r"""Reasoning detail union schema""" diff --git a/src/openrouter/components/reasoningitem.py b/src/openrouter/components/reasoningitem.py index 43d3ff5e..40ee3f6c 100644 --- a/src/openrouter/components/reasoningitem.py +++ b/src/openrouter/components/reasoningitem.py @@ -11,10 +11,8 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum 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, TypeAliasType, TypedDict @@ -80,46 +78,40 @@ class ReasoningItem(BaseModel): status: Optional[ReasoningItemStatusUnion] = None format_: Annotated[ - Annotated[ - OptionalNullable[ReasoningFormat], PlainValidator(validate_open_enum(False)) - ], - pydantic.Field(alias="format"), + OptionalNullable[ReasoningFormat], pydantic.Field(alias="format") ] = UNSET signature: OptionalNullable[str] = UNSET @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "content", - "encrypted_content", - "status", - "format", - "signature", - ] - nullable_fields = ["content", "encrypted_content", "format", "signature"] - null_default_fields = [] - + optional_fields = set( + ["content", "encrypted_content", "status", "format", "signature"] + ) + nullable_fields = set(["content", "encrypted_content", "format", "signature"]) 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) - - 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 + 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 + ) + + 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 + + +try: + ReasoningItem.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/requesttimeoutresponseerrordata.py b/src/openrouter/components/requesttimeoutresponseerrordata.py index 50be74aa..0ba1a63f 100644 --- a/src/openrouter/components/requesttimeoutresponseerrordata.py +++ b/src/openrouter/components/requesttimeoutresponseerrordata.py @@ -32,30 +32,25 @@ class RequestTimeoutResponseErrorData(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["metadata"] - nullable_fields = ["metadata"] - null_default_fields = [] - + optional_fields = set(["metadata"]) + nullable_fields = set(["metadata"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/responsehealingplugin.py b/src/openrouter/components/responsehealingplugin.py index c13279f2..27f0ef5c 100644 --- a/src/openrouter/components/responsehealingplugin.py +++ b/src/openrouter/components/responsehealingplugin.py @@ -1,7 +1,8 @@ """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 pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -20,3 +21,19 @@ class ResponseHealingPlugin(BaseModel): enabled: Optional[bool] = None r"""Set to false to disable the response-healing plugin for this request. Defaults to true.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["enabled"]) + 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 diff --git a/src/openrouter/components/responseoutputtext.py b/src/openrouter/components/responseoutputtext.py index b1c89ab1..900bf08e 100644 --- a/src/openrouter/components/responseoutputtext.py +++ b/src/openrouter/components/responseoutputtext.py @@ -5,8 +5,9 @@ OpenAIResponsesAnnotation, OpenAIResponsesAnnotationTypedDict, ) -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Literal, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -60,3 +61,29 @@ class ResponseOutputText(BaseModel): annotations: Optional[List[OpenAIResponsesAnnotation]] = None logprobs: Optional[List[Logprob]] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["annotations", "logprobs"]) + 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 + + +try: + ResponseOutputTextTopLogprob.model_rebuild() +except NameError: + pass +try: + Logprob.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/responseserrorfield.py b/src/openrouter/components/responseserrorfield.py index d3c77624..1c7f8a0e 100644 --- a/src/openrouter/components/responseserrorfield.py +++ b/src/openrouter/components/responseserrorfield.py @@ -2,10 +2,8 @@ from __future__ import annotations from openrouter.types import BaseModel, UnrecognizedStr -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator from typing import Literal, Union -from typing_extensions import Annotated, TypedDict +from typing_extensions import TypedDict Code = Union[ @@ -43,6 +41,6 @@ class ResponsesErrorFieldTypedDict(TypedDict): class ResponsesErrorField(BaseModel): r"""Error information returned from the API""" - code: Annotated[Code, PlainValidator(validate_open_enum(False))] + code: Code message: str diff --git a/src/openrouter/components/responsesrequest.py b/src/openrouter/components/responsesrequest.py index 683fab4a..0686331f 100644 --- a/src/openrouter/components/responsesrequest.py +++ b/src/openrouter/components/responsesrequest.py @@ -107,10 +107,10 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import get_discriminator, validate_const, validate_open_enum +from openrouter.utils import get_discriminator, validate_const import pydantic from pydantic import Discriminator, Tag, model_serializer -from pydantic.functional_validators import AfterValidator, PlainValidator +from pydantic.functional_validators import AfterValidator from typing import Any, Dict, List, Literal, Optional, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict @@ -187,31 +187,26 @@ class ResponsesRequestToolFunction(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["description", "strict"] - nullable_fields = ["description", "parameters", "strict"] - null_default_fields = [] - + optional_fields = set(["description", "strict"]) + nullable_fields = set(["description", "parameters", "strict"]) 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) - - 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 + 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 + ) + + 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 @@ -359,9 +354,7 @@ class ResponsesRequest(BaseModel): image_config: Optional[Dict[str, ImageConfig]] = None r"""Provider-specific image configuration options. Keys and values vary by model/provider. See https://openrouter.ai/docs/guides/overview/multimodal/image-generation for more details.""" - include: OptionalNullable[ - List[Annotated[ResponseIncludesEnum, PlainValidator(validate_open_enum(False))]] - ] = UNSET + include: OptionalNullable[List[ResponseIncludesEnum]] = UNSET input: Optional[InputsUnion] = None r"""Input for a response request - can be a string or array of items""" @@ -375,9 +368,7 @@ class ResponsesRequest(BaseModel): metadata: OptionalNullable[Dict[str, str]] = UNSET r"""Metadata key-value pairs for the request. Keys must be ≤64 characters and cannot contain brackets. Values must be ≤512 characters. Maximum 16 pairs allowed.""" - modalities: Optional[ - List[Annotated[OutputModalityEnum, PlainValidator(validate_open_enum(False))]] - ] = None + modalities: Optional[List[OutputModalityEnum]] = None r"""Output modalities for the response. Supported values are \"text\" and \"image\".""" model: Optional[str] = None @@ -405,10 +396,7 @@ class ResponsesRequest(BaseModel): safety_identifier: OptionalNullable[str] = UNSET - service_tier: Annotated[ - OptionalNullable[ResponsesRequestServiceTier], - PlainValidator(validate_open_enum(False)), - ] = "auto" + service_tier: OptionalNullable[ResponsesRequestServiceTier] = "auto" session_id: Optional[str] = None r"""A unique identifier for grouping related requests (e.g., a conversation or agent workflow). When provided, OpenRouter uses it as the sticky routing key, routing all requests in the session to the same provider to maximize prompt cache hits. Also used for observability grouping. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters.""" @@ -441,100 +429,102 @@ class ResponsesRequest(BaseModel): trace: Optional[TraceConfig] = None r"""Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations.""" - truncation: Annotated[ - OptionalNullable[OpenAIResponsesTruncation], - PlainValidator(validate_open_enum(False)), - ] = UNSET + truncation: OptionalNullable[OpenAIResponsesTruncation] = UNSET user: Optional[str] = None r"""A unique identifier representing your end-user, which helps distinguish between different users of your app. This allows your app to identify specific users in case of abuse reports, preventing your entire app from being affected by the actions of individual users. Maximum of 256 characters.""" @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "background", - "cache_control", - "debug", - "frequency_penalty", - "image_config", - "include", - "input", - "instructions", - "max_output_tokens", - "max_tool_calls", - "metadata", - "modalities", - "model", - "models", - "parallel_tool_calls", - "plugins", - "presence_penalty", - "previous_response_id", - "prompt", - "prompt_cache_key", - "provider", - "reasoning", - "safety_identifier", - "service_tier", - "session_id", - "stop_server_tools_when", - "store", - "stream", - "temperature", - "text", - "tool_choice", - "tools", - "top_k", - "top_logprobs", - "top_p", - "trace", - "truncation", - "user", - ] - nullable_fields = [ - "background", - "frequency_penalty", - "include", - "instructions", - "max_output_tokens", - "max_tool_calls", - "metadata", - "parallel_tool_calls", - "presence_penalty", - "previous_response_id", - "prompt", - "prompt_cache_key", - "provider", - "reasoning", - "safety_identifier", - "service_tier", - "temperature", - "top_logprobs", - "top_p", - "truncation", - ] - null_default_fields = [] - + optional_fields = set( + [ + "background", + "cache_control", + "debug", + "frequency_penalty", + "image_config", + "include", + "input", + "instructions", + "max_output_tokens", + "max_tool_calls", + "metadata", + "modalities", + "model", + "models", + "parallel_tool_calls", + "plugins", + "presence_penalty", + "previous_response_id", + "prompt", + "prompt_cache_key", + "provider", + "reasoning", + "safety_identifier", + "service_tier", + "session_id", + "stop_server_tools_when", + "store", + "stream", + "temperature", + "text", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p", + "trace", + "truncation", + "user", + ] + ) + nullable_fields = set( + [ + "background", + "frequency_penalty", + "include", + "instructions", + "max_output_tokens", + "max_tool_calls", + "metadata", + "parallel_tool_calls", + "presence_penalty", + "previous_response_id", + "prompt", + "prompt_cache_key", + "provider", + "reasoning", + "safety_identifier", + "service_tier", + "temperature", + "top_logprobs", + "top_p", + "truncation", + ] + ) 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) - - 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 + 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 + ) + + 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 + + +try: + ResponsesRequest.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/routerparams.py b/src/openrouter/components/routerparams.py index ae952a33..264be670 100644 --- a/src/openrouter/components/routerparams.py +++ b/src/openrouter/components/routerparams.py @@ -1,9 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from openrouter.types import BaseModel, Nullable +from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL import pydantic -from pydantic import ConfigDict +from pydantic import ConfigDict, model_serializer from typing import Any, Dict, Optional from typing_extensions import NotRequired, TypedDict @@ -33,3 +33,22 @@ def additional_properties(self): @additional_properties.setter def additional_properties(self, value): self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["quality_floor", "throughput_floor", "version_group"]) + 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)) + serialized.pop(k, serialized.pop(n, None)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + for k, v in serialized.items(): + m[k] = v + + return m diff --git a/src/openrouter/components/searchmodelsservertoolconfig.py b/src/openrouter/components/searchmodelsservertoolconfig.py index 559ecad6..bec955b7 100644 --- a/src/openrouter/components/searchmodelsservertoolconfig.py +++ b/src/openrouter/components/searchmodelsservertoolconfig.py @@ -1,7 +1,8 @@ """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 pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -18,3 +19,19 @@ class SearchModelsServerToolConfig(BaseModel): max_results: Optional[int] = None r"""Maximum number of models to return. Defaults to 5, max 20.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["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 diff --git a/src/openrouter/components/security.py b/src/openrouter/components/security.py index 1870d08b..fce3d074 100644 --- a/src/openrouter/components/security.py +++ b/src/openrouter/components/security.py @@ -1,8 +1,9 @@ """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, SecurityMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -23,3 +24,19 @@ class Security(BaseModel): ) ), ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["apiKey"]) + 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 diff --git a/src/openrouter/components/serviceunavailableresponseerrordata.py b/src/openrouter/components/serviceunavailableresponseerrordata.py index 0b28bb2d..b6859e9f 100644 --- a/src/openrouter/components/serviceunavailableresponseerrordata.py +++ b/src/openrouter/components/serviceunavailableresponseerrordata.py @@ -32,30 +32,25 @@ class ServiceUnavailableResponseErrorData(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["metadata"] - nullable_fields = ["metadata"] - null_default_fields = [] - + optional_fields = set(["metadata"]) + nullable_fields = set(["metadata"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/shellcallitem.py b/src/openrouter/components/shellcallitem.py index 892539bf..3a5faf69 100644 --- a/src/openrouter/components/shellcallitem.py +++ b/src/openrouter/components/shellcallitem.py @@ -9,11 +9,9 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Any, List, Literal, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class ShellCallItemActionTypedDict(TypedDict): @@ -31,31 +29,26 @@ class ShellCallItemAction(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["max_output_length", "timeout_ms"] - nullable_fields = ["max_output_length", "timeout_ms"] - null_default_fields = [] - + optional_fields = set(["max_output_length", "timeout_ms"]) + nullable_fields = set(["max_output_length", "timeout_ms"]) 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) - - 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 + 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 + ) + + 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 @@ -97,36 +90,29 @@ class ShellCallItem(BaseModel): id: OptionalNullable[str] = UNSET - status: Annotated[ - OptionalNullable[ShellCallItemStatus], PlainValidator(validate_open_enum(False)) - ] = UNSET + status: OptionalNullable[ShellCallItemStatus] = UNSET @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["environment", "id", "status"] - nullable_fields = ["environment", "id", "status"] - null_default_fields = [] - + optional_fields = set(["environment", "id", "status"]) + nullable_fields = set(["environment", "id", "status"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/shellcalloutputitem.py b/src/openrouter/components/shellcalloutputitem.py index fb4b3007..872701b5 100644 --- a/src/openrouter/components/shellcalloutputitem.py +++ b/src/openrouter/components/shellcalloutputitem.py @@ -9,12 +9,10 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import validate_open_enum import pydantic from pydantic import ConfigDict, model_serializer -from pydantic.functional_validators import PlainValidator from typing import Any, Dict, List, Literal, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class ShellCallOutputItemOutputTypedDict(TypedDict): @@ -45,32 +43,27 @@ def additional_properties(self, value): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["content", "exit_code"] - nullable_fields = ["content", "exit_code"] - null_default_fields = [] - + optional_fields = set(["content", "exit_code"]) + nullable_fields = set(["content", "exit_code"]) 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) - - 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 - + val = serialized.get(k, serialized.get(n)) + serialized.pop(k, serialized.pop(n, None)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val for k, v in serialized.items(): m[k] = v @@ -114,37 +107,29 @@ class ShellCallOutputItem(BaseModel): max_output_length: OptionalNullable[int] = UNSET - status: Annotated[ - OptionalNullable[ShellCallOutputItemStatus], - PlainValidator(validate_open_enum(False)), - ] = UNSET + status: OptionalNullable[ShellCallOutputItemStatus] = UNSET @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["id", "max_output_length", "status"] - nullable_fields = ["id", "max_output_length", "status"] - null_default_fields = [] - + optional_fields = set(["id", "max_output_length", "status"]) + nullable_fields = set(["id", "max_output_length", "status"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/shellservertool_openrouter.py b/src/openrouter/components/shellservertool_openrouter.py index 304313b8..0778136a 100644 --- a/src/openrouter/components/shellservertool_openrouter.py +++ b/src/openrouter/components/shellservertool_openrouter.py @@ -2,7 +2,8 @@ from __future__ import annotations from .shellservertoolconfig import ShellServerToolConfig, ShellServerToolConfigTypedDict -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -25,3 +26,19 @@ class ShellServerToolOpenRouter(BaseModel): parameters: Optional[ShellServerToolConfig] = None r"""Configuration for the openrouter:shell server tool""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["parameters"]) + 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 diff --git a/src/openrouter/components/shellservertoolconfig.py b/src/openrouter/components/shellservertoolconfig.py index 35683098..aaa115f0 100644 --- a/src/openrouter/components/shellservertoolconfig.py +++ b/src/openrouter/components/shellservertoolconfig.py @@ -6,11 +6,10 @@ ShellServerToolEnvironment, ShellServerToolEnvironmentTypedDict, ) -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class ShellServerToolConfigTypedDict(TypedDict): @@ -27,9 +26,7 @@ class ShellServerToolConfigTypedDict(TypedDict): class ShellServerToolConfig(BaseModel): r"""Configuration for the openrouter:shell server tool""" - engine: Annotated[ - Optional[ShellServerToolEngine], PlainValidator(validate_open_enum(False)) - ] = None + engine: Optional[ShellServerToolEngine] = None r"""Which shell engine to use. \"openrouter\" runs commands server-side in the OpenRouter sandbox. \"auto\" (default) keeps the provider's native hosted shell when available (OpenAI); on other providers the call is routed to the OpenRouter sandbox.""" environment: Optional[ShellServerToolEnvironment] = None @@ -37,3 +34,19 @@ class ShellServerToolConfig(BaseModel): sleep_after_seconds: Optional[int] = None r"""How long (in seconds) the container stays warm after its last command before sleeping, freeing its capacity slot. Idle-based: each command renews the timer. Defaults to 900 (15 minutes); capped at 2592000 (30 days).""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["engine", "environment", "sleep_after_seconds"]) + 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 diff --git a/src/openrouter/components/speechrequest.py b/src/openrouter/components/speechrequest.py index 96f8d132..cb7e1b2a 100644 --- a/src/openrouter/components/speechrequest.py +++ b/src/openrouter/components/speechrequest.py @@ -2,11 +2,10 @@ from __future__ import annotations from .provideroptions import ProviderOptions, ProviderOptionsTypedDict -from openrouter.types import BaseModel, UnrecognizedStr -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL, UnrecognizedStr +from pydantic import model_serializer from typing import Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class SpeechRequestProviderTypedDict(TypedDict): @@ -22,6 +21,22 @@ class SpeechRequestProvider(BaseModel): options: Optional[ProviderOptions] = None r"""Provider-specific options keyed by provider slug. Only options for the matched provider are forwarded; the rest are ignored. Unrecognized keys are silently dropped.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["options"]) + 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 + ResponseFormatEnum = Union[ Literal[ @@ -65,10 +80,24 @@ class SpeechRequest(BaseModel): provider: Optional[SpeechRequestProvider] = None r"""Provider-specific passthrough configuration""" - response_format: Annotated[ - Optional[ResponseFormatEnum], PlainValidator(validate_open_enum(False)) - ] = "pcm" + response_format: Optional[ResponseFormatEnum] = "pcm" r"""Audio output format""" speed: Optional[float] = None r"""Playback speed multiplier. Only used by models that support it (e.g. OpenAI TTS). Ignored by other providers.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["provider", "response_format", "speed"]) + 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 diff --git a/src/openrouter/components/storedprompttemplate.py b/src/openrouter/components/storedprompttemplate.py index ffb7a43e..a27d8806 100644 --- a/src/openrouter/components/storedprompttemplate.py +++ b/src/openrouter/components/storedprompttemplate.py @@ -37,30 +37,25 @@ class StoredPromptTemplate(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["variables"] - nullable_fields = ["variables"] - null_default_fields = [] - + optional_fields = set(["variables"]) + nullable_fields = set(["variables"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/streamevents.py b/src/openrouter/components/streamevents.py index 0761a961..cc94aff8 100644 --- a/src/openrouter/components/streamevents.py +++ b/src/openrouter/components/streamevents.py @@ -144,9 +144,12 @@ WebSearchCallSearchingEvent, WebSearchCallSearchingEventTypedDict, ) -from openrouter.utils import get_discriminator -from pydantic import Discriminator, Tag -from typing import Union +from functools import partial +from openrouter.types import BaseModel +from openrouter.utils.unions import parse_open_union +from pydantic import ConfigDict +from pydantic.functional_validators import BeforeValidator +from typing import Any, Literal, Union from typing_extensions import Annotated, TypeAliasType @@ -202,105 +205,120 @@ r"""Union of all possible event types emitted during response streaming""" +class UnknownStreamEvents(BaseModel): + r"""A StreamEvents variant the SDK doesn't recognize. Preserves the raw payload.""" + + type: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_STREAM_EVENTS_VARIANTS: dict[str, Any] = { + "error": ErrorEvent, + "response.apply_patch_call_operation_diff.delta": ApplyPatchCallOperationDiffDeltaEvent, + "response.apply_patch_call_operation_diff.done": ApplyPatchCallOperationDiffDoneEvent, + "response.completed": StreamEventsResponseCompleted, + "response.content_part.added": ContentPartAddedEvent, + "response.content_part.done": ContentPartDoneEvent, + "response.created": OpenResponsesCreatedEvent, + "response.custom_tool_call_input.delta": CustomToolCallInputDeltaEvent, + "response.custom_tool_call_input.done": CustomToolCallInputDoneEvent, + "response.debug": DebugEvent, + "response.failed": StreamEventsResponseFailed, + "response.function_call_arguments.delta": FunctionCallArgsDeltaEvent, + "response.function_call_arguments.done": FunctionCallArgsDoneEvent, + "response.fusion_call.analysis.completed": FusionCallAnalysisCompletedEvent, + "response.fusion_call.analysis.in_progress": FusionCallAnalysisInProgressEvent, + "response.fusion_call.completed": FusionCallCompletedEvent, + "response.fusion_call.in_progress": FusionCallInProgressEvent, + "response.fusion_call.panel.added": FusionCallPanelAddedEvent, + "response.fusion_call.panel.completed": FusionCallPanelCompletedEvent, + "response.fusion_call.panel.delta": FusionCallPanelDeltaEvent, + "response.fusion_call.panel.failed": FusionCallPanelFailedEvent, + "response.fusion_call.panel.reasoning.delta": FusionCallPanelReasoningDeltaEvent, + "response.image_generation_call.completed": ImageGenCallCompletedEvent, + "response.image_generation_call.generating": ImageGenCallGeneratingEvent, + "response.image_generation_call.in_progress": ImageGenCallInProgressEvent, + "response.image_generation_call.partial_image": ImageGenCallPartialImageEvent, + "response.in_progress": OpenResponsesInProgressEvent, + "response.incomplete": StreamEventsResponseIncomplete, + "response.output_item.added": StreamEventsResponseOutputItemAdded, + "response.output_item.done": StreamEventsResponseOutputItemDone, + "response.output_text.annotation.added": AnnotationAddedEvent, + "response.output_text.delta": TextDeltaEvent, + "response.output_text.done": TextDoneEvent, + "response.reasoning_summary_part.added": ReasoningSummaryPartAddedEvent, + "response.reasoning_summary_part.done": ReasoningSummaryPartDoneEvent, + "response.reasoning_summary_text.delta": ReasoningSummaryTextDeltaEvent, + "response.reasoning_summary_text.done": ReasoningSummaryTextDoneEvent, + "response.reasoning_text.delta": ReasoningDeltaEvent, + "response.reasoning_text.done": ReasoningDoneEvent, + "response.refusal.delta": RefusalDeltaEvent, + "response.refusal.done": RefusalDoneEvent, + "response.web_search_call.completed": WebSearchCallCompletedEvent, + "response.web_search_call.in_progress": WebSearchCallInProgressEvent, + "response.web_search_call.searching": WebSearchCallSearchingEvent, +} + + StreamEvents = Annotated[ Union[ - Annotated[ErrorEvent, Tag("error")], - Annotated[ - ApplyPatchCallOperationDiffDeltaEvent, - Tag("response.apply_patch_call_operation_diff.delta"), - ], - Annotated[ - ApplyPatchCallOperationDiffDoneEvent, - Tag("response.apply_patch_call_operation_diff.done"), - ], - Annotated[StreamEventsResponseCompleted, Tag("response.completed")], - Annotated[ContentPartAddedEvent, Tag("response.content_part.added")], - Annotated[ContentPartDoneEvent, Tag("response.content_part.done")], - Annotated[OpenResponsesCreatedEvent, Tag("response.created")], - Annotated[ - CustomToolCallInputDeltaEvent, Tag("response.custom_tool_call_input.delta") - ], - Annotated[ - CustomToolCallInputDoneEvent, Tag("response.custom_tool_call_input.done") - ], - Annotated[DebugEvent, Tag("response.debug")], - Annotated[StreamEventsResponseFailed, Tag("response.failed")], - Annotated[ - FunctionCallArgsDeltaEvent, Tag("response.function_call_arguments.delta") - ], - Annotated[ - FunctionCallArgsDoneEvent, Tag("response.function_call_arguments.done") - ], - Annotated[ - FusionCallAnalysisCompletedEvent, - Tag("response.fusion_call.analysis.completed"), - ], - Annotated[ - FusionCallAnalysisInProgressEvent, - Tag("response.fusion_call.analysis.in_progress"), - ], - Annotated[FusionCallCompletedEvent, Tag("response.fusion_call.completed")], - Annotated[FusionCallInProgressEvent, Tag("response.fusion_call.in_progress")], - Annotated[FusionCallPanelAddedEvent, Tag("response.fusion_call.panel.added")], - Annotated[ - FusionCallPanelCompletedEvent, Tag("response.fusion_call.panel.completed") - ], - Annotated[FusionCallPanelDeltaEvent, Tag("response.fusion_call.panel.delta")], - Annotated[FusionCallPanelFailedEvent, Tag("response.fusion_call.panel.failed")], - Annotated[ - FusionCallPanelReasoningDeltaEvent, - Tag("response.fusion_call.panel.reasoning.delta"), - ], - Annotated[ - ImageGenCallCompletedEvent, Tag("response.image_generation_call.completed") - ], - Annotated[ - ImageGenCallGeneratingEvent, - Tag("response.image_generation_call.generating"), - ], - Annotated[ - ImageGenCallInProgressEvent, - Tag("response.image_generation_call.in_progress"), - ], - Annotated[ - ImageGenCallPartialImageEvent, - Tag("response.image_generation_call.partial_image"), - ], - Annotated[OpenResponsesInProgressEvent, Tag("response.in_progress")], - Annotated[StreamEventsResponseIncomplete, Tag("response.incomplete")], - Annotated[ - StreamEventsResponseOutputItemAdded, Tag("response.output_item.added") - ], - Annotated[StreamEventsResponseOutputItemDone, Tag("response.output_item.done")], - Annotated[AnnotationAddedEvent, Tag("response.output_text.annotation.added")], - Annotated[TextDeltaEvent, Tag("response.output_text.delta")], - Annotated[TextDoneEvent, Tag("response.output_text.done")], - Annotated[ - ReasoningSummaryPartAddedEvent, Tag("response.reasoning_summary_part.added") - ], - Annotated[ - ReasoningSummaryPartDoneEvent, Tag("response.reasoning_summary_part.done") - ], - Annotated[ - ReasoningSummaryTextDeltaEvent, Tag("response.reasoning_summary_text.delta") - ], - Annotated[ - ReasoningSummaryTextDoneEvent, Tag("response.reasoning_summary_text.done") - ], - Annotated[ReasoningDeltaEvent, Tag("response.reasoning_text.delta")], - Annotated[ReasoningDoneEvent, Tag("response.reasoning_text.done")], - Annotated[RefusalDeltaEvent, Tag("response.refusal.delta")], - Annotated[RefusalDoneEvent, Tag("response.refusal.done")], - Annotated[ - WebSearchCallCompletedEvent, Tag("response.web_search_call.completed") - ], - Annotated[ - WebSearchCallInProgressEvent, Tag("response.web_search_call.in_progress") - ], - Annotated[ - WebSearchCallSearchingEvent, Tag("response.web_search_call.searching") - ], + ErrorEvent, + ApplyPatchCallOperationDiffDeltaEvent, + ApplyPatchCallOperationDiffDoneEvent, + StreamEventsResponseCompleted, + ContentPartAddedEvent, + ContentPartDoneEvent, + OpenResponsesCreatedEvent, + CustomToolCallInputDeltaEvent, + CustomToolCallInputDoneEvent, + DebugEvent, + StreamEventsResponseFailed, + FunctionCallArgsDeltaEvent, + FunctionCallArgsDoneEvent, + FusionCallAnalysisCompletedEvent, + FusionCallAnalysisInProgressEvent, + FusionCallCompletedEvent, + FusionCallInProgressEvent, + FusionCallPanelAddedEvent, + FusionCallPanelCompletedEvent, + FusionCallPanelDeltaEvent, + FusionCallPanelFailedEvent, + FusionCallPanelReasoningDeltaEvent, + ImageGenCallCompletedEvent, + ImageGenCallGeneratingEvent, + ImageGenCallInProgressEvent, + ImageGenCallPartialImageEvent, + OpenResponsesInProgressEvent, + StreamEventsResponseIncomplete, + StreamEventsResponseOutputItemAdded, + StreamEventsResponseOutputItemDone, + AnnotationAddedEvent, + TextDeltaEvent, + TextDoneEvent, + ReasoningSummaryPartAddedEvent, + ReasoningSummaryPartDoneEvent, + ReasoningSummaryTextDeltaEvent, + ReasoningSummaryTextDoneEvent, + ReasoningDeltaEvent, + ReasoningDoneEvent, + RefusalDeltaEvent, + RefusalDoneEvent, + WebSearchCallCompletedEvent, + WebSearchCallInProgressEvent, + WebSearchCallSearchingEvent, + UnknownStreamEvents, ], - Discriminator(lambda m: get_discriminator(m, "type", "type")), + BeforeValidator( + partial( + parse_open_union, + disc_key="type", + variants=_STREAM_EVENTS_VARIANTS, + unknown_cls=UnknownStreamEvents, + union_name="StreamEvents", + ) + ), ] r"""Union of all possible event types emitted during response streaming""" diff --git a/src/openrouter/components/streamlogprob.py b/src/openrouter/components/streamlogprob.py index 44e37608..7c0cb667 100644 --- a/src/openrouter/components/streamlogprob.py +++ b/src/openrouter/components/streamlogprob.py @@ -5,8 +5,9 @@ StreamLogprobTopLogprob, StreamLogprobTopLogprobTypedDict, ) -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -30,3 +31,25 @@ class StreamLogprob(BaseModel): bytes_: Annotated[Optional[List[int]], pydantic.Field(alias="bytes")] = None top_logprobs: Optional[List[StreamLogprobTopLogprob]] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["bytes", "top_logprobs"]) + 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 + + +try: + StreamLogprob.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/streamlogprobtoplogprob.py b/src/openrouter/components/streamlogprobtoplogprob.py index 49f4ae2d..79b6d348 100644 --- a/src/openrouter/components/streamlogprobtoplogprob.py +++ b/src/openrouter/components/streamlogprobtoplogprob.py @@ -1,8 +1,9 @@ """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 import pydantic +from pydantic import model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -23,3 +24,25 @@ class StreamLogprobTopLogprob(BaseModel): logprob: Optional[float] = None token: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["bytes", "logprob", "token"]) + 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 + + +try: + StreamLogprobTopLogprob.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/sttinputaudio.py b/src/openrouter/components/sttinputaudio.py index d1b15b44..76c4b466 100644 --- a/src/openrouter/components/sttinputaudio.py +++ b/src/openrouter/components/sttinputaudio.py @@ -23,3 +23,9 @@ class STTInputAudio(BaseModel): format_: Annotated[str, pydantic.Field(alias="format")] r"""Audio format (e.g., wav, mp3, flac, m4a, ogg, webm, aac). Supported formats vary by provider.""" + + +try: + STTInputAudio.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/sttrequest.py b/src/openrouter/components/sttrequest.py index 7900460e..d5497b98 100644 --- a/src/openrouter/components/sttrequest.py +++ b/src/openrouter/components/sttrequest.py @@ -3,7 +3,8 @@ from __future__ import annotations from .provideroptions import ProviderOptions, ProviderOptionsTypedDict from .sttinputaudio import STTInputAudio, STTInputAudioTypedDict -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -21,6 +22,22 @@ class STTRequestProvider(BaseModel): options: Optional[ProviderOptions] = None r"""Provider-specific options keyed by provider slug. Only options for the matched provider are forwarded; the rest are ignored. Unrecognized keys are silently dropped.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["options"]) + 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 STTRequestTypedDict(TypedDict): r"""Speech-to-text request input. Accepts a JSON body with input_audio containing base64-encoded audio.""" @@ -54,3 +71,19 @@ class STTRequest(BaseModel): temperature: Optional[float] = None r"""Sampling temperature for transcription""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["language", "provider", "temperature"]) + 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 diff --git a/src/openrouter/components/sttresponse.py b/src/openrouter/components/sttresponse.py index d50a8c42..19ff065a 100644 --- a/src/openrouter/components/sttresponse.py +++ b/src/openrouter/components/sttresponse.py @@ -2,7 +2,8 @@ from __future__ import annotations from .sttusage import STTUsage, STTUsageTypedDict -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -24,3 +25,19 @@ class STTResponse(BaseModel): usage: Optional[STTUsage] = None r"""Aggregated usage statistics for the request""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["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 diff --git a/src/openrouter/components/sttusage.py b/src/openrouter/components/sttusage.py index c7661d13..1feb5db4 100644 --- a/src/openrouter/components/sttusage.py +++ b/src/openrouter/components/sttusage.py @@ -1,7 +1,8 @@ """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 pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -38,3 +39,21 @@ class STTUsage(BaseModel): total_tokens: Optional[int] = None r"""Total number of tokens used (input + output)""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["cost", "input_tokens", "output_tokens", "seconds", "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 diff --git a/src/openrouter/components/subagentnestedtool.py b/src/openrouter/components/subagentnestedtool.py index 8e1417b1..4a62a2c0 100644 --- a/src/openrouter/components/subagentnestedtool.py +++ b/src/openrouter/components/subagentnestedtool.py @@ -1,9 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from openrouter.types import BaseModel, Nullable +from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL import pydantic -from pydantic import ConfigDict +from pydantic import ConfigDict, model_serializer from typing import Any, Dict, Optional from typing_extensions import NotRequired, TypedDict @@ -34,3 +34,22 @@ def additional_properties(self): @additional_properties.setter def additional_properties(self, value): self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["parameters"]) + 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)) + serialized.pop(k, serialized.pop(n, None)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + for k, v in serialized.items(): + m[k] = v + + return m diff --git a/src/openrouter/components/subagentreasoning.py b/src/openrouter/components/subagentreasoning.py index d2d50815..d34c619b 100644 --- a/src/openrouter/components/subagentreasoning.py +++ b/src/openrouter/components/subagentreasoning.py @@ -1,11 +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 validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL, UnrecognizedStr +from pydantic import model_serializer from typing import Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict SubagentReasoningEffort = Union[ @@ -35,10 +34,24 @@ class SubagentReasoningTypedDict(TypedDict): class SubagentReasoning(BaseModel): r"""Reasoning configuration forwarded to the subagent call. Use this to control reasoning effort and token budget for models that support extended thinking.""" - effort: Annotated[ - Optional[SubagentReasoningEffort], PlainValidator(validate_open_enum(False)) - ] = None + effort: Optional[SubagentReasoningEffort] = None r"""Reasoning effort level for the subagent call.""" max_tokens: Optional[int] = None r"""Maximum number of reasoning tokens the subagent may use. Accepted and validated but not yet forwarded to the subagent call.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["effort", "max_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 diff --git a/src/openrouter/components/subagentservertool_openrouter.py b/src/openrouter/components/subagentservertool_openrouter.py index a33e7690..51cf1e2c 100644 --- a/src/openrouter/components/subagentservertool_openrouter.py +++ b/src/openrouter/components/subagentservertool_openrouter.py @@ -5,7 +5,8 @@ SubagentServerToolConfig, SubagentServerToolConfigTypedDict, ) -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -28,3 +29,19 @@ class SubagentServerToolOpenRouter(BaseModel): parameters: Optional[SubagentServerToolConfig] = None r"""Configuration for the openrouter:subagent server tool.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["parameters"]) + 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 diff --git a/src/openrouter/components/subagentservertoolconfig.py b/src/openrouter/components/subagentservertoolconfig.py index 27bb1e45..eb9f2767 100644 --- a/src/openrouter/components/subagentservertoolconfig.py +++ b/src/openrouter/components/subagentservertoolconfig.py @@ -3,7 +3,8 @@ from __future__ import annotations from .subagentnestedtool import SubagentNestedTool, SubagentNestedToolTypedDict from .subagentreasoning import SubagentReasoning, SubagentReasoningTypedDict -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional from typing_extensions import NotRequired, TypedDict @@ -50,3 +51,29 @@ class SubagentServerToolConfig(BaseModel): tools: Optional[List[SubagentNestedTool]] = None r"""Tools the subagent may use while executing a delegated task. The subagent runs as an agentic sub-agent over these tools, then returns its outcome. Only OpenRouter server tools are supported — function tools are rejected — and the list must not include the subagent tool itself.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "instructions", + "max_completion_tokens", + "max_tool_calls", + "model", + "reasoning", + "temperature", + "tools", + ] + ) + 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 diff --git a/src/openrouter/components/textextendedconfig.py b/src/openrouter/components/textextendedconfig.py index 89224c7a..ffae7364 100644 --- a/src/openrouter/components/textextendedconfig.py +++ b/src/openrouter/components/textextendedconfig.py @@ -10,10 +10,8 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import 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 @@ -44,36 +42,35 @@ class TextExtendedConfig(BaseModel): format_: Annotated[Optional[Formats], pydantic.Field(alias="format")] = None r"""Text response format configuration""" - verbosity: Annotated[ - OptionalNullable[Verbosity], PlainValidator(validate_open_enum(False)) - ] = UNSET + verbosity: OptionalNullable[Verbosity] = UNSET @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["format", "verbosity"] - nullable_fields = ["verbosity"] - null_default_fields = [] - + optional_fields = set(["format", "verbosity"]) + nullable_fields = set(["verbosity"]) 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) - - 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 + 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 + ) + + 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 + + +try: + TextExtendedConfig.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/toomanyrequestsresponseerrordata.py b/src/openrouter/components/toomanyrequestsresponseerrordata.py index 19fda103..2446e966 100644 --- a/src/openrouter/components/toomanyrequestsresponseerrordata.py +++ b/src/openrouter/components/toomanyrequestsresponseerrordata.py @@ -32,30 +32,25 @@ class TooManyRequestsResponseErrorData(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["metadata"] - nullable_fields = ["metadata"] - null_default_fields = [] - + optional_fields = set(["metadata"]) + nullable_fields = set(["metadata"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/topproviderinfo.py b/src/openrouter/components/topproviderinfo.py index 475bda8f..6e119e6b 100644 --- a/src/openrouter/components/topproviderinfo.py +++ b/src/openrouter/components/topproviderinfo.py @@ -37,30 +37,25 @@ class TopProviderInfo(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["context_length", "max_completion_tokens"] - nullable_fields = ["context_length", "max_completion_tokens"] - null_default_fields = [] - + optional_fields = set(["context_length", "max_completion_tokens"]) + nullable_fields = set(["context_length", "max_completion_tokens"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/traceconfig.py b/src/openrouter/components/traceconfig.py index 644b9be5..5ef25d66 100644 --- a/src/openrouter/components/traceconfig.py +++ b/src/openrouter/components/traceconfig.py @@ -1,9 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from openrouter.types import BaseModel, Nullable +from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL import pydantic -from pydantic import ConfigDict +from pydantic import ConfigDict, model_serializer from typing import Any, Dict, Optional from typing_extensions import NotRequired, TypedDict @@ -43,3 +43,24 @@ def additional_properties(self): @additional_properties.setter def additional_properties(self, value): self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["generation_name", "parent_span_id", "span_name", "trace_id", "trace_name"] + ) + 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)) + serialized.pop(k, serialized.pop(n, None)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + for k, v in serialized.items(): + m[k] = v + + return m diff --git a/src/openrouter/components/unauthorizedresponseerrordata.py b/src/openrouter/components/unauthorizedresponseerrordata.py index 0fc3c7c3..b1fee6c3 100644 --- a/src/openrouter/components/unauthorizedresponseerrordata.py +++ b/src/openrouter/components/unauthorizedresponseerrordata.py @@ -32,30 +32,25 @@ class UnauthorizedResponseErrorData(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["metadata"] - nullable_fields = ["metadata"] - null_default_fields = [] - + optional_fields = set(["metadata"]) + nullable_fields = set(["metadata"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/unifiedbenchmarksaaitem.py b/src/openrouter/components/unifiedbenchmarksaaitem.py index a01518d4..9e6db288 100644 --- a/src/openrouter/components/unifiedbenchmarksaaitem.py +++ b/src/openrouter/components/unifiedbenchmarksaaitem.py @@ -56,35 +56,14 @@ class UnifiedBenchmarksAAItem(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = [ - "agentic_index", - "coding_index", - "intelligence_index", - "pricing", - ] - 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 diff --git a/src/openrouter/components/unifiedbenchmarksdaitem.py b/src/openrouter/components/unifiedbenchmarksdaitem.py index 0bb8159d..bc4d5b68 100644 --- a/src/openrouter/components/unifiedbenchmarksdaitem.py +++ b/src/openrouter/components/unifiedbenchmarksdaitem.py @@ -40,36 +40,14 @@ class TournamentStats(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = [ - "first_place", - "fourth_place", - "second_place", - "third_place", - "total", - ] - 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 @@ -131,30 +109,14 @@ class UnifiedBenchmarksDAItem(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["avg_generation_time_ms", "pricing"] - 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 diff --git a/src/openrouter/components/unifiedbenchmarksmeta.py b/src/openrouter/components/unifiedbenchmarksmeta.py index 6106104d..36d695e2 100644 --- a/src/openrouter/components/unifiedbenchmarksmeta.py +++ b/src/openrouter/components/unifiedbenchmarksmeta.py @@ -2,11 +2,9 @@ from __future__ import annotations from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL, UnrecognizedStr -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Literal, Union -from typing_extensions import Annotated, TypedDict +from typing_extensions import TypedDict UnifiedBenchmarksMetaSource = Union[ @@ -50,9 +48,7 @@ class UnifiedBenchmarksMeta(BaseModel): model_count: int r"""Number of unique models in the response.""" - source: Annotated[ - Nullable[UnifiedBenchmarksMetaSource], PlainValidator(validate_open_enum(False)) - ] + source: Nullable[UnifiedBenchmarksMetaSource] r"""The source filter applied, or null when all sources are returned.""" source_url: Nullable[str] @@ -66,30 +62,14 @@ class UnifiedBenchmarksMeta(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["citation", "source", "source_url", "task_type"] - 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 diff --git a/src/openrouter/components/unifiedbenchmarksresponse.py b/src/openrouter/components/unifiedbenchmarksresponse.py index 8f064226..7145a084 100644 --- a/src/openrouter/components/unifiedbenchmarksresponse.py +++ b/src/openrouter/components/unifiedbenchmarksresponse.py @@ -10,10 +10,12 @@ UnifiedBenchmarksDAItemTypedDict, ) from .unifiedbenchmarksmeta import UnifiedBenchmarksMeta, UnifiedBenchmarksMetaTypedDict +from functools import partial from openrouter.types import BaseModel -from openrouter.utils import get_discriminator -from pydantic import Discriminator, Tag -from typing import List, Union +from openrouter.utils.unions import parse_open_union +from pydantic import ConfigDict +from pydantic.functional_validators import BeforeValidator +from typing import Any, List, Literal, Union from typing_extensions import Annotated, TypeAliasType, TypedDict @@ -23,12 +25,37 @@ ) +class UnknownUnifiedBenchmarksResponseData(BaseModel): + r"""A UnifiedBenchmarksResponseData variant the SDK doesn't recognize. Preserves the raw payload.""" + + source: Literal["UNKNOWN"] = "UNKNOWN" + raw: Any + is_unknown: Literal[True] = True + + model_config = ConfigDict(frozen=True) + + +_UNIFIED_BENCHMARKS_RESPONSE_DATA_VARIANTS: dict[str, Any] = { + "artificial-analysis": UnifiedBenchmarksAAItem, + "design-arena": UnifiedBenchmarksDAItem, +} + + UnifiedBenchmarksResponseData = Annotated[ Union[ - Annotated[UnifiedBenchmarksAAItem, Tag("artificial-analysis")], - Annotated[UnifiedBenchmarksDAItem, Tag("design-arena")], + UnifiedBenchmarksAAItem, + UnifiedBenchmarksDAItem, + UnknownUnifiedBenchmarksResponseData, ], - Discriminator(lambda m: get_discriminator(m, "source", "source")), + BeforeValidator( + partial( + parse_open_union, + disc_key="source", + variants=_UNIFIED_BENCHMARKS_RESPONSE_DATA_VARIANTS, + unknown_cls=UnknownUnifiedBenchmarksResponseData, + union_name="UnifiedBenchmarksResponseData", + ) + ), ] diff --git a/src/openrouter/components/unprocessableentityresponseerrordata.py b/src/openrouter/components/unprocessableentityresponseerrordata.py index 1c70ab3d..72a7e1d5 100644 --- a/src/openrouter/components/unprocessableentityresponseerrordata.py +++ b/src/openrouter/components/unprocessableentityresponseerrordata.py @@ -32,30 +32,25 @@ class UnprocessableEntityResponseErrorData(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["metadata"] - nullable_fields = ["metadata"] - null_default_fields = [] - + optional_fields = set(["metadata"]) + nullable_fields = set(["metadata"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/updatebyokkeyrequest.py b/src/openrouter/components/updatebyokkeyrequest.py index 9fa7cf67..865262ac 100644 --- a/src/openrouter/components/updatebyokkeyrequest.py +++ b/src/openrouter/components/updatebyokkeyrequest.py @@ -49,37 +49,34 @@ class UpdateBYOKKeyRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "allowed_models", - "allowed_user_ids", - "disabled", - "is_fallback", - "key", - "name", - ] - nullable_fields = ["allowed_models", "allowed_user_ids", "name"] - null_default_fields = [] - + optional_fields = set( + [ + "allowed_models", + "allowed_user_ids", + "disabled", + "is_fallback", + "key", + "name", + ] + ) + nullable_fields = set(["allowed_models", "allowed_user_ids", "name"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/updateguardrailrequest.py b/src/openrouter/components/updateguardrailrequest.py index ec5240af..d80389ac 100644 --- a/src/openrouter/components/updateguardrailrequest.py +++ b/src/openrouter/components/updateguardrailrequest.py @@ -14,10 +14,8 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum import pydantic from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -107,68 +105,65 @@ class UpdateGuardrailRequest(BaseModel): name: Optional[str] = None r"""New name for the guardrail""" - reset_interval: Annotated[ - OptionalNullable[GuardrailInterval], PlainValidator(validate_open_enum(False)) - ] = UNSET + reset_interval: OptionalNullable[GuardrailInterval] = UNSET r"""Interval at which the limit resets (daily, weekly, monthly)""" @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "allowed_models", - "allowed_providers", - "content_filter_builtins", - "content_filters", - "description", - "enforce_zdr", - "enforce_zdr_anthropic", - "enforce_zdr_google", - "enforce_zdr_openai", - "enforce_zdr_other", - "ignored_models", - "ignored_providers", - "limit_usd", - "name", - "reset_interval", - ] - nullable_fields = [ - "allowed_models", - "allowed_providers", - "content_filter_builtins", - "content_filters", - "description", - "enforce_zdr", - "enforce_zdr_anthropic", - "enforce_zdr_google", - "enforce_zdr_openai", - "enforce_zdr_other", - "ignored_models", - "ignored_providers", - "limit_usd", - "reset_interval", - ] - null_default_fields = [] - + optional_fields = set( + [ + "allowed_models", + "allowed_providers", + "content_filter_builtins", + "content_filters", + "description", + "enforce_zdr", + "enforce_zdr_anthropic", + "enforce_zdr_google", + "enforce_zdr_openai", + "enforce_zdr_other", + "ignored_models", + "ignored_providers", + "limit_usd", + "name", + "reset_interval", + ] + ) + nullable_fields = set( + [ + "allowed_models", + "allowed_providers", + "content_filter_builtins", + "content_filters", + "description", + "enforce_zdr", + "enforce_zdr_anthropic", + "enforce_zdr_google", + "enforce_zdr_openai", + "enforce_zdr_other", + "ignored_models", + "ignored_providers", + "limit_usd", + "reset_interval", + ] + ) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/updateobservabilitydestinationrequest.py b/src/openrouter/components/updateobservabilitydestinationrequest.py index 1709ecff..a344284f 100644 --- a/src/openrouter/components/updateobservabilitydestinationrequest.py +++ b/src/openrouter/components/updateobservabilitydestinationrequest.py @@ -56,38 +56,35 @@ class UpdateObservabilityDestinationRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "api_key_hashes", - "config", - "enabled", - "filter_rules", - "name", - "privacy_mode", - "sampling_rate", - ] - nullable_fields = ["api_key_hashes", "filter_rules"] - null_default_fields = [] - + optional_fields = set( + [ + "api_key_hashes", + "config", + "enabled", + "filter_rules", + "name", + "privacy_mode", + "sampling_rate", + ] + ) + nullable_fields = set(["api_key_hashes", "filter_rules"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/updateworkspacerequest.py b/src/openrouter/components/updateworkspacerequest.py index 8271be15..f1569fcf 100644 --- a/src/openrouter/components/updateworkspacerequest.py +++ b/src/openrouter/components/updateworkspacerequest.py @@ -74,48 +74,47 @@ class UpdateWorkspaceRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "default_image_model", - "default_provider_sort", - "default_text_model", - "description", - "io_logging_api_key_ids", - "io_logging_sampling_rate", - "is_data_discount_logging_enabled", - "is_observability_broadcast_enabled", - "is_observability_io_logging_enabled", - "name", - "slug", - ] - nullable_fields = [ - "default_image_model", - "default_provider_sort", - "default_text_model", - "description", - "io_logging_api_key_ids", - ] - null_default_fields = [] - + optional_fields = set( + [ + "default_image_model", + "default_provider_sort", + "default_text_model", + "description", + "io_logging_api_key_ids", + "io_logging_sampling_rate", + "is_data_discount_logging_enabled", + "is_observability_broadcast_enabled", + "is_observability_io_logging_enabled", + "name", + "slug", + ] + ) + nullable_fields = set( + [ + "default_image_model", + "default_provider_sort", + "default_text_model", + "description", + "io_logging_api_key_ids", + ] + ) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/urlcitation.py b/src/openrouter/components/urlcitation.py index 04aa99c2..a0491cc8 100644 --- a/src/openrouter/components/urlcitation.py +++ b/src/openrouter/components/urlcitation.py @@ -1,7 +1,8 @@ """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 pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -30,3 +31,19 @@ class URLCitation(BaseModel): url: str content: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["content"]) + 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 diff --git a/src/openrouter/components/usage.py b/src/openrouter/components/usage.py index b140a021..62c5e14f 100644 --- a/src/openrouter/components/usage.py +++ b/src/openrouter/components/usage.py @@ -44,31 +44,26 @@ class UsageCostDetails(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) - - 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 + 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 + ) + + 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 @@ -111,30 +106,25 @@ class Usage(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["cost", "cost_details", "is_byok"] - nullable_fields = ["cost"] - null_default_fields = [] - + optional_fields = set(["cost", "cost_details", "is_byok"]) + nullable_fields = set(["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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/videogenerationrequest.py b/src/openrouter/components/videogenerationrequest.py index 230d4874..1f383a97 100644 --- a/src/openrouter/components/videogenerationrequest.py +++ b/src/openrouter/components/videogenerationrequest.py @@ -3,10 +3,9 @@ from __future__ import annotations from .frameimage import FrameImage, FrameImageTypedDict from .inputreference import InputReference, InputReferenceTypedDict -from openrouter.types import BaseModel, Nullable, UnrecognizedStr -from openrouter.utils import validate_open_enum +from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL, UnrecognizedStr import pydantic -from pydantic.functional_validators import PlainValidator +from pydantic import model_serializer from typing import Any, Dict, List, Literal, Optional, Union from typing_extensions import Annotated, NotRequired, TypedDict @@ -444,6 +443,145 @@ class VideoGenerationRequestOptions(BaseModel): Optional[Dict[str, Nullable[Any]]], pydantic.Field(alias="z-ai") ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "01ai", + "ai21", + "aion-labs", + "akashml", + "alibaba", + "amazon-bedrock", + "amazon-nova", + "ambient", + "anthropic", + "anyscale", + "arcee-ai", + "atlas-cloud", + "atoma", + "avian", + "azure", + "baidu", + "baseten", + "black-forest-labs", + "byteplus", + "centml", + "cerebras", + "chutes", + "cirrascale", + "clarifai", + "cloudflare", + "cohere", + "crofai", + "crucible", + "crusoe", + "darkbloom", + "decart", + "deepinfra", + "deepseek", + "dekallm", + "digitalocean", + "enfer", + "fake-provider", + "featherless", + "fireworks", + "friendli", + "gmicloud", + "google-ai-studio", + "google-vertex", + "gopomelo", + "groq", + "heygen", + "huggingface", + "hyperbolic", + "hyperbolic-quantized", + "inception", + "inceptron", + "inferact-vllm", + "inference-net", + "infermatic", + "inflection", + "inocloud", + "io-net", + "ionstream", + "klusterai", + "lambda", + "lepton", + "liquid", + "lynn", + "lynn-private", + "mancer", + "mancer-old", + "mara", + "meta", + "minimax", + "mistral", + "modal", + "modelrun", + "modular", + "moonshotai", + "morph", + "ncompass", + "nebius", + "nex-agi", + "nextbit", + "nineteen", + "novita", + "nvidia", + "octoai", + "open-inference", + "openai", + "parasail", + "perceptron", + "perplexity", + "phala", + "poolside", + "quiver", + "recraft", + "recursal", + "reflection", + "reka", + "relace", + "replicate", + "sakana-ai", + "sambanova", + "sambanova-cloaked", + "seed", + "sf-compute", + "siliconflow", + "sourceful", + "stealth", + "stepfun", + "streamlake", + "switchpoint", + "targon", + "tenstorrent", + "together", + "together-lite", + "ubicloud", + "upstage", + "venice", + "wafer", + "wandb", + "xai", + "xiaomi", + "z-ai", + ] + ) + 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 VideoGenerationRequestProviderTypedDict(TypedDict): r"""Provider-specific passthrough configuration""" @@ -456,6 +594,22 @@ class VideoGenerationRequestProvider(BaseModel): options: Optional[VideoGenerationRequestOptions] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["options"]) + 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 + VideoGenerationRequestResolution = Union[ Literal[ @@ -501,10 +655,7 @@ class VideoGenerationRequest(BaseModel): prompt: str - aspect_ratio: Annotated[ - Optional[VideoGenerationRequestAspectRatio], - PlainValidator(validate_open_enum(False)), - ] = None + aspect_ratio: Optional[VideoGenerationRequestAspectRatio] = None r"""Aspect ratio of the generated video""" callback_url: Optional[str] = None @@ -525,10 +676,7 @@ class VideoGenerationRequest(BaseModel): provider: Optional[VideoGenerationRequestProvider] = None r"""Provider-specific passthrough configuration""" - resolution: Annotated[ - Optional[VideoGenerationRequestResolution], - PlainValidator(validate_open_enum(False)), - ] = None + resolution: Optional[VideoGenerationRequestResolution] = None r"""Resolution of the generated video""" seed: Optional[int] = None @@ -536,3 +684,38 @@ class VideoGenerationRequest(BaseModel): size: Optional[str] = None r"""Exact pixel dimensions of the generated video in \"WIDTHxHEIGHT\" format (e.g. \"1280x720\"). Interchangeable with resolution + aspect_ratio.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "aspect_ratio", + "callback_url", + "duration", + "frame_images", + "generate_audio", + "input_references", + "provider", + "resolution", + "seed", + "size", + ] + ) + 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 + + +try: + VideoGenerationRequestOptions.model_rebuild() +except NameError: + pass diff --git a/src/openrouter/components/videogenerationresponse.py b/src/openrouter/components/videogenerationresponse.py index ab182a81..2b0301ba 100644 --- a/src/openrouter/components/videogenerationresponse.py +++ b/src/openrouter/components/videogenerationresponse.py @@ -2,11 +2,10 @@ from __future__ import annotations from .videogenerationusage import VideoGenerationUsage, VideoGenerationUsageTypedDict -from openrouter.types import BaseModel, UnrecognizedStr -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL, UnrecognizedStr +from pydantic import model_serializer from typing import List, Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict VideoGenerationResponseStatus = Union[ @@ -39,9 +38,7 @@ class VideoGenerationResponse(BaseModel): polling_url: str - status: Annotated[ - VideoGenerationResponseStatus, PlainValidator(validate_open_enum(False)) - ] + status: VideoGenerationResponseStatus error: Optional[str] = None @@ -52,3 +49,19 @@ class VideoGenerationResponse(BaseModel): usage: Optional[VideoGenerationUsage] = None r"""Usage and cost information for the video generation. Available once the job has completed.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["error", "generation_id", "unsigned_urls", "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 diff --git a/src/openrouter/components/videogenerationusage.py b/src/openrouter/components/videogenerationusage.py index 2b555be3..c6f80ef4 100644 --- a/src/openrouter/components/videogenerationusage.py +++ b/src/openrouter/components/videogenerationusage.py @@ -33,30 +33,25 @@ class VideoGenerationUsage(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["cost", "is_byok"] - nullable_fields = ["cost"] - null_default_fields = [] - + optional_fields = set(["cost", "is_byok"]) + nullable_fields = set(["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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/videomodel.py b/src/openrouter/components/videomodel.py index 04170e1a..b5760b38 100644 --- a/src/openrouter/components/videomodel.py +++ b/src/openrouter/components/videomodel.py @@ -9,11 +9,9 @@ UNSET_SENTINEL, UnrecognizedStr, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Dict, List, Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict SupportedAspectRatio = Union[ @@ -152,27 +150,19 @@ class VideoModel(BaseModel): seed: Nullable[bool] r"""Whether the model supports deterministic generation via seed parameter""" - supported_aspect_ratios: Nullable[ - List[Annotated[SupportedAspectRatio, PlainValidator(validate_open_enum(False))]] - ] + supported_aspect_ratios: Nullable[List[SupportedAspectRatio]] r"""Supported output aspect ratios""" supported_durations: Nullable[List[int]] r"""Supported video durations in seconds""" - supported_frame_images: Nullable[ - List[Annotated[SupportedFrameImage, PlainValidator(validate_open_enum(False))]] - ] + supported_frame_images: Nullable[List[SupportedFrameImage]] r"""Supported frame image types (e.g. first_frame, last_frame)""" - supported_resolutions: Nullable[ - List[Annotated[SupportedResolution, PlainValidator(validate_open_enum(False))]] - ] + supported_resolutions: Nullable[List[SupportedResolution]] r"""Supported output resolutions""" - supported_sizes: Nullable[ - List[Annotated[SupportedSize, PlainValidator(validate_open_enum(False))]] - ] + supported_sizes: Nullable[List[SupportedSize]] r"""Supported output sizes (width x height)""" description: Optional[str] = None @@ -186,40 +176,37 @@ class VideoModel(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["description", "hugging_face_id", "pricing_skus"] - nullable_fields = [ - "generate_audio", - "hugging_face_id", - "pricing_skus", - "seed", - "supported_aspect_ratios", - "supported_durations", - "supported_frame_images", - "supported_resolutions", - "supported_sizes", - ] - null_default_fields = [] - + optional_fields = set(["description", "hugging_face_id", "pricing_skus"]) + nullable_fields = set( + [ + "generate_audio", + "hugging_face_id", + "pricing_skus", + "seed", + "supported_aspect_ratios", + "supported_durations", + "supported_frame_images", + "supported_resolutions", + "supported_sizes", + ] + ) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/webfetchplugin.py b/src/openrouter/components/webfetchplugin.py index 51bb7ff7..b5b9fd4b 100644 --- a/src/openrouter/components/webfetchplugin.py +++ b/src/openrouter/components/webfetchplugin.py @@ -1,7 +1,8 @@ """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 pydantic import model_serializer from typing import List, Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -35,3 +36,21 @@ class WebFetchPlugin(BaseModel): max_uses: Optional[int] = None r"""Maximum number of web fetches per request. Once exceeded, the tool returns an error.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["allowed_domains", "blocked_domains", "max_content_tokens", "max_uses"] + ) + 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 diff --git a/src/openrouter/components/webfetchservertool.py b/src/openrouter/components/webfetchservertool.py index cbd34b30..41281b86 100644 --- a/src/openrouter/components/webfetchservertool.py +++ b/src/openrouter/components/webfetchservertool.py @@ -5,7 +5,8 @@ WebFetchServerToolConfig, WebFetchServerToolConfigTypedDict, ) -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -28,3 +29,19 @@ class WebFetchServerTool(BaseModel): parameters: Optional[WebFetchServerToolConfig] = None r"""Configuration for the openrouter:web_fetch server tool""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["parameters"]) + 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 diff --git a/src/openrouter/components/webfetchservertoolconfig.py b/src/openrouter/components/webfetchservertoolconfig.py index 9b8cc5ce..ba34507f 100644 --- a/src/openrouter/components/webfetchservertoolconfig.py +++ b/src/openrouter/components/webfetchservertoolconfig.py @@ -2,11 +2,10 @@ from __future__ import annotations from .webfetchengineenum import WebFetchEngineEnum -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class WebFetchServerToolConfigTypedDict(TypedDict): @@ -33,9 +32,7 @@ class WebFetchServerToolConfig(BaseModel): blocked_domains: Optional[List[str]] = None r"""Never fetch from these domains.""" - engine: Annotated[ - Optional[WebFetchEngineEnum], PlainValidator(validate_open_enum(False)) - ] = None + engine: Optional[WebFetchEngineEnum] = None r"""Which fetch engine to use. \"auto\" (default) uses native if the provider supports it, otherwise Exa. \"native\" forces the provider's built-in fetch. \"exa\" uses Exa Contents API. \"openrouter\" uses direct HTTP fetch. \"firecrawl\" uses Firecrawl scrape (requires BYOK). \"parallel\" uses the Parallel extract API.""" max_content_tokens: Optional[int] = None @@ -43,3 +40,27 @@ class WebFetchServerToolConfig(BaseModel): max_uses: Optional[int] = None r"""Maximum number of web fetches per request. Once exceeded, the tool returns an error.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "allowed_domains", + "blocked_domains", + "engine", + "max_content_tokens", + "max_uses", + ] + ) + 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 diff --git a/src/openrouter/components/websearchconfig.py b/src/openrouter/components/websearchconfig.py index 17326617..7478eed0 100644 --- a/src/openrouter/components/websearchconfig.py +++ b/src/openrouter/components/websearchconfig.py @@ -7,11 +7,10 @@ WebSearchUserLocationServerTool, WebSearchUserLocationServerToolTypedDict, ) -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class WebSearchConfigTypedDict(TypedDict): @@ -37,9 +36,7 @@ class WebSearchConfig(BaseModel): allowed_domains: Optional[List[str]] = None r"""Limit search results to these domains. Supported by Exa, Firecrawl, Parallel, Perplexity, and most native providers (Anthropic, OpenAI, xAI). Cannot be used with excluded_domains.""" - engine: Annotated[ - Optional[WebSearchEngineEnum], PlainValidator(validate_open_enum(False)) - ] = None + engine: Optional[WebSearchEngineEnum] = None r"""Which search engine to use. \"auto\" (default) uses native if the provider supports it, otherwise Exa. \"native\" forces the provider's built-in search. \"exa\" forces the Exa search API. \"firecrawl\" uses Firecrawl (requires BYOK). \"parallel\" uses the Parallel search API. \"perplexity\" uses the Perplexity Search API (raw ranked results).""" excluded_domains: Optional[List[str]] = None @@ -54,10 +51,35 @@ class WebSearchConfig(BaseModel): max_total_results: Optional[int] = None r"""Maximum total number of search results across all search calls in a single request. Once this limit is reached, the tool will stop returning new results. Useful for controlling cost and context size in agentic loops. Defaults to 50 when not specified.""" - search_context_size: Annotated[ - Optional[SearchQualityLevel], PlainValidator(validate_open_enum(False)) - ] = None + search_context_size: Optional[SearchQualityLevel] = None r"""How much context to retrieve per result. Applies to Exa, Parallel, and Perplexity engines; ignored with native provider search and Firecrawl. For Exa, pins a fixed per-result character cap (low=5,000, medium=15,000, high=30,000); when omitted, Exa picks an adaptive size per query and document (typically ~2,000–4,000 characters per result). For Parallel, controls the total characters across all results; when omitted, Parallel uses its own default size. For Perplexity, maps directly to the Search API's native search_context_size parameter. Overridden by `max_characters` when both are set.""" user_location: Optional[WebSearchUserLocationServerTool] = None r"""Approximate user location for location-biased results.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "allowed_domains", + "engine", + "excluded_domains", + "max_characters", + "max_results", + "max_total_results", + "search_context_size", + "user_location", + ] + ) + 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 diff --git a/src/openrouter/components/websearchdomainfilter.py b/src/openrouter/components/websearchdomainfilter.py index 64d3c5f2..20bd1b80 100644 --- a/src/openrouter/components/websearchdomainfilter.py +++ b/src/openrouter/components/websearchdomainfilter.py @@ -25,30 +25,25 @@ class WebSearchDomainFilter(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["allowed_domains", "excluded_domains"] - nullable_fields = ["allowed_domains", "excluded_domains"] - null_default_fields = [] - + optional_fields = set(["allowed_domains", "excluded_domains"]) + nullable_fields = set(["allowed_domains", "excluded_domains"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/websearchplugin.py b/src/openrouter/components/websearchplugin.py index 3c8e46d6..32403785 100644 --- a/src/openrouter/components/websearchplugin.py +++ b/src/openrouter/components/websearchplugin.py @@ -9,11 +9,9 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import List, Literal, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict WebSearchPluginID = Literal["web",] @@ -47,31 +45,26 @@ class UserLocation(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["city", "country", "region", "timezone"] - nullable_fields = ["city", "country", "region", "timezone"] - null_default_fields = [] - + optional_fields = set(["city", "country", "region", "timezone"]) + nullable_fields = set(["city", "country", "region", "timezone"]) 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) - - 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 + 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 + ) + + 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 @@ -99,9 +92,7 @@ class WebSearchPlugin(BaseModel): enabled: Optional[bool] = None r"""Set to false to disable the web-search plugin for this request. Defaults to true.""" - engine: Annotated[ - Optional[WebSearchEngine], PlainValidator(validate_open_enum(False)) - ] = None + engine: Optional[WebSearchEngine] = None r"""The search engine to use for web search.""" exclude_domains: Optional[List[str]] = None @@ -121,39 +112,36 @@ class WebSearchPlugin(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "enabled", - "engine", - "exclude_domains", - "include_domains", - "max_results", - "max_uses", - "search_prompt", - "user_location", - ] - nullable_fields = ["user_location"] - null_default_fields = [] - + optional_fields = set( + [ + "enabled", + "engine", + "exclude_domains", + "include_domains", + "max_results", + "max_uses", + "search_prompt", + "user_location", + ] + ) + nullable_fields = set(["user_location"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/websearchservertool.py b/src/openrouter/components/websearchservertool.py index bd0d3e0f..353136f1 100644 --- a/src/openrouter/components/websearchservertool.py +++ b/src/openrouter/components/websearchservertool.py @@ -12,11 +12,9 @@ UNSET, UNSET_SENTINEL, ) -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Literal, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict WebSearchServerToolType = Literal["web_search_2025_08_26",] @@ -42,9 +40,7 @@ class WebSearchServerTool(BaseModel): type: WebSearchServerToolType - engine: Annotated[ - Optional[WebSearchEngineEnum], PlainValidator(validate_open_enum(False)) - ] = None + engine: Optional[WebSearchEngineEnum] = None r"""Which search engine to use. \"auto\" (default) uses native if the provider supports it, otherwise Exa. \"native\" forces the provider's built-in search. \"exa\" forces the Exa search API. \"firecrawl\" uses Firecrawl (requires BYOK). \"parallel\" uses the Parallel search API. \"perplexity\" uses the Perplexity Search API (raw ranked results).""" filters: OptionalNullable[WebSearchDomainFilter] = UNSET @@ -52,9 +48,7 @@ class WebSearchServerTool(BaseModel): max_results: Optional[int] = None r"""Maximum number of search results to return per search call. Defaults to 5. Applies to Exa, Firecrawl, Parallel, and Perplexity engines; ignored with native provider search. Perplexity supports a maximum of 20; values above 20 are clamped.""" - search_context_size: Annotated[ - Optional[SearchContextSizeEnum], PlainValidator(validate_open_enum(False)) - ] = None + search_context_size: Optional[SearchContextSizeEnum] = None r"""Size of the search context for web search tools""" user_location: OptionalNullable[WebSearchUserLocation] = UNSET @@ -62,36 +56,27 @@ class WebSearchServerTool(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "engine", - "filters", - "max_results", - "search_context_size", - "user_location", - ] - nullable_fields = ["filters", "user_location"] - null_default_fields = [] - + optional_fields = set( + ["engine", "filters", "max_results", "search_context_size", "user_location"] + ) + nullable_fields = set(["filters", "user_location"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/websearchservertool_openrouter.py b/src/openrouter/components/websearchservertool_openrouter.py index c5717ed5..cac816de 100644 --- a/src/openrouter/components/websearchservertool_openrouter.py +++ b/src/openrouter/components/websearchservertool_openrouter.py @@ -5,7 +5,8 @@ WebSearchServerToolConfig, WebSearchServerToolConfigTypedDict, ) -from openrouter.types import BaseModel +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Literal, Optional from typing_extensions import NotRequired, TypedDict @@ -28,3 +29,19 @@ class WebSearchServerToolOpenRouter(BaseModel): parameters: Optional[WebSearchServerToolConfig] = None r"""Configuration for the openrouter:web_search server tool""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["parameters"]) + 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 diff --git a/src/openrouter/components/websearchservertoolconfig.py b/src/openrouter/components/websearchservertoolconfig.py index f48839e6..8928f499 100644 --- a/src/openrouter/components/websearchservertoolconfig.py +++ b/src/openrouter/components/websearchservertoolconfig.py @@ -7,11 +7,10 @@ WebSearchUserLocationServerTool, WebSearchUserLocationServerToolTypedDict, ) -from openrouter.types import BaseModel -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator +from openrouter.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict +from typing_extensions import NotRequired, TypedDict class WebSearchServerToolConfigTypedDict(TypedDict): @@ -41,9 +40,7 @@ class WebSearchServerToolConfig(BaseModel): allowed_domains: Optional[List[str]] = None r"""Limit search results to these domains. Supported by Exa, Firecrawl, Parallel, Perplexity, and most native providers (Anthropic, OpenAI, xAI). Cannot be used with excluded_domains.""" - engine: Annotated[ - Optional[WebSearchEngineEnum], PlainValidator(validate_open_enum(False)) - ] = None + engine: Optional[WebSearchEngineEnum] = None r"""Which search engine to use. \"auto\" (default) uses native if the provider supports it, otherwise Exa. \"native\" forces the provider's built-in search. \"exa\" forces the Exa search API. \"firecrawl\" uses Firecrawl (requires BYOK). \"parallel\" uses the Parallel search API. \"perplexity\" uses the Perplexity Search API (raw ranked results).""" excluded_domains: Optional[List[str]] = None @@ -58,10 +55,35 @@ class WebSearchServerToolConfig(BaseModel): max_total_results: Optional[int] = None r"""Maximum total number of search results across all search calls in a single request. Once this limit is reached, the tool will stop returning new results. Useful for controlling cost and context size in agentic loops. Defaults to 50 when not specified.""" - search_context_size: Annotated[ - Optional[SearchQualityLevel], PlainValidator(validate_open_enum(False)) - ] = None + search_context_size: Optional[SearchQualityLevel] = None r"""How much context to retrieve per result. Applies to Exa, Parallel, and Perplexity engines; ignored with native provider search and Firecrawl. For Exa, pins a fixed per-result character cap (low=5,000, medium=15,000, high=30,000); when omitted, Exa picks an adaptive size per query and document (typically ~2,000–4,000 characters per result). For Parallel, controls the total characters across all results; when omitted, Parallel uses its own default size. For Perplexity, maps directly to the Search API's native search_context_size parameter. Overridden by `max_characters` when both are set.""" user_location: Optional[WebSearchUserLocationServerTool] = None r"""Approximate user location for location-biased results.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "allowed_domains", + "engine", + "excluded_domains", + "max_characters", + "max_results", + "max_total_results", + "search_context_size", + "user_location", + ] + ) + 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 diff --git a/src/openrouter/components/websearchuserlocation.py b/src/openrouter/components/websearchuserlocation.py index bdb5b03c..c2eacfc6 100644 --- a/src/openrouter/components/websearchuserlocation.py +++ b/src/openrouter/components/websearchuserlocation.py @@ -41,30 +41,25 @@ class WebSearchUserLocation(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["city", "country", "region", "timezone", "type"] - nullable_fields = ["city", "country", "region", "timezone"] - null_default_fields = [] - + optional_fields = set(["city", "country", "region", "timezone", "type"]) + nullable_fields = set(["city", "country", "region", "timezone"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/websearchuserlocationservertool.py b/src/openrouter/components/websearchuserlocationservertool.py index bf4bb709..fda00ebc 100644 --- a/src/openrouter/components/websearchuserlocationservertool.py +++ b/src/openrouter/components/websearchuserlocationservertool.py @@ -41,30 +41,25 @@ class WebSearchUserLocationServerTool(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["city", "country", "region", "timezone", "type"] - nullable_fields = ["city", "country", "region", "timezone"] - null_default_fields = [] - + optional_fields = set(["city", "country", "region", "timezone", "type"]) + nullable_fields = set(["city", "country", "region", "timezone"]) 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/components/workspace.py b/src/openrouter/components/workspace.py index 583db0c5..14a3bf11 100644 --- a/src/openrouter/components/workspace.py +++ b/src/openrouter/components/workspace.py @@ -88,38 +88,14 @@ class Workspace(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = [ - "created_by", - "default_image_model", - "default_provider_sort", - "default_text_model", - "description", - "io_logging_api_key_ids", - "updated_at", - ] - 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 diff --git a/src/openrouter/components/workspacebudget.py b/src/openrouter/components/workspacebudget.py index 4f7d4793..f5b0bc94 100644 --- a/src/openrouter/components/workspacebudget.py +++ b/src/openrouter/components/workspacebudget.py @@ -2,11 +2,9 @@ from __future__ import annotations from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL, UnrecognizedStr -from openrouter.utils import validate_open_enum from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator from typing import Literal, Union -from typing_extensions import Annotated, TypedDict +from typing_extensions import TypedDict ResetInterval = Union[ @@ -45,9 +43,7 @@ class WorkspaceBudget(BaseModel): limit_usd: float r"""Spending limit in USD for this interval""" - reset_interval: Annotated[ - Nullable[ResetInterval], PlainValidator(validate_open_enum(False)) - ] + reset_interval: Nullable[ResetInterval] r"""Interval at which spend resets. Null means a lifetime (one-time) budget.""" updated_at: str @@ -58,30 +54,14 @@ class WorkspaceBudget(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["reset_interval"] - 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 diff --git a/src/openrouter/components/workspacemember.py b/src/openrouter/components/workspacemember.py index 9ece8780..ad78361d 100644 --- a/src/openrouter/components/workspacemember.py +++ b/src/openrouter/components/workspacemember.py @@ -2,10 +2,8 @@ from __future__ import annotations from openrouter.types import BaseModel, UnrecognizedStr -from openrouter.utils import validate_open_enum -from pydantic.functional_validators import PlainValidator from typing import Literal, Union -from typing_extensions import Annotated, TypedDict +from typing_extensions import TypedDict WorkspaceMemberRole = Union[ @@ -38,7 +36,7 @@ class WorkspaceMember(BaseModel): id: str r"""Unique identifier for the workspace membership""" - role: Annotated[WorkspaceMemberRole, PlainValidator(validate_open_enum(False))] + role: WorkspaceMemberRole r"""Role of the member in the workspace""" user_id: str diff --git a/src/openrouter/credits.py b/src/openrouter/credits.py index 0a376fb8..791cdeba 100644 --- a/src/openrouter/credits.py +++ b/src/openrouter/credits.py @@ -98,9 +98,11 @@ def get_credits( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Credits"], + extensions=None, ), request=req, - error_status_codes=["401", "403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -221,9 +223,11 @@ async def get_credits_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Credits"], + extensions=None, ), request=req, - error_status_codes=["401", "403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/openrouter/datasets.py b/src/openrouter/datasets.py index c4839125..04200589 100644 --- a/src/openrouter/datasets.py +++ b/src/openrouter/datasets.py @@ -142,24 +142,26 @@ def get_app_rankings( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Datasets"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) def next_func() -> Optional[operations.GetAppRankingsResponse]: body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]]) - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return None results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return None - limit = request.limit if not request.limit is None else 50 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 50 + if len(results[0]) < limit_: return None next_offset = offset + len(results[0]) @@ -175,6 +177,9 @@ def next_func() -> Optional[operations.GetAppRankingsResponse]: limit=limit, offset=next_offset, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -347,9 +352,11 @@ async def get_app_rankings_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Datasets"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -359,15 +366,15 @@ def next_func() -> Awaitable[Optional[operations.GetAppRankingsResponse]]: async def empty_result(): return None - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return empty_result() results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return empty_result() - limit = request.limit if not request.limit is None else 50 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 50 + if len(results[0]) < limit_: return empty_result() next_offset = offset + len(results[0]) @@ -383,6 +390,9 @@ async def empty_result(): limit=limit, offset=next_offset, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -536,9 +546,11 @@ def get_rankings_daily( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Datasets"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -688,9 +700,11 @@ async def get_rankings_daily_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Datasets"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/openrouter/embeddings.py b/src/openrouter/embeddings.py index d8426527..9f0b5ce3 100644 --- a/src/openrouter/embeddings.py +++ b/src/openrouter/embeddings.py @@ -37,8 +37,8 @@ def generate( user: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, accept_header_override: Optional[GenerateAcceptEnum] = None, + timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, ) -> operations.CreateEmbeddingsResponse: r"""Submit an embedding request @@ -144,22 +144,11 @@ def generate( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Embeddings"], + extensions=None, ), request=req, - error_status_codes=[ - "400", - "401", - "402", - "404", - "429", - "4XX", - "500", - "502", - "503", - "524", - "529", - "5XX", - ], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -252,8 +241,8 @@ async def generate_async( user: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, accept_header_override: Optional[GenerateAcceptEnum] = None, + timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, ) -> operations.CreateEmbeddingsResponse: r"""Submit an embedding request @@ -359,22 +348,11 @@ async def generate_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Embeddings"], + extensions=None, ), request=req, - error_status_codes=[ - "400", - "401", - "402", - "404", - "429", - "4XX", - "500", - "502", - "503", - "524", - "529", - "5XX", - ], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -534,9 +512,11 @@ def list_models( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Embeddings"], + extensions=None, ), request=req, - error_status_codes=["400", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -652,9 +632,11 @@ async def list_models_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Embeddings"], + extensions=None, ), request=req, - error_status_codes=["400", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/openrouter/endpoints.py b/src/openrouter/endpoints.py index 871bd5b1..f9537f6f 100644 --- a/src/openrouter/endpoints.py +++ b/src/openrouter/endpoints.py @@ -96,9 +96,11 @@ def list_zdr_endpoints( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Endpoints"], + extensions=None, ), request=req, - error_status_codes=["4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -209,9 +211,11 @@ async def list_zdr_endpoints_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Endpoints"], + extensions=None, ), request=req, - error_status_codes=["4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -328,9 +332,11 @@ def list( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Endpoints"], + extensions=None, ), request=req, - error_status_codes=["404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -450,9 +456,11 @@ async def list_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Endpoints"], + extensions=None, ), request=req, - error_status_codes=["404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/openrouter/errors/__init__.py b/src/openrouter/errors/__init__.py index dc5ef68c..cfe7cbb6 100644 --- a/src/openrouter/errors/__init__.py +++ b/src/openrouter/errors/__init__.py @@ -1,10 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from .openroutererror import OpenRouterError -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 .badgatewayresponse_error import ( @@ -139,39 +138,11 @@ } -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) diff --git a/src/openrouter/files.py b/src/openrouter/files.py index 6af040bb..0c46d087 100644 --- a/src/openrouter/files.py +++ b/src/openrouter/files.py @@ -109,9 +109,11 @@ def list( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Files"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -138,6 +140,9 @@ def next_func() -> Optional[operations.ListFilesResponse]: cursor=next_cursor, workspace_id=workspace_id, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -274,9 +279,11 @@ async def list_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Files"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -306,6 +313,9 @@ async def empty_result(): cursor=next_cursor, workspace_id=workspace_id, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -448,9 +458,11 @@ def upload( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Files"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "413", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -601,9 +613,11 @@ async def upload_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Files"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "413", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -745,9 +759,11 @@ def delete( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Files"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -879,9 +895,11 @@ async def delete_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Files"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1013,9 +1031,11 @@ def retrieve( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Files"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1147,9 +1167,11 @@ async def retrieve_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Files"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1281,9 +1303,11 @@ def download( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Files"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), stream=True, retry_config=retry_config, ) @@ -1435,9 +1459,11 @@ async def download_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Files"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), stream=True, retry_config=retry_config, ) diff --git a/src/openrouter/generations.py b/src/openrouter/generations.py index 409e169f..cecdd21a 100644 --- a/src/openrouter/generations.py +++ b/src/openrouter/generations.py @@ -99,20 +99,11 @@ def get_generation( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Generations"], + extensions=None, ), request=req, - error_status_codes=[ - "401", - "402", - "404", - "429", - "4XX", - "500", - "502", - "524", - "529", - "5XX", - ], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -259,20 +250,11 @@ async def get_generation_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Generations"], + extensions=None, ), request=req, - error_status_codes=[ - "401", - "402", - "404", - "429", - "4XX", - "500", - "502", - "524", - "529", - "5XX", - ], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -419,20 +401,11 @@ def list_generation_content( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Generations"], + extensions=None, ), request=req, - error_status_codes=[ - "401", - "403", - "404", - "429", - "4XX", - "500", - "502", - "524", - "529", - "5XX", - ], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -581,20 +554,11 @@ async def list_generation_content_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Generations"], + extensions=None, ), request=req, - error_status_codes=[ - "401", - "403", - "404", - "429", - "4XX", - "500", - "502", - "524", - "529", - "5XX", - ], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/openrouter/guardrails.py b/src/openrouter/guardrails.py index 50249a34..4add1c7f 100644 --- a/src/openrouter/guardrails.py +++ b/src/openrouter/guardrails.py @@ -7,7 +7,7 @@ from openrouter.types import OptionalNullable, UNSET from openrouter.utils import get_security_from_env from openrouter.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Awaitable, Dict, List, Mapping, Optional, Union +from typing import Any, Awaitable, Dict, Iterable, List, Mapping, Optional, Union class Guardrails(BaseSDK): @@ -108,24 +108,26 @@ def list( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["401", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) def next_func() -> Optional[operations.ListGuardrailsResponse]: body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]]) - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return None results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return None - limit = request.limit if not request.limit is None else 0 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 0 + if len(results[0]) < limit_: return None next_offset = offset + len(results[0]) @@ -137,6 +139,9 @@ def next_func() -> Optional[operations.ListGuardrailsResponse]: limit=limit, workspace_id=workspace_id, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -265,9 +270,11 @@ async def list_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["401", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -277,15 +284,15 @@ def next_func() -> Awaitable[Optional[operations.ListGuardrailsResponse]]: async def empty_result(): return None - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return empty_result() results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return empty_result() - limit = request.limit if not request.limit is None else 0 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 0 + if len(results[0]) < limit_: return empty_result() next_offset = offset + len(results[0]) @@ -297,6 +304,9 @@ async def empty_result(): limit=limit, workspace_id=workspace_id, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -337,18 +347,18 @@ def create( http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, - allowed_models: OptionalNullable[List[str]] = UNSET, - allowed_providers: OptionalNullable[List[str]] = UNSET, + allowed_models: OptionalNullable[Iterable[str]] = UNSET, + allowed_providers: OptionalNullable[Iterable[str]] = UNSET, content_filter_builtins: OptionalNullable[ Union[ - List[components.ContentFilterBuiltinEntryInput], - List[components.ContentFilterBuiltinEntryInputTypedDict], + Iterable[components.ContentFilterBuiltinEntryInput], + Iterable[components.ContentFilterBuiltinEntryInputTypedDict], ] ] = UNSET, content_filters: OptionalNullable[ Union[ - List[components.ContentFilterEntry], - List[components.ContentFilterEntryTypedDict], + Iterable[components.ContentFilterEntry], + Iterable[components.ContentFilterEntryTypedDict], ] ] = UNSET, description: OptionalNullable[str] = UNSET, @@ -357,8 +367,8 @@ def create( enforce_zdr_google: OptionalNullable[bool] = UNSET, enforce_zdr_openai: OptionalNullable[bool] = UNSET, enforce_zdr_other: OptionalNullable[bool] = UNSET, - ignored_models: OptionalNullable[List[str]] = UNSET, - ignored_providers: OptionalNullable[List[str]] = UNSET, + ignored_models: OptionalNullable[Iterable[str]] = UNSET, + ignored_providers: OptionalNullable[Iterable[str]] = UNSET, limit_usd: OptionalNullable[float] = UNSET, reset_interval: OptionalNullable[components.GuardrailInterval] = UNSET, workspace_id: Optional[str] = None, @@ -414,8 +424,12 @@ def create( x_open_router_title=x_open_router_title, x_open_router_categories=x_open_router_categories, create_guardrail_request=components.CreateGuardrailRequest( - allowed_models=allowed_models, - allowed_providers=allowed_providers, + allowed_models=utils.unmarshal( + allowed_models, OptionalNullable[List[str]] + ), + allowed_providers=utils.unmarshal( + allowed_providers, OptionalNullable[List[str]] + ), content_filter_builtins=utils.get_pydantic_model( content_filter_builtins, OptionalNullable[List[components.ContentFilterBuiltinEntryInput]], @@ -430,8 +444,12 @@ def create( enforce_zdr_google=enforce_zdr_google, enforce_zdr_openai=enforce_zdr_openai, enforce_zdr_other=enforce_zdr_other, - ignored_models=ignored_models, - ignored_providers=ignored_providers, + ignored_models=utils.unmarshal( + ignored_models, OptionalNullable[List[str]] + ), + ignored_providers=utils.unmarshal( + ignored_providers, OptionalNullable[List[str]] + ), limit_usd=limit_usd, name=name, reset_interval=reset_interval, @@ -489,9 +507,11 @@ def create( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -538,18 +558,18 @@ async def create_async( http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, - allowed_models: OptionalNullable[List[str]] = UNSET, - allowed_providers: OptionalNullable[List[str]] = UNSET, + allowed_models: OptionalNullable[Iterable[str]] = UNSET, + allowed_providers: OptionalNullable[Iterable[str]] = UNSET, content_filter_builtins: OptionalNullable[ Union[ - List[components.ContentFilterBuiltinEntryInput], - List[components.ContentFilterBuiltinEntryInputTypedDict], + Iterable[components.ContentFilterBuiltinEntryInput], + Iterable[components.ContentFilterBuiltinEntryInputTypedDict], ] ] = UNSET, content_filters: OptionalNullable[ Union[ - List[components.ContentFilterEntry], - List[components.ContentFilterEntryTypedDict], + Iterable[components.ContentFilterEntry], + Iterable[components.ContentFilterEntryTypedDict], ] ] = UNSET, description: OptionalNullable[str] = UNSET, @@ -558,8 +578,8 @@ async def create_async( enforce_zdr_google: OptionalNullable[bool] = UNSET, enforce_zdr_openai: OptionalNullable[bool] = UNSET, enforce_zdr_other: OptionalNullable[bool] = UNSET, - ignored_models: OptionalNullable[List[str]] = UNSET, - ignored_providers: OptionalNullable[List[str]] = UNSET, + ignored_models: OptionalNullable[Iterable[str]] = UNSET, + ignored_providers: OptionalNullable[Iterable[str]] = UNSET, limit_usd: OptionalNullable[float] = UNSET, reset_interval: OptionalNullable[components.GuardrailInterval] = UNSET, workspace_id: Optional[str] = None, @@ -615,8 +635,12 @@ async def create_async( x_open_router_title=x_open_router_title, x_open_router_categories=x_open_router_categories, create_guardrail_request=components.CreateGuardrailRequest( - allowed_models=allowed_models, - allowed_providers=allowed_providers, + allowed_models=utils.unmarshal( + allowed_models, OptionalNullable[List[str]] + ), + allowed_providers=utils.unmarshal( + allowed_providers, OptionalNullable[List[str]] + ), content_filter_builtins=utils.get_pydantic_model( content_filter_builtins, OptionalNullable[List[components.ContentFilterBuiltinEntryInput]], @@ -631,8 +655,12 @@ async def create_async( enforce_zdr_google=enforce_zdr_google, enforce_zdr_openai=enforce_zdr_openai, enforce_zdr_other=enforce_zdr_other, - ignored_models=ignored_models, - ignored_providers=ignored_providers, + ignored_models=utils.unmarshal( + ignored_models, OptionalNullable[List[str]] + ), + ignored_providers=utils.unmarshal( + ignored_providers, OptionalNullable[List[str]] + ), limit_usd=limit_usd, name=name, reset_interval=reset_interval, @@ -690,9 +718,11 @@ async def create_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -821,9 +851,11 @@ def delete( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -947,9 +979,11 @@ async def delete_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1073,9 +1107,11 @@ def get( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1199,9 +1235,11 @@ async def get_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1243,18 +1281,18 @@ def update( http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, - allowed_models: OptionalNullable[List[str]] = UNSET, - allowed_providers: OptionalNullable[List[str]] = UNSET, + allowed_models: OptionalNullable[Iterable[str]] = UNSET, + allowed_providers: OptionalNullable[Iterable[str]] = UNSET, content_filter_builtins: OptionalNullable[ Union[ - List[components.ContentFilterBuiltinEntryInput], - List[components.ContentFilterBuiltinEntryInputTypedDict], + Iterable[components.ContentFilterBuiltinEntryInput], + Iterable[components.ContentFilterBuiltinEntryInputTypedDict], ] ] = UNSET, content_filters: OptionalNullable[ Union[ - List[components.ContentFilterEntry], - List[components.ContentFilterEntryTypedDict], + Iterable[components.ContentFilterEntry], + Iterable[components.ContentFilterEntryTypedDict], ] ] = UNSET, description: OptionalNullable[str] = UNSET, @@ -1263,8 +1301,8 @@ def update( enforce_zdr_google: OptionalNullable[bool] = UNSET, enforce_zdr_openai: OptionalNullable[bool] = UNSET, enforce_zdr_other: OptionalNullable[bool] = UNSET, - ignored_models: OptionalNullable[List[str]] = UNSET, - ignored_providers: OptionalNullable[List[str]] = UNSET, + ignored_models: OptionalNullable[Iterable[str]] = UNSET, + ignored_providers: OptionalNullable[Iterable[str]] = UNSET, limit_usd: OptionalNullable[float] = UNSET, name: Optional[str] = None, reset_interval: OptionalNullable[components.GuardrailInterval] = UNSET, @@ -1321,8 +1359,12 @@ def update( x_open_router_categories=x_open_router_categories, id=id, update_guardrail_request=components.UpdateGuardrailRequest( - allowed_models=allowed_models, - allowed_providers=allowed_providers, + allowed_models=utils.unmarshal( + allowed_models, OptionalNullable[List[str]] + ), + allowed_providers=utils.unmarshal( + allowed_providers, OptionalNullable[List[str]] + ), content_filter_builtins=utils.get_pydantic_model( content_filter_builtins, OptionalNullable[List[components.ContentFilterBuiltinEntryInput]], @@ -1337,8 +1379,12 @@ def update( enforce_zdr_google=enforce_zdr_google, enforce_zdr_openai=enforce_zdr_openai, enforce_zdr_other=enforce_zdr_other, - ignored_models=ignored_models, - ignored_providers=ignored_providers, + ignored_models=utils.unmarshal( + ignored_models, OptionalNullable[List[str]] + ), + ignored_providers=utils.unmarshal( + ignored_providers, OptionalNullable[List[str]] + ), limit_usd=limit_usd, name=name, reset_interval=reset_interval, @@ -1395,9 +1441,11 @@ def update( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1444,18 +1492,18 @@ async def update_async( http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, - allowed_models: OptionalNullable[List[str]] = UNSET, - allowed_providers: OptionalNullable[List[str]] = UNSET, + allowed_models: OptionalNullable[Iterable[str]] = UNSET, + allowed_providers: OptionalNullable[Iterable[str]] = UNSET, content_filter_builtins: OptionalNullable[ Union[ - List[components.ContentFilterBuiltinEntryInput], - List[components.ContentFilterBuiltinEntryInputTypedDict], + Iterable[components.ContentFilterBuiltinEntryInput], + Iterable[components.ContentFilterBuiltinEntryInputTypedDict], ] ] = UNSET, content_filters: OptionalNullable[ Union[ - List[components.ContentFilterEntry], - List[components.ContentFilterEntryTypedDict], + Iterable[components.ContentFilterEntry], + Iterable[components.ContentFilterEntryTypedDict], ] ] = UNSET, description: OptionalNullable[str] = UNSET, @@ -1464,8 +1512,8 @@ async def update_async( enforce_zdr_google: OptionalNullable[bool] = UNSET, enforce_zdr_openai: OptionalNullable[bool] = UNSET, enforce_zdr_other: OptionalNullable[bool] = UNSET, - ignored_models: OptionalNullable[List[str]] = UNSET, - ignored_providers: OptionalNullable[List[str]] = UNSET, + ignored_models: OptionalNullable[Iterable[str]] = UNSET, + ignored_providers: OptionalNullable[Iterable[str]] = UNSET, limit_usd: OptionalNullable[float] = UNSET, name: Optional[str] = None, reset_interval: OptionalNullable[components.GuardrailInterval] = UNSET, @@ -1522,8 +1570,12 @@ async def update_async( x_open_router_categories=x_open_router_categories, id=id, update_guardrail_request=components.UpdateGuardrailRequest( - allowed_models=allowed_models, - allowed_providers=allowed_providers, + allowed_models=utils.unmarshal( + allowed_models, OptionalNullable[List[str]] + ), + allowed_providers=utils.unmarshal( + allowed_providers, OptionalNullable[List[str]] + ), content_filter_builtins=utils.get_pydantic_model( content_filter_builtins, OptionalNullable[List[components.ContentFilterBuiltinEntryInput]], @@ -1538,8 +1590,12 @@ async def update_async( enforce_zdr_google=enforce_zdr_google, enforce_zdr_openai=enforce_zdr_openai, enforce_zdr_other=enforce_zdr_other, - ignored_models=ignored_models, - ignored_providers=ignored_providers, + ignored_models=utils.unmarshal( + ignored_models, OptionalNullable[List[str]] + ), + ignored_providers=utils.unmarshal( + ignored_providers, OptionalNullable[List[str]] + ), limit_usd=limit_usd, name=name, reset_interval=reset_interval, @@ -1596,9 +1652,11 @@ async def update_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1733,24 +1791,26 @@ def list_guardrail_key_assignments( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) def next_func() -> Optional[operations.ListGuardrailKeyAssignmentsResponse]: body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]]) - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return None results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return None - limit = request.limit if not request.limit is None else 0 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 0 + if len(results[0]) < limit_: return None next_offset = offset + len(results[0]) @@ -1762,6 +1822,9 @@ def next_func() -> Optional[operations.ListGuardrailKeyAssignmentsResponse]: offset=next_offset, limit=limit, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -1895,9 +1958,11 @@ async def list_guardrail_key_assignments_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1909,15 +1974,15 @@ def next_func() -> ( async def empty_result(): return None - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return empty_result() results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return empty_result() - limit = request.limit if not request.limit is None else 0 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 0 + if len(results[0]) < limit_: return empty_result() next_offset = offset + len(results[0]) @@ -1929,6 +1994,9 @@ async def empty_result(): offset=next_offset, limit=limit, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -1971,7 +2039,7 @@ def bulk_assign_keys( self, *, id: str, - key_hashes: List[str], + key_hashes: Iterable[str], http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, @@ -2014,7 +2082,7 @@ def bulk_assign_keys( x_open_router_categories=x_open_router_categories, id=id, bulk_assign_keys_request=components.BulkAssignKeysRequest( - key_hashes=key_hashes, + key_hashes=utils.unmarshal(key_hashes, List[str]), ), ) @@ -2068,9 +2136,11 @@ def bulk_assign_keys( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2114,7 +2184,7 @@ async def bulk_assign_keys_async( self, *, id: str, - key_hashes: List[str], + key_hashes: Iterable[str], http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, @@ -2157,7 +2227,7 @@ async def bulk_assign_keys_async( x_open_router_categories=x_open_router_categories, id=id, bulk_assign_keys_request=components.BulkAssignKeysRequest( - key_hashes=key_hashes, + key_hashes=utils.unmarshal(key_hashes, List[str]), ), ) @@ -2211,9 +2281,11 @@ async def bulk_assign_keys_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2257,7 +2329,7 @@ def bulk_unassign_keys( self, *, id: str, - key_hashes: List[str], + key_hashes: Iterable[str], http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, @@ -2300,7 +2372,7 @@ def bulk_unassign_keys( x_open_router_categories=x_open_router_categories, id=id, bulk_unassign_keys_request=components.BulkUnassignKeysRequest( - key_hashes=key_hashes, + key_hashes=utils.unmarshal(key_hashes, List[str]), ), ) @@ -2354,9 +2426,11 @@ def bulk_unassign_keys( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2402,7 +2476,7 @@ async def bulk_unassign_keys_async( self, *, id: str, - key_hashes: List[str], + key_hashes: Iterable[str], http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, @@ -2445,7 +2519,7 @@ async def bulk_unassign_keys_async( x_open_router_categories=x_open_router_categories, id=id, bulk_unassign_keys_request=components.BulkUnassignKeysRequest( - key_hashes=key_hashes, + key_hashes=utils.unmarshal(key_hashes, List[str]), ), ) @@ -2499,9 +2573,11 @@ async def bulk_unassign_keys_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2638,24 +2714,26 @@ def list_guardrail_member_assignments( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) def next_func() -> Optional[operations.ListGuardrailMemberAssignmentsResponse]: body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]]) - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return None results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return None - limit = request.limit if not request.limit is None else 0 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 0 + if len(results[0]) < limit_: return None next_offset = offset + len(results[0]) @@ -2667,6 +2745,9 @@ def next_func() -> Optional[operations.ListGuardrailMemberAssignmentsResponse]: offset=next_offset, limit=limit, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -2800,9 +2881,11 @@ async def list_guardrail_member_assignments_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2814,15 +2897,15 @@ def next_func() -> ( async def empty_result(): return None - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return empty_result() results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return empty_result() - limit = request.limit if not request.limit is None else 0 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 0 + if len(results[0]) < limit_: return empty_result() next_offset = offset + len(results[0]) @@ -2834,6 +2917,9 @@ async def empty_result(): offset=next_offset, limit=limit, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -2876,7 +2962,7 @@ def bulk_assign_members( self, *, id: str, - member_user_ids: List[str], + member_user_ids: Iterable[str], http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, @@ -2919,7 +3005,7 @@ def bulk_assign_members( x_open_router_categories=x_open_router_categories, id=id, bulk_assign_members_request=components.BulkAssignMembersRequest( - member_user_ids=member_user_ids, + member_user_ids=utils.unmarshal(member_user_ids, List[str]), ), ) @@ -2973,9 +3059,11 @@ def bulk_assign_members( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -3021,7 +3109,7 @@ async def bulk_assign_members_async( self, *, id: str, - member_user_ids: List[str], + member_user_ids: Iterable[str], http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, @@ -3064,7 +3152,7 @@ async def bulk_assign_members_async( x_open_router_categories=x_open_router_categories, id=id, bulk_assign_members_request=components.BulkAssignMembersRequest( - member_user_ids=member_user_ids, + member_user_ids=utils.unmarshal(member_user_ids, List[str]), ), ) @@ -3118,9 +3206,11 @@ async def bulk_assign_members_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -3166,7 +3256,7 @@ def bulk_unassign_members( self, *, id: str, - member_user_ids: List[str], + member_user_ids: Iterable[str], http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, @@ -3209,7 +3299,7 @@ def bulk_unassign_members( x_open_router_categories=x_open_router_categories, id=id, bulk_unassign_members_request=components.BulkUnassignMembersRequest( - member_user_ids=member_user_ids, + member_user_ids=utils.unmarshal(member_user_ids, List[str]), ), ) @@ -3263,9 +3353,11 @@ def bulk_unassign_members( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -3311,7 +3403,7 @@ async def bulk_unassign_members_async( self, *, id: str, - member_user_ids: List[str], + member_user_ids: Iterable[str], http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, @@ -3354,7 +3446,7 @@ async def bulk_unassign_members_async( x_open_router_categories=x_open_router_categories, id=id, bulk_unassign_members_request=components.BulkUnassignMembersRequest( - member_user_ids=member_user_ids, + member_user_ids=utils.unmarshal(member_user_ids, List[str]), ), ) @@ -3408,9 +3500,11 @@ async def bulk_unassign_members_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -3544,24 +3638,26 @@ def list_key_assignments( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["401", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) def next_func() -> Optional[operations.ListKeyAssignmentsResponse]: body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]]) - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return None results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return None - limit = request.limit if not request.limit is None else 0 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 0 + if len(results[0]) < limit_: return None next_offset = offset + len(results[0]) @@ -3572,6 +3668,9 @@ def next_func() -> Optional[operations.ListKeyAssignmentsResponse]: offset=next_offset, limit=limit, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -3697,9 +3796,11 @@ async def list_key_assignments_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["401", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -3709,15 +3810,15 @@ def next_func() -> Awaitable[Optional[operations.ListKeyAssignmentsResponse]]: async def empty_result(): return None - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return empty_result() results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return empty_result() - limit = request.limit if not request.limit is None else 0 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 0 + if len(results[0]) < limit_: return empty_result() next_offset = offset + len(results[0]) @@ -3728,6 +3829,9 @@ async def empty_result(): offset=next_offset, limit=limit, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -3853,24 +3957,26 @@ def list_member_assignments( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["401", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) def next_func() -> Optional[operations.ListMemberAssignmentsResponse]: body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]]) - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return None results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return None - limit = request.limit if not request.limit is None else 0 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 0 + if len(results[0]) < limit_: return None next_offset = offset + len(results[0]) @@ -3881,6 +3987,9 @@ def next_func() -> Optional[operations.ListMemberAssignmentsResponse]: offset=next_offset, limit=limit, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -4006,9 +4115,11 @@ async def list_member_assignments_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Guardrails"], + extensions=None, ), request=req, - error_status_codes=["401", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -4020,15 +4131,15 @@ def next_func() -> ( async def empty_result(): return None - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return empty_result() results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return empty_result() - limit = request.limit if not request.limit is None else 0 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 0 + if len(results[0]) < limit_: return empty_result() next_offset = offset + len(results[0]) @@ -4039,6 +4150,9 @@ async def empty_result(): offset=next_offset, limit=limit, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None diff --git a/src/openrouter/images.py b/src/openrouter/images.py index e96036fe..ebdec2df 100644 --- a/src/openrouter/images.py +++ b/src/openrouter/images.py @@ -1,18 +1,12 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from .basesdk import BaseSDK -from enum import Enum from openrouter import components, errors, operations, utils from openrouter._hooks import HookContext from openrouter.types import OptionalNullable, UNSET from openrouter.utils import eventstreaming, get_security_from_env from openrouter.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, List, Literal, Mapping, Optional, Union, overload - - -class GenerateAcceptEnum(str, Enum): - APPLICATION_JSON = "application/json" - TEXT_EVENT_STREAM = "text/event-stream" +from typing import Any, Iterable, List, Literal, Mapping, Optional, Union, overload class Images(BaseSDK): @@ -31,8 +25,8 @@ def generate( background: Optional[components.ImageGenerationRequestBackground] = None, input_references: Optional[ Union[ - List[components.ContentPartImage], - List[components.ContentPartImageTypedDict], + Iterable[components.ContentPartImage], + Iterable[components.ContentPartImageTypedDict], ] ] = None, n: Optional[int] = None, @@ -82,7 +76,6 @@ def generate( :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method :param http_headers: Additional headers to set or replace on requests. """ @@ -99,8 +92,8 @@ def generate( background: Optional[components.ImageGenerationRequestBackground] = None, input_references: Optional[ Union[ - List[components.ContentPartImage], - List[components.ContentPartImageTypedDict], + Iterable[components.ContentPartImage], + Iterable[components.ContentPartImageTypedDict], ] ] = None, n: Optional[int] = None, @@ -150,7 +143,76 @@ def generate( :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method + :param http_headers: Additional headers to set or replace on requests. + """ + + @overload + def generate( + self, + *, + model: str, + prompt: str, + http_referer: Optional[str] = None, + x_open_router_title: Optional[str] = None, + x_open_router_categories: Optional[str] = None, + aspect_ratio: Optional[components.ImageGenerationRequestAspectRatio] = None, + background: Optional[components.ImageGenerationRequestBackground] = None, + input_references: Optional[ + Union[ + Iterable[components.ContentPartImage], + Iterable[components.ContentPartImageTypedDict], + ] + ] = None, + n: Optional[int] = None, + output_compression: Optional[int] = None, + output_format: Optional[components.ImageGenerationRequestOutputFormat] = None, + provider: Optional[ + Union[ + components.ImageGenerationRequestProvider, + components.ImageGenerationRequestProviderTypedDict, + ] + ] = None, + quality: Optional[components.ImageGenerationRequestQuality] = None, + resolution: Optional[components.ImageGenerationRequestResolution] = None, + seed: Optional[int] = None, + size: Optional[str] = None, + stream: bool, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> Union[ + components.ImageGenerationResponse, + eventstreaming.EventStream[components.ImageStreamingResponseData], + ]: + r"""Generate an image + + Generates an image from a text prompt via the image generation router + + :param model: The image generation model to use + :param prompt: Text description of the desired image + :param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings. + This is used to track API usage per application. + + :param x_open_router_title: The app display name allows you to customize how your app appears in OpenRouter's dashboard. + + :param x_open_router_categories: Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings. + + :param aspect_ratio: Normalized aspect ratio of the generated image. Providers clamp to their supported subset. + :param background: Background treatment. `transparent` requires an output_format that supports alpha (png or webp). + :param input_references: Reference images to guide image-to-image generation, as base64 data URLs or HTTP(S) URLs. + :param n: Number of images to generate (1-10). Providers that only support single-image generation reject n > 1. + :param output_compression: Compression level (0-100) for webp/jpeg output. Ignored for png and by providers without a compression knob. + :param output_format: Encoding of the returned image bytes. Most models produce raster formats (png, jpeg, webp). SVG is supported by vectorization models (e.g. Quiver) — the SVG markup is UTF-8 base64-encoded in `b64_json`. + :param provider: Provider-specific passthrough configuration + :param quality: Rendering quality. Providers without a quality knob ignore this. + :param resolution: Normalized resolution tier of the generated image. Concrete pixel dimensions are derived per-provider. + :param seed: If specified, the generation will sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed for all providers. + :param size: Optional. A convenience shorthand for output dimensions — pass a tier (\"2K\", \"4K\") or explicit pixels (\"2048x2048\") and we normalize it to the right dimensions for the chosen provider. Interchangeable with resolution + aspect_ratio; use those directly for enumerated, per-model discoverable values. Conflicting size + resolution/aspect_ratio is rejected. + :param stream: If true, partial images are streamed as SSE events as they become available. Only supported by providers with native streaming (currently OpenAI). Non-streaming providers ignore this flag and return a buffered response. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds :param http_headers: Additional headers to set or replace on requests. """ @@ -166,8 +228,8 @@ def generate( background: Optional[components.ImageGenerationRequestBackground] = None, input_references: Optional[ Union[ - List[components.ContentPartImage], - List[components.ContentPartImageTypedDict], + Iterable[components.ContentPartImage], + Iterable[components.ContentPartImageTypedDict], ] ] = None, n: Optional[int] = None, @@ -188,7 +250,10 @@ def generate( server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.CreateImagesResponse: + ) -> Union[ + components.ImageGenerationResponse, + eventstreaming.EventStream[components.ImageStreamingResponseData], + ]: r"""Generate an image Generates an image from a text prompt via the image generation router @@ -217,7 +282,6 @@ def generate( :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method :param http_headers: Additional headers to set or replace on requests. """ base_url = None @@ -266,7 +330,9 @@ def generate( request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="text/event-stream" if stream else "application/json", + accept_header_value="text/event-stream" + if stream is True + else "application/json", http_headers=http_headers, _globals=operations.CreateImagesGlobals( http_referer=self.sdk_configuration.globals.http_referer, @@ -306,23 +372,12 @@ def generate( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Images"], + extensions=None, ), request=req, - error_status_codes=[ - "400", - "401", - "402", - "403", - "404", - "429", - "4XX", - "500", - "502", - "524", - "529", - "5XX", - ], - stream=True, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + stream=stream is True, retry_config=retry_config, ) @@ -335,8 +390,8 @@ def generate( if utils.match_response(http_res, "200", "text/event-stream"): return eventstreaming.EventStream( http_res, - lambda raw: utils.unmarshal_json( - raw, components.ImageStreamingResponse + lambda raw: unmarshal_json_response( + components.ImageStreamingResponse, http_res, raw ).data, sentinel="[DONE]", client_ref=self, @@ -442,8 +497,8 @@ async def generate_async( background: Optional[components.ImageGenerationRequestBackground] = None, input_references: Optional[ Union[ - List[components.ContentPartImage], - List[components.ContentPartImageTypedDict], + Iterable[components.ContentPartImage], + Iterable[components.ContentPartImageTypedDict], ] ] = None, n: Optional[int] = None, @@ -493,7 +548,6 @@ async def generate_async( :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method :param http_headers: Additional headers to set or replace on requests. """ @@ -510,8 +564,8 @@ async def generate_async( background: Optional[components.ImageGenerationRequestBackground] = None, input_references: Optional[ Union[ - List[components.ContentPartImage], - List[components.ContentPartImageTypedDict], + Iterable[components.ContentPartImage], + Iterable[components.ContentPartImageTypedDict], ] ] = None, n: Optional[int] = None, @@ -561,7 +615,76 @@ async def generate_async( :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method + :param http_headers: Additional headers to set or replace on requests. + """ + + @overload + async def generate_async( + self, + *, + model: str, + prompt: str, + http_referer: Optional[str] = None, + x_open_router_title: Optional[str] = None, + x_open_router_categories: Optional[str] = None, + aspect_ratio: Optional[components.ImageGenerationRequestAspectRatio] = None, + background: Optional[components.ImageGenerationRequestBackground] = None, + input_references: Optional[ + Union[ + Iterable[components.ContentPartImage], + Iterable[components.ContentPartImageTypedDict], + ] + ] = None, + n: Optional[int] = None, + output_compression: Optional[int] = None, + output_format: Optional[components.ImageGenerationRequestOutputFormat] = None, + provider: Optional[ + Union[ + components.ImageGenerationRequestProvider, + components.ImageGenerationRequestProviderTypedDict, + ] + ] = None, + quality: Optional[components.ImageGenerationRequestQuality] = None, + resolution: Optional[components.ImageGenerationRequestResolution] = None, + seed: Optional[int] = None, + size: Optional[str] = None, + stream: bool, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> Union[ + components.ImageGenerationResponse, + eventstreaming.EventStreamAsync[components.ImageStreamingResponseData], + ]: + r"""Generate an image + + Generates an image from a text prompt via the image generation router + + :param model: The image generation model to use + :param prompt: Text description of the desired image + :param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings. + This is used to track API usage per application. + + :param x_open_router_title: The app display name allows you to customize how your app appears in OpenRouter's dashboard. + + :param x_open_router_categories: Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings. + + :param aspect_ratio: Normalized aspect ratio of the generated image. Providers clamp to their supported subset. + :param background: Background treatment. `transparent` requires an output_format that supports alpha (png or webp). + :param input_references: Reference images to guide image-to-image generation, as base64 data URLs or HTTP(S) URLs. + :param n: Number of images to generate (1-10). Providers that only support single-image generation reject n > 1. + :param output_compression: Compression level (0-100) for webp/jpeg output. Ignored for png and by providers without a compression knob. + :param output_format: Encoding of the returned image bytes. Most models produce raster formats (png, jpeg, webp). SVG is supported by vectorization models (e.g. Quiver) — the SVG markup is UTF-8 base64-encoded in `b64_json`. + :param provider: Provider-specific passthrough configuration + :param quality: Rendering quality. Providers without a quality knob ignore this. + :param resolution: Normalized resolution tier of the generated image. Concrete pixel dimensions are derived per-provider. + :param seed: If specified, the generation will sample deterministically, such that repeated requests with the same seed and parameters should return the same result. Determinism is not guaranteed for all providers. + :param size: Optional. A convenience shorthand for output dimensions — pass a tier (\"2K\", \"4K\") or explicit pixels (\"2048x2048\") and we normalize it to the right dimensions for the chosen provider. Interchangeable with resolution + aspect_ratio; use those directly for enumerated, per-model discoverable values. Conflicting size + resolution/aspect_ratio is rejected. + :param stream: If true, partial images are streamed as SSE events as they become available. Only supported by providers with native streaming (currently OpenAI). Non-streaming providers ignore this flag and return a buffered response. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds :param http_headers: Additional headers to set or replace on requests. """ @@ -577,8 +700,8 @@ async def generate_async( background: Optional[components.ImageGenerationRequestBackground] = None, input_references: Optional[ Union[ - List[components.ContentPartImage], - List[components.ContentPartImageTypedDict], + Iterable[components.ContentPartImage], + Iterable[components.ContentPartImageTypedDict], ] ] = None, n: Optional[int] = None, @@ -599,7 +722,10 @@ async def generate_async( server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.CreateImagesResponse: + ) -> Union[ + components.ImageGenerationResponse, + eventstreaming.EventStreamAsync[components.ImageStreamingResponseData], + ]: r"""Generate an image Generates an image from a text prompt via the image generation router @@ -628,7 +754,6 @@ async def generate_async( :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method :param http_headers: Additional headers to set or replace on requests. """ base_url = None @@ -677,7 +802,9 @@ async def generate_async( request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="text/event-stream" if stream else "application/json", + accept_header_value="text/event-stream" + if stream is True + else "application/json", http_headers=http_headers, _globals=operations.CreateImagesGlobals( http_referer=self.sdk_configuration.globals.http_referer, @@ -717,23 +844,12 @@ async def generate_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Images"], + extensions=None, ), request=req, - error_status_codes=[ - "400", - "401", - "402", - "403", - "404", - "429", - "4XX", - "500", - "502", - "524", - "529", - "5XX", - ], - stream=True, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + stream=stream is True, retry_config=retry_config, ) @@ -746,8 +862,8 @@ async def generate_async( if utils.match_response(http_res, "200", "text/event-stream"): return eventstreaming.EventStreamAsync( http_res, - lambda raw: utils.unmarshal_json( - raw, components.ImageStreamingResponse + lambda raw: unmarshal_json_response( + components.ImageStreamingResponse, http_res, raw ).data, sentinel="[DONE]", client_ref=self, @@ -926,9 +1042,11 @@ def list_models( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Images"], + extensions=None, ), request=req, - error_status_codes=["4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1039,9 +1157,11 @@ async def list_models_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Images"], + extensions=None, ), request=req, - error_status_codes=["4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1158,9 +1278,11 @@ def list_model_endpoints( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Images"], + extensions=None, ), request=req, - error_status_codes=["404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1284,9 +1406,11 @@ async def list_model_endpoints_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Images"], + extensions=None, ), request=req, - error_status_codes=["404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/openrouter/models/__init__.py b/src/openrouter/models/__init__.py index 726fc5eb..77e06a0c 100644 --- a/src/openrouter/models/__init__.py +++ b/src/openrouter/models/__init__.py @@ -1,3 +1,23 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" +from typing import Any, TYPE_CHECKING + +from openrouter.utils.dynamic_imports import lazy_getattr, lazy_dir + +if TYPE_CHECKING: + from . import internal + # package + + +_sub_packages = ["internal"] + + +def __getattr__(attr_name: str) -> Any: + return lazy_getattr( + attr_name, package=__package__, dynamic_imports={}, sub_packages=_sub_packages + ) + + +def __dir__(): + return lazy_dir(dynamic_imports={}, sub_packages=_sub_packages) diff --git a/src/openrouter/models/internal/__init__.py b/src/openrouter/models/internal/__init__.py index e7070a12..a661631d 100644 --- a/src/openrouter/models/internal/__init__.py +++ b/src/openrouter/models/internal/__init__.py @@ -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 .globals import Globals, GlobalsTypedDict @@ -16,39 +15,11 @@ } -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) diff --git a/src/openrouter/models/internal/globals.py b/src/openrouter/models/internal/globals.py index 701741bb..5b741456 100644 --- a/src/openrouter/models/internal/globals.py +++ b/src/openrouter/models/internal/globals.py @@ -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 @@ -52,3 +53,21 @@ class Globals(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 diff --git a/src/openrouter/models_.py b/src/openrouter/models_.py index fa1d3432..02dd1c20 100644 --- a/src/openrouter/models_.py +++ b/src/openrouter/models_.py @@ -104,9 +104,11 @@ def get( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Models"], + extensions=None, ), request=req, - error_status_codes=["404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -228,9 +230,11 @@ async def get_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Models"], + extensions=None, ), request=req, - error_status_codes=["404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -389,9 +393,11 @@ def list( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Models"], + extensions=None, ), request=req, - error_status_codes=["400", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -550,9 +556,11 @@ async def list_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Models"], + extensions=None, ), request=req, - error_status_codes=["400", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -669,9 +677,11 @@ def count( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Models"], + extensions=None, ), request=req, - error_status_codes=["400", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -788,9 +798,11 @@ async def count_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Models"], + extensions=None, ), request=req, - error_status_codes=["400", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -911,9 +923,11 @@ def list_for_user( operation_id="listModelsUser", oauth2_scopes=None, security_source=get_security_from_env(security, components.Security), + tags=["Models"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1039,9 +1053,11 @@ async def list_for_user_async( operation_id="listModelsUser", oauth2_scopes=None, security_source=get_security_from_env(security, components.Security), + tags=["Models"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/openrouter/oauth.py b/src/openrouter/oauth.py index 185de12d..d6a93841 100644 --- a/src/openrouter/oauth.py +++ b/src/openrouter/oauth.py @@ -119,9 +119,11 @@ def exchange_auth_code_for_api_key( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["OAuth"], + extensions=None, ), request=req, - error_status_codes=["400", "403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -264,9 +266,11 @@ async def exchange_auth_code_for_api_key_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["OAuth"], + extensions=None, ), request=req, - error_status_codes=["400", "403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -424,9 +428,11 @@ def create_auth_code( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["OAuth"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "409", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -594,9 +600,11 @@ async def create_auth_code_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["OAuth"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "409", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/openrouter/observability.py b/src/openrouter/observability.py index 37ee42a6..a1dea9b4 100644 --- a/src/openrouter/observability.py +++ b/src/openrouter/observability.py @@ -7,7 +7,7 @@ from openrouter.types import Nullable, OptionalNullable, UNSET from openrouter.utils import get_security_from_env from openrouter.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Awaitable, Dict, List, Mapping, Optional, Union +from typing import Any, Awaitable, Dict, Iterable, List, Mapping, Optional, Union class Observability(BaseSDK): @@ -108,24 +108,26 @@ def list( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Observability"], + extensions=None, ), request=req, - error_status_codes=["401", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) def next_func() -> Optional[operations.ListObservabilityDestinationsResponse]: body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]]) - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return None results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return None - limit = request.limit if not request.limit is None else 0 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 0 + if len(results[0]) < limit_: return None next_offset = offset + len(results[0]) @@ -137,6 +139,9 @@ def next_func() -> Optional[operations.ListObservabilityDestinationsResponse]: limit=limit, workspace_id=workspace_id, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -265,9 +270,11 @@ async def list_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Observability"], + extensions=None, ), request=req, - error_status_codes=["401", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -279,15 +286,15 @@ def next_func() -> ( async def empty_result(): return None - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return empty_result() results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return empty_result() - limit = request.limit if not request.limit is None else 0 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 0 + if len(results[0]) < limit_: return empty_result() next_offset = offset + len(results[0]) @@ -299,6 +306,9 @@ async def empty_result(): limit=limit, workspace_id=workspace_id, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -335,13 +345,13 @@ async def empty_result(): def create( self, *, - config: Dict[str, Nullable[Any]], + config: Mapping[str, Nullable[Any]], name: str, type_: components.CreateObservabilityDestinationRequestType, http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, - api_key_hashes: OptionalNullable[List[str]] = UNSET, + api_key_hashes: OptionalNullable[Iterable[str]] = UNSET, enabled: Optional[bool] = True, filter_rules: OptionalNullable[ Union[ @@ -397,8 +407,10 @@ def create( x_open_router_title=x_open_router_title, x_open_router_categories=x_open_router_categories, create_observability_destination_request=components.CreateObservabilityDestinationRequest( - api_key_hashes=api_key_hashes, - config=config, + api_key_hashes=utils.unmarshal( + api_key_hashes, OptionalNullable[List[str]] + ), + config=utils.unmarshal(config, Dict[str, Nullable[Any]]), enabled=enabled, filter_rules=utils.get_pydantic_model( filter_rules, @@ -462,9 +474,11 @@ def create( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Observability"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "409", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -514,13 +528,13 @@ def create( async def create_async( self, *, - config: Dict[str, Nullable[Any]], + config: Mapping[str, Nullable[Any]], name: str, type_: components.CreateObservabilityDestinationRequestType, http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, - api_key_hashes: OptionalNullable[List[str]] = UNSET, + api_key_hashes: OptionalNullable[Iterable[str]] = UNSET, enabled: Optional[bool] = True, filter_rules: OptionalNullable[ Union[ @@ -576,8 +590,10 @@ async def create_async( x_open_router_title=x_open_router_title, x_open_router_categories=x_open_router_categories, create_observability_destination_request=components.CreateObservabilityDestinationRequest( - api_key_hashes=api_key_hashes, - config=config, + api_key_hashes=utils.unmarshal( + api_key_hashes, OptionalNullable[List[str]] + ), + config=utils.unmarshal(config, Dict[str, Nullable[Any]]), enabled=enabled, filter_rules=utils.get_pydantic_model( filter_rules, @@ -641,9 +657,11 @@ async def create_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Observability"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "409", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -779,9 +797,11 @@ def delete( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Observability"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -907,9 +927,11 @@ async def delete_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Observability"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1035,9 +1057,11 @@ def get( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Observability"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1163,9 +1187,11 @@ async def get_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Observability"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1209,8 +1235,8 @@ def update( http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, - api_key_hashes: OptionalNullable[List[str]] = UNSET, - config: Optional[Dict[str, Nullable[Any]]] = None, + api_key_hashes: OptionalNullable[Iterable[str]] = UNSET, + config: Optional[Mapping[str, Nullable[Any]]] = None, enabled: Optional[bool] = None, filter_rules: OptionalNullable[ Union[ @@ -1266,8 +1292,10 @@ def update( x_open_router_categories=x_open_router_categories, id=id, update_observability_destination_request=components.UpdateObservabilityDestinationRequest( - api_key_hashes=api_key_hashes, - config=config, + api_key_hashes=utils.unmarshal( + api_key_hashes, OptionalNullable[List[str]] + ), + config=utils.unmarshal(config, Optional[Dict[str, Nullable[Any]]]), enabled=enabled, filter_rules=utils.get_pydantic_model( filter_rules, @@ -1329,9 +1357,11 @@ def update( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Observability"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "409", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1385,8 +1415,8 @@ async def update_async( http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, - api_key_hashes: OptionalNullable[List[str]] = UNSET, - config: Optional[Dict[str, Nullable[Any]]] = None, + api_key_hashes: OptionalNullable[Iterable[str]] = UNSET, + config: Optional[Mapping[str, Nullable[Any]]] = None, enabled: Optional[bool] = None, filter_rules: OptionalNullable[ Union[ @@ -1442,8 +1472,10 @@ async def update_async( x_open_router_categories=x_open_router_categories, id=id, update_observability_destination_request=components.UpdateObservabilityDestinationRequest( - api_key_hashes=api_key_hashes, - config=config, + api_key_hashes=utils.unmarshal( + api_key_hashes, OptionalNullable[List[str]] + ), + config=utils.unmarshal(config, Optional[Dict[str, Nullable[Any]]]), enabled=enabled, filter_rules=utils.get_pydantic_model( filter_rules, @@ -1505,9 +1537,11 @@ async def update_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Observability"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "409", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/openrouter/operations/__init__.py b/src/openrouter/operations/__init__.py index 8bc044fc..a7983977 100644 --- a/src/openrouter/operations/__init__.py +++ b/src/openrouter/operations/__init__.py @@ -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 @@ } -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) diff --git a/src/openrouter/operations/bulkaddworkspacemembers.py b/src/openrouter/operations/bulkaddworkspacemembers.py index 32dcfea1..daa5e7d7 100644 --- a/src/openrouter/operations/bulkaddworkspacemembers.py +++ b/src/openrouter/operations/bulkaddworkspacemembers.py @@ -4,7 +4,7 @@ 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 @@ 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 diff --git a/src/openrouter/operations/bulkassignkeystoguardrail.py b/src/openrouter/operations/bulkassignkeystoguardrail.py index e0401f52..72a2a89d 100644 --- a/src/openrouter/operations/bulkassignkeystoguardrail.py +++ b/src/openrouter/operations/bulkassignkeystoguardrail.py @@ -4,7 +4,7 @@ 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 @@ 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 diff --git a/src/openrouter/operations/bulkassignmemberstoguardrail.py b/src/openrouter/operations/bulkassignmemberstoguardrail.py index 80a1cb77..e3a4c909 100644 --- a/src/openrouter/operations/bulkassignmemberstoguardrail.py +++ b/src/openrouter/operations/bulkassignmemberstoguardrail.py @@ -4,7 +4,7 @@ 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 @@ 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 diff --git a/src/openrouter/operations/bulkremoveworkspacemembers.py b/src/openrouter/operations/bulkremoveworkspacemembers.py index fe0ebfd7..f9a80e6a 100644 --- a/src/openrouter/operations/bulkremoveworkspacemembers.py +++ b/src/openrouter/operations/bulkremoveworkspacemembers.py @@ -4,7 +4,7 @@ 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 @@ 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 diff --git a/src/openrouter/operations/bulkunassignkeysfromguardrail.py b/src/openrouter/operations/bulkunassignkeysfromguardrail.py index 4f486230..d01945a5 100644 --- a/src/openrouter/operations/bulkunassignkeysfromguardrail.py +++ b/src/openrouter/operations/bulkunassignkeysfromguardrail.py @@ -4,7 +4,7 @@ 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 @@ 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 diff --git a/src/openrouter/operations/bulkunassignmembersfromguardrail.py b/src/openrouter/operations/bulkunassignmembersfromguardrail.py index 3613dcf6..ff2fc0c0 100644 --- a/src/openrouter/operations/bulkunassignmembersfromguardrail.py +++ b/src/openrouter/operations/bulkunassignmembersfromguardrail.py @@ -4,7 +4,7 @@ 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 @@ 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 diff --git a/src/openrouter/operations/createaudiospeech.py b/src/openrouter/operations/createaudiospeech.py index dae7b28a..fe1cbc4a 100644 --- a/src/openrouter/operations/createaudiospeech.py +++ b/src/openrouter/operations/createaudiospeech.py @@ -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 diff --git a/src/openrouter/operations/createaudiotranscriptions.py b/src/openrouter/operations/createaudiotranscriptions.py index 01441144..4e8414f2 100644 --- a/src/openrouter/operations/createaudiotranscriptions.py +++ b/src/openrouter/operations/createaudiotranscriptions.py @@ -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 diff --git a/src/openrouter/operations/createauthkeyscode.py b/src/openrouter/operations/createauthkeyscode.py index 344b269c..84a5dc96 100644 --- a/src/openrouter/operations/createauthkeyscode.py +++ b/src/openrouter/operations/createauthkeyscode.py @@ -10,15 +10,9 @@ 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) - - 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 + 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 + ) + + 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""" diff --git a/src/openrouter/operations/createbyokkey.py b/src/openrouter/operations/createbyokkey.py index 523d24ef..d96c756e 100644 --- a/src/openrouter/operations/createbyokkey.py +++ b/src/openrouter/operations/createbyokkey.py @@ -4,9 +4,10 @@ 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 diff --git a/src/openrouter/operations/createembeddings.py b/src/openrouter/operations/createembeddings.py index 6459cab7..699e9867 100644 --- a/src/openrouter/operations/createembeddings.py +++ b/src/openrouter/operations/createembeddings.py @@ -20,11 +20,9 @@ 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) - - 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 + 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 + ) + + 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) - - 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 + 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 + ) + + 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) - - 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 + 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 + ) + + 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", diff --git a/src/openrouter/operations/createguardrail.py b/src/openrouter/operations/createguardrail.py index 75b9661b..15a2748b 100644 --- a/src/openrouter/operations/createguardrail.py +++ b/src/openrouter/operations/createguardrail.py @@ -4,9 +4,10 @@ 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 diff --git a/src/openrouter/operations/createimages.py b/src/openrouter/operations/createimages.py index dcc89c26..8216a656 100644 --- a/src/openrouter/operations/createimages.py +++ b/src/openrouter/operations/createimages.py @@ -6,7 +6,7 @@ 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 @@ 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", diff --git a/src/openrouter/operations/createkeys.py b/src/openrouter/operations/createkeys.py index 6d18cf70..aea3bdb4 100644 --- a/src/openrouter/operations/createkeys.py +++ b/src/openrouter/operations/createkeys.py @@ -10,15 +10,9 @@ 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) - - 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 + 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 + ) + + 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/operations/createobservabilitydestination.py b/src/openrouter/operations/createobservabilitydestination.py index 3f22b575..debb2873 100644 --- a/src/openrouter/operations/createobservabilitydestination.py +++ b/src/openrouter/operations/createobservabilitydestination.py @@ -4,9 +4,10 @@ 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 diff --git a/src/openrouter/operations/createpresetschatcompletions.py b/src/openrouter/operations/createpresetschatcompletions.py index e1ae37ed..2bcf91e0 100644 --- a/src/openrouter/operations/createpresetschatcompletions.py +++ b/src/openrouter/operations/createpresetschatcompletions.py @@ -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 @@ 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 diff --git a/src/openrouter/operations/createpresetsmessages.py b/src/openrouter/operations/createpresetsmessages.py index 0b7172f2..90392c9c 100644 --- a/src/openrouter/operations/createpresetsmessages.py +++ b/src/openrouter/operations/createpresetsmessages.py @@ -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 @@ 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 diff --git a/src/openrouter/operations/createpresetsresponses.py b/src/openrouter/operations/createpresetsresponses.py index 7dce093f..becc8c5f 100644 --- a/src/openrouter/operations/createpresetsresponses.py +++ b/src/openrouter/operations/createpresetsresponses.py @@ -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 @@ 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 diff --git a/src/openrouter/operations/creatererank.py b/src/openrouter/operations/creatererank.py index 3e701dc3..3786a979 100644 --- a/src/openrouter/operations/creatererank.py +++ b/src/openrouter/operations/creatererank.py @@ -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) - - 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 + 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 + ) + + 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] diff --git a/src/openrouter/operations/createresponses.py b/src/openrouter/operations/createresponses.py index 8f95daa0..a0925b14 100644 --- a/src/openrouter/operations/createresponses.py +++ b/src/openrouter/operations/createresponses.py @@ -7,16 +7,15 @@ 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", diff --git a/src/openrouter/operations/createvideos.py b/src/openrouter/operations/createvideos.py index 3892fc75..237b8eb3 100644 --- a/src/openrouter/operations/createvideos.py +++ b/src/openrouter/operations/createvideos.py @@ -4,9 +4,10 @@ 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 diff --git a/src/openrouter/operations/createworkspace.py b/src/openrouter/operations/createworkspace.py index 1757be8d..15b96d1c 100644 --- a/src/openrouter/operations/createworkspace.py +++ b/src/openrouter/operations/createworkspace.py @@ -4,9 +4,10 @@ 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 diff --git a/src/openrouter/operations/deletebyokkey.py b/src/openrouter/operations/deletebyokkey.py index 08c3b34c..2148ca98 100644 --- a/src/openrouter/operations/deletebyokkey.py +++ b/src/openrouter/operations/deletebyokkey.py @@ -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 diff --git a/src/openrouter/operations/deletefile.py b/src/openrouter/operations/deletefile.py index 961175c5..ea64b3b8 100644 --- a/src/openrouter/operations/deletefile.py +++ b/src/openrouter/operations/deletefile.py @@ -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 @@ 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 caller’s 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 diff --git a/src/openrouter/operations/deleteguardrail.py b/src/openrouter/operations/deleteguardrail.py index c69e9ced..a8c58e7f 100644 --- a/src/openrouter/operations/deleteguardrail.py +++ b/src/openrouter/operations/deleteguardrail.py @@ -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 diff --git a/src/openrouter/operations/deletekeys.py b/src/openrouter/operations/deletekeys.py index 51d48818..998021c4 100644 --- a/src/openrouter/operations/deletekeys.py +++ b/src/openrouter/operations/deletekeys.py @@ -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 @@ 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 diff --git a/src/openrouter/operations/deleteobservabilitydestination.py b/src/openrouter/operations/deleteobservabilitydestination.py index 865b4d17..92560ae6 100644 --- a/src/openrouter/operations/deleteobservabilitydestination.py +++ b/src/openrouter/operations/deleteobservabilitydestination.py @@ -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 diff --git a/src/openrouter/operations/deleteworkspace.py b/src/openrouter/operations/deleteworkspace.py index fbfef882..b27b1bcf 100644 --- a/src/openrouter/operations/deleteworkspace.py +++ b/src/openrouter/operations/deleteworkspace.py @@ -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 diff --git a/src/openrouter/operations/deleteworkspacebudget.py b/src/openrouter/operations/deleteworkspacebudget.py index 7b8d62d7..b61191d8 100644 --- a/src/openrouter/operations/deleteworkspacebudget.py +++ b/src/openrouter/operations/deleteworkspacebudget.py @@ -4,15 +4,10 @@ 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 diff --git a/src/openrouter/operations/downloadfilecontent.py b/src/openrouter/operations/downloadfilecontent.py index 3d4be3f7..8da6ef05 100644 --- a/src/openrouter/operations/downloadfilecontent.py +++ b/src/openrouter/operations/downloadfilecontent.py @@ -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 @@ 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 caller’s 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 diff --git a/src/openrouter/operations/exchangeauthcodeforapikey.py b/src/openrouter/operations/exchangeauthcodeforapikey.py index 4e4295d6..b6895f4b 100644 --- a/src/openrouter/operations/exchangeauthcodeforapikey.py +++ b/src/openrouter/operations/exchangeauthcodeforapikey.py @@ -9,15 +9,9 @@ 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/operations/getanalyticsmeta.py b/src/openrouter/operations/getanalyticsmeta.py index bdec790c..dc728a09 100644 --- a/src/openrouter/operations/getanalyticsmeta.py +++ b/src/openrouter/operations/getanalyticsmeta.py @@ -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""" diff --git a/src/openrouter/operations/getapprankings.py b/src/openrouter/operations/getapprankings.py index d19ef64e..e5f42ea0 100644 --- a/src/openrouter/operations/getapprankings.py +++ b/src/openrouter/operations/getapprankings.py @@ -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 diff --git a/src/openrouter/operations/getbenchmarks.py b/src/openrouter/operations/getbenchmarks.py index 480c2f31..493d52d3 100644 --- a/src/openrouter/operations/getbenchmarks.py +++ b/src/openrouter/operations/getbenchmarks.py @@ -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 diff --git a/src/openrouter/operations/getbyokkey.py b/src/openrouter/operations/getbyokkey.py index 04945fd4..6021faa4 100644 --- a/src/openrouter/operations/getbyokkey.py +++ b/src/openrouter/operations/getbyokkey.py @@ -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 diff --git a/src/openrouter/operations/getcredits.py b/src/openrouter/operations/getcredits.py index 54ebfd67..0c48cd8c 100644 --- a/src/openrouter/operations/getcredits.py +++ b/src/openrouter/operations/getcredits.py @@ -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 diff --git a/src/openrouter/operations/getcurrentkey.py b/src/openrouter/operations/getcurrentkey.py index 2d26173f..d0062378 100644 --- a/src/openrouter/operations/getcurrentkey.py +++ b/src/openrouter/operations/getcurrentkey.py @@ -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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/operations/getfilemetadata.py b/src/openrouter/operations/getfilemetadata.py index 6a7ddf07..4614554b 100644 --- a/src/openrouter/operations/getfilemetadata.py +++ b/src/openrouter/operations/getfilemetadata.py @@ -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 @@ 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 caller’s 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 diff --git a/src/openrouter/operations/getgeneration.py b/src/openrouter/operations/getgeneration.py index bf21d05e..2799b1f4 100644 --- a/src/openrouter/operations/getgeneration.py +++ b/src/openrouter/operations/getgeneration.py @@ -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 diff --git a/src/openrouter/operations/getguardrail.py b/src/openrouter/operations/getguardrail.py index e3a2ca29..3d69c167 100644 --- a/src/openrouter/operations/getguardrail.py +++ b/src/openrouter/operations/getguardrail.py @@ -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 diff --git a/src/openrouter/operations/getkey.py b/src/openrouter/operations/getkey.py index d2370a94..a614dfb5 100644 --- a/src/openrouter/operations/getkey.py +++ b/src/openrouter/operations/getkey.py @@ -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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/operations/getmodel.py b/src/openrouter/operations/getmodel.py index e4505628..d5a47b01 100644 --- a/src/openrouter/operations/getmodel.py +++ b/src/openrouter/operations/getmodel.py @@ -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 diff --git a/src/openrouter/operations/getmodels.py b/src/openrouter/operations/getmodels.py index eb0f9558..af887b94 100644 --- a/src/openrouter/operations/getmodels.py +++ b/src/openrouter/operations/getmodels.py @@ -9,15 +9,9 @@ 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/operations/getobservabilitydestination.py b/src/openrouter/operations/getobservabilitydestination.py index 3a79bcb4..cb8301dc 100644 --- a/src/openrouter/operations/getobservabilitydestination.py +++ b/src/openrouter/operations/getobservabilitydestination.py @@ -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 diff --git a/src/openrouter/operations/getpreset.py b/src/openrouter/operations/getpreset.py index d0889139..95dbd5c2 100644 --- a/src/openrouter/operations/getpreset.py +++ b/src/openrouter/operations/getpreset.py @@ -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 diff --git a/src/openrouter/operations/getpresetversion.py b/src/openrouter/operations/getpresetversion.py index b76d22dc..cbcc9abe 100644 --- a/src/openrouter/operations/getpresetversion.py +++ b/src/openrouter/operations/getpresetversion.py @@ -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 diff --git a/src/openrouter/operations/getrankingsdaily.py b/src/openrouter/operations/getrankingsdaily.py index 2e3cf71a..efa494fa 100644 --- a/src/openrouter/operations/getrankingsdaily.py +++ b/src/openrouter/operations/getrankingsdaily.py @@ -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 diff --git a/src/openrouter/operations/gettaskclassifications.py b/src/openrouter/operations/gettaskclassifications.py index 793d2ca7..a8b610ca 100644 --- a/src/openrouter/operations/gettaskclassifications.py +++ b/src/openrouter/operations/gettaskclassifications.py @@ -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 diff --git a/src/openrouter/operations/getuseractivity.py b/src/openrouter/operations/getuseractivity.py index 3e29cdf1..35ab9ca4 100644 --- a/src/openrouter/operations/getuseractivity.py +++ b/src/openrouter/operations/getuseractivity.py @@ -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 diff --git a/src/openrouter/operations/getvideos.py b/src/openrouter/operations/getvideos.py index 3a120ed0..33c1a695 100644 --- a/src/openrouter/operations/getvideos.py +++ b/src/openrouter/operations/getvideos.py @@ -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 diff --git a/src/openrouter/operations/getworkspace.py b/src/openrouter/operations/getworkspace.py index f4d279e4..1075e4c4 100644 --- a/src/openrouter/operations/getworkspace.py +++ b/src/openrouter/operations/getworkspace.py @@ -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 diff --git a/src/openrouter/operations/list.py b/src/openrouter/operations/list.py index bf9965a2..cc90375e 100644 --- a/src/openrouter/operations/list.py +++ b/src/openrouter/operations/list.py @@ -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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/operations/listbyokkeys.py b/src/openrouter/operations/listbyokkeys.py index dcbff9f3..2ec07724 100644 --- a/src/openrouter/operations/listbyokkeys.py +++ b/src/openrouter/operations/listbyokkeys.py @@ -4,15 +4,10 @@ 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 diff --git a/src/openrouter/operations/listembeddingsmodels.py b/src/openrouter/operations/listembeddingsmodels.py index a4042eec..a019232d 100644 --- a/src/openrouter/operations/listembeddingsmodels.py +++ b/src/openrouter/operations/listembeddingsmodels.py @@ -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 diff --git a/src/openrouter/operations/listendpoints.py b/src/openrouter/operations/listendpoints.py index e1cef6f8..6f25eff5 100644 --- a/src/openrouter/operations/listendpoints.py +++ b/src/openrouter/operations/listendpoints.py @@ -4,9 +4,10 @@ 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""" diff --git a/src/openrouter/operations/listendpointszdr.py b/src/openrouter/operations/listendpointszdr.py index 23e735db..f5bd1f67 100644 --- a/src/openrouter/operations/listendpointszdr.py +++ b/src/openrouter/operations/listendpointszdr.py @@ -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""" diff --git a/src/openrouter/operations/listfiles.py b/src/openrouter/operations/listfiles.py index 834ff783..75fdf629 100644 --- a/src/openrouter/operations/listfiles.py +++ b/src/openrouter/operations/listfiles.py @@ -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 caller’s 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 diff --git a/src/openrouter/operations/listgenerationcontent.py b/src/openrouter/operations/listgenerationcontent.py index 8d195009..d57feee9 100644 --- a/src/openrouter/operations/listgenerationcontent.py +++ b/src/openrouter/operations/listgenerationcontent.py @@ -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 diff --git a/src/openrouter/operations/listguardrailkeyassignments.py b/src/openrouter/operations/listguardrailkeyassignments.py index 1278683a..e7a2c31f 100644 --- a/src/openrouter/operations/listguardrailkeyassignments.py +++ b/src/openrouter/operations/listguardrailkeyassignments.py @@ -4,7 +4,7 @@ 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 @@ 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 diff --git a/src/openrouter/operations/listguardrailmemberassignments.py b/src/openrouter/operations/listguardrailmemberassignments.py index c9c8c3ec..84076b74 100644 --- a/src/openrouter/operations/listguardrailmemberassignments.py +++ b/src/openrouter/operations/listguardrailmemberassignments.py @@ -4,7 +4,7 @@ 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 @@ 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: ( diff --git a/src/openrouter/operations/listguardrails.py b/src/openrouter/operations/listguardrails.py index f91db9e6..461e6914 100644 --- a/src/openrouter/operations/listguardrails.py +++ b/src/openrouter/operations/listguardrails.py @@ -4,9 +4,10 @@ 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 diff --git a/src/openrouter/operations/listimagemodelendpoints.py b/src/openrouter/operations/listimagemodelendpoints.py index 15c606cc..900b5b66 100644 --- a/src/openrouter/operations/listimagemodelendpoints.py +++ b/src/openrouter/operations/listimagemodelendpoints.py @@ -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 diff --git a/src/openrouter/operations/listimagemodels.py b/src/openrouter/operations/listimagemodels.py index e5c89ce7..01655ae0 100644 --- a/src/openrouter/operations/listimagemodels.py +++ b/src/openrouter/operations/listimagemodels.py @@ -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 diff --git a/src/openrouter/operations/listkeyassignments.py b/src/openrouter/operations/listkeyassignments.py index ae0bfca1..2aee3fc4 100644 --- a/src/openrouter/operations/listkeyassignments.py +++ b/src/openrouter/operations/listkeyassignments.py @@ -4,9 +4,10 @@ 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 diff --git a/src/openrouter/operations/listmemberassignments.py b/src/openrouter/operations/listmemberassignments.py index 55c93baa..f8e0b658 100644 --- a/src/openrouter/operations/listmemberassignments.py +++ b/src/openrouter/operations/listmemberassignments.py @@ -4,9 +4,10 @@ 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: ( diff --git a/src/openrouter/operations/listmodelscount.py b/src/openrouter/operations/listmodelscount.py index 3d8a59ac..797af26e 100644 --- a/src/openrouter/operations/listmodelscount.py +++ b/src/openrouter/operations/listmodelscount.py @@ -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 diff --git a/src/openrouter/operations/listmodelsuser.py b/src/openrouter/operations/listmodelsuser.py index d25eea81..6070772e 100644 --- a/src/openrouter/operations/listmodelsuser.py +++ b/src/openrouter/operations/listmodelsuser.py @@ -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 diff --git a/src/openrouter/operations/listobservabilitydestinations.py b/src/openrouter/operations/listobservabilitydestinations.py index 02233af5..465e357c 100644 --- a/src/openrouter/operations/listobservabilitydestinations.py +++ b/src/openrouter/operations/listobservabilitydestinations.py @@ -4,9 +4,10 @@ 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 diff --git a/src/openrouter/operations/listorganizationmembers.py b/src/openrouter/operations/listorganizationmembers.py index 6d918f6f..15662f48 100644 --- a/src/openrouter/operations/listorganizationmembers.py +++ b/src/openrouter/operations/listorganizationmembers.py @@ -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) - - 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 + val = serialized.get(k, serialized.get(n)) - 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 diff --git a/src/openrouter/operations/listpresets.py b/src/openrouter/operations/listpresets.py index faa98f18..bf21a246 100644 --- a/src/openrouter/operations/listpresets.py +++ b/src/openrouter/operations/listpresets.py @@ -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 diff --git a/src/openrouter/operations/listpresetversions.py b/src/openrouter/operations/listpresetversions.py index 48185b77..36052fb3 100644 --- a/src/openrouter/operations/listpresetversions.py +++ b/src/openrouter/operations/listpresetversions.py @@ -4,7 +4,7 @@ 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 @@ 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 diff --git a/src/openrouter/operations/listproviders.py b/src/openrouter/operations/listproviders.py index c4e51800..80bcd4b8 100644 --- a/src/openrouter/operations/listproviders.py +++ b/src/openrouter/operations/listproviders.py @@ -9,10 +9,9 @@ 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/operations/listvideoscontent.py b/src/openrouter/operations/listvideoscontent.py index 5ca3eefc..410bfaa4 100644 --- a/src/openrouter/operations/listvideoscontent.py +++ b/src/openrouter/operations/listvideoscontent.py @@ -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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/operations/listvideosmodels.py b/src/openrouter/operations/listvideosmodels.py index d1497b84..8ba436e2 100644 --- a/src/openrouter/operations/listvideosmodels.py +++ b/src/openrouter/operations/listvideosmodels.py @@ -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 diff --git a/src/openrouter/operations/listworkspacebudgets.py b/src/openrouter/operations/listworkspacebudgets.py index 266dc8cc..a65454da 100644 --- a/src/openrouter/operations/listworkspacebudgets.py +++ b/src/openrouter/operations/listworkspacebudgets.py @@ -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 diff --git a/src/openrouter/operations/listworkspaces.py b/src/openrouter/operations/listworkspaces.py index 236dc188..a242ff32 100644 --- a/src/openrouter/operations/listworkspaces.py +++ b/src/openrouter/operations/listworkspaces.py @@ -4,9 +4,10 @@ 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 diff --git a/src/openrouter/operations/queryanalytics.py b/src/openrouter/operations/queryanalytics.py index d994e559..705a3eaf 100644 --- a/src/openrouter/operations/queryanalytics.py +++ b/src/openrouter/operations/queryanalytics.py @@ -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 diff --git a/src/openrouter/operations/sendchatcompletionrequest.py b/src/openrouter/operations/sendchatcompletionrequest.py index cb1c3b3a..b065e38c 100644 --- a/src/openrouter/operations/sendchatcompletionrequest.py +++ b/src/openrouter/operations/sendchatcompletionrequest.py @@ -7,16 +7,15 @@ 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", diff --git a/src/openrouter/operations/updatebyokkey.py b/src/openrouter/operations/updatebyokkey.py index 1bf28a90..cf8b4ee9 100644 --- a/src/openrouter/operations/updatebyokkey.py +++ b/src/openrouter/operations/updatebyokkey.py @@ -4,7 +4,7 @@ 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 @@ 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 diff --git a/src/openrouter/operations/updateguardrail.py b/src/openrouter/operations/updateguardrail.py index b3675a1d..3787f0ce 100644 --- a/src/openrouter/operations/updateguardrail.py +++ b/src/openrouter/operations/updateguardrail.py @@ -4,7 +4,7 @@ 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 @@ 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 diff --git a/src/openrouter/operations/updatekeys.py b/src/openrouter/operations/updatekeys.py index 8ea23655..61a0eee3 100644 --- a/src/openrouter/operations/updatekeys.py +++ b/src/openrouter/operations/updatekeys.py @@ -15,11 +15,9 @@ 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) - - 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 + 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 + ) + + 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) - - 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 + 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 + ) + + 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 diff --git a/src/openrouter/operations/updateobservabilitydestination.py b/src/openrouter/operations/updateobservabilitydestination.py index 749f0f72..e2819c90 100644 --- a/src/openrouter/operations/updateobservabilitydestination.py +++ b/src/openrouter/operations/updateobservabilitydestination.py @@ -4,7 +4,7 @@ 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 @@ 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 diff --git a/src/openrouter/operations/updateworkspace.py b/src/openrouter/operations/updateworkspace.py index 4ab79298..44410567 100644 --- a/src/openrouter/operations/updateworkspace.py +++ b/src/openrouter/operations/updateworkspace.py @@ -4,7 +4,7 @@ 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 @@ 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 diff --git a/src/openrouter/operations/uploadfile.py b/src/openrouter/operations/uploadfile.py index 579e1df6..29a37b94 100644 --- a/src/openrouter/operations/uploadfile.py +++ b/src/openrouter/operations/uploadfile.py @@ -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 @@ 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 caller’s 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 diff --git a/src/openrouter/operations/upsertworkspacebudget.py b/src/openrouter/operations/upsertworkspacebudget.py index 9e55fa4d..228942b3 100644 --- a/src/openrouter/operations/upsertworkspacebudget.py +++ b/src/openrouter/operations/upsertworkspacebudget.py @@ -5,16 +5,15 @@ 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 diff --git a/src/openrouter/organization.py b/src/openrouter/organization.py index ad2e7f86..d24bfa86 100644 --- a/src/openrouter/organization.py +++ b/src/openrouter/organization.py @@ -105,24 +105,26 @@ def list_members( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Organization"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) def next_func() -> Optional[operations.ListOrganizationMembersResponse]: body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]]) - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return None results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return None - limit = request.limit if not request.limit is None else 0 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 0 + if len(results[0]) < limit_: return None next_offset = offset + len(results[0]) @@ -133,6 +135,9 @@ def next_func() -> Optional[operations.ListOrganizationMembersResponse]: offset=next_offset, limit=limit, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -263,9 +268,11 @@ async def list_members_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Organization"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -277,15 +284,15 @@ def next_func() -> ( async def empty_result(): return None - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return empty_result() results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return empty_result() - limit = request.limit if not request.limit is None else 0 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 0 + if len(results[0]) < limit_: return empty_result() next_offset = offset + len(results[0]) @@ -296,6 +303,9 @@ async def empty_result(): offset=next_offset, limit=limit, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None diff --git a/src/openrouter/presets.py b/src/openrouter/presets.py index 4ab1b9cd..83085f60 100644 --- a/src/openrouter/presets.py +++ b/src/openrouter/presets.py @@ -7,7 +7,7 @@ from openrouter.types import Nullable, OptionalNullable, UNSET from openrouter.utils import get_security_from_env from openrouter.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Awaitable, Dict, List, Mapping, Optional, Union +from typing import Any, Awaitable, Dict, Iterable, List, Mapping, Optional, Union class Presets(BaseSDK): @@ -30,6 +30,8 @@ def list( Lists all presets for the authenticated user, ordered by most recently updated first. + If set, this operation will use `api_key` from the global security. + :param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings. This is used to track API usage per application. @@ -81,6 +83,7 @@ def list( ), security=self.sdk_configuration.security, allow_empty_value=None, + allowed_fields=["api_key"], timeout_ms=timeout_ms, ) @@ -105,24 +108,26 @@ def list( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Presets"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) def next_func() -> Optional[operations.ListPresetsResponse]: body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]]) - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return None results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return None - limit = request.limit if not request.limit is None else 0 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 0 + if len(results[0]) < limit_: return None next_offset = offset + len(results[0]) @@ -133,6 +138,9 @@ def next_func() -> Optional[operations.ListPresetsResponse]: offset=next_offset, limit=limit, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -188,6 +196,8 @@ async def list_async( Lists all presets for the authenticated user, ordered by most recently updated first. + If set, this operation will use `api_key` from the global security. + :param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings. This is used to track API usage per application. @@ -239,6 +249,7 @@ async def list_async( ), security=self.sdk_configuration.security, allow_empty_value=None, + allowed_fields=["api_key"], timeout_ms=timeout_ms, ) @@ -263,9 +274,11 @@ async def list_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Presets"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -275,15 +288,15 @@ def next_func() -> Awaitable[Optional[operations.ListPresetsResponse]]: async def empty_result(): return None - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return empty_result() results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return empty_result() - limit = request.limit if not request.limit is None else 0 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 0 + if len(results[0]) < limit_: return empty_result() next_offset = offset + len(results[0]) @@ -294,6 +307,9 @@ async def empty_result(): offset=next_offset, limit=limit, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -348,6 +364,8 @@ def get( Retrieves a preset by its slug with its currently designated version inline. + If set, this operation will use `api_key` from the global security. + :param slug: URL-safe slug identifying the preset. :param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings. This is used to track API usage per application. @@ -397,6 +415,7 @@ def get( ), security=self.sdk_configuration.security, allow_empty_value=None, + allowed_fields=["api_key"], timeout_ms=timeout_ms, ) @@ -421,9 +440,11 @@ def get( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Presets"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -479,6 +500,8 @@ async def get_async( Retrieves a preset by its slug with its currently designated version inline. + If set, this operation will use `api_key` from the global security. + :param slug: URL-safe slug identifying the preset. :param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings. This is used to track API usage per application. @@ -528,6 +551,7 @@ async def get_async( ), security=self.sdk_configuration.security, allow_empty_value=None, + allowed_fields=["api_key"], timeout_ms=timeout_ms, ) @@ -552,9 +576,11 @@ async def get_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Presets"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -599,7 +625,8 @@ def create_presets_chat_completions( *, slug: str, messages: Union[ - List[components.ChatMessages], List[components.ChatMessagesTypedDict] + Iterable[components.ChatMessages], + Iterable[components.ChatMessagesTypedDict], ], http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, @@ -616,24 +643,24 @@ def create_presets_chat_completions( frequency_penalty: OptionalNullable[float] = UNSET, image_config: Optional[ Union[ - Dict[str, components.ImageConfig], - Dict[str, components.ImageConfigTypedDict], + Mapping[str, components.ImageConfig], + Mapping[str, components.ImageConfigTypedDict], ] ] = None, - logit_bias: OptionalNullable[Dict[str, float]] = UNSET, + logit_bias: OptionalNullable[Mapping[str, float]] = UNSET, logprobs: OptionalNullable[bool] = UNSET, max_completion_tokens: OptionalNullable[int] = UNSET, max_tokens: OptionalNullable[int] = UNSET, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[Mapping[str, str]] = None, min_p: OptionalNullable[float] = UNSET, - modalities: Optional[List[components.Modality]] = None, + modalities: Optional[Iterable[components.Modality]] = None, model: Optional[str] = None, - models: Optional[List[str]] = None, + models: Optional[Iterable[str]] = None, parallel_tool_calls: OptionalNullable[bool] = UNSET, plugins: Optional[ Union[ - List[components.ChatRequestPlugin], - List[components.ChatRequestPluginTypedDict], + Iterable[components.ChatRequestPlugin], + Iterable[components.ChatRequestPluginTypedDict], ] ] = None, presence_penalty: OptionalNullable[float] = UNSET, @@ -663,8 +690,8 @@ def create_presets_chat_completions( ] = UNSET, stop_server_tools_when: Optional[ Union[ - List[components.StopServerToolsWhenCondition], - List[components.StopServerToolsWhenConditionTypedDict], + Iterable[components.StopServerToolsWhenCondition], + Iterable[components.StopServerToolsWhenConditionTypedDict], ] ] = None, stream: Optional[bool] = False, @@ -677,8 +704,8 @@ def create_presets_chat_completions( ] = None, tools: Optional[ Union[ - List[components.ChatFunctionTool], - List[components.ChatFunctionToolTypedDict], + Iterable[components.ChatFunctionTool], + Iterable[components.ChatFunctionToolTypedDict], ] ] = None, top_a: OptionalNullable[float] = UNSET, @@ -698,6 +725,8 @@ def create_presets_chat_completions( Creates a preset (or a new version of an existing one) from an inference request body. Only fields that overlap with the preset config are persisted; other fields (e.g. `messages`, `stream`, `prompt`) are silently ignored. + If set, this operation will use `api_key` from the global security. + :param slug: URL-safe slug identifying the preset. Created if it does not exist. :param messages: List of messages for the conversation :param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings. @@ -772,19 +801,25 @@ def create_presets_chat_completions( debug, Optional[components.ChatDebugOptions] ), frequency_penalty=frequency_penalty, - image_config=image_config, - logit_bias=logit_bias, + image_config=utils.unmarshal( + image_config, Optional[Dict[str, components.ImageConfig]] + ), + logit_bias=utils.unmarshal( + logit_bias, OptionalNullable[Dict[str, float]] + ), logprobs=logprobs, max_completion_tokens=max_completion_tokens, max_tokens=max_tokens, messages=utils.get_pydantic_model( messages, List[components.ChatMessages] ), - metadata=metadata, + metadata=utils.unmarshal(metadata, Optional[Dict[str, str]]), min_p=min_p, - modalities=modalities, + modalities=utils.unmarshal( + modalities, Optional[List[components.Modality]] + ), model=model, - models=models, + models=utils.unmarshal(models, Optional[List[str]]), parallel_tool_calls=parallel_tool_calls, plugins=utils.get_pydantic_model( plugins, Optional[List[components.ChatRequestPlugin]] @@ -804,7 +839,7 @@ def create_presets_chat_completions( seed=seed, service_tier=service_tier, session_id=session_id, - stop=stop, + stop=utils.unmarshal(stop, OptionalNullable[components.Stop]), stop_server_tools_when=utils.get_pydantic_model( stop_server_tools_when, Optional[List[components.StopServerToolsWhenCondition]], @@ -851,6 +886,7 @@ def create_presets_chat_completions( request.chat_request, False, False, "json", components.ChatRequest ), allow_empty_value=None, + allowed_fields=["api_key"], timeout_ms=timeout_ms, ) @@ -875,9 +911,11 @@ def create_presets_chat_completions( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Presets"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "404", "409", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -934,7 +972,8 @@ async def create_presets_chat_completions_async( *, slug: str, messages: Union[ - List[components.ChatMessages], List[components.ChatMessagesTypedDict] + Iterable[components.ChatMessages], + Iterable[components.ChatMessagesTypedDict], ], http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, @@ -951,24 +990,24 @@ async def create_presets_chat_completions_async( frequency_penalty: OptionalNullable[float] = UNSET, image_config: Optional[ Union[ - Dict[str, components.ImageConfig], - Dict[str, components.ImageConfigTypedDict], + Mapping[str, components.ImageConfig], + Mapping[str, components.ImageConfigTypedDict], ] ] = None, - logit_bias: OptionalNullable[Dict[str, float]] = UNSET, + logit_bias: OptionalNullable[Mapping[str, float]] = UNSET, logprobs: OptionalNullable[bool] = UNSET, max_completion_tokens: OptionalNullable[int] = UNSET, max_tokens: OptionalNullable[int] = UNSET, - metadata: Optional[Dict[str, str]] = None, + metadata: Optional[Mapping[str, str]] = None, min_p: OptionalNullable[float] = UNSET, - modalities: Optional[List[components.Modality]] = None, + modalities: Optional[Iterable[components.Modality]] = None, model: Optional[str] = None, - models: Optional[List[str]] = None, + models: Optional[Iterable[str]] = None, parallel_tool_calls: OptionalNullable[bool] = UNSET, plugins: Optional[ Union[ - List[components.ChatRequestPlugin], - List[components.ChatRequestPluginTypedDict], + Iterable[components.ChatRequestPlugin], + Iterable[components.ChatRequestPluginTypedDict], ] ] = None, presence_penalty: OptionalNullable[float] = UNSET, @@ -998,8 +1037,8 @@ async def create_presets_chat_completions_async( ] = UNSET, stop_server_tools_when: Optional[ Union[ - List[components.StopServerToolsWhenCondition], - List[components.StopServerToolsWhenConditionTypedDict], + Iterable[components.StopServerToolsWhenCondition], + Iterable[components.StopServerToolsWhenConditionTypedDict], ] ] = None, stream: Optional[bool] = False, @@ -1012,8 +1051,8 @@ async def create_presets_chat_completions_async( ] = None, tools: Optional[ Union[ - List[components.ChatFunctionTool], - List[components.ChatFunctionToolTypedDict], + Iterable[components.ChatFunctionTool], + Iterable[components.ChatFunctionToolTypedDict], ] ] = None, top_a: OptionalNullable[float] = UNSET, @@ -1033,6 +1072,8 @@ async def create_presets_chat_completions_async( Creates a preset (or a new version of an existing one) from an inference request body. Only fields that overlap with the preset config are persisted; other fields (e.g. `messages`, `stream`, `prompt`) are silently ignored. + If set, this operation will use `api_key` from the global security. + :param slug: URL-safe slug identifying the preset. Created if it does not exist. :param messages: List of messages for the conversation :param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings. @@ -1107,19 +1148,25 @@ async def create_presets_chat_completions_async( debug, Optional[components.ChatDebugOptions] ), frequency_penalty=frequency_penalty, - image_config=image_config, - logit_bias=logit_bias, + image_config=utils.unmarshal( + image_config, Optional[Dict[str, components.ImageConfig]] + ), + logit_bias=utils.unmarshal( + logit_bias, OptionalNullable[Dict[str, float]] + ), logprobs=logprobs, max_completion_tokens=max_completion_tokens, max_tokens=max_tokens, messages=utils.get_pydantic_model( messages, List[components.ChatMessages] ), - metadata=metadata, + metadata=utils.unmarshal(metadata, Optional[Dict[str, str]]), min_p=min_p, - modalities=modalities, + modalities=utils.unmarshal( + modalities, Optional[List[components.Modality]] + ), model=model, - models=models, + models=utils.unmarshal(models, Optional[List[str]]), parallel_tool_calls=parallel_tool_calls, plugins=utils.get_pydantic_model( plugins, Optional[List[components.ChatRequestPlugin]] @@ -1139,7 +1186,7 @@ async def create_presets_chat_completions_async( seed=seed, service_tier=service_tier, session_id=session_id, - stop=stop, + stop=utils.unmarshal(stop, OptionalNullable[components.Stop]), stop_server_tools_when=utils.get_pydantic_model( stop_server_tools_when, Optional[List[components.StopServerToolsWhenCondition]], @@ -1186,6 +1233,7 @@ async def create_presets_chat_completions_async( request.chat_request, False, False, "json", components.ChatRequest ), allow_empty_value=None, + allowed_fields=["api_key"], timeout_ms=timeout_ms, ) @@ -1210,9 +1258,11 @@ async def create_presets_chat_completions_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Presets"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "404", "409", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1270,8 +1320,8 @@ def create_presets_messages( slug: str, messages: Nullable[ Union[ - List[components.MessagesMessageParam], - List[components.MessagesMessageParamTypedDict], + Iterable[components.MessagesMessageParam], + Iterable[components.MessagesMessageParamTypedDict], ] ], model: str, @@ -1289,8 +1339,8 @@ def create_presets_messages( ] = UNSET, fallbacks: OptionalNullable[ Union[ - List[components.MessagesFallbackParam], - List[components.MessagesFallbackParamTypedDict], + Iterable[components.MessagesFallbackParam], + Iterable[components.MessagesFallbackParamTypedDict], ] ] = UNSET, max_tokens: Optional[int] = None, @@ -1300,7 +1350,7 @@ def create_presets_messages( components.MessagesRequestMetadataTypedDict, ] ] = None, - models: Optional[List[str]] = None, + models: Optional[Iterable[str]] = None, output_config: Optional[ Union[ components.MessagesOutputConfig, @@ -1309,8 +1359,8 @@ def create_presets_messages( ] = None, plugins: Optional[ Union[ - List[components.MessagesRequestPlugin], - List[components.MessagesRequestPluginTypedDict], + Iterable[components.MessagesRequestPlugin], + Iterable[components.MessagesRequestPluginTypedDict], ] ] = None, provider: OptionalNullable[ @@ -1321,11 +1371,11 @@ def create_presets_messages( service_tier: Optional[str] = None, session_id: Optional[str] = None, speed: OptionalNullable[components.Speed] = UNSET, - stop_sequences: Optional[List[str]] = None, + stop_sequences: Optional[Iterable[str]] = None, stop_server_tools_when: Optional[ Union[ - List[components.StopServerToolsWhenCondition], - List[components.StopServerToolsWhenConditionTypedDict], + Iterable[components.StopServerToolsWhenCondition], + Iterable[components.StopServerToolsWhenConditionTypedDict], ] ] = None, stream: Optional[bool] = None, @@ -1339,8 +1389,8 @@ def create_presets_messages( ] = None, tools: Optional[ Union[ - List[components.MessagesRequestToolUnion], - List[components.MessagesRequestToolUnionTypedDict], + Iterable[components.MessagesRequestToolUnion], + Iterable[components.MessagesRequestToolUnionTypedDict], ] ] = None, top_k: Optional[int] = None, @@ -1358,6 +1408,8 @@ def create_presets_messages( Creates a preset (or a new version of an existing one) from an inference request body. Only fields that overlap with the preset config are persisted; other fields (e.g. `messages`, `stream`, `prompt`) are silently ignored. + If set, this operation will use `api_key` from the global security. + :param slug: URL-safe slug identifying the preset. Created if it does not exist. :param messages: :param model: @@ -1430,7 +1482,7 @@ def create_presets_messages( metadata, Optional[components.MessagesRequestMetadata] ), model=model, - models=models, + models=utils.unmarshal(models, Optional[List[str]]), output_config=utils.get_pydantic_model( output_config, Optional[components.MessagesOutputConfig] ), @@ -1443,7 +1495,7 @@ def create_presets_messages( service_tier=service_tier, session_id=session_id, speed=speed, - stop_sequences=stop_sequences, + stop_sequences=utils.unmarshal(stop_sequences, Optional[List[str]]), stop_server_tools_when=utils.get_pydantic_model( stop_server_tools_when, Optional[List[components.StopServerToolsWhenCondition]], @@ -1493,6 +1545,7 @@ def create_presets_messages( components.MessagesRequest, ), allow_empty_value=None, + allowed_fields=["api_key"], timeout_ms=timeout_ms, ) @@ -1517,9 +1570,11 @@ def create_presets_messages( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Presets"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "404", "409", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1577,8 +1632,8 @@ async def create_presets_messages_async( slug: str, messages: Nullable[ Union[ - List[components.MessagesMessageParam], - List[components.MessagesMessageParamTypedDict], + Iterable[components.MessagesMessageParam], + Iterable[components.MessagesMessageParamTypedDict], ] ], model: str, @@ -1596,8 +1651,8 @@ async def create_presets_messages_async( ] = UNSET, fallbacks: OptionalNullable[ Union[ - List[components.MessagesFallbackParam], - List[components.MessagesFallbackParamTypedDict], + Iterable[components.MessagesFallbackParam], + Iterable[components.MessagesFallbackParamTypedDict], ] ] = UNSET, max_tokens: Optional[int] = None, @@ -1607,7 +1662,7 @@ async def create_presets_messages_async( components.MessagesRequestMetadataTypedDict, ] ] = None, - models: Optional[List[str]] = None, + models: Optional[Iterable[str]] = None, output_config: Optional[ Union[ components.MessagesOutputConfig, @@ -1616,8 +1671,8 @@ async def create_presets_messages_async( ] = None, plugins: Optional[ Union[ - List[components.MessagesRequestPlugin], - List[components.MessagesRequestPluginTypedDict], + Iterable[components.MessagesRequestPlugin], + Iterable[components.MessagesRequestPluginTypedDict], ] ] = None, provider: OptionalNullable[ @@ -1628,11 +1683,11 @@ async def create_presets_messages_async( service_tier: Optional[str] = None, session_id: Optional[str] = None, speed: OptionalNullable[components.Speed] = UNSET, - stop_sequences: Optional[List[str]] = None, + stop_sequences: Optional[Iterable[str]] = None, stop_server_tools_when: Optional[ Union[ - List[components.StopServerToolsWhenCondition], - List[components.StopServerToolsWhenConditionTypedDict], + Iterable[components.StopServerToolsWhenCondition], + Iterable[components.StopServerToolsWhenConditionTypedDict], ] ] = None, stream: Optional[bool] = None, @@ -1646,8 +1701,8 @@ async def create_presets_messages_async( ] = None, tools: Optional[ Union[ - List[components.MessagesRequestToolUnion], - List[components.MessagesRequestToolUnionTypedDict], + Iterable[components.MessagesRequestToolUnion], + Iterable[components.MessagesRequestToolUnionTypedDict], ] ] = None, top_k: Optional[int] = None, @@ -1665,6 +1720,8 @@ async def create_presets_messages_async( Creates a preset (or a new version of an existing one) from an inference request body. Only fields that overlap with the preset config are persisted; other fields (e.g. `messages`, `stream`, `prompt`) are silently ignored. + If set, this operation will use `api_key` from the global security. + :param slug: URL-safe slug identifying the preset. Created if it does not exist. :param messages: :param model: @@ -1737,7 +1794,7 @@ async def create_presets_messages_async( metadata, Optional[components.MessagesRequestMetadata] ), model=model, - models=models, + models=utils.unmarshal(models, Optional[List[str]]), output_config=utils.get_pydantic_model( output_config, Optional[components.MessagesOutputConfig] ), @@ -1750,7 +1807,7 @@ async def create_presets_messages_async( service_tier=service_tier, session_id=session_id, speed=speed, - stop_sequences=stop_sequences, + stop_sequences=utils.unmarshal(stop_sequences, Optional[List[str]]), stop_server_tools_when=utils.get_pydantic_model( stop_server_tools_when, Optional[List[components.StopServerToolsWhenCondition]], @@ -1800,6 +1857,7 @@ async def create_presets_messages_async( components.MessagesRequest, ), allow_empty_value=None, + allowed_fields=["api_key"], timeout_ms=timeout_ms, ) @@ -1824,9 +1882,11 @@ async def create_presets_messages_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Presets"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "404", "409", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1898,26 +1958,26 @@ def create_presets_responses( frequency_penalty: OptionalNullable[float] = UNSET, image_config: Optional[ Union[ - Dict[str, components.ImageConfig], - Dict[str, components.ImageConfigTypedDict], + Mapping[str, components.ImageConfig], + Mapping[str, components.ImageConfigTypedDict], ] ] = None, - include: OptionalNullable[List[components.ResponseIncludesEnum]] = UNSET, + include: OptionalNullable[Iterable[components.ResponseIncludesEnum]] = UNSET, input: Optional[ Union[components.InputsUnion, components.InputsUnionTypedDict] ] = None, instructions: OptionalNullable[str] = UNSET, max_output_tokens: OptionalNullable[int] = UNSET, max_tool_calls: OptionalNullable[int] = UNSET, - metadata: OptionalNullable[Dict[str, str]] = UNSET, - modalities: Optional[List[components.OutputModalityEnum]] = None, + metadata: OptionalNullable[Mapping[str, str]] = UNSET, + modalities: Optional[Iterable[components.OutputModalityEnum]] = None, model: Optional[str] = None, - models: Optional[List[str]] = None, + models: Optional[Iterable[str]] = None, parallel_tool_calls: OptionalNullable[bool] = UNSET, plugins: Optional[ Union[ - List[components.ResponsesRequestPlugin], - List[components.ResponsesRequestPluginTypedDict], + Iterable[components.ResponsesRequestPlugin], + Iterable[components.ResponsesRequestPluginTypedDict], ] ] = None, presence_penalty: OptionalNullable[float] = UNSET, @@ -1942,8 +2002,8 @@ def create_presets_responses( session_id: Optional[str] = None, stop_server_tools_when: Optional[ Union[ - List[components.StopServerToolsWhenCondition], - List[components.StopServerToolsWhenConditionTypedDict], + Iterable[components.StopServerToolsWhenCondition], + Iterable[components.StopServerToolsWhenConditionTypedDict], ] ] = None, stream: Optional[bool] = False, @@ -1959,8 +2019,8 @@ def create_presets_responses( ] = None, tools: Optional[ Union[ - List[components.ResponsesRequestToolUnion], - List[components.ResponsesRequestToolUnionTypedDict], + Iterable[components.ResponsesRequestToolUnion], + Iterable[components.ResponsesRequestToolUnionTypedDict], ] ] = None, top_k: Optional[int] = None, @@ -1980,6 +2040,8 @@ def create_presets_responses( Creates a preset (or a new version of an existing one) from an inference request body. Only fields that overlap with the preset config are persisted; other fields (e.g. `messages`, `stream`, `prompt`) are silently ignored. + If set, this operation will use `api_key` from the global security. + :param slug: URL-safe slug identifying the preset. Created if it does not exist. :param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings. This is used to track API usage per application. @@ -2054,16 +2116,22 @@ def create_presets_responses( debug, Optional[components.ChatDebugOptions] ), frequency_penalty=frequency_penalty, - image_config=image_config, - include=include, + image_config=utils.unmarshal( + image_config, Optional[Dict[str, components.ImageConfig]] + ), + include=utils.unmarshal( + include, OptionalNullable[List[components.ResponseIncludesEnum]] + ), input=utils.get_pydantic_model(input, Optional[components.InputsUnion]), instructions=instructions, max_output_tokens=max_output_tokens, max_tool_calls=max_tool_calls, - metadata=metadata, - modalities=modalities, + metadata=utils.unmarshal(metadata, OptionalNullable[Dict[str, str]]), + modalities=utils.unmarshal( + modalities, Optional[List[components.OutputModalityEnum]] + ), model=model, - models=models, + models=utils.unmarshal(models, Optional[List[str]]), parallel_tool_calls=parallel_tool_calls, plugins=utils.get_pydantic_model( plugins, Optional[List[components.ResponsesRequestPlugin]] @@ -2133,6 +2201,7 @@ def create_presets_responses( components.ResponsesRequest, ), allow_empty_value=None, + allowed_fields=["api_key"], timeout_ms=timeout_ms, ) @@ -2157,9 +2226,11 @@ def create_presets_responses( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Presets"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "404", "409", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2231,26 +2302,26 @@ async def create_presets_responses_async( frequency_penalty: OptionalNullable[float] = UNSET, image_config: Optional[ Union[ - Dict[str, components.ImageConfig], - Dict[str, components.ImageConfigTypedDict], + Mapping[str, components.ImageConfig], + Mapping[str, components.ImageConfigTypedDict], ] ] = None, - include: OptionalNullable[List[components.ResponseIncludesEnum]] = UNSET, + include: OptionalNullable[Iterable[components.ResponseIncludesEnum]] = UNSET, input: Optional[ Union[components.InputsUnion, components.InputsUnionTypedDict] ] = None, instructions: OptionalNullable[str] = UNSET, max_output_tokens: OptionalNullable[int] = UNSET, max_tool_calls: OptionalNullable[int] = UNSET, - metadata: OptionalNullable[Dict[str, str]] = UNSET, - modalities: Optional[List[components.OutputModalityEnum]] = None, + metadata: OptionalNullable[Mapping[str, str]] = UNSET, + modalities: Optional[Iterable[components.OutputModalityEnum]] = None, model: Optional[str] = None, - models: Optional[List[str]] = None, + models: Optional[Iterable[str]] = None, parallel_tool_calls: OptionalNullable[bool] = UNSET, plugins: Optional[ Union[ - List[components.ResponsesRequestPlugin], - List[components.ResponsesRequestPluginTypedDict], + Iterable[components.ResponsesRequestPlugin], + Iterable[components.ResponsesRequestPluginTypedDict], ] ] = None, presence_penalty: OptionalNullable[float] = UNSET, @@ -2275,8 +2346,8 @@ async def create_presets_responses_async( session_id: Optional[str] = None, stop_server_tools_when: Optional[ Union[ - List[components.StopServerToolsWhenCondition], - List[components.StopServerToolsWhenConditionTypedDict], + Iterable[components.StopServerToolsWhenCondition], + Iterable[components.StopServerToolsWhenConditionTypedDict], ] ] = None, stream: Optional[bool] = False, @@ -2292,8 +2363,8 @@ async def create_presets_responses_async( ] = None, tools: Optional[ Union[ - List[components.ResponsesRequestToolUnion], - List[components.ResponsesRequestToolUnionTypedDict], + Iterable[components.ResponsesRequestToolUnion], + Iterable[components.ResponsesRequestToolUnionTypedDict], ] ] = None, top_k: Optional[int] = None, @@ -2313,6 +2384,8 @@ async def create_presets_responses_async( Creates a preset (or a new version of an existing one) from an inference request body. Only fields that overlap with the preset config are persisted; other fields (e.g. `messages`, `stream`, `prompt`) are silently ignored. + If set, this operation will use `api_key` from the global security. + :param slug: URL-safe slug identifying the preset. Created if it does not exist. :param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings. This is used to track API usage per application. @@ -2387,16 +2460,22 @@ async def create_presets_responses_async( debug, Optional[components.ChatDebugOptions] ), frequency_penalty=frequency_penalty, - image_config=image_config, - include=include, + image_config=utils.unmarshal( + image_config, Optional[Dict[str, components.ImageConfig]] + ), + include=utils.unmarshal( + include, OptionalNullable[List[components.ResponseIncludesEnum]] + ), input=utils.get_pydantic_model(input, Optional[components.InputsUnion]), instructions=instructions, max_output_tokens=max_output_tokens, max_tool_calls=max_tool_calls, - metadata=metadata, - modalities=modalities, + metadata=utils.unmarshal(metadata, OptionalNullable[Dict[str, str]]), + modalities=utils.unmarshal( + modalities, Optional[List[components.OutputModalityEnum]] + ), model=model, - models=models, + models=utils.unmarshal(models, Optional[List[str]]), parallel_tool_calls=parallel_tool_calls, plugins=utils.get_pydantic_model( plugins, Optional[List[components.ResponsesRequestPlugin]] @@ -2466,6 +2545,7 @@ async def create_presets_responses_async( components.ResponsesRequest, ), allow_empty_value=None, + allowed_fields=["api_key"], timeout_ms=timeout_ms, ) @@ -2490,9 +2570,11 @@ async def create_presets_responses_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Presets"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "404", "409", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2562,6 +2644,8 @@ def list_versions( Lists all versions of a preset, ordered by version number ascending (oldest first). + If set, this operation will use `api_key` from the global security. + :param slug: URL-safe slug identifying the preset. :param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings. This is used to track API usage per application. @@ -2615,6 +2699,7 @@ def list_versions( ), security=self.sdk_configuration.security, allow_empty_value=None, + allowed_fields=["api_key"], timeout_ms=timeout_ms, ) @@ -2639,24 +2724,26 @@ def list_versions( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Presets"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) def next_func() -> Optional[operations.ListPresetVersionsResponse]: body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]]) - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return None results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return None - limit = request.limit if not request.limit is None else 0 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 0 + if len(results[0]) < limit_: return None next_offset = offset + len(results[0]) @@ -2668,6 +2755,9 @@ def next_func() -> Optional[operations.ListPresetVersionsResponse]: offset=next_offset, limit=limit, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -2729,6 +2819,8 @@ async def list_versions_async( Lists all versions of a preset, ordered by version number ascending (oldest first). + If set, this operation will use `api_key` from the global security. + :param slug: URL-safe slug identifying the preset. :param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings. This is used to track API usage per application. @@ -2782,6 +2874,7 @@ async def list_versions_async( ), security=self.sdk_configuration.security, allow_empty_value=None, + allowed_fields=["api_key"], timeout_ms=timeout_ms, ) @@ -2806,9 +2899,11 @@ async def list_versions_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Presets"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2818,15 +2913,15 @@ def next_func() -> Awaitable[Optional[operations.ListPresetVersionsResponse]]: async def empty_result(): return None - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return empty_result() results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return empty_result() - limit = request.limit if not request.limit is None else 0 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 0 + if len(results[0]) < limit_: return empty_result() next_offset = offset + len(results[0]) @@ -2838,6 +2933,9 @@ async def empty_result(): offset=next_offset, limit=limit, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -2898,6 +2996,8 @@ def get_version( Retrieves a specific version of a preset by its slug and version number. + If set, this operation will use `api_key` from the global security. + :param slug: URL-safe slug identifying the preset. :param version: Version number of the preset. :param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings. @@ -2949,6 +3049,7 @@ def get_version( ), security=self.sdk_configuration.security, allow_empty_value=None, + allowed_fields=["api_key"], timeout_ms=timeout_ms, ) @@ -2973,9 +3074,11 @@ def get_version( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Presets"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -3034,6 +3137,8 @@ async def get_version_async( Retrieves a specific version of a preset by its slug and version number. + If set, this operation will use `api_key` from the global security. + :param slug: URL-safe slug identifying the preset. :param version: Version number of the preset. :param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings. @@ -3085,6 +3190,7 @@ async def get_version_async( ), security=self.sdk_configuration.security, allow_empty_value=None, + allowed_fields=["api_key"], timeout_ms=timeout_ms, ) @@ -3109,9 +3215,11 @@ async def get_version_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Presets"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/openrouter/providers.py b/src/openrouter/providers.py index 1c940641..c1fd7081 100644 --- a/src/openrouter/providers.py +++ b/src/openrouter/providers.py @@ -96,9 +96,11 @@ def list( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Providers"], + extensions=None, ), request=req, - error_status_codes=["4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -207,9 +209,11 @@ async def list_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Providers"], + extensions=None, ), request=req, - error_status_codes=["4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/openrouter/rerank.py b/src/openrouter/rerank.py index 96401a2f..76378ffb 100644 --- a/src/openrouter/rerank.py +++ b/src/openrouter/rerank.py @@ -7,7 +7,7 @@ from openrouter.types import OptionalNullable, UNSET from openrouter.utils import get_security_from_env from openrouter.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, List, Mapping, Optional, Union +from typing import Any, Iterable, List, Mapping, Optional, Union class RerankAcceptEnum(str, Enum): @@ -21,7 +21,9 @@ class Rerank(BaseSDK): def rerank( self, *, - documents: Union[List[operations.Document], List[operations.DocumentTypedDict]], + documents: Union[ + Iterable[operations.Document], Iterable[operations.DocumentTypedDict] + ], model: str, query: str, http_referer: Optional[str] = None, @@ -35,8 +37,8 @@ def rerank( top_n: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, accept_header_override: Optional[RerankAcceptEnum] = None, + timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, ) -> operations.CreateRerankResponse: r"""Submit a rerank request @@ -140,22 +142,11 @@ def rerank( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Rerank"], + extensions=None, ), request=req, - error_status_codes=[ - "400", - "401", - "402", - "404", - "429", - "4XX", - "500", - "502", - "503", - "524", - "529", - "5XX", - ], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -232,7 +223,9 @@ def rerank( async def rerank_async( self, *, - documents: Union[List[operations.Document], List[operations.DocumentTypedDict]], + documents: Union[ + Iterable[operations.Document], Iterable[operations.DocumentTypedDict] + ], model: str, query: str, http_referer: Optional[str] = None, @@ -246,8 +239,8 @@ async def rerank_async( top_n: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, accept_header_override: Optional[RerankAcceptEnum] = None, + timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, ) -> operations.CreateRerankResponse: r"""Submit a rerank request @@ -351,22 +344,11 @@ async def rerank_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Rerank"], + extensions=None, ), request=req, - error_status_codes=[ - "400", - "401", - "402", - "404", - "429", - "4XX", - "500", - "502", - "503", - "524", - "529", - "5XX", - ], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/openrouter/responses.py b/src/openrouter/responses.py index e80404c4..28b31f4c 100644 --- a/src/openrouter/responses.py +++ b/src/openrouter/responses.py @@ -1,18 +1,22 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from .basesdk import BaseSDK -from enum import Enum from openrouter import components, errors, operations, utils from openrouter._hooks import HookContext from openrouter.types import OptionalNullable, UNSET from openrouter.utils import eventstreaming, get_security_from_env from openrouter.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Dict, List, Literal, Mapping, Optional, Union, overload - - -class SendAcceptEnum(str, Enum): - APPLICATION_JSON = "application/json" - TEXT_EVENT_STREAM = "text/event-stream" +from typing import ( + Any, + Dict, + Iterable, + List, + Literal, + Mapping, + Optional, + Union, + overload, +) class Responses(BaseSDK): @@ -39,26 +43,26 @@ def send( frequency_penalty: OptionalNullable[float] = UNSET, image_config: Optional[ Union[ - Dict[str, components.ImageConfig], - Dict[str, components.ImageConfigTypedDict], + Mapping[str, components.ImageConfig], + Mapping[str, components.ImageConfigTypedDict], ] ] = None, - include: OptionalNullable[List[components.ResponseIncludesEnum]] = UNSET, + include: OptionalNullable[Iterable[components.ResponseIncludesEnum]] = UNSET, input: Optional[ Union[components.InputsUnion, components.InputsUnionTypedDict] ] = None, instructions: OptionalNullable[str] = UNSET, max_output_tokens: OptionalNullable[int] = UNSET, max_tool_calls: OptionalNullable[int] = UNSET, - metadata: OptionalNullable[Dict[str, str]] = UNSET, - modalities: Optional[List[components.OutputModalityEnum]] = None, + metadata: OptionalNullable[Mapping[str, str]] = UNSET, + modalities: Optional[Iterable[components.OutputModalityEnum]] = None, model: Optional[str] = None, - models: Optional[List[str]] = None, + models: Optional[Iterable[str]] = None, parallel_tool_calls: OptionalNullable[bool] = UNSET, plugins: Optional[ Union[ - List[components.ResponsesRequestPlugin], - List[components.ResponsesRequestPluginTypedDict], + Iterable[components.ResponsesRequestPlugin], + Iterable[components.ResponsesRequestPluginTypedDict], ] ] = None, presence_penalty: OptionalNullable[float] = UNSET, @@ -83,8 +87,8 @@ def send( session_id: Optional[str] = None, stop_server_tools_when: Optional[ Union[ - List[components.StopServerToolsWhenCondition], - List[components.StopServerToolsWhenConditionTypedDict], + Iterable[components.StopServerToolsWhenCondition], + Iterable[components.StopServerToolsWhenConditionTypedDict], ] ] = None, stream: Union[Literal[False], None] = None, @@ -100,8 +104,8 @@ def send( ] = None, tools: Optional[ Union[ - List[components.ResponsesRequestToolUnion], - List[components.ResponsesRequestToolUnionTypedDict], + Iterable[components.ResponsesRequestToolUnion], + Iterable[components.ResponsesRequestToolUnionTypedDict], ] ] = None, top_k: Optional[int] = None, @@ -169,7 +173,6 @@ def send( :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method :param http_headers: Additional headers to set or replace on requests. """ @@ -194,26 +197,26 @@ def send( frequency_penalty: OptionalNullable[float] = UNSET, image_config: Optional[ Union[ - Dict[str, components.ImageConfig], - Dict[str, components.ImageConfigTypedDict], + Mapping[str, components.ImageConfig], + Mapping[str, components.ImageConfigTypedDict], ] ] = None, - include: OptionalNullable[List[components.ResponseIncludesEnum]] = UNSET, + include: OptionalNullable[Iterable[components.ResponseIncludesEnum]] = UNSET, input: Optional[ Union[components.InputsUnion, components.InputsUnionTypedDict] ] = None, instructions: OptionalNullable[str] = UNSET, max_output_tokens: OptionalNullable[int] = UNSET, max_tool_calls: OptionalNullable[int] = UNSET, - metadata: OptionalNullable[Dict[str, str]] = UNSET, - modalities: Optional[List[components.OutputModalityEnum]] = None, + metadata: OptionalNullable[Mapping[str, str]] = UNSET, + modalities: Optional[Iterable[components.OutputModalityEnum]] = None, model: Optional[str] = None, - models: Optional[List[str]] = None, + models: Optional[Iterable[str]] = None, parallel_tool_calls: OptionalNullable[bool] = UNSET, plugins: Optional[ Union[ - List[components.ResponsesRequestPlugin], - List[components.ResponsesRequestPluginTypedDict], + Iterable[components.ResponsesRequestPlugin], + Iterable[components.ResponsesRequestPluginTypedDict], ] ] = None, presence_penalty: OptionalNullable[float] = UNSET, @@ -238,8 +241,8 @@ def send( session_id: Optional[str] = None, stop_server_tools_when: Optional[ Union[ - List[components.StopServerToolsWhenCondition], - List[components.StopServerToolsWhenConditionTypedDict], + Iterable[components.StopServerToolsWhenCondition], + Iterable[components.StopServerToolsWhenConditionTypedDict], ] ] = None, stream: Literal[True], @@ -255,8 +258,8 @@ def send( ] = None, tools: Optional[ Union[ - List[components.ResponsesRequestToolUnion], - List[components.ResponsesRequestToolUnionTypedDict], + Iterable[components.ResponsesRequestToolUnion], + Iterable[components.ResponsesRequestToolUnionTypedDict], ] ] = None, top_k: Optional[int] = None, @@ -324,7 +327,163 @@ def send( :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method + :param http_headers: Additional headers to set or replace on requests. + """ + + @overload + def send( + self, + *, + http_referer: Optional[str] = None, + x_open_router_title: Optional[str] = None, + x_open_router_categories: Optional[str] = None, + x_open_router_metadata: Optional[components.MetadataLevel] = None, + background: OptionalNullable[bool] = UNSET, + cache_control: Optional[ + Union[ + components.AnthropicCacheControlDirective, + components.AnthropicCacheControlDirectiveTypedDict, + ] + ] = None, + debug: Optional[ + Union[components.ChatDebugOptions, components.ChatDebugOptionsTypedDict] + ] = None, + frequency_penalty: OptionalNullable[float] = UNSET, + image_config: Optional[ + Union[ + Mapping[str, components.ImageConfig], + Mapping[str, components.ImageConfigTypedDict], + ] + ] = None, + include: OptionalNullable[Iterable[components.ResponseIncludesEnum]] = UNSET, + input: Optional[ + Union[components.InputsUnion, components.InputsUnionTypedDict] + ] = None, + instructions: OptionalNullable[str] = UNSET, + max_output_tokens: OptionalNullable[int] = UNSET, + max_tool_calls: OptionalNullable[int] = UNSET, + metadata: OptionalNullable[Mapping[str, str]] = UNSET, + modalities: Optional[Iterable[components.OutputModalityEnum]] = None, + model: Optional[str] = None, + models: Optional[Iterable[str]] = None, + parallel_tool_calls: OptionalNullable[bool] = UNSET, + plugins: Optional[ + Union[ + Iterable[components.ResponsesRequestPlugin], + Iterable[components.ResponsesRequestPluginTypedDict], + ] + ] = None, + presence_penalty: OptionalNullable[float] = UNSET, + previous_response_id: OptionalNullable[str] = UNSET, + prompt: OptionalNullable[ + Union[ + components.StoredPromptTemplate, + components.StoredPromptTemplateTypedDict, + ] + ] = UNSET, + prompt_cache_key: OptionalNullable[str] = UNSET, + provider: OptionalNullable[ + Union[ + components.ProviderPreferences, components.ProviderPreferencesTypedDict + ] + ] = UNSET, + reasoning: OptionalNullable[ + Union[components.ReasoningConfig, components.ReasoningConfigTypedDict] + ] = UNSET, + safety_identifier: OptionalNullable[str] = UNSET, + service_tier: OptionalNullable[components.ResponsesRequestServiceTier] = "auto", + session_id: Optional[str] = None, + stop_server_tools_when: Optional[ + Union[ + Iterable[components.StopServerToolsWhenCondition], + Iterable[components.StopServerToolsWhenConditionTypedDict], + ] + ] = None, + stream: bool, + temperature: OptionalNullable[float] = UNSET, + text: Optional[ + Union[components.TextExtendedConfig, components.TextExtendedConfigTypedDict] + ] = None, + tool_choice: Optional[ + Union[ + components.OpenAIResponsesToolChoiceUnion, + components.OpenAIResponsesToolChoiceUnionTypedDict, + ] + ] = None, + tools: Optional[ + Union[ + Iterable[components.ResponsesRequestToolUnion], + Iterable[components.ResponsesRequestToolUnionTypedDict], + ] + ] = None, + top_k: Optional[int] = None, + top_logprobs: OptionalNullable[int] = UNSET, + top_p: OptionalNullable[float] = UNSET, + trace: Optional[ + Union[components.TraceConfig, components.TraceConfigTypedDict] + ] = None, + truncation: OptionalNullable[components.OpenAIResponsesTruncation] = UNSET, + user: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> Union[ + components.OpenResponsesResult, + eventstreaming.EventStream[components.StreamEvents], + ]: + r"""Create a response + + Creates a streaming or non-streaming response using OpenResponses API format + + :param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings. + This is used to track API usage per application. + + :param x_open_router_title: The app display name allows you to customize how your app appears in OpenRouter's dashboard. + + :param x_open_router_categories: Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings. + + :param x_open_router_metadata: 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. + :param background: + :param cache_control: Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. + :param debug: Debug options for inspecting request transformations (streaming only) + :param frequency_penalty: + :param image_config: Provider-specific image configuration options. Keys and values vary by model/provider. See https://openrouter.ai/docs/guides/overview/multimodal/image-generation for more details. + :param include: + :param input: Input for a response request - can be a string or array of items + :param instructions: + :param max_output_tokens: + :param max_tool_calls: + :param metadata: Metadata key-value pairs for the request. Keys must be ≤64 characters and cannot contain brackets. Values must be ≤512 characters. Maximum 16 pairs allowed. + :param modalities: Output modalities for the response. Supported values are \"text\" and \"image\". + :param model: + :param models: + :param parallel_tool_calls: + :param plugins: Plugins you want to enable for this request, including their settings. + :param presence_penalty: + :param previous_response_id: + :param prompt: + :param prompt_cache_key: + :param provider: When multiple model providers are available, optionally indicate your routing preference. + :param reasoning: Configuration for reasoning mode in the response + :param safety_identifier: + :param service_tier: + :param session_id: A unique identifier for grouping related requests (e.g., a conversation or agent workflow). When provided, OpenRouter uses it as the sticky routing key, routing all requests in the session to the same provider to maximize prompt cache hits. Also used for observability grouping. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. + :param stop_server_tools_when: Stop conditions for the server-tool agent loop. Any condition firing halts the loop (OR logic). When set, this overrides `max_tool_calls`. + :param stream: + :param temperature: + :param text: Text output configuration including format and verbosity + :param tool_choice: + :param tools: + :param top_k: + :param top_logprobs: + :param top_p: + :param trace: Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. + :param truncation: + :param user: A unique identifier representing your end-user, which helps distinguish between different users of your app. This allows your app to identify specific users in case of abuse reports, preventing your entire app from being affected by the actions of individual users. Maximum of 256 characters. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds :param http_headers: Additional headers to set or replace on requests. """ @@ -348,26 +507,26 @@ def send( frequency_penalty: OptionalNullable[float] = UNSET, image_config: Optional[ Union[ - Dict[str, components.ImageConfig], - Dict[str, components.ImageConfigTypedDict], + Mapping[str, components.ImageConfig], + Mapping[str, components.ImageConfigTypedDict], ] ] = None, - include: OptionalNullable[List[components.ResponseIncludesEnum]] = UNSET, + include: OptionalNullable[Iterable[components.ResponseIncludesEnum]] = UNSET, input: Optional[ Union[components.InputsUnion, components.InputsUnionTypedDict] ] = None, instructions: OptionalNullable[str] = UNSET, max_output_tokens: OptionalNullable[int] = UNSET, max_tool_calls: OptionalNullable[int] = UNSET, - metadata: OptionalNullable[Dict[str, str]] = UNSET, - modalities: Optional[List[components.OutputModalityEnum]] = None, + metadata: OptionalNullable[Mapping[str, str]] = UNSET, + modalities: Optional[Iterable[components.OutputModalityEnum]] = None, model: Optional[str] = None, - models: Optional[List[str]] = None, + models: Optional[Iterable[str]] = None, parallel_tool_calls: OptionalNullable[bool] = UNSET, plugins: Optional[ Union[ - List[components.ResponsesRequestPlugin], - List[components.ResponsesRequestPluginTypedDict], + Iterable[components.ResponsesRequestPlugin], + Iterable[components.ResponsesRequestPluginTypedDict], ] ] = None, presence_penalty: OptionalNullable[float] = UNSET, @@ -392,8 +551,8 @@ def send( session_id: Optional[str] = None, stop_server_tools_when: Optional[ Union[ - List[components.StopServerToolsWhenCondition], - List[components.StopServerToolsWhenConditionTypedDict], + Iterable[components.StopServerToolsWhenCondition], + Iterable[components.StopServerToolsWhenConditionTypedDict], ] ] = None, stream: Optional[bool] = False, @@ -409,8 +568,8 @@ def send( ] = None, tools: Optional[ Union[ - List[components.ResponsesRequestToolUnion], - List[components.ResponsesRequestToolUnionTypedDict], + Iterable[components.ResponsesRequestToolUnion], + Iterable[components.ResponsesRequestToolUnionTypedDict], ] ] = None, top_k: Optional[int] = None, @@ -425,7 +584,10 @@ def send( server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.CreateResponsesResponse: + ) -> Union[ + components.OpenResponsesResult, + eventstreaming.EventStream[components.StreamEvents], + ]: r"""Create a response Creates a streaming or non-streaming response using OpenResponses API format @@ -478,7 +640,6 @@ def send( :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method :param http_headers: Additional headers to set or replace on requests. """ base_url = None @@ -505,16 +666,22 @@ def send( debug, Optional[components.ChatDebugOptions] ), frequency_penalty=frequency_penalty, - image_config=image_config, - include=include, + image_config=utils.unmarshal( + image_config, Optional[Dict[str, components.ImageConfig]] + ), + include=utils.unmarshal( + include, OptionalNullable[List[components.ResponseIncludesEnum]] + ), input=utils.get_pydantic_model(input, Optional[components.InputsUnion]), instructions=instructions, max_output_tokens=max_output_tokens, max_tool_calls=max_tool_calls, - metadata=metadata, - modalities=modalities, + metadata=utils.unmarshal(metadata, OptionalNullable[Dict[str, str]]), + modalities=utils.unmarshal( + modalities, Optional[List[components.OutputModalityEnum]] + ), model=model, - models=models, + models=utils.unmarshal(models, Optional[List[str]]), parallel_tool_calls=parallel_tool_calls, plugins=utils.get_pydantic_model( plugins, Optional[List[components.ResponsesRequestPlugin]] @@ -568,7 +735,9 @@ def send( request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="text/event-stream" if stream else "application/json", + accept_header_value="text/event-stream" + if stream is True + else "application/json", http_headers=http_headers, _globals=operations.CreateResponsesGlobals( http_referer=self.sdk_configuration.globals.http_referer, @@ -608,27 +777,12 @@ def send( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["beta.responses"], + extensions=None, ), request=req, - error_status_codes=[ - "400", - "401", - "402", - "403", - "404", - "408", - "413", - "422", - "429", - "4XX", - "500", - "502", - "503", - "524", - "529", - "5XX", - ], - stream=True, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + stream=stream is True, retry_config=retry_config, ) @@ -641,8 +795,8 @@ def send( if utils.match_response(http_res, "200", "text/event-stream"): return eventstreaming.EventStream( http_res, - lambda raw: utils.unmarshal_json( - raw, components.ResponsesStreamingResponse + lambda raw: unmarshal_json_response( + components.ResponsesStreamingResponse, http_res, raw ).data, sentinel="[DONE]", client_ref=self, @@ -788,26 +942,26 @@ async def send_async( frequency_penalty: OptionalNullable[float] = UNSET, image_config: Optional[ Union[ - Dict[str, components.ImageConfig], - Dict[str, components.ImageConfigTypedDict], + Mapping[str, components.ImageConfig], + Mapping[str, components.ImageConfigTypedDict], ] ] = None, - include: OptionalNullable[List[components.ResponseIncludesEnum]] = UNSET, + include: OptionalNullable[Iterable[components.ResponseIncludesEnum]] = UNSET, input: Optional[ Union[components.InputsUnion, components.InputsUnionTypedDict] ] = None, instructions: OptionalNullable[str] = UNSET, max_output_tokens: OptionalNullable[int] = UNSET, max_tool_calls: OptionalNullable[int] = UNSET, - metadata: OptionalNullable[Dict[str, str]] = UNSET, - modalities: Optional[List[components.OutputModalityEnum]] = None, + metadata: OptionalNullable[Mapping[str, str]] = UNSET, + modalities: Optional[Iterable[components.OutputModalityEnum]] = None, model: Optional[str] = None, - models: Optional[List[str]] = None, + models: Optional[Iterable[str]] = None, parallel_tool_calls: OptionalNullable[bool] = UNSET, plugins: Optional[ Union[ - List[components.ResponsesRequestPlugin], - List[components.ResponsesRequestPluginTypedDict], + Iterable[components.ResponsesRequestPlugin], + Iterable[components.ResponsesRequestPluginTypedDict], ] ] = None, presence_penalty: OptionalNullable[float] = UNSET, @@ -832,8 +986,8 @@ async def send_async( session_id: Optional[str] = None, stop_server_tools_when: Optional[ Union[ - List[components.StopServerToolsWhenCondition], - List[components.StopServerToolsWhenConditionTypedDict], + Iterable[components.StopServerToolsWhenCondition], + Iterable[components.StopServerToolsWhenConditionTypedDict], ] ] = None, stream: Union[Literal[False], None] = None, @@ -849,8 +1003,8 @@ async def send_async( ] = None, tools: Optional[ Union[ - List[components.ResponsesRequestToolUnion], - List[components.ResponsesRequestToolUnionTypedDict], + Iterable[components.ResponsesRequestToolUnion], + Iterable[components.ResponsesRequestToolUnionTypedDict], ] ] = None, top_k: Optional[int] = None, @@ -918,7 +1072,6 @@ async def send_async( :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method :param http_headers: Additional headers to set or replace on requests. """ @@ -943,26 +1096,26 @@ async def send_async( frequency_penalty: OptionalNullable[float] = UNSET, image_config: Optional[ Union[ - Dict[str, components.ImageConfig], - Dict[str, components.ImageConfigTypedDict], + Mapping[str, components.ImageConfig], + Mapping[str, components.ImageConfigTypedDict], ] ] = None, - include: OptionalNullable[List[components.ResponseIncludesEnum]] = UNSET, + include: OptionalNullable[Iterable[components.ResponseIncludesEnum]] = UNSET, input: Optional[ Union[components.InputsUnion, components.InputsUnionTypedDict] ] = None, instructions: OptionalNullable[str] = UNSET, max_output_tokens: OptionalNullable[int] = UNSET, max_tool_calls: OptionalNullable[int] = UNSET, - metadata: OptionalNullable[Dict[str, str]] = UNSET, - modalities: Optional[List[components.OutputModalityEnum]] = None, + metadata: OptionalNullable[Mapping[str, str]] = UNSET, + modalities: Optional[Iterable[components.OutputModalityEnum]] = None, model: Optional[str] = None, - models: Optional[List[str]] = None, + models: Optional[Iterable[str]] = None, parallel_tool_calls: OptionalNullable[bool] = UNSET, plugins: Optional[ Union[ - List[components.ResponsesRequestPlugin], - List[components.ResponsesRequestPluginTypedDict], + Iterable[components.ResponsesRequestPlugin], + Iterable[components.ResponsesRequestPluginTypedDict], ] ] = None, presence_penalty: OptionalNullable[float] = UNSET, @@ -987,8 +1140,8 @@ async def send_async( session_id: Optional[str] = None, stop_server_tools_when: Optional[ Union[ - List[components.StopServerToolsWhenCondition], - List[components.StopServerToolsWhenConditionTypedDict], + Iterable[components.StopServerToolsWhenCondition], + Iterable[components.StopServerToolsWhenConditionTypedDict], ] ] = None, stream: Literal[True], @@ -1004,8 +1157,8 @@ async def send_async( ] = None, tools: Optional[ Union[ - List[components.ResponsesRequestToolUnion], - List[components.ResponsesRequestToolUnionTypedDict], + Iterable[components.ResponsesRequestToolUnion], + Iterable[components.ResponsesRequestToolUnionTypedDict], ] ] = None, top_k: Optional[int] = None, @@ -1073,7 +1226,163 @@ async def send_async( :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method + :param http_headers: Additional headers to set or replace on requests. + """ + + @overload + async def send_async( + self, + *, + http_referer: Optional[str] = None, + x_open_router_title: Optional[str] = None, + x_open_router_categories: Optional[str] = None, + x_open_router_metadata: Optional[components.MetadataLevel] = None, + background: OptionalNullable[bool] = UNSET, + cache_control: Optional[ + Union[ + components.AnthropicCacheControlDirective, + components.AnthropicCacheControlDirectiveTypedDict, + ] + ] = None, + debug: Optional[ + Union[components.ChatDebugOptions, components.ChatDebugOptionsTypedDict] + ] = None, + frequency_penalty: OptionalNullable[float] = UNSET, + image_config: Optional[ + Union[ + Mapping[str, components.ImageConfig], + Mapping[str, components.ImageConfigTypedDict], + ] + ] = None, + include: OptionalNullable[Iterable[components.ResponseIncludesEnum]] = UNSET, + input: Optional[ + Union[components.InputsUnion, components.InputsUnionTypedDict] + ] = None, + instructions: OptionalNullable[str] = UNSET, + max_output_tokens: OptionalNullable[int] = UNSET, + max_tool_calls: OptionalNullable[int] = UNSET, + metadata: OptionalNullable[Mapping[str, str]] = UNSET, + modalities: Optional[Iterable[components.OutputModalityEnum]] = None, + model: Optional[str] = None, + models: Optional[Iterable[str]] = None, + parallel_tool_calls: OptionalNullable[bool] = UNSET, + plugins: Optional[ + Union[ + Iterable[components.ResponsesRequestPlugin], + Iterable[components.ResponsesRequestPluginTypedDict], + ] + ] = None, + presence_penalty: OptionalNullable[float] = UNSET, + previous_response_id: OptionalNullable[str] = UNSET, + prompt: OptionalNullable[ + Union[ + components.StoredPromptTemplate, + components.StoredPromptTemplateTypedDict, + ] + ] = UNSET, + prompt_cache_key: OptionalNullable[str] = UNSET, + provider: OptionalNullable[ + Union[ + components.ProviderPreferences, components.ProviderPreferencesTypedDict + ] + ] = UNSET, + reasoning: OptionalNullable[ + Union[components.ReasoningConfig, components.ReasoningConfigTypedDict] + ] = UNSET, + safety_identifier: OptionalNullable[str] = UNSET, + service_tier: OptionalNullable[components.ResponsesRequestServiceTier] = "auto", + session_id: Optional[str] = None, + stop_server_tools_when: Optional[ + Union[ + Iterable[components.StopServerToolsWhenCondition], + Iterable[components.StopServerToolsWhenConditionTypedDict], + ] + ] = None, + stream: bool, + temperature: OptionalNullable[float] = UNSET, + text: Optional[ + Union[components.TextExtendedConfig, components.TextExtendedConfigTypedDict] + ] = None, + tool_choice: Optional[ + Union[ + components.OpenAIResponsesToolChoiceUnion, + components.OpenAIResponsesToolChoiceUnionTypedDict, + ] + ] = None, + tools: Optional[ + Union[ + Iterable[components.ResponsesRequestToolUnion], + Iterable[components.ResponsesRequestToolUnionTypedDict], + ] + ] = None, + top_k: Optional[int] = None, + top_logprobs: OptionalNullable[int] = UNSET, + top_p: OptionalNullable[float] = UNSET, + trace: Optional[ + Union[components.TraceConfig, components.TraceConfigTypedDict] + ] = None, + truncation: OptionalNullable[components.OpenAIResponsesTruncation] = UNSET, + user: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> Union[ + components.OpenResponsesResult, + eventstreaming.EventStreamAsync[components.StreamEvents], + ]: + r"""Create a response + + Creates a streaming or non-streaming response using OpenResponses API format + + :param http_referer: The app identifier should be your app's URL and is used as the primary identifier for rankings. + This is used to track API usage per application. + + :param x_open_router_title: The app display name allows you to customize how your app appears in OpenRouter's dashboard. + + :param x_open_router_categories: Comma-separated list of app categories (e.g. \"cli-agent,cloud-agent\"). Used for marketplace rankings. + + :param x_open_router_metadata: 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. + :param background: + :param cache_control: Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models. + :param debug: Debug options for inspecting request transformations (streaming only) + :param frequency_penalty: + :param image_config: Provider-specific image configuration options. Keys and values vary by model/provider. See https://openrouter.ai/docs/guides/overview/multimodal/image-generation for more details. + :param include: + :param input: Input for a response request - can be a string or array of items + :param instructions: + :param max_output_tokens: + :param max_tool_calls: + :param metadata: Metadata key-value pairs for the request. Keys must be ≤64 characters and cannot contain brackets. Values must be ≤512 characters. Maximum 16 pairs allowed. + :param modalities: Output modalities for the response. Supported values are \"text\" and \"image\". + :param model: + :param models: + :param parallel_tool_calls: + :param plugins: Plugins you want to enable for this request, including their settings. + :param presence_penalty: + :param previous_response_id: + :param prompt: + :param prompt_cache_key: + :param provider: When multiple model providers are available, optionally indicate your routing preference. + :param reasoning: Configuration for reasoning mode in the response + :param safety_identifier: + :param service_tier: + :param session_id: A unique identifier for grouping related requests (e.g., a conversation or agent workflow). When provided, OpenRouter uses it as the sticky routing key, routing all requests in the session to the same provider to maximize prompt cache hits. Also used for observability grouping. If provided in both the request body and the x-session-id header, the body value takes precedence. Maximum of 256 characters. + :param stop_server_tools_when: Stop conditions for the server-tool agent loop. Any condition firing halts the loop (OR logic). When set, this overrides `max_tool_calls`. + :param stream: + :param temperature: + :param text: Text output configuration including format and verbosity + :param tool_choice: + :param tools: + :param top_k: + :param top_logprobs: + :param top_p: + :param trace: Metadata for observability and tracing. Known keys (trace_id, trace_name, span_name, generation_name, parent_span_id) have special handling. Additional keys are passed through as custom metadata to configured broadcast destinations. + :param truncation: + :param user: A unique identifier representing your end-user, which helps distinguish between different users of your app. This allows your app to identify specific users in case of abuse reports, preventing your entire app from being affected by the actions of individual users. Maximum of 256 characters. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds :param http_headers: Additional headers to set or replace on requests. """ @@ -1097,26 +1406,26 @@ async def send_async( frequency_penalty: OptionalNullable[float] = UNSET, image_config: Optional[ Union[ - Dict[str, components.ImageConfig], - Dict[str, components.ImageConfigTypedDict], + Mapping[str, components.ImageConfig], + Mapping[str, components.ImageConfigTypedDict], ] ] = None, - include: OptionalNullable[List[components.ResponseIncludesEnum]] = UNSET, + include: OptionalNullable[Iterable[components.ResponseIncludesEnum]] = UNSET, input: Optional[ Union[components.InputsUnion, components.InputsUnionTypedDict] ] = None, instructions: OptionalNullable[str] = UNSET, max_output_tokens: OptionalNullable[int] = UNSET, max_tool_calls: OptionalNullable[int] = UNSET, - metadata: OptionalNullable[Dict[str, str]] = UNSET, - modalities: Optional[List[components.OutputModalityEnum]] = None, + metadata: OptionalNullable[Mapping[str, str]] = UNSET, + modalities: Optional[Iterable[components.OutputModalityEnum]] = None, model: Optional[str] = None, - models: Optional[List[str]] = None, + models: Optional[Iterable[str]] = None, parallel_tool_calls: OptionalNullable[bool] = UNSET, plugins: Optional[ Union[ - List[components.ResponsesRequestPlugin], - List[components.ResponsesRequestPluginTypedDict], + Iterable[components.ResponsesRequestPlugin], + Iterable[components.ResponsesRequestPluginTypedDict], ] ] = None, presence_penalty: OptionalNullable[float] = UNSET, @@ -1141,8 +1450,8 @@ async def send_async( session_id: Optional[str] = None, stop_server_tools_when: Optional[ Union[ - List[components.StopServerToolsWhenCondition], - List[components.StopServerToolsWhenConditionTypedDict], + Iterable[components.StopServerToolsWhenCondition], + Iterable[components.StopServerToolsWhenConditionTypedDict], ] ] = None, stream: Optional[bool] = False, @@ -1158,8 +1467,8 @@ async def send_async( ] = None, tools: Optional[ Union[ - List[components.ResponsesRequestToolUnion], - List[components.ResponsesRequestToolUnionTypedDict], + Iterable[components.ResponsesRequestToolUnion], + Iterable[components.ResponsesRequestToolUnionTypedDict], ] ] = None, top_k: Optional[int] = None, @@ -1174,7 +1483,10 @@ async def send_async( server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.CreateResponsesResponse: + ) -> Union[ + components.OpenResponsesResult, + eventstreaming.EventStreamAsync[components.StreamEvents], + ]: r"""Create a response Creates a streaming or non-streaming response using OpenResponses API format @@ -1227,7 +1539,6 @@ async def send_async( :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param accept_header_override: Override the default accept header for this method :param http_headers: Additional headers to set or replace on requests. """ base_url = None @@ -1254,16 +1565,22 @@ async def send_async( debug, Optional[components.ChatDebugOptions] ), frequency_penalty=frequency_penalty, - image_config=image_config, - include=include, + image_config=utils.unmarshal( + image_config, Optional[Dict[str, components.ImageConfig]] + ), + include=utils.unmarshal( + include, OptionalNullable[List[components.ResponseIncludesEnum]] + ), input=utils.get_pydantic_model(input, Optional[components.InputsUnion]), instructions=instructions, max_output_tokens=max_output_tokens, max_tool_calls=max_tool_calls, - metadata=metadata, - modalities=modalities, + metadata=utils.unmarshal(metadata, OptionalNullable[Dict[str, str]]), + modalities=utils.unmarshal( + modalities, Optional[List[components.OutputModalityEnum]] + ), model=model, - models=models, + models=utils.unmarshal(models, Optional[List[str]]), parallel_tool_calls=parallel_tool_calls, plugins=utils.get_pydantic_model( plugins, Optional[List[components.ResponsesRequestPlugin]] @@ -1317,7 +1634,9 @@ async def send_async( request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="text/event-stream" if stream else "application/json", + accept_header_value="text/event-stream" + if stream is True + else "application/json", http_headers=http_headers, _globals=operations.CreateResponsesGlobals( http_referer=self.sdk_configuration.globals.http_referer, @@ -1357,27 +1676,12 @@ async def send_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["beta.responses"], + extensions=None, ), request=req, - error_status_codes=[ - "400", - "401", - "402", - "403", - "404", - "408", - "413", - "422", - "429", - "4XX", - "500", - "502", - "503", - "524", - "529", - "5XX", - ], - stream=True, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + stream=stream is True, retry_config=retry_config, ) @@ -1390,8 +1694,8 @@ async def send_async( if utils.match_response(http_res, "200", "text/event-stream"): return eventstreaming.EventStreamAsync( http_res, - lambda raw: utils.unmarshal_json( - raw, components.ResponsesStreamingResponse + lambda raw: unmarshal_json_response( + components.ResponsesStreamingResponse, http_res, raw ).data, sentinel="[DONE]", client_ref=self, diff --git a/src/openrouter/sdk.py b/src/openrouter/sdk.py index 8fe36b22..a6a9afda 100644 --- a/src/openrouter/sdk.py +++ b/src/openrouter/sdk.py @@ -135,8 +135,8 @@ def __init__( x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, server: Optional[str] = None, - server_url: Optional[str] = None, url_params: Optional[Dict[str, str]] = None, + server_url: Optional[str] = None, client: Optional[HttpClient] = None, async_client: Optional[AsyncHttpClient] = None, retry_config: OptionalNullable[RetryConfig] = UNSET, @@ -179,7 +179,9 @@ def __init__( ), "The provided async_client must implement the AsyncHttpClient protocol." security: Any = None - if callable(api_key): + if api_key is None: + security = None + elif callable(api_key): # pylint: disable=unnecessary-lambda-assignment security = lambda: components.Security(api_key=api_key()) else: diff --git a/src/openrouter/stt.py b/src/openrouter/stt.py index 3b12f698..a5f03a72 100644 --- a/src/openrouter/stt.py +++ b/src/openrouter/stt.py @@ -124,22 +124,11 @@ def create_transcription( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["STT"], + extensions=None, ), request=req, - error_status_codes=[ - "400", - "401", - "402", - "404", - "429", - "4XX", - "500", - "502", - "503", - "524", - "529", - "5XX", - ], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -321,22 +310,11 @@ async def create_transcription_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["STT"], + extensions=None, ), request=req, - error_status_codes=[ - "400", - "401", - "402", - "404", - "429", - "4XX", - "500", - "502", - "503", - "524", - "529", - "5XX", - ], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/openrouter/tts.py b/src/openrouter/tts.py index 66886a4a..68ae54d0 100644 --- a/src/openrouter/tts.py +++ b/src/openrouter/tts.py @@ -129,22 +129,11 @@ def create_speech( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["TTS"], + extensions=None, ), request=req, - error_status_codes=[ - "400", - "401", - "402", - "404", - "429", - "4XX", - "500", - "502", - "503", - "524", - "529", - "5XX", - ], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), stream=True, retry_config=retry_config, ) @@ -358,22 +347,11 @@ async def create_speech_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["TTS"], + extensions=None, ), request=req, - error_status_codes=[ - "400", - "401", - "402", - "404", - "429", - "4XX", - "500", - "502", - "503", - "524", - "529", - "5XX", - ], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), stream=True, retry_config=retry_config, ) diff --git a/src/openrouter/types/__init__.py b/src/openrouter/types/__init__.py index fc76fe0c..faa26813 100644 --- a/src/openrouter/types/__init__.py +++ b/src/openrouter/types/__init__.py @@ -1,5 +1,6 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" +from .base64fileinput import Base64EncodedString, Base64FileInput from .basemodel import ( BaseModel, Nullable, @@ -11,6 +12,8 @@ ) __all__ = [ + "Base64EncodedString", + "Base64FileInput", "BaseModel", "Nullable", "OptionalNullable", diff --git a/src/openrouter/types/base64fileinput.py b/src/openrouter/types/base64fileinput.py new file mode 100644 index 00000000..862566fe --- /dev/null +++ b/src/openrouter/types/base64fileinput.py @@ -0,0 +1,43 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations + +import base64 +import io +from os import PathLike +from typing import IO, Any, Union + +from pydantic.functional_validators import BeforeValidator +from typing_extensions import Annotated + + +Base64FileInput = Union[IO[bytes], PathLike[str]] + + +def encode_base64_file_input(value: Any) -> Any: + """Convert PathLike or IO[bytes] inputs to a base64 string. All standard binary streams + that inherit from io.IOBase are handled. Other values pass through. + """ + if isinstance(value, (PathLike, io.IOBase)): + if isinstance(value, PathLike): + with open(value, "rb") as fh: + binary = fh.read() + else: + # Restore position after reading: pydantic may validate the same stream more than once. + position = value.tell() if value.seekable() else None + binary = value.read() + if position is not None: + value.seek(position) + if isinstance(binary, str): + binary = binary.encode() + if not isinstance(binary, (bytes, bytearray)): + raise TypeError( + f"Base64FileInput expected binary IO returning bytes; got {type(binary).__name__}" + ) + return base64.b64encode(binary).decode("ascii") + return value + + +# Non-str inputs are converted to base64 by the BeforeValidator at construction time. +# Callers can also pass a pre-encoded base64 str. +Base64EncodedString = Annotated[str, BeforeValidator(encode_base64_file_input)] diff --git a/src/openrouter/types/basemodel.py b/src/openrouter/types/basemodel.py index 231c2e37..a9a640a1 100644 --- a/src/openrouter/types/basemodel.py +++ b/src/openrouter/types/basemodel.py @@ -2,7 +2,8 @@ from pydantic import ConfigDict, model_serializer from pydantic import BaseModel as PydanticBaseModel -from typing import TYPE_CHECKING, Literal, Optional, TypeVar, Union +from pydantic_core import core_schema +from typing import TYPE_CHECKING, Any, Literal, Optional, TypeVar, Union from typing_extensions import TypeAliasType, TypeAlias @@ -35,5 +36,42 @@ def __bool__(self) -> Literal[False]: "OptionalNullable", Union[Optional[Nullable[T]], Unset], type_params=(T,) ) -UnrecognizedInt: TypeAlias = int -UnrecognizedStr: TypeAlias = str + +class UnrecognizedStr(str): + @classmethod + def __get_pydantic_core_schema__(cls, _source_type: Any, _handler: Any) -> core_schema.CoreSchema: + # Make UnrecognizedStr only work in lax mode, not strict mode + # This makes it a "fallback" option when more specific types (like Literals) don't match + def validate_lax(v: Any) -> 'UnrecognizedStr': + if isinstance(v, cls): + return v + return cls(str(v)) + + # Use lax_or_strict_schema where strict always fails + # This forces Pydantic to prefer other union members in strict mode + # and only fall back to UnrecognizedStr in lax mode + return core_schema.lax_or_strict_schema( + lax_schema=core_schema.chain_schema([ + core_schema.str_schema(), + core_schema.no_info_plain_validator_function(validate_lax) + ]), + strict_schema=core_schema.none_schema(), # Always fails in strict mode + ) + + +class UnrecognizedInt(int): + @classmethod + def __get_pydantic_core_schema__(cls, _source_type: Any, _handler: Any) -> core_schema.CoreSchema: + # Make UnrecognizedInt only work in lax mode, not strict mode + # This makes it a "fallback" option when more specific types (like Literals) don't match + def validate_lax(v: Any) -> 'UnrecognizedInt': + if isinstance(v, cls): + return v + return cls(int(v)) + return core_schema.lax_or_strict_schema( + lax_schema=core_schema.chain_schema([ + core_schema.int_schema(), + core_schema.no_info_plain_validator_function(validate_lax) + ]), + strict_schema=core_schema.none_schema(), # Always fails in strict mode + ) diff --git a/src/openrouter/utils/__init__.py b/src/openrouter/utils/__init__.py index 87192dde..7d598844 100644 --- a/src/openrouter/utils/__init__.py +++ b/src/openrouter/utils/__init__.py @@ -1,14 +1,23 @@ """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, Callable, TypeVar +import asyncio + +from .dynamic_imports import lazy_getattr, lazy_dir + +_T = TypeVar("_T") + + +async def run_sync_in_thread(func: Callable[..., _T], *args) -> _T: + """Run a synchronous function in a thread pool to avoid blocking the event loop.""" + return await asyncio.to_thread(func, *args) + if TYPE_CHECKING: from .annotations import get_discriminator from .datetimes import parse_datetime from .enums import OpenEnumMeta + from .unions import parse_open_union from .headers import get_headers, get_response_headers from .metadata import ( FieldMetadata, @@ -42,7 +51,6 @@ validate_decimal, validate_float, validate_int, - validate_open_enum, ) from .url import generate_url, template_url, remove_suffix from .values import ( @@ -79,6 +87,7 @@ "match_response", "MultipartFormMetadata", "OpenEnumMeta", + "parse_open_union", "PathParamMetadata", "QueryParamMetadata", "remove_suffix", @@ -104,7 +113,6 @@ "validate_const", "validate_float", "validate_int", - "validate_open_enum", "cast_partial", ] @@ -133,6 +141,7 @@ "match_response": ".values", "MultipartFormMetadata": ".metadata", "OpenEnumMeta": ".enums", + "parse_open_union": ".unions", "PathParamMetadata": ".metadata", "QueryParamMetadata": ".metadata", "remove_suffix": ".url", @@ -158,43 +167,15 @@ "validate_const": ".serializers", "validate_float": ".serializers", "validate_int": ".serializers", - "validate_open_enum": ".serializers", "cast_partial": ".values", } -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, module name -> {__name__} " - ) - - try: - module = dynamic_import(module_name) - return getattr(module, attr_name) - 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) diff --git a/src/openrouter/utils/dynamic_imports.py b/src/openrouter/utils/dynamic_imports.py new file mode 100644 index 00000000..673edf82 --- /dev/null +++ b/src/openrouter/utils/dynamic_imports.py @@ -0,0 +1,54 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from importlib import import_module +import builtins +import sys + + +def dynamic_import(package, modname, retries=3): + """Import a module relative to package, retrying on KeyError from half-initialized modules.""" + for attempt in range(retries): + try: + return import_module(modname, package) + except KeyError: + sys.modules.pop(modname, None) + if attempt == retries - 1: + break + raise KeyError(f"Failed to import module '{modname}' after {retries} attempts") + + +def lazy_getattr(attr_name, *, package, dynamic_imports, sub_packages=None): + """Module-level __getattr__ that lazily loads from a dynamic_imports mapping. + + Args: + attr_name: The attribute being looked up. + package: The caller's __package__ (for relative imports). + dynamic_imports: Dict mapping attribute names to relative module paths. + sub_packages: Optional list of subpackage names to lazy-load. + """ + module_name = dynamic_imports.get(attr_name) + if module_name is not None: + try: + module = dynamic_import(package, module_name) + return getattr(module, attr_name) + 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 + + if sub_packages and attr_name in sub_packages: + return import_module(f".{attr_name}", package) + + raise AttributeError(f"module '{package}' has no attribute '{attr_name}'") + + +def lazy_dir(*, dynamic_imports, sub_packages=None): + """Module-level __dir__ that lists lazily-loadable attributes.""" + lazy_attrs = builtins.list(dynamic_imports.keys()) + if sub_packages: + lazy_attrs.extend(sub_packages) + return builtins.sorted(lazy_attrs) diff --git a/src/openrouter/utils/enums.py b/src/openrouter/utils/enums.py index c3bc13cf..3324e1bc 100644 --- a/src/openrouter/utils/enums.py +++ b/src/openrouter/utils/enums.py @@ -2,6 +2,10 @@ import enum import sys +from typing import Any + +from pydantic_core import core_schema + class OpenEnumMeta(enum.EnumMeta): # The __call__ method `boundary` kwarg was added in 3.11 and must be present @@ -72,3 +76,59 @@ def __call__( ) except ValueError: return value + + def __new__(mcs, name, bases, namespace, **kwargs): + cls = super().__new__(mcs, name, bases, namespace, **kwargs) + + # Add __get_pydantic_core_schema__ to make open enums work correctly + # in union discrimination. In strict mode (used by Pydantic for unions), + # only known enum values match. In lax mode, unknown values are accepted. + def __get_pydantic_core_schema__( + cls_inner: Any, _source_type: Any, _handler: Any + ) -> core_schema.CoreSchema: + # Create a validator that only accepts known enum values (for strict mode) + def validate_strict(v: Any) -> Any: + if isinstance(v, cls_inner): + return v + # Use the parent EnumMeta's __call__ which raises ValueError for unknown values + return enum.EnumMeta.__call__(cls_inner, v) + + # Create a lax validator that accepts unknown values + def validate_lax(v: Any) -> Any: + if isinstance(v, cls_inner): + return v + try: + return enum.EnumMeta.__call__(cls_inner, v) + except ValueError: + # Return the raw value for unknown enum values + return v + + # Determine the base type schema (str or int) + is_int_enum = False + for base in cls_inner.__mro__: + if base is int: + is_int_enum = True + break + if base is str: + break + + base_schema = ( + core_schema.int_schema() + if is_int_enum + else core_schema.str_schema() + ) + + # Use lax_or_strict_schema: + # - strict mode: only known enum values match (raises ValueError for unknown) + # - lax mode: accept any value, return enum member or raw value + return core_schema.lax_or_strict_schema( + lax_schema=core_schema.chain_schema( + [base_schema, core_schema.no_info_plain_validator_function(validate_lax)] + ), + strict_schema=core_schema.chain_schema( + [base_schema, core_schema.no_info_plain_validator_function(validate_strict)] + ), + ) + + setattr(cls, "__get_pydantic_core_schema__", classmethod(__get_pydantic_core_schema__)) + return cls diff --git a/src/openrouter/utils/eventstreaming.py b/src/openrouter/utils/eventstreaming.py index 0969899b..a8d4fe5c 100644 --- a/src/openrouter/utils/eventstreaming.py +++ b/src/openrouter/utils/eventstreaming.py @@ -2,9 +2,12 @@ import re import json +from dataclasses import dataclass, asdict from typing import ( + Any, Callable, Generic, + List, TypeVar, Optional, Generator, @@ -22,6 +25,7 @@ class EventStream(Generic[T]): client_ref: Optional[object] response: httpx.Response generator: Generator[T, None, None] + _closed: bool def __init__( self, @@ -29,21 +33,31 @@ def __init__( decoder: Callable[[str], T], sentinel: Optional[str] = None, client_ref: Optional[object] = None, + data_required: bool = True, ): self.response = response - self.generator = stream_events(response, decoder, sentinel) + self.generator = stream_events( + response, decoder, sentinel, data_required=data_required + ) self.client_ref = client_ref + self._closed = False def __iter__(self): return self def __next__(self): + if self._closed: + raise StopIteration return next(self.generator) def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): + self.close() + + def close(self): + self._closed = True self.response.close() @@ -53,6 +67,7 @@ class EventStreamAsync(Generic[T]): client_ref: Optional[object] response: httpx.Response generator: AsyncGenerator[T, None] + _closed: bool def __init__( self, @@ -60,181 +75,244 @@ def __init__( decoder: Callable[[str], T], sentinel: Optional[str] = None, client_ref: Optional[object] = None, + data_required: bool = True, ): self.response = response - self.generator = stream_events_async(response, decoder, sentinel) + self.generator = stream_events_async( + response, decoder, sentinel, data_required=data_required + ) self.client_ref = client_ref + self._closed = False def __aiter__(self): return self async def __anext__(self): + if self._closed: + raise StopAsyncIteration return await self.generator.__anext__() async def __aenter__(self): return self async def __aexit__(self, exc_type, exc_val, exc_tb): + await self.close() + + async def close(self): + self._closed = True await self.response.aclose() +@dataclass class ServerEvent: id: Optional[str] = None event: Optional[str] = None - data: Optional[str] = None + data: Any = None retry: Optional[int] = None MESSAGE_BOUNDARIES = [ b"\r\n\r\n", - b"\n\n", + b"\r\n\r", + b"\r\n\n", + b"\r\r\n", + b"\n\r\n", b"\r\r", + b"\n\r", + b"\n\n", ] +MAX_BOUNDARY_LEN = max(len(b) for b in MESSAGE_BOUNDARIES) + +UTF8_BOM = b"\xef\xbb\xbf" async def stream_events_async( response: httpx.Response, decoder: Callable[[str], T], sentinel: Optional[str] = None, + data_required: bool = True, ) -> AsyncGenerator[T, None]: - buffer = bytearray() - position = 0 - discard = False - async for chunk in response.aiter_bytes(): - # We've encountered the sentinel value and should no longer process - # incoming data. Instead we throw new data away until the server closes - # the connection. - if discard: - continue - - buffer += chunk - for i in range(position, len(buffer)): - char = buffer[i : i + 1] - seq: Optional[bytes] = None - if char in [b"\r", b"\n"]: - for boundary in MESSAGE_BOUNDARIES: - seq = _peek_sequence(i, buffer, boundary) - if seq is not None: - break - if seq is None: - continue - - block = buffer[position:i] - position = i + len(seq) - event, discard = _parse_event(block, decoder, sentinel) - if event is not None: - yield event - - if position > 0: - buffer = buffer[position:] - position = 0 - - event, discard = _parse_event(buffer, decoder, sentinel) - if event is not None: - yield event + try: + buffer = bytearray() + position = 0 + event_id: Optional[str] = None + async for chunk in response.aiter_bytes(): + if len(buffer) == 0 and chunk.startswith(UTF8_BOM): + chunk = chunk[len(UTF8_BOM) :] + old_len = len(buffer) + buffer += chunk + search_start = max(position, old_len - MAX_BOUNDARY_LEN + 1) + for i in range(search_start, len(buffer)): + char = buffer[i : i + 1] + seq: Optional[bytes] = None + if char in [b"\r", b"\n"]: + for boundary in MESSAGE_BOUNDARIES: + seq = _peek_sequence(i, buffer, boundary) + if seq is not None: + break + if seq is None: + continue + + block = buffer[position:i] + position = i + len(seq) + event, discard, event_id = _parse_event( + raw=block, + decoder=decoder, + sentinel=sentinel, + event_id=event_id, + data_required=data_required, + ) + if event is not None: + yield event + if discard: + return + + if position > 0: + buffer = buffer[position:] + position = 0 + + event, discard, _ = _parse_event( + raw=buffer, + decoder=decoder, + sentinel=sentinel, + event_id=event_id, + data_required=data_required, + ) + if event is not None: + yield event + finally: + await response.aclose() def stream_events( response: httpx.Response, decoder: Callable[[str], T], sentinel: Optional[str] = None, + data_required: bool = True, ) -> Generator[T, None, None]: - buffer = bytearray() - position = 0 - discard = False - for chunk in response.iter_bytes(): - # We've encountered the sentinel value and should no longer process - # incoming data. Instead we throw new data away until the server closes - # the connection. - if discard: - continue - - buffer += chunk - for i in range(position, len(buffer)): - char = buffer[i : i + 1] - seq: Optional[bytes] = None - if char in [b"\r", b"\n"]: - for boundary in MESSAGE_BOUNDARIES: - seq = _peek_sequence(i, buffer, boundary) - if seq is not None: - break - if seq is None: - continue - - block = buffer[position:i] - position = i + len(seq) - event, discard = _parse_event(block, decoder, sentinel) - if event is not None: - yield event - - if position > 0: - buffer = buffer[position:] - position = 0 - - event, discard = _parse_event(buffer, decoder, sentinel) - if event is not None: - yield event + try: + buffer = bytearray() + position = 0 + event_id: Optional[str] = None + for chunk in response.iter_bytes(): + if len(buffer) == 0 and chunk.startswith(UTF8_BOM): + chunk = chunk[len(UTF8_BOM) :] + old_len = len(buffer) + buffer += chunk + search_start = max(position, old_len - MAX_BOUNDARY_LEN + 1) + for i in range(search_start, len(buffer)): + char = buffer[i : i + 1] + seq: Optional[bytes] = None + if char in [b"\r", b"\n"]: + for boundary in MESSAGE_BOUNDARIES: + seq = _peek_sequence(i, buffer, boundary) + if seq is not None: + break + if seq is None: + continue + + block = buffer[position:i] + position = i + len(seq) + event, discard, event_id = _parse_event( + raw=block, + decoder=decoder, + sentinel=sentinel, + event_id=event_id, + data_required=data_required, + ) + if event is not None: + yield event + if discard: + return + + if position > 0: + buffer = buffer[position:] + position = 0 + + event, discard, _ = _parse_event( + raw=buffer, + decoder=decoder, + sentinel=sentinel, + event_id=event_id, + data_required=data_required, + ) + if event is not None: + yield event + finally: + response.close() def _parse_event( - raw: bytearray, decoder: Callable[[str], T], sentinel: Optional[str] = None -) -> Tuple[Optional[T], bool]: + *, + raw: bytearray, + decoder: Callable[[str], T], + sentinel: Optional[str] = None, + event_id: Optional[str] = None, + data_required: bool = True, +) -> Tuple[Optional[T], bool, Optional[str]]: block = raw.decode() lines = re.split(r"\r?\n|\r", block) publish = False event = ServerEvent() - data = "" + data_parts: List[str] = [] for line in lines: if not line: continue delim = line.find(":") - if delim <= 0: + if delim == 0: continue - field = line[0:delim] - value = line[delim + 1 :] if delim < len(line) - 1 else "" - if len(value) and value[0] == " ": - value = value[1:] + field = line + value = "" + if delim > 0: + field = line[0:delim] + value = line[delim + 1 :] if delim < len(line) - 1 else "" + if len(value) and value[0] == " ": + value = value[1:] if field == "event": event.event = value publish = True elif field == "data": - data += value + "\n" + data_parts.append(value) publish = True elif field == "id": - event.id = value publish = True + if "\x00" not in value: + event_id = value elif field == "retry": - event.retry = int(value) if value.isdigit() else None + if value.isdigit(): + event.retry = int(value) publish = True - if sentinel and data == f"{sentinel}\n": - return None, True + event.id = event_id + has_data = bool(data_parts) + data = "\n".join(data_parts) - if data: - data = data[:-1] - event.data = data + if sentinel and has_data and data == sentinel: + return None, True, event_id - data_is_primitive = ( - data.isnumeric() or data == "true" or data == "false" or data == "null" - ) - data_is_json = ( - data.startswith("{") or data.startswith("[") or data.startswith('"') - ) + # Skip data-less events when data is required + if not has_data and publish and data_required: + return None, False, event_id - if data_is_primitive or data_is_json: - try: - event.data = json.loads(data) - except Exception: - pass + if has_data: + try: + event.data = json.loads(data) + except json.JSONDecodeError: + event.data = data out = None if publish: - out = decoder(json.dumps(event.__dict__)) - - return out, False + out_dict = { + k: v + for k, v in asdict(event).items() + if v is not None or (k == "data" and has_data) + } + out = decoder(json.dumps(out_dict)) + + return out, False, event_id def _peek_sequence(position: int, buffer: bytearray, sequence: bytes): diff --git a/src/openrouter/utils/forms.py b/src/openrouter/utils/forms.py index f961e76b..fdf0dc9b 100644 --- a/src/openrouter/utils/forms.py +++ b/src/openrouter/utils/forms.py @@ -1,5 +1,6 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" +import io from typing import ( Any, Dict, @@ -103,6 +104,10 @@ def _extract_file_properties(file_obj: Any) -> Tuple[str, Any, Any]: if file_metadata.content: content = getattr(file_obj, file_field_name, None) + if isinstance(content, io.TextIOBase): + content = content.read().encode( + getattr(content, "encoding", None) or "utf-8" + ) elif file_field_name == "content_type": content_type = getattr(file_obj, file_field_name, None) else: diff --git a/src/openrouter/utils/metadata.py b/src/openrouter/utils/metadata.py index 173b3e5c..5abddd58 100644 --- a/src/openrouter/utils/metadata.py +++ b/src/openrouter/utils/metadata.py @@ -15,6 +15,7 @@ class SecurityMetadata: scheme_type: Optional[str] = None sub_type: Optional[str] = None field_name: Optional[str] = None + composite: bool = False def get_field_name(self, default: str) -> str: return self.field_name or default diff --git a/src/openrouter/utils/requestbodies.py b/src/openrouter/utils/requestbodies.py index d5240dd5..591415af 100644 --- a/src/openrouter/utils/requestbodies.py +++ b/src/openrouter/utils/requestbodies.py @@ -44,15 +44,16 @@ def serialize_request_body( serialized_request_body = SerializedRequestBody(media_type) - if re.match(r"(application|text)\/.*?\+*json.*", media_type) is not None: + if re.match(r"^(application|text)\/([^+]+\+)*json.*", media_type) is not None: serialized_request_body.content = marshal_json(request_body, request_body_type) - elif re.match(r"multipart\/.*", media_type) is not None: + + elif re.match(r"^multipart\/.*", media_type) is not None: ( serialized_request_body.media_type, serialized_request_body.data, serialized_request_body.files, ) = serialize_multipart_form(media_type, request_body) - elif re.match(r"application\/x-www-form-urlencoded.*", media_type) is not None: + elif re.match(r"^application\/x-www-form-urlencoded.*", media_type) is not None: serialized_request_body.data = serialize_form_data(request_body) elif isinstance(request_body, (bytes, bytearray, io.BytesIO, io.BufferedReader)): serialized_request_body.content = request_body diff --git a/src/openrouter/utils/retries.py b/src/openrouter/utils/retries.py index 88a91b10..ca7b59ef 100644 --- a/src/openrouter/utils/retries.py +++ b/src/openrouter/utils/retries.py @@ -11,10 +11,13 @@ class BackoffStrategy: + """Exponential backoff strategy configuration.""" + initial_interval: int max_interval: int exponent: float max_elapsed_time: int + jitter_ms: Optional[int] def __init__( self, @@ -22,24 +25,63 @@ def __init__( max_interval: int, exponent: float, max_elapsed_time: int, + jitter_ms: Optional[int] = None, ): + """Initialize a backoff strategy. + + Args: + initial_interval: Initial retry interval in milliseconds. + max_interval: Maximum retry interval in milliseconds. + exponent: Base of the exponential backoff; the interval grows as + ``initial_interval * exponent ** retries``. + max_elapsed_time: Maximum total elapsed time in milliseconds. + jitter_ms: Additive jitter bound in milliseconds. When set, adds a random + value in ``[0, jitter_ms]`` to each computed backoff interval (default + ``+[0, 1s]``). + + Note: + When a response carries a ``Retry-After`` or ``retry-after-ms`` header, + that delay is used as-is and the sleep-shaping parameters + (``initial_interval``, ``max_interval``, ``exponent``, ``jitter_ms``) are + ignored for that attempt. + """ + if jitter_ms is not None and jitter_ms < 0: + raise ValueError("jitter_ms must be >= 0") self.initial_interval = initial_interval self.max_interval = max_interval self.exponent = exponent self.max_elapsed_time = max_elapsed_time + self.jitter_ms = jitter_ms class RetryConfig: + """Runtime retry configuration.""" + strategy: str backoff: BackoffStrategy retry_connection_errors: bool + status_codes_override: Optional[List[str]] def __init__( - self, strategy: str, backoff: BackoffStrategy, retry_connection_errors: bool + self, + strategy: str, + backoff: BackoffStrategy, + retry_connection_errors: bool, + status_codes_override: Optional[List[str]] = None, ): + """Initialize a retry configuration. + + Args: + strategy: Retry strategy: ``"none"`` or ``"backoff"``. + backoff: Backoff parameters. + retry_connection_errors: Whether to also retry transport-level connection errors. + status_codes_override: Retryable HTTP status codes that take precedence over the + per-operation defaults when non-empty. + """ self.strategy = strategy self.backoff = backoff self.retry_connection_errors = retry_connection_errors + self.status_codes_override = status_codes_override class Retries: @@ -48,7 +90,7 @@ class Retries: def __init__(self, config: RetryConfig, status_codes: List[str]): self.config = config - self.status_codes = status_codes + self.status_codes = config.status_codes_override or status_codes class TemporaryError(Exception): @@ -93,12 +135,28 @@ def _parse_retry_after_header(response: httpx.Response) -> Optional[int]: return None +def _parse_retry_after_ms_header(response: httpx.Response) -> Optional[int]: + retry_after_ms_header = response.headers.get("retry-after-ms") + if not retry_after_ms_header: + return None + + try: + milliseconds = float(retry_after_ms_header) + if milliseconds >= 0: + return round(milliseconds) + except (OverflowError, ValueError): + pass + + return None + + def _get_sleep_interval( exception: Exception, initial_interval: int, max_interval: int, exponent: float, retries: int, + jitter_ms: Optional[int] = None, ) -> float: """Get sleep interval for retry with exponential backoff. @@ -108,6 +166,7 @@ def _get_sleep_interval( max_interval: Maximum retry interval in milliseconds. exponent: Base for exponential backoff calculation. retries: Current retry attempt count. + jitter_ms: Additive jitter bound in ms; see ``BackoffStrategy.jitter_ms``. Returns: Sleep interval in seconds. @@ -119,7 +178,11 @@ def _get_sleep_interval( ): return exception.retry_after / 1000 - sleep = (initial_interval / 1000) * exponent**retries + random.uniform(0, 1) + sleep = (initial_interval / 1000) * exponent**retries + if jitter_ms is not None: + sleep += random.uniform(0, jitter_ms / 1000) + else: + sleep += random.uniform(0, 1) return min(sleep, max_interval / 1000) @@ -144,12 +207,7 @@ def do_request() -> httpx.Response: if res.status_code == parsed_code: raise TemporaryError(res) - except httpx.ConnectError as exception: - if retries.config.retry_connection_errors: - raise - - raise PermanentError(exception) from exception - except httpx.TimeoutException as exception: + except (httpx.NetworkError, httpx.TimeoutException) as exception: if retries.config.retry_connection_errors: raise @@ -167,6 +225,7 @@ def do_request() -> httpx.Response: retries.config.backoff.max_interval, retries.config.backoff.exponent, retries.config.backoff.max_elapsed_time, + retries.config.backoff.jitter_ms, ) return func() @@ -193,12 +252,7 @@ async def do_request() -> httpx.Response: if res.status_code == parsed_code: raise TemporaryError(res) - except httpx.ConnectError as exception: - if retries.config.retry_connection_errors: - raise - - raise PermanentError(exception) from exception - except httpx.TimeoutException as exception: + except (httpx.NetworkError, httpx.TimeoutException) as exception: if retries.config.retry_connection_errors: raise @@ -216,6 +270,7 @@ async def do_request() -> httpx.Response: retries.config.backoff.max_interval, retries.config.backoff.exponent, retries.config.backoff.max_elapsed_time, + retries.config.backoff.jitter_ms, ) return await func() @@ -227,6 +282,7 @@ def retry_with_backoff( max_interval=60000, exponent=1.5, max_elapsed_time=3600000, + jitter_ms=None, ): start = round(time.time() * 1000) retries = 0 @@ -244,8 +300,17 @@ def retry_with_backoff( raise + if isinstance(exception, TemporaryError): + retry_after_ms = _parse_retry_after_ms_header(exception.response) + if retry_after_ms is not None: + exception.retry_after = retry_after_ms sleep = _get_sleep_interval( - exception, initial_interval, max_interval, exponent, retries + exception, + initial_interval, + max_interval, + exponent, + retries, + jitter_ms=jitter_ms, ) time.sleep(sleep) retries += 1 @@ -257,6 +322,7 @@ async def retry_with_backoff_async( max_interval=60000, exponent=1.5, max_elapsed_time=3600000, + jitter_ms=None, ): start = round(time.time() * 1000) retries = 0 @@ -274,8 +340,17 @@ async def retry_with_backoff_async( raise + if isinstance(exception, TemporaryError): + retry_after_ms = _parse_retry_after_ms_header(exception.response) + if retry_after_ms is not None: + exception.retry_after = retry_after_ms sleep = _get_sleep_interval( - exception, initial_interval, max_interval, exponent, retries + exception, + initial_interval, + max_interval, + exponent, + retries, + jitter_ms=jitter_ms, ) await asyncio.sleep(sleep) retries += 1 diff --git a/src/openrouter/utils/security.py b/src/openrouter/utils/security.py index 6996c79f..35a59a63 100644 --- a/src/openrouter/utils/security.py +++ b/src/openrouter/utils/security.py @@ -19,7 +19,9 @@ import os -def get_security(security: Any) -> Tuple[Dict[str, str], Dict[str, List[str]]]: +def get_security( + security: Any, allowed_fields: Optional[List[str]] = None +) -> Tuple[Dict[str, str], Dict[str, List[str]]]: headers: Dict[str, str] = {} query_params: Dict[str, List[str]] = {} @@ -30,7 +32,14 @@ def get_security(security: Any) -> Tuple[Dict[str, str], Dict[str, List[str]]]: raise TypeError("security must be a pydantic model") sec_fields: Dict[str, FieldInfo] = security.__class__.model_fields - for name in sec_fields: + sec_field_names = ( + list(sec_fields.keys()) if allowed_fields is None else allowed_fields + ) + + for name in sec_field_names: + if name not in sec_fields: + continue + sec_field = sec_fields[name] value = getattr(security, name) @@ -52,6 +61,9 @@ def get_security(security: Any) -> Tuple[Dict[str, str], Dict[str, List[str]]]: else: _parse_security_scheme(headers, query_params, metadata, name, value) + if not metadata.composite: + return headers, query_params + return headers, query_params @@ -77,15 +89,24 @@ def _parse_security_option( raise TypeError("security option must be a pydantic model") opt_fields: Dict[str, FieldInfo] = option.__class__.model_fields + for name in opt_fields: opt_field = opt_fields[name] metadata = find_field_metadata(opt_field, SecurityMetadata) if metadata is None or not metadata.scheme: continue - _parse_security_scheme( - headers, query_params, metadata, name, getattr(option, name) - ) + + value = getattr(option, name) + if ( + metadata.scheme_type == "http" + and metadata.sub_type == "basic" + and not isinstance(value, BaseModel) + ): + _parse_basic_auth_scheme(headers, option) + return + + _parse_security_scheme(headers, query_params, metadata, name, value) def _parse_security_scheme( @@ -153,6 +174,8 @@ def _parse_security_scheme_value( elif scheme_type == "http": if sub_type == "bearer": headers[header_name] = _apply_bearer(value) + elif sub_type == "basic": + headers[header_name] = value elif sub_type == "custom": return else: diff --git a/src/openrouter/utils/serializers.py b/src/openrouter/utils/serializers.py index 378a14c0..1031ed93 100644 --- a/src/openrouter/utils/serializers.py +++ b/src/openrouter/utils/serializers.py @@ -4,7 +4,7 @@ import functools import json import typing -from typing import Any, Dict, List, Tuple, Union, get_args +from typing import Any, Dict, Iterable, List, Mapping, Tuple, Union, get_args import typing_extensions from typing_extensions import get_origin @@ -17,8 +17,7 @@ def serialize_decimal(as_str: bool): def serialize(d): - # Optional[T] is a Union[T, None] - if is_union(type(d)) and type(None) in get_args(type(d)) and d is None: + if d is None: return None if isinstance(d, Unset): return d @@ -46,8 +45,7 @@ def validate_decimal(d): def serialize_float(as_str: bool): def serialize(f): - # Optional[T] is a Union[T, None] - if is_union(type(f)) and type(None) in get_args(type(f)) and f is None: + if f is None: return None if isinstance(f, Unset): return f @@ -75,8 +73,7 @@ def validate_float(f): def serialize_int(as_str: bool): def serialize(i): - # Optional[T] is a Union[T, None] - if is_union(type(i)) and type(None) in get_args(type(i)) and i is None: + if i is None: return None if isinstance(i, Unset): return i @@ -102,30 +99,9 @@ def validate_int(b): return int(b) -def validate_open_enum(is_int: bool): - def validate(e): - if e is None: - return None - - if isinstance(e, Unset): - return e - - if is_int: - if not isinstance(e, int): - raise ValueError("Expected int") - else: - if not isinstance(e, str): - raise ValueError("Expected string") - - return e - - return validate - - def validate_const(v): def validate(c): - # Optional[T] is a Union[T, None] - if is_union(type(c)) and type(None) in get_args(type(c)) and c is None: + if c is None: return None if v != c: @@ -137,10 +113,12 @@ def validate(c): def unmarshal_json(raw, typ: Any) -> Any: - return unmarshal(from_json(raw), typ) + return unmarshal(from_json(raw), typ, coerce_iterables=False) -def unmarshal(val, typ: Any) -> Any: +def unmarshal(val, typ: Any, coerce_iterables: bool = True) -> Any: + if coerce_iterables: + val = _coerce_iterables_for_type(val, typ) unmarshaller = create_model( "Unmarshaller", body=(typ, ...), @@ -217,9 +195,88 @@ def get_pydantic_model(data: Any, typ: Any) -> Any: if not _contains_pydantic_model(data): return unmarshal(data, typ) + return _coerce_iterables_for_type(data, typ) + + +def _coerce_iterables_for_type(data: Any, typ: Any) -> Any: + if data is None or isinstance(data, (BaseModel, Unset)): + return data + + typ = _resolve_type_alias(typ) + origin = get_origin(typ) + + if _is_annotated_type(origin): + args = get_args(typ) + return _coerce_iterables_for_type(data, args[0]) if args else data + + if is_union(origin): + for arg in (arg for arg in get_args(typ) if arg is not type(None)): + coerced = _coerce_iterables_for_type(data, arg) + if coerced is not data: + return coerced + return data + + if _is_list_type(typ): + item_type = get_args(typ)[0] if get_args(typ) else Any + if isinstance(data, (str, bytes, bytearray, Mapping)): + return data + if isinstance(data, Iterable): + return [_coerce_iterables_for_type(item, item_type) for item in data] + return data + + if _is_mapping_type(typ): + value_type = get_args(typ)[1] if len(get_args(typ)) > 1 else Any + if isinstance(data, Mapping): + return { + key: _coerce_iterables_for_type(value, value_type) + for key, value in data.items() + } + return data + + if _is_pydantic_model_type(typ) and isinstance(data, Mapping): + coerced = None + for field_name, field in typ.model_fields.items(): + field_type = field.annotation + for key in (field_name, field.alias): + if key is not None and key in data: + value = data[key] if coerced is None else coerced[key] + coerced_value = _coerce_iterables_for_type(value, field_type) + if coerced_value is not value: + if coerced is None: + coerced = dict(data) + coerced[key] = coerced_value + return coerced if coerced is not None else data + return data +def _resolve_type_alias(typ: Any) -> Any: + return getattr(typ, "__value__", typ) + + +def _is_annotated_type(origin: Any) -> bool: + return any( + origin is typing_obj + for typing_obj in _get_typing_objects_by_name_of("Annotated") + ) + + +def _is_list_type(typ: Any) -> bool: + typ = _resolve_type_alias(typ) + return typ is list or get_origin(typ) is list + + +def _is_mapping_type(typ: Any) -> bool: + typ = _resolve_type_alias(typ) + origin = get_origin(typ) + mapping_origin = get_origin(Mapping[Any, Any]) + return typ in (dict, Dict, Mapping) or origin in (dict, Mapping, mapping_origin) + + +def _is_pydantic_model_type(typ: Any) -> bool: + return isinstance(typ, type) and issubclass(typ, BaseModel) + + def _contains_pydantic_model(data: Any) -> bool: if isinstance(data, BaseModel): return True diff --git a/src/openrouter/utils/unions.py b/src/openrouter/utils/unions.py new file mode 100644 index 00000000..24346402 --- /dev/null +++ b/src/openrouter/utils/unions.py @@ -0,0 +1,41 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from typing import Any + +from pydantic import BaseModel, TypeAdapter, ValidationError + + +def parse_open_union( + v: Any, + *, + disc_key: str, + variants: dict[str, Any], + unknown_cls: type, + union_name: str, +) -> Any: + """Parse an open discriminated union value with forward-compatibility. + + Known discriminator values are dispatched to their variant types. + Unknown discriminator values — or known discriminator values whose + payload fails variant validation (e.g. a partial variant emitted by a + newer server) — produce an instance of the fallback class, preserving + the raw payload for inspection. + + Non-dict values and dicts missing the discriminator deliberately raise + instead of falling back, so pydantic can try sibling branches of an + enclosing union (e.g. None in Optional[...]). + """ + if isinstance(v, BaseModel): + return v + if not isinstance(v, dict) or disc_key not in v: + raise ValueError(f"{union_name}: expected object with '{disc_key}' field") + disc = v[disc_key] + variant_cls = variants.get(disc) + if variant_cls is not None: + try: + if isinstance(variant_cls, type) and issubclass(variant_cls, BaseModel): + return variant_cls.model_validate(v) + return TypeAdapter(variant_cls).validate_python(v) + except ValidationError: + return unknown_cls(raw=v) + return unknown_cls(raw=v) diff --git a/src/openrouter/video_generation.py b/src/openrouter/video_generation.py index 14d0c5e4..4a82cde8 100644 --- a/src/openrouter/video_generation.py +++ b/src/openrouter/video_generation.py @@ -7,7 +7,7 @@ from openrouter.types import OptionalNullable, UNSET from openrouter.utils import get_security_from_env from openrouter.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, List, Mapping, Optional, Union +from typing import Any, Iterable, List, Mapping, Optional, Union class VideoGeneration(BaseSDK): @@ -25,13 +25,16 @@ def generate( callback_url: Optional[str] = None, duration: Optional[int] = None, frame_images: Optional[ - Union[List[components.FrameImage], List[components.FrameImageTypedDict]] + Union[ + Iterable[components.FrameImage], + Iterable[components.FrameImageTypedDict], + ] ] = None, generate_audio: Optional[bool] = None, input_references: Optional[ Union[ - List[components.InputReference], - List[components.InputReferenceTypedDict], + Iterable[components.InputReference], + Iterable[components.InputReferenceTypedDict], ] ] = None, provider: Optional[ @@ -162,9 +165,11 @@ def generate( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Video Generation"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "402", "404", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -226,13 +231,16 @@ async def generate_async( callback_url: Optional[str] = None, duration: Optional[int] = None, frame_images: Optional[ - Union[List[components.FrameImage], List[components.FrameImageTypedDict]] + Union[ + Iterable[components.FrameImage], + Iterable[components.FrameImageTypedDict], + ] ] = None, generate_audio: Optional[bool] = None, input_references: Optional[ Union[ - List[components.InputReference], - List[components.InputReferenceTypedDict], + Iterable[components.InputReference], + Iterable[components.InputReferenceTypedDict], ] ] = None, provider: Optional[ @@ -363,9 +371,11 @@ async def generate_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Video Generation"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "402", "404", "429", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -504,9 +514,11 @@ def get_generation( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Video Generation"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -630,9 +642,11 @@ async def get_generation_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Video Generation"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -759,9 +773,11 @@ def get_video_content( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Video Generation"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "500", "502", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), stream=True, retry_config=retry_config, ) @@ -911,9 +927,11 @@ async def get_video_content_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Video Generation"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "500", "502", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), stream=True, retry_config=retry_config, ) @@ -1057,9 +1075,11 @@ def list_videos_models( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Video Generation"], + extensions=None, ), request=req, - error_status_codes=["400", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1175,9 +1195,11 @@ async def list_videos_models_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Video Generation"], + extensions=None, ), request=req, - error_status_codes=["400", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/openrouter/workspaces.py b/src/openrouter/workspaces.py index 1b82a936..d22a8e66 100644 --- a/src/openrouter/workspaces.py +++ b/src/openrouter/workspaces.py @@ -7,7 +7,7 @@ from openrouter.types import OptionalNullable, UNSET from openrouter.utils import get_security_from_env from openrouter.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Awaitable, Dict, List, Mapping, Optional, Union +from typing import Any, Awaitable, Dict, Iterable, List, Mapping, Optional, Union class Workspaces(BaseSDK): @@ -105,24 +105,26 @@ def list( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Workspaces"], + extensions=None, ), request=req, - error_status_codes=["401", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) def next_func() -> Optional[operations.ListWorkspacesResponse]: body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]]) - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return None results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return None - limit = request.limit if not request.limit is None else 0 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 0 + if len(results[0]) < limit_: return None next_offset = offset + len(results[0]) @@ -133,6 +135,9 @@ def next_func() -> Optional[operations.ListWorkspacesResponse]: offset=next_offset, limit=limit, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -258,9 +263,11 @@ async def list_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Workspaces"], + extensions=None, ), request=req, - error_status_codes=["401", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -270,15 +277,15 @@ def next_func() -> Awaitable[Optional[operations.ListWorkspacesResponse]]: async def empty_result(): return None - offset = request.offset if not request.offset is None else 0 + offset = request.offset if isinstance(request.offset, int) else 0 if not http_res.text: return empty_result() results = JSONPath("$.data").parse(body) if len(results) == 0 or len(results[0]) == 0: return empty_result() - limit = request.limit if not request.limit is None else 0 - if len(results[0]) < limit: + limit_ = request.limit if isinstance(request.limit, int) else 0 + if len(results[0]) < limit_: return empty_result() next_offset = offset + len(results[0]) @@ -289,6 +296,9 @@ async def empty_result(): offset=next_offset, limit=limit, retries=retries, + server_url=server_url, + timeout_ms=timeout_ms, + http_headers=http_headers, ) response_data: Any = None @@ -334,7 +344,7 @@ def create( default_provider_sort: OptionalNullable[str] = UNSET, default_text_model: OptionalNullable[str] = UNSET, description: OptionalNullable[str] = UNSET, - io_logging_api_key_ids: OptionalNullable[List[int]] = UNSET, + io_logging_api_key_ids: OptionalNullable[Iterable[int]] = UNSET, io_logging_sampling_rate: Optional[float] = None, is_data_discount_logging_enabled: Optional[bool] = None, is_observability_broadcast_enabled: Optional[bool] = None, @@ -390,7 +400,9 @@ def create( default_provider_sort=default_provider_sort, default_text_model=default_text_model, description=description, - io_logging_api_key_ids=io_logging_api_key_ids, + io_logging_api_key_ids=utils.unmarshal( + io_logging_api_key_ids, OptionalNullable[List[int]] + ), io_logging_sampling_rate=io_logging_sampling_rate, is_data_discount_logging_enabled=is_data_discount_logging_enabled, is_observability_broadcast_enabled=is_observability_broadcast_enabled, @@ -450,9 +462,11 @@ def create( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Workspaces"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -504,7 +518,7 @@ async def create_async( default_provider_sort: OptionalNullable[str] = UNSET, default_text_model: OptionalNullable[str] = UNSET, description: OptionalNullable[str] = UNSET, - io_logging_api_key_ids: OptionalNullable[List[int]] = UNSET, + io_logging_api_key_ids: OptionalNullable[Iterable[int]] = UNSET, io_logging_sampling_rate: Optional[float] = None, is_data_discount_logging_enabled: Optional[bool] = None, is_observability_broadcast_enabled: Optional[bool] = None, @@ -560,7 +574,9 @@ async def create_async( default_provider_sort=default_provider_sort, default_text_model=default_text_model, description=description, - io_logging_api_key_ids=io_logging_api_key_ids, + io_logging_api_key_ids=utils.unmarshal( + io_logging_api_key_ids, OptionalNullable[List[int]] + ), io_logging_sampling_rate=io_logging_sampling_rate, is_data_discount_logging_enabled=is_data_discount_logging_enabled, is_observability_broadcast_enabled=is_observability_broadcast_enabled, @@ -620,9 +636,11 @@ async def create_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Workspaces"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -751,9 +769,11 @@ def delete( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Workspaces"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -887,9 +907,11 @@ async def delete_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Workspaces"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1023,9 +1045,11 @@ def get( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Workspaces"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1149,9 +1173,11 @@ async def get_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Workspaces"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1197,7 +1223,7 @@ def update( default_provider_sort: OptionalNullable[str] = UNSET, default_text_model: OptionalNullable[str] = UNSET, description: OptionalNullable[str] = UNSET, - io_logging_api_key_ids: OptionalNullable[List[int]] = UNSET, + io_logging_api_key_ids: OptionalNullable[Iterable[int]] = UNSET, io_logging_sampling_rate: Optional[float] = None, is_data_discount_logging_enabled: Optional[bool] = None, is_observability_broadcast_enabled: Optional[bool] = None, @@ -1257,7 +1283,9 @@ def update( default_provider_sort=default_provider_sort, default_text_model=default_text_model, description=description, - io_logging_api_key_ids=io_logging_api_key_ids, + io_logging_api_key_ids=utils.unmarshal( + io_logging_api_key_ids, OptionalNullable[List[int]] + ), io_logging_sampling_rate=io_logging_sampling_rate, is_data_discount_logging_enabled=is_data_discount_logging_enabled, is_observability_broadcast_enabled=is_observability_broadcast_enabled, @@ -1317,9 +1345,11 @@ def update( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Workspaces"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1375,7 +1405,7 @@ async def update_async( default_provider_sort: OptionalNullable[str] = UNSET, default_text_model: OptionalNullable[str] = UNSET, description: OptionalNullable[str] = UNSET, - io_logging_api_key_ids: OptionalNullable[List[int]] = UNSET, + io_logging_api_key_ids: OptionalNullable[Iterable[int]] = UNSET, io_logging_sampling_rate: Optional[float] = None, is_data_discount_logging_enabled: Optional[bool] = None, is_observability_broadcast_enabled: Optional[bool] = None, @@ -1435,7 +1465,9 @@ async def update_async( default_provider_sort=default_provider_sort, default_text_model=default_text_model, description=description, - io_logging_api_key_ids=io_logging_api_key_ids, + io_logging_api_key_ids=utils.unmarshal( + io_logging_api_key_ids, OptionalNullable[List[int]] + ), io_logging_sampling_rate=io_logging_sampling_rate, is_data_discount_logging_enabled=is_data_discount_logging_enabled, is_observability_broadcast_enabled=is_observability_broadcast_enabled, @@ -1495,9 +1527,11 @@ async def update_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Workspaces"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1631,9 +1665,11 @@ def list_budgets( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Workspaces"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1759,9 +1795,11 @@ async def list_budgets_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Workspaces"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1890,9 +1928,11 @@ def delete_budget( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Workspaces"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2021,9 +2061,11 @@ async def delete_budget_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Workspaces"], + extensions=None, ), request=req, - error_status_codes=["401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2164,9 +2206,11 @@ def set_budget( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Workspaces"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2312,9 +2356,11 @@ async def set_budget_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Workspaces"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2360,7 +2406,7 @@ def bulk_add_members( self, *, id: str, - user_ids: List[str], + user_ids: Iterable[str], http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, @@ -2403,7 +2449,7 @@ def bulk_add_members( x_open_router_categories=x_open_router_categories, id=id, bulk_add_workspace_members_request=components.BulkAddWorkspaceMembersRequest( - user_ids=user_ids, + user_ids=utils.unmarshal(user_ids, List[str]), ), ) @@ -2457,9 +2503,11 @@ def bulk_add_members( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Workspaces"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2510,7 +2558,7 @@ async def bulk_add_members_async( self, *, id: str, - user_ids: List[str], + user_ids: Iterable[str], http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, @@ -2553,7 +2601,7 @@ async def bulk_add_members_async( x_open_router_categories=x_open_router_categories, id=id, bulk_add_workspace_members_request=components.BulkAddWorkspaceMembersRequest( - user_ids=user_ids, + user_ids=utils.unmarshal(user_ids, List[str]), ), ) @@ -2607,9 +2655,11 @@ async def bulk_add_members_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Workspaces"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2660,7 +2710,7 @@ def bulk_remove_members( self, *, id: str, - user_ids: List[str], + user_ids: Iterable[str], http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, @@ -2703,7 +2753,7 @@ def bulk_remove_members( x_open_router_categories=x_open_router_categories, id=id, bulk_remove_workspace_members_request=components.BulkRemoveWorkspaceMembersRequest( - user_ids=user_ids, + user_ids=utils.unmarshal(user_ids, List[str]), ), ) @@ -2757,9 +2807,11 @@ def bulk_remove_members( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Workspaces"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2810,7 +2862,7 @@ async def bulk_remove_members_async( self, *, id: str, - user_ids: List[str], + user_ids: Iterable[str], http_referer: Optional[str] = None, x_open_router_title: Optional[str] = None, x_open_router_categories: Optional[str] = None, @@ -2853,7 +2905,7 @@ async def bulk_remove_members_async( x_open_router_categories=x_open_router_categories, id=id, bulk_remove_workspace_members_request=components.BulkRemoveWorkspaceMembersRequest( - user_ids=user_ids, + user_ids=utils.unmarshal(user_ids, List[str]), ), ) @@ -2907,9 +2959,11 @@ async def bulk_remove_members_async( security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), + tags=["Workspaces"], + extensions=None, ), request=req, - error_status_codes=["400", "401", "403", "404", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/uv.lock b/uv.lock index 3359fdcb..110a921e 100644 --- a/uv.lock +++ b/uv.lock @@ -1,11 +1,10 @@ version = 1 revision = 3 -requires-python = ">=3.9.2" +requires-python = ">=3.10" resolution-markers = [ "python_full_version >= '3.12'", "python_full_version == '3.11.*'", - "python_full_version == '3.10.*'", - "python_full_version < '3.10'", + "python_full_version < '3.11'", ] [[package]] @@ -76,7 +75,7 @@ name = "exceptiongroup" version = "1.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size = 29749, upload-time = "2025-05-10T17:42:51.123Z" } wheels = [ @@ -191,12 +190,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d2/8b/801aa06445d2de3895f59e476f38f3f8d610ef5d6908245f07d002676cbf/mypy-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c43a7682e24b4f576d93072216bf56eeff70d9140241f9edec0c104d0c515036", size = 12402541, upload-time = "2025-02-05T03:49:57.623Z" }, { url = "https://files.pythonhosted.org/packages/c7/67/5a4268782eb77344cc613a4cf23540928e41f018a9a1ec4c6882baf20ab8/mypy-1.15.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:baefc32840a9f00babd83251560e0ae1573e2f9d1b067719479bfb0e987c6357", size = 12494348, upload-time = "2025-02-05T03:48:52.361Z" }, { url = "https://files.pythonhosted.org/packages/83/3e/57bb447f7bbbfaabf1712d96f9df142624a386d98fb026a761532526057e/mypy-1.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:b9378e2c00146c44793c98b8d5a61039a048e31f429fb0eb546d93f4b000bedf", size = 9373648, upload-time = "2025-02-05T03:49:11.395Z" }, - { url = "https://files.pythonhosted.org/packages/5a/fa/79cf41a55b682794abe71372151dbbf856e3008f6767057229e6649d294a/mypy-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e601a7fa172c2131bff456bb3ee08a88360760d0d2f8cbd7a75a65497e2df078", size = 10737129, upload-time = "2025-02-05T03:50:24.509Z" }, - { url = "https://files.pythonhosted.org/packages/d3/33/dd8feb2597d648de29e3da0a8bf4e1afbda472964d2a4a0052203a6f3594/mypy-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:712e962a6357634fef20412699a3655c610110e01cdaa6180acec7fc9f8513ba", size = 9856335, upload-time = "2025-02-05T03:49:36.398Z" }, - { url = "https://files.pythonhosted.org/packages/e4/b5/74508959c1b06b96674b364ffeb7ae5802646b32929b7701fc6b18447592/mypy-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f95579473af29ab73a10bada2f9722856792a36ec5af5399b653aa28360290a5", size = 11611935, upload-time = "2025-02-05T03:49:14.154Z" }, - { url = "https://files.pythonhosted.org/packages/6c/53/da61b9d9973efcd6507183fdad96606996191657fe79701b2c818714d573/mypy-1.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f8722560a14cde92fdb1e31597760dc35f9f5524cce17836c0d22841830fd5b", size = 12365827, upload-time = "2025-02-05T03:48:59.458Z" }, - { url = "https://files.pythonhosted.org/packages/c1/72/965bd9ee89540c79a25778cc080c7e6ef40aa1eeac4d52cec7eae6eb5228/mypy-1.15.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1fbb8da62dc352133d7d7ca90ed2fb0e9d42bb1a32724c287d3c76c58cbaa9c2", size = 12541924, upload-time = "2025-02-05T03:50:03.12Z" }, - { url = "https://files.pythonhosted.org/packages/46/d0/f41645c2eb263e6c77ada7d76f894c580c9ddb20d77f0c24d34273a4dab2/mypy-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:d10d994b41fb3497719bbf866f227b3489048ea4bbbb5015357db306249f7980", size = 9271176, upload-time = "2025-02-05T03:50:10.86Z" }, { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777, upload-time = "2025-02-05T03:50:08.348Z" }, ] @@ -220,7 +213,7 @@ wheels = [ [[package]] name = "openrouter" -version = "0.10.8" +version = "0.11.0" source = { editable = "." } dependencies = [ { name = "httpcore" }, @@ -241,7 +234,7 @@ requires-dist = [ { name = "httpcore", specifier = ">=1.0.9" }, { name = "httpx", specifier = ">=0.28.1" }, { name = "jsonpath-python", specifier = ">=1.0.6" }, - { name = "pydantic", specifier = ">=2.11.2" }, + { name = "pydantic", specifier = ">=2.11.2,<2.13" }, ] [package.metadata.requires-dev] @@ -251,27 +244,10 @@ dev = [ { name = "pyright", specifier = "==1.1.398" }, ] -[[package]] -name = "platformdirs" -version = "4.4.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version < '3.10'", -] -sdist = { url = "https://files.pythonhosted.org/packages/23/e8/21db9c9987b0e728855bd57bff6984f67952bea55d6f75e055c46b5383e8/platformdirs-4.4.0.tar.gz", hash = "sha256:ca753cf4d81dc309bc67b0ea38fd15dc97bc30ce419a7f58d13eb3bf14c4febf", size = 21634, upload-time = "2025-08-26T14:32:04.268Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/40/4b/2028861e724d3bd36227adfa20d3fd24c3fc6d52032f4a93c133be5d17ce/platformdirs-4.4.0-py3-none-any.whl", hash = "sha256:abd01743f24e5287cd7a5db3752faf1a2d65353f38ec26d98e25a6db65958c85", size = 18654, upload-time = "2025-08-26T14:32:02.735Z" }, -] - [[package]] name = "platformdirs" version = "4.5.0" source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.12'", - "python_full_version == '3.11.*'", - "python_full_version == '3.10.*'", -] sdist = { url = "https://files.pythonhosted.org/packages/61/33/9611380c2bdb1225fdef633e2a9610622310fed35ab11dac9620972ee088/platformdirs-4.5.0.tar.gz", hash = "sha256:70ddccdd7c99fc5942e9fc25636a8b34d04c24b335100223152c2803e4063312", size = 21632, upload-time = "2025-10-08T17:44:48.791Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/73/cb/ac7874b3e5d58441674fb70742e6c374b28b0c7cb988d37d991cde47166c/platformdirs-4.5.0-py3-none-any.whl", hash = "sha256:e578a81bb873cbb89a41fcc904c7ef523cc18284b7e3b3ccf06aca1403b7ebd3", size = 18651, upload-time = "2025-10-08T17:44:47.223Z" }, @@ -384,19 +360,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5c/96/5fb7d8c3c17bc8c62fdb031c47d77a1af698f1d7a406b0f79aaa1338f9ad/pydantic_core-2.41.5-cp314-cp314t-win32.whl", hash = "sha256:b4ececa40ac28afa90871c2cc2b9ffd2ff0bf749380fbdf57d165fd23da353aa", size = 1988906, upload-time = "2025-11-04T13:41:56.606Z" }, { url = "https://files.pythonhosted.org/packages/22/ed/182129d83032702912c2e2d8bbe33c036f342cc735737064668585dac28f/pydantic_core-2.41.5-cp314-cp314t-win_amd64.whl", hash = "sha256:80aa89cad80b32a912a65332f64a4450ed00966111b6615ca6816153d3585a8c", size = 1981607, upload-time = "2025-11-04T13:41:58.889Z" }, { url = "https://files.pythonhosted.org/packages/9f/ed/068e41660b832bb0b1aa5b58011dea2a3fe0ba7861ff38c4d4904c1c1a99/pydantic_core-2.41.5-cp314-cp314t-win_arm64.whl", hash = "sha256:35b44f37a3199f771c3eaa53051bc8a70cd7b54f333531c59e29fd4db5d15008", size = 1974769, upload-time = "2025-11-04T13:42:01.186Z" }, - { url = "https://files.pythonhosted.org/packages/54/db/160dffb57ed9a3705c4cbcbff0ac03bdae45f1ca7d58ab74645550df3fbd/pydantic_core-2.41.5-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:8bfeaf8735be79f225f3fefab7f941c712aaca36f1128c9d7e2352ee1aa87bdf", size = 2107999, upload-time = "2025-11-04T13:42:03.885Z" }, - { url = "https://files.pythonhosted.org/packages/a3/7d/88e7de946f60d9263cc84819f32513520b85c0f8322f9b8f6e4afc938383/pydantic_core-2.41.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:346285d28e4c8017da95144c7f3acd42740d637ff41946af5ce6e5e420502dd5", size = 1929745, upload-time = "2025-11-04T13:42:06.075Z" }, - { url = "https://files.pythonhosted.org/packages/d5/c2/aef51e5b283780e85e99ff19db0f05842d2d4a8a8cd15e63b0280029b08f/pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a75dafbf87d6276ddc5b2bf6fae5254e3d0876b626eb24969a574fff9149ee5d", size = 1920220, upload-time = "2025-11-04T13:42:08.457Z" }, - { url = "https://files.pythonhosted.org/packages/c7/97/492ab10f9ac8695cd76b2fdb24e9e61f394051df71594e9bcc891c9f586e/pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7b93a4d08587e2b7e7882de461e82b6ed76d9026ce91ca7915e740ecc7855f60", size = 2067296, upload-time = "2025-11-04T13:42:10.817Z" }, - { url = "https://files.pythonhosted.org/packages/ec/23/984149650e5269c59a2a4c41d234a9570adc68ab29981825cfaf4cfad8f4/pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e8465ab91a4bd96d36dde3263f06caa6a8a6019e4113f24dc753d79a8b3a3f82", size = 2231548, upload-time = "2025-11-04T13:42:13.843Z" }, - { url = "https://files.pythonhosted.org/packages/71/0c/85bcbb885b9732c28bec67a222dbed5ed2d77baee1f8bba2002e8cd00c5c/pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:299e0a22e7ae2b85c1a57f104538b2656e8ab1873511fd718a1c1c6f149b77b5", size = 2362571, upload-time = "2025-11-04T13:42:16.208Z" }, - { url = "https://files.pythonhosted.org/packages/c0/4a/412d2048be12c334003e9b823a3fa3d038e46cc2d64dd8aab50b31b65499/pydantic_core-2.41.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:707625ef0983fcfb461acfaf14de2067c5942c6bb0f3b4c99158bed6fedd3cf3", size = 2068175, upload-time = "2025-11-04T13:42:18.911Z" }, - { url = "https://files.pythonhosted.org/packages/73/f4/c58b6a776b502d0a5540ad02e232514285513572060f0d78f7832ca3c98b/pydantic_core-2.41.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f41eb9797986d6ebac5e8edff36d5cef9de40def462311b3eb3eeded1431e425", size = 2177203, upload-time = "2025-11-04T13:42:22.578Z" }, - { url = "https://files.pythonhosted.org/packages/ed/ae/f06ea4c7e7a9eead3d165e7623cd2ea0cb788e277e4f935af63fc98fa4e6/pydantic_core-2.41.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0384e2e1021894b1ff5a786dbf94771e2986ebe2869533874d7e43bc79c6f504", size = 2148191, upload-time = "2025-11-04T13:42:24.89Z" }, - { url = "https://files.pythonhosted.org/packages/c1/57/25a11dcdc656bf5f8b05902c3c2934ac3ea296257cc4a3f79a6319e61856/pydantic_core-2.41.5-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:f0cd744688278965817fd0839c4a4116add48d23890d468bc436f78beb28abf5", size = 2343907, upload-time = "2025-11-04T13:42:27.683Z" }, - { url = "https://files.pythonhosted.org/packages/96/82/e33d5f4933d7a03327c0c43c65d575e5919d4974ffc026bc917a5f7b9f61/pydantic_core-2.41.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:753e230374206729bf0a807954bcc6c150d3743928a73faffee51ac6557a03c3", size = 2322174, upload-time = "2025-11-04T13:42:30.776Z" }, - { url = "https://files.pythonhosted.org/packages/81/45/4091be67ce9f469e81656f880f3506f6a5624121ec5eb3eab37d7581897d/pydantic_core-2.41.5-cp39-cp39-win32.whl", hash = "sha256:873e0d5b4fb9b89ef7c2d2a963ea7d02879d9da0da8d9d4933dee8ee86a8b460", size = 1990353, upload-time = "2025-11-04T13:42:33.111Z" }, - { url = "https://files.pythonhosted.org/packages/44/8a/a98aede18db6e9cd5d66bcacd8a409fcf8134204cdede2e7de35c5a2c5ef/pydantic_core-2.41.5-cp39-cp39-win_amd64.whl", hash = "sha256:e4f4a984405e91527a0d62649ee21138f8e3d0ef103be488c1dc11a80d7f184b", size = 2015698, upload-time = "2025-11-04T13:42:35.484Z" }, { url = "https://files.pythonhosted.org/packages/11/72/90fda5ee3b97e51c494938a4a44c3a35a9c96c19bba12372fb9c634d6f57/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:b96d5f26b05d03cc60f11a7761a5ded1741da411e7fe0909e27a5e6a0cb7b034", size = 2115441, upload-time = "2025-11-04T13:42:39.557Z" }, { url = "https://files.pythonhosted.org/packages/1f/53/8942f884fa33f50794f119012dc6a1a02ac43a56407adaac20463df8e98f/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:634e8609e89ceecea15e2d61bc9ac3718caaaa71963717bf3c8f38bfde64242c", size = 1930291, upload-time = "2025-11-04T13:42:42.169Z" }, { url = "https://files.pythonhosted.org/packages/79/c8/ecb9ed9cd942bce09fc888ee960b52654fbdbede4ba6c2d6e0d3b1d8b49c/pydantic_core-2.41.5-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93e8740d7503eb008aa2df04d3b9735f845d43ae845e6dcd2be0b55a2da43cd2", size = 1948632, upload-time = "2025-11-04T13:42:44.564Z" }, @@ -433,11 +396,9 @@ dependencies = [ { name = "dill" }, { name = "isort" }, { name = "mccabe" }, - { name = "platformdirs", version = "4.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "platformdirs", version = "4.5.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "platformdirs" }, { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "tomlkit" }, - { name = "typing-extensions", marker = "python_full_version < '3.10'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/9a/e9/60280b14cc1012794120345ce378504cf17409e38cd88f455dc24e0ad6b5/pylint-3.2.3.tar.gz", hash = "sha256:02f6c562b215582386068d52a30f520d84fdbcf2a95fc7e855b816060d048b60", size = 1506739, upload-time = "2024-06-06T14:19:17.955Z" } wheels = [