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,779 @@
1
+ # Data Mapping and References
2
+
3
+ ## Overview
4
+ Data mapping is the core mechanism that enables data to flow between blocks in a Workato recipe. Understanding how to reference and map data is essential for building functional recipes.
5
+
6
+ ## Data Pill Fundamentals
7
+
8
+ ### Data Pill Syntax
9
+ Workato supports two main syntaxes for referencing data from previous blocks:
10
+
11
+ #### 1. Simple Data Path Syntax (Recommended)
12
+ ```json
13
+ "#{_dp('data.{provider}.{as}.{data_path}')}"
14
+ ```
15
+
16
+ #### 2. Complex JSON Path Syntax (Advanced)
17
+ ```json
18
+ "#{_dp('{\"pill_type\":\"output\",\"provider\":\"{provider}\",\"line\":\"{as}\",\"path\":[\"field1\",\"field2\"]}')}"
19
+ ```
20
+
21
+ ### Components Breakdown
22
+
23
+ #### Simple Syntax
24
+ - **`#{_dp('...')}`**: Data pill wrapper function
25
+ - **`data`**: Fixed prefix indicating data reference
26
+ - **`{provider}`**: Provider name of the source block
27
+ - **`{as}`**: The "as" value from the source block
28
+ - **`{data_path}`**: Path to specific data field using dot notation
29
+
30
+ #### Complex JSON Syntax
31
+ - **`pill_type`**: Usually "output" for data references
32
+ - **`provider`**: Provider name of the source block
33
+ - **`line`**: The "as" value from the source block
34
+ - **`path`**: Array of path elements to the target field
35
+ - **`path_element_type`**: Special values like "current_item" for array operations
36
+
37
+ ### Example Data Pills
38
+
39
+ #### Simple Syntax Example
40
+ ```json
41
+ "#{_dp('data.google_drive.9672c97b.file.name')}"
42
+ ```
43
+
44
+ **Breakdown**:
45
+ - `google_drive`: Provider name
46
+ - `9672c97b`: The "as" value from the source block
47
+ - `file.name`: Path to the "name" field within the "file" object
48
+
49
+ #### Complex JSON Syntax Example
50
+ ```json
51
+ "#{_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\",{\"path_element_type\":\"current_item\"},\"id\"]}')}"
52
+ ```
53
+
54
+ **Breakdown**:
55
+ - `pill_type`: "output" (data reference)
56
+ - `provider`: "workato_recipe_function"
57
+ - `line`: "b2dacec4" (the "as" value)
58
+ - `path`: ["result", "files", {"path_element_type": "current_item"}, "id"]
59
+
60
+ ### When to Use Each Syntax
61
+
62
+ #### Use Simple Syntax When:
63
+ - Referencing simple fields (strings, numbers, booleans)
64
+ - Accessing nested object properties
65
+ - Referencing specific array elements by index
66
+ - Building straightforward data mappings
67
+
68
+ #### Use Complex JSON Syntax When:
69
+ - Working with array transformations using `current_item`
70
+ - Need precise control over path elements
71
+ - Building complex array-to-array mappings
72
+ - Working with recipe functions that require specific path structures
73
+
74
+ ## Data Flow Between Blocks
75
+
76
+ ### Execution Order and Data Availability
77
+ 1. **Block 0 (Trigger)**: Provides initial data
78
+ 2. **Block 1**: Can reference data from Block 0
79
+ 3. **Block 2**: Can reference data from Block 0 and Block 1
80
+ 4. **Block N**: Can reference data from all previous blocks
81
+
82
+ ### Data Reference Timeline
83
+ ```
84
+ Block 0 (Trigger) → Block 1 → Block 2 → Block 3
85
+ ↓ ↓ ↓ ↓
86
+ Data A Data B Data C Data D
87
+ ↓ ↓ ↓ ↓
88
+ Available Available Available Available
89
+ to: 1,2,3 to: 2,3 to: 3 to: none
90
+ ```
91
+
92
+ ## Data Pill Reference Patterns
93
+
94
+ ### 1. Direct Field References
95
+ Reference a simple field from a previous block:
96
+
97
+ ```json
98
+ "#{_dp('data.workato_recipe_function.6b031f18.parameters.issue_key')}"
99
+ ```
100
+
101
+ **Source Block**:
102
+ ```json
103
+ {
104
+ "provider": "workato_recipe_function",
105
+ "as": "6b031f18",
106
+ "extended_output_schema": [
107
+ {
108
+ "name": "parameters",
109
+ "properties": [
110
+ {
111
+ "name": "issue_key",
112
+ "type": "string"
113
+ }
114
+ ]
115
+ }
116
+ ]
117
+ }
118
+ ```
119
+
120
+ ## Input Modes and Data Pill Usage
121
+
122
+ Workato supports two distinct input modes that affect how data pills are used:
123
+
124
+ ### 1. Text Input Mode (Direct Data Pills)
125
+ Data pills are embedded directly in text strings using the `#{_dp('...')}` syntax:
126
+
127
+ ```json
128
+ "name": "#{_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\",{\"path_element_type\":\"current_item\"},\"name\"]}')} - raw text - #{_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\",{\"path_element_type\":\"current_item\"},\"id\"]}')}"
129
+ ```
130
+
131
+ **Characteristics**:
132
+ - Uses `#{_dp('...')}` syntax
133
+ - Data pills can be mixed with literal text
134
+ - Multiple data pills can be concatenated in a single string
135
+ - No formula processing - data pills are treated as text substitutions
136
+
137
+ ### 2. Formula Mode (Data Pills in Formulas)
138
+ Data pills are used within formulas using the `=_dp('...')` syntax:
139
+
140
+ ```json
141
+ "id": "=_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\",{\"path_element_type\":\"current_item\"},\"id\"]}').split(\":\").first"
142
+ ```
143
+
144
+ **Characteristics**:
145
+ - Uses `=_dp('...')` syntax (note the `=` prefix)
146
+ - Data pills can be processed with string methods and functions
147
+ - Supports complex operations like `.split()`, `.first`, `.last`, etc.
148
+ - Formula processing enables data transformation and manipulation
149
+
150
+ ### 3. Mixed Mode Examples
151
+ Here are real examples from the recipe showing both modes:
152
+
153
+ ```json
154
+ "files": {
155
+ "____source": "#{_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\"]}')}",
156
+
157
+ // Formula mode - data processing
158
+ "id": "=_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\",{\"path_element_type\":\"current_item\"},\"id\"]}').split(\":\").first",
159
+
160
+ // Text input mode - direct concatenation
161
+ "name": "#{_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\",{\"path_element_type\":\"current_item\"},\"name\"]}')} - raw text - #{_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\",{\"path_element_type\":\"current_item\"},\"id\"]}')}",
162
+
163
+ // Formula mode with text and data pill
164
+ "type": "=\"text in a formula with a data pill: #{_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\",{\"path_element_type\":\"current_item\"},\"type\"]}')}\"",
165
+
166
+ // Text input mode - simple data pill
167
+ "content": "#{_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\",{\"path_element_type\":\"current_item\"},\"content\"]}')}"
168
+ }
169
+ ```
170
+
171
+ ### 4. When to Use Each Mode
172
+
173
+ #### Use Text Input Mode When:
174
+ - You need to concatenate data pills with literal text
175
+ - Simple data substitution is required
176
+ - No data processing or transformation is needed
177
+ - Building display strings or messages
178
+
179
+ #### Use Formula Mode When:
180
+ - You need to process or transform the data
181
+ - String operations like split, substring, or replace are required
182
+ - Mathematical operations are needed
183
+ - Complex data manipulation is required
184
+
185
+ ### 5. Common Formula Operations
186
+
187
+ For comprehensive formula documentation, refer to the official Workato formula guides:
188
+
189
+ - **[String Formulas](../formulas/string-formulas.md)** - String manipulation, text processing, and validation
190
+ - **[Number Formulas](../formulas/number-formulas.md)** - Mathematical operations, calculations, and numeric processing
191
+ - **[Date Formulas](../formulas/date-formulas.md)** - Date/time operations, formatting, and calculations
192
+ - **[Array/List Formulas](../formulas/array-list-formulas.md)** - Array operations, list processing, and hash manipulation
193
+ - **[Conditional Formulas](../formulas/conditions.md)** - If-else logic, boolean operations, and conditional processing
194
+ - **[Other Formulas](../formulas/other-formulas.md)** - Additional utility functions and operations
195
+
196
+ **Key Formula Syntax**:
197
+ ```json
198
+ // Formula mode uses =_dp('...') syntax
199
+ "id": "=_dp('data.source_block.field').split(':').first"
200
+ "name": "=_dp('data.source_block.field').upcase"
201
+ "count": "=_dp('data.source_block.items').length"
202
+ ```
203
+
204
+ ### 2. Nested Object References
205
+ Reference fields within nested objects:
206
+
207
+ ```json
208
+ "#{_dp('data.jira.748bbf54.attachments.0.self')}"
209
+ ```
210
+
211
+ **Source Block Output**:
212
+ ```json
213
+ {
214
+ "attachments": [
215
+ {
216
+ "self": "https://example.com/attachment/123",
217
+ "thumbnail": "https://example.com/thumb/123"
218
+ }
219
+ ]
220
+ }
221
+ ```
222
+
223
+ ### 3. Array Element References
224
+ Reference specific elements in arrays:
225
+
226
+ ```json
227
+ "#{_dp('data.google_drive.search_files.files.0.id')}"
228
+ "#{_dp('data.google_drive.search_files.files.1.name')}"
229
+ ```
230
+
231
+ **Array Structure**:
232
+ ```json
233
+ {
234
+ "files": [
235
+ {"id": "file1", "name": "Document1.pdf"},
236
+ {"id": "file2", "name": "Document2.pdf"}
237
+ ]
238
+ }
239
+ ```
240
+
241
+ ### 4. Complex Array Mapping with Current Item Pattern
242
+ For complex array operations, Workato uses a special `current_item` pattern that allows mapping array elements to new structures:
243
+
244
+ ```json
245
+ "files": {
246
+ "____source": "#{_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\"]}')}",
247
+ "id": "#{_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\",{\"path_element_type\":\"current_item\"},\"id\"]}')}",
248
+ "name": "#{_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\",{\"path_element_type\":\"current_item\"},\"name\"]}')}",
249
+ "type": "#{_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\",{\"path_element_type\":\"current_item\"},\"type\"]}')}"
250
+ }
251
+ ```
252
+
253
+ **Key Components**:
254
+ - **`____source`**: References the entire array from the source block
255
+ - **`current_item`**: Special path element that maps each array item individually
256
+ - **Field mapping**: Each field maps to the corresponding property of the current array item
257
+
258
+ **Source Block Structure** (Block b2dacec4):
259
+ ```json
260
+ {
261
+ "provider": "workato_recipe_function",
262
+ "name": "call_recipe",
263
+ "as": "b2dacec4",
264
+ "extended_output_schema": [
265
+ {
266
+ "name": "result",
267
+ "properties": [
268
+ {
269
+ "name": "files",
270
+ "type": "array",
271
+ "of": "object",
272
+ "properties": [
273
+ {"name": "id", "type": "string"},
274
+ {"name": "name", "type": "string"},
275
+ {"name": "type", "type": "string"}
276
+ ]
277
+ }
278
+ ]
279
+ }
280
+ ]
281
+ }
282
+ ```
283
+
284
+ **Result**: This creates a new array where each item has the mapped structure, transforming the source data format.
285
+
286
+ ### Real-World Example: File Processing Pipeline
287
+
288
+ **Source Block** (Block 4 - Call Recipe):
289
+ ```json
290
+ {
291
+ "provider": "workato_recipe_function",
292
+ "name": "call_recipe",
293
+ "as": "b2dacec4",
294
+ "keyword": "action",
295
+ "input": {
296
+ "flow_id": {
297
+ "zip_name": "Functions/search_google_drive_user_scoped.recipe.json",
298
+ "name": "Search Google Drive (User Scoped)",
299
+ "folder": "Functions"
300
+ },
301
+ "parameters": {
302
+ "query": "#{_dp('data.workato_api_platform.93424d18.request.query')}"
303
+ }
304
+ }
305
+ }
306
+ ```
307
+
308
+ **Target Block** (Block 5 - Return Response):
309
+ ```json
310
+ {
311
+ "provider": "workato_api_platform",
312
+ "name": "return_response",
313
+ "as": "b621c65f",
314
+ "keyword": "action",
315
+ "input": {
316
+ "http_status_code": "200",
317
+ "response": {
318
+ "message": "success. Make sure you search Jira tickets next.",
319
+ "files": {
320
+ "____source": "#{_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\"]}')}",
321
+ "id": "#{_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\",{\"path_element_type\":\"current_item\"},\"id\"]}')}",
322
+ "name": "#{_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\",{\"path_element_type\":\"current_item\"},\"name\"]}')}",
323
+ "type": "#{_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\",{\"path_element_type\":\"current_item\"},\"type\"]}')}",
324
+ "content": "#{_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\",{\"path_element_type\":\"current_item\"},\"content\"]}')}",
325
+ "thumbnail_link": "#{_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\",{\"path_element_type\":\"current_item\"},\"thumbnail_link\"]}')}",
326
+ "web_link": "#{_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\",{\"path_element_type\":\"current_item\"},\"webview_link\"]}')}"
327
+ }
328
+ }
329
+ }
330
+ }
331
+ ```
332
+
333
+ **What Happens**:
334
+ 1. Block 4 calls another recipe and returns an array of files
335
+ 2. Block 5 maps each file in the array to a new structure
336
+ 3. The `____source` field preserves the array structure
337
+ 4. Each field maps to the corresponding property of each array item
338
+ 5. The result is a transformed array with the new structure
339
+
340
+ ### 4. Conditional References
341
+ Reference data conditionally:
342
+
343
+ ```json
344
+ "#{_dp('data.mysql.insert_record.success') == true ? 'Success' : 'Failed'}"
345
+ ```
346
+
347
+ ## Common Data Mapping Scenarios
348
+
349
+ ### 1. Recipe Function Parameter Mapping
350
+ **Trigger Block** (Block 0):
351
+ ```json
352
+ {
353
+ "provider": "workato_recipe_function",
354
+ "name": "execute",
355
+ "as": "6b031f18",
356
+ "keyword": "trigger",
357
+ "input": {
358
+ "parameters_schema_json": "[{\"name\":\"issue_key\",\"type\":\"string\"}]"
359
+ },
360
+ "extended_output_schema": [
361
+ {
362
+ "name": "parameters",
363
+ "properties": [
364
+ {
365
+ "name": "issue_key",
366
+ "type": "string"
367
+ }
368
+ ]
369
+ }
370
+ ]
371
+ }
372
+ ```
373
+
374
+ **Action Block** (Block 1):
375
+ ```json
376
+ {
377
+ "provider": "jira",
378
+ "name": "upload_attachment",
379
+ "as": "62c5b5f6",
380
+ "keyword": "action",
381
+ "input": {
382
+ "id": "#{_dp('data.workato_recipe_function.6b031f18.parameters.issue_key')}"
383
+ }
384
+ }
385
+ ```
386
+
387
+ ### 2. File Processing Pipeline
388
+ **Block 1** (Download File):
389
+ ```json
390
+ {
391
+ "provider": "google_drive",
392
+ "name": "download_file_contents",
393
+ "as": "9672c97b",
394
+ "keyword": "action"
395
+ }
396
+ ```
397
+
398
+ **Block 2** (Process File):
399
+ ```json
400
+ {
401
+ "provider": "utility",
402
+ "name": "transform",
403
+ "as": "transform_data",
404
+ "keyword": "action",
405
+ "input": {
406
+ "data": "#{_dp('data.google_drive.9672c97b.content')}",
407
+ "file_name": "#{_dp('data.google_drive.9672c97b.name')}"
408
+ }
409
+ }
410
+ ```
411
+
412
+ **Block 3** (Save Results):
413
+ ```json
414
+ {
415
+ "provider": "mysql",
416
+ "name": "insert_record",
417
+ "as": "save_data",
418
+ "keyword": "action",
419
+ "input": {
420
+ "table": "processed_files",
421
+ "data": {
422
+ "file_name": "#{_dp('data.google_drive.9672c97b.name')}",
423
+ "processed_content": "#{_dp('data.utility.transform_data.result')}",
424
+ "file_size": "#{_dp('data.google_drive.9672c97b.size')}"
425
+ }
426
+ }
427
+ }
428
+ ```
429
+
430
+ ### 3. API Response Chain
431
+ **Block 1** (HTTP Request):
432
+ ```json
433
+ {
434
+ "provider": "rest",
435
+ "name": "get",
436
+ "as": "fetch_data",
437
+ "keyword": "action",
438
+ "input": {
439
+ "url": "https://api.example.com/data"
440
+ }
441
+ }
442
+ ```
443
+
444
+ **Block 2** (Process Response):
445
+ ```json
446
+ {
447
+ "provider": "utility",
448
+ "name": "filter",
449
+ "as": "filter_data",
450
+ "keyword": "action",
451
+ "input": {
452
+ "data": "#{_dp('data.rest.fetch_data.body')}",
453
+ "condition": "#{_dp('data.rest.fetch_data.status')} == 200"
454
+ }
455
+ }
456
+ ```
457
+
458
+ **Block 3** (Return Response):
459
+ ```json
460
+ {
461
+ "provider": "workato_api_platform",
462
+ "name": "return_response",
463
+ "as": "return_result",
464
+ "keyword": "action",
465
+ "input": {
466
+ "http_status_code": "200",
467
+ "body": {
468
+ "filtered_data": "#{_dp('data.utility.filter_data.result')}",
469
+ "original_status": "#{_dp('data.rest.fetch_data.status')}"
470
+ }
471
+ }
472
+ }
473
+ ```
474
+
475
+ ## Data Type Handling
476
+
477
+ ### String Data
478
+ ```json
479
+ "#{_dp('data.source_block.field_name')}"
480
+ ```
481
+
482
+ ### Numeric Data
483
+ ```json
484
+ "#{_dp('data.source_block.count') + 1}"
485
+ "#{_dp('data.source_block.price') * 1.1}"
486
+ ```
487
+
488
+ ### Boolean Data
489
+ ```json
490
+ "#{_dp('data.source_block.success') == true}"
491
+ "#{_dp('data.source_block.enabled') != false}"
492
+ ```
493
+
494
+ ### Array Data
495
+ ```json
496
+ "#{_dp('data.source_block.items')}"
497
+ "#{_dp('data.source_block.files.0.name')}"
498
+ ```
499
+
500
+ ### Object Data
501
+ ```json
502
+ "#{_dp('data.source_block.user.name')}"
503
+ "#{_dp('data.source_block.response.data.id')}"
504
+ ```
505
+
506
+ ## Array Data Mapping Patterns
507
+
508
+ ### 1. Simple Array References
509
+ Reference entire arrays or specific elements:
510
+
511
+ ```json
512
+ // Reference entire array
513
+ "files": "#{_dp('data.google_drive.search_files.files')}"
514
+
515
+ // Reference specific array element
516
+ "first_file": "#{_dp('data.google_drive.search_files.files.0')}"
517
+
518
+ // Reference specific field of array element
519
+ "first_file_name": "#{_dp('data.google_drive.search_files.files.0.name')}"
520
+ ```
521
+
522
+ ### 2. Array Transformation with Current Item Pattern
523
+ Transform array data using the `current_item` pattern:
524
+
525
+ ```json
526
+ "transformed_files": {
527
+ "____source": "#{_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\"]}')}",
528
+ "id": "#{_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\",{\"path_element_type\":\"current_item\"},\"id\"]}')}",
529
+ "name": "#{_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\",{\"path_element_type\":\"current_item\"},\"name\"]}')}",
530
+ "type": "#{_dp('{\"pill_type\":\"output\",\"provider\":\"workato_recipe_function\",\"line\":\"b2dacec4\",\"path\":[\"result\",\"files\",{\"path_element_type\":\"current_item\"},\"type\"]}')}"
531
+ }
532
+ ```
533
+
534
+ **What This Does**:
535
+ - Takes an array of files from the source block
536
+ - Maps each file to a new structure with selected fields
537
+ - Preserves the array structure while transforming individual items
538
+
539
+ ### 3. Array Filtering and Mapping
540
+ Filter arrays based on conditions:
541
+
542
+ ```json
543
+ "filtered_files": "#{_dp('data.google_drive.search_files.files').filter(file => file.type == 'pdf')}"
544
+ ```
545
+
546
+ **Note**: Array filtering syntax may vary by provider and context.
547
+
548
+ ### 4. Array Aggregation
549
+ Combine array data into single values:
550
+
551
+ ```json
552
+ "total_files": "#{_dp('data.google_drive.search_files.files').length}"
553
+ "file_names": "#{_dp('data.google_drive.search_files.files').map(file => file.name).join(', ')}"
554
+ ```
555
+
556
+ ### 5. Nested Array Handling
557
+ Handle arrays within arrays:
558
+
559
+ ```json
560
+ // Source structure: { "folders": [{ "files": [{ "name": "doc.pdf" }] }] }
561
+ "file_names": "#{_dp('data.google_drive.folders.0.files.0.name')}"
562
+
563
+ // Using current_item for nested arrays
564
+ "all_files": {
565
+ "____source": "#{_dp('{\"pill_type\":\"output\",\"provider\":\"google_drive\",\"line\":\"folder_block\",\"path\":[\"folders\"]}')}",
566
+ "folder_name": "#{_dp('{\"pill_type\":\"output\",\"provider\":\"google_drive\",\"line\":\"folder_block\",\"path\":[\"folders\",{\"path_element_type\":\"current_item\"},\"name\"]}')}",
567
+ "files": {
568
+ "____source": "#{_dp('{\"pill_type\":\"output\",\"provider\":\"google_drive\",\"line\":\"folder_block\",\"path\":[\"folders\",{\"path_element_type\":\"current_item\"},\"files\"]}')}",
569
+ "file_name": "#{_dp('{\"pill_type\":\"output\",\"provider\":\"google_drive\",\"line\":\"folder_block\",\"path\":[\"folders\",{\"path_element_type\":\"current_item\"},\"files\",{\"path_element_type\":\"current_item\"},\"name\"]}')}"
570
+ }
571
+ }
572
+ ```
573
+
574
+ ## Advanced Data Mapping
575
+
576
+ ### 1. Multiple Source References
577
+ Reference data from multiple previous blocks:
578
+
579
+ ```json
580
+ "input": {
581
+ "issue_key": "#{_dp('data.workato_recipe_function.6b031f18.parameters.issue_key')}",
582
+ "file_content": "#{_dp('data.google_drive.9672c97b.content')}",
583
+ "file_name": "#{_dp('data.google_drive.9672c97b.name')}",
584
+ "user_id": "#{_dp('data.mysql.get_user.id')}"
585
+ }
586
+ ```
587
+
588
+ ### 2. Conditional Data Mapping
589
+ Use conditional logic for data mapping:
590
+
591
+ ```json
592
+ "input": {
593
+ "status": "#{_dp('data.mysql.check_status.success') == true ? 'active' : 'inactive'}",
594
+ "message": "#{_dp('data.mysql.check_status.success') == true ? 'Success' : 'Failed: ' + _dp('data.mysql.check_status.error')}"
595
+ }
596
+ ```
597
+
598
+ ### 3. Data Transformation in Mapping
599
+ Transform data during mapping:
600
+
601
+ ```json
602
+ "input": {
603
+ "file_name_upper": "#{_dp('data.google_drive.9672c97b.name').toUpperCase()}",
604
+ "file_size_mb": "#{_dp('data.google_drive.9672c97b.size') / 1024 / 1024}"
605
+ }
606
+ ```
607
+
608
+ ## Data Validation and Error Handling
609
+
610
+ ### Common Data Reference Errors
611
+
612
+ #### 1. Invalid Provider Name
613
+ ```json
614
+ // ❌ Wrong provider name
615
+ "#{_dp('data.google_drive_wrong.9672c97b.file.name')}"
616
+ ```
617
+
618
+ #### 2. Invalid "as" Value
619
+ ```json
620
+ // ❌ Wrong "as" value
621
+ "#{_dp('data.google_drive.wrong_as_value.file.name')}"
622
+ ```
623
+
624
+ #### 3. Invalid Data Path
625
+ ```json
626
+ // ❌ Field doesn't exist in source
627
+ "#{_dp('data.google_drive.9672c97b.nonexistent_field')}"
628
+ ```
629
+
630
+ #### 4. Array Index Out of Bounds
631
+ ```json
632
+ // ❌ Array index doesn't exist
633
+ "#{_dp('data.google_drive.9672c97b.files.999.name')}"
634
+ ```
635
+
636
+ ### Data Reference Validation
637
+ ```bash
638
+ # Validate recipe data references
639
+ workato recipes validate --file recipe.json
640
+
641
+ # Check for data reference errors
642
+ workato recipes validate --file recipe.json --verbose
643
+ ```
644
+
645
+ ## Best Practices
646
+
647
+ ### 1. Use Descriptive "as" Values
648
+ ```json
649
+ // ✅ Good - descriptive and clear
650
+ "as": "download_file_action"
651
+
652
+ // ❌ Bad - unclear and hard to reference
653
+ "as": "abc123"
654
+ ```
655
+
656
+ ### 2. Choose the Right Input Mode
657
+ ```json
658
+ // ✅ Text Input Mode - for simple concatenation
659
+ "display_name": "#{_dp('data.source_block.first_name')} #{_dp('data.source_block.last_name')}"
660
+
661
+ // ✅ Formula Mode - for data processing
662
+ "clean_id": "=_dp('data.source_block.id').split(':').first"
663
+
664
+ // ❌ Mixed Mode - can be confusing
665
+ "mixed": "=_dp('data.source_block.field') + ' - ' + _dp('data.source_block.other')"
666
+ ```
667
+
668
+ ### 3. Formula Mode Best Practices
669
+ ```json
670
+ // ✅ Good - clear and readable
671
+ "id": "=_dp('data.source_block.complex_id').split(':').first"
672
+
673
+ // ✅ Good - with descriptive variable names
674
+ "file_extension": "=_dp('data.source_block.file_name').split('.').last"
675
+
676
+ // ❌ Bad - overly complex inline operations
677
+ "result": "=_dp('data.source_block.field').split(':').filter(item => item.length > 0).map(item => item.trim()).join('|')"
678
+ ```
679
+
680
+ ### 4. Text Input Mode Best Practices
681
+ ```json
682
+ // ✅ Good - clear concatenation
683
+ "full_path": "#{_dp('data.source_block.base_url')}/#{_dp('data.source_block.endpoint')}"
684
+
685
+ // ✅ Good - readable with spacing
686
+ "message": "Processing file: #{_dp('data.source_block.file_name')} (Size: #{_dp('data.source_block.file_size')} bytes)"
687
+
688
+ // ❌ Bad - hard to read without spacing
689
+ "message": "#{_dp('data.source_block.status')}#{_dp('data.source_block.code')}#{_dp('data.source_block.message')}"
690
+ ```
691
+
692
+ ### 2. Consistent Naming Conventions
693
+ ```json
694
+ // ✅ Good - consistent pattern
695
+ "as": "jira_upload_attachment"
696
+ "as": "google_drive_download_file"
697
+ "as": "mysql_insert_record"
698
+
699
+ // ❌ Bad - inconsistent patterns
700
+ "as": "jira_upload"
701
+ "as": "download_file"
702
+ "as": "mysql_insert"
703
+ ```
704
+
705
+ ### 3. Document Data Dependencies
706
+ ```json
707
+ "comment": "Downloads file content for processing in next block",
708
+ "input": {
709
+ "file_id": "#{_dp('data.workato_recipe_function.6b031f18.parameters.file_id')}"
710
+ }
711
+ ```
712
+
713
+ ### 4. Validate Data References Early
714
+ Test data references as you build the recipe:
715
+ ```bash
716
+ # Validate after each block addition
717
+ workato recipes validate --file recipe.json
718
+ ```
719
+
720
+ ## Troubleshooting Data Mapping
721
+
722
+ ### Debug Data References
723
+ 1. **Check provider names** - Ensure they match exactly
724
+ 2. **Verify "as" values** - Must match source block exactly
725
+ 3. **Validate data paths** - Use extended output schemas as reference
726
+ 4. **Test incrementally** - Add blocks one at a time and validate
727
+
728
+ ### Common Issues and Solutions
729
+
730
+ #### Issue: "Data reference not found"
731
+ **Solution**: Check the exact provider name and "as" value from the source block
732
+
733
+ #### Issue: "Field not available in schema"
734
+ **Solution**: Verify the field exists in the source block's `extended_output_schema`
735
+
736
+ #### Issue: "Array index out of bounds"
737
+ **Solution**: Ensure the array index exists or use conditional logic
738
+
739
+ #### Issue: "Type mismatch"
740
+ **Solution**: Check data types match between source and target fields
741
+
742
+ #### Issue: "Array mapping not working with current_item"
743
+ **Solution**:
744
+ - Ensure the source block has `extended_output_schema` with array definition
745
+ - Verify the `____source` field references the correct array path
746
+ - Check that all field mappings use the same `current_item` pattern
747
+
748
+ #### Issue: "Complex JSON syntax errors"
749
+ **Solution**:
750
+ - Escape quotes properly: `\"` instead of `"`
751
+ - Ensure the JSON path array is valid
752
+ - Verify `path_element_type` values are correct
753
+ - Use the simple syntax when possible for easier debugging
754
+
755
+ #### Issue: "Formula mode not working"
756
+ **Solution**:
757
+ - Ensure the formula starts with `=` (equals sign)
758
+ - Check that the data pill syntax is correct within the formula
759
+ - Verify the formula syntax is valid (proper method calls, operators)
760
+ - Test with simple formulas first before adding complexity
761
+
762
+ #### Issue: "Text concatenation not working as expected"
763
+ **Solution**:
764
+ - Use `#{_dp('...')}` syntax for text input mode
765
+ - Ensure proper spacing between data pills and literal text
766
+ - Check that all data pill references are valid
767
+ - Avoid mixing formula syntax (`=_dp`) in text input mode
768
+
769
+ #### Issue: "Mixed input modes causing errors"
770
+ **Solution**:
771
+ - Choose one input mode per field when possible
772
+ - Use formula mode for data processing, text mode for display
773
+ - Keep complex operations in formula mode
774
+ - Test each input mode separately before combining
775
+
776
+ ## Next Steps
777
+ - [Formulas](./formulas.md) - Formula syntax, categories, and best practices
778
+ - [Naming Conventions](./naming-conventions.md) - Project and asset naming standards
779
+ - [Block Structure and Attributes](./block-structure.md)