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.
Files changed (306) hide show
  1. workato_platform_cli/__init__.py +135 -0
  2. workato_platform_cli/_version.py +34 -0
  3. workato_platform_cli/cli/__init__.py +126 -0
  4. workato_platform_cli/cli/commands/__init__.py +0 -0
  5. workato_platform_cli/cli/commands/api_clients.py +627 -0
  6. workato_platform_cli/cli/commands/api_collections.py +497 -0
  7. workato_platform_cli/cli/commands/assets.py +82 -0
  8. workato_platform_cli/cli/commands/connections.py +1205 -0
  9. workato_platform_cli/cli/commands/connectors/__init__.py +0 -0
  10. workato_platform_cli/cli/commands/connectors/command.py +178 -0
  11. workato_platform_cli/cli/commands/connectors/connector_manager.py +351 -0
  12. workato_platform_cli/cli/commands/data_tables.py +345 -0
  13. workato_platform_cli/cli/commands/guide.py +315 -0
  14. workato_platform_cli/cli/commands/init.py +229 -0
  15. workato_platform_cli/cli/commands/profiles.py +364 -0
  16. workato_platform_cli/cli/commands/projects/__init__.py +0 -0
  17. workato_platform_cli/cli/commands/projects/command.py +513 -0
  18. workato_platform_cli/cli/commands/projects/project_manager.py +338 -0
  19. workato_platform_cli/cli/commands/properties.py +174 -0
  20. workato_platform_cli/cli/commands/pull.py +327 -0
  21. workato_platform_cli/cli/commands/push/__init__.py +0 -0
  22. workato_platform_cli/cli/commands/push/command.py +320 -0
  23. workato_platform_cli/cli/commands/recipes/__init__.py +0 -0
  24. workato_platform_cli/cli/commands/recipes/command.py +847 -0
  25. workato_platform_cli/cli/commands/recipes/validator.py +1740 -0
  26. workato_platform_cli/cli/commands/workspace.py +73 -0
  27. workato_platform_cli/cli/containers.py +80 -0
  28. workato_platform_cli/cli/resources/data/connection-data.json +7364 -0
  29. workato_platform_cli/cli/resources/data/picklist-data.json +3706 -0
  30. workato_platform_cli/cli/resources/docs/README.md +178 -0
  31. workato_platform_cli/cli/resources/docs/actions.md +452 -0
  32. workato_platform_cli/cli/resources/docs/block-structure.md +424 -0
  33. workato_platform_cli/cli/resources/docs/connections-parameters.md +11946 -0
  34. workato_platform_cli/cli/resources/docs/data-mapping.md +779 -0
  35. workato_platform_cli/cli/resources/docs/formulas/array-list-formulas.md +1276 -0
  36. workato_platform_cli/cli/resources/docs/formulas/conditions.md +102 -0
  37. workato_platform_cli/cli/resources/docs/formulas/date-formulas.md +798 -0
  38. workato_platform_cli/cli/resources/docs/formulas/number-formulas.md +507 -0
  39. workato_platform_cli/cli/resources/docs/formulas/other-formulas.md +419 -0
  40. workato_platform_cli/cli/resources/docs/formulas/string-formulas.md +1353 -0
  41. workato_platform_cli/cli/resources/docs/formulas.md +214 -0
  42. workato_platform_cli/cli/resources/docs/naming-conventions.md +163 -0
  43. workato_platform_cli/cli/resources/docs/recipe-deployment-workflow.md +352 -0
  44. workato_platform_cli/cli/resources/docs/recipe-fundamentals.md +179 -0
  45. workato_platform_cli/cli/resources/docs/triggers.md +360 -0
  46. workato_platform_cli/cli/utils/__init__.py +10 -0
  47. workato_platform_cli/cli/utils/config/__init__.py +33 -0
  48. workato_platform_cli/cli/utils/config/manager.py +1001 -0
  49. workato_platform_cli/cli/utils/config/models.py +89 -0
  50. workato_platform_cli/cli/utils/config/profiles.py +491 -0
  51. workato_platform_cli/cli/utils/config/workspace.py +113 -0
  52. workato_platform_cli/cli/utils/exception_handler.py +531 -0
  53. workato_platform_cli/cli/utils/gitignore.py +32 -0
  54. workato_platform_cli/cli/utils/ignore_patterns.py +44 -0
  55. workato_platform_cli/cli/utils/spinner.py +63 -0
  56. workato_platform_cli/cli/utils/version_checker.py +237 -0
  57. workato_platform_cli/client/__init__.py +0 -0
  58. workato_platform_cli/client/workato_api/__init__.py +202 -0
  59. workato_platform_cli/client/workato_api/api/__init__.py +15 -0
  60. workato_platform_cli/client/workato_api/api/api_platform_api.py +2875 -0
  61. workato_platform_cli/client/workato_api/api/connections_api.py +1807 -0
  62. workato_platform_cli/client/workato_api/api/connectors_api.py +840 -0
  63. workato_platform_cli/client/workato_api/api/data_tables_api.py +604 -0
  64. workato_platform_cli/client/workato_api/api/export_api.py +621 -0
  65. workato_platform_cli/client/workato_api/api/folders_api.py +621 -0
  66. workato_platform_cli/client/workato_api/api/packages_api.py +1197 -0
  67. workato_platform_cli/client/workato_api/api/projects_api.py +590 -0
  68. workato_platform_cli/client/workato_api/api/properties_api.py +620 -0
  69. workato_platform_cli/client/workato_api/api/recipes_api.py +1379 -0
  70. workato_platform_cli/client/workato_api/api/users_api.py +285 -0
  71. workato_platform_cli/client/workato_api/api_client.py +807 -0
  72. workato_platform_cli/client/workato_api/api_response.py +21 -0
  73. workato_platform_cli/client/workato_api/configuration.py +601 -0
  74. workato_platform_cli/client/workato_api/docs/APIPlatformApi.md +844 -0
  75. workato_platform_cli/client/workato_api/docs/ApiClient.md +46 -0
  76. workato_platform_cli/client/workato_api/docs/ApiClientApiCollectionsInner.md +30 -0
  77. workato_platform_cli/client/workato_api/docs/ApiClientApiPoliciesInner.md +30 -0
  78. workato_platform_cli/client/workato_api/docs/ApiClientCreateRequest.md +46 -0
  79. workato_platform_cli/client/workato_api/docs/ApiClientListResponse.md +32 -0
  80. workato_platform_cli/client/workato_api/docs/ApiClientResponse.md +29 -0
  81. workato_platform_cli/client/workato_api/docs/ApiCollection.md +38 -0
  82. workato_platform_cli/client/workato_api/docs/ApiCollectionCreateRequest.md +32 -0
  83. workato_platform_cli/client/workato_api/docs/ApiEndpoint.md +41 -0
  84. workato_platform_cli/client/workato_api/docs/ApiKey.md +36 -0
  85. workato_platform_cli/client/workato_api/docs/ApiKeyCreateRequest.md +32 -0
  86. workato_platform_cli/client/workato_api/docs/ApiKeyListResponse.md +32 -0
  87. workato_platform_cli/client/workato_api/docs/ApiKeyResponse.md +29 -0
  88. workato_platform_cli/client/workato_api/docs/Asset.md +39 -0
  89. workato_platform_cli/client/workato_api/docs/AssetReference.md +37 -0
  90. workato_platform_cli/client/workato_api/docs/Connection.md +44 -0
  91. workato_platform_cli/client/workato_api/docs/ConnectionCreateRequest.md +35 -0
  92. workato_platform_cli/client/workato_api/docs/ConnectionUpdateRequest.md +34 -0
  93. workato_platform_cli/client/workato_api/docs/ConnectionsApi.md +526 -0
  94. workato_platform_cli/client/workato_api/docs/ConnectorAction.md +33 -0
  95. workato_platform_cli/client/workato_api/docs/ConnectorVersion.md +32 -0
  96. workato_platform_cli/client/workato_api/docs/ConnectorsApi.md +249 -0
  97. workato_platform_cli/client/workato_api/docs/CreateExportManifestRequest.md +29 -0
  98. workato_platform_cli/client/workato_api/docs/CreateFolderRequest.md +30 -0
  99. workato_platform_cli/client/workato_api/docs/CustomConnector.md +35 -0
  100. workato_platform_cli/client/workato_api/docs/CustomConnectorCodeResponse.md +29 -0
  101. workato_platform_cli/client/workato_api/docs/CustomConnectorCodeResponseData.md +29 -0
  102. workato_platform_cli/client/workato_api/docs/CustomConnectorListResponse.md +29 -0
  103. workato_platform_cli/client/workato_api/docs/DataTable.md +34 -0
  104. workato_platform_cli/client/workato_api/docs/DataTableColumn.md +37 -0
  105. workato_platform_cli/client/workato_api/docs/DataTableColumnRequest.md +37 -0
  106. workato_platform_cli/client/workato_api/docs/DataTableCreateRequest.md +31 -0
  107. workato_platform_cli/client/workato_api/docs/DataTableCreateResponse.md +29 -0
  108. workato_platform_cli/client/workato_api/docs/DataTableListResponse.md +29 -0
  109. workato_platform_cli/client/workato_api/docs/DataTableRelation.md +30 -0
  110. workato_platform_cli/client/workato_api/docs/DataTablesApi.md +172 -0
  111. workato_platform_cli/client/workato_api/docs/DeleteProject403Response.md +29 -0
  112. workato_platform_cli/client/workato_api/docs/Error.md +29 -0
  113. workato_platform_cli/client/workato_api/docs/ExportApi.md +175 -0
  114. workato_platform_cli/client/workato_api/docs/ExportManifestRequest.md +35 -0
  115. workato_platform_cli/client/workato_api/docs/ExportManifestResponse.md +29 -0
  116. workato_platform_cli/client/workato_api/docs/ExportManifestResponseResult.md +36 -0
  117. workato_platform_cli/client/workato_api/docs/Folder.md +35 -0
  118. workato_platform_cli/client/workato_api/docs/FolderAssetsResponse.md +29 -0
  119. workato_platform_cli/client/workato_api/docs/FolderAssetsResponseResult.md +29 -0
  120. workato_platform_cli/client/workato_api/docs/FolderCreationResponse.md +35 -0
  121. workato_platform_cli/client/workato_api/docs/FoldersApi.md +176 -0
  122. workato_platform_cli/client/workato_api/docs/ImportResults.md +32 -0
  123. workato_platform_cli/client/workato_api/docs/OAuthUrlResponse.md +29 -0
  124. workato_platform_cli/client/workato_api/docs/OAuthUrlResponseData.md +29 -0
  125. workato_platform_cli/client/workato_api/docs/OpenApiSpec.md +30 -0
  126. workato_platform_cli/client/workato_api/docs/PackageDetailsResponse.md +35 -0
  127. workato_platform_cli/client/workato_api/docs/PackageDetailsResponseRecipeStatusInner.md +30 -0
  128. workato_platform_cli/client/workato_api/docs/PackageResponse.md +33 -0
  129. workato_platform_cli/client/workato_api/docs/PackagesApi.md +364 -0
  130. workato_platform_cli/client/workato_api/docs/PicklistRequest.md +30 -0
  131. workato_platform_cli/client/workato_api/docs/PicklistResponse.md +29 -0
  132. workato_platform_cli/client/workato_api/docs/PlatformConnector.md +36 -0
  133. workato_platform_cli/client/workato_api/docs/PlatformConnectorListResponse.md +32 -0
  134. workato_platform_cli/client/workato_api/docs/Project.md +32 -0
  135. workato_platform_cli/client/workato_api/docs/ProjectsApi.md +173 -0
  136. workato_platform_cli/client/workato_api/docs/PropertiesApi.md +186 -0
  137. workato_platform_cli/client/workato_api/docs/Recipe.md +58 -0
  138. workato_platform_cli/client/workato_api/docs/RecipeConfigInner.md +33 -0
  139. workato_platform_cli/client/workato_api/docs/RecipeConnectionUpdateRequest.md +30 -0
  140. workato_platform_cli/client/workato_api/docs/RecipeListResponse.md +29 -0
  141. workato_platform_cli/client/workato_api/docs/RecipeStartResponse.md +31 -0
  142. workato_platform_cli/client/workato_api/docs/RecipesApi.md +367 -0
  143. workato_platform_cli/client/workato_api/docs/RuntimeUserConnectionCreateRequest.md +34 -0
  144. workato_platform_cli/client/workato_api/docs/RuntimeUserConnectionResponse.md +29 -0
  145. workato_platform_cli/client/workato_api/docs/RuntimeUserConnectionResponseData.md +30 -0
  146. workato_platform_cli/client/workato_api/docs/SuccessResponse.md +29 -0
  147. workato_platform_cli/client/workato_api/docs/UpsertProjectPropertiesRequest.md +29 -0
  148. workato_platform_cli/client/workato_api/docs/User.md +48 -0
  149. workato_platform_cli/client/workato_api/docs/UsersApi.md +84 -0
  150. workato_platform_cli/client/workato_api/docs/ValidationError.md +30 -0
  151. workato_platform_cli/client/workato_api/docs/ValidationErrorErrorsValue.md +28 -0
  152. workato_platform_cli/client/workato_api/exceptions.py +216 -0
  153. workato_platform_cli/client/workato_api/models/__init__.py +83 -0
  154. workato_platform_cli/client/workato_api/models/api_client.py +185 -0
  155. workato_platform_cli/client/workato_api/models/api_client_api_collections_inner.py +89 -0
  156. workato_platform_cli/client/workato_api/models/api_client_api_policies_inner.py +89 -0
  157. workato_platform_cli/client/workato_api/models/api_client_create_request.py +138 -0
  158. workato_platform_cli/client/workato_api/models/api_client_list_response.py +101 -0
  159. workato_platform_cli/client/workato_api/models/api_client_response.py +91 -0
  160. workato_platform_cli/client/workato_api/models/api_collection.py +110 -0
  161. workato_platform_cli/client/workato_api/models/api_collection_create_request.py +97 -0
  162. workato_platform_cli/client/workato_api/models/api_endpoint.py +117 -0
  163. workato_platform_cli/client/workato_api/models/api_key.py +102 -0
  164. workato_platform_cli/client/workato_api/models/api_key_create_request.py +93 -0
  165. workato_platform_cli/client/workato_api/models/api_key_list_response.py +101 -0
  166. workato_platform_cli/client/workato_api/models/api_key_response.py +91 -0
  167. workato_platform_cli/client/workato_api/models/asset.py +124 -0
  168. workato_platform_cli/client/workato_api/models/asset_reference.py +110 -0
  169. workato_platform_cli/client/workato_api/models/connection.py +173 -0
  170. workato_platform_cli/client/workato_api/models/connection_create_request.py +99 -0
  171. workato_platform_cli/client/workato_api/models/connection_update_request.py +97 -0
  172. workato_platform_cli/client/workato_api/models/connector_action.py +100 -0
  173. workato_platform_cli/client/workato_api/models/connector_version.py +99 -0
  174. workato_platform_cli/client/workato_api/models/create_export_manifest_request.py +91 -0
  175. workato_platform_cli/client/workato_api/models/create_folder_request.py +89 -0
  176. workato_platform_cli/client/workato_api/models/custom_connector.py +117 -0
  177. workato_platform_cli/client/workato_api/models/custom_connector_code_response.py +91 -0
  178. workato_platform_cli/client/workato_api/models/custom_connector_code_response_data.py +87 -0
  179. workato_platform_cli/client/workato_api/models/custom_connector_list_response.py +95 -0
  180. workato_platform_cli/client/workato_api/models/data_table.py +107 -0
  181. workato_platform_cli/client/workato_api/models/data_table_column.py +125 -0
  182. workato_platform_cli/client/workato_api/models/data_table_column_request.py +130 -0
  183. workato_platform_cli/client/workato_api/models/data_table_create_request.py +99 -0
  184. workato_platform_cli/client/workato_api/models/data_table_create_response.py +91 -0
  185. workato_platform_cli/client/workato_api/models/data_table_list_response.py +95 -0
  186. workato_platform_cli/client/workato_api/models/data_table_relation.py +90 -0
  187. workato_platform_cli/client/workato_api/models/delete_project403_response.py +87 -0
  188. workato_platform_cli/client/workato_api/models/error.py +87 -0
  189. workato_platform_cli/client/workato_api/models/export_manifest_request.py +107 -0
  190. workato_platform_cli/client/workato_api/models/export_manifest_response.py +91 -0
  191. workato_platform_cli/client/workato_api/models/export_manifest_response_result.py +112 -0
  192. workato_platform_cli/client/workato_api/models/folder.py +110 -0
  193. workato_platform_cli/client/workato_api/models/folder_assets_response.py +91 -0
  194. workato_platform_cli/client/workato_api/models/folder_assets_response_result.py +95 -0
  195. workato_platform_cli/client/workato_api/models/folder_creation_response.py +110 -0
  196. workato_platform_cli/client/workato_api/models/import_results.py +93 -0
  197. workato_platform_cli/client/workato_api/models/o_auth_url_response.py +91 -0
  198. workato_platform_cli/client/workato_api/models/o_auth_url_response_data.py +87 -0
  199. workato_platform_cli/client/workato_api/models/open_api_spec.py +96 -0
  200. workato_platform_cli/client/workato_api/models/package_details_response.py +126 -0
  201. workato_platform_cli/client/workato_api/models/package_details_response_recipe_status_inner.py +99 -0
  202. workato_platform_cli/client/workato_api/models/package_response.py +109 -0
  203. workato_platform_cli/client/workato_api/models/picklist_request.py +89 -0
  204. workato_platform_cli/client/workato_api/models/picklist_response.py +88 -0
  205. workato_platform_cli/client/workato_api/models/platform_connector.py +116 -0
  206. workato_platform_cli/client/workato_api/models/platform_connector_list_response.py +101 -0
  207. workato_platform_cli/client/workato_api/models/project.py +93 -0
  208. workato_platform_cli/client/workato_api/models/recipe.py +174 -0
  209. workato_platform_cli/client/workato_api/models/recipe_config_inner.py +100 -0
  210. workato_platform_cli/client/workato_api/models/recipe_connection_update_request.py +89 -0
  211. workato_platform_cli/client/workato_api/models/recipe_list_response.py +95 -0
  212. workato_platform_cli/client/workato_api/models/recipe_start_response.py +91 -0
  213. workato_platform_cli/client/workato_api/models/runtime_user_connection_create_request.py +97 -0
  214. workato_platform_cli/client/workato_api/models/runtime_user_connection_response.py +91 -0
  215. workato_platform_cli/client/workato_api/models/runtime_user_connection_response_data.py +89 -0
  216. workato_platform_cli/client/workato_api/models/success_response.py +87 -0
  217. workato_platform_cli/client/workato_api/models/upsert_project_properties_request.py +88 -0
  218. workato_platform_cli/client/workato_api/models/user.py +151 -0
  219. workato_platform_cli/client/workato_api/models/validation_error.py +102 -0
  220. workato_platform_cli/client/workato_api/models/validation_error_errors_value.py +143 -0
  221. workato_platform_cli/client/workato_api/rest.py +213 -0
  222. workato_platform_cli/client/workato_api/test/__init__.py +0 -0
  223. workato_platform_cli/client/workato_api/test/test_api_client.py +94 -0
  224. workato_platform_cli/client/workato_api/test/test_api_client_api_collections_inner.py +52 -0
  225. workato_platform_cli/client/workato_api/test/test_api_client_api_policies_inner.py +52 -0
  226. workato_platform_cli/client/workato_api/test/test_api_client_create_request.py +75 -0
  227. workato_platform_cli/client/workato_api/test/test_api_client_list_response.py +114 -0
  228. workato_platform_cli/client/workato_api/test/test_api_client_response.py +104 -0
  229. workato_platform_cli/client/workato_api/test/test_api_collection.py +72 -0
  230. workato_platform_cli/client/workato_api/test/test_api_collection_create_request.py +57 -0
  231. workato_platform_cli/client/workato_api/test/test_api_endpoint.py +75 -0
  232. workato_platform_cli/client/workato_api/test/test_api_key.py +64 -0
  233. workato_platform_cli/client/workato_api/test/test_api_key_create_request.py +56 -0
  234. workato_platform_cli/client/workato_api/test/test_api_key_list_response.py +78 -0
  235. workato_platform_cli/client/workato_api/test/test_api_key_response.py +68 -0
  236. workato_platform_cli/client/workato_api/test/test_api_platform_api.py +101 -0
  237. workato_platform_cli/client/workato_api/test/test_asset.py +67 -0
  238. workato_platform_cli/client/workato_api/test/test_asset_reference.py +62 -0
  239. workato_platform_cli/client/workato_api/test/test_connection.py +81 -0
  240. workato_platform_cli/client/workato_api/test/test_connection_create_request.py +59 -0
  241. workato_platform_cli/client/workato_api/test/test_connection_update_request.py +56 -0
  242. workato_platform_cli/client/workato_api/test/test_connections_api.py +73 -0
  243. workato_platform_cli/client/workato_api/test/test_connector_action.py +59 -0
  244. workato_platform_cli/client/workato_api/test/test_connector_version.py +58 -0
  245. workato_platform_cli/client/workato_api/test/test_connectors_api.py +52 -0
  246. workato_platform_cli/client/workato_api/test/test_create_export_manifest_request.py +88 -0
  247. workato_platform_cli/client/workato_api/test/test_create_folder_request.py +53 -0
  248. workato_platform_cli/client/workato_api/test/test_custom_connector.py +76 -0
  249. workato_platform_cli/client/workato_api/test/test_custom_connector_code_response.py +54 -0
  250. workato_platform_cli/client/workato_api/test/test_custom_connector_code_response_data.py +52 -0
  251. workato_platform_cli/client/workato_api/test/test_custom_connector_list_response.py +82 -0
  252. workato_platform_cli/client/workato_api/test/test_data_table.py +88 -0
  253. workato_platform_cli/client/workato_api/test/test_data_table_column.py +72 -0
  254. workato_platform_cli/client/workato_api/test/test_data_table_column_request.py +64 -0
  255. workato_platform_cli/client/workato_api/test/test_data_table_create_request.py +82 -0
  256. workato_platform_cli/client/workato_api/test/test_data_table_create_response.py +90 -0
  257. workato_platform_cli/client/workato_api/test/test_data_table_list_response.py +94 -0
  258. workato_platform_cli/client/workato_api/test/test_data_table_relation.py +54 -0
  259. workato_platform_cli/client/workato_api/test/test_data_tables_api.py +45 -0
  260. workato_platform_cli/client/workato_api/test/test_delete_project403_response.py +51 -0
  261. workato_platform_cli/client/workato_api/test/test_error.py +52 -0
  262. workato_platform_cli/client/workato_api/test/test_export_api.py +45 -0
  263. workato_platform_cli/client/workato_api/test/test_export_manifest_request.py +69 -0
  264. workato_platform_cli/client/workato_api/test/test_export_manifest_response.py +68 -0
  265. workato_platform_cli/client/workato_api/test/test_export_manifest_response_result.py +66 -0
  266. workato_platform_cli/client/workato_api/test/test_folder.py +64 -0
  267. workato_platform_cli/client/workato_api/test/test_folder_assets_response.py +80 -0
  268. workato_platform_cli/client/workato_api/test/test_folder_assets_response_result.py +78 -0
  269. workato_platform_cli/client/workato_api/test/test_folder_creation_response.py +64 -0
  270. workato_platform_cli/client/workato_api/test/test_folders_api.py +45 -0
  271. workato_platform_cli/client/workato_api/test/test_import_results.py +58 -0
  272. workato_platform_cli/client/workato_api/test/test_o_auth_url_response.py +54 -0
  273. workato_platform_cli/client/workato_api/test/test_o_auth_url_response_data.py +52 -0
  274. workato_platform_cli/client/workato_api/test/test_open_api_spec.py +54 -0
  275. workato_platform_cli/client/workato_api/test/test_package_details_response.py +64 -0
  276. workato_platform_cli/client/workato_api/test/test_package_details_response_recipe_status_inner.py +52 -0
  277. workato_platform_cli/client/workato_api/test/test_package_response.py +58 -0
  278. workato_platform_cli/client/workato_api/test/test_packages_api.py +59 -0
  279. workato_platform_cli/client/workato_api/test/test_picklist_request.py +53 -0
  280. workato_platform_cli/client/workato_api/test/test_picklist_response.py +52 -0
  281. workato_platform_cli/client/workato_api/test/test_platform_connector.py +94 -0
  282. workato_platform_cli/client/workato_api/test/test_platform_connector_list_response.py +106 -0
  283. workato_platform_cli/client/workato_api/test/test_project.py +57 -0
  284. workato_platform_cli/client/workato_api/test/test_projects_api.py +45 -0
  285. workato_platform_cli/client/workato_api/test/test_properties_api.py +45 -0
  286. workato_platform_cli/client/workato_api/test/test_recipe.py +124 -0
  287. workato_platform_cli/client/workato_api/test/test_recipe_config_inner.py +55 -0
  288. workato_platform_cli/client/workato_api/test/test_recipe_connection_update_request.py +54 -0
  289. workato_platform_cli/client/workato_api/test/test_recipe_list_response.py +134 -0
  290. workato_platform_cli/client/workato_api/test/test_recipe_start_response.py +54 -0
  291. workato_platform_cli/client/workato_api/test/test_recipes_api.py +59 -0
  292. workato_platform_cli/client/workato_api/test/test_runtime_user_connection_create_request.py +59 -0
  293. workato_platform_cli/client/workato_api/test/test_runtime_user_connection_response.py +56 -0
  294. workato_platform_cli/client/workato_api/test/test_runtime_user_connection_response_data.py +54 -0
  295. workato_platform_cli/client/workato_api/test/test_success_response.py +52 -0
  296. workato_platform_cli/client/workato_api/test/test_upsert_project_properties_request.py +52 -0
  297. workato_platform_cli/client/workato_api/test/test_user.py +85 -0
  298. workato_platform_cli/client/workato_api/test/test_users_api.py +38 -0
  299. workato_platform_cli/client/workato_api/test/test_validation_error.py +52 -0
  300. workato_platform_cli/client/workato_api/test/test_validation_error_errors_value.py +50 -0
  301. workato_platform_cli/client/workato_api_README.md +205 -0
  302. workato_platform_cli-1.0.0rc5.dev5.dist-info/METADATA +185 -0
  303. workato_platform_cli-1.0.0rc5.dev5.dist-info/RECORD +306 -0
  304. workato_platform_cli-1.0.0rc5.dev5.dist-info/WHEEL +4 -0
  305. workato_platform_cli-1.0.0rc5.dev5.dist-info/entry_points.txt +2 -0
  306. workato_platform_cli-1.0.0rc5.dev5.dist-info/licenses/LICENSE +7 -0
