From c635d895f2a9e3dd20dcb8252a232c3934e22ec8 Mon Sep 17 00:00:00 2001 From: Konstantinos Stefanidis Vozikis Date: Mon, 17 Aug 2026 11:57:44 +0200 Subject: [PATCH] regen clients --- .gitignore | 7 +- crates/tower-api/README.md | 16 +- crates/tower-api/src/apis/configuration.rs | 2 +- crates/tower-api/src/apis/default_api.rs | 330 +++++++++++++++++- .../tower-api/src/apis/feature_flags_api.rs | 2 +- crates/tower-api/src/models/account.rs | 2 +- .../src/models/acknowledge_alert_response.rs | 2 +- .../models/acknowledge_all_alerts_response.rs | 2 +- crates/tower-api/src/models/alert.rs | 2 +- crates/tower-api/src/models/api_key.rs | 2 +- crates/tower-api/src/models/api_key_owner.rs | 2 +- crates/tower-api/src/models/app.rs | 8 +- crates/tower-api/src/models/app_statistics.rs | 2 +- crates/tower-api/src/models/app_summary.rs | 2 +- crates/tower-api/src/models/app_tag.rs | 2 +- crates/tower-api/src/models/app_version.rs | 2 +- .../src/models/authentication_context.rs | 2 +- .../models/batch_describe_runs_logs_params.rs | 61 ++++ .../src/models/batch_describe_runs_params.rs | 31 ++ .../models/batch_describe_runs_response.rs | 29 ++ crates/tower-api/src/models/batch_error.rs | 26 ++ .../src/models/batch_run_and_links.rs | 30 ++ .../src/models/batch_schedule_params.rs | 2 +- .../src/models/batch_schedule_response.rs | 2 +- .../src/models/batched_run_log_lines.rs | 35 ++ .../src/models/cancel_run_response.rs | 2 +- crates/tower-api/src/models/catalog.rs | 3 +- .../src/models/catalog_credentials.rs | 2 +- crates/tower-api/src/models/catalog_fact.rs | 2 +- .../tower-api/src/models/catalog_property.rs | 2 +- crates/tower-api/src/models/catalog_usage.rs | 33 ++ .../claim_device_login_ticket_params.rs | 2 +- .../claim_device_login_ticket_response.rs | 2 +- .../src/models/create_account_params.rs | 2 +- .../create_account_params_flags_struct.rs | 2 +- .../src/models/create_account_response.rs | 2 +- .../src/models/create_api_key_params.rs | 2 +- .../src/models/create_api_key_response.rs | 2 +- .../tower-api/src/models/create_app_params.rs | 2 +- .../src/models/create_app_response.rs | 2 +- .../src/models/create_catalog_params.rs | 2 +- .../src/models/create_catalog_response.rs | 2 +- .../create_device_login_ticket_response.rs | 2 +- .../src/models/create_environment_params.rs | 2 +- .../src/models/create_environment_response.rs | 2 +- .../src/models/create_guest_params.rs | 2 +- .../src/models/create_guest_response.rs | 2 +- .../models/create_sandbox_secrets_params.rs | 2 +- .../models/create_sandbox_secrets_response.rs | 2 +- .../src/models/create_schedule_params.rs | 2 +- .../src/models/create_schedule_response.rs | 2 +- .../src/models/create_secret_params.rs | 2 +- .../src/models/create_secret_response.rs | 2 +- .../create_service_account_api_key_params.rs | 2 +- ...create_service_account_api_key_response.rs | 2 +- .../models/create_service_account_params.rs | 2 +- .../models/create_service_account_response.rs | 2 +- .../src/models/create_session_params.rs | 2 +- .../src/models/create_session_response.rs | 2 +- .../src/models/create_team_params.rs | 2 +- .../src/models/create_team_response.rs | 2 +- .../src/models/create_webhook_params.rs | 2 +- .../src/models/create_webhook_response.rs | 2 +- .../src/models/delete_api_key_params.rs | 2 +- .../src/models/delete_api_key_response.rs | 2 +- .../src/models/delete_app_response.rs | 2 +- .../src/models/delete_catalog_response.rs | 2 +- .../src/models/delete_environment_response.rs | 2 +- .../src/models/delete_guest_output_body.rs | 2 +- .../src/models/delete_schedule_params.rs | 2 +- .../src/models/delete_schedule_response.rs | 2 +- .../src/models/delete_secret_response.rs | 2 +- .../delete_service_account_api_key_params.rs | 2 +- .../src/models/delete_session_params.rs | 2 +- .../src/models/delete_session_response.rs | 2 +- .../models/delete_team_invitation_params.rs | 2 +- .../models/delete_team_invitation_response.rs | 2 +- .../src/models/delete_team_params.rs | 2 +- .../src/models/delete_team_response.rs | 2 +- .../src/models/delete_webhook_response.rs | 2 +- .../src/models/deploy_app_request.rs | 2 +- .../src/models/deploy_app_response.rs | 2 +- .../src/models/describe_account_body.rs | 2 +- .../src/models/describe_app_response.rs | 2 +- .../models/describe_app_version_response.rs | 2 +- .../describe_authentication_context_body.rs | 2 +- .../models/describe_catalog_fact_response.rs | 14 +- .../src/models/describe_catalog_response.rs | 2 +- .../models/describe_catalog_usage_response.rs | 37 ++ .../describe_device_login_session_response.rs | 2 +- .../models/describe_email_preferences_body.rs | 2 +- .../models/describe_environment_response.rs | 2 +- .../src/models/describe_plan_response.rs | 2 +- .../src/models/describe_run_graph_response.rs | 2 +- .../src/models/describe_run_links.rs | 2 +- .../src/models/describe_run_logs_response.rs | 2 +- .../src/models/describe_run_response.rs | 2 +- .../models/describe_secrets_key_response.rs | 2 +- .../describe_service_account_response.rs | 2 +- .../src/models/describe_session_response.rs | 2 +- .../src/models/describe_team_response.rs | 2 +- .../src/models/describe_webhook_response.rs | 2 +- .../src/models/describe_whoami_response.rs | 2 +- .../src/models/email_subscriptions.rs | 2 +- .../src/models/encrypted_catalog_property.rs | 2 +- crates/tower-api/src/models/environment.rs | 2 +- crates/tower-api/src/models/error_detail.rs | 2 +- crates/tower-api/src/models/error_model.rs | 2 +- crates/tower-api/src/models/event_alert.rs | 2 +- crates/tower-api/src/models/event_error.rs | 2 +- crates/tower-api/src/models/event_log.rs | 2 +- .../tower-api/src/models/event_shouldertap.rs | 2 +- crates/tower-api/src/models/event_warning.rs | 2 +- .../src/models/export_catalogs_params.rs | 6 +- .../src/models/export_catalogs_response.rs | 2 +- .../src/models/export_secrets_params.rs | 2 +- .../src/models/export_secrets_response.rs | 2 +- .../tower-api/src/models/exported_catalog.rs | 3 +- .../src/models/exported_catalog_property.rs | 2 +- .../tower-api/src/models/exported_secret.rs | 2 +- crates/tower-api/src/models/feature.rs | 2 +- .../src/models/featurebase_identity.rs | 2 +- .../generate_app_statistics_response.rs | 2 +- ...organization_usage_time_series_response.rs | 2 +- .../generate_run_statistics_response.rs | 2 +- .../generate_runner_credentials_response.rs | 2 +- .../models/get_feature_flag_response_body.rs | 2 +- crates/tower-api/src/models/guest.rs | 2 +- .../src/models/invite_team_member_params.rs | 2 +- .../src/models/invite_team_member_response.rs | 2 +- .../src/models/leave_team_response.rs | 2 +- .../src/models/list_alerts_response.rs | 2 +- .../src/models/list_api_keys_response.rs | 2 +- .../models/list_app_environments_response.rs | 2 +- .../src/models/list_app_versions_response.rs | 2 +- .../src/models/list_apps_response.rs | 2 +- .../src/models/list_catalog_facts_response.rs | 9 +- .../src/models/list_catalogs_response.rs | 2 +- .../src/models/list_environments_response.rs | 2 +- .../src/models/list_guests_response.rs | 2 +- .../list_my_team_invitations_response.rs | 2 +- .../src/models/list_runners_response.rs | 2 +- .../src/models/list_runs_response.rs | 2 +- .../src/models/list_schedules_response.rs | 2 +- .../list_secret_environments_response.rs | 2 +- .../src/models/list_secrets_response.rs | 2 +- .../list_service_account_api_keys_response.rs | 2 +- .../models/list_service_accounts_response.rs | 2 +- .../models/list_team_invitations_response.rs | 2 +- .../src/models/list_team_members_response.rs | 2 +- .../src/models/list_teams_response.rs | 2 +- .../src/models/list_webhooks_response.rs | 2 +- crates/tower-api/src/models/mod.rs | 22 ++ crates/tower-api/src/models/organization.rs | 2 +- .../src/models/organization_storage_usage.rs | 33 ++ .../src/models/organization_usage.rs | 8 +- crates/tower-api/src/models/pagination.rs | 2 +- crates/tower-api/src/models/parameter.rs | 2 +- crates/tower-api/src/models/plan.rs | 2 +- .../src/models/refresh_session_params.rs | 2 +- .../src/models/refresh_session_response.rs | 2 +- .../regenerate_guest_login_url_params.rs | 2 +- .../regenerate_guest_login_url_response.rs | 2 +- .../src/models/remove_team_member_params.rs | 2 +- .../src/models/remove_team_member_response.rs | 2 +- .../models/resend_team_invitation_params.rs | 2 +- .../models/resend_team_invitation_response.rs | 2 +- crates/tower-api/src/models/run.rs | 2 +- crates/tower-api/src/models/run_and_links.rs | 29 ++ .../src/models/run_app_initiator_data.rs | 2 +- crates/tower-api/src/models/run_app_params.rs | 2 +- .../tower-api/src/models/run_app_response.rs | 2 +- crates/tower-api/src/models/run_attempt.rs | 2 +- crates/tower-api/src/models/run_creator.rs | 2 +- .../tower-api/src/models/run_failure_alert.rs | 2 +- crates/tower-api/src/models/run_graph_node.rs | 2 +- .../tower-api/src/models/run_graph_run_id.rs | 2 +- crates/tower-api/src/models/run_initiator.rs | 2 +- .../src/models/run_initiator_details.rs | 2 +- crates/tower-api/src/models/run_links.rs | 32 ++ crates/tower-api/src/models/run_log_line.rs | 2 +- crates/tower-api/src/models/run_parameter.rs | 2 +- crates/tower-api/src/models/run_results.rs | 2 +- .../tower-api/src/models/run_retry_policy.rs | 2 +- .../src/models/run_run_initiator_details.rs | 2 +- crates/tower-api/src/models/run_statistics.rs | 2 +- .../src/models/run_timeseries_point.rs | 2 +- crates/tower-api/src/models/runner.rs | 2 +- .../src/models/runner_credentials.rs | 2 +- crates/tower-api/src/models/schedule.rs | 2 +- crates/tower-api/src/models/schedule_owner.rs | 2 +- .../models/schedule_run_initiator_details.rs | 2 +- .../src/models/search_runs_response.rs | 2 +- crates/tower-api/src/models/secret.rs | 2 +- .../src/models/server_sent_events_inner.rs | 2 +- .../src/models/server_sent_events_inner_1.rs | 2 +- .../src/models/server_sent_events_inner_2.rs | 2 +- .../tower-api/src/models/service_account.rs | 2 +- .../src/models/service_account_creator.rs | 2 +- crates/tower-api/src/models/session.rs | 2 +- crates/tower-api/src/models/shoulder_tap.rs | 2 +- crates/tower-api/src/models/sse_warning.rs | 2 +- .../src/models/statistics_settings.rs | 2 +- crates/tower-api/src/models/tag_filter.rs | 2 +- crates/tower-api/src/models/team.rs | 2 +- .../tower-api/src/models/team_invitation.rs | 2 +- .../tower-api/src/models/team_membership.rs | 2 +- .../src/models/test_webhook_response.rs | 2 +- crates/tower-api/src/models/token.rs | 3 +- .../src/models/update_account_params.rs | 17 +- .../src/models/update_account_response.rs | 2 +- .../models/update_app_environment_params.rs | 2 +- .../models/update_app_environment_response.rs | 2 +- .../tower-api/src/models/update_app_params.rs | 2 +- .../src/models/update_app_response.rs | 2 +- .../src/models/update_catalog_fact_body.rs | 2 +- .../models/update_catalog_fact_response.rs | 2 +- .../src/models/update_catalog_params.rs | 4 +- .../src/models/update_catalog_response.rs | 2 +- .../models/update_email_preferences_body.rs | 2 +- .../src/models/update_environment_params.rs | 2 +- .../src/models/update_environment_response.rs | 2 +- .../update_my_team_invitation_params.rs | 2 +- .../update_my_team_invitation_response.rs | 2 +- .../src/models/update_organization_params.rs | 2 +- .../models/update_organization_response.rs | 2 +- .../src/models/update_plan_params.rs | 2 +- .../src/models/update_plan_response.rs | 2 +- .../src/models/update_schedule_params.rs | 2 +- .../src/models/update_schedule_response.rs | 2 +- .../src/models/update_secret_params.rs | 2 +- .../src/models/update_secret_response.rs | 2 +- .../models/update_service_account_params.rs | 2 +- .../models/update_service_account_response.rs | 2 +- .../src/models/update_team_member_params.rs | 2 +- .../src/models/update_team_member_response.rs | 2 +- .../src/models/update_team_params.rs | 17 +- .../src/models/update_team_response.rs | 2 +- .../src/models/update_user_params.rs | 2 +- .../src/models/update_user_response.rs | 2 +- .../src/models/update_webhook_params.rs | 2 +- .../src/models/update_webhook_response.rs | 2 +- crates/tower-api/src/models/usage_limit.rs | 2 +- .../models/usage_metric_time_series_point.rs | 2 +- crates/tower-api/src/models/user.rs | 2 +- .../models/vend_catalog_credentials_body.rs | 2 +- .../vend_catalog_credentials_response.rs | 12 +- crates/tower-api/src/models/webhook.rs | 2 +- crates/tower-cmd/src/api.rs | 1 + .../api/default/batch_describe_runs.py | 170 +++++++++ .../api/default/batch_describe_runs_logs.py | 175 ++++++++++ .../api/default/create_catalog.py | 30 ++ .../api/default/delete_catalog.py | 30 ++ .../api/default/delete_catalog_fact.py | 198 +++++++++++ .../api/default/delete_environment.py | 30 ++ .../api/default/deploy_app.py | 29 ++ .../api/default/describe_catalog.py | 28 +- .../api/default/describe_catalog_fact.py | 204 +++++++++++ .../api/default/describe_catalog_usage.py | 216 ++++++++++++ .../api/default/describe_run_logs.py | 30 ++ .../api/default/export_catalogs.py | 38 +- .../tower_api_client/api/default/list_apps.py | 23 ++ .../api/default/list_catalog_facts.py | 232 ++++++++++++ .../api/default/list_catalogs.py | 36 +- .../api/default/update_app.py | 48 ++- .../api/default/update_catalog.py | 25 ++ .../api/default/update_catalog_fact.py | 225 ++++++++++++ .../api/default/update_environment.py | 30 ++ .../api/default/update_schedule.py | 48 ++- .../api/default/vend_catalog_credentials.py | 16 +- src/tower/tower_api_client/models/__init__.py | 46 +++ src/tower/tower_api_client/models/app.py | 31 ++ src/tower/tower_api_client/models/app_tag.py | 50 +++ .../models/batch_describe_runs_logs_params.py | 124 +++++++ .../models/batch_describe_runs_params.py | 50 +++ .../models/batch_describe_runs_response.py | 68 ++++ .../tower_api_client/models/batch_error.py | 42 +++ .../models/batch_run_and_links.py | 73 ++++ .../models/batched_run_log_lines.py | 81 +++++ src/tower/tower_api_client/models/catalog.py | 2 +- .../tower_api_client/models/catalog_fact.py | 115 ++++++ .../models/catalog_fact_confidence.py | 10 + .../models/catalog_fact_scope.py | 12 + .../tower_api_client/models/catalog_usage.py | 72 ++++ .../models/create_app_params.py | 89 ++++- .../models/describe_catalog_fact_response.py | 68 ++++ .../models/describe_catalog_usage_response.py | 68 ++++ .../models/export_catalogs_params.py | 6 +- .../models/exported_catalog.py | 2 +- .../models/list_catalog_facts_response.py | 76 ++++ .../models/organization_storage_usage.py | 71 ++++ .../models/organization_usage.py | 10 + .../tower_api_client/models/run_and_links.py | 58 +++ .../tower_api_client/models/run_links.py | 63 ++++ .../tower_api_client/models/tag_filter.py | 73 ++++ .../tower_api_client/models/tag_filter_op.py | 10 + src/tower/tower_api_client/models/token.py | 2 +- .../update_account_params_execution_region.py | 3 + .../models/update_app_params.py | 45 ++- .../models/update_catalog_fact_body.py | 100 ++++++ .../update_catalog_fact_body_confidence.py | 10 + .../models/update_catalog_fact_body_scope.py | 12 + .../models/update_catalog_fact_response.py | 60 ++++ .../models/update_catalog_params.py | 3 +- .../update_team_params_execution_region.py | 3 + .../vend_catalog_credentials_response.py | 8 + tests/mock-api-server/main.py | 2 + tests/tower/test_storage.py | 15 +- 308 files changed, 4485 insertions(+), 307 deletions(-) create mode 100644 crates/tower-api/src/models/batch_describe_runs_logs_params.rs create mode 100644 crates/tower-api/src/models/batch_describe_runs_params.rs create mode 100644 crates/tower-api/src/models/batch_describe_runs_response.rs create mode 100644 crates/tower-api/src/models/batch_error.rs create mode 100644 crates/tower-api/src/models/batch_run_and_links.rs create mode 100644 crates/tower-api/src/models/batched_run_log_lines.rs create mode 100644 crates/tower-api/src/models/catalog_usage.rs create mode 100644 crates/tower-api/src/models/describe_catalog_usage_response.rs create mode 100644 crates/tower-api/src/models/organization_storage_usage.rs create mode 100644 crates/tower-api/src/models/run_and_links.rs create mode 100644 crates/tower-api/src/models/run_links.rs create mode 100644 src/tower/tower_api_client/api/default/batch_describe_runs.py create mode 100644 src/tower/tower_api_client/api/default/batch_describe_runs_logs.py create mode 100644 src/tower/tower_api_client/api/default/delete_catalog_fact.py create mode 100644 src/tower/tower_api_client/api/default/describe_catalog_fact.py create mode 100644 src/tower/tower_api_client/api/default/describe_catalog_usage.py create mode 100644 src/tower/tower_api_client/api/default/list_catalog_facts.py create mode 100644 src/tower/tower_api_client/api/default/update_catalog_fact.py create mode 100644 src/tower/tower_api_client/models/app_tag.py create mode 100644 src/tower/tower_api_client/models/batch_describe_runs_logs_params.py create mode 100644 src/tower/tower_api_client/models/batch_describe_runs_params.py create mode 100644 src/tower/tower_api_client/models/batch_describe_runs_response.py create mode 100644 src/tower/tower_api_client/models/batch_error.py create mode 100644 src/tower/tower_api_client/models/batch_run_and_links.py create mode 100644 src/tower/tower_api_client/models/batched_run_log_lines.py create mode 100644 src/tower/tower_api_client/models/catalog_fact.py create mode 100644 src/tower/tower_api_client/models/catalog_fact_confidence.py create mode 100644 src/tower/tower_api_client/models/catalog_fact_scope.py create mode 100644 src/tower/tower_api_client/models/catalog_usage.py create mode 100644 src/tower/tower_api_client/models/describe_catalog_fact_response.py create mode 100644 src/tower/tower_api_client/models/describe_catalog_usage_response.py create mode 100644 src/tower/tower_api_client/models/list_catalog_facts_response.py create mode 100644 src/tower/tower_api_client/models/organization_storage_usage.py create mode 100644 src/tower/tower_api_client/models/run_and_links.py create mode 100644 src/tower/tower_api_client/models/run_links.py create mode 100644 src/tower/tower_api_client/models/tag_filter.py create mode 100644 src/tower/tower_api_client/models/tag_filter_op.py create mode 100644 src/tower/tower_api_client/models/update_catalog_fact_body.py create mode 100644 src/tower/tower_api_client/models/update_catalog_fact_body_confidence.py create mode 100644 src/tower/tower_api_client/models/update_catalog_fact_body_scope.py create mode 100644 src/tower/tower_api_client/models/update_catalog_fact_response.py diff --git a/.gitignore b/.gitignore index 01c5d225..66143969 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,7 @@ __pycache__ # may contain sensitive data pytest.ini -# +# # Artifacts from the Rust client generation process # /crates/tower-api/.openapi-generator-ignore @@ -31,3 +31,8 @@ pytest.ini # local MCP overrides (e.g. internal tooling with secrets) .mcp.json.local + +# llm/AI harness folders plus a .plans folder for storing LLM plans +.claude +.codex +.plans diff --git a/crates/tower-api/README.md b/crates/tower-api/README.md index 6c22dca1..70d5aeb4 100644 --- a/crates/tower-api/README.md +++ b/crates/tower-api/README.md @@ -8,7 +8,7 @@ For more information, please visit [https://tower.dev](https://tower.dev) This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://openapis.org) from a remote server, you can easily generate an API client. -- API version: v0.11.17 +- API version: v0.11.24 - Package version: 1.0.0 - Generator version: 7.19.0 - Build package: `org.openapitools.codegen.languages.RustClientCodegen` @@ -30,6 +30,8 @@ Class | Method | HTTP request | Description *DefaultApi* | [**acknowledge_alert**](docs/DefaultApi.md#acknowledge_alert) | **POST** /alerts/{alert_seq}/acknowledge | Acknowledge alert *DefaultApi* | [**acknowledge_all_alerts**](docs/DefaultApi.md#acknowledge_all_alerts) | **POST** /alerts/acknowledge-all | Acknowledge all alerts *DefaultApi* | [**activate_schedules**](docs/DefaultApi.md#activate_schedules) | **PATCH** /schedules/activate | Activate multiple schedules +*DefaultApi* | [**batch_describe_runs**](docs/DefaultApi.md#batch_describe_runs) | **POST** /batch/describe-runs | Batch describe runs +*DefaultApi* | [**batch_describe_runs_logs**](docs/DefaultApi.md#batch_describe_runs_logs) | **POST** /batch/describe-runs-logs | Batch describe runs logs *DefaultApi* | [**cancel_run**](docs/DefaultApi.md#cancel_run) | **POST** /apps/{name}/runs/{seq} | Cancel run *DefaultApi* | [**check_webhook**](docs/DefaultApi.md#check_webhook) | **POST** /webhooks/{name}/test | Check webhook *DefaultApi* | [**claim_device_login_ticket**](docs/DefaultApi.md#claim_device_login_ticket) | **POST** /login/device/claim | Claim a device login ticket @@ -71,6 +73,7 @@ Class | Method | HTTP request | Description *DefaultApi* | [**describe_authentication_context**](docs/DefaultApi.md#describe_authentication_context) | **GET** /user/auth-context | Describe authentication context *DefaultApi* | [**describe_catalog**](docs/DefaultApi.md#describe_catalog) | **GET** /catalogs/{name} | Describe catalog *DefaultApi* | [**describe_catalog_fact**](docs/DefaultApi.md#describe_catalog_fact) | **GET** /catalogs/{catalog}/facts/{name} | Describe a catalog fact +*DefaultApi* | [**describe_catalog_usage**](docs/DefaultApi.md#describe_catalog_usage) | **GET** /catalogs/{name}/usage | Describe catalog usage *DefaultApi* | [**describe_default_catalog**](docs/DefaultApi.md#describe_default_catalog) | **GET** /storage/catalogs/default | Describe default catalog *DefaultApi* | [**describe_device_login_session**](docs/DefaultApi.md#describe_device_login_session) | **GET** /login/device/{device_code} | Describe device login session *DefaultApi* | [**describe_email_preferences**](docs/DefaultApi.md#describe_email_preferences) | **GET** /user/email-preferences | Describe email preferences @@ -159,13 +162,20 @@ Class | Method | HTTP request | Description - [AppTag](docs/AppTag.md) - [AppVersion](docs/AppVersion.md) - [AuthenticationContext](docs/AuthenticationContext.md) + - [BatchDescribeRunsLogsParams](docs/BatchDescribeRunsLogsParams.md) + - [BatchDescribeRunsParams](docs/BatchDescribeRunsParams.md) + - [BatchDescribeRunsResponse](docs/BatchDescribeRunsResponse.md) + - [BatchError](docs/BatchError.md) + - [BatchRunAndLinks](docs/BatchRunAndLinks.md) - [BatchScheduleParams](docs/BatchScheduleParams.md) - [BatchScheduleResponse](docs/BatchScheduleResponse.md) + - [BatchedRunLogLines](docs/BatchedRunLogLines.md) - [CancelRunResponse](docs/CancelRunResponse.md) - [Catalog](docs/Catalog.md) - [CatalogCredentials](docs/CatalogCredentials.md) - [CatalogFact](docs/CatalogFact.md) - [CatalogProperty](docs/CatalogProperty.md) + - [CatalogUsage](docs/CatalogUsage.md) - [ClaimDeviceLoginTicketParams](docs/ClaimDeviceLoginTicketParams.md) - [ClaimDeviceLoginTicketResponse](docs/ClaimDeviceLoginTicketResponse.md) - [CreateAccountParams](docs/CreateAccountParams.md) @@ -223,6 +233,7 @@ Class | Method | HTTP request | Description - [DescribeAuthenticationContextBody](docs/DescribeAuthenticationContextBody.md) - [DescribeCatalogFactResponse](docs/DescribeCatalogFactResponse.md) - [DescribeCatalogResponse](docs/DescribeCatalogResponse.md) + - [DescribeCatalogUsageResponse](docs/DescribeCatalogUsageResponse.md) - [DescribeDeviceLoginSessionResponse](docs/DescribeDeviceLoginSessionResponse.md) - [DescribeEmailPreferencesBody](docs/DescribeEmailPreferencesBody.md) - [DescribeEnvironmentResponse](docs/DescribeEnvironmentResponse.md) @@ -287,6 +298,7 @@ Class | Method | HTTP request | Description - [ListTeamsResponse](docs/ListTeamsResponse.md) - [ListWebhooksResponse](docs/ListWebhooksResponse.md) - [Organization](docs/Organization.md) + - [OrganizationStorageUsage](docs/OrganizationStorageUsage.md) - [OrganizationUsage](docs/OrganizationUsage.md) - [Pagination](docs/Pagination.md) - [Parameter](docs/Parameter.md) @@ -300,6 +312,7 @@ Class | Method | HTTP request | Description - [ResendTeamInvitationParams](docs/ResendTeamInvitationParams.md) - [ResendTeamInvitationResponse](docs/ResendTeamInvitationResponse.md) - [Run](docs/Run.md) + - [RunAndLinks](docs/RunAndLinks.md) - [RunAppInitiatorData](docs/RunAppInitiatorData.md) - [RunAppParams](docs/RunAppParams.md) - [RunAppResponse](docs/RunAppResponse.md) @@ -310,6 +323,7 @@ Class | Method | HTTP request | Description - [RunGraphRunId](docs/RunGraphRunId.md) - [RunInitiator](docs/RunInitiator.md) - [RunInitiatorDetails](docs/RunInitiatorDetails.md) + - [RunLinks](docs/RunLinks.md) - [RunLogLine](docs/RunLogLine.md) - [RunParameter](docs/RunParameter.md) - [RunResults](docs/RunResults.md) diff --git a/crates/tower-api/src/apis/configuration.rs b/crates/tower-api/src/apis/configuration.rs index eed91008..bf2ef5e5 100644 --- a/crates/tower-api/src/apis/configuration.rs +++ b/crates/tower-api/src/apis/configuration.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/apis/default_api.rs b/crates/tower-api/src/apis/default_api.rs index 80aa8413..f20dd504 100644 --- a/crates/tower-api/src/apis/default_api.rs +++ b/crates/tower-api/src/apis/default_api.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ @@ -27,6 +27,18 @@ pub struct ActivateSchedulesParams { pub batch_schedule_params: models::BatchScheduleParams, } +/// struct for passing parameters to the method [`batch_describe_runs`] +#[derive(Clone, Debug)] +pub struct BatchDescribeRunsParams { + pub batch_describe_runs_params: Vec, +} + +/// struct for passing parameters to the method [`batch_describe_runs_logs`] +#[derive(Clone, Debug)] +pub struct BatchDescribeRunsLogsParams { + pub batch_describe_runs_logs_params: Vec, +} + /// struct for passing parameters to the method [`cancel_run`] #[derive(Clone, Debug)] pub struct CancelRunParams { @@ -177,7 +189,7 @@ pub struct DeleteCatalogFactParams { pub catalog: String, /// The name of the fact. pub name: String, - /// The environment of the catalog. + /// Environment containing the catalog definition to delete from. This operation does not fall back to default. pub environment: Option, } @@ -263,6 +275,8 @@ pub struct DeployAppParams { pub x_tower_checksum_sha256: Option, /// Optional opaque key (typically a git commit SHA or CI build ID). If a prior deploy for this app supplied the same value, the server reuses that AppVersion instead of creating a new one — letting consecutive deploys to different environments share a single version when the source hasn't changed. pub x_tower_idempotency_key: Option, + /// Optional account-scoped monotonic sequence token used to reject out-of-order writes. See the fence documentation for the acceptance window and retry behavior. + pub x_tower_request_number: Option, /// Size of the uploaded bundle in bytes. pub content_length: Option, /// The environment to deploy to. @@ -309,7 +323,7 @@ pub struct DescribeAppVersionParams { pub struct DescribeCatalogParams { /// The name of the catalog. pub name: String, - /// The environment of the catalog. + /// Environment whose catalog to return. When it has no same-named catalog, the catalog from default is returned instead. pub environment: Option, } @@ -320,7 +334,16 @@ pub struct DescribeCatalogFactParams { pub catalog: String, /// The name of the fact. pub name: String, - /// The environment of the catalog. + /// The environment of the catalog. Note that if a catalog with the requested name doesn't exist in the requested environment, the fact from the catalog with the same name in the default environment will be returned. + pub environment: Option, +} + +/// struct for passing parameters to the method [`describe_catalog_usage`] +#[derive(Clone, Debug)] +pub struct DescribeCatalogUsageParams { + /// The name of the catalog. + pub name: String, + /// Environment whose catalog usage to return. When it has no same-named catalog, usage for the catalog from default is returned instead. pub environment: Option, } @@ -525,7 +548,7 @@ pub struct ListAppsParams { pub struct ListCatalogFactsParams { /// The name of the catalog. pub catalog: String, - /// The environment of the catalog. + /// The environment of the catalog. Note that if a catalog with the requested name doesn't exist in the requested environment, facts for the catalog with the same name from the default environment will be returned. pub environment: Option, /// Filter facts by scope. When omitted, facts of every scope are returned. pub scope: Option, @@ -540,9 +563,9 @@ pub struct ListCatalogsParams { pub page: Option, /// The number of records to fetch on each page. pub page_size: Option, - /// The environment to filter by. When omitted, catalogs across all environments are returned. + /// The environment of the catalogs. Catalogs from the default environment will be returned for names that don't exist in the requested environment. When omitted, catalogs across all environments are returned. pub environment: Option, - /// Whether to fetch all catalogs across all environments or only for the current environment. + /// Whether to return catalogs across all environments, without applying default-environment inheritance or deduplication. pub all: Option, /// Filter catalogs by type, e.g. \"tower-catalog\". When omitted, all catalog types are returned. pub r#type: Option, @@ -748,6 +771,8 @@ pub struct UpdateAppParams { /// The name of the App to update. pub name: String, pub update_app_params: models::UpdateAppParams, + /// Optional account-scoped monotonic sequence token used to reject out-of-order writes. See the fence documentation for the acceptance window and retry behavior. + pub x_tower_request_number: Option, } /// struct for passing parameters to the method [`update_app_environment`] @@ -776,7 +801,7 @@ pub struct UpdateCatalogFactParams { /// The name of the fact. pub name: String, pub update_catalog_fact_body: models::UpdateCatalogFactBody, - /// The environment of the catalog. + /// Environment containing the catalog definition to update. This operation does not fall back to default. pub environment: Option, } @@ -820,6 +845,8 @@ pub struct UpdateScheduleParams { /// The ID or name of the schedule to update. pub id_or_name: String, pub update_schedule_params: models::UpdateScheduleParams, + /// Optional account-scoped monotonic sequence token used to reject out-of-order writes. See the fence documentation for the acceptance window and retry behavior. + pub x_tower_request_number: Option, } /// struct for passing parameters to the method [`update_secret`] @@ -873,7 +900,7 @@ pub struct VendCatalogCredentialsParams { /// The name of the catalog. pub name: String, pub vend_catalog_credentials_body: models::VendCatalogCredentialsBody, - /// The environment of the catalog. + /// Environment whose catalog credentials to vend. When it has no same-named catalog, credentials for the catalog from default are vended instead. pub environment: Option, } @@ -901,6 +928,22 @@ pub enum ActivateSchedulesSuccess { UnknownValue(serde_json::Value), } +/// struct for typed successes of method [`batch_describe_runs`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum BatchDescribeRunsSuccess { + Status200(models::BatchDescribeRunsResponse), + UnknownValue(serde_json::Value), +} + +/// struct for typed successes of method [`batch_describe_runs_logs`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum BatchDescribeRunsLogsSuccess { + Status200(Vec), + UnknownValue(serde_json::Value), +} + /// struct for typed successes of method [`cancel_run`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] @@ -1229,6 +1272,14 @@ pub enum DescribeCatalogFactSuccess { UnknownValue(serde_json::Value), } +/// struct for typed successes of method [`describe_catalog_usage`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum DescribeCatalogUsageSuccess { + Status200(models::DescribeCatalogUsageResponse), + UnknownValue(serde_json::Value), +} + /// struct for typed successes of method [`describe_default_catalog`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] @@ -1822,6 +1873,22 @@ pub enum ActivateSchedulesError { UnknownValue(serde_json::Value), } +/// struct for typed errors of method [`batch_describe_runs`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum BatchDescribeRunsError { + DefaultResponse(models::ErrorModel), + UnknownValue(serde_json::Value), +} + +/// struct for typed errors of method [`batch_describe_runs_logs`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum BatchDescribeRunsLogsError { + DefaultResponse(models::ErrorModel), + UnknownValue(serde_json::Value), +} + /// struct for typed errors of method [`cancel_run`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] @@ -1874,6 +1941,12 @@ pub enum CreateAppError { #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum CreateCatalogError { + Status400(models::ErrorModel), + Status401(models::ErrorModel), + Status403(models::ErrorModel), + Status409(models::ErrorModel), + Status422(models::ErrorModel), + Status500(models::ErrorModel), DefaultResponse(models::ErrorModel), UnknownValue(serde_json::Value), } @@ -2005,6 +2078,12 @@ pub enum DeleteAppError { #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum DeleteCatalogError { + Status401(models::ErrorModel), + Status403(models::ErrorModel), + Status404(models::ErrorModel), + Status409(models::ErrorModel), + Status422(models::ErrorModel), + Status500(models::ErrorModel), DefaultResponse(models::ErrorModel), UnknownValue(serde_json::Value), } @@ -2021,6 +2100,12 @@ pub enum DeleteCatalogFactError { #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum DeleteEnvironmentError { + Status401(models::ErrorModel), + Status403(models::ErrorModel), + Status404(models::ErrorModel), + Status409(models::ErrorModel), + Status422(models::ErrorModel), + Status500(models::ErrorModel), DefaultResponse(models::ErrorModel), UnknownValue(serde_json::Value), } @@ -2102,6 +2187,7 @@ pub enum DeleteWebhookError { #[serde(untagged)] pub enum DeployAppError { Status400(models::ErrorModel), + Status412(models::ErrorModel), Status422(models::ErrorModel), Status500(models::ErrorModel), UnknownValue(serde_json::Value), @@ -2155,6 +2241,17 @@ pub enum DescribeCatalogFactError { UnknownValue(serde_json::Value), } +/// struct for typed errors of method [`describe_catalog_usage`] +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(untagged)] +pub enum DescribeCatalogUsageError { + Status401(models::ErrorModel), + Status404(models::ErrorModel), + Status422(models::ErrorModel), + Status500(models::ErrorModel), + UnknownValue(serde_json::Value), +} + /// struct for typed errors of method [`describe_default_catalog`] #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] @@ -2280,7 +2377,12 @@ pub enum DescribeWhoamiError { #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum ExportCatalogsError { - DefaultResponse(models::ErrorModel), + Status400(models::ErrorModel), + Status401(models::ErrorModel), + Status403(models::ErrorModel), + Status409(models::ErrorModel), + Status422(models::ErrorModel), + Status500(models::ErrorModel), UnknownValue(serde_json::Value), } @@ -2592,7 +2694,9 @@ pub enum UpdateAccountError { #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum UpdateAppError { - DefaultResponse(models::ErrorModel), + Status412(models::ErrorModel), + Status422(models::ErrorModel), + Status500(models::ErrorModel), UnknownValue(serde_json::Value), } @@ -2608,6 +2712,11 @@ pub enum UpdateAppEnvironmentError { #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum UpdateCatalogError { + Status401(models::ErrorModel), + Status403(models::ErrorModel), + Status404(models::ErrorModel), + Status422(models::ErrorModel), + Status500(models::ErrorModel), DefaultResponse(models::ErrorModel), UnknownValue(serde_json::Value), } @@ -2632,6 +2741,12 @@ pub enum UpdateEmailPreferencesError { #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum UpdateEnvironmentError { + Status401(models::ErrorModel), + Status403(models::ErrorModel), + Status404(models::ErrorModel), + Status409(models::ErrorModel), + Status422(models::ErrorModel), + Status500(models::ErrorModel), DefaultResponse(models::ErrorModel), UnknownValue(serde_json::Value), } @@ -2670,7 +2785,9 @@ pub enum UpdatePlanError { #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(untagged)] pub enum UpdateScheduleError { - DefaultResponse(models::ErrorModel), + Status412(models::ErrorModel), + Status422(models::ErrorModel), + Status500(models::ErrorModel), UnknownValue(serde_json::Value), } @@ -2909,6 +3026,122 @@ pub async fn activate_schedules( } } +/// Describe multiple runs in a single request. +pub async fn batch_describe_runs( + configuration: &configuration::Configuration, + params: BatchDescribeRunsParams, +) -> Result, Error> { + let uri_str = format!("{}/batch/describe-runs", configuration.base_path); + let mut req_builder = configuration + .client + .request(reqwest::Method::POST, &uri_str); + + if let Some(ref user_agent) = configuration.user_agent { + req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); + } + if let Some(ref token) = configuration.bearer_access_token { + req_builder = req_builder.bearer_auth(token.to_owned()); + }; + if let Some(ref apikey) = configuration.api_key { + let key = apikey.key.clone(); + let value = match apikey.prefix { + Some(ref prefix) => format!("{} {}", prefix, key), + None => key, + }; + req_builder = req_builder.header("X-API-Key", value); + }; + req_builder = req_builder.json(¶ms.batch_describe_runs_params); + + let req = req_builder.build()?; + let resp = configuration.client.execute(req).await?; + + let status = resp.status(); + + let tower_trace_id = resp + .headers() + .get("x-tower-trace-id") + .and_then(|v| v.to_str().ok()) + .map_or(String::from(DEFAULT_TOWER_TRACE_ID), String::from); + + if !status.is_client_error() && !status.is_server_error() { + let content = resp.text().await?; + let entity: Option = serde_json::from_str(&content).ok(); + Ok(ResponseContent { + tower_trace_id, + status, + content, + entity, + }) + } else { + let content = resp.text().await?; + let entity: Option = serde_json::from_str(&content).ok(); + Err(Error::ResponseError(ResponseContent { + tower_trace_id, + status, + content, + entity, + })) + } +} + +/// Describe multiple run logs in a single request. +pub async fn batch_describe_runs_logs( + configuration: &configuration::Configuration, + params: BatchDescribeRunsLogsParams, +) -> Result, Error> { + let uri_str = format!("{}/batch/describe-runs-logs", configuration.base_path); + let mut req_builder = configuration + .client + .request(reqwest::Method::POST, &uri_str); + + if let Some(ref user_agent) = configuration.user_agent { + req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); + } + if let Some(ref token) = configuration.bearer_access_token { + req_builder = req_builder.bearer_auth(token.to_owned()); + }; + if let Some(ref apikey) = configuration.api_key { + let key = apikey.key.clone(); + let value = match apikey.prefix { + Some(ref prefix) => format!("{} {}", prefix, key), + None => key, + }; + req_builder = req_builder.header("X-API-Key", value); + }; + req_builder = req_builder.json(¶ms.batch_describe_runs_logs_params); + + let req = req_builder.build()?; + let resp = configuration.client.execute(req).await?; + + let status = resp.status(); + + let tower_trace_id = resp + .headers() + .get("x-tower-trace-id") + .and_then(|v| v.to_str().ok()) + .map_or(String::from(DEFAULT_TOWER_TRACE_ID), String::from); + + if !status.is_client_error() && !status.is_server_error() { + let content = resp.text().await?; + let entity: Option = serde_json::from_str(&content).ok(); + Ok(ResponseContent { + tower_trace_id, + status, + content, + entity, + }) + } else { + let content = resp.text().await?; + let entity: Option = serde_json::from_str(&content).ok(); + Err(Error::ResponseError(ResponseContent { + tower_trace_id, + status, + content, + entity, + })) + } +} + /// Cancel a run pub async fn cancel_run( configuration: &configuration::Configuration, @@ -4930,6 +5163,9 @@ pub async fn deploy_app( if let Some(param_value) = params.x_tower_idempotency_key { req_builder = req_builder.header("X-Tower-Idempotency-Key", param_value.to_string()); } + if let Some(param_value) = params.x_tower_request_number { + req_builder = req_builder.header("X-Tower-Request-Number", param_value.to_string()); + } if let Some(param_value) = params.content_length { req_builder = req_builder.header("Content-Length", param_value.to_string()); } @@ -5230,7 +5466,7 @@ pub async fn describe_authentication_context( } } -/// Returns details for a specific catalog, including its property names and previews. +/// Returns non-secret details for a catalog in the selected environment. When that environment has no same-named catalog, the catalog from default is returned instead. The response's catalog environment identifies where its definition is stored. pub async fn describe_catalog( configuration: &configuration::Configuration, params: DescribeCatalogParams, @@ -5355,6 +5591,68 @@ pub async fn describe_catalog_fact( } } +/// Returns physical bytes stored by one Tower-managed catalog, including Iceberg metadata and not-yet-compacted snapshot history. Measurements are cached and may be temporarily unavailable; measured_at is null when no measurement exists. BYO and S3 Tables catalogs are not metered. +pub async fn describe_catalog_usage( + configuration: &configuration::Configuration, + params: DescribeCatalogUsageParams, +) -> Result, Error> { + let uri_str = format!( + "{}/catalogs/{name}/usage", + configuration.base_path, + name = crate::apis::urlencode(params.name) + ); + let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str); + + if let Some(ref param_value) = params.environment { + req_builder = req_builder.query(&[("environment", ¶m_value.to_string())]); + } + if let Some(ref user_agent) = configuration.user_agent { + req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); + } + if let Some(ref token) = configuration.bearer_access_token { + req_builder = req_builder.bearer_auth(token.to_owned()); + }; + if let Some(ref apikey) = configuration.api_key { + let key = apikey.key.clone(); + let value = match apikey.prefix { + Some(ref prefix) => format!("{} {}", prefix, key), + None => key, + }; + req_builder = req_builder.header("X-API-Key", value); + }; + + let req = req_builder.build()?; + let resp = configuration.client.execute(req).await?; + + let status = resp.status(); + + let tower_trace_id = resp + .headers() + .get("x-tower-trace-id") + .and_then(|v| v.to_str().ok()) + .map_or(String::from(DEFAULT_TOWER_TRACE_ID), String::from); + + if !status.is_client_error() && !status.is_server_error() { + let content = resp.text().await?; + let entity: Option = serde_json::from_str(&content).ok(); + Ok(ResponseContent { + tower_trace_id, + status, + content, + entity, + }) + } else { + let content = resp.text().await?; + let entity: Option = serde_json::from_str(&content).ok(); + Err(Error::ResponseError(ResponseContent { + tower_trace_id, + status, + content, + entity, + })) + } +} + /// Returns the team's default catalog, provisioning it lazily if it does not yet exist. When two concurrent first calls race to provision the catalog, the loser receives 202 Accepted; retry after a few seconds and the catalog will be ready. pub async fn describe_default_catalog( configuration: &configuration::Configuration, @@ -8706,6 +9004,9 @@ pub async fn update_app( if let Some(ref user_agent) = configuration.user_agent { req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); } + if let Some(param_value) = params.x_tower_request_number { + req_builder = req_builder.header("X-Tower-Request-Number", param_value.to_string()); + } if let Some(ref token) = configuration.bearer_access_token { req_builder = req_builder.bearer_auth(token.to_owned()); }; @@ -9238,6 +9539,9 @@ pub async fn update_schedule( if let Some(ref user_agent) = configuration.user_agent { req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone()); } + if let Some(param_value) = params.x_tower_request_number { + req_builder = req_builder.header("X-Tower-Request-Number", param_value.to_string()); + } if let Some(ref token) = configuration.bearer_access_token { req_builder = req_builder.bearer_auth(token.to_owned()); }; diff --git a/crates/tower-api/src/apis/feature_flags_api.rs b/crates/tower-api/src/apis/feature_flags_api.rs index bb90cc43..0baa1861 100644 --- a/crates/tower-api/src/apis/feature_flags_api.rs +++ b/crates/tower-api/src/apis/feature_flags_api.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/account.rs b/crates/tower-api/src/models/account.rs index 13f84cda..53361f8b 100644 --- a/crates/tower-api/src/models/account.rs +++ b/crates/tower-api/src/models/account.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/acknowledge_alert_response.rs b/crates/tower-api/src/models/acknowledge_alert_response.rs index d55f0d56..a4d07846 100644 --- a/crates/tower-api/src/models/acknowledge_alert_response.rs +++ b/crates/tower-api/src/models/acknowledge_alert_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/acknowledge_all_alerts_response.rs b/crates/tower-api/src/models/acknowledge_all_alerts_response.rs index 3562b641..7beb979e 100644 --- a/crates/tower-api/src/models/acknowledge_all_alerts_response.rs +++ b/crates/tower-api/src/models/acknowledge_all_alerts_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/alert.rs b/crates/tower-api/src/models/alert.rs index 917366f8..14f5ce31 100644 --- a/crates/tower-api/src/models/alert.rs +++ b/crates/tower-api/src/models/alert.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/api_key.rs b/crates/tower-api/src/models/api_key.rs index c92f2dff..3cb4a482 100644 --- a/crates/tower-api/src/models/api_key.rs +++ b/crates/tower-api/src/models/api_key.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/api_key_owner.rs b/crates/tower-api/src/models/api_key_owner.rs index 840d5b93..285a9a4a 100644 --- a/crates/tower-api/src/models/api_key_owner.rs +++ b/crates/tower-api/src/models/api_key_owner.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/app.rs b/crates/tower-api/src/models/app.rs index 6afd89c2..84607114 100644 --- a/crates/tower-api/src/models/app.rs +++ b/crates/tower-api/src/models/app.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ @@ -22,6 +22,10 @@ pub struct App { #[serde_as(as = "DefaultOnNull")] #[serde(rename = "health_status")] pub health_status: HealthStatus, + /// Whether this app was deployed from the Tower examples catalog. + #[serde_as(as = "DefaultOnNull")] + #[serde(rename = "is_example")] + pub is_example: bool, #[serde_as(as = "DefaultOnNull")] #[serde(rename = "is_externally_accessible")] pub is_externally_accessible: bool, @@ -81,6 +85,7 @@ impl App { pub fn new( created_at: String, health_status: HealthStatus, + is_example: bool, is_externally_accessible: bool, name: String, next_run_at: Option, @@ -94,6 +99,7 @@ impl App { App { created_at, health_status, + is_example, is_externally_accessible, last_run: None, name, diff --git a/crates/tower-api/src/models/app_statistics.rs b/crates/tower-api/src/models/app_statistics.rs index e691a736..18d89de6 100644 --- a/crates/tower-api/src/models/app_statistics.rs +++ b/crates/tower-api/src/models/app_statistics.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/app_summary.rs b/crates/tower-api/src/models/app_summary.rs index fd6eaacf..1590e114 100644 --- a/crates/tower-api/src/models/app_summary.rs +++ b/crates/tower-api/src/models/app_summary.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/app_tag.rs b/crates/tower-api/src/models/app_tag.rs index 59fadff6..7c3bd0f5 100644 --- a/crates/tower-api/src/models/app_tag.rs +++ b/crates/tower-api/src/models/app_tag.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/app_version.rs b/crates/tower-api/src/models/app_version.rs index b1193b3c..e3f307ca 100644 --- a/crates/tower-api/src/models/app_version.rs +++ b/crates/tower-api/src/models/app_version.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/authentication_context.rs b/crates/tower-api/src/models/authentication_context.rs index 16e7d68b..cb5d9c57 100644 --- a/crates/tower-api/src/models/authentication_context.rs +++ b/crates/tower-api/src/models/authentication_context.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/batch_describe_runs_logs_params.rs b/crates/tower-api/src/models/batch_describe_runs_logs_params.rs new file mode 100644 index 00000000..a2630e72 --- /dev/null +++ b/crates/tower-api/src/models/batch_describe_runs_logs_params.rs @@ -0,0 +1,61 @@ +/* + * Tower API + * + * REST API to interact with Tower Services. + * + * The version of the OpenAPI document: v0.11.24 + * Contact: hello@tower.dev + * Generated by: https://openapi-generator.tech + */ +use crate::models; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::{serde_as, DefaultOnNull}; + +#[serde_as] +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct BatchDescribeRunsLogsParams { + /// Return only the first N log lines. Cannot be combined with tail. + #[serde( + rename = "head", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub head: Option>, + /// The name of the app to describe the run for. + #[serde_as(as = "DefaultOnNull")] + #[serde(rename = "name")] + pub name: String, + /// The number of the run to describe. + #[serde_as(as = "DefaultOnNull")] + #[serde(rename = "seq")] + pub seq: i64, + /// Fetch logs from this timestamp onwards (inclusive). + #[serde( + rename = "start_at", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub start_at: Option>, + /// Return only the last N log lines. Cannot be combined with head. + #[serde( + rename = "tail", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub tail: Option>, +} + +impl BatchDescribeRunsLogsParams { + pub fn new(name: String, seq: i64) -> BatchDescribeRunsLogsParams { + BatchDescribeRunsLogsParams { + head: None, + name, + seq, + start_at: None, + tail: None, + } + } +} diff --git a/crates/tower-api/src/models/batch_describe_runs_params.rs b/crates/tower-api/src/models/batch_describe_runs_params.rs new file mode 100644 index 00000000..831d411b --- /dev/null +++ b/crates/tower-api/src/models/batch_describe_runs_params.rs @@ -0,0 +1,31 @@ +/* + * Tower API + * + * REST API to interact with Tower Services. + * + * The version of the OpenAPI document: v0.11.24 + * Contact: hello@tower.dev + * Generated by: https://openapi-generator.tech + */ +use crate::models; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::{serde_as, DefaultOnNull}; + +#[serde_as] +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct BatchDescribeRunsParams { + /// The name of the app to describe the run for. + #[serde_as(as = "DefaultOnNull")] + #[serde(rename = "name")] + pub name: String, + /// The number of the run to describe. + #[serde_as(as = "DefaultOnNull")] + #[serde(rename = "seq")] + pub seq: i64, +} + +impl BatchDescribeRunsParams { + pub fn new(name: String, seq: i64) -> BatchDescribeRunsParams { + BatchDescribeRunsParams { name, seq } + } +} diff --git a/crates/tower-api/src/models/batch_describe_runs_response.rs b/crates/tower-api/src/models/batch_describe_runs_response.rs new file mode 100644 index 00000000..076fe5b6 --- /dev/null +++ b/crates/tower-api/src/models/batch_describe_runs_response.rs @@ -0,0 +1,29 @@ +/* + * Tower API + * + * REST API to interact with Tower Services. + * + * The version of the OpenAPI document: v0.11.24 + * Contact: hello@tower.dev + * Generated by: https://openapi-generator.tech + */ +use crate::models; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::{serde_as, DefaultOnNull}; + +#[serde_as] +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct BatchDescribeRunsResponse { + /// A URL to the JSON Schema for this object. + #[serde(rename = "$schema", skip_serializing_if = "Option::is_none")] + pub schema: Option, + #[serde_as(as = "DefaultOnNull")] + #[serde(rename = "runs")] + pub runs: Vec, +} + +impl BatchDescribeRunsResponse { + pub fn new(runs: Vec) -> BatchDescribeRunsResponse { + BatchDescribeRunsResponse { schema: None, runs } + } +} diff --git a/crates/tower-api/src/models/batch_error.rs b/crates/tower-api/src/models/batch_error.rs new file mode 100644 index 00000000..68534bd9 --- /dev/null +++ b/crates/tower-api/src/models/batch_error.rs @@ -0,0 +1,26 @@ +/* + * Tower API + * + * REST API to interact with Tower Services. + * + * The version of the OpenAPI document: v0.11.24 + * Contact: hello@tower.dev + * Generated by: https://openapi-generator.tech + */ +use crate::models; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::{serde_as, DefaultOnNull}; + +#[serde_as] +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct BatchError { + #[serde_as(as = "DefaultOnNull")] + #[serde(rename = "message")] + pub message: String, +} + +impl BatchError { + pub fn new(message: String) -> BatchError { + BatchError { message } + } +} diff --git a/crates/tower-api/src/models/batch_run_and_links.rs b/crates/tower-api/src/models/batch_run_and_links.rs new file mode 100644 index 00000000..da357f04 --- /dev/null +++ b/crates/tower-api/src/models/batch_run_and_links.rs @@ -0,0 +1,30 @@ +/* + * Tower API + * + * REST API to interact with Tower Services. + * + * The version of the OpenAPI document: v0.11.24 + * Contact: hello@tower.dev + * Generated by: https://openapi-generator.tech + */ +use crate::models; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::{serde_as, DefaultOnNull}; + +#[serde_as] +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct BatchRunAndLinks { + #[serde(rename = "data", skip_serializing_if = "Option::is_none")] + pub data: Option, + #[serde(rename = "error", skip_serializing_if = "Option::is_none")] + pub error: Option, +} + +impl BatchRunAndLinks { + pub fn new() -> BatchRunAndLinks { + BatchRunAndLinks { + data: None, + error: None, + } + } +} diff --git a/crates/tower-api/src/models/batch_schedule_params.rs b/crates/tower-api/src/models/batch_schedule_params.rs index 81e52aa1..2a4f6b7d 100644 --- a/crates/tower-api/src/models/batch_schedule_params.rs +++ b/crates/tower-api/src/models/batch_schedule_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/batch_schedule_response.rs b/crates/tower-api/src/models/batch_schedule_response.rs index 09532e94..547f2330 100644 --- a/crates/tower-api/src/models/batch_schedule_response.rs +++ b/crates/tower-api/src/models/batch_schedule_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/batched_run_log_lines.rs b/crates/tower-api/src/models/batched_run_log_lines.rs new file mode 100644 index 00000000..3cfd1523 --- /dev/null +++ b/crates/tower-api/src/models/batched_run_log_lines.rs @@ -0,0 +1,35 @@ +/* + * Tower API + * + * REST API to interact with Tower Services. + * + * The version of the OpenAPI document: v0.11.24 + * Contact: hello@tower.dev + * Generated by: https://openapi-generator.tech + */ +use crate::models; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::{serde_as, DefaultOnNull}; + +#[serde_as] +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct BatchedRunLogLines { + #[serde( + rename = "error", + default, + with = "::serde_with::rust::double_option", + skip_serializing_if = "Option::is_none" + )] + pub error: Option>, + #[serde(rename = "log_lines", skip_serializing_if = "Option::is_none")] + pub log_lines: Option>, +} + +impl BatchedRunLogLines { + pub fn new() -> BatchedRunLogLines { + BatchedRunLogLines { + error: None, + log_lines: None, + } + } +} diff --git a/crates/tower-api/src/models/cancel_run_response.rs b/crates/tower-api/src/models/cancel_run_response.rs index d7c0e02a..ca1c73e0 100644 --- a/crates/tower-api/src/models/cancel_run_response.rs +++ b/crates/tower-api/src/models/cancel_run_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/catalog.rs b/crates/tower-api/src/models/catalog.rs index 352181b2..a2e07c9f 100644 --- a/crates/tower-api/src/models/catalog.rs +++ b/crates/tower-api/src/models/catalog.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ @@ -17,6 +17,7 @@ pub struct Catalog { #[serde_as(as = "DefaultOnNull")] #[serde(rename = "CreatedAt")] pub created_at: String, + /// Environment containing the catalog definition. #[serde_as(as = "DefaultOnNull")] #[serde(rename = "environment")] pub environment: String, diff --git a/crates/tower-api/src/models/catalog_credentials.rs b/crates/tower-api/src/models/catalog_credentials.rs index 284b8aee..5de1ad47 100644 --- a/crates/tower-api/src/models/catalog_credentials.rs +++ b/crates/tower-api/src/models/catalog_credentials.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/catalog_fact.rs b/crates/tower-api/src/models/catalog_fact.rs index 7689d4d6..5fae99ee 100644 --- a/crates/tower-api/src/models/catalog_fact.rs +++ b/crates/tower-api/src/models/catalog_fact.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/catalog_property.rs b/crates/tower-api/src/models/catalog_property.rs index 4b15bd7e..0f3ff9da 100644 --- a/crates/tower-api/src/models/catalog_property.rs +++ b/crates/tower-api/src/models/catalog_property.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/catalog_usage.rs b/crates/tower-api/src/models/catalog_usage.rs new file mode 100644 index 00000000..9b62e91b --- /dev/null +++ b/crates/tower-api/src/models/catalog_usage.rs @@ -0,0 +1,33 @@ +/* + * Tower API + * + * REST API to interact with Tower Services. + * + * The version of the OpenAPI document: v0.11.24 + * Contact: hello@tower.dev + * Generated by: https://openapi-generator.tech + */ +use crate::models; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::{serde_as, DefaultOnNull}; + +#[serde_as] +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct CatalogUsage { + /// When this value was measured. Null when metering is unconfigured, disabled, or failed without a cached value. + #[serde(rename = "measured_at", deserialize_with = "Option::deserialize")] + pub measured_at: Option, + /// Physical bytes stored by this Tower-managed catalog, including Iceberg metadata and not-yet-compacted snapshot history. + #[serde_as(as = "DefaultOnNull")] + #[serde(rename = "total_bytes")] + pub total_bytes: i64, +} + +impl CatalogUsage { + pub fn new(measured_at: Option, total_bytes: i64) -> CatalogUsage { + CatalogUsage { + measured_at, + total_bytes, + } + } +} diff --git a/crates/tower-api/src/models/claim_device_login_ticket_params.rs b/crates/tower-api/src/models/claim_device_login_ticket_params.rs index 0c5bf058..22debab4 100644 --- a/crates/tower-api/src/models/claim_device_login_ticket_params.rs +++ b/crates/tower-api/src/models/claim_device_login_ticket_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/claim_device_login_ticket_response.rs b/crates/tower-api/src/models/claim_device_login_ticket_response.rs index 327fa284..8aec468d 100644 --- a/crates/tower-api/src/models/claim_device_login_ticket_response.rs +++ b/crates/tower-api/src/models/claim_device_login_ticket_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_account_params.rs b/crates/tower-api/src/models/create_account_params.rs index 7aa1327d..d3bd03b5 100644 --- a/crates/tower-api/src/models/create_account_params.rs +++ b/crates/tower-api/src/models/create_account_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_account_params_flags_struct.rs b/crates/tower-api/src/models/create_account_params_flags_struct.rs index 66d4c825..d8b4f758 100644 --- a/crates/tower-api/src/models/create_account_params_flags_struct.rs +++ b/crates/tower-api/src/models/create_account_params_flags_struct.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_account_response.rs b/crates/tower-api/src/models/create_account_response.rs index bbed8fba..90d42733 100644 --- a/crates/tower-api/src/models/create_account_response.rs +++ b/crates/tower-api/src/models/create_account_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_api_key_params.rs b/crates/tower-api/src/models/create_api_key_params.rs index 4f026c03..05d56991 100644 --- a/crates/tower-api/src/models/create_api_key_params.rs +++ b/crates/tower-api/src/models/create_api_key_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_api_key_response.rs b/crates/tower-api/src/models/create_api_key_response.rs index c90b282b..d623904a 100644 --- a/crates/tower-api/src/models/create_api_key_response.rs +++ b/crates/tower-api/src/models/create_api_key_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_app_params.rs b/crates/tower-api/src/models/create_app_params.rs index 77b91935..fb9b08ad 100644 --- a/crates/tower-api/src/models/create_app_params.rs +++ b/crates/tower-api/src/models/create_app_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_app_response.rs b/crates/tower-api/src/models/create_app_response.rs index e1cac520..b2c59985 100644 --- a/crates/tower-api/src/models/create_app_response.rs +++ b/crates/tower-api/src/models/create_app_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_catalog_params.rs b/crates/tower-api/src/models/create_catalog_params.rs index 33196ef6..6134e916 100644 --- a/crates/tower-api/src/models/create_catalog_params.rs +++ b/crates/tower-api/src/models/create_catalog_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_catalog_response.rs b/crates/tower-api/src/models/create_catalog_response.rs index f4bb0866..dec14184 100644 --- a/crates/tower-api/src/models/create_catalog_response.rs +++ b/crates/tower-api/src/models/create_catalog_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_device_login_ticket_response.rs b/crates/tower-api/src/models/create_device_login_ticket_response.rs index 1da72fec..f2418751 100644 --- a/crates/tower-api/src/models/create_device_login_ticket_response.rs +++ b/crates/tower-api/src/models/create_device_login_ticket_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_environment_params.rs b/crates/tower-api/src/models/create_environment_params.rs index b1e70989..8cf45213 100644 --- a/crates/tower-api/src/models/create_environment_params.rs +++ b/crates/tower-api/src/models/create_environment_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_environment_response.rs b/crates/tower-api/src/models/create_environment_response.rs index 0aed4bf2..8412a1f7 100644 --- a/crates/tower-api/src/models/create_environment_response.rs +++ b/crates/tower-api/src/models/create_environment_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_guest_params.rs b/crates/tower-api/src/models/create_guest_params.rs index 7afc6838..df6d34fe 100644 --- a/crates/tower-api/src/models/create_guest_params.rs +++ b/crates/tower-api/src/models/create_guest_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_guest_response.rs b/crates/tower-api/src/models/create_guest_response.rs index d5df6972..c96afc6a 100644 --- a/crates/tower-api/src/models/create_guest_response.rs +++ b/crates/tower-api/src/models/create_guest_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_sandbox_secrets_params.rs b/crates/tower-api/src/models/create_sandbox_secrets_params.rs index 3918e1de..4b4f921a 100644 --- a/crates/tower-api/src/models/create_sandbox_secrets_params.rs +++ b/crates/tower-api/src/models/create_sandbox_secrets_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_sandbox_secrets_response.rs b/crates/tower-api/src/models/create_sandbox_secrets_response.rs index 46ac8d02..138c925d 100644 --- a/crates/tower-api/src/models/create_sandbox_secrets_response.rs +++ b/crates/tower-api/src/models/create_sandbox_secrets_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_schedule_params.rs b/crates/tower-api/src/models/create_schedule_params.rs index 791809b0..2f339b9d 100644 --- a/crates/tower-api/src/models/create_schedule_params.rs +++ b/crates/tower-api/src/models/create_schedule_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_schedule_response.rs b/crates/tower-api/src/models/create_schedule_response.rs index a95ab056..9823ed77 100644 --- a/crates/tower-api/src/models/create_schedule_response.rs +++ b/crates/tower-api/src/models/create_schedule_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_secret_params.rs b/crates/tower-api/src/models/create_secret_params.rs index 6e27c3ea..6b88eff4 100644 --- a/crates/tower-api/src/models/create_secret_params.rs +++ b/crates/tower-api/src/models/create_secret_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_secret_response.rs b/crates/tower-api/src/models/create_secret_response.rs index 3a8f27ed..1a836dc5 100644 --- a/crates/tower-api/src/models/create_secret_response.rs +++ b/crates/tower-api/src/models/create_secret_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_service_account_api_key_params.rs b/crates/tower-api/src/models/create_service_account_api_key_params.rs index a45d8088..e3753079 100644 --- a/crates/tower-api/src/models/create_service_account_api_key_params.rs +++ b/crates/tower-api/src/models/create_service_account_api_key_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_service_account_api_key_response.rs b/crates/tower-api/src/models/create_service_account_api_key_response.rs index 47758632..d717e222 100644 --- a/crates/tower-api/src/models/create_service_account_api_key_response.rs +++ b/crates/tower-api/src/models/create_service_account_api_key_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_service_account_params.rs b/crates/tower-api/src/models/create_service_account_params.rs index 799df04a..00308875 100644 --- a/crates/tower-api/src/models/create_service_account_params.rs +++ b/crates/tower-api/src/models/create_service_account_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_service_account_response.rs b/crates/tower-api/src/models/create_service_account_response.rs index 2c84d6f4..19e8e31a 100644 --- a/crates/tower-api/src/models/create_service_account_response.rs +++ b/crates/tower-api/src/models/create_service_account_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_session_params.rs b/crates/tower-api/src/models/create_session_params.rs index c6259b64..23721d7a 100644 --- a/crates/tower-api/src/models/create_session_params.rs +++ b/crates/tower-api/src/models/create_session_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_session_response.rs b/crates/tower-api/src/models/create_session_response.rs index a5239d45..300f1765 100644 --- a/crates/tower-api/src/models/create_session_response.rs +++ b/crates/tower-api/src/models/create_session_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_team_params.rs b/crates/tower-api/src/models/create_team_params.rs index 58119629..2e418ed3 100644 --- a/crates/tower-api/src/models/create_team_params.rs +++ b/crates/tower-api/src/models/create_team_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_team_response.rs b/crates/tower-api/src/models/create_team_response.rs index 9bdd10c4..0ccafb6a 100644 --- a/crates/tower-api/src/models/create_team_response.rs +++ b/crates/tower-api/src/models/create_team_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_webhook_params.rs b/crates/tower-api/src/models/create_webhook_params.rs index 490bfabb..65ba1bf0 100644 --- a/crates/tower-api/src/models/create_webhook_params.rs +++ b/crates/tower-api/src/models/create_webhook_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/create_webhook_response.rs b/crates/tower-api/src/models/create_webhook_response.rs index 045ef73e..13075174 100644 --- a/crates/tower-api/src/models/create_webhook_response.rs +++ b/crates/tower-api/src/models/create_webhook_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/delete_api_key_params.rs b/crates/tower-api/src/models/delete_api_key_params.rs index 499f72a9..fab7b67e 100644 --- a/crates/tower-api/src/models/delete_api_key_params.rs +++ b/crates/tower-api/src/models/delete_api_key_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/delete_api_key_response.rs b/crates/tower-api/src/models/delete_api_key_response.rs index 39ac6a3e..086fa66c 100644 --- a/crates/tower-api/src/models/delete_api_key_response.rs +++ b/crates/tower-api/src/models/delete_api_key_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/delete_app_response.rs b/crates/tower-api/src/models/delete_app_response.rs index 2946b48a..5bd23d31 100644 --- a/crates/tower-api/src/models/delete_app_response.rs +++ b/crates/tower-api/src/models/delete_app_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/delete_catalog_response.rs b/crates/tower-api/src/models/delete_catalog_response.rs index 1affd044..0e5041ee 100644 --- a/crates/tower-api/src/models/delete_catalog_response.rs +++ b/crates/tower-api/src/models/delete_catalog_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/delete_environment_response.rs b/crates/tower-api/src/models/delete_environment_response.rs index 24bbd310..c8d2c1b6 100644 --- a/crates/tower-api/src/models/delete_environment_response.rs +++ b/crates/tower-api/src/models/delete_environment_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/delete_guest_output_body.rs b/crates/tower-api/src/models/delete_guest_output_body.rs index fc40e6b7..f1f02ac5 100644 --- a/crates/tower-api/src/models/delete_guest_output_body.rs +++ b/crates/tower-api/src/models/delete_guest_output_body.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/delete_schedule_params.rs b/crates/tower-api/src/models/delete_schedule_params.rs index cc5546ac..36c92ac9 100644 --- a/crates/tower-api/src/models/delete_schedule_params.rs +++ b/crates/tower-api/src/models/delete_schedule_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/delete_schedule_response.rs b/crates/tower-api/src/models/delete_schedule_response.rs index 0a830666..606b82d6 100644 --- a/crates/tower-api/src/models/delete_schedule_response.rs +++ b/crates/tower-api/src/models/delete_schedule_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/delete_secret_response.rs b/crates/tower-api/src/models/delete_secret_response.rs index 4ca7b11f..75f509e5 100644 --- a/crates/tower-api/src/models/delete_secret_response.rs +++ b/crates/tower-api/src/models/delete_secret_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/delete_service_account_api_key_params.rs b/crates/tower-api/src/models/delete_service_account_api_key_params.rs index 16ebdbaa..c9a8d5a0 100644 --- a/crates/tower-api/src/models/delete_service_account_api_key_params.rs +++ b/crates/tower-api/src/models/delete_service_account_api_key_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/delete_session_params.rs b/crates/tower-api/src/models/delete_session_params.rs index de8f855f..8db79b12 100644 --- a/crates/tower-api/src/models/delete_session_params.rs +++ b/crates/tower-api/src/models/delete_session_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/delete_session_response.rs b/crates/tower-api/src/models/delete_session_response.rs index d7fc8575..5ce1b9fc 100644 --- a/crates/tower-api/src/models/delete_session_response.rs +++ b/crates/tower-api/src/models/delete_session_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/delete_team_invitation_params.rs b/crates/tower-api/src/models/delete_team_invitation_params.rs index 96a895b4..d8c0ca74 100644 --- a/crates/tower-api/src/models/delete_team_invitation_params.rs +++ b/crates/tower-api/src/models/delete_team_invitation_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/delete_team_invitation_response.rs b/crates/tower-api/src/models/delete_team_invitation_response.rs index ca73daa0..268bda31 100644 --- a/crates/tower-api/src/models/delete_team_invitation_response.rs +++ b/crates/tower-api/src/models/delete_team_invitation_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/delete_team_params.rs b/crates/tower-api/src/models/delete_team_params.rs index e8175fa4..23a193f1 100644 --- a/crates/tower-api/src/models/delete_team_params.rs +++ b/crates/tower-api/src/models/delete_team_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/delete_team_response.rs b/crates/tower-api/src/models/delete_team_response.rs index fcfc256f..3c6ab26a 100644 --- a/crates/tower-api/src/models/delete_team_response.rs +++ b/crates/tower-api/src/models/delete_team_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/delete_webhook_response.rs b/crates/tower-api/src/models/delete_webhook_response.rs index a0b3d6a6..59fd7c4e 100644 --- a/crates/tower-api/src/models/delete_webhook_response.rs +++ b/crates/tower-api/src/models/delete_webhook_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/deploy_app_request.rs b/crates/tower-api/src/models/deploy_app_request.rs index 2f2de5cc..4c12f7b2 100644 --- a/crates/tower-api/src/models/deploy_app_request.rs +++ b/crates/tower-api/src/models/deploy_app_request.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/deploy_app_response.rs b/crates/tower-api/src/models/deploy_app_response.rs index ec69374d..dece73dd 100644 --- a/crates/tower-api/src/models/deploy_app_response.rs +++ b/crates/tower-api/src/models/deploy_app_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/describe_account_body.rs b/crates/tower-api/src/models/describe_account_body.rs index 3cdef8a6..12d30baf 100644 --- a/crates/tower-api/src/models/describe_account_body.rs +++ b/crates/tower-api/src/models/describe_account_body.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/describe_app_response.rs b/crates/tower-api/src/models/describe_app_response.rs index 38666c9e..6f9e5013 100644 --- a/crates/tower-api/src/models/describe_app_response.rs +++ b/crates/tower-api/src/models/describe_app_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/describe_app_version_response.rs b/crates/tower-api/src/models/describe_app_version_response.rs index 3258f6fd..e9f618df 100644 --- a/crates/tower-api/src/models/describe_app_version_response.rs +++ b/crates/tower-api/src/models/describe_app_version_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/describe_authentication_context_body.rs b/crates/tower-api/src/models/describe_authentication_context_body.rs index c55cdd00..89eacdf9 100644 --- a/crates/tower-api/src/models/describe_authentication_context_body.rs +++ b/crates/tower-api/src/models/describe_authentication_context_body.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/describe_catalog_fact_response.rs b/crates/tower-api/src/models/describe_catalog_fact_response.rs index 04cde236..dbda8e0e 100644 --- a/crates/tower-api/src/models/describe_catalog_fact_response.rs +++ b/crates/tower-api/src/models/describe_catalog_fact_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ @@ -17,13 +17,21 @@ pub struct DescribeCatalogFactResponse { /// A URL to the JSON Schema for this object. #[serde(rename = "$schema", skip_serializing_if = "Option::is_none")] pub schema: Option, + /// Environment containing the catalog definition. + #[serde_as(as = "DefaultOnNull")] + #[serde(rename = "environment")] + pub environment: String, #[serde_as(as = "DefaultOnNull")] #[serde(rename = "fact")] pub fact: models::CatalogFact, } impl DescribeCatalogFactResponse { - pub fn new(fact: models::CatalogFact) -> DescribeCatalogFactResponse { - DescribeCatalogFactResponse { schema: None, fact } + pub fn new(environment: String, fact: models::CatalogFact) -> DescribeCatalogFactResponse { + DescribeCatalogFactResponse { + schema: None, + environment, + fact, + } } } diff --git a/crates/tower-api/src/models/describe_catalog_response.rs b/crates/tower-api/src/models/describe_catalog_response.rs index bf1f98cf..99eda2e1 100644 --- a/crates/tower-api/src/models/describe_catalog_response.rs +++ b/crates/tower-api/src/models/describe_catalog_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/describe_catalog_usage_response.rs b/crates/tower-api/src/models/describe_catalog_usage_response.rs new file mode 100644 index 00000000..fb937aa1 --- /dev/null +++ b/crates/tower-api/src/models/describe_catalog_usage_response.rs @@ -0,0 +1,37 @@ +/* + * Tower API + * + * REST API to interact with Tower Services. + * + * The version of the OpenAPI document: v0.11.24 + * Contact: hello@tower.dev + * Generated by: https://openapi-generator.tech + */ +use crate::models; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::{serde_as, DefaultOnNull}; + +#[serde_as] +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct DescribeCatalogUsageResponse { + /// A URL to the JSON Schema for this object. + #[serde(rename = "$schema", skip_serializing_if = "Option::is_none")] + pub schema: Option, + /// Environment containing the catalog definition. + #[serde_as(as = "DefaultOnNull")] + #[serde(rename = "environment")] + pub environment: String, + #[serde_as(as = "DefaultOnNull")] + #[serde(rename = "usage")] + pub usage: models::CatalogUsage, +} + +impl DescribeCatalogUsageResponse { + pub fn new(environment: String, usage: models::CatalogUsage) -> DescribeCatalogUsageResponse { + DescribeCatalogUsageResponse { + schema: None, + environment, + usage, + } + } +} diff --git a/crates/tower-api/src/models/describe_device_login_session_response.rs b/crates/tower-api/src/models/describe_device_login_session_response.rs index 5a6bbf0b..1b324515 100644 --- a/crates/tower-api/src/models/describe_device_login_session_response.rs +++ b/crates/tower-api/src/models/describe_device_login_session_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/describe_email_preferences_body.rs b/crates/tower-api/src/models/describe_email_preferences_body.rs index befb4ee8..b9efcc55 100644 --- a/crates/tower-api/src/models/describe_email_preferences_body.rs +++ b/crates/tower-api/src/models/describe_email_preferences_body.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/describe_environment_response.rs b/crates/tower-api/src/models/describe_environment_response.rs index 1657cafb..7f58cd00 100644 --- a/crates/tower-api/src/models/describe_environment_response.rs +++ b/crates/tower-api/src/models/describe_environment_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/describe_plan_response.rs b/crates/tower-api/src/models/describe_plan_response.rs index 5bf3b864..99931268 100644 --- a/crates/tower-api/src/models/describe_plan_response.rs +++ b/crates/tower-api/src/models/describe_plan_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/describe_run_graph_response.rs b/crates/tower-api/src/models/describe_run_graph_response.rs index 1d21caf4..1d45dfdd 100644 --- a/crates/tower-api/src/models/describe_run_graph_response.rs +++ b/crates/tower-api/src/models/describe_run_graph_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/describe_run_links.rs b/crates/tower-api/src/models/describe_run_links.rs index 2cf98a00..bd81509b 100644 --- a/crates/tower-api/src/models/describe_run_links.rs +++ b/crates/tower-api/src/models/describe_run_links.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/describe_run_logs_response.rs b/crates/tower-api/src/models/describe_run_logs_response.rs index da5664b9..1ea5ed40 100644 --- a/crates/tower-api/src/models/describe_run_logs_response.rs +++ b/crates/tower-api/src/models/describe_run_logs_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/describe_run_response.rs b/crates/tower-api/src/models/describe_run_response.rs index 23d86c2d..071f348e 100644 --- a/crates/tower-api/src/models/describe_run_response.rs +++ b/crates/tower-api/src/models/describe_run_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/describe_secrets_key_response.rs b/crates/tower-api/src/models/describe_secrets_key_response.rs index 9090dba3..a09cf55e 100644 --- a/crates/tower-api/src/models/describe_secrets_key_response.rs +++ b/crates/tower-api/src/models/describe_secrets_key_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/describe_service_account_response.rs b/crates/tower-api/src/models/describe_service_account_response.rs index 668a4127..fbe87349 100644 --- a/crates/tower-api/src/models/describe_service_account_response.rs +++ b/crates/tower-api/src/models/describe_service_account_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/describe_session_response.rs b/crates/tower-api/src/models/describe_session_response.rs index 33bc35b7..fb8f344e 100644 --- a/crates/tower-api/src/models/describe_session_response.rs +++ b/crates/tower-api/src/models/describe_session_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/describe_team_response.rs b/crates/tower-api/src/models/describe_team_response.rs index b4a5d58c..57b30937 100644 --- a/crates/tower-api/src/models/describe_team_response.rs +++ b/crates/tower-api/src/models/describe_team_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/describe_webhook_response.rs b/crates/tower-api/src/models/describe_webhook_response.rs index 99277e52..f5bcac84 100644 --- a/crates/tower-api/src/models/describe_webhook_response.rs +++ b/crates/tower-api/src/models/describe_webhook_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/describe_whoami_response.rs b/crates/tower-api/src/models/describe_whoami_response.rs index 9dae2606..6e765a28 100644 --- a/crates/tower-api/src/models/describe_whoami_response.rs +++ b/crates/tower-api/src/models/describe_whoami_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/email_subscriptions.rs b/crates/tower-api/src/models/email_subscriptions.rs index de02f82c..768eaa24 100644 --- a/crates/tower-api/src/models/email_subscriptions.rs +++ b/crates/tower-api/src/models/email_subscriptions.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/encrypted_catalog_property.rs b/crates/tower-api/src/models/encrypted_catalog_property.rs index 3c953566..34fcc182 100644 --- a/crates/tower-api/src/models/encrypted_catalog_property.rs +++ b/crates/tower-api/src/models/encrypted_catalog_property.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/environment.rs b/crates/tower-api/src/models/environment.rs index a84b27ea..4de84ece 100644 --- a/crates/tower-api/src/models/environment.rs +++ b/crates/tower-api/src/models/environment.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/error_detail.rs b/crates/tower-api/src/models/error_detail.rs index d67f1289..9073cef0 100644 --- a/crates/tower-api/src/models/error_detail.rs +++ b/crates/tower-api/src/models/error_detail.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/error_model.rs b/crates/tower-api/src/models/error_model.rs index 32c65920..8491659a 100644 --- a/crates/tower-api/src/models/error_model.rs +++ b/crates/tower-api/src/models/error_model.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/event_alert.rs b/crates/tower-api/src/models/event_alert.rs index 423dde06..94b1f922 100644 --- a/crates/tower-api/src/models/event_alert.rs +++ b/crates/tower-api/src/models/event_alert.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/event_error.rs b/crates/tower-api/src/models/event_error.rs index ad65d975..d1a8d385 100644 --- a/crates/tower-api/src/models/event_error.rs +++ b/crates/tower-api/src/models/event_error.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/event_log.rs b/crates/tower-api/src/models/event_log.rs index 7a0ca024..1a332653 100644 --- a/crates/tower-api/src/models/event_log.rs +++ b/crates/tower-api/src/models/event_log.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/event_shouldertap.rs b/crates/tower-api/src/models/event_shouldertap.rs index 170626c5..241818c3 100644 --- a/crates/tower-api/src/models/event_shouldertap.rs +++ b/crates/tower-api/src/models/event_shouldertap.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/event_warning.rs b/crates/tower-api/src/models/event_warning.rs index fc49ee89..34e2c310 100644 --- a/crates/tower-api/src/models/event_warning.rs +++ b/crates/tower-api/src/models/event_warning.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/export_catalogs_params.rs b/crates/tower-api/src/models/export_catalogs_params.rs index 413ccc54..c0d8f2da 100644 --- a/crates/tower-api/src/models/export_catalogs_params.rs +++ b/crates/tower-api/src/models/export_catalogs_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ @@ -17,11 +17,11 @@ pub struct ExportCatalogsParams { /// A URL to the JSON Schema for this object. #[serde(rename = "$schema", skip_serializing_if = "Option::is_none")] pub schema: Option, - /// Whether to fetch all catalogs or only the ones in the supplied environment. + /// Whether to export catalogs across all environments, without applying default-environment inheritance or deduplication. #[serde_as(as = "DefaultOnNull")] #[serde(rename = "all")] pub all: bool, - /// The environment to filter by. + /// Environment whose catalogs to export when all is false. When it has no same-named catalog, a catalog from default is selected instead. #[serde_as(as = "DefaultOnNull")] #[serde(rename = "environment")] pub environment: String, diff --git a/crates/tower-api/src/models/export_catalogs_response.rs b/crates/tower-api/src/models/export_catalogs_response.rs index 16f13f08..071d0766 100644 --- a/crates/tower-api/src/models/export_catalogs_response.rs +++ b/crates/tower-api/src/models/export_catalogs_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/export_secrets_params.rs b/crates/tower-api/src/models/export_secrets_params.rs index 3b61f881..b055c52f 100644 --- a/crates/tower-api/src/models/export_secrets_params.rs +++ b/crates/tower-api/src/models/export_secrets_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/export_secrets_response.rs b/crates/tower-api/src/models/export_secrets_response.rs index 95a898a1..959474c6 100644 --- a/crates/tower-api/src/models/export_secrets_response.rs +++ b/crates/tower-api/src/models/export_secrets_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/exported_catalog.rs b/crates/tower-api/src/models/exported_catalog.rs index ec48600c..e031bb2e 100644 --- a/crates/tower-api/src/models/exported_catalog.rs +++ b/crates/tower-api/src/models/exported_catalog.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ @@ -17,6 +17,7 @@ pub struct ExportedCatalog { #[serde_as(as = "DefaultOnNull")] #[serde(rename = "CreatedAt")] pub created_at: String, + /// Environment containing the catalog definition. #[serde_as(as = "DefaultOnNull")] #[serde(rename = "environment")] pub environment: String, diff --git a/crates/tower-api/src/models/exported_catalog_property.rs b/crates/tower-api/src/models/exported_catalog_property.rs index ee03db06..f3f7cdc3 100644 --- a/crates/tower-api/src/models/exported_catalog_property.rs +++ b/crates/tower-api/src/models/exported_catalog_property.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/exported_secret.rs b/crates/tower-api/src/models/exported_secret.rs index d81128da..24f666aa 100644 --- a/crates/tower-api/src/models/exported_secret.rs +++ b/crates/tower-api/src/models/exported_secret.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/feature.rs b/crates/tower-api/src/models/feature.rs index a4b8ac57..b8a0a440 100644 --- a/crates/tower-api/src/models/feature.rs +++ b/crates/tower-api/src/models/feature.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/featurebase_identity.rs b/crates/tower-api/src/models/featurebase_identity.rs index e5fbe8ad..fc0bcd9a 100644 --- a/crates/tower-api/src/models/featurebase_identity.rs +++ b/crates/tower-api/src/models/featurebase_identity.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/generate_app_statistics_response.rs b/crates/tower-api/src/models/generate_app_statistics_response.rs index 5d8b8db5..0fb48822 100644 --- a/crates/tower-api/src/models/generate_app_statistics_response.rs +++ b/crates/tower-api/src/models/generate_app_statistics_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/generate_organization_usage_time_series_response.rs b/crates/tower-api/src/models/generate_organization_usage_time_series_response.rs index d6c64432..56688af8 100644 --- a/crates/tower-api/src/models/generate_organization_usage_time_series_response.rs +++ b/crates/tower-api/src/models/generate_organization_usage_time_series_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/generate_run_statistics_response.rs b/crates/tower-api/src/models/generate_run_statistics_response.rs index 1d1c46de..094abbfd 100644 --- a/crates/tower-api/src/models/generate_run_statistics_response.rs +++ b/crates/tower-api/src/models/generate_run_statistics_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/generate_runner_credentials_response.rs b/crates/tower-api/src/models/generate_runner_credentials_response.rs index a39529f9..736837c2 100644 --- a/crates/tower-api/src/models/generate_runner_credentials_response.rs +++ b/crates/tower-api/src/models/generate_runner_credentials_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/get_feature_flag_response_body.rs b/crates/tower-api/src/models/get_feature_flag_response_body.rs index 6e19cb36..3d337bce 100644 --- a/crates/tower-api/src/models/get_feature_flag_response_body.rs +++ b/crates/tower-api/src/models/get_feature_flag_response_body.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/guest.rs b/crates/tower-api/src/models/guest.rs index 8ca0a8a7..340ca753 100644 --- a/crates/tower-api/src/models/guest.rs +++ b/crates/tower-api/src/models/guest.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/invite_team_member_params.rs b/crates/tower-api/src/models/invite_team_member_params.rs index db6c84f9..e8dc80df 100644 --- a/crates/tower-api/src/models/invite_team_member_params.rs +++ b/crates/tower-api/src/models/invite_team_member_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/invite_team_member_response.rs b/crates/tower-api/src/models/invite_team_member_response.rs index 4d0d6d17..9b7f892d 100644 --- a/crates/tower-api/src/models/invite_team_member_response.rs +++ b/crates/tower-api/src/models/invite_team_member_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/leave_team_response.rs b/crates/tower-api/src/models/leave_team_response.rs index 8b8856d4..e7b9a877 100644 --- a/crates/tower-api/src/models/leave_team_response.rs +++ b/crates/tower-api/src/models/leave_team_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/list_alerts_response.rs b/crates/tower-api/src/models/list_alerts_response.rs index 6af2496d..885f4b5c 100644 --- a/crates/tower-api/src/models/list_alerts_response.rs +++ b/crates/tower-api/src/models/list_alerts_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/list_api_keys_response.rs b/crates/tower-api/src/models/list_api_keys_response.rs index af4f1ba6..4194ad72 100644 --- a/crates/tower-api/src/models/list_api_keys_response.rs +++ b/crates/tower-api/src/models/list_api_keys_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/list_app_environments_response.rs b/crates/tower-api/src/models/list_app_environments_response.rs index 9101caf8..6380166a 100644 --- a/crates/tower-api/src/models/list_app_environments_response.rs +++ b/crates/tower-api/src/models/list_app_environments_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/list_app_versions_response.rs b/crates/tower-api/src/models/list_app_versions_response.rs index 0ce2f3d4..b02e7f41 100644 --- a/crates/tower-api/src/models/list_app_versions_response.rs +++ b/crates/tower-api/src/models/list_app_versions_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/list_apps_response.rs b/crates/tower-api/src/models/list_apps_response.rs index 622c25b4..37322051 100644 --- a/crates/tower-api/src/models/list_apps_response.rs +++ b/crates/tower-api/src/models/list_apps_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/list_catalog_facts_response.rs b/crates/tower-api/src/models/list_catalog_facts_response.rs index 41c21216..0f33e88d 100644 --- a/crates/tower-api/src/models/list_catalog_facts_response.rs +++ b/crates/tower-api/src/models/list_catalog_facts_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ @@ -17,15 +17,20 @@ pub struct ListCatalogFactsResponse { /// A URL to the JSON Schema for this object. #[serde(rename = "$schema", skip_serializing_if = "Option::is_none")] pub schema: Option, + /// Environment containing the catalog definition. + #[serde_as(as = "DefaultOnNull")] + #[serde(rename = "environment")] + pub environment: String, #[serde_as(as = "DefaultOnNull")] #[serde(rename = "facts")] pub facts: Vec, } impl ListCatalogFactsResponse { - pub fn new(facts: Vec) -> ListCatalogFactsResponse { + pub fn new(environment: String, facts: Vec) -> ListCatalogFactsResponse { ListCatalogFactsResponse { schema: None, + environment, facts, } } diff --git a/crates/tower-api/src/models/list_catalogs_response.rs b/crates/tower-api/src/models/list_catalogs_response.rs index c21d39c4..afbb9288 100644 --- a/crates/tower-api/src/models/list_catalogs_response.rs +++ b/crates/tower-api/src/models/list_catalogs_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/list_environments_response.rs b/crates/tower-api/src/models/list_environments_response.rs index e9f268fc..9cb3349c 100644 --- a/crates/tower-api/src/models/list_environments_response.rs +++ b/crates/tower-api/src/models/list_environments_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/list_guests_response.rs b/crates/tower-api/src/models/list_guests_response.rs index a0870acc..0ddeb350 100644 --- a/crates/tower-api/src/models/list_guests_response.rs +++ b/crates/tower-api/src/models/list_guests_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/list_my_team_invitations_response.rs b/crates/tower-api/src/models/list_my_team_invitations_response.rs index e4a43c25..5eb579e8 100644 --- a/crates/tower-api/src/models/list_my_team_invitations_response.rs +++ b/crates/tower-api/src/models/list_my_team_invitations_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/list_runners_response.rs b/crates/tower-api/src/models/list_runners_response.rs index 7aac8cf1..ece92754 100644 --- a/crates/tower-api/src/models/list_runners_response.rs +++ b/crates/tower-api/src/models/list_runners_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/list_runs_response.rs b/crates/tower-api/src/models/list_runs_response.rs index f86ede42..b4bd5417 100644 --- a/crates/tower-api/src/models/list_runs_response.rs +++ b/crates/tower-api/src/models/list_runs_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/list_schedules_response.rs b/crates/tower-api/src/models/list_schedules_response.rs index ded64720..403787d2 100644 --- a/crates/tower-api/src/models/list_schedules_response.rs +++ b/crates/tower-api/src/models/list_schedules_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/list_secret_environments_response.rs b/crates/tower-api/src/models/list_secret_environments_response.rs index a2337e8d..98394a6a 100644 --- a/crates/tower-api/src/models/list_secret_environments_response.rs +++ b/crates/tower-api/src/models/list_secret_environments_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/list_secrets_response.rs b/crates/tower-api/src/models/list_secrets_response.rs index a3eb54e3..7600e6ec 100644 --- a/crates/tower-api/src/models/list_secrets_response.rs +++ b/crates/tower-api/src/models/list_secrets_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/list_service_account_api_keys_response.rs b/crates/tower-api/src/models/list_service_account_api_keys_response.rs index 2df25684..d870ce97 100644 --- a/crates/tower-api/src/models/list_service_account_api_keys_response.rs +++ b/crates/tower-api/src/models/list_service_account_api_keys_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/list_service_accounts_response.rs b/crates/tower-api/src/models/list_service_accounts_response.rs index 87fa954d..3d7f1fcf 100644 --- a/crates/tower-api/src/models/list_service_accounts_response.rs +++ b/crates/tower-api/src/models/list_service_accounts_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/list_team_invitations_response.rs b/crates/tower-api/src/models/list_team_invitations_response.rs index cae3cd39..54c9b750 100644 --- a/crates/tower-api/src/models/list_team_invitations_response.rs +++ b/crates/tower-api/src/models/list_team_invitations_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/list_team_members_response.rs b/crates/tower-api/src/models/list_team_members_response.rs index 231c2daa..e12cfb52 100644 --- a/crates/tower-api/src/models/list_team_members_response.rs +++ b/crates/tower-api/src/models/list_team_members_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/list_teams_response.rs b/crates/tower-api/src/models/list_teams_response.rs index f4cd0cd6..2be38ff2 100644 --- a/crates/tower-api/src/models/list_teams_response.rs +++ b/crates/tower-api/src/models/list_teams_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/list_webhooks_response.rs b/crates/tower-api/src/models/list_webhooks_response.rs index 23bb637e..d08f3f36 100644 --- a/crates/tower-api/src/models/list_webhooks_response.rs +++ b/crates/tower-api/src/models/list_webhooks_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/mod.rs b/crates/tower-api/src/models/mod.rs index bdcad19e..f08dced9 100644 --- a/crates/tower-api/src/models/mod.rs +++ b/crates/tower-api/src/models/mod.rs @@ -22,10 +22,22 @@ pub mod app_version; pub use self::app_version::AppVersion; pub mod authentication_context; pub use self::authentication_context::AuthenticationContext; +pub mod batch_describe_runs_logs_params; +pub use self::batch_describe_runs_logs_params::BatchDescribeRunsLogsParams; +pub mod batch_describe_runs_params; +pub use self::batch_describe_runs_params::BatchDescribeRunsParams; +pub mod batch_describe_runs_response; +pub use self::batch_describe_runs_response::BatchDescribeRunsResponse; +pub mod batch_error; +pub use self::batch_error::BatchError; +pub mod batch_run_and_links; +pub use self::batch_run_and_links::BatchRunAndLinks; pub mod batch_schedule_params; pub use self::batch_schedule_params::BatchScheduleParams; pub mod batch_schedule_response; pub use self::batch_schedule_response::BatchScheduleResponse; +pub mod batched_run_log_lines; +pub use self::batched_run_log_lines::BatchedRunLogLines; pub mod cancel_run_response; pub use self::cancel_run_response::CancelRunResponse; pub mod catalog; @@ -36,6 +48,8 @@ pub mod catalog_fact; pub use self::catalog_fact::CatalogFact; pub mod catalog_property; pub use self::catalog_property::CatalogProperty; +pub mod catalog_usage; +pub use self::catalog_usage::CatalogUsage; pub mod claim_device_login_ticket_params; pub use self::claim_device_login_ticket_params::ClaimDeviceLoginTicketParams; pub mod claim_device_login_ticket_response; @@ -150,6 +164,8 @@ pub mod describe_catalog_fact_response; pub use self::describe_catalog_fact_response::DescribeCatalogFactResponse; pub mod describe_catalog_response; pub use self::describe_catalog_response::DescribeCatalogResponse; +pub mod describe_catalog_usage_response; +pub use self::describe_catalog_usage_response::DescribeCatalogUsageResponse; pub mod describe_device_login_session_response; pub use self::describe_device_login_session_response::DescribeDeviceLoginSessionResponse; pub mod describe_email_preferences_body; @@ -278,6 +294,8 @@ pub mod list_webhooks_response; pub use self::list_webhooks_response::ListWebhooksResponse; pub mod organization; pub use self::organization::Organization; +pub mod organization_storage_usage; +pub use self::organization_storage_usage::OrganizationStorageUsage; pub mod organization_usage; pub use self::organization_usage::OrganizationUsage; pub mod pagination; @@ -304,6 +322,8 @@ pub mod resend_team_invitation_response; pub use self::resend_team_invitation_response::ResendTeamInvitationResponse; pub mod run; pub use self::run::Run; +pub mod run_and_links; +pub use self::run_and_links::RunAndLinks; pub mod run_app_initiator_data; pub use self::run_app_initiator_data::RunAppInitiatorData; pub mod run_app_params; @@ -324,6 +344,8 @@ pub mod run_initiator; pub use self::run_initiator::RunInitiator; pub mod run_initiator_details; pub use self::run_initiator_details::RunInitiatorDetails; +pub mod run_links; +pub use self::run_links::RunLinks; pub mod run_log_line; pub use self::run_log_line::RunLogLine; pub mod run_parameter; diff --git a/crates/tower-api/src/models/organization.rs b/crates/tower-api/src/models/organization.rs index 61247d6b..e09184df 100644 --- a/crates/tower-api/src/models/organization.rs +++ b/crates/tower-api/src/models/organization.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/organization_storage_usage.rs b/crates/tower-api/src/models/organization_storage_usage.rs new file mode 100644 index 00000000..aa3a707c --- /dev/null +++ b/crates/tower-api/src/models/organization_storage_usage.rs @@ -0,0 +1,33 @@ +/* + * Tower API + * + * REST API to interact with Tower Services. + * + * The version of the OpenAPI document: v0.11.24 + * Contact: hello@tower.dev + * Generated by: https://openapi-generator.tech + */ +use crate::models; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::{serde_as, DefaultOnNull}; + +#[serde_as] +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct OrganizationStorageUsage { + /// When the total was measured. Null when no measurement is available. + #[serde(rename = "measured_at", deserialize_with = "Option::deserialize")] + pub measured_at: Option, + /// Physical bytes across the organization's Tower-managed catalogs, including Iceberg metadata and not-yet-compacted snapshot history. + #[serde_as(as = "DefaultOnNull")] + #[serde(rename = "total_bytes")] + pub total_bytes: i64, +} + +impl OrganizationStorageUsage { + pub fn new(measured_at: Option, total_bytes: i64) -> OrganizationStorageUsage { + OrganizationStorageUsage { + measured_at, + total_bytes, + } + } +} diff --git a/crates/tower-api/src/models/organization_usage.rs b/crates/tower-api/src/models/organization_usage.rs index 18026159..e4f3f797 100644 --- a/crates/tower-api/src/models/organization_usage.rs +++ b/crates/tower-api/src/models/organization_usage.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ @@ -45,6 +45,10 @@ pub struct OrganizationUsage { #[serde_as(as = "DefaultOnNull")] #[serde(rename = "self_hosted_runners")] pub self_hosted_runners: models::UsageLimit, + /// Current pay-as-you-go Tower-managed storage usage. This is not a plan limit. + #[serde_as(as = "DefaultOnNull")] + #[serde(rename = "storage")] + pub storage: models::OrganizationStorageUsage, } impl OrganizationUsage { @@ -56,6 +60,7 @@ impl OrganizationUsage { members: models::UsageLimit, organization_name: String, self_hosted_runners: models::UsageLimit, + storage: models::OrganizationStorageUsage, ) -> OrganizationUsage { OrganizationUsage { schema: None, @@ -66,6 +71,7 @@ impl OrganizationUsage { members, organization_name, self_hosted_runners, + storage, } } } diff --git a/crates/tower-api/src/models/pagination.rs b/crates/tower-api/src/models/pagination.rs index 9cd2012f..0c4978aa 100644 --- a/crates/tower-api/src/models/pagination.rs +++ b/crates/tower-api/src/models/pagination.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/parameter.rs b/crates/tower-api/src/models/parameter.rs index 0226331c..c51c4bde 100644 --- a/crates/tower-api/src/models/parameter.rs +++ b/crates/tower-api/src/models/parameter.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/plan.rs b/crates/tower-api/src/models/plan.rs index 9daedc53..50370855 100644 --- a/crates/tower-api/src/models/plan.rs +++ b/crates/tower-api/src/models/plan.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/refresh_session_params.rs b/crates/tower-api/src/models/refresh_session_params.rs index 21101fff..33f4d805 100644 --- a/crates/tower-api/src/models/refresh_session_params.rs +++ b/crates/tower-api/src/models/refresh_session_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/refresh_session_response.rs b/crates/tower-api/src/models/refresh_session_response.rs index cc00dc96..c0621a10 100644 --- a/crates/tower-api/src/models/refresh_session_response.rs +++ b/crates/tower-api/src/models/refresh_session_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/regenerate_guest_login_url_params.rs b/crates/tower-api/src/models/regenerate_guest_login_url_params.rs index a512b9c8..3eff969a 100644 --- a/crates/tower-api/src/models/regenerate_guest_login_url_params.rs +++ b/crates/tower-api/src/models/regenerate_guest_login_url_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/regenerate_guest_login_url_response.rs b/crates/tower-api/src/models/regenerate_guest_login_url_response.rs index f0a97ee9..e2bb57fc 100644 --- a/crates/tower-api/src/models/regenerate_guest_login_url_response.rs +++ b/crates/tower-api/src/models/regenerate_guest_login_url_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/remove_team_member_params.rs b/crates/tower-api/src/models/remove_team_member_params.rs index 96d83918..08f47af2 100644 --- a/crates/tower-api/src/models/remove_team_member_params.rs +++ b/crates/tower-api/src/models/remove_team_member_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/remove_team_member_response.rs b/crates/tower-api/src/models/remove_team_member_response.rs index a11492fe..11cdad0d 100644 --- a/crates/tower-api/src/models/remove_team_member_response.rs +++ b/crates/tower-api/src/models/remove_team_member_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/resend_team_invitation_params.rs b/crates/tower-api/src/models/resend_team_invitation_params.rs index 4691e655..54be4733 100644 --- a/crates/tower-api/src/models/resend_team_invitation_params.rs +++ b/crates/tower-api/src/models/resend_team_invitation_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/resend_team_invitation_response.rs b/crates/tower-api/src/models/resend_team_invitation_response.rs index 17313fc5..51d90376 100644 --- a/crates/tower-api/src/models/resend_team_invitation_response.rs +++ b/crates/tower-api/src/models/resend_team_invitation_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/run.rs b/crates/tower-api/src/models/run.rs index 2e38e158..52dfbf57 100644 --- a/crates/tower-api/src/models/run.rs +++ b/crates/tower-api/src/models/run.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/run_and_links.rs b/crates/tower-api/src/models/run_and_links.rs new file mode 100644 index 00000000..7d4c6060 --- /dev/null +++ b/crates/tower-api/src/models/run_and_links.rs @@ -0,0 +1,29 @@ +/* + * Tower API + * + * REST API to interact with Tower Services. + * + * The version of the OpenAPI document: v0.11.24 + * Contact: hello@tower.dev + * Generated by: https://openapi-generator.tech + */ +use crate::models; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::{serde_as, DefaultOnNull}; + +#[serde_as] +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct RunAndLinks { + #[serde_as(as = "DefaultOnNull")] + #[serde(rename = "$links")] + pub dollar_links: models::RunLinks, + #[serde_as(as = "DefaultOnNull")] + #[serde(rename = "run")] + pub run: models::Run, +} + +impl RunAndLinks { + pub fn new(dollar_links: models::RunLinks, run: models::Run) -> RunAndLinks { + RunAndLinks { dollar_links, run } + } +} diff --git a/crates/tower-api/src/models/run_app_initiator_data.rs b/crates/tower-api/src/models/run_app_initiator_data.rs index 37ee9516..c7333f05 100644 --- a/crates/tower-api/src/models/run_app_initiator_data.rs +++ b/crates/tower-api/src/models/run_app_initiator_data.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/run_app_params.rs b/crates/tower-api/src/models/run_app_params.rs index 9917741f..9dcda5c0 100644 --- a/crates/tower-api/src/models/run_app_params.rs +++ b/crates/tower-api/src/models/run_app_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/run_app_response.rs b/crates/tower-api/src/models/run_app_response.rs index 4deee56f..d5b483d5 100644 --- a/crates/tower-api/src/models/run_app_response.rs +++ b/crates/tower-api/src/models/run_app_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/run_attempt.rs b/crates/tower-api/src/models/run_attempt.rs index b1e88712..fcb84aa5 100644 --- a/crates/tower-api/src/models/run_attempt.rs +++ b/crates/tower-api/src/models/run_attempt.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/run_creator.rs b/crates/tower-api/src/models/run_creator.rs index 6139b8cd..f7d04389 100644 --- a/crates/tower-api/src/models/run_creator.rs +++ b/crates/tower-api/src/models/run_creator.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/run_failure_alert.rs b/crates/tower-api/src/models/run_failure_alert.rs index 340b228e..12dd319b 100644 --- a/crates/tower-api/src/models/run_failure_alert.rs +++ b/crates/tower-api/src/models/run_failure_alert.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/run_graph_node.rs b/crates/tower-api/src/models/run_graph_node.rs index 2ccaafc9..ed1f4104 100644 --- a/crates/tower-api/src/models/run_graph_node.rs +++ b/crates/tower-api/src/models/run_graph_node.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/run_graph_run_id.rs b/crates/tower-api/src/models/run_graph_run_id.rs index 60a9dc3a..1ea0c118 100644 --- a/crates/tower-api/src/models/run_graph_run_id.rs +++ b/crates/tower-api/src/models/run_graph_run_id.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/run_initiator.rs b/crates/tower-api/src/models/run_initiator.rs index c859adec..ed7198b3 100644 --- a/crates/tower-api/src/models/run_initiator.rs +++ b/crates/tower-api/src/models/run_initiator.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/run_initiator_details.rs b/crates/tower-api/src/models/run_initiator_details.rs index 5787e17f..5c0ca4e4 100644 --- a/crates/tower-api/src/models/run_initiator_details.rs +++ b/crates/tower-api/src/models/run_initiator_details.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/run_links.rs b/crates/tower-api/src/models/run_links.rs new file mode 100644 index 00000000..d9770407 --- /dev/null +++ b/crates/tower-api/src/models/run_links.rs @@ -0,0 +1,32 @@ +/* + * Tower API + * + * REST API to interact with Tower Services. + * + * The version of the OpenAPI document: v0.11.24 + * Contact: hello@tower.dev + * Generated by: https://openapi-generator.tech + */ +use crate::models; +use serde::{Deserialize, Deserializer, Serialize}; +use serde_with::{serde_as, DefaultOnNull}; + +#[serde_as] +#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +pub struct RunLinks { + /// The number of the next run, if any. + #[serde(rename = "next_number", deserialize_with = "Option::deserialize")] + pub next_number: Option, + /// The number of the previous run, if any. + #[serde(rename = "prev_number", deserialize_with = "Option::deserialize")] + pub prev_number: Option, +} + +impl RunLinks { + pub fn new(next_number: Option, prev_number: Option) -> RunLinks { + RunLinks { + next_number, + prev_number, + } + } +} diff --git a/crates/tower-api/src/models/run_log_line.rs b/crates/tower-api/src/models/run_log_line.rs index 5f85622f..81da108b 100644 --- a/crates/tower-api/src/models/run_log_line.rs +++ b/crates/tower-api/src/models/run_log_line.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/run_parameter.rs b/crates/tower-api/src/models/run_parameter.rs index 92c5e901..faf59f2b 100644 --- a/crates/tower-api/src/models/run_parameter.rs +++ b/crates/tower-api/src/models/run_parameter.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/run_results.rs b/crates/tower-api/src/models/run_results.rs index bb2d2185..807d4064 100644 --- a/crates/tower-api/src/models/run_results.rs +++ b/crates/tower-api/src/models/run_results.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/run_retry_policy.rs b/crates/tower-api/src/models/run_retry_policy.rs index fb9beaa9..7e3a59ee 100644 --- a/crates/tower-api/src/models/run_retry_policy.rs +++ b/crates/tower-api/src/models/run_retry_policy.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/run_run_initiator_details.rs b/crates/tower-api/src/models/run_run_initiator_details.rs index 8cc3e977..423b821a 100644 --- a/crates/tower-api/src/models/run_run_initiator_details.rs +++ b/crates/tower-api/src/models/run_run_initiator_details.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/run_statistics.rs b/crates/tower-api/src/models/run_statistics.rs index 9e3daa52..71232767 100644 --- a/crates/tower-api/src/models/run_statistics.rs +++ b/crates/tower-api/src/models/run_statistics.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/run_timeseries_point.rs b/crates/tower-api/src/models/run_timeseries_point.rs index 38cb0a6f..b4423f86 100644 --- a/crates/tower-api/src/models/run_timeseries_point.rs +++ b/crates/tower-api/src/models/run_timeseries_point.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/runner.rs b/crates/tower-api/src/models/runner.rs index d7d50001..921a8ac7 100644 --- a/crates/tower-api/src/models/runner.rs +++ b/crates/tower-api/src/models/runner.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/runner_credentials.rs b/crates/tower-api/src/models/runner_credentials.rs index d6a356b5..1b8c3933 100644 --- a/crates/tower-api/src/models/runner_credentials.rs +++ b/crates/tower-api/src/models/runner_credentials.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/schedule.rs b/crates/tower-api/src/models/schedule.rs index bfe69267..c4ad3d8a 100644 --- a/crates/tower-api/src/models/schedule.rs +++ b/crates/tower-api/src/models/schedule.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/schedule_owner.rs b/crates/tower-api/src/models/schedule_owner.rs index fa51d221..f803f2aa 100644 --- a/crates/tower-api/src/models/schedule_owner.rs +++ b/crates/tower-api/src/models/schedule_owner.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/schedule_run_initiator_details.rs b/crates/tower-api/src/models/schedule_run_initiator_details.rs index 31177899..90192fe6 100644 --- a/crates/tower-api/src/models/schedule_run_initiator_details.rs +++ b/crates/tower-api/src/models/schedule_run_initiator_details.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/search_runs_response.rs b/crates/tower-api/src/models/search_runs_response.rs index 46525224..2594dc7b 100644 --- a/crates/tower-api/src/models/search_runs_response.rs +++ b/crates/tower-api/src/models/search_runs_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/secret.rs b/crates/tower-api/src/models/secret.rs index 875456c3..3c7df533 100644 --- a/crates/tower-api/src/models/secret.rs +++ b/crates/tower-api/src/models/secret.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/server_sent_events_inner.rs b/crates/tower-api/src/models/server_sent_events_inner.rs index 500613a8..0d6cd701 100644 --- a/crates/tower-api/src/models/server_sent_events_inner.rs +++ b/crates/tower-api/src/models/server_sent_events_inner.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/server_sent_events_inner_1.rs b/crates/tower-api/src/models/server_sent_events_inner_1.rs index 3a685e7c..b1e8bf94 100644 --- a/crates/tower-api/src/models/server_sent_events_inner_1.rs +++ b/crates/tower-api/src/models/server_sent_events_inner_1.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/server_sent_events_inner_2.rs b/crates/tower-api/src/models/server_sent_events_inner_2.rs index acd3ee24..ee1d1970 100644 --- a/crates/tower-api/src/models/server_sent_events_inner_2.rs +++ b/crates/tower-api/src/models/server_sent_events_inner_2.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/service_account.rs b/crates/tower-api/src/models/service_account.rs index af725e1e..acf89177 100644 --- a/crates/tower-api/src/models/service_account.rs +++ b/crates/tower-api/src/models/service_account.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/service_account_creator.rs b/crates/tower-api/src/models/service_account_creator.rs index 6b932206..810dc15e 100644 --- a/crates/tower-api/src/models/service_account_creator.rs +++ b/crates/tower-api/src/models/service_account_creator.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/session.rs b/crates/tower-api/src/models/session.rs index e50b4821..5e9f4936 100644 --- a/crates/tower-api/src/models/session.rs +++ b/crates/tower-api/src/models/session.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/shoulder_tap.rs b/crates/tower-api/src/models/shoulder_tap.rs index a1402155..3046f672 100644 --- a/crates/tower-api/src/models/shoulder_tap.rs +++ b/crates/tower-api/src/models/shoulder_tap.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/sse_warning.rs b/crates/tower-api/src/models/sse_warning.rs index 93724481..cc7621fc 100644 --- a/crates/tower-api/src/models/sse_warning.rs +++ b/crates/tower-api/src/models/sse_warning.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/statistics_settings.rs b/crates/tower-api/src/models/statistics_settings.rs index 1b928471..6fcb104b 100644 --- a/crates/tower-api/src/models/statistics_settings.rs +++ b/crates/tower-api/src/models/statistics_settings.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/tag_filter.rs b/crates/tower-api/src/models/tag_filter.rs index f398dd19..39d01d1f 100644 --- a/crates/tower-api/src/models/tag_filter.rs +++ b/crates/tower-api/src/models/tag_filter.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/team.rs b/crates/tower-api/src/models/team.rs index 1a3378ae..f4e63e6c 100644 --- a/crates/tower-api/src/models/team.rs +++ b/crates/tower-api/src/models/team.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/team_invitation.rs b/crates/tower-api/src/models/team_invitation.rs index cb2d6174..5168ea52 100644 --- a/crates/tower-api/src/models/team_invitation.rs +++ b/crates/tower-api/src/models/team_invitation.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/team_membership.rs b/crates/tower-api/src/models/team_membership.rs index 54703232..bac06171 100644 --- a/crates/tower-api/src/models/team_membership.rs +++ b/crates/tower-api/src/models/team_membership.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/test_webhook_response.rs b/crates/tower-api/src/models/test_webhook_response.rs index fd43fd86..dc66ad30 100644 --- a/crates/tower-api/src/models/test_webhook_response.rs +++ b/crates/tower-api/src/models/test_webhook_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/token.rs b/crates/tower-api/src/models/token.rs index e6619048..d1532840 100644 --- a/crates/tower-api/src/models/token.rs +++ b/crates/tower-api/src/models/token.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ @@ -18,6 +18,7 @@ pub struct Token { #[serde_as(as = "DefaultOnNull")] #[serde(rename = "access_token")] pub access_token: String, + /// This property is deprecated. Use access_token instead. #[serde_as(as = "DefaultOnNull")] #[serde(rename = "jwt")] pub jwt: String, diff --git a/crates/tower-api/src/models/update_account_params.rs b/crates/tower-api/src/models/update_account_params.rs index 531f2c4d..d56bb90b 100644 --- a/crates/tower-api/src/models/update_account_params.rs +++ b/crates/tower-api/src/models/update_account_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ @@ -52,6 +52,10 @@ pub enum ExecutionRegion { UsWest2, #[serde(rename = "eu-west-1")] EuWest1, + #[serde(rename = "ap-northeast-1")] + ApNortheast1, + #[serde(rename = "ap-southeast-2")] + ApSoutheast2, } impl Default for ExecutionRegion { @@ -71,9 +75,18 @@ impl<'de> Deserialize<'de> for ExecutionRegion { "us-east-1" => Ok(Self::UsEast1), "us-west-2" => Ok(Self::UsWest2), "eu-west-1" => Ok(Self::EuWest1), + "ap-northeast-1" => Ok(Self::ApNortheast1), + "ap-southeast-2" => Ok(Self::ApSoutheast2), _ => Err(serde::de::Error::unknown_variant( &s, - &["eu-central-1", "us-east-1", "us-west-2", "eu-west-1"], + &[ + "eu-central-1", + "us-east-1", + "us-west-2", + "eu-west-1", + "ap-northeast-1", + "ap-southeast-2", + ], )), } } diff --git a/crates/tower-api/src/models/update_account_response.rs b/crates/tower-api/src/models/update_account_response.rs index d1f93fa3..e5bed001 100644 --- a/crates/tower-api/src/models/update_account_response.rs +++ b/crates/tower-api/src/models/update_account_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_app_environment_params.rs b/crates/tower-api/src/models/update_app_environment_params.rs index 15576bad..71faf506 100644 --- a/crates/tower-api/src/models/update_app_environment_params.rs +++ b/crates/tower-api/src/models/update_app_environment_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_app_environment_response.rs b/crates/tower-api/src/models/update_app_environment_response.rs index 56f4df95..6f1df29d 100644 --- a/crates/tower-api/src/models/update_app_environment_response.rs +++ b/crates/tower-api/src/models/update_app_environment_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_app_params.rs b/crates/tower-api/src/models/update_app_params.rs index 0097d767..ea65ef5a 100644 --- a/crates/tower-api/src/models/update_app_params.rs +++ b/crates/tower-api/src/models/update_app_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_app_response.rs b/crates/tower-api/src/models/update_app_response.rs index b7cdab5f..f2af1038 100644 --- a/crates/tower-api/src/models/update_app_response.rs +++ b/crates/tower-api/src/models/update_app_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_catalog_fact_body.rs b/crates/tower-api/src/models/update_catalog_fact_body.rs index 70942a3b..9c8fe818 100644 --- a/crates/tower-api/src/models/update_catalog_fact_body.rs +++ b/crates/tower-api/src/models/update_catalog_fact_body.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_catalog_fact_response.rs b/crates/tower-api/src/models/update_catalog_fact_response.rs index a880eafd..b496893c 100644 --- a/crates/tower-api/src/models/update_catalog_fact_response.rs +++ b/crates/tower-api/src/models/update_catalog_fact_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_catalog_params.rs b/crates/tower-api/src/models/update_catalog_params.rs index 98c75a2c..09bbfc2f 100644 --- a/crates/tower-api/src/models/update_catalog_params.rs +++ b/crates/tower-api/src/models/update_catalog_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ @@ -17,7 +17,7 @@ pub struct UpdateCatalogParams { /// A URL to the JSON Schema for this object. #[serde(rename = "$schema", skip_serializing_if = "Option::is_none")] pub schema: Option, - /// New environment for the catalog + /// The environment containing the catalog to update. Catalogs cannot be moved between environments. #[serde_as(as = "DefaultOnNull")] #[serde(rename = "environment")] pub environment: String, diff --git a/crates/tower-api/src/models/update_catalog_response.rs b/crates/tower-api/src/models/update_catalog_response.rs index 012a5405..6e08c504 100644 --- a/crates/tower-api/src/models/update_catalog_response.rs +++ b/crates/tower-api/src/models/update_catalog_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_email_preferences_body.rs b/crates/tower-api/src/models/update_email_preferences_body.rs index 0110b72d..5eaea2e7 100644 --- a/crates/tower-api/src/models/update_email_preferences_body.rs +++ b/crates/tower-api/src/models/update_email_preferences_body.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_environment_params.rs b/crates/tower-api/src/models/update_environment_params.rs index 3dbfaab2..2026fa92 100644 --- a/crates/tower-api/src/models/update_environment_params.rs +++ b/crates/tower-api/src/models/update_environment_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_environment_response.rs b/crates/tower-api/src/models/update_environment_response.rs index 77acbdee..69d0d1d9 100644 --- a/crates/tower-api/src/models/update_environment_response.rs +++ b/crates/tower-api/src/models/update_environment_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_my_team_invitation_params.rs b/crates/tower-api/src/models/update_my_team_invitation_params.rs index 4d410c0e..f1360788 100644 --- a/crates/tower-api/src/models/update_my_team_invitation_params.rs +++ b/crates/tower-api/src/models/update_my_team_invitation_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_my_team_invitation_response.rs b/crates/tower-api/src/models/update_my_team_invitation_response.rs index 7b89b844..31673486 100644 --- a/crates/tower-api/src/models/update_my_team_invitation_response.rs +++ b/crates/tower-api/src/models/update_my_team_invitation_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_organization_params.rs b/crates/tower-api/src/models/update_organization_params.rs index a7928d5b..0f868428 100644 --- a/crates/tower-api/src/models/update_organization_params.rs +++ b/crates/tower-api/src/models/update_organization_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_organization_response.rs b/crates/tower-api/src/models/update_organization_response.rs index 8d3b9342..2f281f99 100644 --- a/crates/tower-api/src/models/update_organization_response.rs +++ b/crates/tower-api/src/models/update_organization_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_plan_params.rs b/crates/tower-api/src/models/update_plan_params.rs index 8d5453c6..dc4ce1c1 100644 --- a/crates/tower-api/src/models/update_plan_params.rs +++ b/crates/tower-api/src/models/update_plan_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_plan_response.rs b/crates/tower-api/src/models/update_plan_response.rs index ac46aa70..78b087b0 100644 --- a/crates/tower-api/src/models/update_plan_response.rs +++ b/crates/tower-api/src/models/update_plan_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_schedule_params.rs b/crates/tower-api/src/models/update_schedule_params.rs index 353fee57..7a610ec8 100644 --- a/crates/tower-api/src/models/update_schedule_params.rs +++ b/crates/tower-api/src/models/update_schedule_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_schedule_response.rs b/crates/tower-api/src/models/update_schedule_response.rs index 25c07220..f47681fc 100644 --- a/crates/tower-api/src/models/update_schedule_response.rs +++ b/crates/tower-api/src/models/update_schedule_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_secret_params.rs b/crates/tower-api/src/models/update_secret_params.rs index 24022a3a..f26d7067 100644 --- a/crates/tower-api/src/models/update_secret_params.rs +++ b/crates/tower-api/src/models/update_secret_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_secret_response.rs b/crates/tower-api/src/models/update_secret_response.rs index 6fe7b48c..7aed911b 100644 --- a/crates/tower-api/src/models/update_secret_response.rs +++ b/crates/tower-api/src/models/update_secret_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_service_account_params.rs b/crates/tower-api/src/models/update_service_account_params.rs index e6a748ee..2b0c7a49 100644 --- a/crates/tower-api/src/models/update_service_account_params.rs +++ b/crates/tower-api/src/models/update_service_account_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_service_account_response.rs b/crates/tower-api/src/models/update_service_account_response.rs index 2ae9c535..80937d5c 100644 --- a/crates/tower-api/src/models/update_service_account_response.rs +++ b/crates/tower-api/src/models/update_service_account_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_team_member_params.rs b/crates/tower-api/src/models/update_team_member_params.rs index bec1cf7e..50279bc0 100644 --- a/crates/tower-api/src/models/update_team_member_params.rs +++ b/crates/tower-api/src/models/update_team_member_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_team_member_response.rs b/crates/tower-api/src/models/update_team_member_response.rs index c8afc1b3..89bb3f49 100644 --- a/crates/tower-api/src/models/update_team_member_response.rs +++ b/crates/tower-api/src/models/update_team_member_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_team_params.rs b/crates/tower-api/src/models/update_team_params.rs index 9a91486e..d859a994 100644 --- a/crates/tower-api/src/models/update_team_params.rs +++ b/crates/tower-api/src/models/update_team_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ @@ -45,6 +45,10 @@ pub enum ExecutionRegion { UsWest2, #[serde(rename = "eu-west-1")] EuWest1, + #[serde(rename = "ap-northeast-1")] + ApNortheast1, + #[serde(rename = "ap-southeast-2")] + ApSoutheast2, } impl Default for ExecutionRegion { @@ -64,9 +68,18 @@ impl<'de> Deserialize<'de> for ExecutionRegion { "us-east-1" => Ok(Self::UsEast1), "us-west-2" => Ok(Self::UsWest2), "eu-west-1" => Ok(Self::EuWest1), + "ap-northeast-1" => Ok(Self::ApNortheast1), + "ap-southeast-2" => Ok(Self::ApSoutheast2), _ => Err(serde::de::Error::unknown_variant( &s, - &["eu-central-1", "us-east-1", "us-west-2", "eu-west-1"], + &[ + "eu-central-1", + "us-east-1", + "us-west-2", + "eu-west-1", + "ap-northeast-1", + "ap-southeast-2", + ], )), } } diff --git a/crates/tower-api/src/models/update_team_response.rs b/crates/tower-api/src/models/update_team_response.rs index 1d3606a8..322a9419 100644 --- a/crates/tower-api/src/models/update_team_response.rs +++ b/crates/tower-api/src/models/update_team_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_user_params.rs b/crates/tower-api/src/models/update_user_params.rs index 2f2c68e1..1afecc79 100644 --- a/crates/tower-api/src/models/update_user_params.rs +++ b/crates/tower-api/src/models/update_user_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_user_response.rs b/crates/tower-api/src/models/update_user_response.rs index 051691c7..f9292943 100644 --- a/crates/tower-api/src/models/update_user_response.rs +++ b/crates/tower-api/src/models/update_user_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_webhook_params.rs b/crates/tower-api/src/models/update_webhook_params.rs index 1bb54639..c0bd91d8 100644 --- a/crates/tower-api/src/models/update_webhook_params.rs +++ b/crates/tower-api/src/models/update_webhook_params.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/update_webhook_response.rs b/crates/tower-api/src/models/update_webhook_response.rs index 1a75fd49..6a951c65 100644 --- a/crates/tower-api/src/models/update_webhook_response.rs +++ b/crates/tower-api/src/models/update_webhook_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/usage_limit.rs b/crates/tower-api/src/models/usage_limit.rs index 9726cf29..5ad7921c 100644 --- a/crates/tower-api/src/models/usage_limit.rs +++ b/crates/tower-api/src/models/usage_limit.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/usage_metric_time_series_point.rs b/crates/tower-api/src/models/usage_metric_time_series_point.rs index 6c4bdef2..c56ed810 100644 --- a/crates/tower-api/src/models/usage_metric_time_series_point.rs +++ b/crates/tower-api/src/models/usage_metric_time_series_point.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/user.rs b/crates/tower-api/src/models/user.rs index e96c7257..ae2407e8 100644 --- a/crates/tower-api/src/models/user.rs +++ b/crates/tower-api/src/models/user.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/vend_catalog_credentials_body.rs b/crates/tower-api/src/models/vend_catalog_credentials_body.rs index 6c54274a..254b5dff 100644 --- a/crates/tower-api/src/models/vend_catalog_credentials_body.rs +++ b/crates/tower-api/src/models/vend_catalog_credentials_body.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-api/src/models/vend_catalog_credentials_response.rs b/crates/tower-api/src/models/vend_catalog_credentials_response.rs index 461dd693..bf5860b7 100644 --- a/crates/tower-api/src/models/vend_catalog_credentials_response.rs +++ b/crates/tower-api/src/models/vend_catalog_credentials_response.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ @@ -20,13 +20,21 @@ pub struct VendCatalogCredentialsResponse { #[serde_as(as = "DefaultOnNull")] #[serde(rename = "credentials")] pub credentials: models::CatalogCredentials, + /// Environment containing the catalog definition. + #[serde_as(as = "DefaultOnNull")] + #[serde(rename = "environment")] + pub environment: String, } impl VendCatalogCredentialsResponse { - pub fn new(credentials: models::CatalogCredentials) -> VendCatalogCredentialsResponse { + pub fn new( + credentials: models::CatalogCredentials, + environment: String, + ) -> VendCatalogCredentialsResponse { VendCatalogCredentialsResponse { schema: None, credentials, + environment, } } } diff --git a/crates/tower-api/src/models/webhook.rs b/crates/tower-api/src/models/webhook.rs index 3f6031bd..b3915d38 100644 --- a/crates/tower-api/src/models/webhook.rs +++ b/crates/tower-api/src/models/webhook.rs @@ -3,7 +3,7 @@ * * REST API to interact with Tower Services. * - * The version of the OpenAPI document: v0.11.17 + * The version of the OpenAPI document: v0.11.24 * Contact: hello@tower.dev * Generated by: https://openapi-generator.tech */ diff --git a/crates/tower-cmd/src/api.rs b/crates/tower-cmd/src/api.rs index e6b8f4c2..b88c656c 100644 --- a/crates/tower-cmd/src/api.rs +++ b/crates/tower-cmd/src/api.rs @@ -1476,6 +1476,7 @@ pub async fn update_schedule( parameters: run_parameters, ..Default::default() }, + x_tower_request_number: None, }; unwrap_api_response(tower_api::apis::default_api::update_schedule( diff --git a/src/tower/tower_api_client/api/default/batch_describe_runs.py b/src/tower/tower_api_client/api/default/batch_describe_runs.py new file mode 100644 index 00000000..4d966901 --- /dev/null +++ b/src/tower/tower_api_client/api/default/batch_describe_runs.py @@ -0,0 +1,170 @@ +from http import HTTPStatus +from typing import Any + +import httpx + +from ...client import AuthenticatedClient, Client +from ...models.batch_describe_runs_params import BatchDescribeRunsParams +from ...models.batch_describe_runs_response import BatchDescribeRunsResponse +from ...models.error_model import ErrorModel +from ...types import Response + + +def _get_kwargs( + *, + body: list[BatchDescribeRunsParams], +) -> dict[str, Any]: + headers: dict[str, Any] = {} + + _kwargs: dict[str, Any] = { + "method": "post", + "url": "/batch/describe-runs", + } + + _kwargs["json"] = [] + for body_item_data in body: + body_item = body_item_data.to_dict() + _kwargs["json"].append(body_item) + + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> BatchDescribeRunsResponse | ErrorModel: + if response.status_code == 200: + response_200 = BatchDescribeRunsResponse.from_dict(response.json()) + + return response_200 + + response_default = ErrorModel.from_dict(response.json()) + + return response_default + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[BatchDescribeRunsResponse | ErrorModel]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + *, + client: AuthenticatedClient, + body: list[BatchDescribeRunsParams], +) -> Response[BatchDescribeRunsResponse | ErrorModel]: + """Batch describe runs + + Describe multiple runs in a single request. + + Args: + body (list[BatchDescribeRunsParams]): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[BatchDescribeRunsResponse | ErrorModel] + """ + + kwargs = _get_kwargs( + body=body, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + *, + client: AuthenticatedClient, + body: list[BatchDescribeRunsParams], +) -> BatchDescribeRunsResponse | ErrorModel | None: + """Batch describe runs + + Describe multiple runs in a single request. + + Args: + body (list[BatchDescribeRunsParams]): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + BatchDescribeRunsResponse | ErrorModel + """ + + return sync_detailed( + client=client, + body=body, + ).parsed + + +async def asyncio_detailed( + *, + client: AuthenticatedClient, + body: list[BatchDescribeRunsParams], +) -> Response[BatchDescribeRunsResponse | ErrorModel]: + """Batch describe runs + + Describe multiple runs in a single request. + + Args: + body (list[BatchDescribeRunsParams]): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[BatchDescribeRunsResponse | ErrorModel] + """ + + kwargs = _get_kwargs( + body=body, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + *, + client: AuthenticatedClient, + body: list[BatchDescribeRunsParams], +) -> BatchDescribeRunsResponse | ErrorModel | None: + """Batch describe runs + + Describe multiple runs in a single request. + + Args: + body (list[BatchDescribeRunsParams]): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + BatchDescribeRunsResponse | ErrorModel + """ + + return ( + await asyncio_detailed( + client=client, + body=body, + ) + ).parsed diff --git a/src/tower/tower_api_client/api/default/batch_describe_runs_logs.py b/src/tower/tower_api_client/api/default/batch_describe_runs_logs.py new file mode 100644 index 00000000..3096693e --- /dev/null +++ b/src/tower/tower_api_client/api/default/batch_describe_runs_logs.py @@ -0,0 +1,175 @@ +from http import HTTPStatus +from typing import Any + +import httpx + +from ...client import AuthenticatedClient, Client +from ...models.batch_describe_runs_logs_params import BatchDescribeRunsLogsParams +from ...models.batched_run_log_lines import BatchedRunLogLines +from ...models.error_model import ErrorModel +from ...types import Response + + +def _get_kwargs( + *, + body: list[BatchDescribeRunsLogsParams], +) -> dict[str, Any]: + headers: dict[str, Any] = {} + + _kwargs: dict[str, Any] = { + "method": "post", + "url": "/batch/describe-runs-logs", + } + + _kwargs["json"] = [] + for body_item_data in body: + body_item = body_item_data.to_dict() + _kwargs["json"].append(body_item) + + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ErrorModel | list[BatchedRunLogLines]: + if response.status_code == 200: + response_200 = [] + _response_200 = response.json() + for response_200_item_data in _response_200: + response_200_item = BatchedRunLogLines.from_dict(response_200_item_data) + + response_200.append(response_200_item) + + return response_200 + + response_default = ErrorModel.from_dict(response.json()) + + return response_default + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ErrorModel | list[BatchedRunLogLines]]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + *, + client: AuthenticatedClient, + body: list[BatchDescribeRunsLogsParams], +) -> Response[ErrorModel | list[BatchedRunLogLines]]: + """Batch describe runs logs + + Describe multiple run logs in a single request. + + Args: + body (list[BatchDescribeRunsLogsParams]): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[ErrorModel | list[BatchedRunLogLines]] + """ + + kwargs = _get_kwargs( + body=body, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + *, + client: AuthenticatedClient, + body: list[BatchDescribeRunsLogsParams], +) -> ErrorModel | list[BatchedRunLogLines] | None: + """Batch describe runs logs + + Describe multiple run logs in a single request. + + Args: + body (list[BatchDescribeRunsLogsParams]): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + ErrorModel | list[BatchedRunLogLines] + """ + + return sync_detailed( + client=client, + body=body, + ).parsed + + +async def asyncio_detailed( + *, + client: AuthenticatedClient, + body: list[BatchDescribeRunsLogsParams], +) -> Response[ErrorModel | list[BatchedRunLogLines]]: + """Batch describe runs logs + + Describe multiple run logs in a single request. + + Args: + body (list[BatchDescribeRunsLogsParams]): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[ErrorModel | list[BatchedRunLogLines]] + """ + + kwargs = _get_kwargs( + body=body, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + *, + client: AuthenticatedClient, + body: list[BatchDescribeRunsLogsParams], +) -> ErrorModel | list[BatchedRunLogLines] | None: + """Batch describe runs logs + + Describe multiple run logs in a single request. + + Args: + body (list[BatchDescribeRunsLogsParams]): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + ErrorModel | list[BatchedRunLogLines] + """ + + return ( + await asyncio_detailed( + client=client, + body=body, + ) + ).parsed diff --git a/src/tower/tower_api_client/api/default/create_catalog.py b/src/tower/tower_api_client/api/default/create_catalog.py index 37914243..1d7f212b 100644 --- a/src/tower/tower_api_client/api/default/create_catalog.py +++ b/src/tower/tower_api_client/api/default/create_catalog.py @@ -37,6 +37,36 @@ def _parse_response( return response_200 + if response.status_code == 400: + response_400 = ErrorModel.from_dict(response.json()) + + return response_400 + + if response.status_code == 401: + response_401 = ErrorModel.from_dict(response.json()) + + return response_401 + + if response.status_code == 403: + response_403 = ErrorModel.from_dict(response.json()) + + return response_403 + + if response.status_code == 409: + response_409 = ErrorModel.from_dict(response.json()) + + return response_409 + + if response.status_code == 422: + response_422 = ErrorModel.from_dict(response.json()) + + return response_422 + + if response.status_code == 500: + response_500 = ErrorModel.from_dict(response.json()) + + return response_500 + response_default = ErrorModel.from_dict(response.json()) return response_default diff --git a/src/tower/tower_api_client/api/default/delete_catalog.py b/src/tower/tower_api_client/api/default/delete_catalog.py index 3a967033..21b4d1eb 100644 --- a/src/tower/tower_api_client/api/default/delete_catalog.py +++ b/src/tower/tower_api_client/api/default/delete_catalog.py @@ -40,6 +40,36 @@ def _parse_response( return response_204 + if response.status_code == 401: + response_401 = ErrorModel.from_dict(response.json()) + + return response_401 + + if response.status_code == 403: + response_403 = ErrorModel.from_dict(response.json()) + + return response_403 + + if response.status_code == 404: + response_404 = ErrorModel.from_dict(response.json()) + + return response_404 + + if response.status_code == 409: + response_409 = ErrorModel.from_dict(response.json()) + + return response_409 + + if response.status_code == 422: + response_422 = ErrorModel.from_dict(response.json()) + + return response_422 + + if response.status_code == 500: + response_500 = ErrorModel.from_dict(response.json()) + + return response_500 + response_default = ErrorModel.from_dict(response.json()) return response_default diff --git a/src/tower/tower_api_client/api/default/delete_catalog_fact.py b/src/tower/tower_api_client/api/default/delete_catalog_fact.py new file mode 100644 index 00000000..0a571f93 --- /dev/null +++ b/src/tower/tower_api_client/api/default/delete_catalog_fact.py @@ -0,0 +1,198 @@ +from http import HTTPStatus +from typing import Any, cast +from urllib.parse import quote + +import httpx + +from ...client import AuthenticatedClient, Client +from ...models.error_model import ErrorModel +from ...types import UNSET, Response, Unset + + +def _get_kwargs( + catalog: str, + name: str, + *, + environment: str | Unset = "default", +) -> dict[str, Any]: + params: dict[str, Any] = {} + + params["environment"] = environment + + params = {k: v for k, v in params.items() if v is not UNSET and v is not None} + + _kwargs: dict[str, Any] = { + "method": "delete", + "url": "/catalogs/{catalog}/facts/{name}".format( + catalog=quote(str(catalog), safe=""), + name=quote(str(name), safe=""), + ), + "params": params, + } + + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | ErrorModel: + if response.status_code == 204: + response_204 = cast(Any, None) + return response_204 + + response_default = ErrorModel.from_dict(response.json()) + + return response_default + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | ErrorModel]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + catalog: str, + name: str, + *, + client: AuthenticatedClient, + environment: str | Unset = "default", +) -> Response[Any | ErrorModel]: + """Delete a catalog fact + + Deletes a semantic metadata fact addressed by its name within a catalog. + + Args: + catalog (str): The name of the catalog. + name (str): The name of the fact. + environment (str | Unset): Environment containing the catalog definition to delete from. + This operation does not fall back to default. Default: 'default'. + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[Any | ErrorModel] + """ + + kwargs = _get_kwargs( + catalog=catalog, + name=name, + environment=environment, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + catalog: str, + name: str, + *, + client: AuthenticatedClient, + environment: str | Unset = "default", +) -> Any | ErrorModel | None: + """Delete a catalog fact + + Deletes a semantic metadata fact addressed by its name within a catalog. + + Args: + catalog (str): The name of the catalog. + name (str): The name of the fact. + environment (str | Unset): Environment containing the catalog definition to delete from. + This operation does not fall back to default. Default: 'default'. + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ErrorModel + """ + + return sync_detailed( + catalog=catalog, + name=name, + client=client, + environment=environment, + ).parsed + + +async def asyncio_detailed( + catalog: str, + name: str, + *, + client: AuthenticatedClient, + environment: str | Unset = "default", +) -> Response[Any | ErrorModel]: + """Delete a catalog fact + + Deletes a semantic metadata fact addressed by its name within a catalog. + + Args: + catalog (str): The name of the catalog. + name (str): The name of the fact. + environment (str | Unset): Environment containing the catalog definition to delete from. + This operation does not fall back to default. Default: 'default'. + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[Any | ErrorModel] + """ + + kwargs = _get_kwargs( + catalog=catalog, + name=name, + environment=environment, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + catalog: str, + name: str, + *, + client: AuthenticatedClient, + environment: str | Unset = "default", +) -> Any | ErrorModel | None: + """Delete a catalog fact + + Deletes a semantic metadata fact addressed by its name within a catalog. + + Args: + catalog (str): The name of the catalog. + name (str): The name of the fact. + environment (str | Unset): Environment containing the catalog definition to delete from. + This operation does not fall back to default. Default: 'default'. + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | ErrorModel + """ + + return ( + await asyncio_detailed( + catalog=catalog, + name=name, + client=client, + environment=environment, + ) + ).parsed diff --git a/src/tower/tower_api_client/api/default/delete_environment.py b/src/tower/tower_api_client/api/default/delete_environment.py index b3263192..a6f4326c 100644 --- a/src/tower/tower_api_client/api/default/delete_environment.py +++ b/src/tower/tower_api_client/api/default/delete_environment.py @@ -31,6 +31,36 @@ def _parse_response( return response_200 + if response.status_code == 401: + response_401 = ErrorModel.from_dict(response.json()) + + return response_401 + + if response.status_code == 403: + response_403 = ErrorModel.from_dict(response.json()) + + return response_403 + + if response.status_code == 404: + response_404 = ErrorModel.from_dict(response.json()) + + return response_404 + + if response.status_code == 409: + response_409 = ErrorModel.from_dict(response.json()) + + return response_409 + + if response.status_code == 422: + response_422 = ErrorModel.from_dict(response.json()) + + return response_422 + + if response.status_code == 500: + response_500 = ErrorModel.from_dict(response.json()) + + return response_500 + response_default = ErrorModel.from_dict(response.json()) return response_default diff --git a/src/tower/tower_api_client/api/default/deploy_app.py b/src/tower/tower_api_client/api/default/deploy_app.py index 47824719..4aa38cf0 100644 --- a/src/tower/tower_api_client/api/default/deploy_app.py +++ b/src/tower/tower_api_client/api/default/deploy_app.py @@ -20,6 +20,7 @@ def _get_kwargs( all_environments: bool | Unset = False, x_tower_checksum_sha256: str | Unset = UNSET, x_tower_idempotency_key: str | Unset = UNSET, + x_tower_request_number: int | Unset = UNSET, content_length: int | Unset = UNSET, ) -> dict[str, Any]: headers: dict[str, Any] = {} @@ -29,6 +30,9 @@ def _get_kwargs( if not isinstance(x_tower_idempotency_key, Unset): headers["X-Tower-Idempotency-Key"] = x_tower_idempotency_key + if not isinstance(x_tower_request_number, Unset): + headers["X-Tower-Request-Number"] = str(x_tower_request_number) + if not isinstance(content_length, Unset): headers["Content-Length"] = str(content_length) @@ -74,6 +78,11 @@ def _parse_response( return response_400 + if response.status_code == 412: + response_412 = ErrorModel.from_dict(response.json()) + + return response_412 + if response.status_code == 422: response_422 = ErrorModel.from_dict(response.json()) @@ -110,6 +119,7 @@ def sync_detailed( all_environments: bool | Unset = False, x_tower_checksum_sha256: str | Unset = UNSET, x_tower_idempotency_key: str | Unset = UNSET, + x_tower_request_number: int | Unset = UNSET, content_length: int | Unset = UNSET, ) -> Response[DeployAppResponse | ErrorModel]: """Deploy app @@ -128,6 +138,9 @@ def sync_detailed( CI build ID). If a prior deploy for this app supplied the same value, the server reuses that AppVersion instead of creating a new one — letting consecutive deploys to different environments share a single version when the source hasn't changed. + x_tower_request_number (int | Unset): Optional account-scoped monotonic sequence token + used to reject out-of-order writes. See the fence documentation for the acceptance window + and retry behavior. content_length (int | Unset): Size of the uploaded bundle in bytes. body (DeployAppJsonBody): Example: {'source_uri': 'https://github.com/tower/tower- examples/tree/main/01-hello-world'}. @@ -149,6 +162,7 @@ def sync_detailed( all_environments=all_environments, x_tower_checksum_sha256=x_tower_checksum_sha256, x_tower_idempotency_key=x_tower_idempotency_key, + x_tower_request_number=x_tower_request_number, content_length=content_length, ) @@ -168,6 +182,7 @@ def sync( all_environments: bool | Unset = False, x_tower_checksum_sha256: str | Unset = UNSET, x_tower_idempotency_key: str | Unset = UNSET, + x_tower_request_number: int | Unset = UNSET, content_length: int | Unset = UNSET, ) -> DeployAppResponse | ErrorModel | None: """Deploy app @@ -186,6 +201,9 @@ def sync( CI build ID). If a prior deploy for this app supplied the same value, the server reuses that AppVersion instead of creating a new one — letting consecutive deploys to different environments share a single version when the source hasn't changed. + x_tower_request_number (int | Unset): Optional account-scoped monotonic sequence token + used to reject out-of-order writes. See the fence documentation for the acceptance window + and retry behavior. content_length (int | Unset): Size of the uploaded bundle in bytes. body (DeployAppJsonBody): Example: {'source_uri': 'https://github.com/tower/tower- examples/tree/main/01-hello-world'}. @@ -208,6 +226,7 @@ def sync( all_environments=all_environments, x_tower_checksum_sha256=x_tower_checksum_sha256, x_tower_idempotency_key=x_tower_idempotency_key, + x_tower_request_number=x_tower_request_number, content_length=content_length, ).parsed @@ -221,6 +240,7 @@ async def asyncio_detailed( all_environments: bool | Unset = False, x_tower_checksum_sha256: str | Unset = UNSET, x_tower_idempotency_key: str | Unset = UNSET, + x_tower_request_number: int | Unset = UNSET, content_length: int | Unset = UNSET, ) -> Response[DeployAppResponse | ErrorModel]: """Deploy app @@ -239,6 +259,9 @@ async def asyncio_detailed( CI build ID). If a prior deploy for this app supplied the same value, the server reuses that AppVersion instead of creating a new one — letting consecutive deploys to different environments share a single version when the source hasn't changed. + x_tower_request_number (int | Unset): Optional account-scoped monotonic sequence token + used to reject out-of-order writes. See the fence documentation for the acceptance window + and retry behavior. content_length (int | Unset): Size of the uploaded bundle in bytes. body (DeployAppJsonBody): Example: {'source_uri': 'https://github.com/tower/tower- examples/tree/main/01-hello-world'}. @@ -260,6 +283,7 @@ async def asyncio_detailed( all_environments=all_environments, x_tower_checksum_sha256=x_tower_checksum_sha256, x_tower_idempotency_key=x_tower_idempotency_key, + x_tower_request_number=x_tower_request_number, content_length=content_length, ) @@ -277,6 +301,7 @@ async def asyncio( all_environments: bool | Unset = False, x_tower_checksum_sha256: str | Unset = UNSET, x_tower_idempotency_key: str | Unset = UNSET, + x_tower_request_number: int | Unset = UNSET, content_length: int | Unset = UNSET, ) -> DeployAppResponse | ErrorModel | None: """Deploy app @@ -295,6 +320,9 @@ async def asyncio( CI build ID). If a prior deploy for this app supplied the same value, the server reuses that AppVersion instead of creating a new one — letting consecutive deploys to different environments share a single version when the source hasn't changed. + x_tower_request_number (int | Unset): Optional account-scoped monotonic sequence token + used to reject out-of-order writes. See the fence documentation for the acceptance window + and retry behavior. content_length (int | Unset): Size of the uploaded bundle in bytes. body (DeployAppJsonBody): Example: {'source_uri': 'https://github.com/tower/tower- examples/tree/main/01-hello-world'}. @@ -318,6 +346,7 @@ async def asyncio( all_environments=all_environments, x_tower_checksum_sha256=x_tower_checksum_sha256, x_tower_idempotency_key=x_tower_idempotency_key, + x_tower_request_number=x_tower_request_number, content_length=content_length, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/describe_catalog.py b/src/tower/tower_api_client/api/default/describe_catalog.py index 9f990bb3..38505d7a 100644 --- a/src/tower/tower_api_client/api/default/describe_catalog.py +++ b/src/tower/tower_api_client/api/default/describe_catalog.py @@ -64,11 +64,14 @@ def sync_detailed( ) -> Response[DescribeCatalogResponse | ErrorModel]: """Describe catalog - Returns details for a specific catalog, including its property names and previews. + Returns non-secret details for a catalog in the selected environment. When that environment has no + same-named catalog, the catalog from default is returned instead. The response's catalog environment + identifies where its definition is stored. Args: name (str): The name of the catalog. - environment (str | Unset): The environment of the catalog. Default: 'default'. + environment (str | Unset): Environment whose catalog to return. When it has no same-named + catalog, the catalog from default is returned instead. Default: 'default'. Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -98,11 +101,14 @@ def sync( ) -> DescribeCatalogResponse | ErrorModel | None: """Describe catalog - Returns details for a specific catalog, including its property names and previews. + Returns non-secret details for a catalog in the selected environment. When that environment has no + same-named catalog, the catalog from default is returned instead. The response's catalog environment + identifies where its definition is stored. Args: name (str): The name of the catalog. - environment (str | Unset): The environment of the catalog. Default: 'default'. + environment (str | Unset): Environment whose catalog to return. When it has no same-named + catalog, the catalog from default is returned instead. Default: 'default'. Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -127,11 +133,14 @@ async def asyncio_detailed( ) -> Response[DescribeCatalogResponse | ErrorModel]: """Describe catalog - Returns details for a specific catalog, including its property names and previews. + Returns non-secret details for a catalog in the selected environment. When that environment has no + same-named catalog, the catalog from default is returned instead. The response's catalog environment + identifies where its definition is stored. Args: name (str): The name of the catalog. - environment (str | Unset): The environment of the catalog. Default: 'default'. + environment (str | Unset): Environment whose catalog to return. When it has no same-named + catalog, the catalog from default is returned instead. Default: 'default'. Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -159,11 +168,14 @@ async def asyncio( ) -> DescribeCatalogResponse | ErrorModel | None: """Describe catalog - Returns details for a specific catalog, including its property names and previews. + Returns non-secret details for a catalog in the selected environment. When that environment has no + same-named catalog, the catalog from default is returned instead. The response's catalog environment + identifies where its definition is stored. Args: name (str): The name of the catalog. - environment (str | Unset): The environment of the catalog. Default: 'default'. + environment (str | Unset): Environment whose catalog to return. When it has no same-named + catalog, the catalog from default is returned instead. Default: 'default'. Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. diff --git a/src/tower/tower_api_client/api/default/describe_catalog_fact.py b/src/tower/tower_api_client/api/default/describe_catalog_fact.py new file mode 100644 index 00000000..f7e5326b --- /dev/null +++ b/src/tower/tower_api_client/api/default/describe_catalog_fact.py @@ -0,0 +1,204 @@ +from http import HTTPStatus +from typing import Any +from urllib.parse import quote + +import httpx + +from ...client import AuthenticatedClient, Client +from ...models.describe_catalog_fact_response import DescribeCatalogFactResponse +from ...models.error_model import ErrorModel +from ...types import UNSET, Response, Unset + + +def _get_kwargs( + catalog: str, + name: str, + *, + environment: str | Unset = "default", +) -> dict[str, Any]: + params: dict[str, Any] = {} + + params["environment"] = environment + + params = {k: v for k, v in params.items() if v is not UNSET and v is not None} + + _kwargs: dict[str, Any] = { + "method": "get", + "url": "/catalogs/{catalog}/facts/{name}".format( + catalog=quote(str(catalog), safe=""), + name=quote(str(name), safe=""), + ), + "params": params, + } + + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> DescribeCatalogFactResponse | ErrorModel: + if response.status_code == 200: + response_200 = DescribeCatalogFactResponse.from_dict(response.json()) + + return response_200 + + response_default = ErrorModel.from_dict(response.json()) + + return response_default + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[DescribeCatalogFactResponse | ErrorModel]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + catalog: str, + name: str, + *, + client: AuthenticatedClient, + environment: str | Unset = "default", +) -> Response[DescribeCatalogFactResponse | ErrorModel]: + """Describe a catalog fact + + Returns a single semantic metadata fact addressed by its name within a catalog. + + Args: + catalog (str): The name of the catalog. + name (str): The name of the fact. + environment (str | Unset): The environment of the catalog. Note that if a catalog with the + requested name doesn't exist in the requested environment, the fact from the catalog with + the same name in the default environment will be returned. Default: 'default'. + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[DescribeCatalogFactResponse | ErrorModel] + """ + + kwargs = _get_kwargs( + catalog=catalog, + name=name, + environment=environment, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + catalog: str, + name: str, + *, + client: AuthenticatedClient, + environment: str | Unset = "default", +) -> DescribeCatalogFactResponse | ErrorModel | None: + """Describe a catalog fact + + Returns a single semantic metadata fact addressed by its name within a catalog. + + Args: + catalog (str): The name of the catalog. + name (str): The name of the fact. + environment (str | Unset): The environment of the catalog. Note that if a catalog with the + requested name doesn't exist in the requested environment, the fact from the catalog with + the same name in the default environment will be returned. Default: 'default'. + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + DescribeCatalogFactResponse | ErrorModel + """ + + return sync_detailed( + catalog=catalog, + name=name, + client=client, + environment=environment, + ).parsed + + +async def asyncio_detailed( + catalog: str, + name: str, + *, + client: AuthenticatedClient, + environment: str | Unset = "default", +) -> Response[DescribeCatalogFactResponse | ErrorModel]: + """Describe a catalog fact + + Returns a single semantic metadata fact addressed by its name within a catalog. + + Args: + catalog (str): The name of the catalog. + name (str): The name of the fact. + environment (str | Unset): The environment of the catalog. Note that if a catalog with the + requested name doesn't exist in the requested environment, the fact from the catalog with + the same name in the default environment will be returned. Default: 'default'. + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[DescribeCatalogFactResponse | ErrorModel] + """ + + kwargs = _get_kwargs( + catalog=catalog, + name=name, + environment=environment, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + catalog: str, + name: str, + *, + client: AuthenticatedClient, + environment: str | Unset = "default", +) -> DescribeCatalogFactResponse | ErrorModel | None: + """Describe a catalog fact + + Returns a single semantic metadata fact addressed by its name within a catalog. + + Args: + catalog (str): The name of the catalog. + name (str): The name of the fact. + environment (str | Unset): The environment of the catalog. Note that if a catalog with the + requested name doesn't exist in the requested environment, the fact from the catalog with + the same name in the default environment will be returned. Default: 'default'. + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + DescribeCatalogFactResponse | ErrorModel + """ + + return ( + await asyncio_detailed( + catalog=catalog, + name=name, + client=client, + environment=environment, + ) + ).parsed diff --git a/src/tower/tower_api_client/api/default/describe_catalog_usage.py b/src/tower/tower_api_client/api/default/describe_catalog_usage.py new file mode 100644 index 00000000..b2a216c5 --- /dev/null +++ b/src/tower/tower_api_client/api/default/describe_catalog_usage.py @@ -0,0 +1,216 @@ +from http import HTTPStatus +from typing import Any +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.describe_catalog_usage_response import DescribeCatalogUsageResponse +from ...models.error_model import ErrorModel +from ...types import UNSET, Response, Unset + + +def _get_kwargs( + name: str, + *, + environment: str | Unset = "default", +) -> dict[str, Any]: + params: dict[str, Any] = {} + + params["environment"] = environment + + params = {k: v for k, v in params.items() if v is not UNSET and v is not None} + + _kwargs: dict[str, Any] = { + "method": "get", + "url": "/catalogs/{name}/usage".format( + name=quote(str(name), safe=""), + ), + "params": params, + } + + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> DescribeCatalogUsageResponse | ErrorModel | None: + if response.status_code == 200: + response_200 = DescribeCatalogUsageResponse.from_dict(response.json()) + + return response_200 + + if response.status_code == 401: + response_401 = ErrorModel.from_dict(response.json()) + + return response_401 + + if response.status_code == 404: + response_404 = ErrorModel.from_dict(response.json()) + + return response_404 + + if response.status_code == 422: + response_422 = ErrorModel.from_dict(response.json()) + + return response_422 + + if response.status_code == 500: + response_500 = ErrorModel.from_dict(response.json()) + + return response_500 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[DescribeCatalogUsageResponse | ErrorModel]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + name: str, + *, + client: AuthenticatedClient, + environment: str | Unset = "default", +) -> Response[DescribeCatalogUsageResponse | ErrorModel]: + """Describe catalog usage + + Returns physical bytes stored by one Tower-managed catalog, including Iceberg metadata and not-yet- + compacted snapshot history. Measurements are cached and may be temporarily unavailable; measured_at + is null when no measurement exists. BYO and S3 Tables catalogs are not metered. + + Args: + name (str): The name of the catalog. + environment (str | Unset): Environment whose catalog usage to return. When it has no same- + named catalog, usage for the catalog from default is returned instead. Default: 'default'. + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[DescribeCatalogUsageResponse | ErrorModel] + """ + + kwargs = _get_kwargs( + name=name, + environment=environment, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + name: str, + *, + client: AuthenticatedClient, + environment: str | Unset = "default", +) -> DescribeCatalogUsageResponse | ErrorModel | None: + """Describe catalog usage + + Returns physical bytes stored by one Tower-managed catalog, including Iceberg metadata and not-yet- + compacted snapshot history. Measurements are cached and may be temporarily unavailable; measured_at + is null when no measurement exists. BYO and S3 Tables catalogs are not metered. + + Args: + name (str): The name of the catalog. + environment (str | Unset): Environment whose catalog usage to return. When it has no same- + named catalog, usage for the catalog from default is returned instead. Default: 'default'. + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + DescribeCatalogUsageResponse | ErrorModel + """ + + return sync_detailed( + name=name, + client=client, + environment=environment, + ).parsed + + +async def asyncio_detailed( + name: str, + *, + client: AuthenticatedClient, + environment: str | Unset = "default", +) -> Response[DescribeCatalogUsageResponse | ErrorModel]: + """Describe catalog usage + + Returns physical bytes stored by one Tower-managed catalog, including Iceberg metadata and not-yet- + compacted snapshot history. Measurements are cached and may be temporarily unavailable; measured_at + is null when no measurement exists. BYO and S3 Tables catalogs are not metered. + + Args: + name (str): The name of the catalog. + environment (str | Unset): Environment whose catalog usage to return. When it has no same- + named catalog, usage for the catalog from default is returned instead. Default: 'default'. + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[DescribeCatalogUsageResponse | ErrorModel] + """ + + kwargs = _get_kwargs( + name=name, + environment=environment, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + name: str, + *, + client: AuthenticatedClient, + environment: str | Unset = "default", +) -> DescribeCatalogUsageResponse | ErrorModel | None: + """Describe catalog usage + + Returns physical bytes stored by one Tower-managed catalog, including Iceberg metadata and not-yet- + compacted snapshot history. Measurements are cached and may be temporarily unavailable; measured_at + is null when no measurement exists. BYO and S3 Tables catalogs are not metered. + + Args: + name (str): The name of the catalog. + environment (str | Unset): Environment whose catalog usage to return. When it has no same- + named catalog, usage for the catalog from default is returned instead. Default: 'default'. + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + DescribeCatalogUsageResponse | ErrorModel + """ + + return ( + await asyncio_detailed( + name=name, + client=client, + environment=environment, + ) + ).parsed diff --git a/src/tower/tower_api_client/api/default/describe_run_logs.py b/src/tower/tower_api_client/api/default/describe_run_logs.py index 0d205fdf..c373d299 100644 --- a/src/tower/tower_api_client/api/default/describe_run_logs.py +++ b/src/tower/tower_api_client/api/default/describe_run_logs.py @@ -16,6 +16,8 @@ def _get_kwargs( seq: int, *, start_at: datetime.datetime | Unset = UNSET, + head: int | Unset = UNSET, + tail: int | Unset = UNSET, ) -> dict[str, Any]: params: dict[str, Any] = {} @@ -24,6 +26,10 @@ def _get_kwargs( json_start_at = start_at.isoformat() params["start_at"] = json_start_at + params["head"] = head + + params["tail"] = tail + params = {k: v for k, v in params.items() if v is not UNSET and v is not None} _kwargs: dict[str, Any] = { @@ -68,6 +74,8 @@ def sync_detailed( *, client: AuthenticatedClient, start_at: datetime.datetime | Unset = UNSET, + head: int | Unset = UNSET, + tail: int | Unset = UNSET, ) -> Response[DescribeRunLogsResponse | ErrorModel]: """Describe run logs @@ -77,6 +85,8 @@ def sync_detailed( name (str): The name of the app to get logs for. seq (int): The sequence number of the run to get logs for. start_at (datetime.datetime | Unset): Fetch logs from this timestamp onwards (inclusive). + head (int | Unset): Return only the first N log lines. Cannot be combined with tail. + tail (int | Unset): Return only the last N log lines. Cannot be combined with head. Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -90,6 +100,8 @@ def sync_detailed( name=name, seq=seq, start_at=start_at, + head=head, + tail=tail, ) response = client.get_httpx_client().request( @@ -105,6 +117,8 @@ def sync( *, client: AuthenticatedClient, start_at: datetime.datetime | Unset = UNSET, + head: int | Unset = UNSET, + tail: int | Unset = UNSET, ) -> DescribeRunLogsResponse | ErrorModel | None: """Describe run logs @@ -114,6 +128,8 @@ def sync( name (str): The name of the app to get logs for. seq (int): The sequence number of the run to get logs for. start_at (datetime.datetime | Unset): Fetch logs from this timestamp onwards (inclusive). + head (int | Unset): Return only the first N log lines. Cannot be combined with tail. + tail (int | Unset): Return only the last N log lines. Cannot be combined with head. Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -128,6 +144,8 @@ def sync( seq=seq, client=client, start_at=start_at, + head=head, + tail=tail, ).parsed @@ -137,6 +155,8 @@ async def asyncio_detailed( *, client: AuthenticatedClient, start_at: datetime.datetime | Unset = UNSET, + head: int | Unset = UNSET, + tail: int | Unset = UNSET, ) -> Response[DescribeRunLogsResponse | ErrorModel]: """Describe run logs @@ -146,6 +166,8 @@ async def asyncio_detailed( name (str): The name of the app to get logs for. seq (int): The sequence number of the run to get logs for. start_at (datetime.datetime | Unset): Fetch logs from this timestamp onwards (inclusive). + head (int | Unset): Return only the first N log lines. Cannot be combined with tail. + tail (int | Unset): Return only the last N log lines. Cannot be combined with head. Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -159,6 +181,8 @@ async def asyncio_detailed( name=name, seq=seq, start_at=start_at, + head=head, + tail=tail, ) response = await client.get_async_httpx_client().request(**kwargs) @@ -172,6 +196,8 @@ async def asyncio( *, client: AuthenticatedClient, start_at: datetime.datetime | Unset = UNSET, + head: int | Unset = UNSET, + tail: int | Unset = UNSET, ) -> DescribeRunLogsResponse | ErrorModel | None: """Describe run logs @@ -181,6 +207,8 @@ async def asyncio( name (str): The name of the app to get logs for. seq (int): The sequence number of the run to get logs for. start_at (datetime.datetime | Unset): Fetch logs from this timestamp onwards (inclusive). + head (int | Unset): Return only the first N log lines. Cannot be combined with tail. + tail (int | Unset): Return only the last N log lines. Cannot be combined with head. Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -196,5 +224,7 @@ async def asyncio( seq=seq, client=client, start_at=start_at, + head=head, + tail=tail, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/export_catalogs.py b/src/tower/tower_api_client/api/default/export_catalogs.py index 093e5f30..e040ac1c 100644 --- a/src/tower/tower_api_client/api/default/export_catalogs.py +++ b/src/tower/tower_api_client/api/default/export_catalogs.py @@ -3,6 +3,7 @@ import httpx +from ... import errors from ...client import AuthenticatedClient, Client from ...models.error_model import ErrorModel from ...models.export_catalogs_params import ExportCatalogsParams @@ -31,15 +32,46 @@ def _get_kwargs( def _parse_response( *, client: AuthenticatedClient | Client, response: httpx.Response -) -> ErrorModel | ExportCatalogsResponse: +) -> ErrorModel | ExportCatalogsResponse | None: if response.status_code == 200: response_200 = ExportCatalogsResponse.from_dict(response.json()) return response_200 - response_default = ErrorModel.from_dict(response.json()) + if response.status_code == 400: + response_400 = ErrorModel.from_dict(response.json()) + + return response_400 + + if response.status_code == 401: + response_401 = ErrorModel.from_dict(response.json()) + + return response_401 + + if response.status_code == 403: + response_403 = ErrorModel.from_dict(response.json()) + + return response_403 + + if response.status_code == 409: + response_409 = ErrorModel.from_dict(response.json()) + + return response_409 + + if response.status_code == 422: + response_422 = ErrorModel.from_dict(response.json()) + + return response_422 + + if response.status_code == 500: + response_500 = ErrorModel.from_dict(response.json()) + + return response_500 - return response_default + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None def _build_response( diff --git a/src/tower/tower_api_client/api/default/list_apps.py b/src/tower/tower_api_client/api/default/list_apps.py index c71e0f10..ffe82f04 100644 --- a/src/tower/tower_api_client/api/default/list_apps.py +++ b/src/tower/tower_api_client/api/default/list_apps.py @@ -15,6 +15,7 @@ def _get_kwargs( *, page: int | Unset = 1, page_size: int | Unset = 20, + tag_filter: str | Unset = UNSET, query: str | Unset = UNSET, num_runs: int | Unset = 20, sort: ListAppsSort | Unset = ListAppsSort.CREATED_AT, @@ -27,6 +28,8 @@ def _get_kwargs( params["page_size"] = page_size + params["tag_filter"] = tag_filter + params["query"] = query params["num_runs"] = num_runs @@ -85,6 +88,7 @@ def sync_detailed( client: AuthenticatedClient, page: int | Unset = 1, page_size: int | Unset = 20, + tag_filter: str | Unset = UNSET, query: str | Unset = UNSET, num_runs: int | Unset = 20, sort: ListAppsSort | Unset = ListAppsSort.CREATED_AT, @@ -98,6 +102,9 @@ def sync_detailed( Args: page (int | Unset): The page number to fetch. Default: 1. page_size (int | Unset): The number of records to fetch on each page. Default: 20. + tag_filter (str | Unset): The tag query to filter apps by. Provide a serialized TagFilter + as the value for the parameter. Example: + tag_filter={"op":"eq","name":"foo","value":"bar"}. query (str | Unset): The search query to filter apps by. num_runs (int | Unset): Number of recent runs to fetch (-1 for all runs, defaults to 20) Default: 20. @@ -117,6 +124,7 @@ def sync_detailed( kwargs = _get_kwargs( page=page, page_size=page_size, + tag_filter=tag_filter, query=query, num_runs=num_runs, sort=sort, @@ -136,6 +144,7 @@ def sync( client: AuthenticatedClient, page: int | Unset = 1, page_size: int | Unset = 20, + tag_filter: str | Unset = UNSET, query: str | Unset = UNSET, num_runs: int | Unset = 20, sort: ListAppsSort | Unset = ListAppsSort.CREATED_AT, @@ -149,6 +158,9 @@ def sync( Args: page (int | Unset): The page number to fetch. Default: 1. page_size (int | Unset): The number of records to fetch on each page. Default: 20. + tag_filter (str | Unset): The tag query to filter apps by. Provide a serialized TagFilter + as the value for the parameter. Example: + tag_filter={"op":"eq","name":"foo","value":"bar"}. query (str | Unset): The search query to filter apps by. num_runs (int | Unset): Number of recent runs to fetch (-1 for all runs, defaults to 20) Default: 20. @@ -169,6 +181,7 @@ def sync( client=client, page=page, page_size=page_size, + tag_filter=tag_filter, query=query, num_runs=num_runs, sort=sort, @@ -182,6 +195,7 @@ async def asyncio_detailed( client: AuthenticatedClient, page: int | Unset = 1, page_size: int | Unset = 20, + tag_filter: str | Unset = UNSET, query: str | Unset = UNSET, num_runs: int | Unset = 20, sort: ListAppsSort | Unset = ListAppsSort.CREATED_AT, @@ -195,6 +209,9 @@ async def asyncio_detailed( Args: page (int | Unset): The page number to fetch. Default: 1. page_size (int | Unset): The number of records to fetch on each page. Default: 20. + tag_filter (str | Unset): The tag query to filter apps by. Provide a serialized TagFilter + as the value for the parameter. Example: + tag_filter={"op":"eq","name":"foo","value":"bar"}. query (str | Unset): The search query to filter apps by. num_runs (int | Unset): Number of recent runs to fetch (-1 for all runs, defaults to 20) Default: 20. @@ -214,6 +231,7 @@ async def asyncio_detailed( kwargs = _get_kwargs( page=page, page_size=page_size, + tag_filter=tag_filter, query=query, num_runs=num_runs, sort=sort, @@ -231,6 +249,7 @@ async def asyncio( client: AuthenticatedClient, page: int | Unset = 1, page_size: int | Unset = 20, + tag_filter: str | Unset = UNSET, query: str | Unset = UNSET, num_runs: int | Unset = 20, sort: ListAppsSort | Unset = ListAppsSort.CREATED_AT, @@ -244,6 +263,9 @@ async def asyncio( Args: page (int | Unset): The page number to fetch. Default: 1. page_size (int | Unset): The number of records to fetch on each page. Default: 20. + tag_filter (str | Unset): The tag query to filter apps by. Provide a serialized TagFilter + as the value for the parameter. Example: + tag_filter={"op":"eq","name":"foo","value":"bar"}. query (str | Unset): The search query to filter apps by. num_runs (int | Unset): Number of recent runs to fetch (-1 for all runs, defaults to 20) Default: 20. @@ -265,6 +287,7 @@ async def asyncio( client=client, page=page, page_size=page_size, + tag_filter=tag_filter, query=query, num_runs=num_runs, sort=sort, diff --git a/src/tower/tower_api_client/api/default/list_catalog_facts.py b/src/tower/tower_api_client/api/default/list_catalog_facts.py new file mode 100644 index 00000000..d3d452ca --- /dev/null +++ b/src/tower/tower_api_client/api/default/list_catalog_facts.py @@ -0,0 +1,232 @@ +from http import HTTPStatus +from typing import Any +from urllib.parse import quote + +import httpx + +from ...client import AuthenticatedClient, Client +from ...models.error_model import ErrorModel +from ...models.list_catalog_facts_response import ListCatalogFactsResponse +from ...types import UNSET, Response, Unset + + +def _get_kwargs( + catalog: str, + *, + environment: str | Unset = "default", + scope: str | Unset = UNSET, + object_: str | Unset = UNSET, +) -> dict[str, Any]: + params: dict[str, Any] = {} + + params["environment"] = environment + + params["scope"] = scope + + params["object"] = object_ + + params = {k: v for k, v in params.items() if v is not UNSET and v is not None} + + _kwargs: dict[str, Any] = { + "method": "get", + "url": "/catalogs/{catalog}/facts".format( + catalog=quote(str(catalog), safe=""), + ), + "params": params, + } + + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ErrorModel | ListCatalogFactsResponse: + if response.status_code == 200: + response_200 = ListCatalogFactsResponse.from_dict(response.json()) + + return response_200 + + response_default = ErrorModel.from_dict(response.json()) + + return response_default + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ErrorModel | ListCatalogFactsResponse]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + catalog: str, + *, + client: AuthenticatedClient, + environment: str | Unset = "default", + scope: str | Unset = UNSET, + object_: str | Unset = UNSET, +) -> Response[ErrorModel | ListCatalogFactsResponse]: + """List catalog facts + + Lists the semantic metadata facts attached to a catalog, optionally filtered by scope and/or object + path. + + Args: + catalog (str): The name of the catalog. + environment (str | Unset): The environment of the catalog. Note that if a catalog with the + requested name doesn't exist in the requested environment, facts for the catalog with the + same name from the default environment will be returned. Default: 'default'. + scope (str | Unset): Filter facts by scope. When omitted, facts of every scope are + returned. + object_ (str | Unset): Filter facts by object path (exact match). When omitted, facts + about any object are returned. + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[ErrorModel | ListCatalogFactsResponse] + """ + + kwargs = _get_kwargs( + catalog=catalog, + environment=environment, + scope=scope, + object_=object_, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + catalog: str, + *, + client: AuthenticatedClient, + environment: str | Unset = "default", + scope: str | Unset = UNSET, + object_: str | Unset = UNSET, +) -> ErrorModel | ListCatalogFactsResponse | None: + """List catalog facts + + Lists the semantic metadata facts attached to a catalog, optionally filtered by scope and/or object + path. + + Args: + catalog (str): The name of the catalog. + environment (str | Unset): The environment of the catalog. Note that if a catalog with the + requested name doesn't exist in the requested environment, facts for the catalog with the + same name from the default environment will be returned. Default: 'default'. + scope (str | Unset): Filter facts by scope. When omitted, facts of every scope are + returned. + object_ (str | Unset): Filter facts by object path (exact match). When omitted, facts + about any object are returned. + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + ErrorModel | ListCatalogFactsResponse + """ + + return sync_detailed( + catalog=catalog, + client=client, + environment=environment, + scope=scope, + object_=object_, + ).parsed + + +async def asyncio_detailed( + catalog: str, + *, + client: AuthenticatedClient, + environment: str | Unset = "default", + scope: str | Unset = UNSET, + object_: str | Unset = UNSET, +) -> Response[ErrorModel | ListCatalogFactsResponse]: + """List catalog facts + + Lists the semantic metadata facts attached to a catalog, optionally filtered by scope and/or object + path. + + Args: + catalog (str): The name of the catalog. + environment (str | Unset): The environment of the catalog. Note that if a catalog with the + requested name doesn't exist in the requested environment, facts for the catalog with the + same name from the default environment will be returned. Default: 'default'. + scope (str | Unset): Filter facts by scope. When omitted, facts of every scope are + returned. + object_ (str | Unset): Filter facts by object path (exact match). When omitted, facts + about any object are returned. + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[ErrorModel | ListCatalogFactsResponse] + """ + + kwargs = _get_kwargs( + catalog=catalog, + environment=environment, + scope=scope, + object_=object_, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + catalog: str, + *, + client: AuthenticatedClient, + environment: str | Unset = "default", + scope: str | Unset = UNSET, + object_: str | Unset = UNSET, +) -> ErrorModel | ListCatalogFactsResponse | None: + """List catalog facts + + Lists the semantic metadata facts attached to a catalog, optionally filtered by scope and/or object + path. + + Args: + catalog (str): The name of the catalog. + environment (str | Unset): The environment of the catalog. Note that if a catalog with the + requested name doesn't exist in the requested environment, facts for the catalog with the + same name from the default environment will be returned. Default: 'default'. + scope (str | Unset): Filter facts by scope. When omitted, facts of every scope are + returned. + object_ (str | Unset): Filter facts by object path (exact match). When omitted, facts + about any object are returned. + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + ErrorModel | ListCatalogFactsResponse + """ + + return ( + await asyncio_detailed( + catalog=catalog, + client=client, + environment=environment, + scope=scope, + object_=object_, + ) + ).parsed diff --git a/src/tower/tower_api_client/api/default/list_catalogs.py b/src/tower/tower_api_client/api/default/list_catalogs.py index 84b69bdb..f881eeef 100644 --- a/src/tower/tower_api_client/api/default/list_catalogs.py +++ b/src/tower/tower_api_client/api/default/list_catalogs.py @@ -80,10 +80,11 @@ def sync_detailed( Args: page (int | Unset): The page number to fetch. Default: 1. page_size (int | Unset): The number of records to fetch on each page. Default: 20. - environment (str | Unset): The environment to filter by. When omitted, catalogs across all - environments are returned. - all_ (bool | Unset): Whether to fetch all catalogs across all environments or only for the - current environment. + environment (str | Unset): The environment of the catalogs. Catalogs from the default + environment will be returned for names that don't exist in the requested environment. When + omitted, catalogs across all environments are returned. + all_ (bool | Unset): Whether to return catalogs across all environments, without applying + default-environment inheritance or deduplication. type_ (str | Unset): Filter catalogs by type, e.g. "tower-catalog". When omitted, all catalog types are returned. @@ -126,10 +127,11 @@ def sync( Args: page (int | Unset): The page number to fetch. Default: 1. page_size (int | Unset): The number of records to fetch on each page. Default: 20. - environment (str | Unset): The environment to filter by. When omitted, catalogs across all - environments are returned. - all_ (bool | Unset): Whether to fetch all catalogs across all environments or only for the - current environment. + environment (str | Unset): The environment of the catalogs. Catalogs from the default + environment will be returned for names that don't exist in the requested environment. When + omitted, catalogs across all environments are returned. + all_ (bool | Unset): Whether to return catalogs across all environments, without applying + default-environment inheritance or deduplication. type_ (str | Unset): Filter catalogs by type, e.g. "tower-catalog". When omitted, all catalog types are returned. @@ -167,10 +169,11 @@ async def asyncio_detailed( Args: page (int | Unset): The page number to fetch. Default: 1. page_size (int | Unset): The number of records to fetch on each page. Default: 20. - environment (str | Unset): The environment to filter by. When omitted, catalogs across all - environments are returned. - all_ (bool | Unset): Whether to fetch all catalogs across all environments or only for the - current environment. + environment (str | Unset): The environment of the catalogs. Catalogs from the default + environment will be returned for names that don't exist in the requested environment. When + omitted, catalogs across all environments are returned. + all_ (bool | Unset): Whether to return catalogs across all environments, without applying + default-environment inheritance or deduplication. type_ (str | Unset): Filter catalogs by type, e.g. "tower-catalog". When omitted, all catalog types are returned. @@ -211,10 +214,11 @@ async def asyncio( Args: page (int | Unset): The page number to fetch. Default: 1. page_size (int | Unset): The number of records to fetch on each page. Default: 20. - environment (str | Unset): The environment to filter by. When omitted, catalogs across all - environments are returned. - all_ (bool | Unset): Whether to fetch all catalogs across all environments or only for the - current environment. + environment (str | Unset): The environment of the catalogs. Catalogs from the default + environment will be returned for names that don't exist in the requested environment. When + omitted, catalogs across all environments are returned. + all_ (bool | Unset): Whether to return catalogs across all environments, without applying + default-environment inheritance or deduplication. type_ (str | Unset): Filter catalogs by type, e.g. "tower-catalog". When omitted, all catalog types are returned. diff --git a/src/tower/tower_api_client/api/default/update_app.py b/src/tower/tower_api_client/api/default/update_app.py index 6e68bd0c..ed8917ac 100644 --- a/src/tower/tower_api_client/api/default/update_app.py +++ b/src/tower/tower_api_client/api/default/update_app.py @@ -4,19 +4,23 @@ import httpx +from ... import errors from ...client import AuthenticatedClient, Client from ...models.error_model import ErrorModel from ...models.update_app_params import UpdateAppParams from ...models.update_app_response import UpdateAppResponse -from ...types import Response +from ...types import UNSET, Response, Unset def _get_kwargs( name: str, *, body: UpdateAppParams, + x_tower_request_number: int | Unset = UNSET, ) -> dict[str, Any]: headers: dict[str, Any] = {} + if not isinstance(x_tower_request_number, Unset): + headers["X-Tower-Request-Number"] = str(x_tower_request_number) _kwargs: dict[str, Any] = { "method": "put", @@ -35,15 +39,31 @@ def _get_kwargs( def _parse_response( *, client: AuthenticatedClient | Client, response: httpx.Response -) -> ErrorModel | UpdateAppResponse: +) -> ErrorModel | UpdateAppResponse | None: if response.status_code == 200: response_200 = UpdateAppResponse.from_dict(response.json()) return response_200 - response_default = ErrorModel.from_dict(response.json()) + if response.status_code == 412: + response_412 = ErrorModel.from_dict(response.json()) + + return response_412 + + if response.status_code == 422: + response_422 = ErrorModel.from_dict(response.json()) + + return response_422 + + if response.status_code == 500: + response_500 = ErrorModel.from_dict(response.json()) + + return response_500 - return response_default + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None def _build_response( @@ -62,6 +82,7 @@ def sync_detailed( *, client: AuthenticatedClient, body: UpdateAppParams, + x_tower_request_number: int | Unset = UNSET, ) -> Response[ErrorModel | UpdateAppResponse]: """Update app @@ -69,6 +90,9 @@ def sync_detailed( Args: name (str): The name of the App to update. + x_tower_request_number (int | Unset): Optional account-scoped monotonic sequence token + used to reject out-of-order writes. See the fence documentation for the acceptance window + and retry behavior. body (UpdateAppParams): Raises: @@ -82,6 +106,7 @@ def sync_detailed( kwargs = _get_kwargs( name=name, body=body, + x_tower_request_number=x_tower_request_number, ) response = client.get_httpx_client().request( @@ -96,6 +121,7 @@ def sync( *, client: AuthenticatedClient, body: UpdateAppParams, + x_tower_request_number: int | Unset = UNSET, ) -> ErrorModel | UpdateAppResponse | None: """Update app @@ -103,6 +129,9 @@ def sync( Args: name (str): The name of the App to update. + x_tower_request_number (int | Unset): Optional account-scoped monotonic sequence token + used to reject out-of-order writes. See the fence documentation for the acceptance window + and retry behavior. body (UpdateAppParams): Raises: @@ -117,6 +146,7 @@ def sync( name=name, client=client, body=body, + x_tower_request_number=x_tower_request_number, ).parsed @@ -125,6 +155,7 @@ async def asyncio_detailed( *, client: AuthenticatedClient, body: UpdateAppParams, + x_tower_request_number: int | Unset = UNSET, ) -> Response[ErrorModel | UpdateAppResponse]: """Update app @@ -132,6 +163,9 @@ async def asyncio_detailed( Args: name (str): The name of the App to update. + x_tower_request_number (int | Unset): Optional account-scoped monotonic sequence token + used to reject out-of-order writes. See the fence documentation for the acceptance window + and retry behavior. body (UpdateAppParams): Raises: @@ -145,6 +179,7 @@ async def asyncio_detailed( kwargs = _get_kwargs( name=name, body=body, + x_tower_request_number=x_tower_request_number, ) response = await client.get_async_httpx_client().request(**kwargs) @@ -157,6 +192,7 @@ async def asyncio( *, client: AuthenticatedClient, body: UpdateAppParams, + x_tower_request_number: int | Unset = UNSET, ) -> ErrorModel | UpdateAppResponse | None: """Update app @@ -164,6 +200,9 @@ async def asyncio( Args: name (str): The name of the App to update. + x_tower_request_number (int | Unset): Optional account-scoped monotonic sequence token + used to reject out-of-order writes. See the fence documentation for the acceptance window + and retry behavior. body (UpdateAppParams): Raises: @@ -179,5 +218,6 @@ async def asyncio( name=name, client=client, body=body, + x_tower_request_number=x_tower_request_number, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/update_catalog.py b/src/tower/tower_api_client/api/default/update_catalog.py index 446a800c..136bdb82 100644 --- a/src/tower/tower_api_client/api/default/update_catalog.py +++ b/src/tower/tower_api_client/api/default/update_catalog.py @@ -41,6 +41,31 @@ def _parse_response( return response_200 + if response.status_code == 401: + response_401 = ErrorModel.from_dict(response.json()) + + return response_401 + + if response.status_code == 403: + response_403 = ErrorModel.from_dict(response.json()) + + return response_403 + + if response.status_code == 404: + response_404 = ErrorModel.from_dict(response.json()) + + return response_404 + + if response.status_code == 422: + response_422 = ErrorModel.from_dict(response.json()) + + return response_422 + + if response.status_code == 500: + response_500 = ErrorModel.from_dict(response.json()) + + return response_500 + response_default = ErrorModel.from_dict(response.json()) return response_default diff --git a/src/tower/tower_api_client/api/default/update_catalog_fact.py b/src/tower/tower_api_client/api/default/update_catalog_fact.py new file mode 100644 index 00000000..190d2c06 --- /dev/null +++ b/src/tower/tower_api_client/api/default/update_catalog_fact.py @@ -0,0 +1,225 @@ +from http import HTTPStatus +from typing import Any +from urllib.parse import quote + +import httpx + +from ...client import AuthenticatedClient, Client +from ...models.error_model import ErrorModel +from ...models.update_catalog_fact_body import UpdateCatalogFactBody +from ...models.update_catalog_fact_response import UpdateCatalogFactResponse +from ...types import UNSET, Response, Unset + + +def _get_kwargs( + catalog: str, + name: str, + *, + body: UpdateCatalogFactBody, + environment: str | Unset = "default", +) -> dict[str, Any]: + headers: dict[str, Any] = {} + + params: dict[str, Any] = {} + + params["environment"] = environment + + params = {k: v for k, v in params.items() if v is not UNSET and v is not None} + + _kwargs: dict[str, Any] = { + "method": "put", + "url": "/catalogs/{catalog}/facts/{name}".format( + catalog=quote(str(catalog), safe=""), + name=quote(str(name), safe=""), + ), + "params": params, + } + + _kwargs["json"] = body.to_dict() + + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ErrorModel | UpdateCatalogFactResponse: + if response.status_code == 200: + response_200 = UpdateCatalogFactResponse.from_dict(response.json()) + + return response_200 + + response_default = ErrorModel.from_dict(response.json()) + + return response_default + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ErrorModel | UpdateCatalogFactResponse]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + catalog: str, + name: str, + *, + client: AuthenticatedClient, + body: UpdateCatalogFactBody, + environment: str | Unset = "default", +) -> Response[ErrorModel | UpdateCatalogFactResponse]: + """Update a catalog fact + + Idempotently sets a semantic metadata fact by name: creates it when the name is new, updates it when + it already exists. An inferred write cannot overwrite an existing confirmed fact. + + Args: + catalog (str): The name of the catalog. + name (str): The name of the fact. + environment (str | Unset): Environment containing the catalog definition to update. This + operation does not fall back to default. Default: 'default'. + body (UpdateCatalogFactBody): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[ErrorModel | UpdateCatalogFactResponse] + """ + + kwargs = _get_kwargs( + catalog=catalog, + name=name, + body=body, + environment=environment, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + catalog: str, + name: str, + *, + client: AuthenticatedClient, + body: UpdateCatalogFactBody, + environment: str | Unset = "default", +) -> ErrorModel | UpdateCatalogFactResponse | None: + """Update a catalog fact + + Idempotently sets a semantic metadata fact by name: creates it when the name is new, updates it when + it already exists. An inferred write cannot overwrite an existing confirmed fact. + + Args: + catalog (str): The name of the catalog. + name (str): The name of the fact. + environment (str | Unset): Environment containing the catalog definition to update. This + operation does not fall back to default. Default: 'default'. + body (UpdateCatalogFactBody): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + ErrorModel | UpdateCatalogFactResponse + """ + + return sync_detailed( + catalog=catalog, + name=name, + client=client, + body=body, + environment=environment, + ).parsed + + +async def asyncio_detailed( + catalog: str, + name: str, + *, + client: AuthenticatedClient, + body: UpdateCatalogFactBody, + environment: str | Unset = "default", +) -> Response[ErrorModel | UpdateCatalogFactResponse]: + """Update a catalog fact + + Idempotently sets a semantic metadata fact by name: creates it when the name is new, updates it when + it already exists. An inferred write cannot overwrite an existing confirmed fact. + + Args: + catalog (str): The name of the catalog. + name (str): The name of the fact. + environment (str | Unset): Environment containing the catalog definition to update. This + operation does not fall back to default. Default: 'default'. + body (UpdateCatalogFactBody): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[ErrorModel | UpdateCatalogFactResponse] + """ + + kwargs = _get_kwargs( + catalog=catalog, + name=name, + body=body, + environment=environment, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + catalog: str, + name: str, + *, + client: AuthenticatedClient, + body: UpdateCatalogFactBody, + environment: str | Unset = "default", +) -> ErrorModel | UpdateCatalogFactResponse | None: + """Update a catalog fact + + Idempotently sets a semantic metadata fact by name: creates it when the name is new, updates it when + it already exists. An inferred write cannot overwrite an existing confirmed fact. + + Args: + catalog (str): The name of the catalog. + name (str): The name of the fact. + environment (str | Unset): Environment containing the catalog definition to update. This + operation does not fall back to default. Default: 'default'. + body (UpdateCatalogFactBody): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + ErrorModel | UpdateCatalogFactResponse + """ + + return ( + await asyncio_detailed( + catalog=catalog, + name=name, + client=client, + body=body, + environment=environment, + ) + ).parsed diff --git a/src/tower/tower_api_client/api/default/update_environment.py b/src/tower/tower_api_client/api/default/update_environment.py index c0a2f94a..993956a6 100644 --- a/src/tower/tower_api_client/api/default/update_environment.py +++ b/src/tower/tower_api_client/api/default/update_environment.py @@ -41,6 +41,36 @@ def _parse_response( return response_200 + if response.status_code == 401: + response_401 = ErrorModel.from_dict(response.json()) + + return response_401 + + if response.status_code == 403: + response_403 = ErrorModel.from_dict(response.json()) + + return response_403 + + if response.status_code == 404: + response_404 = ErrorModel.from_dict(response.json()) + + return response_404 + + if response.status_code == 409: + response_409 = ErrorModel.from_dict(response.json()) + + return response_409 + + if response.status_code == 422: + response_422 = ErrorModel.from_dict(response.json()) + + return response_422 + + if response.status_code == 500: + response_500 = ErrorModel.from_dict(response.json()) + + return response_500 + response_default = ErrorModel.from_dict(response.json()) return response_default diff --git a/src/tower/tower_api_client/api/default/update_schedule.py b/src/tower/tower_api_client/api/default/update_schedule.py index 33a68f47..8169965c 100644 --- a/src/tower/tower_api_client/api/default/update_schedule.py +++ b/src/tower/tower_api_client/api/default/update_schedule.py @@ -4,19 +4,23 @@ import httpx +from ... import errors from ...client import AuthenticatedClient, Client from ...models.error_model import ErrorModel from ...models.update_schedule_params import UpdateScheduleParams from ...models.update_schedule_response import UpdateScheduleResponse -from ...types import Response +from ...types import UNSET, Response, Unset def _get_kwargs( id_or_name: str, *, body: UpdateScheduleParams, + x_tower_request_number: int | Unset = UNSET, ) -> dict[str, Any]: headers: dict[str, Any] = {} + if not isinstance(x_tower_request_number, Unset): + headers["X-Tower-Request-Number"] = str(x_tower_request_number) _kwargs: dict[str, Any] = { "method": "put", @@ -35,15 +39,31 @@ def _get_kwargs( def _parse_response( *, client: AuthenticatedClient | Client, response: httpx.Response -) -> ErrorModel | UpdateScheduleResponse: +) -> ErrorModel | UpdateScheduleResponse | None: if response.status_code == 200: response_200 = UpdateScheduleResponse.from_dict(response.json()) return response_200 - response_default = ErrorModel.from_dict(response.json()) + if response.status_code == 412: + response_412 = ErrorModel.from_dict(response.json()) + + return response_412 + + if response.status_code == 422: + response_422 = ErrorModel.from_dict(response.json()) + + return response_422 + + if response.status_code == 500: + response_500 = ErrorModel.from_dict(response.json()) + + return response_500 - return response_default + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None def _build_response( @@ -62,6 +82,7 @@ def sync_detailed( *, client: AuthenticatedClient, body: UpdateScheduleParams, + x_tower_request_number: int | Unset = UNSET, ) -> Response[ErrorModel | UpdateScheduleResponse]: """Update schedule @@ -69,6 +90,9 @@ def sync_detailed( Args: id_or_name (str): The ID or name of the schedule to update. + x_tower_request_number (int | Unset): Optional account-scoped monotonic sequence token + used to reject out-of-order writes. See the fence documentation for the acceptance window + and retry behavior. body (UpdateScheduleParams): Raises: @@ -82,6 +106,7 @@ def sync_detailed( kwargs = _get_kwargs( id_or_name=id_or_name, body=body, + x_tower_request_number=x_tower_request_number, ) response = client.get_httpx_client().request( @@ -96,6 +121,7 @@ def sync( *, client: AuthenticatedClient, body: UpdateScheduleParams, + x_tower_request_number: int | Unset = UNSET, ) -> ErrorModel | UpdateScheduleResponse | None: """Update schedule @@ -103,6 +129,9 @@ def sync( Args: id_or_name (str): The ID or name of the schedule to update. + x_tower_request_number (int | Unset): Optional account-scoped monotonic sequence token + used to reject out-of-order writes. See the fence documentation for the acceptance window + and retry behavior. body (UpdateScheduleParams): Raises: @@ -117,6 +146,7 @@ def sync( id_or_name=id_or_name, client=client, body=body, + x_tower_request_number=x_tower_request_number, ).parsed @@ -125,6 +155,7 @@ async def asyncio_detailed( *, client: AuthenticatedClient, body: UpdateScheduleParams, + x_tower_request_number: int | Unset = UNSET, ) -> Response[ErrorModel | UpdateScheduleResponse]: """Update schedule @@ -132,6 +163,9 @@ async def asyncio_detailed( Args: id_or_name (str): The ID or name of the schedule to update. + x_tower_request_number (int | Unset): Optional account-scoped monotonic sequence token + used to reject out-of-order writes. See the fence documentation for the acceptance window + and retry behavior. body (UpdateScheduleParams): Raises: @@ -145,6 +179,7 @@ async def asyncio_detailed( kwargs = _get_kwargs( id_or_name=id_or_name, body=body, + x_tower_request_number=x_tower_request_number, ) response = await client.get_async_httpx_client().request(**kwargs) @@ -157,6 +192,7 @@ async def asyncio( *, client: AuthenticatedClient, body: UpdateScheduleParams, + x_tower_request_number: int | Unset = UNSET, ) -> ErrorModel | UpdateScheduleResponse | None: """Update schedule @@ -164,6 +200,9 @@ async def asyncio( Args: id_or_name (str): The ID or name of the schedule to update. + x_tower_request_number (int | Unset): Optional account-scoped monotonic sequence token + used to reject out-of-order writes. See the fence documentation for the acceptance window + and retry behavior. body (UpdateScheduleParams): Raises: @@ -179,5 +218,6 @@ async def asyncio( id_or_name=id_or_name, client=client, body=body, + x_tower_request_number=x_tower_request_number, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/vend_catalog_credentials.py b/src/tower/tower_api_client/api/default/vend_catalog_credentials.py index 90d71648..0870416c 100644 --- a/src/tower/tower_api_client/api/default/vend_catalog_credentials.py +++ b/src/tower/tower_api_client/api/default/vend_catalog_credentials.py @@ -108,7 +108,9 @@ def sync_detailed( Args: name (str): The name of the catalog. - environment (str | Unset): The environment of the catalog. Default: 'default'. + environment (str | Unset): Environment whose catalog credentials to vend. When it has no + same-named catalog, credentials for the catalog from default are vended instead. Default: + 'default'. body (VendCatalogCredentialsBody): Raises: @@ -148,7 +150,9 @@ def sync( Args: name (str): The name of the catalog. - environment (str | Unset): The environment of the catalog. Default: 'default'. + environment (str | Unset): Environment whose catalog credentials to vend. When it has no + same-named catalog, credentials for the catalog from default are vended instead. Default: + 'default'. body (VendCatalogCredentialsBody): Raises: @@ -183,7 +187,9 @@ async def asyncio_detailed( Args: name (str): The name of the catalog. - environment (str | Unset): The environment of the catalog. Default: 'default'. + environment (str | Unset): Environment whose catalog credentials to vend. When it has no + same-named catalog, credentials for the catalog from default are vended instead. Default: + 'default'. body (VendCatalogCredentialsBody): Raises: @@ -221,7 +227,9 @@ async def asyncio( Args: name (str): The name of the catalog. - environment (str | Unset): The environment of the catalog. Default: 'default'. + environment (str | Unset): Environment whose catalog credentials to vend. When it has no + same-named catalog, credentials for the catalog from default are vended instead. Default: + 'default'. body (VendCatalogCredentialsBody): Raises: diff --git a/src/tower/tower_api_client/models/__init__.py b/src/tower/tower_api_client/models/__init__.py index 956c7b07..15753bba 100644 --- a/src/tower/tower_api_client/models/__init__.py +++ b/src/tower/tower_api_client/models/__init__.py @@ -12,14 +12,25 @@ from .app_statistics import AppStatistics from .app_status import AppStatus from .app_summary import AppSummary +from .app_tag import AppTag from .app_version import AppVersion from .authentication_context import AuthenticationContext +from .batch_describe_runs_logs_params import BatchDescribeRunsLogsParams +from .batch_describe_runs_params import BatchDescribeRunsParams +from .batch_describe_runs_response import BatchDescribeRunsResponse +from .batch_error import BatchError +from .batch_run_and_links import BatchRunAndLinks from .batch_schedule_params import BatchScheduleParams from .batch_schedule_response import BatchScheduleResponse +from .batched_run_log_lines import BatchedRunLogLines from .cancel_run_response import CancelRunResponse from .catalog import Catalog from .catalog_credentials import CatalogCredentials +from .catalog_fact import CatalogFact +from .catalog_fact_confidence import CatalogFactConfidence +from .catalog_fact_scope import CatalogFactScope from .catalog_property import CatalogProperty +from .catalog_usage import CatalogUsage from .claim_device_login_ticket_params import ClaimDeviceLoginTicketParams from .claim_device_login_ticket_response import ClaimDeviceLoginTicketResponse from .create_account_params import CreateAccountParams @@ -79,7 +90,9 @@ from .describe_app_response import DescribeAppResponse from .describe_app_version_response import DescribeAppVersionResponse from .describe_authentication_context_body import DescribeAuthenticationContextBody +from .describe_catalog_fact_response import DescribeCatalogFactResponse from .describe_catalog_response import DescribeCatalogResponse +from .describe_catalog_usage_response import DescribeCatalogUsageResponse from .describe_device_login_session_response import DescribeDeviceLoginSessionResponse from .describe_email_preferences_body import DescribeEmailPreferencesBody from .describe_environment_response import DescribeEnvironmentResponse @@ -131,6 +144,7 @@ from .list_apps_filter import ListAppsFilter from .list_apps_response import ListAppsResponse from .list_apps_sort import ListAppsSort +from .list_catalog_facts_response import ListCatalogFactsResponse from .list_catalogs_response import ListCatalogsResponse from .list_environments_response import ListEnvironmentsResponse from .list_guests_response import ListGuestsResponse @@ -148,6 +162,7 @@ from .list_teams_response import ListTeamsResponse from .list_webhooks_response import ListWebhooksResponse from .organization import Organization +from .organization_storage_usage import OrganizationStorageUsage from .organization_usage import OrganizationUsage from .pagination import Pagination from .parameter import Parameter @@ -161,6 +176,7 @@ from .resend_team_invitation_params import ResendTeamInvitationParams from .resend_team_invitation_response import ResendTeamInvitationResponse from .run import Run +from .run_and_links import RunAndLinks from .run_app_initiator_data import RunAppInitiatorData from .run_app_initiator_data_type import RunAppInitiatorDataType from .run_app_params import RunAppParams @@ -173,6 +189,7 @@ from .run_graph_node import RunGraphNode from .run_graph_run_id import RunGraphRunID from .run_initiator import RunInitiator +from .run_links import RunLinks from .run_log_line import RunLogLine from .run_log_line_channel import RunLogLineChannel from .run_parameter import RunParameter @@ -210,6 +227,8 @@ from .stream_run_logs_event_warning import StreamRunLogsEventWarning from .stream_shouldertaps_event_shouldertap import StreamShouldertapsEventShouldertap from .stream_shouldertaps_event_warning import StreamShouldertapsEventWarning +from .tag_filter import TagFilter +from .tag_filter_op import TagFilterOp from .team import Team from .team_invitation import TeamInvitation from .team_membership import TeamMembership @@ -223,6 +242,10 @@ from .update_app_environment_response import UpdateAppEnvironmentResponse from .update_app_params import UpdateAppParams from .update_app_response import UpdateAppResponse +from .update_catalog_fact_body import UpdateCatalogFactBody +from .update_catalog_fact_body_confidence import UpdateCatalogFactBodyConfidence +from .update_catalog_fact_body_scope import UpdateCatalogFactBodyScope +from .update_catalog_fact_response import UpdateCatalogFactResponse from .update_catalog_params import UpdateCatalogParams from .update_catalog_response import UpdateCatalogResponse from .update_email_preferences_body import UpdateEmailPreferencesBody @@ -276,14 +299,25 @@ "AppStatistics", "AppStatus", "AppSummary", + "AppTag", "AppVersion", "AuthenticationContext", + "BatchDescribeRunsLogsParams", + "BatchDescribeRunsParams", + "BatchDescribeRunsResponse", + "BatchedRunLogLines", + "BatchError", + "BatchRunAndLinks", "BatchScheduleParams", "BatchScheduleResponse", "CancelRunResponse", "Catalog", "CatalogCredentials", + "CatalogFact", + "CatalogFactConfidence", + "CatalogFactScope", "CatalogProperty", + "CatalogUsage", "ClaimDeviceLoginTicketParams", "ClaimDeviceLoginTicketResponse", "CreateAccountParams", @@ -343,7 +377,9 @@ "DescribeAppResponse", "DescribeAppVersionResponse", "DescribeAuthenticationContextBody", + "DescribeCatalogFactResponse", "DescribeCatalogResponse", + "DescribeCatalogUsageResponse", "DescribeDeviceLoginSessionResponse", "DescribeEmailPreferencesBody", "DescribeEnvironmentResponse", @@ -391,6 +427,7 @@ "ListAppsResponse", "ListAppsSort", "ListAppVersionsResponse", + "ListCatalogFactsResponse", "ListCatalogsResponse", "ListEnvironmentsResponse", "ListGuestsResponse", @@ -408,6 +445,7 @@ "ListTeamsResponse", "ListWebhooksResponse", "Organization", + "OrganizationStorageUsage", "OrganizationUsage", "Pagination", "Parameter", @@ -421,6 +459,7 @@ "ResendTeamInvitationParams", "ResendTeamInvitationResponse", "Run", + "RunAndLinks", "RunAppInitiatorData", "RunAppInitiatorDataType", "RunAppParams", @@ -433,6 +472,7 @@ "RunGraphNode", "RunGraphRunID", "RunInitiator", + "RunLinks", "RunLogLine", "RunLogLineChannel", "Runner", @@ -470,6 +510,8 @@ "StreamRunLogsEventWarning", "StreamShouldertapsEventShouldertap", "StreamShouldertapsEventWarning", + "TagFilter", + "TagFilterOp", "Team", "TeamInvitation", "TeamMembership", @@ -483,6 +525,10 @@ "UpdateAppEnvironmentResponse", "UpdateAppParams", "UpdateAppResponse", + "UpdateCatalogFactBody", + "UpdateCatalogFactBodyConfidence", + "UpdateCatalogFactBodyScope", + "UpdateCatalogFactResponse", "UpdateCatalogParams", "UpdateCatalogResponse", "UpdateEmailPreferencesBody", diff --git a/src/tower/tower_api_client/models/app.py b/src/tower/tower_api_client/models/app.py index 73d7656b..6dc69873 100644 --- a/src/tower/tower_api_client/models/app.py +++ b/src/tower/tower_api_client/models/app.py @@ -12,6 +12,7 @@ from ..types import UNSET, Unset if TYPE_CHECKING: + from ..models.app_tag import AppTag from ..models.run import Run from ..models.run_results import RunResults from ..models.run_retry_policy import RunRetryPolicy @@ -26,6 +27,7 @@ class App: Attributes: created_at (datetime.datetime): The date and time this app was created. health_status (AppHealthStatus): This property is deprecated. It will always be 'healthy'. + is_example (bool): Whether this app was deployed from the Tower examples catalog. is_externally_accessible (bool): name (str): The name of the app. next_run_at (datetime.datetime | None): The next time this app will run as part of it's schedule, null if none. @@ -43,10 +45,12 @@ class App: slug (str | Unset): This property is deprecated. Use name instead. status (AppStatus | Unset): The status of the app. subdomain (str | Unset): The subdomain that this app is accessible via. Must be externally accessible first. + tags (list[AppTag] | Unset): The tags applied to the app. """ created_at: datetime.datetime health_status: AppHealthStatus + is_example: bool is_externally_accessible: bool name: str next_run_at: datetime.datetime | None @@ -62,12 +66,15 @@ class App: slug: str | Unset = UNSET status: AppStatus | Unset = UNSET subdomain: str | Unset = UNSET + tags: list[AppTag] | Unset = UNSET def to_dict(self) -> dict[str, Any]: created_at = self.created_at.isoformat() health_status = self.health_status.value + is_example = self.is_example + is_externally_accessible = self.is_externally_accessible name = self.name @@ -112,12 +119,20 @@ def to_dict(self) -> dict[str, Any]: subdomain = self.subdomain + tags: list[dict[str, Any]] | Unset = UNSET + if not isinstance(self.tags, Unset): + tags = [] + for tags_item_data in self.tags: + tags_item = tags_item_data.to_dict() + tags.append(tags_item) + field_dict: dict[str, Any] = {} field_dict.update( { "created_at": created_at, "health_status": health_status, + "is_example": is_example, "is_externally_accessible": is_externally_accessible, "name": name, "next_run_at": next_run_at, @@ -141,11 +156,14 @@ def to_dict(self) -> dict[str, Any]: field_dict["status"] = status if subdomain is not UNSET: field_dict["subdomain"] = subdomain + if tags is not UNSET: + field_dict["tags"] = tags return field_dict @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.app_tag import AppTag from ..models.run import Run from ..models.run_results import RunResults from ..models.run_retry_policy import RunRetryPolicy @@ -155,6 +173,8 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: health_status = AppHealthStatus(d.pop("health_status")) + is_example = d.pop("is_example") + is_externally_accessible = d.pop("is_externally_accessible") name = d.pop("name") @@ -228,9 +248,19 @@ def _parse_version(data: object) -> None | str: subdomain = d.pop("subdomain", UNSET) + _tags = d.pop("tags", UNSET) + tags: list[AppTag] | Unset = UNSET + if _tags is not UNSET: + tags = [] + for tags_item_data in _tags: + tags_item = AppTag.from_dict(tags_item_data) + + tags.append(tags_item) + app = cls( created_at=created_at, health_status=health_status, + is_example=is_example, is_externally_accessible=is_externally_accessible, name=name, next_run_at=next_run_at, @@ -246,6 +276,7 @@ def _parse_version(data: object) -> None | str: slug=slug, status=status, subdomain=subdomain, + tags=tags, ) return app diff --git a/src/tower/tower_api_client/models/app_tag.py b/src/tower/tower_api_client/models/app_tag.py new file mode 100644 index 00000000..79fdb7ad --- /dev/null +++ b/src/tower/tower_api_client/models/app_tag.py @@ -0,0 +1,50 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar + +from attrs import define as _attrs_define + +T = TypeVar("T", bound="AppTag") + + +@_attrs_define +class AppTag: + """ + Attributes: + name (str): + value (str): + """ + + name: str + value: str + + def to_dict(self) -> dict[str, Any]: + name = self.name + + value = self.value + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "name": name, + "value": value, + } + ) + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + name = d.pop("name") + + value = d.pop("value") + + app_tag = cls( + name=name, + value=value, + ) + + return app_tag diff --git a/src/tower/tower_api_client/models/batch_describe_runs_logs_params.py b/src/tower/tower_api_client/models/batch_describe_runs_logs_params.py new file mode 100644 index 00000000..9d558855 --- /dev/null +++ b/src/tower/tower_api_client/models/batch_describe_runs_logs_params.py @@ -0,0 +1,124 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import Any, TypeVar, cast + +from attrs import define as _attrs_define +from dateutil.parser import isoparse + +from ..types import UNSET, Unset + +T = TypeVar("T", bound="BatchDescribeRunsLogsParams") + + +@_attrs_define +class BatchDescribeRunsLogsParams: + """ + Attributes: + name (str): The name of the app to describe the run for. + seq (int): The number of the run to describe. + head (int | None | Unset): Return only the first N log lines. Cannot be combined with tail. + start_at (datetime.datetime | None | Unset): Fetch logs from this timestamp onwards (inclusive). + tail (int | None | Unset): Return only the last N log lines. Cannot be combined with head. + """ + + name: str + seq: int + head: int | None | Unset = UNSET + start_at: datetime.datetime | None | Unset = UNSET + tail: int | None | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + name = self.name + + seq = self.seq + + head: int | None | Unset + if isinstance(self.head, Unset): + head = UNSET + else: + head = self.head + + start_at: None | str | Unset + if isinstance(self.start_at, Unset): + start_at = UNSET + elif isinstance(self.start_at, datetime.datetime): + start_at = self.start_at.isoformat() + else: + start_at = self.start_at + + tail: int | None | Unset + if isinstance(self.tail, Unset): + tail = UNSET + else: + tail = self.tail + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "name": name, + "seq": seq, + } + ) + if head is not UNSET: + field_dict["head"] = head + if start_at is not UNSET: + field_dict["start_at"] = start_at + if tail is not UNSET: + field_dict["tail"] = tail + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + name = d.pop("name") + + seq = d.pop("seq") + + def _parse_head(data: object) -> int | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(int | None | Unset, data) + + head = _parse_head(d.pop("head", UNSET)) + + def _parse_start_at(data: object) -> datetime.datetime | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, str): + raise TypeError() + start_at_type_0 = isoparse(data) + + return start_at_type_0 + except (TypeError, ValueError, AttributeError, KeyError): + pass + return cast(datetime.datetime | None | Unset, data) + + start_at = _parse_start_at(d.pop("start_at", UNSET)) + + def _parse_tail(data: object) -> int | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(int | None | Unset, data) + + tail = _parse_tail(d.pop("tail", UNSET)) + + batch_describe_runs_logs_params = cls( + name=name, + seq=seq, + head=head, + start_at=start_at, + tail=tail, + ) + + return batch_describe_runs_logs_params diff --git a/src/tower/tower_api_client/models/batch_describe_runs_params.py b/src/tower/tower_api_client/models/batch_describe_runs_params.py new file mode 100644 index 00000000..66fe7b53 --- /dev/null +++ b/src/tower/tower_api_client/models/batch_describe_runs_params.py @@ -0,0 +1,50 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar + +from attrs import define as _attrs_define + +T = TypeVar("T", bound="BatchDescribeRunsParams") + + +@_attrs_define +class BatchDescribeRunsParams: + """ + Attributes: + name (str): The name of the app to describe the run for. + seq (int): The number of the run to describe. + """ + + name: str + seq: int + + def to_dict(self) -> dict[str, Any]: + name = self.name + + seq = self.seq + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "name": name, + "seq": seq, + } + ) + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + name = d.pop("name") + + seq = d.pop("seq") + + batch_describe_runs_params = cls( + name=name, + seq=seq, + ) + + return batch_describe_runs_params diff --git a/src/tower/tower_api_client/models/batch_describe_runs_response.py b/src/tower/tower_api_client/models/batch_describe_runs_response.py new file mode 100644 index 00000000..5b23963c --- /dev/null +++ b/src/tower/tower_api_client/models/batch_describe_runs_response.py @@ -0,0 +1,68 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.batch_run_and_links import BatchRunAndLinks + + +T = TypeVar("T", bound="BatchDescribeRunsResponse") + + +@_attrs_define +class BatchDescribeRunsResponse: + """ + Attributes: + runs (list[BatchRunAndLinks]): + schema (str | Unset): A URL to the JSON Schema for this object. Example: + https://api.tower.dev/v1/schemas/BatchDescribeRunsResponse.json. + """ + + runs: list[BatchRunAndLinks] + schema: str | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + runs = [] + for runs_item_data in self.runs: + runs_item = runs_item_data.to_dict() + runs.append(runs_item) + + schema = self.schema + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "runs": runs, + } + ) + if schema is not UNSET: + field_dict["$schema"] = schema + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.batch_run_and_links import BatchRunAndLinks + + d = dict(src_dict) + runs = [] + _runs = d.pop("runs") + for runs_item_data in _runs: + runs_item = BatchRunAndLinks.from_dict(runs_item_data) + + runs.append(runs_item) + + schema = d.pop("$schema", UNSET) + + batch_describe_runs_response = cls( + runs=runs, + schema=schema, + ) + + return batch_describe_runs_response diff --git a/src/tower/tower_api_client/models/batch_error.py b/src/tower/tower_api_client/models/batch_error.py new file mode 100644 index 00000000..2b211ba3 --- /dev/null +++ b/src/tower/tower_api_client/models/batch_error.py @@ -0,0 +1,42 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar + +from attrs import define as _attrs_define + +T = TypeVar("T", bound="BatchError") + + +@_attrs_define +class BatchError: + """ + Attributes: + message (str): + """ + + message: str + + def to_dict(self) -> dict[str, Any]: + message = self.message + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "message": message, + } + ) + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + message = d.pop("message") + + batch_error = cls( + message=message, + ) + + return batch_error diff --git a/src/tower/tower_api_client/models/batch_run_and_links.py b/src/tower/tower_api_client/models/batch_run_and_links.py new file mode 100644 index 00000000..25cc598d --- /dev/null +++ b/src/tower/tower_api_client/models/batch_run_and_links.py @@ -0,0 +1,73 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.batch_error import BatchError + from ..models.run_and_links import RunAndLinks + + +T = TypeVar("T", bound="BatchRunAndLinks") + + +@_attrs_define +class BatchRunAndLinks: + """ + Attributes: + data (RunAndLinks | Unset): + error (BatchError | Unset): + """ + + data: RunAndLinks | Unset = UNSET + error: BatchError | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + data: dict[str, Any] | Unset = UNSET + if not isinstance(self.data, Unset): + data = self.data.to_dict() + + error: dict[str, Any] | Unset = UNSET + if not isinstance(self.error, Unset): + error = self.error.to_dict() + + field_dict: dict[str, Any] = {} + + field_dict.update({}) + if data is not UNSET: + field_dict["data"] = data + if error is not UNSET: + field_dict["error"] = error + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.batch_error import BatchError + from ..models.run_and_links import RunAndLinks + + d = dict(src_dict) + _data = d.pop("data", UNSET) + data: RunAndLinks | Unset + if isinstance(_data, Unset): + data = UNSET + else: + data = RunAndLinks.from_dict(_data) + + _error = d.pop("error", UNSET) + error: BatchError | Unset + if isinstance(_error, Unset): + error = UNSET + else: + error = BatchError.from_dict(_error) + + batch_run_and_links = cls( + data=data, + error=error, + ) + + return batch_run_and_links diff --git a/src/tower/tower_api_client/models/batched_run_log_lines.py b/src/tower/tower_api_client/models/batched_run_log_lines.py new file mode 100644 index 00000000..8e2fa515 --- /dev/null +++ b/src/tower/tower_api_client/models/batched_run_log_lines.py @@ -0,0 +1,81 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, cast + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.run_log_line import RunLogLine + + +T = TypeVar("T", bound="BatchedRunLogLines") + + +@_attrs_define +class BatchedRunLogLines: + """ + Attributes: + error (None | str | Unset): + log_lines (list[RunLogLine] | Unset): + """ + + error: None | str | Unset = UNSET + log_lines: list[RunLogLine] | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + error: None | str | Unset + if isinstance(self.error, Unset): + error = UNSET + else: + error = self.error + + log_lines: list[dict[str, Any]] | Unset = UNSET + if not isinstance(self.log_lines, Unset): + log_lines = [] + for log_lines_item_data in self.log_lines: + log_lines_item = log_lines_item_data.to_dict() + log_lines.append(log_lines_item) + + field_dict: dict[str, Any] = {} + + field_dict.update({}) + if error is not UNSET: + field_dict["error"] = error + if log_lines is not UNSET: + field_dict["log_lines"] = log_lines + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.run_log_line import RunLogLine + + d = dict(src_dict) + + def _parse_error(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + error = _parse_error(d.pop("error", UNSET)) + + _log_lines = d.pop("log_lines", UNSET) + log_lines: list[RunLogLine] | Unset = UNSET + if _log_lines is not UNSET: + log_lines = [] + for log_lines_item_data in _log_lines: + log_lines_item = RunLogLine.from_dict(log_lines_item_data) + + log_lines.append(log_lines_item) + + batched_run_log_lines = cls( + error=error, + log_lines=log_lines, + ) + + return batched_run_log_lines diff --git a/src/tower/tower_api_client/models/catalog.py b/src/tower/tower_api_client/models/catalog.py index ab6e6e2d..fdaaab5f 100644 --- a/src/tower/tower_api_client/models/catalog.py +++ b/src/tower/tower_api_client/models/catalog.py @@ -21,7 +21,7 @@ class Catalog: """ Attributes: created_at (datetime.datetime): - environment (str): + environment (str): Environment containing the catalog definition. name (str): properties (list[CatalogProperty]): type_ (str): diff --git a/src/tower/tower_api_client/models/catalog_fact.py b/src/tower/tower_api_client/models/catalog_fact.py new file mode 100644 index 00000000..6db9bb1c --- /dev/null +++ b/src/tower/tower_api_client/models/catalog_fact.py @@ -0,0 +1,115 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import Any, TypeVar + +from attrs import define as _attrs_define +from dateutil.parser import isoparse + +from ..models.catalog_fact_confidence import CatalogFactConfidence +from ..models.catalog_fact_scope import CatalogFactScope +from ..types import UNSET, Unset + +T = TypeVar("T", bound="CatalogFact") + + +@_attrs_define +class CatalogFact: + """ + Attributes: + confidence (CatalogFactConfidence): How trustworthy the fact is. + created_at (datetime.datetime): + name (str): The natural key of the fact within the catalog. + object_ (str): Descriptive path to what the fact is about, e.g. "bronze.runs.deleted_at". Empty for catalog- + scoped facts. + scope (CatalogFactScope): What kind of object the fact is about. + statement (str): The human-readable meaning of the fact. + updated_at (datetime.datetime): + body (Any | Unset): Optional structured payload (SQL, unit, enum values). + source (str | Unset): Where the fact came from (agent id, user, ...). + """ + + confidence: CatalogFactConfidence + created_at: datetime.datetime + name: str + object_: str + scope: CatalogFactScope + statement: str + updated_at: datetime.datetime + body: Any | Unset = UNSET + source: str | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + confidence = self.confidence.value + + created_at = self.created_at.isoformat() + + name = self.name + + object_ = self.object_ + + scope = self.scope.value + + statement = self.statement + + updated_at = self.updated_at.isoformat() + + body = self.body + + source = self.source + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "confidence": confidence, + "created_at": created_at, + "name": name, + "object": object_, + "scope": scope, + "statement": statement, + "updated_at": updated_at, + } + ) + if body is not UNSET: + field_dict["body"] = body + if source is not UNSET: + field_dict["source"] = source + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + confidence = CatalogFactConfidence(d.pop("confidence")) + + created_at = isoparse(d.pop("created_at")) + + name = d.pop("name") + + object_ = d.pop("object") + + scope = CatalogFactScope(d.pop("scope")) + + statement = d.pop("statement") + + updated_at = isoparse(d.pop("updated_at")) + + body = d.pop("body", UNSET) + + source = d.pop("source", UNSET) + + catalog_fact = cls( + confidence=confidence, + created_at=created_at, + name=name, + object_=object_, + scope=scope, + statement=statement, + updated_at=updated_at, + body=body, + source=source, + ) + + return catalog_fact diff --git a/src/tower/tower_api_client/models/catalog_fact_confidence.py b/src/tower/tower_api_client/models/catalog_fact_confidence.py new file mode 100644 index 00000000..051d428f --- /dev/null +++ b/src/tower/tower_api_client/models/catalog_fact_confidence.py @@ -0,0 +1,10 @@ +from enum import Enum + + +class CatalogFactConfidence(str, Enum): + CONFIRMED = "confirmed" + HEURISTIC = "heuristic" + INFERRED = "inferred" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/tower/tower_api_client/models/catalog_fact_scope.py b/src/tower/tower_api_client/models/catalog_fact_scope.py new file mode 100644 index 00000000..4793be33 --- /dev/null +++ b/src/tower/tower_api_client/models/catalog_fact_scope.py @@ -0,0 +1,12 @@ +from enum import Enum + + +class CatalogFactScope(str, Enum): + CATALOG = "catalog" + COLUMN = "column" + METRIC = "metric" + NAMESPACE = "namespace" + TABLE = "table" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/tower/tower_api_client/models/catalog_usage.py b/src/tower/tower_api_client/models/catalog_usage.py new file mode 100644 index 00000000..ca554186 --- /dev/null +++ b/src/tower/tower_api_client/models/catalog_usage.py @@ -0,0 +1,72 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import Any, TypeVar, cast + +from attrs import define as _attrs_define +from dateutil.parser import isoparse + +T = TypeVar("T", bound="CatalogUsage") + + +@_attrs_define +class CatalogUsage: + """ + Attributes: + measured_at (datetime.datetime | None): When this value was measured. Null when metering is unconfigured, + disabled, or failed without a cached value. + total_bytes (int): Physical bytes stored by this Tower-managed catalog, including Iceberg metadata and not-yet- + compacted snapshot history. + """ + + measured_at: datetime.datetime | None + total_bytes: int + + def to_dict(self) -> dict[str, Any]: + measured_at: None | str + if isinstance(self.measured_at, datetime.datetime): + measured_at = self.measured_at.isoformat() + else: + measured_at = self.measured_at + + total_bytes = self.total_bytes + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "measured_at": measured_at, + "total_bytes": total_bytes, + } + ) + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + + def _parse_measured_at(data: object) -> datetime.datetime | None: + if data is None: + return data + try: + if not isinstance(data, str): + raise TypeError() + measured_at_type_0 = isoparse(data) + + return measured_at_type_0 + except (TypeError, ValueError, AttributeError, KeyError): + pass + return cast(datetime.datetime | None, data) + + measured_at = _parse_measured_at(d.pop("measured_at")) + + total_bytes = d.pop("total_bytes") + + catalog_usage = cls( + measured_at=measured_at, + total_bytes=total_bytes, + ) + + return catalog_usage diff --git a/src/tower/tower_api_client/models/create_app_params.py b/src/tower/tower_api_client/models/create_app_params.py index fdf0e085..c219bd33 100644 --- a/src/tower/tower_api_client/models/create_app_params.py +++ b/src/tower/tower_api_client/models/create_app_params.py @@ -1,12 +1,17 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, cast +from typing import TYPE_CHECKING, Any, TypeVar, cast from attrs import define as _attrs_define from ..types import UNSET, Unset +if TYPE_CHECKING: + from ..models.app_tag import AppTag + from ..models.run_retry_policy import RunRetryPolicy + + T = TypeVar("T", bound="CreateAppParams") @@ -19,18 +24,28 @@ class CreateAppParams: https://api.tower.dev/v1/schemas/CreateAppParams.json. is_externally_accessible (bool | Unset): Indicates that web traffic should be routed to this app and that its runs should get a hostname assigned to it. Default: False. + pending_timeout (int | None | Unset): The amount of time in seconds that runs of this app can stay in pending + state before being marked as failed. + retry_policy (RunRetryPolicy | Unset): + running_timeout (int | None | Unset): The amount of time in seconds that runs of this app can stay in running + state before being marked as failed. short_description (str | Unset): A description of the app. slug (str | Unset): The slug of the app. Legacy CLI will send it but we don't need it. subdomain (None | str | Unset): The subdomain this app is accessible under. Requires is_externally_accessible to be true. + tags (list[AppTag] | Unset): The tags for this app. """ name: str schema: str | Unset = UNSET is_externally_accessible: bool | Unset = False + pending_timeout: int | None | Unset = UNSET + retry_policy: RunRetryPolicy | Unset = UNSET + running_timeout: int | None | Unset = UNSET short_description: str | Unset = UNSET slug: str | Unset = UNSET subdomain: None | str | Unset = UNSET + tags: list[AppTag] | Unset = UNSET def to_dict(self) -> dict[str, Any]: name = self.name @@ -39,6 +54,22 @@ def to_dict(self) -> dict[str, Any]: is_externally_accessible = self.is_externally_accessible + pending_timeout: int | None | Unset + if isinstance(self.pending_timeout, Unset): + pending_timeout = UNSET + else: + pending_timeout = self.pending_timeout + + retry_policy: dict[str, Any] | Unset = UNSET + if not isinstance(self.retry_policy, Unset): + retry_policy = self.retry_policy.to_dict() + + running_timeout: int | None | Unset + if isinstance(self.running_timeout, Unset): + running_timeout = UNSET + else: + running_timeout = self.running_timeout + short_description = self.short_description slug = self.slug @@ -49,6 +80,13 @@ def to_dict(self) -> dict[str, Any]: else: subdomain = self.subdomain + tags: list[dict[str, Any]] | Unset = UNSET + if not isinstance(self.tags, Unset): + tags = [] + for tags_item_data in self.tags: + tags_item = tags_item_data.to_dict() + tags.append(tags_item) + field_dict: dict[str, Any] = {} field_dict.update( @@ -60,17 +98,28 @@ def to_dict(self) -> dict[str, Any]: field_dict["$schema"] = schema if is_externally_accessible is not UNSET: field_dict["is_externally_accessible"] = is_externally_accessible + if pending_timeout is not UNSET: + field_dict["pending_timeout"] = pending_timeout + if retry_policy is not UNSET: + field_dict["retry_policy"] = retry_policy + if running_timeout is not UNSET: + field_dict["running_timeout"] = running_timeout if short_description is not UNSET: field_dict["short_description"] = short_description if slug is not UNSET: field_dict["slug"] = slug if subdomain is not UNSET: field_dict["subdomain"] = subdomain + if tags is not UNSET: + field_dict["tags"] = tags return field_dict @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.app_tag import AppTag + from ..models.run_retry_policy import RunRetryPolicy + d = dict(src_dict) name = d.pop("name") @@ -78,6 +127,31 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: is_externally_accessible = d.pop("is_externally_accessible", UNSET) + def _parse_pending_timeout(data: object) -> int | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(int | None | Unset, data) + + pending_timeout = _parse_pending_timeout(d.pop("pending_timeout", UNSET)) + + _retry_policy = d.pop("retry_policy", UNSET) + retry_policy: RunRetryPolicy | Unset + if isinstance(_retry_policy, Unset): + retry_policy = UNSET + else: + retry_policy = RunRetryPolicy.from_dict(_retry_policy) + + def _parse_running_timeout(data: object) -> int | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(int | None | Unset, data) + + running_timeout = _parse_running_timeout(d.pop("running_timeout", UNSET)) + short_description = d.pop("short_description", UNSET) slug = d.pop("slug", UNSET) @@ -91,13 +165,26 @@ def _parse_subdomain(data: object) -> None | str | Unset: subdomain = _parse_subdomain(d.pop("subdomain", UNSET)) + _tags = d.pop("tags", UNSET) + tags: list[AppTag] | Unset = UNSET + if _tags is not UNSET: + tags = [] + for tags_item_data in _tags: + tags_item = AppTag.from_dict(tags_item_data) + + tags.append(tags_item) + create_app_params = cls( name=name, schema=schema, is_externally_accessible=is_externally_accessible, + pending_timeout=pending_timeout, + retry_policy=retry_policy, + running_timeout=running_timeout, short_description=short_description, slug=slug, subdomain=subdomain, + tags=tags, ) return create_app_params diff --git a/src/tower/tower_api_client/models/describe_catalog_fact_response.py b/src/tower/tower_api_client/models/describe_catalog_fact_response.py new file mode 100644 index 00000000..1c060caa --- /dev/null +++ b/src/tower/tower_api_client/models/describe_catalog_fact_response.py @@ -0,0 +1,68 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.catalog_fact import CatalogFact + + +T = TypeVar("T", bound="DescribeCatalogFactResponse") + + +@_attrs_define +class DescribeCatalogFactResponse: + """ + Attributes: + environment (str): Environment containing the catalog definition. + fact (CatalogFact): + schema (str | Unset): A URL to the JSON Schema for this object. Example: + https://api.tower.dev/v1/schemas/DescribeCatalogFactResponse.json. + """ + + environment: str + fact: CatalogFact + schema: str | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + environment = self.environment + + fact = self.fact.to_dict() + + schema = self.schema + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "environment": environment, + "fact": fact, + } + ) + if schema is not UNSET: + field_dict["$schema"] = schema + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.catalog_fact import CatalogFact + + d = dict(src_dict) + environment = d.pop("environment") + + fact = CatalogFact.from_dict(d.pop("fact")) + + schema = d.pop("$schema", UNSET) + + describe_catalog_fact_response = cls( + environment=environment, + fact=fact, + schema=schema, + ) + + return describe_catalog_fact_response diff --git a/src/tower/tower_api_client/models/describe_catalog_usage_response.py b/src/tower/tower_api_client/models/describe_catalog_usage_response.py new file mode 100644 index 00000000..7c2548b8 --- /dev/null +++ b/src/tower/tower_api_client/models/describe_catalog_usage_response.py @@ -0,0 +1,68 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.catalog_usage import CatalogUsage + + +T = TypeVar("T", bound="DescribeCatalogUsageResponse") + + +@_attrs_define +class DescribeCatalogUsageResponse: + """ + Attributes: + environment (str): Environment containing the catalog definition. + usage (CatalogUsage): + schema (str | Unset): A URL to the JSON Schema for this object. Example: + https://api.tower.dev/v1/schemas/DescribeCatalogUsageResponse.json. + """ + + environment: str + usage: CatalogUsage + schema: str | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + environment = self.environment + + usage = self.usage.to_dict() + + schema = self.schema + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "environment": environment, + "usage": usage, + } + ) + if schema is not UNSET: + field_dict["$schema"] = schema + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.catalog_usage import CatalogUsage + + d = dict(src_dict) + environment = d.pop("environment") + + usage = CatalogUsage.from_dict(d.pop("usage")) + + schema = d.pop("$schema", UNSET) + + describe_catalog_usage_response = cls( + environment=environment, + usage=usage, + schema=schema, + ) + + return describe_catalog_usage_response diff --git a/src/tower/tower_api_client/models/export_catalogs_params.py b/src/tower/tower_api_client/models/export_catalogs_params.py index 8183ce47..6d5438ec 100644 --- a/src/tower/tower_api_client/models/export_catalogs_params.py +++ b/src/tower/tower_api_client/models/export_catalogs_params.py @@ -14,8 +14,10 @@ class ExportCatalogsParams: """ Attributes: - all_ (bool): Whether to fetch all catalogs or only the ones in the supplied environment. Default: False. - environment (str): The environment to filter by. Default: 'default'. + all_ (bool): Whether to export catalogs across all environments, without applying default-environment + inheritance or deduplication. Default: False. + environment (str): Environment whose catalogs to export when all is false. When it has no same-named catalog, a + catalog from default is selected instead. Default: 'default'. page (int): The page number to fetch. Default: 1. page_size (int): The number of records to fetch on each page. Default: 20. public_key (str): The PEM-encoded public key you want to use to encrypt sensitive catalog properties. diff --git a/src/tower/tower_api_client/models/exported_catalog.py b/src/tower/tower_api_client/models/exported_catalog.py index 0a18c5db..9b1c7101 100644 --- a/src/tower/tower_api_client/models/exported_catalog.py +++ b/src/tower/tower_api_client/models/exported_catalog.py @@ -21,7 +21,7 @@ class ExportedCatalog: """ Attributes: created_at (datetime.datetime): - environment (str): + environment (str): Environment containing the catalog definition. name (str): properties (list[ExportedCatalogProperty]): type_ (str): diff --git a/src/tower/tower_api_client/models/list_catalog_facts_response.py b/src/tower/tower_api_client/models/list_catalog_facts_response.py new file mode 100644 index 00000000..7ca62354 --- /dev/null +++ b/src/tower/tower_api_client/models/list_catalog_facts_response.py @@ -0,0 +1,76 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.catalog_fact import CatalogFact + + +T = TypeVar("T", bound="ListCatalogFactsResponse") + + +@_attrs_define +class ListCatalogFactsResponse: + """ + Attributes: + environment (str): Environment containing the catalog definition. + facts (list[CatalogFact]): + schema (str | Unset): A URL to the JSON Schema for this object. Example: + https://api.tower.dev/v1/schemas/ListCatalogFactsResponse.json. + """ + + environment: str + facts: list[CatalogFact] + schema: str | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + environment = self.environment + + facts = [] + for facts_item_data in self.facts: + facts_item = facts_item_data.to_dict() + facts.append(facts_item) + + schema = self.schema + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "environment": environment, + "facts": facts, + } + ) + if schema is not UNSET: + field_dict["$schema"] = schema + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.catalog_fact import CatalogFact + + d = dict(src_dict) + environment = d.pop("environment") + + facts = [] + _facts = d.pop("facts") + for facts_item_data in _facts: + facts_item = CatalogFact.from_dict(facts_item_data) + + facts.append(facts_item) + + schema = d.pop("$schema", UNSET) + + list_catalog_facts_response = cls( + environment=environment, + facts=facts, + schema=schema, + ) + + return list_catalog_facts_response diff --git a/src/tower/tower_api_client/models/organization_storage_usage.py b/src/tower/tower_api_client/models/organization_storage_usage.py new file mode 100644 index 00000000..beb8473b --- /dev/null +++ b/src/tower/tower_api_client/models/organization_storage_usage.py @@ -0,0 +1,71 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import Any, TypeVar, cast + +from attrs import define as _attrs_define +from dateutil.parser import isoparse + +T = TypeVar("T", bound="OrganizationStorageUsage") + + +@_attrs_define +class OrganizationStorageUsage: + """ + Attributes: + measured_at (datetime.datetime | None): When the total was measured. Null when no measurement is available. + total_bytes (int): Physical bytes across the organization's Tower-managed catalogs, including Iceberg metadata + and not-yet-compacted snapshot history. + """ + + measured_at: datetime.datetime | None + total_bytes: int + + def to_dict(self) -> dict[str, Any]: + measured_at: None | str + if isinstance(self.measured_at, datetime.datetime): + measured_at = self.measured_at.isoformat() + else: + measured_at = self.measured_at + + total_bytes = self.total_bytes + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "measured_at": measured_at, + "total_bytes": total_bytes, + } + ) + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + + def _parse_measured_at(data: object) -> datetime.datetime | None: + if data is None: + return data + try: + if not isinstance(data, str): + raise TypeError() + measured_at_type_0 = isoparse(data) + + return measured_at_type_0 + except (TypeError, ValueError, AttributeError, KeyError): + pass + return cast(datetime.datetime | None, data) + + measured_at = _parse_measured_at(d.pop("measured_at")) + + total_bytes = d.pop("total_bytes") + + organization_storage_usage = cls( + measured_at=measured_at, + total_bytes=total_bytes, + ) + + return organization_storage_usage diff --git a/src/tower/tower_api_client/models/organization_usage.py b/src/tower/tower_api_client/models/organization_usage.py index 74bda4e3..9591c2f7 100644 --- a/src/tower/tower_api_client/models/organization_usage.py +++ b/src/tower/tower_api_client/models/organization_usage.py @@ -8,6 +8,7 @@ from ..types import UNSET, Unset if TYPE_CHECKING: + from ..models.organization_storage_usage import OrganizationStorageUsage from ..models.usage_limit import UsageLimit @@ -25,6 +26,7 @@ class OrganizationUsage: members (UsageLimit): organization_name (str): The name of the organization. self_hosted_runners (UsageLimit): + storage (OrganizationStorageUsage): schema (str | Unset): A URL to the JSON Schema for this object. Example: https://api.tower.dev/v1/schemas/OrganizationUsage.json. """ @@ -36,6 +38,7 @@ class OrganizationUsage: members: UsageLimit organization_name: str self_hosted_runners: UsageLimit + storage: OrganizationStorageUsage schema: str | Unset = UNSET def to_dict(self) -> dict[str, Any]: @@ -53,6 +56,8 @@ def to_dict(self) -> dict[str, Any]: self_hosted_runners = self.self_hosted_runners.to_dict() + storage = self.storage.to_dict() + schema = self.schema field_dict: dict[str, Any] = {} @@ -66,6 +71,7 @@ def to_dict(self) -> dict[str, Any]: "members": members, "organization_name": organization_name, "self_hosted_runners": self_hosted_runners, + "storage": storage, } ) if schema is not UNSET: @@ -75,6 +81,7 @@ def to_dict(self) -> dict[str, Any]: @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.organization_storage_usage import OrganizationStorageUsage from ..models.usage_limit import UsageLimit d = dict(src_dict) @@ -92,6 +99,8 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: self_hosted_runners = UsageLimit.from_dict(d.pop("self_hosted_runners")) + storage = OrganizationStorageUsage.from_dict(d.pop("storage")) + schema = d.pop("$schema", UNSET) organization_usage = cls( @@ -102,6 +111,7 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: members=members, organization_name=organization_name, self_hosted_runners=self_hosted_runners, + storage=storage, schema=schema, ) diff --git a/src/tower/tower_api_client/models/run_and_links.py b/src/tower/tower_api_client/models/run_and_links.py new file mode 100644 index 00000000..8267fe53 --- /dev/null +++ b/src/tower/tower_api_client/models/run_and_links.py @@ -0,0 +1,58 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar + +from attrs import define as _attrs_define + +if TYPE_CHECKING: + from ..models.run import Run + from ..models.run_links import RunLinks + + +T = TypeVar("T", bound="RunAndLinks") + + +@_attrs_define +class RunAndLinks: + """ + Attributes: + links (RunLinks): + run (Run): + """ + + links: RunLinks + run: Run + + def to_dict(self) -> dict[str, Any]: + links = self.links.to_dict() + + run = self.run.to_dict() + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "$links": links, + "run": run, + } + ) + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.run import Run + from ..models.run_links import RunLinks + + d = dict(src_dict) + links = RunLinks.from_dict(d.pop("$links")) + + run = Run.from_dict(d.pop("run")) + + run_and_links = cls( + links=links, + run=run, + ) + + return run_and_links diff --git a/src/tower/tower_api_client/models/run_links.py b/src/tower/tower_api_client/models/run_links.py new file mode 100644 index 00000000..cccc1afb --- /dev/null +++ b/src/tower/tower_api_client/models/run_links.py @@ -0,0 +1,63 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, cast + +from attrs import define as _attrs_define + +T = TypeVar("T", bound="RunLinks") + + +@_attrs_define +class RunLinks: + """ + Attributes: + next_number (int | None): The number of the next run, if any. + prev_number (int | None): The number of the previous run, if any. + """ + + next_number: int | None + prev_number: int | None + + def to_dict(self) -> dict[str, Any]: + next_number: int | None + next_number = self.next_number + + prev_number: int | None + prev_number = self.prev_number + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "next_number": next_number, + "prev_number": prev_number, + } + ) + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + + def _parse_next_number(data: object) -> int | None: + if data is None: + return data + return cast(int | None, data) + + next_number = _parse_next_number(d.pop("next_number")) + + def _parse_prev_number(data: object) -> int | None: + if data is None: + return data + return cast(int | None, data) + + prev_number = _parse_prev_number(d.pop("prev_number")) + + run_links = cls( + next_number=next_number, + prev_number=prev_number, + ) + + return run_links diff --git a/src/tower/tower_api_client/models/tag_filter.py b/src/tower/tower_api_client/models/tag_filter.py new file mode 100644 index 00000000..9dc8d879 --- /dev/null +++ b/src/tower/tower_api_client/models/tag_filter.py @@ -0,0 +1,73 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, cast + +from attrs import define as _attrs_define + +from ..models.tag_filter_op import TagFilterOp +from ..types import UNSET, Unset + +T = TypeVar("T", bound="TagFilter") + + +@_attrs_define +class TagFilter: + """ + Attributes: + name (str): The tag name to search. + op (TagFilterOp): + value (str | Unset): Required if operator is eq + values (list[str] | Unset): Required if operator is in or notIn + """ + + name: str + op: TagFilterOp + value: str | Unset = UNSET + values: list[str] | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + name = self.name + + op = self.op.value + + value = self.value + + values: list[str] | Unset = UNSET + if not isinstance(self.values, Unset): + values = self.values + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "name": name, + "op": op, + } + ) + if value is not UNSET: + field_dict["value"] = value + if values is not UNSET: + field_dict["values"] = values + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + name = d.pop("name") + + op = TagFilterOp(d.pop("op")) + + value = d.pop("value", UNSET) + + values = cast(list[str], d.pop("values", UNSET)) + + tag_filter = cls( + name=name, + op=op, + value=value, + values=values, + ) + + return tag_filter diff --git a/src/tower/tower_api_client/models/tag_filter_op.py b/src/tower/tower_api_client/models/tag_filter_op.py new file mode 100644 index 00000000..4ebd5995 --- /dev/null +++ b/src/tower/tower_api_client/models/tag_filter_op.py @@ -0,0 +1,10 @@ +from enum import Enum + + +class TagFilterOp(str, Enum): + EQ = "eq" + IN = "in" + NOTIN = "notIn" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/tower/tower_api_client/models/token.py b/src/tower/tower_api_client/models/token.py index 598af35c..b61bf039 100644 --- a/src/tower/tower_api_client/models/token.py +++ b/src/tower/tower_api_client/models/token.py @@ -15,7 +15,7 @@ class Token: """ Attributes: access_token (str): The access token to use when authenticating API requests with Tower. - jwt (str): + jwt (str): This property is deprecated. Use access_token instead. refresh_token (str | Unset): The refresh token to use when refreshing an expired access token. For security reasons, refresh tokens should only be transmitted over secure channels and never logged or stored in plaintext. It will only be returned upon initial authentication or when explicitly refreshing the access token. diff --git a/src/tower/tower_api_client/models/update_account_params_execution_region.py b/src/tower/tower_api_client/models/update_account_params_execution_region.py index 132b9ce6..54752542 100644 --- a/src/tower/tower_api_client/models/update_account_params_execution_region.py +++ b/src/tower/tower_api_client/models/update_account_params_execution_region.py @@ -2,7 +2,10 @@ class UpdateAccountParamsExecutionRegion(str, Enum): + AP_NORTHEAST_1 = "ap-northeast-1" + AP_SOUTHEAST_2 = "ap-southeast-2" EU_CENTRAL_1 = "eu-central-1" + EU_WEST_1 = "eu-west-1" US_EAST_1 = "us-east-1" US_WEST_2 = "us-west-2" diff --git a/src/tower/tower_api_client/models/update_app_params.py b/src/tower/tower_api_client/models/update_app_params.py index c970dfd0..97b4846f 100644 --- a/src/tower/tower_api_client/models/update_app_params.py +++ b/src/tower/tower_api_client/models/update_app_params.py @@ -8,6 +8,7 @@ from ..types import UNSET, Unset if TYPE_CHECKING: + from ..models.app_tag import AppTag from ..models.run_retry_policy import RunRetryPolicy @@ -20,7 +21,7 @@ class UpdateAppParams: Attributes: schema (str | Unset): A URL to the JSON Schema for this object. Example: https://api.tower.dev/v1/schemas/UpdateAppParams.json. - description (None | str | Unset): New description for the App + description (None | str | Unset): Deprecated: use short_description instead. is_externally_accessible (bool | None | Unset): Indicates that web traffic should be routed to this app and that its runs should get a hostname assigned to it. pending_timeout (int | None | Unset): The amount of time in seconds that runs of this app can stay in pending @@ -28,9 +29,11 @@ class UpdateAppParams: retry_policy (RunRetryPolicy | Unset): running_timeout (int | None | Unset): The amount of time in seconds that runs of this app can stay in running state before being marked as failed. + short_description (None | str | Unset): New description for the app. status (None | str | Unset): New status for the App subdomain (None | str | Unset): The subdomain this app is accessible under. Requires is_externally_accessible to be true. + tags (list[AppTag] | Unset): The tags for this app. """ schema: str | Unset = UNSET @@ -39,8 +42,10 @@ class UpdateAppParams: pending_timeout: int | None | Unset = UNSET retry_policy: RunRetryPolicy | Unset = UNSET running_timeout: int | None | Unset = UNSET + short_description: None | str | Unset = UNSET status: None | str | Unset = UNSET subdomain: None | str | Unset = UNSET + tags: list[AppTag] | Unset = UNSET def to_dict(self) -> dict[str, Any]: schema = self.schema @@ -73,6 +78,12 @@ def to_dict(self) -> dict[str, Any]: else: running_timeout = self.running_timeout + short_description: None | str | Unset + if isinstance(self.short_description, Unset): + short_description = UNSET + else: + short_description = self.short_description + status: None | str | Unset if isinstance(self.status, Unset): status = UNSET @@ -85,6 +96,13 @@ def to_dict(self) -> dict[str, Any]: else: subdomain = self.subdomain + tags: list[dict[str, Any]] | Unset = UNSET + if not isinstance(self.tags, Unset): + tags = [] + for tags_item_data in self.tags: + tags_item = tags_item_data.to_dict() + tags.append(tags_item) + field_dict: dict[str, Any] = {} field_dict.update({}) @@ -100,15 +118,20 @@ def to_dict(self) -> dict[str, Any]: field_dict["retry_policy"] = retry_policy if running_timeout is not UNSET: field_dict["running_timeout"] = running_timeout + if short_description is not UNSET: + field_dict["short_description"] = short_description if status is not UNSET: field_dict["status"] = status if subdomain is not UNSET: field_dict["subdomain"] = subdomain + if tags is not UNSET: + field_dict["tags"] = tags return field_dict @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.app_tag import AppTag from ..models.run_retry_policy import RunRetryPolicy d = dict(src_dict) @@ -159,6 +182,15 @@ def _parse_running_timeout(data: object) -> int | None | Unset: running_timeout = _parse_running_timeout(d.pop("running_timeout", UNSET)) + def _parse_short_description(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + short_description = _parse_short_description(d.pop("short_description", UNSET)) + def _parse_status(data: object) -> None | str | Unset: if data is None: return data @@ -177,6 +209,15 @@ def _parse_subdomain(data: object) -> None | str | Unset: subdomain = _parse_subdomain(d.pop("subdomain", UNSET)) + _tags = d.pop("tags", UNSET) + tags: list[AppTag] | Unset = UNSET + if _tags is not UNSET: + tags = [] + for tags_item_data in _tags: + tags_item = AppTag.from_dict(tags_item_data) + + tags.append(tags_item) + update_app_params = cls( schema=schema, description=description, @@ -184,8 +225,10 @@ def _parse_subdomain(data: object) -> None | str | Unset: pending_timeout=pending_timeout, retry_policy=retry_policy, running_timeout=running_timeout, + short_description=short_description, status=status, subdomain=subdomain, + tags=tags, ) return update_app_params diff --git a/src/tower/tower_api_client/models/update_catalog_fact_body.py b/src/tower/tower_api_client/models/update_catalog_fact_body.py new file mode 100644 index 00000000..02d57f5e --- /dev/null +++ b/src/tower/tower_api_client/models/update_catalog_fact_body.py @@ -0,0 +1,100 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar + +from attrs import define as _attrs_define + +from ..models.update_catalog_fact_body_confidence import UpdateCatalogFactBodyConfidence +from ..models.update_catalog_fact_body_scope import UpdateCatalogFactBodyScope +from ..types import UNSET, Unset + +T = TypeVar("T", bound="UpdateCatalogFactBody") + + +@_attrs_define +class UpdateCatalogFactBody: + """ + Attributes: + confidence (UpdateCatalogFactBodyConfidence): How trustworthy the fact is. + scope (UpdateCatalogFactBodyScope): What kind of object the fact is about. + statement (str): The human-readable meaning of the fact. + schema (str | Unset): A URL to the JSON Schema for this object. Example: + https://api.tower.dev/v1/schemas/UpdateCatalogFactBody.json. + body (str | Unset): Optional structured payload (SQL, unit, enum values) as a JSON string. + object_ (str | Unset): Descriptive path to what the fact is about, e.g. "bronze.runs.deleted_at". Empty for + catalog-scoped facts. + source (str | Unset): Where the fact came from (agent id, user, ...). + """ + + confidence: UpdateCatalogFactBodyConfidence + scope: UpdateCatalogFactBodyScope + statement: str + schema: str | Unset = UNSET + body: str | Unset = UNSET + object_: str | Unset = UNSET + source: str | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + confidence = self.confidence.value + + scope = self.scope.value + + statement = self.statement + + schema = self.schema + + body = self.body + + object_ = self.object_ + + source = self.source + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "confidence": confidence, + "scope": scope, + "statement": statement, + } + ) + if schema is not UNSET: + field_dict["$schema"] = schema + if body is not UNSET: + field_dict["body"] = body + if object_ is not UNSET: + field_dict["object"] = object_ + if source is not UNSET: + field_dict["source"] = source + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + confidence = UpdateCatalogFactBodyConfidence(d.pop("confidence")) + + scope = UpdateCatalogFactBodyScope(d.pop("scope")) + + statement = d.pop("statement") + + schema = d.pop("$schema", UNSET) + + body = d.pop("body", UNSET) + + object_ = d.pop("object", UNSET) + + source = d.pop("source", UNSET) + + update_catalog_fact_body = cls( + confidence=confidence, + scope=scope, + statement=statement, + schema=schema, + body=body, + object_=object_, + source=source, + ) + + return update_catalog_fact_body diff --git a/src/tower/tower_api_client/models/update_catalog_fact_body_confidence.py b/src/tower/tower_api_client/models/update_catalog_fact_body_confidence.py new file mode 100644 index 00000000..864de3b8 --- /dev/null +++ b/src/tower/tower_api_client/models/update_catalog_fact_body_confidence.py @@ -0,0 +1,10 @@ +from enum import Enum + + +class UpdateCatalogFactBodyConfidence(str, Enum): + CONFIRMED = "confirmed" + HEURISTIC = "heuristic" + INFERRED = "inferred" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/tower/tower_api_client/models/update_catalog_fact_body_scope.py b/src/tower/tower_api_client/models/update_catalog_fact_body_scope.py new file mode 100644 index 00000000..1e6ef283 --- /dev/null +++ b/src/tower/tower_api_client/models/update_catalog_fact_body_scope.py @@ -0,0 +1,12 @@ +from enum import Enum + + +class UpdateCatalogFactBodyScope(str, Enum): + CATALOG = "catalog" + COLUMN = "column" + METRIC = "metric" + NAMESPACE = "namespace" + TABLE = "table" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/tower/tower_api_client/models/update_catalog_fact_response.py b/src/tower/tower_api_client/models/update_catalog_fact_response.py new file mode 100644 index 00000000..d2a77508 --- /dev/null +++ b/src/tower/tower_api_client/models/update_catalog_fact_response.py @@ -0,0 +1,60 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.catalog_fact import CatalogFact + + +T = TypeVar("T", bound="UpdateCatalogFactResponse") + + +@_attrs_define +class UpdateCatalogFactResponse: + """ + Attributes: + fact (CatalogFact): + schema (str | Unset): A URL to the JSON Schema for this object. Example: + https://api.tower.dev/v1/schemas/UpdateCatalogFactResponse.json. + """ + + fact: CatalogFact + schema: str | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + fact = self.fact.to_dict() + + schema = self.schema + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "fact": fact, + } + ) + if schema is not UNSET: + field_dict["$schema"] = schema + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.catalog_fact import CatalogFact + + d = dict(src_dict) + fact = CatalogFact.from_dict(d.pop("fact")) + + schema = d.pop("$schema", UNSET) + + update_catalog_fact_response = cls( + fact=fact, + schema=schema, + ) + + return update_catalog_fact_response diff --git a/src/tower/tower_api_client/models/update_catalog_params.py b/src/tower/tower_api_client/models/update_catalog_params.py index 673099c9..555e31b8 100644 --- a/src/tower/tower_api_client/models/update_catalog_params.py +++ b/src/tower/tower_api_client/models/update_catalog_params.py @@ -18,7 +18,8 @@ class UpdateCatalogParams: """ Attributes: - environment (str): New environment for the catalog + environment (str): The environment containing the catalog to update. Catalogs cannot be moved between + environments. properties (list[EncryptedCatalogProperty]): schema (str | Unset): A URL to the JSON Schema for this object. Example: https://api.tower.dev/v1/schemas/UpdateCatalogParams.json. diff --git a/src/tower/tower_api_client/models/update_team_params_execution_region.py b/src/tower/tower_api_client/models/update_team_params_execution_region.py index de99bdc5..e209436e 100644 --- a/src/tower/tower_api_client/models/update_team_params_execution_region.py +++ b/src/tower/tower_api_client/models/update_team_params_execution_region.py @@ -2,7 +2,10 @@ class UpdateTeamParamsExecutionRegion(str, Enum): + AP_NORTHEAST_1 = "ap-northeast-1" + AP_SOUTHEAST_2 = "ap-southeast-2" EU_CENTRAL_1 = "eu-central-1" + EU_WEST_1 = "eu-west-1" US_EAST_1 = "us-east-1" US_WEST_2 = "us-west-2" diff --git a/src/tower/tower_api_client/models/vend_catalog_credentials_response.py b/src/tower/tower_api_client/models/vend_catalog_credentials_response.py index 484088bd..3d59c98e 100644 --- a/src/tower/tower_api_client/models/vend_catalog_credentials_response.py +++ b/src/tower/tower_api_client/models/vend_catalog_credentials_response.py @@ -19,16 +19,20 @@ class VendCatalogCredentialsResponse: """ Attributes: credentials (CatalogCredentials): + environment (str): Environment containing the catalog definition. schema (str | Unset): A URL to the JSON Schema for this object. Example: https://api.tower.dev/v1/schemas/VendCatalogCredentialsResponse.json. """ credentials: CatalogCredentials + environment: str schema: str | Unset = UNSET def to_dict(self) -> dict[str, Any]: credentials = self.credentials.to_dict() + environment = self.environment + schema = self.schema field_dict: dict[str, Any] = {} @@ -36,6 +40,7 @@ def to_dict(self) -> dict[str, Any]: field_dict.update( { "credentials": credentials, + "environment": environment, } ) if schema is not UNSET: @@ -50,10 +55,13 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) credentials = CatalogCredentials.from_dict(d.pop("credentials")) + environment = d.pop("environment") + schema = d.pop("$schema", UNSET) vend_catalog_credentials_response = cls( credentials=credentials, + environment=environment, schema=schema, ) diff --git a/tests/mock-api-server/main.py b/tests/mock-api-server/main.py index af30b4a7..f16d829c 100644 --- a/tests/mock-api-server/main.py +++ b/tests/mock-api-server/main.py @@ -67,6 +67,7 @@ async def log_requests(request: Request, call_next): "created_at": datetime.datetime.now().isoformat(), "next_run_at": None, "health_status": "healthy", + "is_example": False, "pending_timeout": 300, "running_timeout": 0, "run_results": { @@ -153,6 +154,7 @@ async def create_app(app_data: Dict[str, Any]): new_app = { "created_at": datetime.datetime.now().isoformat(), "health_status": "healthy", + "is_example": False, "is_externally_accessible": True, "name": app_name, "next_run_at": None, diff --git a/tests/tower/test_storage.py b/tests/tower/test_storage.py index 43c70842..2f29c6e1 100644 --- a/tests/tower/test_storage.py +++ b/tests/tower/test_storage.py @@ -95,7 +95,10 @@ def test_get_tower_catalog_credentials_caches_vended_credentials(monkeypatch): def vend(ctx, name, environment, mode): calls.append((name, environment, mode)) - return VendCatalogCredentialsResponse(credentials=credentials) + return VendCatalogCredentialsResponse( + credentials=credentials, + environment=environment, + ) monkeypatch.setattr(_storage.TowerContext, "build", staticmethod(lambda: ctx)) monkeypatch.setattr(_storage, "_vend_catalog_credentials", vend) @@ -135,7 +138,10 @@ def test_get_tower_catalog_credentials_prunes_expired_cache_entries(monkeypatch) ) def vend(ctx, name, environment, mode): - return VendCatalogCredentialsResponse(credentials=fresh_credentials) + return VendCatalogCredentialsResponse( + credentials=fresh_credentials, + environment=environment, + ) monkeypatch.setattr(_storage.TowerContext, "build", staticmethod(lambda: ctx)) monkeypatch.setattr(_storage, "_vend_catalog_credentials", vend) @@ -164,7 +170,10 @@ def test_default_catalog_vend_retries_after_legacy_provisioning(monkeypatch): responses = [ ErrorModel(status=404, detail="not found"), ErrorModel(status=404, detail="still provisioning"), - VendCatalogCredentialsResponse(credentials=credentials), + VendCatalogCredentialsResponse( + credentials=credentials, + environment="default", + ), ] legacy_calls = []