workato-platform-cli 1.0.0rc5.dev5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- workato_platform_cli/__init__.py +135 -0
- workato_platform_cli/_version.py +34 -0
- workato_platform_cli/cli/__init__.py +126 -0
- workato_platform_cli/cli/commands/__init__.py +0 -0
- workato_platform_cli/cli/commands/api_clients.py +627 -0
- workato_platform_cli/cli/commands/api_collections.py +497 -0
- workato_platform_cli/cli/commands/assets.py +82 -0
- workato_platform_cli/cli/commands/connections.py +1205 -0
- workato_platform_cli/cli/commands/connectors/__init__.py +0 -0
- workato_platform_cli/cli/commands/connectors/command.py +178 -0
- workato_platform_cli/cli/commands/connectors/connector_manager.py +351 -0
- workato_platform_cli/cli/commands/data_tables.py +345 -0
- workato_platform_cli/cli/commands/guide.py +315 -0
- workato_platform_cli/cli/commands/init.py +229 -0
- workato_platform_cli/cli/commands/profiles.py +364 -0
- workato_platform_cli/cli/commands/projects/__init__.py +0 -0
- workato_platform_cli/cli/commands/projects/command.py +513 -0
- workato_platform_cli/cli/commands/projects/project_manager.py +338 -0
- workato_platform_cli/cli/commands/properties.py +174 -0
- workato_platform_cli/cli/commands/pull.py +327 -0
- workato_platform_cli/cli/commands/push/__init__.py +0 -0
- workato_platform_cli/cli/commands/push/command.py +320 -0
- workato_platform_cli/cli/commands/recipes/__init__.py +0 -0
- workato_platform_cli/cli/commands/recipes/command.py +847 -0
- workato_platform_cli/cli/commands/recipes/validator.py +1740 -0
- workato_platform_cli/cli/commands/workspace.py +73 -0
- workato_platform_cli/cli/containers.py +80 -0
- workato_platform_cli/cli/resources/data/connection-data.json +7364 -0
- workato_platform_cli/cli/resources/data/picklist-data.json +3706 -0
- workato_platform_cli/cli/resources/docs/README.md +178 -0
- workato_platform_cli/cli/resources/docs/actions.md +452 -0
- workato_platform_cli/cli/resources/docs/block-structure.md +424 -0
- workato_platform_cli/cli/resources/docs/connections-parameters.md +11946 -0
- workato_platform_cli/cli/resources/docs/data-mapping.md +779 -0
- workato_platform_cli/cli/resources/docs/formulas/array-list-formulas.md +1276 -0
- workato_platform_cli/cli/resources/docs/formulas/conditions.md +102 -0
- workato_platform_cli/cli/resources/docs/formulas/date-formulas.md +798 -0
- workato_platform_cli/cli/resources/docs/formulas/number-formulas.md +507 -0
- workato_platform_cli/cli/resources/docs/formulas/other-formulas.md +419 -0
- workato_platform_cli/cli/resources/docs/formulas/string-formulas.md +1353 -0
- workato_platform_cli/cli/resources/docs/formulas.md +214 -0
- workato_platform_cli/cli/resources/docs/naming-conventions.md +163 -0
- workato_platform_cli/cli/resources/docs/recipe-deployment-workflow.md +352 -0
- workato_platform_cli/cli/resources/docs/recipe-fundamentals.md +179 -0
- workato_platform_cli/cli/resources/docs/triggers.md +360 -0
- workato_platform_cli/cli/utils/__init__.py +10 -0
- workato_platform_cli/cli/utils/config/__init__.py +33 -0
- workato_platform_cli/cli/utils/config/manager.py +1001 -0
- workato_platform_cli/cli/utils/config/models.py +89 -0
- workato_platform_cli/cli/utils/config/profiles.py +491 -0
- workato_platform_cli/cli/utils/config/workspace.py +113 -0
- workato_platform_cli/cli/utils/exception_handler.py +531 -0
- workato_platform_cli/cli/utils/gitignore.py +32 -0
- workato_platform_cli/cli/utils/ignore_patterns.py +44 -0
- workato_platform_cli/cli/utils/spinner.py +63 -0
- workato_platform_cli/cli/utils/version_checker.py +237 -0
- workato_platform_cli/client/__init__.py +0 -0
- workato_platform_cli/client/workato_api/__init__.py +202 -0
- workato_platform_cli/client/workato_api/api/__init__.py +15 -0
- workato_platform_cli/client/workato_api/api/api_platform_api.py +2875 -0
- workato_platform_cli/client/workato_api/api/connections_api.py +1807 -0
- workato_platform_cli/client/workato_api/api/connectors_api.py +840 -0
- workato_platform_cli/client/workato_api/api/data_tables_api.py +604 -0
- workato_platform_cli/client/workato_api/api/export_api.py +621 -0
- workato_platform_cli/client/workato_api/api/folders_api.py +621 -0
- workato_platform_cli/client/workato_api/api/packages_api.py +1197 -0
- workato_platform_cli/client/workato_api/api/projects_api.py +590 -0
- workato_platform_cli/client/workato_api/api/properties_api.py +620 -0
- workato_platform_cli/client/workato_api/api/recipes_api.py +1379 -0
- workato_platform_cli/client/workato_api/api/users_api.py +285 -0
- workato_platform_cli/client/workato_api/api_client.py +807 -0
- workato_platform_cli/client/workato_api/api_response.py +21 -0
- workato_platform_cli/client/workato_api/configuration.py +601 -0
- workato_platform_cli/client/workato_api/docs/APIPlatformApi.md +844 -0
- workato_platform_cli/client/workato_api/docs/ApiClient.md +46 -0
- workato_platform_cli/client/workato_api/docs/ApiClientApiCollectionsInner.md +30 -0
- workato_platform_cli/client/workato_api/docs/ApiClientApiPoliciesInner.md +30 -0
- workato_platform_cli/client/workato_api/docs/ApiClientCreateRequest.md +46 -0
- workato_platform_cli/client/workato_api/docs/ApiClientListResponse.md +32 -0
- workato_platform_cli/client/workato_api/docs/ApiClientResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/ApiCollection.md +38 -0
- workato_platform_cli/client/workato_api/docs/ApiCollectionCreateRequest.md +32 -0
- workato_platform_cli/client/workato_api/docs/ApiEndpoint.md +41 -0
- workato_platform_cli/client/workato_api/docs/ApiKey.md +36 -0
- workato_platform_cli/client/workato_api/docs/ApiKeyCreateRequest.md +32 -0
- workato_platform_cli/client/workato_api/docs/ApiKeyListResponse.md +32 -0
- workato_platform_cli/client/workato_api/docs/ApiKeyResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/Asset.md +39 -0
- workato_platform_cli/client/workato_api/docs/AssetReference.md +37 -0
- workato_platform_cli/client/workato_api/docs/Connection.md +44 -0
- workato_platform_cli/client/workato_api/docs/ConnectionCreateRequest.md +35 -0
- workato_platform_cli/client/workato_api/docs/ConnectionUpdateRequest.md +34 -0
- workato_platform_cli/client/workato_api/docs/ConnectionsApi.md +526 -0
- workato_platform_cli/client/workato_api/docs/ConnectorAction.md +33 -0
- workato_platform_cli/client/workato_api/docs/ConnectorVersion.md +32 -0
- workato_platform_cli/client/workato_api/docs/ConnectorsApi.md +249 -0
- workato_platform_cli/client/workato_api/docs/CreateExportManifestRequest.md +29 -0
- workato_platform_cli/client/workato_api/docs/CreateFolderRequest.md +30 -0
- workato_platform_cli/client/workato_api/docs/CustomConnector.md +35 -0
- workato_platform_cli/client/workato_api/docs/CustomConnectorCodeResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/CustomConnectorCodeResponseData.md +29 -0
- workato_platform_cli/client/workato_api/docs/CustomConnectorListResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/DataTable.md +34 -0
- workato_platform_cli/client/workato_api/docs/DataTableColumn.md +37 -0
- workato_platform_cli/client/workato_api/docs/DataTableColumnRequest.md +37 -0
- workato_platform_cli/client/workato_api/docs/DataTableCreateRequest.md +31 -0
- workato_platform_cli/client/workato_api/docs/DataTableCreateResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/DataTableListResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/DataTableRelation.md +30 -0
- workato_platform_cli/client/workato_api/docs/DataTablesApi.md +172 -0
- workato_platform_cli/client/workato_api/docs/DeleteProject403Response.md +29 -0
- workato_platform_cli/client/workato_api/docs/Error.md +29 -0
- workato_platform_cli/client/workato_api/docs/ExportApi.md +175 -0
- workato_platform_cli/client/workato_api/docs/ExportManifestRequest.md +35 -0
- workato_platform_cli/client/workato_api/docs/ExportManifestResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/ExportManifestResponseResult.md +36 -0
- workato_platform_cli/client/workato_api/docs/Folder.md +35 -0
- workato_platform_cli/client/workato_api/docs/FolderAssetsResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/FolderAssetsResponseResult.md +29 -0
- workato_platform_cli/client/workato_api/docs/FolderCreationResponse.md +35 -0
- workato_platform_cli/client/workato_api/docs/FoldersApi.md +176 -0
- workato_platform_cli/client/workato_api/docs/ImportResults.md +32 -0
- workato_platform_cli/client/workato_api/docs/OAuthUrlResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/OAuthUrlResponseData.md +29 -0
- workato_platform_cli/client/workato_api/docs/OpenApiSpec.md +30 -0
- workato_platform_cli/client/workato_api/docs/PackageDetailsResponse.md +35 -0
- workato_platform_cli/client/workato_api/docs/PackageDetailsResponseRecipeStatusInner.md +30 -0
- workato_platform_cli/client/workato_api/docs/PackageResponse.md +33 -0
- workato_platform_cli/client/workato_api/docs/PackagesApi.md +364 -0
- workato_platform_cli/client/workato_api/docs/PicklistRequest.md +30 -0
- workato_platform_cli/client/workato_api/docs/PicklistResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/PlatformConnector.md +36 -0
- workato_platform_cli/client/workato_api/docs/PlatformConnectorListResponse.md +32 -0
- workato_platform_cli/client/workato_api/docs/Project.md +32 -0
- workato_platform_cli/client/workato_api/docs/ProjectsApi.md +173 -0
- workato_platform_cli/client/workato_api/docs/PropertiesApi.md +186 -0
- workato_platform_cli/client/workato_api/docs/Recipe.md +58 -0
- workato_platform_cli/client/workato_api/docs/RecipeConfigInner.md +33 -0
- workato_platform_cli/client/workato_api/docs/RecipeConnectionUpdateRequest.md +30 -0
- workato_platform_cli/client/workato_api/docs/RecipeListResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/RecipeStartResponse.md +31 -0
- workato_platform_cli/client/workato_api/docs/RecipesApi.md +367 -0
- workato_platform_cli/client/workato_api/docs/RuntimeUserConnectionCreateRequest.md +34 -0
- workato_platform_cli/client/workato_api/docs/RuntimeUserConnectionResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/RuntimeUserConnectionResponseData.md +30 -0
- workato_platform_cli/client/workato_api/docs/SuccessResponse.md +29 -0
- workato_platform_cli/client/workato_api/docs/UpsertProjectPropertiesRequest.md +29 -0
- workato_platform_cli/client/workato_api/docs/User.md +48 -0
- workato_platform_cli/client/workato_api/docs/UsersApi.md +84 -0
- workato_platform_cli/client/workato_api/docs/ValidationError.md +30 -0
- workato_platform_cli/client/workato_api/docs/ValidationErrorErrorsValue.md +28 -0
- workato_platform_cli/client/workato_api/exceptions.py +216 -0
- workato_platform_cli/client/workato_api/models/__init__.py +83 -0
- workato_platform_cli/client/workato_api/models/api_client.py +185 -0
- workato_platform_cli/client/workato_api/models/api_client_api_collections_inner.py +89 -0
- workato_platform_cli/client/workato_api/models/api_client_api_policies_inner.py +89 -0
- workato_platform_cli/client/workato_api/models/api_client_create_request.py +138 -0
- workato_platform_cli/client/workato_api/models/api_client_list_response.py +101 -0
- workato_platform_cli/client/workato_api/models/api_client_response.py +91 -0
- workato_platform_cli/client/workato_api/models/api_collection.py +110 -0
- workato_platform_cli/client/workato_api/models/api_collection_create_request.py +97 -0
- workato_platform_cli/client/workato_api/models/api_endpoint.py +117 -0
- workato_platform_cli/client/workato_api/models/api_key.py +102 -0
- workato_platform_cli/client/workato_api/models/api_key_create_request.py +93 -0
- workato_platform_cli/client/workato_api/models/api_key_list_response.py +101 -0
- workato_platform_cli/client/workato_api/models/api_key_response.py +91 -0
- workato_platform_cli/client/workato_api/models/asset.py +124 -0
- workato_platform_cli/client/workato_api/models/asset_reference.py +110 -0
- workato_platform_cli/client/workato_api/models/connection.py +173 -0
- workato_platform_cli/client/workato_api/models/connection_create_request.py +99 -0
- workato_platform_cli/client/workato_api/models/connection_update_request.py +97 -0
- workato_platform_cli/client/workato_api/models/connector_action.py +100 -0
- workato_platform_cli/client/workato_api/models/connector_version.py +99 -0
- workato_platform_cli/client/workato_api/models/create_export_manifest_request.py +91 -0
- workato_platform_cli/client/workato_api/models/create_folder_request.py +89 -0
- workato_platform_cli/client/workato_api/models/custom_connector.py +117 -0
- workato_platform_cli/client/workato_api/models/custom_connector_code_response.py +91 -0
- workato_platform_cli/client/workato_api/models/custom_connector_code_response_data.py +87 -0
- workato_platform_cli/client/workato_api/models/custom_connector_list_response.py +95 -0
- workato_platform_cli/client/workato_api/models/data_table.py +107 -0
- workato_platform_cli/client/workato_api/models/data_table_column.py +125 -0
- workato_platform_cli/client/workato_api/models/data_table_column_request.py +130 -0
- workato_platform_cli/client/workato_api/models/data_table_create_request.py +99 -0
- workato_platform_cli/client/workato_api/models/data_table_create_response.py +91 -0
- workato_platform_cli/client/workato_api/models/data_table_list_response.py +95 -0
- workato_platform_cli/client/workato_api/models/data_table_relation.py +90 -0
- workato_platform_cli/client/workato_api/models/delete_project403_response.py +87 -0
- workato_platform_cli/client/workato_api/models/error.py +87 -0
- workato_platform_cli/client/workato_api/models/export_manifest_request.py +107 -0
- workato_platform_cli/client/workato_api/models/export_manifest_response.py +91 -0
- workato_platform_cli/client/workato_api/models/export_manifest_response_result.py +112 -0
- workato_platform_cli/client/workato_api/models/folder.py +110 -0
- workato_platform_cli/client/workato_api/models/folder_assets_response.py +91 -0
- workato_platform_cli/client/workato_api/models/folder_assets_response_result.py +95 -0
- workato_platform_cli/client/workato_api/models/folder_creation_response.py +110 -0
- workato_platform_cli/client/workato_api/models/import_results.py +93 -0
- workato_platform_cli/client/workato_api/models/o_auth_url_response.py +91 -0
- workato_platform_cli/client/workato_api/models/o_auth_url_response_data.py +87 -0
- workato_platform_cli/client/workato_api/models/open_api_spec.py +96 -0
- workato_platform_cli/client/workato_api/models/package_details_response.py +126 -0
- workato_platform_cli/client/workato_api/models/package_details_response_recipe_status_inner.py +99 -0
- workato_platform_cli/client/workato_api/models/package_response.py +109 -0
- workato_platform_cli/client/workato_api/models/picklist_request.py +89 -0
- workato_platform_cli/client/workato_api/models/picklist_response.py +88 -0
- workato_platform_cli/client/workato_api/models/platform_connector.py +116 -0
- workato_platform_cli/client/workato_api/models/platform_connector_list_response.py +101 -0
- workato_platform_cli/client/workato_api/models/project.py +93 -0
- workato_platform_cli/client/workato_api/models/recipe.py +174 -0
- workato_platform_cli/client/workato_api/models/recipe_config_inner.py +100 -0
- workato_platform_cli/client/workato_api/models/recipe_connection_update_request.py +89 -0
- workato_platform_cli/client/workato_api/models/recipe_list_response.py +95 -0
- workato_platform_cli/client/workato_api/models/recipe_start_response.py +91 -0
- workato_platform_cli/client/workato_api/models/runtime_user_connection_create_request.py +97 -0
- workato_platform_cli/client/workato_api/models/runtime_user_connection_response.py +91 -0
- workato_platform_cli/client/workato_api/models/runtime_user_connection_response_data.py +89 -0
- workato_platform_cli/client/workato_api/models/success_response.py +87 -0
- workato_platform_cli/client/workato_api/models/upsert_project_properties_request.py +88 -0
- workato_platform_cli/client/workato_api/models/user.py +151 -0
- workato_platform_cli/client/workato_api/models/validation_error.py +102 -0
- workato_platform_cli/client/workato_api/models/validation_error_errors_value.py +143 -0
- workato_platform_cli/client/workato_api/rest.py +213 -0
- workato_platform_cli/client/workato_api/test/__init__.py +0 -0
- workato_platform_cli/client/workato_api/test/test_api_client.py +94 -0
- workato_platform_cli/client/workato_api/test/test_api_client_api_collections_inner.py +52 -0
- workato_platform_cli/client/workato_api/test/test_api_client_api_policies_inner.py +52 -0
- workato_platform_cli/client/workato_api/test/test_api_client_create_request.py +75 -0
- workato_platform_cli/client/workato_api/test/test_api_client_list_response.py +114 -0
- workato_platform_cli/client/workato_api/test/test_api_client_response.py +104 -0
- workato_platform_cli/client/workato_api/test/test_api_collection.py +72 -0
- workato_platform_cli/client/workato_api/test/test_api_collection_create_request.py +57 -0
- workato_platform_cli/client/workato_api/test/test_api_endpoint.py +75 -0
- workato_platform_cli/client/workato_api/test/test_api_key.py +64 -0
- workato_platform_cli/client/workato_api/test/test_api_key_create_request.py +56 -0
- workato_platform_cli/client/workato_api/test/test_api_key_list_response.py +78 -0
- workato_platform_cli/client/workato_api/test/test_api_key_response.py +68 -0
- workato_platform_cli/client/workato_api/test/test_api_platform_api.py +101 -0
- workato_platform_cli/client/workato_api/test/test_asset.py +67 -0
- workato_platform_cli/client/workato_api/test/test_asset_reference.py +62 -0
- workato_platform_cli/client/workato_api/test/test_connection.py +81 -0
- workato_platform_cli/client/workato_api/test/test_connection_create_request.py +59 -0
- workato_platform_cli/client/workato_api/test/test_connection_update_request.py +56 -0
- workato_platform_cli/client/workato_api/test/test_connections_api.py +73 -0
- workato_platform_cli/client/workato_api/test/test_connector_action.py +59 -0
- workato_platform_cli/client/workato_api/test/test_connector_version.py +58 -0
- workato_platform_cli/client/workato_api/test/test_connectors_api.py +52 -0
- workato_platform_cli/client/workato_api/test/test_create_export_manifest_request.py +88 -0
- workato_platform_cli/client/workato_api/test/test_create_folder_request.py +53 -0
- workato_platform_cli/client/workato_api/test/test_custom_connector.py +76 -0
- workato_platform_cli/client/workato_api/test/test_custom_connector_code_response.py +54 -0
- workato_platform_cli/client/workato_api/test/test_custom_connector_code_response_data.py +52 -0
- workato_platform_cli/client/workato_api/test/test_custom_connector_list_response.py +82 -0
- workato_platform_cli/client/workato_api/test/test_data_table.py +88 -0
- workato_platform_cli/client/workato_api/test/test_data_table_column.py +72 -0
- workato_platform_cli/client/workato_api/test/test_data_table_column_request.py +64 -0
- workato_platform_cli/client/workato_api/test/test_data_table_create_request.py +82 -0
- workato_platform_cli/client/workato_api/test/test_data_table_create_response.py +90 -0
- workato_platform_cli/client/workato_api/test/test_data_table_list_response.py +94 -0
- workato_platform_cli/client/workato_api/test/test_data_table_relation.py +54 -0
- workato_platform_cli/client/workato_api/test/test_data_tables_api.py +45 -0
- workato_platform_cli/client/workato_api/test/test_delete_project403_response.py +51 -0
- workato_platform_cli/client/workato_api/test/test_error.py +52 -0
- workato_platform_cli/client/workato_api/test/test_export_api.py +45 -0
- workato_platform_cli/client/workato_api/test/test_export_manifest_request.py +69 -0
- workato_platform_cli/client/workato_api/test/test_export_manifest_response.py +68 -0
- workato_platform_cli/client/workato_api/test/test_export_manifest_response_result.py +66 -0
- workato_platform_cli/client/workato_api/test/test_folder.py +64 -0
- workato_platform_cli/client/workato_api/test/test_folder_assets_response.py +80 -0
- workato_platform_cli/client/workato_api/test/test_folder_assets_response_result.py +78 -0
- workato_platform_cli/client/workato_api/test/test_folder_creation_response.py +64 -0
- workato_platform_cli/client/workato_api/test/test_folders_api.py +45 -0
- workato_platform_cli/client/workato_api/test/test_import_results.py +58 -0
- workato_platform_cli/client/workato_api/test/test_o_auth_url_response.py +54 -0
- workato_platform_cli/client/workato_api/test/test_o_auth_url_response_data.py +52 -0
- workato_platform_cli/client/workato_api/test/test_open_api_spec.py +54 -0
- workato_platform_cli/client/workato_api/test/test_package_details_response.py +64 -0
- workato_platform_cli/client/workato_api/test/test_package_details_response_recipe_status_inner.py +52 -0
- workato_platform_cli/client/workato_api/test/test_package_response.py +58 -0
- workato_platform_cli/client/workato_api/test/test_packages_api.py +59 -0
- workato_platform_cli/client/workato_api/test/test_picklist_request.py +53 -0
- workato_platform_cli/client/workato_api/test/test_picklist_response.py +52 -0
- workato_platform_cli/client/workato_api/test/test_platform_connector.py +94 -0
- workato_platform_cli/client/workato_api/test/test_platform_connector_list_response.py +106 -0
- workato_platform_cli/client/workato_api/test/test_project.py +57 -0
- workato_platform_cli/client/workato_api/test/test_projects_api.py +45 -0
- workato_platform_cli/client/workato_api/test/test_properties_api.py +45 -0
- workato_platform_cli/client/workato_api/test/test_recipe.py +124 -0
- workato_platform_cli/client/workato_api/test/test_recipe_config_inner.py +55 -0
- workato_platform_cli/client/workato_api/test/test_recipe_connection_update_request.py +54 -0
- workato_platform_cli/client/workato_api/test/test_recipe_list_response.py +134 -0
- workato_platform_cli/client/workato_api/test/test_recipe_start_response.py +54 -0
- workato_platform_cli/client/workato_api/test/test_recipes_api.py +59 -0
- workato_platform_cli/client/workato_api/test/test_runtime_user_connection_create_request.py +59 -0
- workato_platform_cli/client/workato_api/test/test_runtime_user_connection_response.py +56 -0
- workato_platform_cli/client/workato_api/test/test_runtime_user_connection_response_data.py +54 -0
- workato_platform_cli/client/workato_api/test/test_success_response.py +52 -0
- workato_platform_cli/client/workato_api/test/test_upsert_project_properties_request.py +52 -0
- workato_platform_cli/client/workato_api/test/test_user.py +85 -0
- workato_platform_cli/client/workato_api/test/test_users_api.py +38 -0
- workato_platform_cli/client/workato_api/test/test_validation_error.py +52 -0
- workato_platform_cli/client/workato_api/test/test_validation_error_errors_value.py +50 -0
- workato_platform_cli/client/workato_api_README.md +205 -0
- workato_platform_cli-1.0.0rc5.dev5.dist-info/METADATA +185 -0
- workato_platform_cli-1.0.0rc5.dev5.dist-info/RECORD +306 -0
- workato_platform_cli-1.0.0rc5.dev5.dist-info/WHEEL +4 -0
- workato_platform_cli-1.0.0rc5.dev5.dist-info/entry_points.txt +2 -0
- workato_platform_cli-1.0.0rc5.dev5.dist-info/licenses/LICENSE +7 -0
|
@@ -0,0 +1,497 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
|
|
3
|
+
import aiohttp
|
|
4
|
+
import asyncclick as click
|
|
5
|
+
|
|
6
|
+
from dependency_injector.wiring import Provide, inject
|
|
7
|
+
|
|
8
|
+
from workato_platform_cli import Workato
|
|
9
|
+
from workato_platform_cli.cli.commands.projects.project_manager import ProjectManager
|
|
10
|
+
from workato_platform_cli.cli.containers import Container
|
|
11
|
+
from workato_platform_cli.cli.utils import Spinner
|
|
12
|
+
from workato_platform_cli.cli.utils.config import ConfigManager
|
|
13
|
+
from workato_platform_cli.cli.utils.exception_handler import (
|
|
14
|
+
handle_api_exceptions,
|
|
15
|
+
handle_cli_exceptions,
|
|
16
|
+
)
|
|
17
|
+
from workato_platform_cli.client.workato_api.models.api_collection import ApiCollection
|
|
18
|
+
from workato_platform_cli.client.workato_api.models.api_collection_create_request import ( # noqa: E501
|
|
19
|
+
ApiCollectionCreateRequest,
|
|
20
|
+
)
|
|
21
|
+
from workato_platform_cli.client.workato_api.models.api_endpoint import ApiEndpoint
|
|
22
|
+
from workato_platform_cli.client.workato_api.models.open_api_spec import OpenApiSpec
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@click.group()
|
|
26
|
+
def api_collections() -> None:
|
|
27
|
+
"""Manage API collections (generates recipes and endpoints from OpenAPI specs)"""
|
|
28
|
+
pass
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@api_collections.command()
|
|
32
|
+
@click.option("--name", help="Name for the API collection (defaults to project name)")
|
|
33
|
+
@click.option(
|
|
34
|
+
"--format",
|
|
35
|
+
type=click.Choice(["json", "yaml", "url"]),
|
|
36
|
+
required=True,
|
|
37
|
+
help="Format of the OpenAPI spec",
|
|
38
|
+
)
|
|
39
|
+
@click.option(
|
|
40
|
+
"--content",
|
|
41
|
+
required=True,
|
|
42
|
+
help="Path to the spec file (for json/yaml) or URL (for url format)",
|
|
43
|
+
)
|
|
44
|
+
@click.option(
|
|
45
|
+
"--proxy-connection-id",
|
|
46
|
+
type=int,
|
|
47
|
+
help="ID of the proxy connection to use",
|
|
48
|
+
)
|
|
49
|
+
@handle_cli_exceptions
|
|
50
|
+
@inject
|
|
51
|
+
@handle_api_exceptions
|
|
52
|
+
async def create(
|
|
53
|
+
name: str,
|
|
54
|
+
format: str,
|
|
55
|
+
content: str,
|
|
56
|
+
proxy_connection_id: int | None = None,
|
|
57
|
+
config_manager: ConfigManager = Provide[Container.config_manager],
|
|
58
|
+
project_manager: ProjectManager = Provide[Container.project_manager],
|
|
59
|
+
workato_api_client: Workato = Provide[Container.workato_api_client],
|
|
60
|
+
) -> None:
|
|
61
|
+
"""Create a new API collection from OpenAPI spec (creates recipes and endpoints)"""
|
|
62
|
+
|
|
63
|
+
# Load project metadata
|
|
64
|
+
meta_data = config_manager.load_config()
|
|
65
|
+
project_id = meta_data.project_id
|
|
66
|
+
if not project_id:
|
|
67
|
+
click.echo("â No project configured. Please run 'workato init' first.")
|
|
68
|
+
return
|
|
69
|
+
|
|
70
|
+
# Use project name as default if name not provided
|
|
71
|
+
if not name:
|
|
72
|
+
name = meta_data.project_name or "API Collection"
|
|
73
|
+
|
|
74
|
+
# Prepare OpenAPI spec content
|
|
75
|
+
openapi_spec = {"format": format}
|
|
76
|
+
|
|
77
|
+
if format in ["json", "yaml"]:
|
|
78
|
+
# Read content from file
|
|
79
|
+
content_path = Path(content)
|
|
80
|
+
if not content_path.exists():
|
|
81
|
+
click.echo(f"â File not found: {content}")
|
|
82
|
+
return
|
|
83
|
+
|
|
84
|
+
try:
|
|
85
|
+
with open(content_path) as f:
|
|
86
|
+
openapi_spec["content"] = f.read()
|
|
87
|
+
except (FileNotFoundError, PermissionError, OSError) as e:
|
|
88
|
+
click.echo(f"â Failed to read file {content}: {str(e)}")
|
|
89
|
+
return
|
|
90
|
+
else: # url format, download the file
|
|
91
|
+
async with aiohttp.ClientSession() as session:
|
|
92
|
+
response = await session.get(content)
|
|
93
|
+
openapi_spec["content"] = await response.text()
|
|
94
|
+
openapi_spec["format"] = "json"
|
|
95
|
+
|
|
96
|
+
# Create API collection
|
|
97
|
+
spinner = Spinner(f"Creating API collection '{name}'")
|
|
98
|
+
spinner.start()
|
|
99
|
+
|
|
100
|
+
try:
|
|
101
|
+
collection_response = (
|
|
102
|
+
await workato_api_client.api_platform_api.create_api_collection(
|
|
103
|
+
api_collection_create_request=ApiCollectionCreateRequest(
|
|
104
|
+
name=name,
|
|
105
|
+
project_id=project_id,
|
|
106
|
+
proxy_connection_id=proxy_connection_id,
|
|
107
|
+
openapi_spec=OpenApiSpec.model_validate(openapi_spec),
|
|
108
|
+
),
|
|
109
|
+
)
|
|
110
|
+
)
|
|
111
|
+
collection_id = collection_response.id
|
|
112
|
+
finally:
|
|
113
|
+
elapsed = spinner.stop()
|
|
114
|
+
|
|
115
|
+
click.echo(
|
|
116
|
+
f"â
API collection '{name}' ({collection_id}) created successfully "
|
|
117
|
+
f"({elapsed:.1f}s)"
|
|
118
|
+
)
|
|
119
|
+
click.echo()
|
|
120
|
+
|
|
121
|
+
# Display detailed collection information from create response
|
|
122
|
+
# Handle different possible response structures (result, data, or direct)
|
|
123
|
+
display_collection_summary(collection_response)
|
|
124
|
+
|
|
125
|
+
click.echo()
|
|
126
|
+
click.echo("đ Generated from OpenAPI spec:")
|
|
127
|
+
click.echo(" âĸ API endpoints for each path/method combination")
|
|
128
|
+
click.echo(" âĸ Workato recipes implementing the business logic")
|
|
129
|
+
click.echo(" âĸ Request/response schemas and validation")
|
|
130
|
+
click.echo()
|
|
131
|
+
click.echo("đĄ Next steps:")
|
|
132
|
+
click.echo(" âĸ Review generated recipes in your project")
|
|
133
|
+
click.echo(
|
|
134
|
+
" âĸ Enable endpoints: workato api-collections enable-endpoint "
|
|
135
|
+
"--api-endpoint-id <ID>"
|
|
136
|
+
)
|
|
137
|
+
click.echo(" âĸ Test API endpoints with your API client")
|
|
138
|
+
|
|
139
|
+
# Handle post-creation sync
|
|
140
|
+
await project_manager.handle_post_api_sync()
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
@api_collections.command(name="list")
|
|
144
|
+
@click.option("--page", default=1, type=int, help="Page number (default: 1)")
|
|
145
|
+
@click.option(
|
|
146
|
+
"--per-page",
|
|
147
|
+
default=100,
|
|
148
|
+
type=int,
|
|
149
|
+
help="Items per page (default: 100, max: 100)",
|
|
150
|
+
)
|
|
151
|
+
@handle_cli_exceptions
|
|
152
|
+
@inject
|
|
153
|
+
@handle_api_exceptions
|
|
154
|
+
async def list_collections(
|
|
155
|
+
page: int,
|
|
156
|
+
per_page: int,
|
|
157
|
+
workato_api_client: Workato = Provide[Container.workato_api_client],
|
|
158
|
+
) -> None:
|
|
159
|
+
"""List API collections"""
|
|
160
|
+
|
|
161
|
+
# Validate per_page limit
|
|
162
|
+
if per_page > 100:
|
|
163
|
+
click.echo("â Maximum per-page limit is 100")
|
|
164
|
+
return
|
|
165
|
+
|
|
166
|
+
spinner = Spinner(f"Fetching API collections (page {page})")
|
|
167
|
+
spinner.start()
|
|
168
|
+
|
|
169
|
+
try:
|
|
170
|
+
collections = await workato_api_client.api_platform_api.list_api_collections(
|
|
171
|
+
page=page,
|
|
172
|
+
per_page=per_page,
|
|
173
|
+
)
|
|
174
|
+
finally:
|
|
175
|
+
elapsed = spinner.stop()
|
|
176
|
+
|
|
177
|
+
click.echo(f"đ API Collections ({elapsed:.1f}s)")
|
|
178
|
+
click.echo(f" đ Page {page} ({len(collections)} collections)")
|
|
179
|
+
|
|
180
|
+
if not collections:
|
|
181
|
+
click.echo(" âšī¸ No API collections found")
|
|
182
|
+
if page > 1:
|
|
183
|
+
click.echo(" đĄ Try a lower page number")
|
|
184
|
+
return
|
|
185
|
+
|
|
186
|
+
click.echo()
|
|
187
|
+
|
|
188
|
+
# Display collections
|
|
189
|
+
for collection in collections:
|
|
190
|
+
display_collection_summary(collection=collection)
|
|
191
|
+
click.echo()
|
|
192
|
+
|
|
193
|
+
# Show pagination info if more than per_page results might exist
|
|
194
|
+
if len(collections) == per_page:
|
|
195
|
+
click.echo("đĄ Pagination:")
|
|
196
|
+
click.echo(f" âĸ Next page: workato api-collections list --page {page + 1}")
|
|
197
|
+
|
|
198
|
+
if page > 1:
|
|
199
|
+
click.echo(f" âĸ Previous page: workato api-collections list --page {page - 1}")
|
|
200
|
+
|
|
201
|
+
click.echo()
|
|
202
|
+
click.echo("đĄ Commands:")
|
|
203
|
+
click.echo(
|
|
204
|
+
" âĸ List endpoints: workato api-collections list-endpoints "
|
|
205
|
+
"--api-collection-id <ID>"
|
|
206
|
+
)
|
|
207
|
+
click.echo(
|
|
208
|
+
" âĸ Enable endpoint: workato api-collections enable-endpoint "
|
|
209
|
+
"--api-endpoint-id <ID>"
|
|
210
|
+
)
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
@api_collections.command(name="list-endpoints")
|
|
214
|
+
@click.option(
|
|
215
|
+
"--api-collection-id", required=True, type=int, help="ID of the API collection"
|
|
216
|
+
)
|
|
217
|
+
@handle_cli_exceptions
|
|
218
|
+
@inject
|
|
219
|
+
@handle_api_exceptions
|
|
220
|
+
async def list_endpoints(
|
|
221
|
+
api_collection_id: int,
|
|
222
|
+
workato_api_client: Workato = Provide[Container.workato_api_client],
|
|
223
|
+
) -> None:
|
|
224
|
+
"""List endpoints for an API collection"""
|
|
225
|
+
spinner = Spinner(f"Fetching endpoints for collection {api_collection_id}")
|
|
226
|
+
spinner.start()
|
|
227
|
+
|
|
228
|
+
try:
|
|
229
|
+
endpoints: list[ApiEndpoint] = []
|
|
230
|
+
page = 1
|
|
231
|
+
while True:
|
|
232
|
+
page_endpoints = (
|
|
233
|
+
await workato_api_client.api_platform_api.list_api_endpoints(
|
|
234
|
+
api_collection_id=api_collection_id,
|
|
235
|
+
page=page,
|
|
236
|
+
per_page=100,
|
|
237
|
+
)
|
|
238
|
+
)
|
|
239
|
+
endpoints.extend(page_endpoints)
|
|
240
|
+
if len(page_endpoints) < 100:
|
|
241
|
+
break
|
|
242
|
+
page += 1
|
|
243
|
+
|
|
244
|
+
finally:
|
|
245
|
+
elapsed = spinner.stop()
|
|
246
|
+
|
|
247
|
+
if not endpoints:
|
|
248
|
+
click.echo(" âšī¸ No endpoints found for this collection")
|
|
249
|
+
return
|
|
250
|
+
|
|
251
|
+
# Parse the response - API returns a list directly
|
|
252
|
+
total_count = len(endpoints)
|
|
253
|
+
|
|
254
|
+
click.echo(
|
|
255
|
+
f"đ {total_count} API Endpoints for API Collection {api_collection_id} "
|
|
256
|
+
f"({elapsed:.1f}s)"
|
|
257
|
+
)
|
|
258
|
+
click.echo(
|
|
259
|
+
f" đ Base URL: {endpoints[0].url.removesuffix(f'/{endpoints[0].path}')}"
|
|
260
|
+
)
|
|
261
|
+
|
|
262
|
+
click.echo()
|
|
263
|
+
|
|
264
|
+
# Display endpoints
|
|
265
|
+
for endpoint in endpoints:
|
|
266
|
+
display_endpoint_summary(endpoint=endpoint)
|
|
267
|
+
click.echo()
|
|
268
|
+
|
|
269
|
+
click.echo()
|
|
270
|
+
click.echo("đĄ Commands:")
|
|
271
|
+
click.echo(
|
|
272
|
+
" âĸ Enable endpoint: workato api-collections enable-endpoint "
|
|
273
|
+
"--api-endpoint-id <ID>"
|
|
274
|
+
)
|
|
275
|
+
click.echo(
|
|
276
|
+
" âĸ Enable all endpoints: workato api-collections enable-endpoint "
|
|
277
|
+
"--api-collection-id <ID> --all"
|
|
278
|
+
)
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
@api_collections.command(name="enable-endpoint")
|
|
282
|
+
@click.option("--api-endpoint-id", type=int, help="ID of the API endpoint to enable")
|
|
283
|
+
@click.option(
|
|
284
|
+
"--api-collection-id", type=int, help="ID of the API collection (use with --all)"
|
|
285
|
+
)
|
|
286
|
+
@click.option(
|
|
287
|
+
"--all",
|
|
288
|
+
is_flag=True,
|
|
289
|
+
help="Enable all endpoints in the collection (requires --api-collection-id)",
|
|
290
|
+
)
|
|
291
|
+
@handle_cli_exceptions
|
|
292
|
+
@handle_api_exceptions
|
|
293
|
+
async def enable_endpoint(
|
|
294
|
+
api_endpoint_id: int,
|
|
295
|
+
api_collection_id: int,
|
|
296
|
+
all: bool,
|
|
297
|
+
) -> None:
|
|
298
|
+
"""Enable an API endpoint or all endpoints in a collection"""
|
|
299
|
+
|
|
300
|
+
# Validate parameter combinations
|
|
301
|
+
if all and not api_collection_id:
|
|
302
|
+
click.echo("â --all flag requires --api-collection-id")
|
|
303
|
+
return
|
|
304
|
+
|
|
305
|
+
if all and api_endpoint_id:
|
|
306
|
+
click.echo("â Cannot specify both --api-endpoint-id and --all")
|
|
307
|
+
return
|
|
308
|
+
|
|
309
|
+
if not all and not api_endpoint_id:
|
|
310
|
+
click.echo(
|
|
311
|
+
"â Must specify either --api-endpoint-id or --all with --api-collection-id"
|
|
312
|
+
)
|
|
313
|
+
return
|
|
314
|
+
|
|
315
|
+
if all:
|
|
316
|
+
# Enable all endpoints in the collection
|
|
317
|
+
await enable_all_endpoints_in_collection(api_collection_id)
|
|
318
|
+
else:
|
|
319
|
+
# Enable single endpoint
|
|
320
|
+
await enable_api_endpoint(api_endpoint_id)
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
@inject
|
|
324
|
+
async def enable_all_endpoints_in_collection(
|
|
325
|
+
api_collection_id: int,
|
|
326
|
+
workato_api_client: Workato = Provide[Container.workato_api_client],
|
|
327
|
+
) -> None:
|
|
328
|
+
"""Enable all endpoints in an API collection"""
|
|
329
|
+
spinner = Spinner(f"Fetching endpoints for collection {api_collection_id}")
|
|
330
|
+
spinner.start()
|
|
331
|
+
|
|
332
|
+
# First, get all endpoints in the collection
|
|
333
|
+
try:
|
|
334
|
+
endpoints: list[ApiEndpoint] = []
|
|
335
|
+
page = 1
|
|
336
|
+
while True:
|
|
337
|
+
page_endpoints = (
|
|
338
|
+
await workato_api_client.api_platform_api.list_api_endpoints(
|
|
339
|
+
api_collection_id=api_collection_id,
|
|
340
|
+
page=page,
|
|
341
|
+
per_page=100,
|
|
342
|
+
)
|
|
343
|
+
)
|
|
344
|
+
endpoints.extend(page_endpoints)
|
|
345
|
+
if len(page_endpoints) < 100:
|
|
346
|
+
break
|
|
347
|
+
page += 1
|
|
348
|
+
|
|
349
|
+
finally:
|
|
350
|
+
elapsed = spinner.stop()
|
|
351
|
+
|
|
352
|
+
if not endpoints:
|
|
353
|
+
click.echo(f"â No endpoints found for collection {api_collection_id}")
|
|
354
|
+
return
|
|
355
|
+
|
|
356
|
+
# Filter for disabled endpoints
|
|
357
|
+
disabled_endpoints = [ep for ep in endpoints if not ep.active]
|
|
358
|
+
|
|
359
|
+
if not disabled_endpoints:
|
|
360
|
+
click.echo(
|
|
361
|
+
f"â
All endpoints in collection {api_collection_id} are already enabled"
|
|
362
|
+
)
|
|
363
|
+
return
|
|
364
|
+
|
|
365
|
+
click.echo(
|
|
366
|
+
f"đ Found {len(disabled_endpoints)} disabled endpoints in "
|
|
367
|
+
f"collection {api_collection_id}"
|
|
368
|
+
)
|
|
369
|
+
click.echo("đĄ Enabling all disabled endpoints:")
|
|
370
|
+
for ep in disabled_endpoints:
|
|
371
|
+
method = ep.method.upper()
|
|
372
|
+
click.echo(f" âĸ {ep.name} ({method} {ep.url})")
|
|
373
|
+
click.echo()
|
|
374
|
+
|
|
375
|
+
# Enable each disabled endpoint
|
|
376
|
+
success_count = 0
|
|
377
|
+
failed_endpoints = []
|
|
378
|
+
|
|
379
|
+
for endpoint in disabled_endpoints:
|
|
380
|
+
endpoint_id = endpoint.id
|
|
381
|
+
endpoint_name = endpoint.name
|
|
382
|
+
|
|
383
|
+
try:
|
|
384
|
+
spinner = Spinner(f"Enabling {endpoint_name}")
|
|
385
|
+
spinner.start()
|
|
386
|
+
|
|
387
|
+
try:
|
|
388
|
+
await workato_api_client.api_platform_api.enable_api_endpoint(
|
|
389
|
+
api_endpoint_id=endpoint_id
|
|
390
|
+
)
|
|
391
|
+
success_count += 1
|
|
392
|
+
finally:
|
|
393
|
+
elapsed = spinner.stop()
|
|
394
|
+
|
|
395
|
+
click.echo(f" â
{endpoint_name} enabled ({elapsed:.1f}s)")
|
|
396
|
+
|
|
397
|
+
except Exception as e:
|
|
398
|
+
# Keep broad exception handling here since we want to continue with other
|
|
399
|
+
# endpoints even if one fails, and the outer function has
|
|
400
|
+
# @handle_api_exceptions for overall errors
|
|
401
|
+
failed_endpoints.append((endpoint_name, str(e)))
|
|
402
|
+
click.echo(f" â Failed to enable {endpoint_name}: {str(e)}")
|
|
403
|
+
|
|
404
|
+
# Summary
|
|
405
|
+
click.echo()
|
|
406
|
+
click.echo("đ Results:")
|
|
407
|
+
click.echo(f" â
Successfully enabled: {success_count}")
|
|
408
|
+
if failed_endpoints:
|
|
409
|
+
click.echo(f" â Failed: {len(failed_endpoints)}")
|
|
410
|
+
for name, error in failed_endpoints:
|
|
411
|
+
click.echo(f" âĸ {name}: {error}")
|
|
412
|
+
|
|
413
|
+
if success_count > 0:
|
|
414
|
+
click.echo()
|
|
415
|
+
click.echo("đĄ Next steps:")
|
|
416
|
+
click.echo(" âĸ Test the enabled endpoints with API calls")
|
|
417
|
+
click.echo(" âĸ Monitor endpoint usage and performance")
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
@inject
|
|
421
|
+
async def enable_api_endpoint(
|
|
422
|
+
api_endpoint_id: int,
|
|
423
|
+
workato_api_client: Workato = Provide[Container.workato_api_client],
|
|
424
|
+
) -> None:
|
|
425
|
+
"""Enable an API endpoint using the Workato API"""
|
|
426
|
+
spinner = Spinner(f"Enabling API endpoint {api_endpoint_id}")
|
|
427
|
+
spinner.start()
|
|
428
|
+
|
|
429
|
+
try:
|
|
430
|
+
await workato_api_client.api_platform_api.enable_api_endpoint(
|
|
431
|
+
api_endpoint_id=api_endpoint_id
|
|
432
|
+
)
|
|
433
|
+
finally:
|
|
434
|
+
elapsed = spinner.stop()
|
|
435
|
+
|
|
436
|
+
click.echo(f"â
API endpoint enabled successfully ({elapsed:.1f}s)")
|
|
437
|
+
click.echo()
|
|
438
|
+
click.echo("đĄ Next steps:")
|
|
439
|
+
click.echo(" âĸ Test the endpoint with API calls")
|
|
440
|
+
click.echo(" âĸ Monitor endpoint usage and performance")
|
|
441
|
+
click.echo(" âĸ Configure rate limiting if needed")
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
def display_endpoint_summary(endpoint: ApiEndpoint) -> None:
|
|
445
|
+
"""Display a summary of an API endpoint"""
|
|
446
|
+
name = endpoint.name
|
|
447
|
+
endpoint_id = endpoint.id
|
|
448
|
+
|
|
449
|
+
# Try different field names for enabled/active status
|
|
450
|
+
enabled = endpoint.active
|
|
451
|
+
|
|
452
|
+
status_icon = "â
" if enabled else "â"
|
|
453
|
+
status_text = "Enabled" if enabled else "Disabled"
|
|
454
|
+
|
|
455
|
+
click.echo(f" {status_icon} {name}")
|
|
456
|
+
click.echo(f" đ ID: {endpoint_id}")
|
|
457
|
+
click.echo(f" đ Method: {endpoint.method}")
|
|
458
|
+
click.echo(f" đ Path: {endpoint.url}")
|
|
459
|
+
click.echo(f" đ Status: {status_text}")
|
|
460
|
+
|
|
461
|
+
# Show flow ID if available (recipe connection)
|
|
462
|
+
if endpoint.flow_id:
|
|
463
|
+
click.echo(f" đ Recipe ID: {endpoint.flow_id}")
|
|
464
|
+
|
|
465
|
+
# Show additional metadata if available
|
|
466
|
+
click.echo(f" đ Created: {endpoint.created_at.strftime('%Y-%m-%d')}")
|
|
467
|
+
|
|
468
|
+
# Show legacy status if available
|
|
469
|
+
if endpoint.legacy:
|
|
470
|
+
click.echo(f" đ Legacy: {'Yes' if endpoint.legacy else 'No'}")
|
|
471
|
+
|
|
472
|
+
# Show collection info if available
|
|
473
|
+
click.echo(f" đ Collection ID: {endpoint.api_collection_id}")
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
def display_collection_summary(collection: ApiCollection) -> None:
|
|
477
|
+
"""Display a summary of an API collection"""
|
|
478
|
+
name = collection.name or "Unknown"
|
|
479
|
+
collection_id = collection.id or "Unknown"
|
|
480
|
+
|
|
481
|
+
click.echo(f" đ {name}")
|
|
482
|
+
click.echo(f" đ ID: {collection_id}")
|
|
483
|
+
click.echo(f" đ Project ID: {collection.project_id}")
|
|
484
|
+
|
|
485
|
+
url = collection.url
|
|
486
|
+
if len(url) > 60:
|
|
487
|
+
url = url[:57] + "..."
|
|
488
|
+
click.echo(f" đ API URL: {url}")
|
|
489
|
+
spec_url = collection.api_spec_url
|
|
490
|
+
if len(spec_url) > 60:
|
|
491
|
+
spec_url = spec_url[:57] + "..."
|
|
492
|
+
click.echo(f" đ Spec URL: {spec_url}")
|
|
493
|
+
|
|
494
|
+
click.echo(f" đ Created: {collection.created_at.strftime('%Y-%m-%d')}")
|
|
495
|
+
|
|
496
|
+
if collection.updated_at and collection.updated_at != collection.created_at:
|
|
497
|
+
click.echo(f" đ Updated: {collection.updated_at.strftime('%Y-%m-%d')}")
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import asyncclick as click
|
|
2
|
+
|
|
3
|
+
from dependency_injector.wiring import Provide, inject
|
|
4
|
+
|
|
5
|
+
from workato_platform_cli import Workato
|
|
6
|
+
from workato_platform_cli.cli.containers import Container
|
|
7
|
+
from workato_platform_cli.cli.utils import Spinner
|
|
8
|
+
from workato_platform_cli.cli.utils.config import ConfigManager
|
|
9
|
+
from workato_platform_cli.cli.utils.exception_handler import (
|
|
10
|
+
handle_api_exceptions,
|
|
11
|
+
handle_cli_exceptions,
|
|
12
|
+
)
|
|
13
|
+
from workato_platform_cli.client.workato_api.models.asset import Asset
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@click.command()
|
|
17
|
+
@click.option(
|
|
18
|
+
"--folder-id", help="Folder ID (uses current project folder if not specified)"
|
|
19
|
+
)
|
|
20
|
+
@handle_cli_exceptions
|
|
21
|
+
@inject
|
|
22
|
+
@handle_api_exceptions
|
|
23
|
+
async def assets(
|
|
24
|
+
folder_id: int | None = None,
|
|
25
|
+
config_manager: ConfigManager = Provide[Container.config_manager],
|
|
26
|
+
workato_api_client: Workato = Provide[Container.workato_api_client],
|
|
27
|
+
) -> None:
|
|
28
|
+
"""List project assets (data tables, custom connectors, properties, etc.)"""
|
|
29
|
+
|
|
30
|
+
# Get folder ID from parameter or meta file
|
|
31
|
+
if not folder_id:
|
|
32
|
+
meta_data = config_manager.load_config()
|
|
33
|
+
folder_id = meta_data.folder_id
|
|
34
|
+
|
|
35
|
+
if not folder_id:
|
|
36
|
+
click.echo("â No folder ID provided and no project configured.")
|
|
37
|
+
click.echo("đĄ Either specify --folder-id or run 'workato init' first.")
|
|
38
|
+
return
|
|
39
|
+
spinner = Spinner(f"Fetching assets for folder {folder_id}")
|
|
40
|
+
spinner.start()
|
|
41
|
+
|
|
42
|
+
try:
|
|
43
|
+
response = await workato_api_client.export_api.list_assets_in_folder(
|
|
44
|
+
folder_id=folder_id,
|
|
45
|
+
)
|
|
46
|
+
finally:
|
|
47
|
+
elapsed = spinner.stop()
|
|
48
|
+
|
|
49
|
+
assets = response.result.assets
|
|
50
|
+
|
|
51
|
+
click.echo(f"đ Project Assets ({len(assets)} total) - ({elapsed:.1f}s)")
|
|
52
|
+
click.echo(f" đ Folder ID: {folder_id}")
|
|
53
|
+
|
|
54
|
+
if not assets:
|
|
55
|
+
click.echo(" âšī¸ No assets found in this project")
|
|
56
|
+
return
|
|
57
|
+
|
|
58
|
+
# Group assets by type
|
|
59
|
+
asset_groups: dict[str, list[Asset]] = {}
|
|
60
|
+
for asset in assets:
|
|
61
|
+
asset_type = asset.type
|
|
62
|
+
if asset_type not in asset_groups:
|
|
63
|
+
asset_groups[asset_type] = []
|
|
64
|
+
asset_groups[asset_type].append(asset)
|
|
65
|
+
|
|
66
|
+
# Display assets by type
|
|
67
|
+
for asset_type, type_assets in asset_groups.items():
|
|
68
|
+
click.echo(
|
|
69
|
+
f"\n đĻ {asset_type.replace('_', ' ').title()} ({len(type_assets)} items)"
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
for asset in type_assets:
|
|
73
|
+
name = asset.name
|
|
74
|
+
asset_id = asset.id
|
|
75
|
+
|
|
76
|
+
# Basic info
|
|
77
|
+
click.echo(f" âĸ {name}")
|
|
78
|
+
|
|
79
|
+
if asset_id:
|
|
80
|
+
click.echo(f" đ ID: {asset_id}")
|
|
81
|
+
|
|
82
|
+
click.echo()
|