@@ -0,0 +1,178 @@
1
+ import asyncclick as click
2
+
3
+ from dependency_injector.wiring import Provide, inject
4
+
5
+ from workato_platform_cli.cli.commands.connectors.connector_manager import (
6
+ ConnectorManager,
7
+ )
8
+ from workato_platform_cli.cli.containers import Container
9
+ from workato_platform_cli.cli.utils.exception_handler import (
10
+ handle_api_exceptions,
11
+ handle_cli_exceptions,
12
+ )
13
+
14
+
15
+ @click.group()
16
+ def connectors() -> None:
17
+ """Manage connectors"""
18
+ pass
19
+
20
+
21
+ @connectors.command(name="list")
22
+ @click.option(
23
+ "--platform",
24
+ is_flag=True,
25
+ help="List platform connectors with trigger and action metadata",
26
+ )
27
+ @click.option("--custom", is_flag=True, help="List custom connectors")
28
+ @handle_cli_exceptions
29
+ @inject
30
+ @handle_api_exceptions
31
+ async def list_connectors(
32
+ platform: bool,
33
+ custom: bool,
34
+ connector_manager: ConnectorManager = Provide[Container.connector_manager],
35
+ ) -> None:
36
+ """List connectors (platform connectors include trigger and action metadata)"""
37
+
38
+ # If neither flag is specified, show both
39
+ if not platform and not custom:
40
+ platform = True
41
+ custom = True
42
+
43
+ if platform:
44
+ all_connectors = await connector_manager.list_platform_connectors()
45
+
46
+ if all_connectors:
47
+ for connector in all_connectors:
48
+ name = connector.name
49
+ title = connector.title
50
+ click.echo(f" • {title} ({name})")
51
+ else:
52
+ click.echo(" No platform connectors found")
53
+
54
+ if custom:
55
+ if platform:
56
+ click.echo() # Add spacing between sections
57
+ await connector_manager.list_custom_connectors()
58
+
59
+
60
+ @connectors.command()
61
+ @click.option("--provider", help="Show parameters for a specific provider")
62
+ @click.option("--oauth-only", is_flag=True, help="Show only OAuth-enabled providers")
63
+ @click.option("--search", help="Search provider names (case-insensitive)")
64
+ @handle_cli_exceptions
65
+ @inject
66
+ @handle_api_exceptions
67
+ async def parameters(
68
+ provider: str,
69
+ oauth_only: bool,
70
+ search: str,
71
+ connector_manager: ConnectorManager = Provide[Container.connector_manager],
72
+ ) -> None:
73
+ """List connection parameters for connectors
74
+
75
+ Shows configuration requirements for creating connections to different services.
76
+ """
77
+
78
+ # Load the bundled connection data using the injected manager
79
+ connection_data = connector_manager.load_connection_data()
80
+
81
+ if not connection_data:
82
+ click.echo("❌ Connection parameter data not found.")
83
+ click.echo()
84
+ click.echo("💡 This may indicate:")
85
+ click.echo(" • CLI was not installed properly (data files missing)")
86
+ click.echo(" • Development setup needs data generation")
87
+ click.echo()
88
+ click.echo("🔧 To resolve:")
89
+ click.echo(
90
+ " 1. If using installed CLI: try reinstalling with 'pip install "
91
+ "--force-reinstall workato-platform-cli'"
92
+ )
93
+ click.echo(
94
+ " 2. If developing: run 'python scripts/parse_connection_docs.py' "
95
+ "to generate data"
96
+ )
97
+ click.echo(
98
+ " 3. Alternative: use 'workato connectors list --platform' "
99
+ "to see available providers"
100
+ )
101
+ return
102
+
103
+ if provider:
104
+ # Show details for specific provider
105
+ if provider not in connection_data:
106
+ click.echo(f"❌ Provider '{provider}' not found")
107
+ # Suggest similar providers
108
+ suggestions = [p for p in connection_data if provider.lower() in p.lower()]
109
+ if suggestions:
110
+ click.echo(f"💡 Did you mean: {', '.join(suggestions[:3])}")
111
+ click.echo(
112
+ "💡 Use 'workato connectors parameters' to see all available providers"
113
+ )
114
+ return
115
+
116
+ connector_manager.show_provider_details(provider, connection_data[provider])
117
+
118
+ else:
119
+ # Show all providers with optional filtering
120
+ filtered_providers = []
121
+ for k, v in connection_data.items():
122
+ if (not oauth_only or v.oauth) and (
123
+ not search
124
+ or search.lower() in v.name.lower()
125
+ or search.lower() in k.lower()
126
+ ):
127
+ filtered_providers.append((k, v))
128
+
129
+ # Show summary
130
+ filter_text = ""
131
+ if oauth_only:
132
+ filter_text += " (OAuth only)"
133
+ if search:
134
+ filter_text += f" (matching '{search}')"
135
+
136
+ click.echo(
137
+ f"🔌 Connection Parameters ({len(filtered_providers)} "
138
+ f"providers{filter_text})"
139
+ )
140
+ click.echo()
141
+
142
+ if not filtered_providers:
143
+ click.echo(" ℹ️ No providers found matching criteria")
144
+ return
145
+
146
+ # Sort by name for better readability
147
+ filtered_providers.sort(key=lambda x: x[1].name)
148
+
149
+ # Display providers in a compact format
150
+ for provider_key, provider_data in filtered_providers:
151
+ name = provider_data.name
152
+ param_count = provider_data.parameter_count
153
+ oauth_icon = "🔐" if provider_data.oauth else "🔑"
154
+ tunnel_icon = "🔒" if provider_data.secure_tunnel else ""
155
+
156
+ click.echo(f" {oauth_icon} {name:<40} ({provider_key})")
157
+
158
+ if param_count > 0:
159
+ click.echo(
160
+ f" 📝 {param_count} parameter{'s' if param_count != 1 else ''}"
161
+ )
162
+ else:
163
+ click.echo(" 📝 No configuration required")
164
+
165
+ if tunnel_icon:
166
+ click.echo(f" {tunnel_icon} Supports secure tunnel")
167
+
168
+ click.echo()
169
+
170
+ click.echo("💡 Commands:")
171
+ click.echo(
172
+ " • View provider details: workato connectors parameters "
173
+ "--provider salesforce"
174
+ )
175
+ click.echo(
176
+ " • Create connection: workato connections create --provider <PROVIDER> "
177
+ "--name 'My Connection'"
178
+ )
@@ -0,0 +1,351 @@
1
+ """Connector manager for handling connection parameters and OAuth requirements"""
2
+
3
+ import json
4
+
5
+ from pathlib import Path
6
+ from typing import Any
7
+
8
+ import asyncclick as click
9
+
10
+ from pydantic import BaseModel, Field
11
+
12
+ from workato_platform_cli import Workato
13
+ from workato_platform_cli.cli.utils import Spinner
14
+ from workato_platform_cli.client.workato_api.models.platform_connector import (
15
+ PlatformConnector,
16
+ )
17
+
18
+
19
+ class ConnectionParameter(BaseModel):
20
+ """Model for a connection parameter/input field"""
21
+
22
+ name: str = Field(..., description="Parameter name")
23
+ label: str = Field(..., description="Human-readable label")
24
+ type: str = Field(..., description="Parameter type (string, boolean, etc.)")
25
+ hint: str = Field("", description="Hint text for the parameter")
26
+ pick_list: list[list[str]] | None = Field(
27
+ None, description="Available options for selection"
28
+ )
29
+
30
+
31
+ class ProviderData(BaseModel):
32
+ """Model for provider connection data"""
33
+
34
+ name: str = Field(..., description="Provider display name")
35
+ provider: str = Field(..., description="Provider identifier")
36
+ oauth: bool = Field(False, description="Whether the provider supports OAuth")
37
+ personalization: bool = Field(
38
+ False, description="Whether personalization is supported"
39
+ )
40
+ secure_tunnel: bool = Field(False, description="Whether secure tunnel is supported")
41
+ input: list[ConnectionParameter] = Field(
42
+ default_factory=list, description="Connection parameters"
43
+ )
44
+
45
+ @property
46
+ def parameter_count(self) -> int:
47
+ """Get the number of parameters for backwards compatibility"""
48
+ return len(self.input)
49
+
50
+ def get_oauth_parameters(self) -> list[ConnectionParameter]:
51
+ """Get parameters that are typically needed for OAuth"""
52
+ # For Jira, we know auth_type and host_url are needed for OAuth
53
+ if self.provider == "jira":
54
+ oauth_params = []
55
+ for param in self.input:
56
+ if param.name in ["auth_type", "host_url"]:
57
+ oauth_params.append(param)
58
+ return oauth_params
59
+
60
+ # For other providers, we could add specific logic here
61
+ return []
62
+
63
+ def get_parameter_by_name(self, name: str) -> ConnectionParameter | None:
64
+ """Get a specific parameter by name"""
65
+ for param in self.input:
66
+ if param.name == name:
67
+ return param
68
+ return None
69
+
70
+
71
+ class ConnectorManager:
72
+ """Manager class for connector data and OAuth parameter handling"""
73
+
74
+ def __init__(self, workato_api_client: Workato):
75
+ self.workato_api_client = workato_api_client
76
+ self._data_cache: dict[str, ProviderData] | None = None
77
+
78
+ @property
79
+ def data_file_path(self) -> Path:
80
+ """Get the path to the connection data file"""
81
+ return (
82
+ Path(__file__).parent.parent.parent
83
+ / "resources"
84
+ / "data"
85
+ / "connection-data.json"
86
+ )
87
+
88
+ def load_connection_data(self) -> dict[str, ProviderData]:
89
+ """Load and cache connection parameter data"""
90
+ if self._data_cache is not None:
91
+ return self._data_cache
92
+
93
+ if not self.data_file_path.exists():
94
+ self._data_cache = {}
95
+ return self._data_cache
96
+
97
+ try:
98
+ with open(self.data_file_path) as f:
99
+ raw_data = json.load(f)
100
+
101
+ self._data_cache = {}
102
+ for provider_key, provider_data in raw_data.items():
103
+ self._data_cache[provider_key] = ProviderData(**provider_data)
104
+
105
+ return self._data_cache
106
+ except (json.JSONDecodeError, ValueError):
107
+ self._data_cache = {}
108
+ return self._data_cache
109
+
110
+ def get_provider_data(self, provider: str) -> ProviderData | None:
111
+ """Get connection parameters for a specific provider"""
112
+ data = self.load_connection_data()
113
+ return data.get(provider)
114
+
115
+ def get_oauth_providers(self) -> dict[str, ProviderData]:
116
+ """Get all providers that support OAuth"""
117
+ data = self.load_connection_data()
118
+ return {key: provider for key, provider in data.items() if provider.oauth}
119
+
120
+ def get_oauth_required_parameters(self, provider: str) -> list[ConnectionParameter]:
121
+ """Get OAuth-specific required parameters for a provider"""
122
+ provider_data = self.get_provider_data(provider)
123
+ if not provider_data:
124
+ return []
125
+
126
+ return provider_data.get_oauth_parameters()
127
+
128
+ async def prompt_for_oauth_parameters(
129
+ self, provider: str, existing_input: dict[str, Any] | None = None
130
+ ) -> dict[str, Any]:
131
+ """Prompt user for OAuth-required parameters that are missing"""
132
+ existing_input = existing_input or {}
133
+ oauth_params = self.get_oauth_required_parameters(provider)
134
+
135
+ if not oauth_params:
136
+ return existing_input
137
+
138
+ updated_input = existing_input.copy()
139
+ missing_params = []
140
+
141
+ # Check which OAuth parameters are missing
142
+ for param in oauth_params:
143
+ param_name = param.name
144
+ if param_name not in updated_input:
145
+ missing_params.append(param)
146
+
147
+ if not missing_params:
148
+ return updated_input
149
+
150
+ # Prompt for missing OAuth parameters
151
+ provider_data = self.get_provider_data(provider)
152
+ provider_name = provider_data.name if provider_data else provider.title()
153
+
154
+ click.echo(f"🔧 {provider_name} OAuth requires additional parameters:")
155
+ click.echo()
156
+
157
+ for param in missing_params:
158
+ param_name = param.name
159
+ label = param.label
160
+ hint = param.hint
161
+
162
+ click.echo(f"📝 {label} ({param_name})")
163
+ if hint:
164
+ click.echo(f" 💡 {hint}")
165
+
166
+ # Special handling for known OAuth parameters
167
+ if param_name == "auth_type" and provider == "jira":
168
+ value = "oauth"
169
+ click.echo(f" ✓ Setting to: {value}")
170
+ elif param_name == "host_url" and provider == "jira":
171
+ default_url = "https://your-domain.atlassian.net"
172
+ value = await click.prompt(
173
+ f" Enter {label}", default=default_url, show_default=True
174
+ )
175
+ else:
176
+ value = await click.prompt(f" Enter {label}")
177
+
178
+ updated_input[param_name] = value
179
+ click.echo()
180
+
181
+ return updated_input
182
+
183
+ def show_provider_details(
184
+ self, provider_key: str, provider_data: ProviderData
185
+ ) -> None:
186
+ """Show detailed information about a specific provider"""
187
+ name = provider_data.name
188
+ param_count = provider_data.parameter_count
189
+
190
+ click.echo(f"🔌 {name} ({provider_key})")
191
+ click.echo()
192
+
193
+ # Show provider characteristics
194
+ click.echo("📋 Provider Information:")
195
+ click.echo(f" 🔐 OAuth: {'Yes' if provider_data.oauth else 'No'}")
196
+ personalization = (
197
+ "Supported" if provider_data.personalization else "Not supported"
198
+ )
199
+ click.echo(f" 👤 Personalization: {personalization}")
200
+ if provider_data.secure_tunnel:
201
+ click.echo(" 🔒 Secure Tunnel: Supported")
202
+ click.echo()
203
+
204
+ # Show parameters
205
+ if param_count == 0:
206
+ click.echo("✅ No configuration parameters required")
207
+ click.echo(" This connector can be used without additional setup.")
208
+ else:
209
+ click.echo(f"📝 Configuration Parameters ({param_count} available):")
210
+ click.echo()
211
+
212
+ for i, param in enumerate(provider_data.input, 1):
213
+ param_name = param.name
214
+ param_type = param.type
215
+ hint = param.hint
216
+
217
+ type_display = f"Type: {param_type}"
218
+
219
+ click.echo(f" {i}. {param_name}")
220
+ click.echo(f" 📝 Label: {param.label}")
221
+ click.echo(f" 📊 {type_display}")
222
+
223
+ if hint:
224
+ # Clean up HTML tags and truncate long hints
225
+ clean_hint = hint.replace("<b>", "").replace("</b>", "")
226
+ clean_hint = clean_hint.replace("<br>", " ")
227
+ if len(clean_hint) > 100:
228
+ clean_hint = clean_hint[:100] + "..."
229
+ click.echo(f" 💡 Hint: {clean_hint}")
230
+
231
+ if param.pick_list:
232
+ options = [
233
+ (
234
+ option[1]
235
+ if isinstance(option, list) and len(option) > 1
236
+ else (option[0] if isinstance(option, list) else option)
237
+ )
238
+ for option in param.pick_list
239
+ ]
240
+ click.echo(f" 🔽 Options: {', '.join(options[:3])}")
241
+ if len(options) > 3:
242
+ click.echo(f" ... and {len(options) - 3} more")
243
+
244
+ click.echo()
245
+
246
+ # Show usage examples
247
+ click.echo("💡 Usage Examples:")
248
+ click.echo(" # Basic usage:")
249
+ click.echo(
250
+ f" workato connections create --provider {provider_key} "
251
+ f"--name 'My {name}' --input '{{...}}'"
252
+ )
253
+ click.echo()
254
+ click.echo(" # With configuration file:")
255
+ click.echo(
256
+ f" workato connections create --provider {provider_key} "
257
+ f"--name 'My {name}' --input-file config.json"
258
+ )
259
+ click.echo()
260
+
261
+ if param_count > 0:
262
+ click.echo(" # Sample configuration (config.json):")
263
+ sample_config = {}
264
+ for param in provider_data.input[:5]: # Show first 5 params
265
+ sample_config[param.name] = "your_value_here"
266
+
267
+ config_json = json.dumps(sample_config, indent=2)
268
+ for line in config_json.split("\n"):
269
+ click.echo(f" {line}")
270
+
271
+ async def list_platform_connectors(self) -> list[PlatformConnector]:
272
+ """List all platform connectors with pagination"""
273
+ all_connectors = []
274
+ page = 1
275
+ per_page = 100
276
+
277
+ spinner = Spinner("Fetching platform connectors")
278
+ spinner.start()
279
+
280
+ connectors_api = self.workato_api_client.connectors_api
281
+
282
+ try:
283
+ while True:
284
+ response = await connectors_api.list_platform_connectors(
285
+ page=page,
286
+ per_page=per_page,
287
+ )
288
+
289
+ connectors = response.items
290
+
291
+ if not connectors:
292
+ break
293
+
294
+ all_connectors.extend(connectors)
295
+
296
+ # If we got fewer than per_page results, we're on the last page
297
+ if len(connectors) < per_page:
298
+ break
299
+
300
+ page += 1
301
+ spinner.update_message(f"Fetching platform connectors (page {page})")
302
+ finally:
303
+ elapsed = spinner.stop()
304
+
305
+ click.echo(
306
+ f"🔌 Platform Connectors ({len(all_connectors)} total) - ({elapsed:.1f}s)"
307
+ )
308
+
309
+ return all_connectors
310
+
311
+ async def list_custom_connectors(self) -> None:
312
+ """List all custom connectors"""
313
+ spinner = Spinner("Fetching custom connectors")
314
+ spinner.start()
315
+
316
+ try:
317
+ response = (
318
+ await self.workato_api_client.connectors_api.list_custom_connectors()
319
+ )
320
+ connectors = response.result
321
+ finally:
322
+ elapsed = spinner.stop()
323
+
324
+ click.echo(f"🛠️ Custom Connectors ({len(connectors)} total) - ({elapsed:.1f}s)")
325
+
326
+ if connectors:
327
+ for connector in connectors:
328
+ name = connector.name
329
+ version = getattr(connector, "version", "Unknown")
330
+
331
+ click.echo(f" • {name} (v{version})")
332
+ if hasattr(connector, "description") and connector.description:
333
+ # Truncate long descriptions
334
+ desc = connector.description
335
+ if len(desc) > 100:
336
+ desc = desc[:100] + "..."
337
+ click.echo(f" {desc}")
338
+ else:
339
+ click.echo(" No custom connectors found")
340
+
341
+ click.echo()
342
+ click.echo("💡 Commands:")
343
+ click.echo(
344
+ " • View connector details: workato connectors get --id <CONNECTOR_ID>"
345
+ )
346
+ click.echo(" • Create connector: workato connectors create")
347
+ click.echo(
348
+ " • Deploy connector: workato connectors deploy --id <CONNECTOR_ID>"
349
+ )
350
+
351
+ click.echo("-" * 50)