sdk: regen — the KMS org left the URL, so 3.1.2's secrets routes were dead

Regenerated pkg/hanzoai/cloud from hanzo.yaml. Consumed: cloud 8143fc0e,
openapi 2861089 (was f581a0e when 3.1.2 was cut).

openapi 3300cda took {org} out of the KMS secrets contract — the org is read from
the token now — and 3.1.2 shipped from before it, so its KMS methods addressed a
path the server no longer serves:

    /v1/kms/orgs/{org}/secrets         -> /v1/kms/secrets
    /v1/kms/orgs/{org}/secrets/{rest}  -> /v1/kms/secrets/{rest}
    kms_get_v1_kms_orgs_org_secrets    -> kms_get_v1_kms_secrets
    kms_post_v1_kms_orgs_org_secrets   -> kms_post_v1_kms_secrets

Five request/response models renamed with them. Nothing else in the 1885-path
surface moved: 5 models added, 5 removed, 6 files changed.

3.1.2 never reached PyPI (the tag cannot get to git.hanzo.ai — sync-from-github
fast-forwards main only, never tags), so this is fix-forward, not a replacement.
PyPI still serves 3.1.1; 3.1.2 stays a tag.

The upstream tag-casing collision came back exactly as LLM.md said it would: the
regen rmtree'd the tree and `import hanzoai.cloud` raised ImportError again on
AiApi/ApiKeysApi/McpApi. Stripped the same 9 dead lines. It will return on every
regen until one tag spelling per service lands in the per-service specs — that
also recovers the 127 of 411 operations those 23 colliding groups still drop.

No test pins the KMS route: asserting spec content here would make this repo a
second source of truth for routes and fight the pull-only contract. test_smoke
pins structure instead — import, version, surface breadth. 6 passed.

Version 3.1.2 -> 3.1.3, patch only.

