Skip to content

Commit b796891

Browse files
committed
ci: regenerated with OpenAPI Doc 0.2.0, Speakeay CLI 0.22.1
1 parent d294523 commit b796891

14 files changed

+240
-12
lines changed

README.md

+6
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,12 @@ else:
8282
* `get_version_metadata` - Get all metadata for a particular apiID and versionID.
8383
* `insert_version_metadata` - Insert metadata for a particular apiID and versionID.
8484

85+
### Plugins
86+
87+
* `get_plugins` - Get all plugins for the current workspace.
88+
* `run_plugin` - Run a plugin
89+
* `upsert_plugin` - Upsert a plugin
90+
8591
### Requests
8692

8793
* `generate_request_postman_collection` - Generate a Postman collection for a particular request.

RELEASES.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11

22

3-
## Version 0.14.0
3+
## Version 0.14.1
44
### Changes
55
Based on:
66
- OpenAPI Doc 0.2.0 https://docs.speakeasyapi.dev/openapi.yaml
7-
- Speakeasy CLI 0.22.0 https://github.com/speakeasy-api/speakeasy
7+
- Speakeasy CLI 0.22.1 https://github.com/speakeasy-api/speakeasy
88
### Releases
9-
- [PyPI v0.14.0] https://pypi.org/project/speakeasy-client-sdk-python/0.14.0 - .
9+
- [PyPI v0.14.1] https://pypi.org/project/speakeasy-client-sdk-python/0.14.1 - .

gen.yaml

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
management:
2-
openapi-checksum: 2c73ed56562b78c36624b5eaddb0249b
2+
openapi-checksum: 85121b09180ffa7f639ebd829f945718
33
openapi-version: 0.2.0
4-
speakeasy-version: 0.22.0
4+
speakeasy-version: 0.22.1
55
python:
6-
version: 0.14.0
6+
version: 0.14.1
77
packagename: speakeasy-client-sdk-python
88
author: Speakeasy
99
description: Speakeasy API Client SDK for Python

setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
setuptools.setup(
1010
name="speakeasy-client-sdk-python",
11-
version="0.14.0",
11+
version="0.14.1",
1212
author="Speakeasy",
1313
description="Speakeasy API Client SDK for Python",
1414
long_description=long_description,

src/sdk/models/operations/__init__.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from .getapiendpoint import *
1717
from .getapis import *
1818
from .getembedaccesstoken import *
19+
from .getplugins import *
1920
from .getrequestfromeventlog import *
2021
from .getschema import *
2122
from .getschemadiff import *
@@ -27,8 +28,10 @@
2728
from .queryeventlog import *
2829
from .registerschema import *
2930
from .revokeembedaccesstoken import *
31+
from .runplugin import *
3032
from .upsertapi import *
3133
from .upsertapiendpoint import *
34+
from .upsertplugin import *
3235
from .validateapikey import *
3336

34-
__all__ = ["DeleteAPIPathParams","DeleteAPIRequest","DeleteAPIResponse","DeleteAPIEndpointPathParams","DeleteAPIEndpointRequest","DeleteAPIEndpointResponse","DeleteSchemaPathParams","DeleteSchemaRequest","DeleteSchemaResponse","DeleteVersionMetadataPathParams","DeleteVersionMetadataRequest","DeleteVersionMetadataResponse","DownloadSchemaPathParams","DownloadSchemaRequest","DownloadSchemaResponse","DownloadSchemaRevisionPathParams","DownloadSchemaRevisionRequest","DownloadSchemaRevisionResponse","FindAPIEndpointPathParams","FindAPIEndpointRequest","FindAPIEndpointResponse","GenerateOpenAPISpecPathParams","GenerateOpenAPISpecRequest","GenerateOpenAPISpecResponse","GenerateOpenAPISpecForAPIEndpointPathParams","GenerateOpenAPISpecForAPIEndpointRequest","GenerateOpenAPISpecForAPIEndpointResponse","GeneratePostmanCollectionPathParams","GeneratePostmanCollectionRequest","GeneratePostmanCollectionResponse","GeneratePostmanCollectionForAPIEndpointPathParams","GeneratePostmanCollectionForAPIEndpointRequest","GeneratePostmanCollectionForAPIEndpointResponse","GenerateRequestPostmanCollectionPathParams","GenerateRequestPostmanCollectionRequest","GenerateRequestPostmanCollectionResponse","GetAllAPIEndpointsPathParams","GetAllAPIEndpointsRequest","GetAllAPIEndpointsResponse","GetAllAPIVersionsPathParams","GetAllAPIVersionsOp","GetAllAPIVersionsQueryParams","GetAllAPIVersionsRequest","GetAllAPIVersionsResponse","GetAllForVersionAPIEndpointsPathParams","GetAllForVersionAPIEndpointsRequest","GetAllForVersionAPIEndpointsResponse","GetAPIEndpointPathParams","GetAPIEndpointRequest","GetAPIEndpointResponse","GetApisOp","GetApisQueryParams","GetApisRequest","GetApisResponse","GetEmbedAccessTokenQueryParams","GetEmbedAccessTokenRequest","GetEmbedAccessTokenResponse","GetRequestFromEventLogPathParams","GetRequestFromEventLogRequest","GetRequestFromEventLogResponse","GetSchemaPathParams","GetSchemaRequest","GetSchemaResponse","GetSchemaDiffPathParams","GetSchemaDiffRequest","GetSchemaDiffResponse","GetSchemaRevisionPathParams","GetSchemaRevisionRequest","GetSchemaRevisionResponse","GetSchemasPathParams","GetSchemasRequest","GetSchemasResponse","GetValidEmbedAccessTokensResponse","GetVersionMetadataPathParams","GetVersionMetadataRequest","GetVersionMetadataResponse","InsertVersionMetadataPathParams","InsertVersionMetadataRequest","InsertVersionMetadataResponse","QueryEventLogQueryParams","QueryEventLogRequest","QueryEventLogResponse","RegisterSchemaPathParams","RegisterSchemaRequestBodyFile","RegisterSchemaRequestBody","RegisterSchemaRequest","RegisterSchemaResponse","RevokeEmbedAccessTokenPathParams","RevokeEmbedAccessTokenRequest","RevokeEmbedAccessTokenResponse","UpsertAPIPathParams","UpsertAPIRequest","UpsertAPIResponse","UpsertAPIEndpointPathParams","UpsertAPIEndpointRequest","UpsertAPIEndpointResponse","ValidateAPIKeyResponse"]
37+
__all__ = ["DeleteAPIPathParams","DeleteAPIRequest","DeleteAPIResponse","DeleteAPIEndpointPathParams","DeleteAPIEndpointRequest","DeleteAPIEndpointResponse","DeleteSchemaPathParams","DeleteSchemaRequest","DeleteSchemaResponse","DeleteVersionMetadataPathParams","DeleteVersionMetadataRequest","DeleteVersionMetadataResponse","DownloadSchemaPathParams","DownloadSchemaRequest","DownloadSchemaResponse","DownloadSchemaRevisionPathParams","DownloadSchemaRevisionRequest","DownloadSchemaRevisionResponse","FindAPIEndpointPathParams","FindAPIEndpointRequest","FindAPIEndpointResponse","GenerateOpenAPISpecPathParams","GenerateOpenAPISpecRequest","GenerateOpenAPISpecResponse","GenerateOpenAPISpecForAPIEndpointPathParams","GenerateOpenAPISpecForAPIEndpointRequest","GenerateOpenAPISpecForAPIEndpointResponse","GeneratePostmanCollectionPathParams","GeneratePostmanCollectionRequest","GeneratePostmanCollectionResponse","GeneratePostmanCollectionForAPIEndpointPathParams","GeneratePostmanCollectionForAPIEndpointRequest","GeneratePostmanCollectionForAPIEndpointResponse","GenerateRequestPostmanCollectionPathParams","GenerateRequestPostmanCollectionRequest","GenerateRequestPostmanCollectionResponse","GetAllAPIEndpointsPathParams","GetAllAPIEndpointsRequest","GetAllAPIEndpointsResponse","GetAllAPIVersionsPathParams","GetAllAPIVersionsOp","GetAllAPIVersionsQueryParams","GetAllAPIVersionsRequest","GetAllAPIVersionsResponse","GetAllForVersionAPIEndpointsPathParams","GetAllForVersionAPIEndpointsRequest","GetAllForVersionAPIEndpointsResponse","GetAPIEndpointPathParams","GetAPIEndpointRequest","GetAPIEndpointResponse","GetApisOp","GetApisQueryParams","GetApisRequest","GetApisResponse","GetEmbedAccessTokenQueryParams","GetEmbedAccessTokenRequest","GetEmbedAccessTokenResponse","GetPluginsResponse","GetRequestFromEventLogPathParams","GetRequestFromEventLogRequest","GetRequestFromEventLogResponse","GetSchemaPathParams","GetSchemaRequest","GetSchemaResponse","GetSchemaDiffPathParams","GetSchemaDiffRequest","GetSchemaDiffResponse","GetSchemaRevisionPathParams","GetSchemaRevisionRequest","GetSchemaRevisionResponse","GetSchemasPathParams","GetSchemasRequest","GetSchemasResponse","GetValidEmbedAccessTokensResponse","GetVersionMetadataPathParams","GetVersionMetadataRequest","GetVersionMetadataResponse","InsertVersionMetadataPathParams","InsertVersionMetadataRequest","InsertVersionMetadataResponse","QueryEventLogQueryParams","QueryEventLogRequest","QueryEventLogResponse","RegisterSchemaPathParams","RegisterSchemaRequestBodyFile","RegisterSchemaRequestBody","RegisterSchemaRequest","RegisterSchemaResponse","RevokeEmbedAccessTokenPathParams","RevokeEmbedAccessTokenRequest","RevokeEmbedAccessTokenResponse","RunPluginPathParams","RunPluginQueryParams","RunPluginRequest","RunPluginResponse","UpsertAPIPathParams","UpsertAPIRequest","UpsertAPIResponse","UpsertAPIEndpointPathParams","UpsertAPIEndpointRequest","UpsertAPIEndpointResponse","UpsertPluginRequest","UpsertPluginResponse","ValidateAPIKeyResponse"]
+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import dataclasses
2+
from typing import Optional
3+
from ..shared import error as shared_error
4+
from ..shared import plugin as shared_plugin
5+
6+
7+
@dataclasses.dataclass
8+
class GetPluginsResponse:
9+
content_type: str = dataclasses.field()
10+
status_code: int = dataclasses.field()
11+
error: Optional[shared_error.Error] = dataclasses.field(default=None)
12+
plugins: Optional[list[shared_plugin.Plugin]] = dataclasses.field(default=None)
13+
+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import dataclasses
2+
from typing import Optional
3+
from ..shared import filters as shared_filters
4+
from ..shared import boundedrequest as shared_boundedrequest
5+
from ..shared import error as shared_error
6+
7+
8+
@dataclasses.dataclass
9+
class RunPluginPathParams:
10+
plugin_id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'pluginID', 'style': 'simple', 'explode': False }})
11+
12+
13+
@dataclasses.dataclass
14+
class RunPluginQueryParams:
15+
filters: Optional[shared_filters.Filters] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'filters', 'serialization': 'json' }})
16+
17+
18+
@dataclasses.dataclass
19+
class RunPluginRequest:
20+
path_params: RunPluginPathParams = dataclasses.field()
21+
query_params: RunPluginQueryParams = dataclasses.field()
22+
23+
24+
@dataclasses.dataclass
25+
class RunPluginResponse:
26+
content_type: str = dataclasses.field()
27+
status_code: int = dataclasses.field()
28+
bounded_requests: Optional[list[shared_boundedrequest.BoundedRequest]] = dataclasses.field(default=None)
29+
error: Optional[shared_error.Error] = dataclasses.field(default=None)
30+
+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import dataclasses
2+
from typing import Optional
3+
from ..shared import plugin as shared_plugin
4+
from ..shared import error as shared_error
5+
6+
7+
@dataclasses.dataclass
8+
class UpsertPluginRequest:
9+
request: shared_plugin.Plugin = dataclasses.field(metadata={'request': { 'media_type': 'application/json' }})
10+
11+
12+
@dataclasses.dataclass
13+
class UpsertPluginResponse:
14+
content_type: str = dataclasses.field()
15+
status_code: int = dataclasses.field()
16+
error: Optional[shared_error.Error] = dataclasses.field(default=None)
17+
plugin: Optional[shared_plugin.Plugin] = dataclasses.field(default=None)
18+

