first commit

This commit is contained in:
Sheldon Vaughn
2025-08-22 10:31:13 -05:00
commit ab530a160e
284 changed files with 18581 additions and 0 deletions
File diff suppressed because it is too large Load Diff
+90
View File
@@ -0,0 +1,90 @@
overlay: 1.0.0
x-speakeasy-jsonpath: rfc9535
info:
title: Overlay chat-completions-openapi.yaml => openapi.yaml
version: 0.0.0
actions:
- target: $["components"]["schemas"]["ChatCompletion"]["properties"]["system_fingerprint"]
update:
type: string
nullable: true
description: System fingerprint
- target: $["components"]["schemas"]["ChatCompletionChunk"]["properties"]["system_fingerprint"]
update:
type: string
nullable: true
- target: $["components"]["schemas"]
update:
ChatStreamCompletionCreateParams:
allOf:
- $ref: "#/components/schemas/ChatCompletionCreateParams"
- type: object
properties:
stream:
type: boolean
enum:
- true
default: true
description: Enable streaming response
- target: $["paths"]["/chat/completions"]["post"]["responses"]["200"]["content"]["application/json"]["schema"]
update:
$ref: '#/components/schemas/ChatCompletion'
- target: $["paths"]["/chat/completions"]["post"]["responses"]["200"]["content"]["application/json"]["schema"]
update:
description: Non-streaming response when stream=false
- target: $["paths"]["/chat/completions"]["post"]["responses"]["200"]["content"]["application/json"]["schema"]["oneOf"]
remove: true
- target: $["paths"]["/chat/completions"]["post"]["responses"]["200"]["content"]["text/event-stream"]
remove: true
- target: $["paths"]
update:
/chat/completions#stream:
post:
operationId: streamChatCompletion
summary: Create a chat completion
description: Creates a model response for the given chat conversation. Supports both streaming and non-streaming modes.
tags:
- Chat
requestBody:
description: Chat completion request parameters
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ChatStreamCompletionCreateParams'
responses:
'200':
description: Successful chat completion response
content:
text/event-stream:
x-speakeasy-sse-sentinel: '[DONE]'
schema:
type: object
required: [data]
properties:
data:
$ref: '#/components/schemas/ChatCompletionChunk'
'400':
description: Bad request - invalid parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ChatCompletionError'
'401':
description: Unauthorized - invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/ChatCompletionError'
'429':
description: Too many requests - rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ChatCompletionError'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ChatCompletionError'
@@ -0,0 +1,28 @@
overlay: 1.0.0
x-speakeasy-jsonpath: rfc9535
info:
title: Speakeasy Modifications
version: 0.0.2
x-speakeasy-metadata:
after: ""
before: ""
type: speakeasy-modifications
actions:
- target: $["paths"]["/chat/completions"]["post"]
update:
x-speakeasy-name-override: complete
x-speakeasy-metadata:
after: sdk.chat.complete()
before: sdk.Chat.createChatCompletion()
created_at: 1755805257797
reviewed_at: 1755805262583
type: method-name
- target: $["paths"]["/chat/completions#stream"]["post"]
update:
x-speakeasy-name-override: completeStream
x-speakeasy-metadata:
after: sdk.chat.completeStream()
before: sdk.Chat.streamChatCompletion()
created_at: 1755805257798
reviewed_at: 1755805262583
type: method-name
+320
View File
@@ -0,0 +1,320 @@
lockVersion: 2.0.0
id: 232c6d4f-b0fd-4172-8f1b-e2421566e9b4
management:
docChecksum: 003bbbc167e4db8bd3f147793a6648e1
docVersion: 1.0.0
speakeasyVersion: 1.606.2
generationVersion: 2.687.1
releaseVersion: 0.1.2
configChecksum: b19ff6e8c7d11c27501834040fadf2a5
features:
python:
additionalDependencies: 1.0.0
constsAndDefaults: 1.0.5
core: 5.19.9
defaultEnabledRetries: 0.2.0
devContainers: 3.0.0
enumUnions: 0.1.0
envVarSecurityUsage: 0.3.2
flatRequests: 1.0.1
globalSecurity: 3.0.3
globalSecurityCallbacks: 1.0.0
globalSecurityFlattening: 1.0.0
globalServerURLs: 3.1.1
methodArguments: 1.0.2
nameOverrides: 3.0.1
nullables: 1.0.1
responseFormat: 1.0.1
retries: 3.0.2
sdkHooks: 1.1.0
serverEvents: 1.0.7
serverEventsSentinels: 0.1.0
unions: 3.0.4
generatedFiles:
- .devcontainer/README.md
- .devcontainer/devcontainer.json
- .devcontainer/setup.sh
- .gitattributes
- .vscode/settings.json
- USAGE.md
- docs/errors/chatcompletionerror.md
- docs/models/annotationdetail.md
- docs/models/chatcompletion.md
- docs/models/chatcompletionassistantmessageparam.md
- docs/models/chatcompletionassistantmessageparamcontent.md
- docs/models/chatcompletionassistantmessageparamrole.md
- docs/models/chatcompletionchoice.md
- docs/models/chatcompletionchoicefinishreason.md
- docs/models/chatcompletionchunk.md
- docs/models/chatcompletionchunkchoice.md
- docs/models/chatcompletionchunkchoicedelta.md
- docs/models/chatcompletionchunkchoicedeltarole.md
- docs/models/chatcompletionchunkchoicedeltatoolcall.md
- docs/models/chatcompletionchunkchoicedeltatoolcallfunction.md
- docs/models/chatcompletionchunkchoicedeltatoolcalltype.md
- docs/models/chatcompletionchunkchoicefinishreason.md
- docs/models/chatcompletionchunkobject.md
- docs/models/chatcompletioncontentpart.md
- docs/models/chatcompletioncontentpartaudio.md
- docs/models/chatcompletioncontentpartaudioformat.md
- docs/models/chatcompletioncontentpartaudiotype.md
- docs/models/chatcompletioncontentpartimage.md
- docs/models/chatcompletioncontentpartimageimageurl.md
- docs/models/chatcompletioncontentpartimagetype.md
- docs/models/chatcompletioncontentparttext.md
- docs/models/chatcompletioncontentparttexttype.md
- docs/models/chatcompletioncreateparams.md
- docs/models/chatcompletioncreateparamsaudio.md
- docs/models/chatcompletioncreateparamscompletion.md
- docs/models/chatcompletioncreateparamsdatacollection.md
- docs/models/chatcompletioncreateparamseffort.md
- docs/models/chatcompletioncreateparamsengine.md
- docs/models/chatcompletioncreateparamsidchainofthought.md
- docs/models/chatcompletioncreateparamsidfileparser.md
- docs/models/chatcompletioncreateparamsidmoderation.md
- docs/models/chatcompletioncreateparamsidweb.md
- docs/models/chatcompletioncreateparamsignoreenum.md
- docs/models/chatcompletioncreateparamsignoreunion.md
- docs/models/chatcompletioncreateparamsimage.md
- docs/models/chatcompletioncreateparamsjsonschema.md
- docs/models/chatcompletioncreateparamsmaxprice.md
- docs/models/chatcompletioncreateparamsonlyenum.md
- docs/models/chatcompletioncreateparamsonlyunion.md
- docs/models/chatcompletioncreateparamsorderenum.md
- docs/models/chatcompletioncreateparamsorderunion.md
- docs/models/chatcompletioncreateparamspdf.md
- docs/models/chatcompletioncreateparamspdfengine.md
- docs/models/chatcompletioncreateparamspluginchainofthought.md
- docs/models/chatcompletioncreateparamspluginfileparser.md
- docs/models/chatcompletioncreateparamspluginmoderation.md
- docs/models/chatcompletioncreateparamspluginunion.md
- docs/models/chatcompletioncreateparamspluginweb.md
- docs/models/chatcompletioncreateparamsprompt.md
- docs/models/chatcompletioncreateparamsprovider.md
- docs/models/chatcompletioncreateparamsquantization.md
- docs/models/chatcompletioncreateparamsreasoning.md
- docs/models/chatcompletioncreateparamsreasoningeffort.md
- docs/models/chatcompletioncreateparamsrequest.md
- docs/models/chatcompletioncreateparamsresponseformatgrammar.md
- docs/models/chatcompletioncreateparamsresponseformatjsonobject.md
- docs/models/chatcompletioncreateparamsresponseformatjsonschema.md
- docs/models/chatcompletioncreateparamsresponseformatpython.md
- docs/models/chatcompletioncreateparamsresponseformattext.md
- docs/models/chatcompletioncreateparamsresponseformatunion.md
- docs/models/chatcompletioncreateparamssort.md
- docs/models/chatcompletioncreateparamsstop.md
- docs/models/chatcompletioncreateparamsstreamoptions.md
- docs/models/chatcompletioncreateparamstypegrammar.md
- docs/models/chatcompletioncreateparamstypejsonobject.md
- docs/models/chatcompletioncreateparamstypejsonschema.md
- docs/models/chatcompletioncreateparamstypepython.md
- docs/models/chatcompletioncreateparamstypetext.md
- docs/models/chatcompletionmessage.md
- docs/models/chatcompletionmessageparam.md
- docs/models/chatcompletionmessagerole.md
- docs/models/chatcompletionmessagetoolcall.md
- docs/models/chatcompletionmessagetoolcallfunction.md
- docs/models/chatcompletionmessagetoolcalltype.md
- docs/models/chatcompletionnamedtoolchoice.md
- docs/models/chatcompletionnamedtoolchoicefunction.md
- docs/models/chatcompletionnamedtoolchoicetype.md
- docs/models/chatcompletionobject.md
- docs/models/chatcompletionsystemmessageparam.md
- docs/models/chatcompletionsystemmessageparamcontent.md
- docs/models/chatcompletionsystemmessageparamrole.md
- docs/models/chatcompletiontokenlogprob.md
- docs/models/chatcompletiontokenlogprobs.md
- docs/models/chatcompletiontool.md
- docs/models/chatcompletiontoolchoiceoption.md
- docs/models/chatcompletiontoolchoiceoptionauto.md
- docs/models/chatcompletiontoolchoiceoptionnone.md
- docs/models/chatcompletiontoolchoiceoptionrequired.md
- docs/models/chatcompletiontoolfunction.md
- docs/models/chatcompletiontoolmessageparam.md
- docs/models/chatcompletiontoolmessageparamcontent.md
- docs/models/chatcompletiontoolmessageparamrole.md
- docs/models/chatcompletiontooltype.md
- docs/models/chatcompletionusermessageparam.md
- docs/models/chatcompletionusermessageparamcontent.md
- docs/models/chatcompletionusermessageparamrole.md
- docs/models/chatstreamcompletioncreateparams.md
- docs/models/chatstreamcompletioncreateparamsaudio.md
- docs/models/chatstreamcompletioncreateparamscompletion.md
- docs/models/chatstreamcompletioncreateparamsdatacollection.md
- docs/models/chatstreamcompletioncreateparamseffort.md
- docs/models/chatstreamcompletioncreateparamsengine.md
- docs/models/chatstreamcompletioncreateparamsidchainofthought.md
- docs/models/chatstreamcompletioncreateparamsidfileparser.md
- docs/models/chatstreamcompletioncreateparamsidmoderation.md
- docs/models/chatstreamcompletioncreateparamsidweb.md
- docs/models/chatstreamcompletioncreateparamsignoreenum.md
- docs/models/chatstreamcompletioncreateparamsignoreunion.md
- docs/models/chatstreamcompletioncreateparamsimage.md
- docs/models/chatstreamcompletioncreateparamsjsonschema.md
- docs/models/chatstreamcompletioncreateparamsmaxprice.md
- docs/models/chatstreamcompletioncreateparamsonlyenum.md
- docs/models/chatstreamcompletioncreateparamsonlyunion.md
- docs/models/chatstreamcompletioncreateparamsorderenum.md
- docs/models/chatstreamcompletioncreateparamsorderunion.md
- docs/models/chatstreamcompletioncreateparamspdf.md
- docs/models/chatstreamcompletioncreateparamspdfengine.md
- docs/models/chatstreamcompletioncreateparamspluginchainofthought.md
- docs/models/chatstreamcompletioncreateparamspluginfileparser.md
- docs/models/chatstreamcompletioncreateparamspluginmoderation.md
- docs/models/chatstreamcompletioncreateparamspluginunion.md
- docs/models/chatstreamcompletioncreateparamspluginweb.md
- docs/models/chatstreamcompletioncreateparamsprompt.md
- docs/models/chatstreamcompletioncreateparamsprovider.md
- docs/models/chatstreamcompletioncreateparamsquantization.md
- docs/models/chatstreamcompletioncreateparamsreasoning.md
- docs/models/chatstreamcompletioncreateparamsreasoningeffort.md
- docs/models/chatstreamcompletioncreateparamsrequest.md
- docs/models/chatstreamcompletioncreateparamsresponseformatgrammar.md
- docs/models/chatstreamcompletioncreateparamsresponseformatjsonobject.md
- docs/models/chatstreamcompletioncreateparamsresponseformatjsonschema.md
- docs/models/chatstreamcompletioncreateparamsresponseformatpython.md
- docs/models/chatstreamcompletioncreateparamsresponseformattext.md
- docs/models/chatstreamcompletioncreateparamsresponseformatunion.md
- docs/models/chatstreamcompletioncreateparamssort.md
- docs/models/chatstreamcompletioncreateparamsstop.md
- docs/models/chatstreamcompletioncreateparamsstreamoptions.md
- docs/models/chatstreamcompletioncreateparamstypegrammar.md
- docs/models/chatstreamcompletioncreateparamstypejsonobject.md
- docs/models/chatstreamcompletioncreateparamstypejsonschema.md
- docs/models/chatstreamcompletioncreateparamstypepython.md
- docs/models/chatstreamcompletioncreateparamstypetext.md
- docs/models/completiontokensdetails.md
- docs/models/completionusage.md
- docs/models/contentimageurl.md
- docs/models/contenttext.md
- docs/models/contenttypeimageurl.md
- docs/models/contenttypetext.md
- docs/models/detail.md
- docs/models/error.md
- docs/models/file.md
- docs/models/fileannotationdetail.md
- docs/models/fileannotationdetailcontentunion.md
- docs/models/fileannotationdetailimageurl.md
- docs/models/inputaudio.md
- docs/models/parameters.md
- docs/models/prompttokensdetails.md
- docs/models/reasoningdetail.md
- docs/models/reasoningdetailencrypted.md
- docs/models/reasoningdetailencryptedformat.md
- docs/models/reasoningdetailencryptedtype.md
- docs/models/reasoningdetailsummary.md
- docs/models/reasoningdetailsummaryformat.md
- docs/models/reasoningdetailsummarytype.md
- docs/models/reasoningdetailtext.md
- docs/models/reasoningdetailtextformat.md
- docs/models/reasoningdetailtexttype.md
- docs/models/responseformatjsonschemaschema.md
- docs/models/security.md
- docs/models/streamchatcompletionresponsebody.md
- docs/models/toplogprob.md
- docs/models/typefile.md
- docs/models/urlcitation.md
- docs/models/urlcitationannotationdetail.md
- docs/models/urlcitationannotationdetailtype.md
- docs/models/utils/retryconfig.md
- docs/sdks/chat/README.md
- docs/sdks/openrouter/README.md
- py.typed
- pylintrc
- pyproject.toml
- scripts/publish.sh
- src/openrouter/__init__.py
- src/openrouter/_hooks/__init__.py
- src/openrouter/_hooks/sdkhooks.py
- src/openrouter/_hooks/types.py
- src/openrouter/_version.py
- src/openrouter/basesdk.py
- src/openrouter/chat.py
- src/openrouter/errors/__init__.py
- src/openrouter/errors/chatcompletionerror.py
- src/openrouter/errors/no_response_error.py
- src/openrouter/errors/openrouterdefaulterror.py
- src/openrouter/errors/openroutererror.py
- src/openrouter/errors/responsevalidationerror.py
- src/openrouter/httpclient.py
- src/openrouter/models/__init__.py
- src/openrouter/models/annotationdetail.py
- src/openrouter/models/chatcompletion.py
- src/openrouter/models/chatcompletionassistantmessageparam.py
- src/openrouter/models/chatcompletionchoice.py
- src/openrouter/models/chatcompletionchunk.py
- src/openrouter/models/chatcompletionchunkchoice.py
- src/openrouter/models/chatcompletionchunkchoicedelta.py
- src/openrouter/models/chatcompletionchunkchoicedeltatoolcall.py
- src/openrouter/models/chatcompletioncontentpart.py
- src/openrouter/models/chatcompletioncontentpartaudio.py
- src/openrouter/models/chatcompletioncontentpartimage.py
- src/openrouter/models/chatcompletioncontentparttext.py
- src/openrouter/models/chatcompletioncreateparams.py
- src/openrouter/models/chatcompletionerror.py
- src/openrouter/models/chatcompletionmessage.py
- src/openrouter/models/chatcompletionmessageparam.py
- src/openrouter/models/chatcompletionmessagetoolcall.py
- src/openrouter/models/chatcompletionnamedtoolchoice.py
- src/openrouter/models/chatcompletionsystemmessageparam.py
- src/openrouter/models/chatcompletiontokenlogprob.py
- src/openrouter/models/chatcompletiontokenlogprobs.py
- src/openrouter/models/chatcompletiontool.py
- src/openrouter/models/chatcompletiontoolchoiceoption.py
- src/openrouter/models/chatcompletiontoolmessageparam.py
- src/openrouter/models/chatcompletionusermessageparam.py
- src/openrouter/models/chatstreamcompletioncreateparams.py
- src/openrouter/models/completionusage.py
- src/openrouter/models/fileannotationdetail.py
- src/openrouter/models/reasoningdetail.py
- src/openrouter/models/reasoningdetailencrypted.py
- src/openrouter/models/reasoningdetailsummary.py
- src/openrouter/models/reasoningdetailtext.py
- src/openrouter/models/responseformatjsonschemaschema.py
- src/openrouter/models/security.py
- src/openrouter/models/streamchatcompletionop.py
- src/openrouter/models/urlcitationannotationdetail.py
- src/openrouter/py.typed
- src/openrouter/sdk.py
- src/openrouter/sdkconfiguration.py
- src/openrouter/types/__init__.py
- src/openrouter/types/basemodel.py
- src/openrouter/utils/__init__.py
- src/openrouter/utils/annotations.py
- src/openrouter/utils/datetimes.py
- src/openrouter/utils/enums.py
- src/openrouter/utils/eventstreaming.py
- src/openrouter/utils/forms.py
- src/openrouter/utils/headers.py
- src/openrouter/utils/logger.py
- src/openrouter/utils/metadata.py
- src/openrouter/utils/queryparams.py
- src/openrouter/utils/requestbodies.py
- src/openrouter/utils/retries.py
- src/openrouter/utils/security.py
- src/openrouter/utils/serializers.py
- src/openrouter/utils/unmarshal_json_response.py
- src/openrouter/utils/url.py
- src/openrouter/utils/values.py
examples:
createChatCompletion:
speakeasy-default-create-chat-completion:
requestBody:
application/json: {"messages": [{"role": "user", "content": "Hello, how are you?"}], "stream": false, "temperature": 1, "top_p": 1}
responses:
"200":
application/json: {"id": "<id>", "choices": [], "created": 6977.95, "model": "El Camino", "object": "chat.completion"}
"400":
application/json: {"error": {"code": "<value>", "message": "<value>", "param": "<value>", "type": "<value>"}}
"500":
application/json: {"error": {"code": "<value>", "message": "<value>", "param": "<value>", "type": "<value>"}}
streamChatCompletion:
speakeasy-default-stream-chat-completion:
requestBody:
application/json: {"messages": [{"role": "user", "content": "Hello, how are you?"}], "stream": true, "temperature": 1, "top_p": 1}
responses:
"400":
application/json: {"error": {"code": "<value>", "message": "<value>", "param": "<value>", "type": "<value>"}}
"500":
application/json: {"error": {"code": "<value>", "message": "<value>", "param": "<value>", "type": "<value>"}}
examplesVersion: 1.0.2
+64
View File
@@ -0,0 +1,64 @@
configVersion: 2.0.0
generation:
devContainers:
enabled: true
schemaPath: .speakeasy/out.openapi.yaml
sdkClassName: OpenRouter
maintainOpenAPIOrder: true
usageSnippets:
optionalPropertyRendering: withExample
sdkInitStyle: constructor
useClassNamesForArrayFields: true
fixes:
nameResolutionDec2023: true
nameResolutionFeb2025: true
parameterOrderingFeb2024: true
requestResponseComponentNamesFeb2024: true
securityFeb2025: true
sharedErrorComponentsApr2025: true
auth:
oAuth2ClientCredentialsEnabled: true
oAuth2PasswordEnabled: true
sdkHooksConfigAccess: true
tests:
generateTests: false
generateNewTests: true
skipResponseBodyAssertions: false
python:
version: 0.1.2
additionalDependencies:
dev: {}
main: {}
authors:
- Speakeasy
baseErrorName: OpenRouterError
clientServerStatusCodesAsErrors: true
defaultErrorName: OpenRouterDefaultError
description: Python Client SDK Generated by Speakeasy.
enableCustomCodeRegions: false
enumFormat: enum
envVarPrefix: OPENROUTER
fixFlags:
responseRequiredSep2024: true
flattenGlobalSecurity: true
flattenRequests: true
flatteningOrder: parameters-first
imports:
option: openapi
paths:
callbacks: ""
errors: errors
operations: ""
shared: ""
webhooks: ""
inputModelSuffix: input
maxMethodParams: 999
methodArguments: infer-optional-args
moduleName: ""
outputModelSuffix: output
packageManager: uv
packageName: openrouter
pytestFilterWarnings: []
pytestTimeout: 0
responseFormat: flat
templateVersion: v2
File diff suppressed because it is too large Load Diff
+40
View File
@@ -0,0 +1,40 @@
speakeasyVersion: 1.606.2
sources:
OpenRouter Chat Completions API:
sourceNamespace: open-router-chat-completions-api
sourceRevisionDigest: sha256:30b19a8759608792fb4d27f6bf28d5982d7e2a8cf5b3faf34ba3507a62f9f106
sourceBlobDigest: sha256:454f1b880a0882a70f78eacccb2c33e3d9d19134a0738b0e21487984a7bf2e63
tags:
- latest
- 1.0.0
targets:
open-router:
source: OpenRouter Chat Completions API
sourceNamespace: open-router-chat-completions-api
sourceRevisionDigest: sha256:30b19a8759608792fb4d27f6bf28d5982d7e2a8cf5b3faf34ba3507a62f9f106
sourceBlobDigest: sha256:454f1b880a0882a70f78eacccb2c33e3d9d19134a0738b0e21487984a7bf2e63
codeSamplesNamespace: open-router-chat-completions-api-python-code-samples
codeSamplesRevisionDigest: sha256:3a91ac3dc92c4f41025bfbe2ab316844707268e93ea1947cd4fe8996f01620b5
workflow:
workflowVersion: 1.0.0
speakeasyVersion: latest
sources:
OpenRouter Chat Completions API:
inputs:
- location: .speakeasy/OAS_files/chat-completions-openapi.yaml
overlays:
- location: .speakeasy/OAS_files/overlay.yaml
- location: .speakeasy/OAS_files/speakeasy-modifications-overlay.yaml
output: .speakeasy/out.openapi.yaml
registry:
location: registry.speakeasyapi.dev/sheldon-vaughn-test/sandbox/open-router-chat-completions-api
targets:
open-router:
target: python
source: OpenRouter Chat Completions API
codeSamples:
registry:
location: registry.speakeasyapi.dev/sheldon-vaughn-test/sandbox/open-router-chat-completions-api-python-code-samples
labelOverride:
fixedValue: Python (SDK)
blocking: false
+22
View File
@@ -0,0 +1,22 @@
workflowVersion: 1.0.0
speakeasyVersion: latest
sources:
OpenRouter Chat Completions API:
inputs:
- location: .speakeasy/OAS_files/chat-completions-openapi.yaml
overlays:
- location: .speakeasy/OAS_files/overlay.yaml
- location: .speakeasy/OAS_files/speakeasy-modifications-overlay.yaml
output: .speakeasy/out.openapi.yaml
registry:
location: registry.speakeasyapi.dev/sheldon-vaughn-test/sandbox/open-router-chat-completions-api
targets:
open-router:
target: python
source: OpenRouter Chat Completions API
codeSamples:
registry:
location: registry.speakeasyapi.dev/sheldon-vaughn-test/sandbox/open-router-chat-completions-api-python-code-samples
labelOverride:
fixedValue: Python (SDK)
blocking: false