Co-authored-by: Hanzo Dev <[email protected]>
This commit is contained in:
2026-07-28 10:34:39 -07:00
co-authored by Hanzo Dev
parent 915b2701c9
commit 22b00e135a
13 changed files with 125 additions and 182 deletions
+4 -1
View File
@@ -36,7 +36,10 @@ this repo owns its test + PATCH bump + release
only from hanzoai/openapi (`python3 generate.py python`) — never from here. The old
`scripts/generate.sh` was a second, destructive driver (`rm -rf pkg/hanzoai`, which would
have eaten the hand-written `config/mcp/protocols/session/zap` modules); it is deleted.
Consumed at 3.1.2: cloud `8143fc0e`, openapi `f581a0e`.
Consumed at 3.1.3: cloud `8143fc0e`, openapi `2861089`. Regenerate whenever either moves —
openapi `3300cda` dropped `{org}` from the KMS secrets routes (`/v1/kms/orgs/{org}/secrets`
-> `/v1/kms/secrets`; the org is read from the token), which silently stranded 3.1.2 on a
path the server no longer serves.
**Upstream spec defect — open, fix in the per-service specs.** `hanzo.yaml` carries 23 tag
groups that differ only by case (`AI`/`ai`, `Users`/`users`, `flows`/`Flows`, …).
+10 -10
View File
@@ -1461,13 +1461,13 @@ __all__ = [
"KmsError",
"KmsGetV1KmsHealth200Response",
"KmsGetV1KmsKeysId404Response",
"KmsGetV1KmsOrgsOrgSecrets200Response",
"KmsGetV1KmsOrgsOrgSecrets401Response",
"KmsGetV1KmsOrgsOrgSecretsRest200Response",
"KmsGetV1KmsOrgsOrgSecretsRest200ResponseSecret",
"KmsGetV1KmsSecrets200Response",
"KmsGetV1KmsSecrets401Response",
"KmsGetV1KmsSecretsRest200Response",
"KmsGetV1KmsSecretsRest200ResponseSecret",
"KmsPostV1KmsAuthLogin200Response",
"KmsPostV1KmsAuthLoginRequest",
"KmsPostV1KmsOrgsOrgSecretsRequest",
"KmsPostV1KmsSecretsRequest",
"KmsSdkEnvelope",
"KmsSdkEnvelopeIdentity",
"KvBatchOperation200Response",
@@ -3631,13 +3631,13 @@ from hanzoai.cloud.models.kb_sync_connector200_response import KbSyncConnector20
from hanzoai.cloud.models.kms_error import KmsError as KmsError
from hanzoai.cloud.models.kms_get_v1_kms_health200_response import KmsGetV1KmsHealth200Response as KmsGetV1KmsHealth200Response
from hanzoai.cloud.models.kms_get_v1_kms_keys_id404_response import KmsGetV1KmsKeysId404Response as KmsGetV1KmsKeysId404Response
from hanzoai.cloud.models.kms_get_v1_kms_orgs_org_secrets200_response import KmsGetV1KmsOrgsOrgSecrets200Response as KmsGetV1KmsOrgsOrgSecrets200Response
from hanzoai.cloud.models.kms_get_v1_kms_orgs_org_secrets401_response import KmsGetV1KmsOrgsOrgSecrets401Response as KmsGetV1KmsOrgsOrgSecrets401Response
from hanzoai.cloud.models.kms_get_v1_kms_orgs_org_secrets_rest200_response import KmsGetV1KmsOrgsOrgSecretsRest200Response as KmsGetV1KmsOrgsOrgSecretsRest200Response
from hanzoai.cloud.models.kms_get_v1_kms_orgs_org_secrets_rest200_response_secret import KmsGetV1KmsOrgsOrgSecretsRest200ResponseSecret as KmsGetV1KmsOrgsOrgSecretsRest200ResponseSecret
from hanzoai.cloud.models.kms_get_v1_kms_secrets200_response import KmsGetV1KmsSecrets200Response as KmsGetV1KmsSecrets200Response
from hanzoai.cloud.models.kms_get_v1_kms_secrets401_response import KmsGetV1KmsSecrets401Response as KmsGetV1KmsSecrets401Response
from hanzoai.cloud.models.kms_get_v1_kms_secrets_rest200_response import KmsGetV1KmsSecretsRest200Response as KmsGetV1KmsSecretsRest200Response
from hanzoai.cloud.models.kms_get_v1_kms_secrets_rest200_response_secret import KmsGetV1KmsSecretsRest200ResponseSecret as KmsGetV1KmsSecretsRest200ResponseSecret
from hanzoai.cloud.models.kms_post_v1_kms_auth_login200_response import KmsPostV1KmsAuthLogin200Response as KmsPostV1KmsAuthLogin200Response
from hanzoai.cloud.models.kms_post_v1_kms_auth_login_request import KmsPostV1KmsAuthLoginRequest as KmsPostV1KmsAuthLoginRequest
from hanzoai.cloud.models.kms_post_v1_kms_orgs_org_secrets_request import KmsPostV1KmsOrgsOrgSecretsRequest as KmsPostV1KmsOrgsOrgSecretsRequest
from hanzoai.cloud.models.kms_post_v1_kms_secrets_request import KmsPostV1KmsSecretsRequest as KmsPostV1KmsSecretsRequest
from hanzoai.cloud.models.kms_sdk_envelope import KmsSdkEnvelope as KmsSdkEnvelope
from hanzoai.cloud.models.kms_sdk_envelope_identity import KmsSdkEnvelopeIdentity as KmsSdkEnvelopeIdentity
from hanzoai.cloud.models.kv_batch_operation200_response import KvBatchOperation200Response as KvBatchOperation200Response
+3 -3
View File
@@ -5310,7 +5310,7 @@ class AuthApi:
) -> KmsPostV1KmsAuthLogin200Response:
"""Exchange machine identity for a bearer token
The only auth route. The token is org-scoped: it reaches /v1/kms/orgs/<its own org>/* and nothing else.
The only auth route. The token is org-scoped, and the org is read from it: a token reaches its own org's secrets and nothing else.
:param kms_post_v1_kms_auth_login_request: (required)
:type kms_post_v1_kms_auth_login_request: KmsPostV1KmsAuthLoginRequest
@@ -5379,7 +5379,7 @@ class AuthApi:
) -> ApiResponse[KmsPostV1KmsAuthLogin200Response]:
"""Exchange machine identity for a bearer token
The only auth route. The token is org-scoped: it reaches /v1/kms/orgs/<its own org>/* and nothing else.
The only auth route. The token is org-scoped, and the org is read from it: a token reaches its own org's secrets and nothing else.
:param kms_post_v1_kms_auth_login_request: (required)
:type kms_post_v1_kms_auth_login_request: KmsPostV1KmsAuthLoginRequest
@@ -5448,7 +5448,7 @@ class AuthApi:
) -> RESTResponseType:
"""Exchange machine identity for a bearer token
The only auth route. The token is org-scoped: it reaches /v1/kms/orgs/<its own org>/* and nothing else.
The only auth route. The token is org-scoped, and the org is read from it: a token reaches its own org's secrets and nothing else.
:param kms_post_v1_kms_auth_login_request: (required)
:type kms_post_v1_kms_auth_login_request: KmsPostV1KmsAuthLoginRequest
+6 -6
View File
@@ -19,7 +19,7 @@ from typing_extensions import Annotated
from pydantic import StrictStr
from typing import Any, Dict, Optional
from hanzoai.cloud.models.kms_get_v1_kms_orgs_org_secrets_rest200_response_secret import KmsGetV1KmsOrgsOrgSecretsRest200ResponseSecret
from hanzoai.cloud.models.kms_get_v1_kms_secrets_rest200_response_secret import KmsGetV1KmsSecretsRest200ResponseSecret
from hanzoai.cloud.api_client import ApiClient, RequestSerialized
from hanzoai.cloud.api_response import ApiResponse
@@ -622,7 +622,7 @@ class HashApi:
_content_type: Optional[StrictStr] = None,
_headers: Optional[Dict[StrictStr, Any]] = None,
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
) -> KmsGetV1KmsOrgsOrgSecretsRest200ResponseSecret:
) -> KmsGetV1KmsSecretsRest200ResponseSecret:
"""Get hash field
@@ -665,7 +665,7 @@ class HashApi:
)
_response_types_map: Dict[str, Optional[str]] = {
'200': "KmsGetV1KmsOrgsOrgSecretsRest200ResponseSecret",
'200': "KmsGetV1KmsSecretsRest200ResponseSecret",
}
response_data = self.api_client.call_api(
*_param,
@@ -696,7 +696,7 @@ class HashApi:
_content_type: Optional[StrictStr] = None,
_headers: Optional[Dict[StrictStr, Any]] = None,
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
) -> ApiResponse[KmsGetV1KmsOrgsOrgSecretsRest200ResponseSecret]:
) -> ApiResponse[KmsGetV1KmsSecretsRest200ResponseSecret]:
"""Get hash field
@@ -739,7 +739,7 @@ class HashApi:
)
_response_types_map: Dict[str, Optional[str]] = {
'200': "KmsGetV1KmsOrgsOrgSecretsRest200ResponseSecret",
'200': "KmsGetV1KmsSecretsRest200ResponseSecret",
}
response_data = self.api_client.call_api(
*_param,
@@ -813,7 +813,7 @@ class HashApi:
)
_response_types_map: Dict[str, Optional[str]] = {
'200': "KmsGetV1KmsOrgsOrgSecretsRest200ResponseSecret",
'200': "KmsGetV1KmsSecretsRest200ResponseSecret",
}
response_data = self.api_client.call_api(
*_param,
+72 -132
View File
@@ -25,9 +25,9 @@ from hanzoai.cloud.models.edge_list_secrets200_response_inner import EdgeListSec
from hanzoai.cloud.models.edge_secret import EdgeSecret
from hanzoai.cloud.models.edge_secret_create import EdgeSecretCreate
from hanzoai.cloud.models.edge_update_secret_request import EdgeUpdateSecretRequest
from hanzoai.cloud.models.kms_get_v1_kms_orgs_org_secrets200_response import KmsGetV1KmsOrgsOrgSecrets200Response
from hanzoai.cloud.models.kms_get_v1_kms_orgs_org_secrets_rest200_response import KmsGetV1KmsOrgsOrgSecretsRest200Response
from hanzoai.cloud.models.kms_post_v1_kms_orgs_org_secrets_request import KmsPostV1KmsOrgsOrgSecretsRequest
from hanzoai.cloud.models.kms_get_v1_kms_secrets200_response import KmsGetV1KmsSecrets200Response
from hanzoai.cloud.models.kms_get_v1_kms_secrets_rest200_response import KmsGetV1KmsSecretsRest200Response
from hanzoai.cloud.models.kms_post_v1_kms_secrets_request import KmsPostV1KmsSecretsRequest
from hanzoai.cloud.api_client import ApiClient, RequestSerialized
from hanzoai.cloud.api_response import ApiResponse
@@ -1121,9 +1121,8 @@ class SecretsApi:
@validate_call
def kms_delete_v1_kms_orgs_org_secrets_rest(
def kms_delete_v1_kms_secrets_rest(
self,
org: Annotated[StrictStr, Field(description="Org scope")],
rest: Annotated[StrictStr, Field(description="Path and name joined. Split at the LAST slash: `a/b/C` is path `a/b`, name `C`. Escape each segment individually.")],
env: Annotated[Optional[StrictStr], Field(description="Environment slug; defaults to `default`")] = None,
_request_timeout: Union[
@@ -1142,8 +1141,6 @@ class SecretsApi:
"""Delete a secret
:param org: Org scope (required)
:type org: str
:param rest: Path and name joined. Split at the LAST slash: `a/b/C` is path `a/b`, name `C`. Escape each segment individually. (required)
:type rest: str
:param env: Environment slug; defaults to `default`
@@ -1170,8 +1167,7 @@ class SecretsApi:
:return: Returns the result object.
""" # noqa: E501
_param = self._kms_delete_v1_kms_orgs_org_secrets_rest_serialize(
org=org,
_param = self._kms_delete_v1_kms_secrets_rest_serialize(
rest=rest,
env=env,
_request_auth=_request_auth,
@@ -1182,7 +1178,7 @@ class SecretsApi:
_response_types_map: Dict[str, Optional[str]] = {
'200': None,
'401': "KmsGetV1KmsOrgsOrgSecrets401Response",
'401': "KmsGetV1KmsSecrets401Response",
'404': "KmsGetV1KmsKeysId404Response",
}
response_data = self.api_client.call_api(
@@ -1197,9 +1193,8 @@ class SecretsApi:
@validate_call
def kms_delete_v1_kms_orgs_org_secrets_rest_with_http_info(
def kms_delete_v1_kms_secrets_rest_with_http_info(
self,
org: Annotated[StrictStr, Field(description="Org scope")],
rest: Annotated[StrictStr, Field(description="Path and name joined. Split at the LAST slash: `a/b/C` is path `a/b`, name `C`. Escape each segment individually.")],
env: Annotated[Optional[StrictStr], Field(description="Environment slug; defaults to `default`")] = None,
_request_timeout: Union[
@@ -1218,8 +1213,6 @@ class SecretsApi:
"""Delete a secret
:param org: Org scope (required)
:type org: str
:param rest: Path and name joined. Split at the LAST slash: `a/b/C` is path `a/b`, name `C`. Escape each segment individually. (required)
:type rest: str
:param env: Environment slug; defaults to `default`
@@ -1246,8 +1239,7 @@ class SecretsApi:
:return: Returns the result object.
""" # noqa: E501
_param = self._kms_delete_v1_kms_orgs_org_secrets_rest_serialize(
org=org,
_param = self._kms_delete_v1_kms_secrets_rest_serialize(
rest=rest,
env=env,
_request_auth=_request_auth,
@@ -1258,7 +1250,7 @@ class SecretsApi:
_response_types_map: Dict[str, Optional[str]] = {
'200': None,
'401': "KmsGetV1KmsOrgsOrgSecrets401Response",
'401': "KmsGetV1KmsSecrets401Response",
'404': "KmsGetV1KmsKeysId404Response",
}
response_data = self.api_client.call_api(
@@ -1273,9 +1265,8 @@ class SecretsApi:
@validate_call
def kms_delete_v1_kms_orgs_org_secrets_rest_without_preload_content(
def kms_delete_v1_kms_secrets_rest_without_preload_content(
self,
org: Annotated[StrictStr, Field(description="Org scope")],
rest: Annotated[StrictStr, Field(description="Path and name joined. Split at the LAST slash: `a/b/C` is path `a/b`, name `C`. Escape each segment individually.")],
env: Annotated[Optional[StrictStr], Field(description="Environment slug; defaults to `default`")] = None,
_request_timeout: Union[
@@ -1294,8 +1285,6 @@ class SecretsApi:
"""Delete a secret
:param org: Org scope (required)
:type org: str
:param rest: Path and name joined. Split at the LAST slash: `a/b/C` is path `a/b`, name `C`. Escape each segment individually. (required)
:type rest: str
:param env: Environment slug; defaults to `default`
@@ -1322,8 +1311,7 @@ class SecretsApi:
:return: Returns the result object.
""" # noqa: E501
_param = self._kms_delete_v1_kms_orgs_org_secrets_rest_serialize(
org=org,
_param = self._kms_delete_v1_kms_secrets_rest_serialize(
rest=rest,
env=env,
_request_auth=_request_auth,
@@ -1334,7 +1322,7 @@ class SecretsApi:
_response_types_map: Dict[str, Optional[str]] = {
'200': None,
'401': "KmsGetV1KmsOrgsOrgSecrets401Response",
'401': "KmsGetV1KmsSecrets401Response",
'404': "KmsGetV1KmsKeysId404Response",
}
response_data = self.api_client.call_api(
@@ -1344,9 +1332,8 @@ class SecretsApi:
return response_data.response
def _kms_delete_v1_kms_orgs_org_secrets_rest_serialize(
def _kms_delete_v1_kms_secrets_rest_serialize(
self,
org,
rest,
env,
_request_auth,
@@ -1370,8 +1357,6 @@ class SecretsApi:
_body_params: Optional[bytes] = None
# process the path parameters
if org is not None:
_path_params['org'] = org
if rest is not None:
_path_params['rest'] = rest
# process the query parameters
@@ -1400,7 +1385,7 @@ class SecretsApi:
return self.api_client.param_serialize(
method='DELETE',
resource_path='/v1/kms/orgs/{org}/secrets/{rest}',
resource_path='/v1/kms/secrets/{rest}',
path_params=_path_params,
query_params=_query_params,
header_params=_header_params,
@@ -1417,9 +1402,8 @@ class SecretsApi:
@validate_call
def kms_get_v1_kms_orgs_org_secrets(
def kms_get_v1_kms_secrets(
self,
org: Annotated[StrictStr, Field(description="Org scope")],
path: Annotated[Optional[StrictStr], Field(description="Grouping path, e.g. gateway")] = None,
env: Annotated[Optional[StrictStr], Field(description="Environment slug; defaults to `default`")] = None,
_request_timeout: Union[
@@ -1434,13 +1418,11 @@ class SecretsApi:
_content_type: Optional[StrictStr] = None,
_headers: Optional[Dict[StrictStr, Any]] = None,
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
) -> KmsGetV1KmsOrgsOrgSecrets200Response:
) -> KmsGetV1KmsSecrets200Response:
"""List secret names under a path
Mirrors the ZAP wire op OpSecretList (0x0042). Returns names only, never values.
:param org: Org scope (required)
:type org: str
:param path: Grouping path, e.g. gateway
:type path: str
:param env: Environment slug; defaults to `default`
@@ -1467,8 +1449,7 @@ class SecretsApi:
:return: Returns the result object.
""" # noqa: E501
_param = self._kms_get_v1_kms_orgs_org_secrets_serialize(
org=org,
_param = self._kms_get_v1_kms_secrets_serialize(
path=path,
env=env,
_request_auth=_request_auth,
@@ -1478,8 +1459,8 @@ class SecretsApi:
)
_response_types_map: Dict[str, Optional[str]] = {
'200': "KmsGetV1KmsOrgsOrgSecrets200Response",
'401': "KmsGetV1KmsOrgsOrgSecrets401Response",
'200': "KmsGetV1KmsSecrets200Response",
'401': "KmsGetV1KmsSecrets401Response",
}
response_data = self.api_client.call_api(
*_param,
@@ -1493,9 +1474,8 @@ class SecretsApi:
@validate_call
def kms_get_v1_kms_orgs_org_secrets_with_http_info(
def kms_get_v1_kms_secrets_with_http_info(
self,
org: Annotated[StrictStr, Field(description="Org scope")],
path: Annotated[Optional[StrictStr], Field(description="Grouping path, e.g. gateway")] = None,
env: Annotated[Optional[StrictStr], Field(description="Environment slug; defaults to `default`")] = None,
_request_timeout: Union[
@@ -1510,13 +1490,11 @@ class SecretsApi:
_content_type: Optional[StrictStr] = None,
_headers: Optional[Dict[StrictStr, Any]] = None,
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
) -> ApiResponse[KmsGetV1KmsOrgsOrgSecrets200Response]:
) -> ApiResponse[KmsGetV1KmsSecrets200Response]:
"""List secret names under a path
Mirrors the ZAP wire op OpSecretList (0x0042). Returns names only, never values.
:param org: Org scope (required)
:type org: str
:param path: Grouping path, e.g. gateway
:type path: str
:param env: Environment slug; defaults to `default`
@@ -1543,8 +1521,7 @@ class SecretsApi:
:return: Returns the result object.
""" # noqa: E501
_param = self._kms_get_v1_kms_orgs_org_secrets_serialize(
org=org,
_param = self._kms_get_v1_kms_secrets_serialize(
path=path,
env=env,
_request_auth=_request_auth,
@@ -1554,8 +1531,8 @@ class SecretsApi:
)
_response_types_map: Dict[str, Optional[str]] = {
'200': "KmsGetV1KmsOrgsOrgSecrets200Response",
'401': "KmsGetV1KmsOrgsOrgSecrets401Response",
'200': "KmsGetV1KmsSecrets200Response",
'401': "KmsGetV1KmsSecrets401Response",
}
response_data = self.api_client.call_api(
*_param,
@@ -1569,9 +1546,8 @@ class SecretsApi:
@validate_call
def kms_get_v1_kms_orgs_org_secrets_without_preload_content(
def kms_get_v1_kms_secrets_without_preload_content(
self,
org: Annotated[StrictStr, Field(description="Org scope")],
path: Annotated[Optional[StrictStr], Field(description="Grouping path, e.g. gateway")] = None,
env: Annotated[Optional[StrictStr], Field(description="Environment slug; defaults to `default`")] = None,
_request_timeout: Union[
@@ -1591,8 +1567,6 @@ class SecretsApi:
Mirrors the ZAP wire op OpSecretList (0x0042). Returns names only, never values.
:param org: Org scope (required)
:type org: str
:param path: Grouping path, e.g. gateway
:type path: str
:param env: Environment slug; defaults to `default`
@@ -1619,8 +1593,7 @@ class SecretsApi:
:return: Returns the result object.
""" # noqa: E501
_param = self._kms_get_v1_kms_orgs_org_secrets_serialize(
org=org,
_param = self._kms_get_v1_kms_secrets_serialize(
path=path,
env=env,
_request_auth=_request_auth,
@@ -1630,8 +1603,8 @@ class SecretsApi:
)
_response_types_map: Dict[str, Optional[str]] = {
'200': "KmsGetV1KmsOrgsOrgSecrets200Response",
'401': "KmsGetV1KmsOrgsOrgSecrets401Response",
'200': "KmsGetV1KmsSecrets200Response",
'401': "KmsGetV1KmsSecrets401Response",
}
response_data = self.api_client.call_api(
*_param,
@@ -1640,9 +1613,8 @@ class SecretsApi:
return response_data.response
def _kms_get_v1_kms_orgs_org_secrets_serialize(
def _kms_get_v1_kms_secrets_serialize(
self,
org,
path,
env,
_request_auth,
@@ -1666,8 +1638,6 @@ class SecretsApi:
_body_params: Optional[bytes] = None
# process the path parameters
if org is not None:
_path_params['org'] = org
# process the query parameters
if path is not None:
@@ -1698,7 +1668,7 @@ class SecretsApi:
return self.api_client.param_serialize(
method='GET',
resource_path='/v1/kms/orgs/{org}/secrets',
resource_path='/v1/kms/secrets',
path_params=_path_params,
query_params=_query_params,
header_params=_header_params,
@@ -1715,9 +1685,8 @@ class SecretsApi:
@validate_call
def kms_get_v1_kms_orgs_org_secrets_rest(
def kms_get_v1_kms_secrets_rest(
self,
org: Annotated[StrictStr, Field(description="Org scope")],
rest: Annotated[StrictStr, Field(description="Path and name joined. Split at the LAST slash: `a/b/C` is path `a/b`, name `C`. Escape each segment individually.")],
env: Annotated[Optional[StrictStr], Field(description="Environment slug; defaults to `default`")] = None,
_request_timeout: Union[
@@ -1732,12 +1701,10 @@ class SecretsApi:
_content_type: Optional[StrictStr] = None,
_headers: Optional[Dict[StrictStr, Any]] = None,
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
) -> KmsGetV1KmsOrgsOrgSecretsRest200Response:
) -> KmsGetV1KmsSecretsRest200Response:
"""Read one secret value
:param org: Org scope (required)
:type org: str
:param rest: Path and name joined. Split at the LAST slash: `a/b/C` is path `a/b`, name `C`. Escape each segment individually. (required)
:type rest: str
:param env: Environment slug; defaults to `default`
@@ -1764,8 +1731,7 @@ class SecretsApi:
:return: Returns the result object.
""" # noqa: E501
_param = self._kms_get_v1_kms_orgs_org_secrets_rest_serialize(
org=org,
_param = self._kms_get_v1_kms_secrets_rest_serialize(
rest=rest,
env=env,
_request_auth=_request_auth,
@@ -1775,9 +1741,9 @@ class SecretsApi:
)
_response_types_map: Dict[str, Optional[str]] = {
'200': "KmsGetV1KmsOrgsOrgSecretsRest200Response",
'200': "KmsGetV1KmsSecretsRest200Response",
'400': None,
'401': "KmsGetV1KmsOrgsOrgSecrets401Response",
'401': "KmsGetV1KmsSecrets401Response",
'404': "KmsGetV1KmsKeysId404Response",
}
response_data = self.api_client.call_api(
@@ -1792,9 +1758,8 @@ class SecretsApi:
@validate_call
def kms_get_v1_kms_orgs_org_secrets_rest_with_http_info(
def kms_get_v1_kms_secrets_rest_with_http_info(
self,
org: Annotated[StrictStr, Field(description="Org scope")],
rest: Annotated[StrictStr, Field(description="Path and name joined. Split at the LAST slash: `a/b/C` is path `a/b`, name `C`. Escape each segment individually.")],
env: Annotated[Optional[StrictStr], Field(description="Environment slug; defaults to `default`")] = None,
_request_timeout: Union[
@@ -1809,12 +1774,10 @@ class SecretsApi:
_content_type: Optional[StrictStr] = None,
_headers: Optional[Dict[StrictStr, Any]] = None,
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
) -> ApiResponse[KmsGetV1KmsOrgsOrgSecretsRest200Response]:
) -> ApiResponse[KmsGetV1KmsSecretsRest200Response]:
"""Read one secret value
:param org: Org scope (required)
:type org: str
:param rest: Path and name joined. Split at the LAST slash: `a/b/C` is path `a/b`, name `C`. Escape each segment individually. (required)
:type rest: str
:param env: Environment slug; defaults to `default`
@@ -1841,8 +1804,7 @@ class SecretsApi:
:return: Returns the result object.
""" # noqa: E501
_param = self._kms_get_v1_kms_orgs_org_secrets_rest_serialize(
org=org,
_param = self._kms_get_v1_kms_secrets_rest_serialize(
rest=rest,
env=env,
_request_auth=_request_auth,
@@ -1852,9 +1814,9 @@ class SecretsApi:
)
_response_types_map: Dict[str, Optional[str]] = {
'200': "KmsGetV1KmsOrgsOrgSecretsRest200Response",
'200': "KmsGetV1KmsSecretsRest200Response",
'400': None,
'401': "KmsGetV1KmsOrgsOrgSecrets401Response",
'401': "KmsGetV1KmsSecrets401Response",
'404': "KmsGetV1KmsKeysId404Response",
}
response_data = self.api_client.call_api(
@@ -1869,9 +1831,8 @@ class SecretsApi:
@validate_call
def kms_get_v1_kms_orgs_org_secrets_rest_without_preload_content(
def kms_get_v1_kms_secrets_rest_without_preload_content(
self,
org: Annotated[StrictStr, Field(description="Org scope")],
rest: Annotated[StrictStr, Field(description="Path and name joined. Split at the LAST slash: `a/b/C` is path `a/b`, name `C`. Escape each segment individually.")],
env: Annotated[Optional[StrictStr], Field(description="Environment slug; defaults to `default`")] = None,
_request_timeout: Union[
@@ -1890,8 +1851,6 @@ class SecretsApi:
"""Read one secret value
:param org: Org scope (required)
:type org: str
:param rest: Path and name joined. Split at the LAST slash: `a/b/C` is path `a/b`, name `C`. Escape each segment individually. (required)
:type rest: str
:param env: Environment slug; defaults to `default`
@@ -1918,8 +1877,7 @@ class SecretsApi:
:return: Returns the result object.
""" # noqa: E501
_param = self._kms_get_v1_kms_orgs_org_secrets_rest_serialize(
org=org,
_param = self._kms_get_v1_kms_secrets_rest_serialize(
rest=rest,
env=env,
_request_auth=_request_auth,
@@ -1929,9 +1887,9 @@ class SecretsApi:
)
_response_types_map: Dict[str, Optional[str]] = {
'200': "KmsGetV1KmsOrgsOrgSecretsRest200Response",
'200': "KmsGetV1KmsSecretsRest200Response",
'400': None,
'401': "KmsGetV1KmsOrgsOrgSecrets401Response",
'401': "KmsGetV1KmsSecrets401Response",
'404': "KmsGetV1KmsKeysId404Response",
}
response_data = self.api_client.call_api(
@@ -1941,9 +1899,8 @@ class SecretsApi:
return response_data.response
def _kms_get_v1_kms_orgs_org_secrets_rest_serialize(
def _kms_get_v1_kms_secrets_rest_serialize(
self,
org,
rest,
env,
_request_auth,
@@ -1967,8 +1924,6 @@ class SecretsApi:
_body_params: Optional[bytes] = None
# process the path parameters
if org is not None:
_path_params['org'] = org
if rest is not None:
_path_params['rest'] = rest
# process the query parameters
@@ -1997,7 +1952,7 @@ class SecretsApi:
return self.api_client.param_serialize(
method='GET',
resource_path='/v1/kms/orgs/{org}/secrets/{rest}',
resource_path='/v1/kms/secrets/{rest}',
path_params=_path_params,
query_params=_query_params,
header_params=_header_params,
@@ -2014,10 +1969,9 @@ class SecretsApi:
@validate_call
def kms_post_v1_kms_orgs_org_secrets(
def kms_post_v1_kms_secrets(
self,
org: Annotated[StrictStr, Field(description="Org scope")],
kms_post_v1_kms_orgs_org_secrets_request: KmsPostV1KmsOrgsOrgSecretsRequest,
kms_post_v1_kms_secrets_request: KmsPostV1KmsSecretsRequest,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@@ -2035,10 +1989,8 @@ class SecretsApi:
ONE upsert. There is no separate update endpoint and no PATCH.
:param org: Org scope (required)
:type org: str
:param kms_post_v1_kms_orgs_org_secrets_request: (required)
:type kms_post_v1_kms_orgs_org_secrets_request: KmsPostV1KmsOrgsOrgSecretsRequest
:param kms_post_v1_kms_secrets_request: (required)
:type kms_post_v1_kms_secrets_request: KmsPostV1KmsSecretsRequest
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
@@ -2061,9 +2013,8 @@ class SecretsApi:
:return: Returns the result object.
""" # noqa: E501
_param = self._kms_post_v1_kms_orgs_org_secrets_serialize(
org=org,
kms_post_v1_kms_orgs_org_secrets_request=kms_post_v1_kms_orgs_org_secrets_request,
_param = self._kms_post_v1_kms_secrets_serialize(
kms_post_v1_kms_secrets_request=kms_post_v1_kms_secrets_request,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
@@ -2073,7 +2024,7 @@ class SecretsApi:
_response_types_map: Dict[str, Optional[str]] = {
'200': "AnalyticsHeartbeat200Response",
'400': None,
'401': "KmsGetV1KmsOrgsOrgSecrets401Response",
'401': "KmsGetV1KmsSecrets401Response",
}
response_data = self.api_client.call_api(
*_param,
@@ -2087,10 +2038,9 @@ class SecretsApi:
@validate_call
def kms_post_v1_kms_orgs_org_secrets_with_http_info(
def kms_post_v1_kms_secrets_with_http_info(
self,
org: Annotated[StrictStr, Field(description="Org scope")],
kms_post_v1_kms_orgs_org_secrets_request: KmsPostV1KmsOrgsOrgSecretsRequest,
kms_post_v1_kms_secrets_request: KmsPostV1KmsSecretsRequest,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@@ -2108,10 +2058,8 @@ class SecretsApi:
ONE upsert. There is no separate update endpoint and no PATCH.
:param org: Org scope (required)
:type org: str
:param kms_post_v1_kms_orgs_org_secrets_request: (required)
:type kms_post_v1_kms_orgs_org_secrets_request: KmsPostV1KmsOrgsOrgSecretsRequest
:param kms_post_v1_kms_secrets_request: (required)
:type kms_post_v1_kms_secrets_request: KmsPostV1KmsSecretsRequest
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
@@ -2134,9 +2082,8 @@ class SecretsApi:
:return: Returns the result object.
""" # noqa: E501
_param = self._kms_post_v1_kms_orgs_org_secrets_serialize(
org=org,
kms_post_v1_kms_orgs_org_secrets_request=kms_post_v1_kms_orgs_org_secrets_request,
_param = self._kms_post_v1_kms_secrets_serialize(
kms_post_v1_kms_secrets_request=kms_post_v1_kms_secrets_request,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
@@ -2146,7 +2093,7 @@ class SecretsApi:
_response_types_map: Dict[str, Optional[str]] = {
'200': "AnalyticsHeartbeat200Response",
'400': None,
'401': "KmsGetV1KmsOrgsOrgSecrets401Response",
'401': "KmsGetV1KmsSecrets401Response",
}
response_data = self.api_client.call_api(
*_param,
@@ -2160,10 +2107,9 @@ class SecretsApi:
@validate_call
def kms_post_v1_kms_orgs_org_secrets_without_preload_content(
def kms_post_v1_kms_secrets_without_preload_content(
self,
org: Annotated[StrictStr, Field(description="Org scope")],
kms_post_v1_kms_orgs_org_secrets_request: KmsPostV1KmsOrgsOrgSecretsRequest,
kms_post_v1_kms_secrets_request: KmsPostV1KmsSecretsRequest,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@@ -2181,10 +2127,8 @@ class SecretsApi:
ONE upsert. There is no separate update endpoint and no PATCH.
:param org: Org scope (required)
:type org: str
:param kms_post_v1_kms_orgs_org_secrets_request: (required)
:type kms_post_v1_kms_orgs_org_secrets_request: KmsPostV1KmsOrgsOrgSecretsRequest
:param kms_post_v1_kms_secrets_request: (required)
:type kms_post_v1_kms_secrets_request: KmsPostV1KmsSecretsRequest
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
@@ -2207,9 +2151,8 @@ class SecretsApi:
:return: Returns the result object.
""" # noqa: E501
_param = self._kms_post_v1_kms_orgs_org_secrets_serialize(
org=org,
kms_post_v1_kms_orgs_org_secrets_request=kms_post_v1_kms_orgs_org_secrets_request,
_param = self._kms_post_v1_kms_secrets_serialize(
kms_post_v1_kms_secrets_request=kms_post_v1_kms_secrets_request,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
@@ -2219,7 +2162,7 @@ class SecretsApi:
_response_types_map: Dict[str, Optional[str]] = {
'200': "AnalyticsHeartbeat200Response",
'400': None,
'401': "KmsGetV1KmsOrgsOrgSecrets401Response",
'401': "KmsGetV1KmsSecrets401Response",
}
response_data = self.api_client.call_api(
*_param,
@@ -2228,10 +2171,9 @@ class SecretsApi:
return response_data.response
def _kms_post_v1_kms_orgs_org_secrets_serialize(
def _kms_post_v1_kms_secrets_serialize(
self,
org,
kms_post_v1_kms_orgs_org_secrets_request,
kms_post_v1_kms_secrets_request,
_request_auth,
_content_type,
_headers,
@@ -2253,14 +2195,12 @@ class SecretsApi:
_body_params: Optional[bytes] = None
# process the path parameters
if org is not None:
_path_params['org'] = org
# process the query parameters
# process the header parameters
# process the form parameters
# process the body parameter
if kms_post_v1_kms_orgs_org_secrets_request is not None:
_body_params = kms_post_v1_kms_orgs_org_secrets_request
if kms_post_v1_kms_secrets_request is not None:
_body_params = kms_post_v1_kms_secrets_request
# set the HTTP header `Accept`
@@ -2292,7 +2232,7 @@ class SecretsApi:
return self.api_client.param_serialize(
method='POST',
resource_path='/v1/kms/orgs/{org}/secrets',
resource_path='/v1/kms/secrets',
path_params=_path_params,
query_params=_query_params,
header_params=_header_params,
+5 -5
View File
@@ -1077,13 +1077,13 @@ from hanzoai.cloud.models.kb_sync_connector200_response import KbSyncConnector20
from hanzoai.cloud.models.kms_error import KmsError
from hanzoai.cloud.models.kms_get_v1_kms_health200_response import KmsGetV1KmsHealth200Response
from hanzoai.cloud.models.kms_get_v1_kms_keys_id404_response import KmsGetV1KmsKeysId404Response
from hanzoai.cloud.models.kms_get_v1_kms_orgs_org_secrets200_response import KmsGetV1KmsOrgsOrgSecrets200Response
from hanzoai.cloud.models.kms_get_v1_kms_orgs_org_secrets401_response import KmsGetV1KmsOrgsOrgSecrets401Response
from hanzoai.cloud.models.kms_get_v1_kms_orgs_org_secrets_rest200_response import KmsGetV1KmsOrgsOrgSecretsRest200Response
from hanzoai.cloud.models.kms_get_v1_kms_orgs_org_secrets_rest200_response_secret import KmsGetV1KmsOrgsOrgSecretsRest200ResponseSecret
from hanzoai.cloud.models.kms_get_v1_kms_secrets200_response import KmsGetV1KmsSecrets200Response
from hanzoai.cloud.models.kms_get_v1_kms_secrets401_response import KmsGetV1KmsSecrets401Response
from hanzoai.cloud.models.kms_get_v1_kms_secrets_rest200_response import KmsGetV1KmsSecretsRest200Response
from hanzoai.cloud.models.kms_get_v1_kms_secrets_rest200_response_secret import KmsGetV1KmsSecretsRest200ResponseSecret
from hanzoai.cloud.models.kms_post_v1_kms_auth_login200_response import KmsPostV1KmsAuthLogin200Response
from hanzoai.cloud.models.kms_post_v1_kms_auth_login_request import KmsPostV1KmsAuthLoginRequest
from hanzoai.cloud.models.kms_post_v1_kms_orgs_org_secrets_request import KmsPostV1KmsOrgsOrgSecretsRequest
from hanzoai.cloud.models.kms_post_v1_kms_secrets_request import KmsPostV1KmsSecretsRequest
from hanzoai.cloud.models.kms_sdk_envelope import KmsSdkEnvelope
from hanzoai.cloud.models.kms_sdk_envelope_identity import KmsSdkEnvelopeIdentity
from hanzoai.cloud.models.kv_batch_operation200_response import KvBatchOperation200Response
@@ -23,9 +23,9 @@ from typing import Any, ClassVar, Dict, List, Optional
from typing import Optional, Set
from typing_extensions import Self
class KmsGetV1KmsOrgsOrgSecrets200Response(BaseModel):
class KmsGetV1KmsSecrets200Response(BaseModel):
"""
KmsGetV1KmsOrgsOrgSecrets200Response
KmsGetV1KmsSecrets200Response
""" # noqa: E501
names: Optional[List[StrictStr]] = None
__properties: ClassVar[List[str]] = ["names"]
@@ -48,7 +48,7 @@ class KmsGetV1KmsOrgsOrgSecrets200Response(BaseModel):
@classmethod
def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of KmsGetV1KmsOrgsOrgSecrets200Response from a JSON string"""
"""Create an instance of KmsGetV1KmsSecrets200Response from a JSON string"""
return cls.from_dict(json.loads(json_str))
def to_dict(self) -> Dict[str, Any]:
@@ -73,7 +73,7 @@ class KmsGetV1KmsOrgsOrgSecrets200Response(BaseModel):
@classmethod
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"""Create an instance of KmsGetV1KmsOrgsOrgSecrets200Response from a dict"""
"""Create an instance of KmsGetV1KmsSecrets200Response from a dict"""
if obj is None:
return None
@@ -23,9 +23,9 @@ from typing import Any, ClassVar, Dict, List, Optional
from typing import Optional, Set
from typing_extensions import Self
class KmsGetV1KmsOrgsOrgSecrets401Response(BaseModel):
class KmsGetV1KmsSecrets401Response(BaseModel):
"""
KmsGetV1KmsOrgsOrgSecrets401Response
KmsGetV1KmsSecrets401Response
""" # noqa: E501
message: Optional[StrictStr] = None
status_code: Optional[StrictInt] = Field(default=None, alias="statusCode")
@@ -49,7 +49,7 @@ class KmsGetV1KmsOrgsOrgSecrets401Response(BaseModel):
@classmethod
def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of KmsGetV1KmsOrgsOrgSecrets401Response from a JSON string"""
"""Create an instance of KmsGetV1KmsSecrets401Response from a JSON string"""
return cls.from_dict(json.loads(json_str))
def to_dict(self) -> Dict[str, Any]:
@@ -74,7 +74,7 @@ class KmsGetV1KmsOrgsOrgSecrets401Response(BaseModel):
@classmethod
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"""Create an instance of KmsGetV1KmsOrgsOrgSecrets401Response from a dict"""
"""Create an instance of KmsGetV1KmsSecrets401Response from a dict"""
if obj is None:
return None
@@ -20,15 +20,15 @@ import json
from pydantic import BaseModel, ConfigDict
from typing import Any, ClassVar, Dict, List, Optional
from hanzoai.cloud.models.kms_get_v1_kms_orgs_org_secrets_rest200_response_secret import KmsGetV1KmsOrgsOrgSecretsRest200ResponseSecret
from hanzoai.cloud.models.kms_get_v1_kms_secrets_rest200_response_secret import KmsGetV1KmsSecretsRest200ResponseSecret
from typing import Optional, Set
from typing_extensions import Self
class KmsGetV1KmsOrgsOrgSecretsRest200Response(BaseModel):
class KmsGetV1KmsSecretsRest200Response(BaseModel):
"""
KmsGetV1KmsOrgsOrgSecretsRest200Response
KmsGetV1KmsSecretsRest200Response
""" # noqa: E501
secret: Optional[KmsGetV1KmsOrgsOrgSecretsRest200ResponseSecret] = None
secret: Optional[KmsGetV1KmsSecretsRest200ResponseSecret] = None
__properties: ClassVar[List[str]] = ["secret"]
model_config = ConfigDict(
@@ -49,7 +49,7 @@ class KmsGetV1KmsOrgsOrgSecretsRest200Response(BaseModel):
@classmethod
def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of KmsGetV1KmsOrgsOrgSecretsRest200Response from a JSON string"""
"""Create an instance of KmsGetV1KmsSecretsRest200Response from a JSON string"""
return cls.from_dict(json.loads(json_str))
def to_dict(self) -> Dict[str, Any]:
@@ -77,7 +77,7 @@ class KmsGetV1KmsOrgsOrgSecretsRest200Response(BaseModel):
@classmethod
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"""Create an instance of KmsGetV1KmsOrgsOrgSecretsRest200Response from a dict"""
"""Create an instance of KmsGetV1KmsSecretsRest200Response from a dict"""
if obj is None:
return None
@@ -85,7 +85,7 @@ class KmsGetV1KmsOrgsOrgSecretsRest200Response(BaseModel):
return cls.model_validate(obj)
_obj = cls.model_validate({
"secret": KmsGetV1KmsOrgsOrgSecretsRest200ResponseSecret.from_dict(obj["secret"]) if obj.get("secret") is not None else None
"secret": KmsGetV1KmsSecretsRest200ResponseSecret.from_dict(obj["secret"]) if obj.get("secret") is not None else None
})
return _obj
@@ -23,9 +23,9 @@ from typing import Any, ClassVar, Dict, List, Optional
from typing import Optional, Set
from typing_extensions import Self
class KmsGetV1KmsOrgsOrgSecretsRest200ResponseSecret(BaseModel):
class KmsGetV1KmsSecretsRest200ResponseSecret(BaseModel):
"""
KmsGetV1KmsOrgsOrgSecretsRest200ResponseSecret
KmsGetV1KmsSecretsRest200ResponseSecret
""" # noqa: E501
value: Optional[StrictStr] = None
__properties: ClassVar[List[str]] = ["value"]
@@ -48,7 +48,7 @@ class KmsGetV1KmsOrgsOrgSecretsRest200ResponseSecret(BaseModel):
@classmethod
def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of KmsGetV1KmsOrgsOrgSecretsRest200ResponseSecret from a JSON string"""
"""Create an instance of KmsGetV1KmsSecretsRest200ResponseSecret from a JSON string"""
return cls.from_dict(json.loads(json_str))
def to_dict(self) -> Dict[str, Any]:
@@ -73,7 +73,7 @@ class KmsGetV1KmsOrgsOrgSecretsRest200ResponseSecret(BaseModel):
@classmethod
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"""Create an instance of KmsGetV1KmsOrgsOrgSecretsRest200ResponseSecret from a dict"""
"""Create an instance of KmsGetV1KmsSecretsRest200ResponseSecret from a dict"""
if obj is None:
return None
@@ -23,9 +23,9 @@ from typing import Any, ClassVar, Dict, List, Optional
from typing import Optional, Set
from typing_extensions import Self
class KmsPostV1KmsOrgsOrgSecretsRequest(BaseModel):
class KmsPostV1KmsSecretsRequest(BaseModel):
"""
KmsPostV1KmsOrgsOrgSecretsRequest
KmsPostV1KmsSecretsRequest
""" # noqa: E501
path: Optional[StrictStr] = None
name: StrictStr
@@ -51,7 +51,7 @@ class KmsPostV1KmsOrgsOrgSecretsRequest(BaseModel):
@classmethod
def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of KmsPostV1KmsOrgsOrgSecretsRequest from a JSON string"""
"""Create an instance of KmsPostV1KmsSecretsRequest from a JSON string"""
return cls.from_dict(json.loads(json_str))
def to_dict(self) -> Dict[str, Any]:
@@ -76,7 +76,7 @@ class KmsPostV1KmsOrgsOrgSecretsRequest(BaseModel):
@classmethod
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"""Create an instance of KmsPostV1KmsOrgsOrgSecretsRequest from a dict"""
"""Create an instance of KmsPostV1KmsSecretsRequest from a dict"""
if obj is None:
return None
+1 -1
View File
@@ -1,6 +1,6 @@
[project]
name = "hanzoai"
version = "3.1.2"
version = "3.1.3"
description = "The official Python library for the Hanzo API"
dynamic = ["readme"]
license = "BSD-3-Clause"
Generated
+1 -1
View File
@@ -2250,7 +2250,7 @@ wheels = [
[[package]]
name = "hanzoai"
version = "3.1.2"
version = "3.1.3"
source = { editable = "." }
dependencies = [
{ name = "pydantic" },