src/sdk/models/shared/__init__.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@
77
from .filter import *
88
from .filters import *
99
from .generateopenapispecdiff import *
10+
from .plugin import *
11+
from .requestmetadata import *
1012
from .schema import *
1113
from .schemadiff import *
1214
from .security import *
1315
from .unboundedrequest import *
1416
from .versionmetadata import *
1517

16-
__all__ = ["API","APIInput","APIEndpoint","APIEndpointInput","BoundedRequest","EmbedAccessTokenResponse","EmbedToken","Error","Filter","Filters","GenerateOpenAPISpecDiff","Schema","SchemaDiffValueChange","SchemaDiff","SchemeAPIKey","Security","UnboundedRequest","VersionMetadata","VersionMetadataInput"]
18+
__all__ = ["API","APIInput","APIEndpoint","APIEndpointInput","BoundedRequest","EmbedAccessTokenResponse","EmbedToken","Error","Filter","Filters","GenerateOpenAPISpecDiff","Plugin","RequestMetadata","Schema","SchemaDiffValueChange","SchemaDiff","SchemeAPIKey","Security","UnboundedRequest","VersionMetadata","VersionMetadataInput"]

src/sdk/models/shared/boundedrequest.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from typing import Optional
66
from dataclasses_json import dataclass_json
77
from sdk import utils
8+
from ..shared import requestmetadata as shared_requestmetadata
89

910

1011
@dataclass_json
@@ -27,5 +28,5 @@ class BoundedRequest:
2728
status: int = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('status') }})
2829
version_id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('version_id') }})
2930
workspace_id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('workspace_id') }})
30-
metadata: Optional[dict[str, list[str]]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('metadata') }})
31+
metadata: Optional[list[shared_requestmetadata.RequestMetadata]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('metadata') }})
3132

src/sdk/models/shared/plugin.py

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import dataclasses
2+
from datetime import date, datetime
3+
from marshmallow import fields
4+
import dateutil.parser
5+
from typing import Optional
6+
from dataclasses_json import dataclass_json
7+
from sdk import utils
8+
9+
10+
@dataclass_json
11+
@dataclasses.dataclass
12+
class Plugin:
13+
r"""Plugin
14+
A plugin is a short script that is run against ingested requests
15+
"""
16+
17+
code: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('code') }})
18+
plugin_id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('plugin_id') }})
19+
title: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('title') }})
20+
workspace_id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.field_name('workspace_id') }})
21+
created_at: Optional[datetime] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('created_at'), 'encoder': utils.datetimeisoformat(True), 'decoder': dateutil.parser.isoparse, 'mm_field': fields.DateTime(format='iso') }})
22+
eval_hash: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('eval_hash') }})
23+
updated_at: Optional[datetime] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('updated_at'), 'encoder': utils.datetimeisoformat(True), 'decoder': dateutil.parser.isoparse, 'mm_field': fields.DateTime(format='iso') }})
24+
+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import dataclasses
2+
from typing import Optional
3+
from dataclasses_json import dataclass_json
4+
from sdk import utils
5+
6+
7+
@dataclass_json
8+
@dataclasses.dataclass
9+
class RequestMetadata:
10+
r"""RequestMetadata
11+
Key-Value pairs associated with a request
12+
"""
13+
14+
key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('key') }})
15+
value: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.field_name('value') }})
16+

src/sdk/plugins.py

+113
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
import requests
2+
from typing import Optional
3+
from sdk.models import shared, operations
4+
from . import utils
5+
6+
class Plugins:
7+
_client: requests.Session
8+
_security_client: requests.Session
9+
_server_url: str
10+
_language: str
11+
_sdk_version: str
12+
_gen_version: str
13+
14+
def __init__(self, client: requests.Session, security_client: requests.Session, server_url: str, language: str, sdk_version: str, gen_version: str) -> None:
15+
self._client = client
16+
self._security_client = security_client
17+
self._server_url = server_url
18+
self._language = language
19+
self._sdk_version = sdk_version
20+
self._gen_version = gen_version
21+
22+
23+
def get_plugins(self) -> operations.GetPluginsResponse:
24+
r"""Get all plugins for the current workspace.
25+
"""
26+
27+
base_url = self._server_url
28+
29+
url = base_url.removesuffix("/") + "/v1/plugins"
30+
31+
32+
client = self._security_client
33+
34+
r = client.request("GET", url)
35+
content_type = r.headers.get("Content-Type")
36+
37+
res = operations.GetPluginsResponse(status_code=r.status_code, content_type=content_type)
38+
39+
if r.status_code == 200:
40+
if utils.match_content_type(content_type, "application/json"):
41+
out = utils.unmarshal_json(r.text, Optional[list[shared.Plugin]])
42+
res.plugins = out
43+
else:
44+
if utils.match_content_type(content_type, "application/json"):
45+
out = utils.unmarshal_json(r.text, Optional[shared.Error])
46+
res.error = out
47+
48+
return res
49+
50+
51+
def run_plugin(self, request: operations.RunPluginRequest) -> operations.RunPluginResponse:
52+
r"""Run a plugin
53+
"""
54+
55+
base_url = self._server_url
56+
57+
url = utils.generate_url(base_url, "/v1/plugin/{pluginID}", request.path_params)
58+
59+
query_params = utils.get_query_params(request.query_params)
60+
61+
client = self._security_client
62+
63+
r = client.request("POST", url, params=query_params)
64+
content_type = r.headers.get("Content-Type")
65+
66+
res = operations.RunPluginResponse(status_code=r.status_code, content_type=content_type)
67+
68+
if r.status_code == 200:
69+
if utils.match_content_type(content_type, "application/json"):
70+
out = utils.unmarshal_json(r.text, Optional[list[shared.BoundedRequest]])
71+
res.bounded_requests = out
72+
else:
73+
if utils.match_content_type(content_type, "application/json"):
74+
out = utils.unmarshal_json(r.text, Optional[shared.Error])
75+
res.error = out
76+
77+
return res
78+
79+
80+
def upsert_plugin(self, request: operations.UpsertPluginRequest) -> operations.UpsertPluginResponse:
81+
r"""Upsert a plugin
82+
"""
83+
84+
base_url = self._server_url
85+
86+
url = base_url.removesuffix("/") + "/v1/plugin"
87+
88+
headers = {}
89+
req_content_type, data, json, files = utils.serialize_request_body(request)
90+
if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed":
91+
headers["content-type"] = req_content_type
92+
if data is None and json is None:
93+
raise Exception('request body is required')
94+
95+
client = self._security_client
96+
97+
r = client.request("PUT", url, data=data, json=json, files=files, headers=headers)
98+
content_type = r.headers.get("Content-Type")
99+
100+
res = operations.UpsertPluginResponse(status_code=r.status_code, content_type=content_type)
101+
102+
if r.status_code == 200:
103+
if utils.match_content_type(content_type, "application/json"):
104+
out = utils.unmarshal_json(r.text, Optional[shared.Plugin])
105+
res.plugin = out
106+
else:
107+
if utils.match_content_type(content_type, "application/json"):
108+
out = utils.unmarshal_json(r.text, Optional[shared.Error])
109+
res.error = out
110+
111+
return res
112+
113+

src/sdk/sdk.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from .apis import Apis
1111
from .embeds import Embeds
1212
from .metadata import Metadata
13+
from .plugins import Plugins
1314
from .requests import Requests
1415
from .schemas import Schemas
1516

@@ -27,6 +28,7 @@ class SDK:
2728
apis: Apis
2829
embeds: Embeds
2930
metadata: Metadata
31+
plugins: Plugins
3032
requests: Requests
3133
schemas: Schemas
3234

@@ -35,8 +37,8 @@ class SDK:
3537
_security: shared.Security
3638
_server_url: str = SERVERS[SERVER_PROD]
3739
_language: str = "python"
38-
_sdk_version: str = "0.14.0"
39-
_gen_version: str = "0.22.0"
40+
_sdk_version: str = "0.14.1"
41+
_gen_version: str = "0.22.1"
4042

4143
def __init__(self) -> None:
4244
self._client = requests.Session()

0 commit comments

Comments
 (0)