api-sdk-rb 1.11.66 → 1.11.111

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 (317) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +192 -9
  3. data/docs/AdapterConnection.md +7 -1
  4. data/docs/BrandColor.md +22 -0
  5. data/docs/BrandFont.md +24 -0
  6. data/docs/BrandKitApi.md +593 -0
  7. data/docs/BrandKitAssetView.md +42 -0
  8. data/docs/BrandKitFigmaSource.md +26 -0
  9. data/docs/BrandKitTokens.md +24 -0
  10. data/docs/BrandKitTokensFonts.md +24 -0
  11. data/docs/BrandKitView.md +36 -0
  12. data/docs/BrandKitViewOwner.md +20 -0
  13. data/docs/BrandKitViewResponse.md +22 -0
  14. data/docs/BrandSpacing.md +32 -0
  15. data/docs/Composition.md +5 -1
  16. data/docs/CompositionLastEditedBy.md +20 -0
  17. data/docs/CompositionsApi.md +217 -135
  18. data/docs/ConfirmAdapterConnectionRequest.md +18 -0
  19. data/docs/CreateWidget201ResponseData.md +2 -4
  20. data/docs/CreateWorkspaceWorkflowFromPreset201Response.md +22 -0
  21. data/docs/CreateWorkspaceWorkflowFromPresetRequest.md +20 -0
  22. data/docs/CreateWorkspaceWorkflowRequest.md +22 -0
  23. data/docs/DeleteWorkspaceWorkflow200Response.md +22 -0
  24. data/docs/GetPublicCompositionEmbed200Response.md +7 -1
  25. data/docs/GetPublicCompositionEmbed200ResponseAdapters.md +20 -0
  26. data/docs/GetPublicCompositionEmbed200ResponseAdaptersCaptcha.md +18 -0
  27. data/docs/GetPublicCompositionEmbed200ResponseEntries.md +20 -0
  28. data/docs/GetPublicCompositionEmbed200ResponseMedia.md +18 -0
  29. data/docs/GetPublicWorkflow200Response.md +22 -0
  30. data/docs/GetWorkspaceWorkflowStats200Response.md +22 -0
  31. data/docs/GetWorkspaceWorkflowVersion200Response.md +22 -0
  32. data/docs/ListPartnerWorkflowPresets200Response.md +22 -0
  33. data/docs/ListWorkspaceWorkflowCompositionOptions200Response.md +22 -0
  34. data/docs/ListWorkspaceWorkflowPresets200Response.md +22 -0
  35. data/docs/ListWorkspaceWorkflowVersions200Response.md +22 -0
  36. data/docs/ListWorkspaceWorkflows200Response.md +22 -0
  37. data/docs/ManagedUsersApi.md +1 -1
  38. data/docs/NewComposition.md +1 -1
  39. data/docs/NewEditorSession.md +1 -1
  40. data/docs/OfferWorkflowPresetRequest.md +24 -0
  41. data/docs/OfferedWorkflowPreset.md +40 -0
  42. data/docs/OfferedWorkflowPresetList.md +18 -0
  43. data/docs/OfferedWorkflowPresetWidget.md +22 -0
  44. data/docs/PartnerApi.md +3360 -538
  45. data/docs/PartnerCustomization.md +2 -2
  46. data/docs/PartnerNotification.md +1 -1
  47. data/docs/PartnersApi.md +294 -2
  48. data/docs/PatchBrandKitAssetRequest.md +24 -0
  49. data/docs/PatchBrandKitRequest.md +28 -0
  50. data/docs/PatchBrandKitRequestFonts.md +24 -0
  51. data/docs/PatchBrandKitRequestSpacing.md +32 -0
  52. data/docs/PostBrandKitIconRequest.md +20 -0
  53. data/docs/PublicEmbedApi.md +270 -4
  54. data/docs/PublicWorkflow.md +36 -0
  55. data/docs/PublicWorkflowEventsAccepted.md +22 -0
  56. data/docs/PublicWorkflowEventsRequest.md +24 -0
  57. data/docs/PublicWorkflowEventsRequestEventsInner.md +22 -0
  58. data/docs/PublicWorkflowEventsRequestHeightsInner.md +20 -0
  59. data/docs/PublicWorkflowTranslation.md +20 -0
  60. data/docs/PublishWorkspaceWorkflow200Response.md +22 -0
  61. data/docs/PublishWorkspaceWorkflowRequest.md +18 -0
  62. data/docs/PutBrandKitRequest.md +22 -0
  63. data/docs/RemovePartnerWorkflowPreset200Response.md +22 -0
  64. data/docs/ReportPublicWorkflowEvents200Response.md +22 -0
  65. data/docs/SaveWorkspaceWorkflow200Response.md +22 -0
  66. data/docs/SaveWorkspaceWorkflowRequest.md +24 -0
  67. data/docs/SetAdapterConnectionRequest.md +1 -1
  68. data/docs/SetPartnerWorkflowPreset200Response.md +22 -0
  69. data/docs/UpdateComposition.md +1 -1
  70. data/docs/UsersApi.md +77 -1
  71. data/docs/Widget.md +2 -4
  72. data/docs/Workflow.md +50 -0
  73. data/docs/WorkflowCompositionAction.md +24 -0
  74. data/docs/WorkflowCompositionField.md +24 -0
  75. data/docs/WorkflowCompositionOption.md +30 -0
  76. data/docs/WorkflowCompositionOptionActions.md +22 -0
  77. data/docs/WorkflowCompositionOptionInputs.md +24 -0
  78. data/docs/WorkflowCompositionOptions.md +24 -0
  79. data/docs/WorkflowConditionCase.md +24 -0
  80. data/docs/WorkflowConditionTest.md +22 -0
  81. data/docs/WorkflowCounter.md +20 -0
  82. data/docs/WorkflowDetail.md +60 -0
  83. data/docs/WorkflowDetailAllOfLastEditedBy.md +20 -0
  84. data/docs/WorkflowEdge.md +24 -0
  85. data/docs/WorkflowFieldReference.md +22 -0
  86. data/docs/WorkflowGraph.md +22 -0
  87. data/docs/WorkflowIssue.md +28 -0
  88. data/docs/WorkflowList.md +24 -0
  89. data/docs/WorkflowNode.md +30 -0
  90. data/docs/WorkflowNodePosition.md +20 -0
  91. data/docs/WorkflowPresetChoice.md +26 -0
  92. data/docs/WorkflowPresetChoices.md +18 -0
  93. data/docs/WorkflowPresetRemoval.md +18 -0
  94. data/docs/WorkflowPresetWidget.md +20 -0
  95. data/docs/WorkflowPublishResult.md +22 -0
  96. data/docs/WorkflowRemoved.md +18 -0
  97. data/docs/WorkflowSchedule.md +24 -0
  98. data/docs/WorkflowStats.md +32 -0
  99. data/docs/WorkflowStatus.md +15 -0
  100. data/docs/WorkflowTrigger.md +28 -0
  101. data/docs/WorkflowTriggerValuesInner.md +20 -0
  102. data/docs/WorkflowVersion.md +28 -0
  103. data/docs/WorkflowVersionDetail.md +32 -0
  104. data/docs/WorkflowVersionList.md +18 -0
  105. data/docs/WorkflowVersionPublishedBy.md +20 -0
  106. data/docs/WorkflowsApi.md +1743 -0
  107. data/docs/WorkspacesApi.md +1527 -0
  108. data/lib/api-sdk-rb/api/brand_kit_api.rb +581 -0
  109. data/lib/api-sdk-rb/api/compositions_api.rb +237 -138
  110. data/lib/api-sdk-rb/api/managed_users_api.rb +2 -2
  111. data/lib/api-sdk-rb/api/partner_api.rb +3907 -809
  112. data/lib/api-sdk-rb/api/partners_api.rb +320 -4
  113. data/lib/api-sdk-rb/api/public_embed_api.rb +283 -6
  114. data/lib/api-sdk-rb/api/users_api.rb +96 -2
  115. data/lib/api-sdk-rb/api/workflows_api.rb +1997 -0
  116. data/lib/api-sdk-rb/api/workspaces_api.rb +1775 -0
  117. data/lib/api-sdk-rb/configuration.rb +50 -2
  118. data/lib/api-sdk-rb/models/adapter_connection.rb +48 -5
  119. data/lib/api-sdk-rb/models/brand_color.rb +329 -0
  120. data/lib/api-sdk-rb/models/brand_font.rb +357 -0
  121. data/lib/api-sdk-rb/models/brand_kit_asset_view.rb +409 -0
  122. data/lib/api-sdk-rb/models/brand_kit_figma_source.rb +277 -0
  123. data/lib/api-sdk-rb/models/brand_kit_tokens.rb +304 -0
  124. data/lib/api-sdk-rb/models/brand_kit_tokens_fonts.rb +241 -0
  125. data/lib/api-sdk-rb/models/brand_kit_view.rb +344 -0
  126. data/lib/api-sdk-rb/models/brand_kit_view_owner.rb +267 -0
  127. data/lib/api-sdk-rb/models/brand_kit_view_response.rb +247 -0
  128. data/lib/api-sdk-rb/models/brand_spacing.rb +557 -0
  129. data/lib/api-sdk-rb/models/composition.rb +26 -5
  130. data/lib/api-sdk-rb/models/composition_last_edited_by.rb +242 -0
  131. data/lib/api-sdk-rb/models/confirm_adapter_connection_request.rb +241 -0
  132. data/lib/api-sdk-rb/models/create_widget201_response_data.rb +9 -20
  133. data/lib/api-sdk-rb/models/create_workspace_workflow_from_preset201_response.rb +246 -0
  134. data/lib/api-sdk-rb/models/create_workspace_workflow_from_preset_request.rb +278 -0
  135. data/lib/api-sdk-rb/models/create_workspace_workflow_request.rb +271 -0
  136. data/lib/api-sdk-rb/models/delete_workspace_workflow200_response.rb +246 -0
  137. data/lib/api-sdk-rb/models/get_public_composition_embed200_response.rb +29 -2
  138. data/lib/api-sdk-rb/models/get_public_composition_embed200_response_adapters.rb +225 -0
  139. data/lib/api-sdk-rb/models/get_public_composition_embed200_response_adapters_captcha.rb +216 -0
  140. data/lib/api-sdk-rb/models/get_public_composition_embed200_response_entries.rb +224 -0
  141. data/lib/api-sdk-rb/models/get_public_composition_embed200_response_media.rb +216 -0
  142. data/lib/api-sdk-rb/models/get_public_workflow200_response.rb +246 -0
  143. data/lib/api-sdk-rb/models/get_workspace_workflow_stats200_response.rb +246 -0
  144. data/lib/api-sdk-rb/models/get_workspace_workflow_version200_response.rb +246 -0
  145. data/lib/api-sdk-rb/models/list_partner_workflow_presets200_response.rb +246 -0
  146. data/lib/api-sdk-rb/models/list_workspace_workflow_composition_options200_response.rb +246 -0
  147. data/lib/api-sdk-rb/models/list_workspace_workflow_presets200_response.rb +246 -0
  148. data/lib/api-sdk-rb/models/list_workspace_workflow_versions200_response.rb +246 -0
  149. data/lib/api-sdk-rb/models/list_workspace_workflows200_response.rb +246 -0
  150. data/lib/api-sdk-rb/models/new_composition.rb +1 -1
  151. data/lib/api-sdk-rb/models/new_editor_session.rb +1 -1
  152. data/lib/api-sdk-rb/models/offer_workflow_preset_request.rb +322 -0
  153. data/lib/api-sdk-rb/models/offered_workflow_preset.rb +423 -0
  154. data/lib/api-sdk-rb/models/offered_workflow_preset_list.rb +223 -0
  155. data/lib/api-sdk-rb/models/offered_workflow_preset_widget.rb +251 -0
  156. data/lib/api-sdk-rb/models/partner_notification.rb +1 -1
  157. data/lib/api-sdk-rb/models/partner_notification_event_type.rb +5 -1
  158. data/lib/api-sdk-rb/models/patch_brand_kit_asset_request.rb +289 -0
  159. data/lib/api-sdk-rb/models/patch_brand_kit_request.rb +332 -0
  160. data/lib/api-sdk-rb/models/patch_brand_kit_request_fonts.rb +242 -0
  161. data/lib/api-sdk-rb/models/patch_brand_kit_request_spacing.rb +502 -0
  162. data/lib/api-sdk-rb/models/post_brand_kit_icon_request.rb +237 -0
  163. data/lib/api-sdk-rb/models/public_workflow.rb +351 -0
  164. data/lib/api-sdk-rb/models/public_workflow_events_accepted.rb +242 -0
  165. data/lib/api-sdk-rb/models/public_workflow_events_request.rb +301 -0
  166. data/lib/api-sdk-rb/models/public_workflow_events_request_events_inner.rb +332 -0
  167. data/lib/api-sdk-rb/models/public_workflow_events_request_heights_inner.rb +267 -0
  168. data/lib/api-sdk-rb/models/public_workflow_translation.rb +242 -0
  169. data/lib/api-sdk-rb/models/publish_workspace_workflow200_response.rb +246 -0
  170. data/lib/api-sdk-rb/models/publish_workspace_workflow_request.rb +240 -0
  171. data/lib/api-sdk-rb/models/put_brand_kit_request.rb +239 -0
  172. data/lib/api-sdk-rb/models/remove_partner_workflow_preset200_response.rb +246 -0
  173. data/lib/api-sdk-rb/models/report_public_workflow_events200_response.rb +246 -0
  174. data/lib/api-sdk-rb/models/save_workspace_workflow200_response.rb +246 -0
  175. data/lib/api-sdk-rb/models/save_workspace_workflow_request.rb +296 -0
  176. data/lib/api-sdk-rb/models/set_adapter_connection_request.rb +1 -1
  177. data/lib/api-sdk-rb/models/set_partner_workflow_preset200_response.rb +246 -0
  178. data/lib/api-sdk-rb/models/update_composition.rb +1 -1
  179. data/lib/api-sdk-rb/models/widget.rb +9 -20
  180. data/lib/api-sdk-rb/models/workflow.rb +509 -0
  181. data/lib/api-sdk-rb/models/workflow_composition_action.rb +266 -0
  182. data/lib/api-sdk-rb/models/workflow_composition_field.rb +303 -0
  183. data/lib/api-sdk-rb/models/workflow_composition_option.rb +316 -0
  184. data/lib/api-sdk-rb/models/workflow_composition_option_actions.rb +284 -0
  185. data/lib/api-sdk-rb/models/workflow_composition_option_inputs.rb +304 -0
  186. data/lib/api-sdk-rb/models/workflow_composition_options.rb +271 -0
  187. data/lib/api-sdk-rb/models/workflow_condition_case.rb +322 -0
  188. data/lib/api-sdk-rb/models/workflow_condition_test.rb +284 -0
  189. data/lib/api-sdk-rb/models/workflow_counter.rb +238 -0
  190. data/lib/api-sdk-rb/models/workflow_detail.rb +580 -0
  191. data/lib/api-sdk-rb/models/workflow_detail_all_of_last_edited_by.rb +242 -0
  192. data/lib/api-sdk-rb/models/workflow_edge.rb +292 -0
  193. data/lib/api-sdk-rb/models/workflow_field_reference.rb +300 -0
  194. data/lib/api-sdk-rb/models/workflow_graph.rb +330 -0
  195. data/lib/api-sdk-rb/models/workflow_issue.rb +309 -0
  196. data/lib/api-sdk-rb/models/workflow_list.rb +271 -0
  197. data/lib/api-sdk-rb/models/workflow_node.rb +343 -0
  198. data/lib/api-sdk-rb/models/workflow_node_position.rb +238 -0
  199. data/lib/api-sdk-rb/models/workflow_preset_choice.rb +288 -0
  200. data/lib/api-sdk-rb/models/workflow_preset_choices.rb +224 -0
  201. data/lib/api-sdk-rb/models/workflow_preset_removal.rb +222 -0
  202. data/lib/api-sdk-rb/models/workflow_preset_widget.rb +234 -0
  203. data/lib/api-sdk-rb/models/workflow_publish_result.rb +256 -0
  204. data/lib/api-sdk-rb/models/workflow_removed.rb +221 -0
  205. data/lib/api-sdk-rb/models/workflow_schedule.rb +298 -0
  206. data/lib/api-sdk-rb/models/workflow_stats.rb +335 -0
  207. data/lib/api-sdk-rb/models/workflow_status.rb +42 -0
  208. data/lib/api-sdk-rb/models/workflow_trigger.rb +303 -0
  209. data/lib/api-sdk-rb/models/workflow_trigger_values_inner.rb +271 -0
  210. data/lib/api-sdk-rb/models/workflow_version.rb +316 -0
  211. data/lib/api-sdk-rb/models/workflow_version_detail.rb +354 -0
  212. data/lib/api-sdk-rb/models/workflow_version_list.rb +224 -0
  213. data/lib/api-sdk-rb/models/workflow_version_published_by.rb +225 -0
  214. data/lib/api-sdk-rb/version.rb +1 -1
  215. data/lib/api-sdk-rb.rb +88 -0
  216. data/spec/api/brand_kit_api_spec.rb +136 -0
  217. data/spec/api/compositions_api_spec.rb +86 -69
  218. data/spec/api/managed_users_api_spec.rb +1 -1
  219. data/spec/api/partner_api_spec.rb +624 -82
  220. data/spec/api/partners_api_spec.rb +56 -2
  221. data/spec/api/public_embed_api_spec.rb +54 -3
  222. data/spec/api/users_api_spec.rb +16 -1
  223. data/spec/api/workflows_api_spec.rb +378 -0
  224. data/spec/api/workspaces_api_spec.rb +339 -0
  225. data/spec/models/adapter_connection_spec.rb +18 -0
  226. data/spec/models/brand_color_spec.rb +52 -0
  227. data/spec/models/brand_font_spec.rb +62 -0
  228. data/spec/models/brand_kit_asset_view_spec.rb +120 -0
  229. data/spec/models/brand_kit_figma_source_spec.rb +60 -0
  230. data/spec/models/brand_kit_tokens_fonts_spec.rb +54 -0
  231. data/spec/models/brand_kit_tokens_spec.rb +54 -0
  232. data/spec/models/brand_kit_view_owner_spec.rb +46 -0
  233. data/spec/models/brand_kit_view_response_spec.rb +48 -0
  234. data/spec/models/brand_kit_view_spec.rb +90 -0
  235. data/spec/models/brand_spacing_spec.rb +78 -0
  236. data/spec/models/composition_last_edited_by_spec.rb +42 -0
  237. data/spec/models/composition_spec.rb +12 -0
  238. data/spec/models/confirm_adapter_connection_request_spec.rb +36 -0
  239. data/spec/models/create_widget201_response_data_spec.rb +1 -7
  240. data/spec/models/create_workspace_workflow_from_preset201_response_spec.rb +48 -0
  241. data/spec/models/create_workspace_workflow_from_preset_request_spec.rb +42 -0
  242. data/spec/models/create_workspace_workflow_request_spec.rb +48 -0
  243. data/spec/models/delete_workspace_workflow200_response_spec.rb +48 -0
  244. data/spec/models/editor_session_spec.rb +1 -1
  245. data/spec/models/get_public_composition_embed200_response_adapters_captcha_spec.rb +36 -0
  246. data/spec/models/get_public_composition_embed200_response_adapters_spec.rb +42 -0
  247. data/spec/models/get_public_composition_embed200_response_entries_spec.rb +42 -0
  248. data/spec/models/get_public_composition_embed200_response_media_spec.rb +36 -0
  249. data/spec/models/get_public_composition_embed200_response_spec.rb +18 -0
  250. data/spec/models/get_public_workflow200_response_spec.rb +48 -0
  251. data/spec/models/get_workspace_workflow_stats200_response_spec.rb +48 -0
  252. data/spec/models/get_workspace_workflow_version200_response_spec.rb +48 -0
  253. data/spec/models/list_partner_workflow_presets200_response_spec.rb +48 -0
  254. data/spec/models/list_workspace_workflow_composition_options200_response_spec.rb +48 -0
  255. data/spec/models/list_workspace_workflow_presets200_response_spec.rb +48 -0
  256. data/spec/models/list_workspace_workflow_versions200_response_spec.rb +48 -0
  257. data/spec/models/list_workspace_workflows200_response_spec.rb +48 -0
  258. data/spec/models/new_editor_session_spec.rb +1 -1
  259. data/spec/models/offer_workflow_preset_request_spec.rb +54 -0
  260. data/spec/models/offered_workflow_preset_list_spec.rb +36 -0
  261. data/spec/models/offered_workflow_preset_spec.rb +106 -0
  262. data/spec/models/offered_workflow_preset_widget_spec.rb +48 -0
  263. data/spec/models/patch_brand_kit_asset_request_spec.rb +62 -0
  264. data/spec/models/patch_brand_kit_request_fonts_spec.rb +54 -0
  265. data/spec/models/patch_brand_kit_request_spacing_spec.rb +78 -0
  266. data/spec/models/patch_brand_kit_request_spec.rb +66 -0
  267. data/spec/models/post_brand_kit_icon_request_spec.rb +42 -0
  268. data/spec/models/public_workflow_events_accepted_spec.rb +48 -0
  269. data/spec/models/public_workflow_events_request_events_inner_spec.rb +52 -0
  270. data/spec/models/public_workflow_events_request_heights_inner_spec.rb +42 -0
  271. data/spec/models/public_workflow_events_request_spec.rb +54 -0
  272. data/spec/models/public_workflow_spec.rb +94 -0
  273. data/spec/models/public_workflow_translation_spec.rb +42 -0
  274. data/spec/models/publish_workspace_workflow200_response_spec.rb +48 -0
  275. data/spec/models/publish_workspace_workflow_request_spec.rb +36 -0
  276. data/spec/models/put_brand_kit_request_spec.rb +48 -0
  277. data/spec/models/remove_partner_workflow_preset200_response_spec.rb +48 -0
  278. data/spec/models/report_public_workflow_events200_response_spec.rb +48 -0
  279. data/spec/models/save_workspace_workflow200_response_spec.rb +48 -0
  280. data/spec/models/save_workspace_workflow_request_spec.rb +54 -0
  281. data/spec/models/set_partner_workflow_preset200_response_spec.rb +48 -0
  282. data/spec/models/widget_spec.rb +1 -7
  283. data/spec/models/workflow_composition_action_spec.rb +54 -0
  284. data/spec/models/workflow_composition_field_spec.rb +58 -0
  285. data/spec/models/workflow_composition_option_actions_spec.rb +52 -0
  286. data/spec/models/workflow_composition_option_inputs_spec.rb +58 -0
  287. data/spec/models/workflow_composition_option_spec.rb +72 -0
  288. data/spec/models/workflow_composition_options_spec.rb +54 -0
  289. data/spec/models/workflow_condition_case_spec.rb +58 -0
  290. data/spec/models/workflow_condition_test_spec.rb +52 -0
  291. data/spec/models/workflow_counter_spec.rb +42 -0
  292. data/spec/models/workflow_detail_all_of_last_edited_by_spec.rb +42 -0
  293. data/spec/models/workflow_detail_spec.rb +162 -0
  294. data/spec/models/workflow_edge_spec.rb +54 -0
  295. data/spec/models/workflow_field_reference_spec.rb +56 -0
  296. data/spec/models/workflow_graph_spec.rb +52 -0
  297. data/spec/models/workflow_issue_spec.rb +70 -0
  298. data/spec/models/workflow_list_spec.rb +54 -0
  299. data/spec/models/workflow_node_position_spec.rb +42 -0
  300. data/spec/models/workflow_node_spec.rb +76 -0
  301. data/spec/models/workflow_preset_choice_spec.rb +60 -0
  302. data/spec/models/workflow_preset_choices_spec.rb +36 -0
  303. data/spec/models/workflow_preset_removal_spec.rb +36 -0
  304. data/spec/models/workflow_preset_widget_spec.rb +42 -0
  305. data/spec/models/workflow_publish_result_spec.rb +48 -0
  306. data/spec/models/workflow_removed_spec.rb +36 -0
  307. data/spec/models/workflow_schedule_spec.rb +62 -0
  308. data/spec/models/workflow_spec.rb +132 -0
  309. data/spec/models/workflow_stats_spec.rb +78 -0
  310. data/spec/models/workflow_status_spec.rb +30 -0
  311. data/spec/models/workflow_trigger_spec.rb +70 -0
  312. data/spec/models/workflow_trigger_values_inner_spec.rb +46 -0
  313. data/spec/models/workflow_version_detail_spec.rb +78 -0
  314. data/spec/models/workflow_version_list_spec.rb +36 -0
  315. data/spec/models/workflow_version_published_by_spec.rb +42 -0
  316. data/spec/models/workflow_version_spec.rb +66 -0
  317. metadata +364 -12
@@ -0,0 +1,18 @@
1
+ # ApiSdkRb::ConfirmAdapterConnectionRequest
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **code** | **String** | The digits of the code Widgetic emailed to the address, with nothing else. It works for 30 minutes and for five wrong tries; after that, save the address again and a new code is emailed | |
8
+
9
+ ## Example
10
+
11
+ ```ruby
12
+ require 'api-sdk-rb'
13
+
14
+ instance = ApiSdkRb::ConfirmAdapterConnectionRequest.new(
15
+ code: 123456
16
+ )
17
+ ```
18
+
@@ -20,8 +20,7 @@
20
20
  | **repo_id** | **String** | Repository identifier for source code. | [optional] |
21
21
  | **database_id** | **String** | Legacy. The name of a Neon database that an earlier version made for this widget. A widget has no database now (what the visitors of a composition leave is kept in the tables of that composition), so widgets made now have none. | [optional] |
22
22
  | **version** | **Float** | Version number of the widget. | [optional] |
23
- | **cpg_schema_id** | **String** | ID linking to the widget's code graph schema. | [optional] |
24
- | **last_cpg_commit_sha** | **String** | Last Git commit SHA analyzed for code graph. | [optional] |
23
+ | **last_commit_sha** | **String** | Latest Git commit SHA of the widget's code repository. | [optional] |
25
24
  | **organization_id** | **String** | Organization ID if created in an organization workspace. | [optional] |
26
25
  | **project_folder** | **String** | Project folder reference for organization widgets. | [optional] |
27
26
  | **workspace_type** | **String** | Workspace type when created. | [optional] |
@@ -50,8 +49,7 @@ instance = ApiSdkRb::CreateWidget201ResponseData.new(
50
49
  repo_id: user/chart-widget,
51
50
  database_id: widget_3fa85f64_5717_4562_b3fc_2c963f66afa6,
52
51
  version: 1,
53
- cpg_schema_id: cpg_4b3a2d1f9e8c7b6a,
54
- last_cpg_commit_sha: a1b2c3d4e5f6g7h8i9j0,
52
+ last_commit_sha: a1b2c3d4e5f6g7h8i9j0,
55
53
  organization_id: 5e2d3f4a-1b6c-4a1f-8b9c-3c2d4e5f6a7b,
56
54
  project_folder: marketing/q4-launch,
57
55
  workspace_type: personal,
@@ -0,0 +1,22 @@
1
+ # ApiSdkRb::CreateWorkspaceWorkflowFromPreset201Response
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **success** | **Boolean** | | |
8
+ | **data** | [**WorkflowDetail**](WorkflowDetail.md) | | |
9
+ | **meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional] |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'api-sdk-rb'
15
+
16
+ instance = ApiSdkRb::CreateWorkspaceWorkflowFromPreset201Response.new(
17
+ success: true,
18
+ data: null,
19
+ meta: null
20
+ )
21
+ ```
22
+
@@ -0,0 +1,20 @@
1
+ # ApiSdkRb::CreateWorkspaceWorkflowFromPresetRequest
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **key** | **String** | The starting point, as `listWorkspaceWorkflowPresets` gives it. | |
8
+ | **name** | **String** | The new workflow's name. The starting point's title when left out. | [optional] |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'api-sdk-rb'
14
+
15
+ instance = ApiSdkRb::CreateWorkspaceWorkflowFromPresetRequest.new(
16
+ key: welcome-then-offer,
17
+ name: null
18
+ )
19
+ ```
20
+
@@ -0,0 +1,22 @@
1
+ # ApiSdkRb::CreateWorkspaceWorkflowRequest
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **name** | **String** | | |
8
+ | **composition_id** | **String** | A composition of this workspace to start with. | [optional] |
9
+ | **timezone** | **String** | An IANA time zone name; UTC when not given. | [optional] |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'api-sdk-rb'
15
+
16
+ instance = ApiSdkRb::CreateWorkspaceWorkflowRequest.new(
17
+ name: Welcome journey,
18
+ composition_id: null,
19
+ timezone: Europe/Bucharest
20
+ )
21
+ ```
22
+
@@ -0,0 +1,22 @@
1
+ # ApiSdkRb::DeleteWorkspaceWorkflow200Response
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **success** | **Boolean** | | |
8
+ | **data** | [**WorkflowRemoved**](WorkflowRemoved.md) | | |
9
+ | **meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional] |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'api-sdk-rb'
15
+
16
+ instance = ApiSdkRb::DeleteWorkspaceWorkflow200Response.new(
17
+ success: true,
18
+ data: null,
19
+ meta: null
20
+ )
21
+ ```
22
+
@@ -8,16 +8,19 @@
8
8
  | **widget_id** | **String** | | [optional] |
9
9
  | **version** | **Integer** | | [optional] |
10
10
  | **widget_version** | **Integer** | Published widget version on the CDN artifact this composition uses. | [optional] |
11
- | **player_version** | **Integer** | Version of the player: the gateway frame wrapper that shows the widget, and the host bridge it speaks with the embedding page and the widget (currently 4). Raised when the messages between page, frame, and widget change in a way a widget could notice, such as a new `widgetic:host` field or a new forwarded event (2 added `entries`, 3 added `adapters`, 4 added `entries.writeToken`). It is not `widgetVersion` (the version of the published widget) and not the `version` inside a `widgetic:host` message. | [optional] |
11
+ | **player_version** | **Integer** | Version of the player: the gateway frame wrapper that shows the widget, and the host bridge it speaks with the embedding page and the widget (currently 6). Raised when the messages between page, frame, and widget change in a way a widget could notice, such as a new `widgetic:host` field or a new forwarded event (2 added `entries`, 3 added `adapters`, 4 added `entries.writeToken`, 5 added the A/B goal: `widgetic:ab-goal` to the widget and `widgetic:goal` back, 6 added the watch of a workflow: `widgetic:workflow-watch` to the widget, the watched values in `widgetic:submitted` and the watched action in `widgetic:goal`). It is not `widgetVersion` (the version of the published widget) and not the `version` inside a `widgetic:host` message. | [optional] |
12
12
  | **data_source** | [**GetPublicCompositionEmbed200ResponseDataSource**](GetPublicCompositionEmbed200ResponseDataSource.md) | | [optional] |
13
13
  | **embed_url** | **String** | | [optional] |
14
14
  | **entry_write_token** | **String** | Signed per-composition write token for `POST /embed/compositions/{compositionId}/entries/{table}`, also handed to the widget inside `widgetic:host` as `entries.writeToken`. | [optional] |
15
+ | **entries** | [**GetPublicCompositionEmbed200ResponseEntries**](GetPublicCompositionEmbed200ResponseEntries.md) | | [optional] |
16
+ | **adapters** | [**GetPublicCompositionEmbed200ResponseAdapters**](GetPublicCompositionEmbed200ResponseAdapters.md) | | [optional] |
15
17
  | **width** | **Integer** | | [optional] |
16
18
  | **height** | **Integer** | | [optional] |
17
19
  | **design** | **Object** | | [optional] |
18
20
  | **content** | **Object** | | [optional] |
19
21
  | **content_items** | **Array<Hash<String, Object>>** | | [optional] |
20
22
  | **iframe_allow** | **String** | The browser features the widget needs the iframe that shows it to be allowed to use, as the value of that iframe's `allow` attribute (for example `camera; microphone`; the words are `camera`, `display-capture` and `microphone`). Present only for a widget that uses a module that needs one, and absent for every other widget. A page that embeds the frame itself copies it onto its own iframe (`allow=\"...\"`); a page that does not leaves the widget to say, in its own words, that the feature is blocked there. The frame wrapper already passes it on to the iframe it holds. | [optional] |
23
+ | **media** | [**GetPublicCompositionEmbed200ResponseMedia**](GetPublicCompositionEmbed200ResponseMedia.md) | | [optional] |
21
24
  | **direct** | [**GetPublicCompositionEmbed200ResponseDirect**](GetPublicCompositionEmbed200ResponseDirect.md) | | [optional] |
22
25
 
23
26
  ## Example
@@ -34,12 +37,15 @@ instance = ApiSdkRb::GetPublicCompositionEmbed200Response.new(
34
37
  data_source: null,
35
38
  embed_url: null,
36
39
  entry_write_token: null,
40
+ entries: null,
41
+ adapters: null,
37
42
  width: null,
38
43
  height: null,
39
44
  design: null,
40
45
  content: null,
41
46
  content_items: null,
42
47
  iframe_allow: camera; microphone,
48
+ media: null,
43
49
  direct: null
44
50
  )
45
51
  ```
@@ -0,0 +1,20 @@
1
+ # ApiSdkRb::GetPublicCompositionEmbed200ResponseAdapters
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **url** | **String** | The operations' address; an operation is `{url}/{adapterId}/{operation}`. | [optional] |
8
+ | **captcha** | [**GetPublicCompositionEmbed200ResponseAdaptersCaptcha**](GetPublicCompositionEmbed200ResponseAdaptersCaptcha.md) | | [optional] |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'api-sdk-rb'
14
+
15
+ instance = ApiSdkRb::GetPublicCompositionEmbed200ResponseAdapters.new(
16
+ url: https://api.widgetic.com/embed/compositions/0f6f7f0e-3c2a-4b86-9e51-2d8d5f4a7c11/adapters,
17
+ captcha: null
18
+ )
19
+ ```
20
+
@@ -0,0 +1,18 @@
1
+ # ApiSdkRb::GetPublicCompositionEmbed200ResponseAdaptersCaptcha
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **site_key** | **String** | The public site key of the CAPTCHA widget. | [optional] |
8
+
9
+ ## Example
10
+
11
+ ```ruby
12
+ require 'api-sdk-rb'
13
+
14
+ instance = ApiSdkRb::GetPublicCompositionEmbed200ResponseAdaptersCaptcha.new(
15
+ site_key: null
16
+ )
17
+ ```
18
+
@@ -0,0 +1,20 @@
1
+ # ApiSdkRb::GetPublicCompositionEmbed200ResponseEntries
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **url** | **String** | | [optional] |
8
+ | **write_token** | **String** | | [optional] |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'api-sdk-rb'
14
+
15
+ instance = ApiSdkRb::GetPublicCompositionEmbed200ResponseEntries.new(
16
+ url: null,
17
+ write_token: null
18
+ )
19
+ ```
20
+
@@ -0,0 +1,18 @@
1
+ # ApiSdkRb::GetPublicCompositionEmbed200ResponseMedia
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **optimize** | **Boolean** | The owner's \"Optimize images for the web\" account setting (ON until they turn it off). When true the Embed SDK may ask Cloudflare for a right-sized, modern-format copy of each content image; when false it uses the originals. | [optional] |
8
+
9
+ ## Example
10
+
11
+ ```ruby
12
+ require 'api-sdk-rb'
13
+
14
+ instance = ApiSdkRb::GetPublicCompositionEmbed200ResponseMedia.new(
15
+ optimize: null
16
+ )
17
+ ```
18
+
@@ -0,0 +1,22 @@
1
+ # ApiSdkRb::GetPublicWorkflow200Response
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **success** | **Boolean** | | |
8
+ | **data** | [**PublicWorkflow**](PublicWorkflow.md) | | |
9
+ | **meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional] |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'api-sdk-rb'
15
+
16
+ instance = ApiSdkRb::GetPublicWorkflow200Response.new(
17
+ success: null,
18
+ data: null,
19
+ meta: null
20
+ )
21
+ ```
22
+
@@ -0,0 +1,22 @@
1
+ # ApiSdkRb::GetWorkspaceWorkflowStats200Response
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **success** | **Boolean** | | |
8
+ | **data** | [**WorkflowStats**](WorkflowStats.md) | | |
9
+ | **meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional] |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'api-sdk-rb'
15
+
16
+ instance = ApiSdkRb::GetWorkspaceWorkflowStats200Response.new(
17
+ success: true,
18
+ data: null,
19
+ meta: null
20
+ )
21
+ ```
22
+
@@ -0,0 +1,22 @@
1
+ # ApiSdkRb::GetWorkspaceWorkflowVersion200Response
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **success** | **Boolean** | | |
8
+ | **data** | [**WorkflowVersionDetail**](WorkflowVersionDetail.md) | | |
9
+ | **meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional] |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'api-sdk-rb'
15
+
16
+ instance = ApiSdkRb::GetWorkspaceWorkflowVersion200Response.new(
17
+ success: true,
18
+ data: null,
19
+ meta: null
20
+ )
21
+ ```
22
+
@@ -0,0 +1,22 @@
1
+ # ApiSdkRb::ListPartnerWorkflowPresets200Response
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **success** | **Boolean** | | |
8
+ | **data** | [**OfferedWorkflowPresetList**](OfferedWorkflowPresetList.md) | | |
9
+ | **meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional] |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'api-sdk-rb'
15
+
16
+ instance = ApiSdkRb::ListPartnerWorkflowPresets200Response.new(
17
+ success: true,
18
+ data: null,
19
+ meta: null
20
+ )
21
+ ```
22
+
@@ -0,0 +1,22 @@
1
+ # ApiSdkRb::ListWorkspaceWorkflowCompositionOptions200Response
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **success** | **Boolean** | | |
8
+ | **data** | [**WorkflowCompositionOptions**](WorkflowCompositionOptions.md) | | |
9
+ | **meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional] |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'api-sdk-rb'
15
+
16
+ instance = ApiSdkRb::ListWorkspaceWorkflowCompositionOptions200Response.new(
17
+ success: true,
18
+ data: null,
19
+ meta: null
20
+ )
21
+ ```
22
+
@@ -0,0 +1,22 @@
1
+ # ApiSdkRb::ListWorkspaceWorkflowPresets200Response
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **success** | **Boolean** | | |
8
+ | **data** | [**WorkflowPresetChoices**](WorkflowPresetChoices.md) | | |
9
+ | **meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional] |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'api-sdk-rb'
15
+
16
+ instance = ApiSdkRb::ListWorkspaceWorkflowPresets200Response.new(
17
+ success: true,
18
+ data: null,
19
+ meta: null
20
+ )
21
+ ```
22
+
@@ -0,0 +1,22 @@
1
+ # ApiSdkRb::ListWorkspaceWorkflowVersions200Response
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **success** | **Boolean** | | |
8
+ | **data** | [**WorkflowVersionList**](WorkflowVersionList.md) | | |
9
+ | **meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional] |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'api-sdk-rb'
15
+
16
+ instance = ApiSdkRb::ListWorkspaceWorkflowVersions200Response.new(
17
+ success: true,
18
+ data: null,
19
+ meta: null
20
+ )
21
+ ```
22
+
@@ -0,0 +1,22 @@
1
+ # ApiSdkRb::ListWorkspaceWorkflows200Response
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **success** | **Boolean** | | |
8
+ | **data** | [**WorkflowList**](WorkflowList.md) | | |
9
+ | **meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional] |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'api-sdk-rb'
15
+
16
+ instance = ApiSdkRb::ListWorkspaceWorkflows200Response.new(
17
+ success: true,
18
+ data: null,
19
+ meta: null
20
+ )
21
+ ```
22
+
@@ -252,7 +252,7 @@ end
252
252
 
253
253
  Create an editor session for a managed user
254
254
 
255
- Makes a short-lived credential that lets the browser of ONE of your managed users use Widgetic's editor pieces, such as the File Browser and the composition editor, without your API key ever reaching that browser. Call this from your server when the page that hosts the editor opens, and hand the `token` in the answer to that page. The token is shown once. It starts with `wgt_ses_` and the browser sends it as `Authorization: Bearer <token>`. It can do only what the `surfaces` you name allow, and only for this managed user: - `files`: upload a file (`uploadsPost`) and list the files uploaded for this user (`uploadsGet`). Every file is filed for this user and stored in your own storage destination, never in Widgetic's: a file a customer uploads is yours to keep, and takes none of your storage allowance. Partner storage is not optional, so no session, whatever its surfaces, can be made until you have set a destination (`setPartnerStorageDestination`); until then it is refused with 409 and `PARTNER_STORAGE_REQUIRED`, and when the destination cannot be used with 503 and `STORAGE_DESTINATION_UNAVAILABLE`. A destination you remove after the session was made stops its uploads too (the same 409; the browser is only told that the feature is not available right now). To keep a customer from uploading, leave `files` out of the session and hand the editors your own media library instead (`mediaLibrary`). - `editor`: edit one of this user's compositions: read it (`getCompositionById`, its content, design, embed settings and schemas), check a content change (`validateCompositionContent`), and change its name, content, design and embed settings (`updateComposition`, `setDynamicContent`). It can reach only compositions you created for this managed user (tag them with `managedUserId` when you create them); any other composition, including another of your users', answers 404. - `creator`: use Widgetic's widget creator for this user, including its AI. Draw on canvases and save them (`getAllCanvases`, `getCanvas`, `createCanvas`, `updateCanvas`, `previewDeleteCanvas`, `deleteCanvas`); make, change, copy and delete the widgets on them (`createWidget`, `getWidgets`, `getWidgetsBatch`, `updateWidget`, `uploadWidgetThumbnail`, `duplicateWidget`, `deleteWidget`); list and make the compositions of a widget it built (`getAllCompositions`, `createComposition`), which is how it shows the widget with sample values; keep the conversation of each widget (`getConversationsByWidgetId`, `createConversationForWidget`, `updateConversation`, `getMessages`, `createMessage`, `updateMessage`, `restoreCheckpoint`); and read a widget's schemas and give it its repository (`getWidgetContentSchema`, `getWidgetDesignSchema`, `updateWidgetRepository`). The AI that builds a widget is part of it: list the models (`agentModelsGet`), open the widget's repository (`agentRepositoriesPost`, `agentRepositoriesRepoIdGet`), start a generation and follow or cancel it (`agentCodeGeneratePost`, `operationsStreamGet`, `operationsIdGet`, `operationsIdCancelPost`), build and preview the result (`agentWidgetBuilderRepoHeadWidgetIdGet`, `buildWidgetFromRepo`, `previewWidgetVersion`), publish a version of the widget and move between its versions (`agentWidgetBuilderPublishWidgetIdPost`, `getWidgetPublishHistory`, `setWidgetPublishHistoryLive`, `renameWidgetPublishHistoryTitle`), and turn a stroke or a sentence into a decision (`agentShapeRecognizePost`, `agentDesignResolvePost`). It can also offer the customer your presets as starting points: read them and ask for a copy for this customer (`listMyPresets`, `copyMyPreset`; you choose the presets with `setPartnerPreset`). What the session makes is filed for this managed user, and the lists it reads hold only this user's canvases, widgets and compositions. It can reach only canvases, widgets, compositions, repositories, uploaded files and operations made for this managed user (tag the canvases and widgets you create with `managedUserId`); any other canvas, widget, composition, conversation, message, repository, file or operation, including another of your users', answers 404. The creator also saves the composition it is editing (`updateComposition`, from the `editor` surface) and attaches pictures to its chat (`uploadsPost`, from the `files` surface), and the surfaces do not imply one another: to open the whole creator for a user, ask for `creator`, `editor` and `files` together. A generation or a build one user starts can be followed and cancelled by that user and by you, never by another of your users. The AI is paid for by your account, as your own calls are: its credits and allowances are yours. A session cannot make a widget public (publishing a version does not), file one under a project or an organization, or set anything the creator does not set: a body with another field is refused with 403 and `EDITOR_SESSION_FIELD_NOT_ALLOWED`. Everything else is refused with 403 and `EDITOR_SESSION_ROUTE_NOT_ALLOWED`: a session cannot read your account, make more sessions, change your presets or delete a composition, and a session without the `creator` surface cannot create or list compositions. Create the composition yourself with your API key, then open the editor on it. A session ends at `expiresAt` (at most four hours), when you end it (`revokeManagedUserEditorSession`), or when the managed user is switched off or deleted. A managed user can have at most 100 live sessions at once (`429 EDITOR_SESSION_LIMIT_REACHED`). A session that is bound to a web page (`allowedOrigin`) is refused from any other origin. The AI the session runs is paid for with your credits. Set `maxCredits` to hold the session to a number of them: once its generations have taken that many (a generation that fails is refunded and does not count), the next one is refused with 402 and `EDITOR_SESSION_CREDIT_LIMIT_REACHED`, and the browser is told only that the feature is not available right now. Without it, the limit Widgetic has set for your account applies when it has set one (the same limit for every session you make, and `maxCredits: null` asks for none), and otherwise the credits of your account are the only ceiling. What each of your users' sessions has spent is in `getManagedUserUsage`. Each call makes a new session. It does not take an `Idempotency-Key`: the answer holds the token, and the token is never stored where a retry could read it back. The answer is sent with `Cache-Control: no-store`.
255
+ Makes a short-lived credential that lets the browser of ONE of your managed users use Widgetic's editor pieces, such as the File Browser and the composition editor, without your API key ever reaching that browser. Call this from your server when the page that hosts the editor opens, and hand the `token` in the answer to that page. The token is shown once. It starts with `wgt_ses_` and the browser sends it as `Authorization: Bearer <token>`. It can do only what the `surfaces` you name allow, and only for this managed user: - `files`: upload a file (`uploadsPost`) and list the files uploaded for this user (`uploadsGet`). Every file is filed for this user and stored in your own storage destination, never in Widgetic's: a file a customer uploads is yours to keep, and takes none of your storage allowance. Partner storage is not optional, so no session, whatever its surfaces, can be made until you have set a destination (`setPartnerStorageDestination`); until then it is refused with 409 and `PARTNER_STORAGE_REQUIRED`, and when the destination cannot be used with 503 and `STORAGE_DESTINATION_UNAVAILABLE`. A destination you remove after the session was made stops its uploads too (the same 409; the browser is only told that the feature is not available right now). To keep a customer from uploading, leave `files` out of the session and hand the editors your own media library instead (`mediaLibrary`). - `editor`: edit one of this user's compositions: read it (`getCompositionById`, its content, design, embed settings and schemas), check a content change (`validateCompositionContent`), and change its name, content, design and embed settings (`updateComposition`, `setDynamicContent`). For a widget that answers visitors' questions from documents (the `ai-answers` adapter), it also lists those documents, adds one as text or as a file (a text file or a picture; a PDF once PDFs are read), and removes one (`getAiAnswersKnowledge`, `addAiAnswersKnowledgeDocument`, `addAiAnswersKnowledgeFile`, `removeAiAnswersKnowledgeDocument`); adding costs no credits, and is limited for each of your users separately. It can reach only compositions you created for this managed user (tag them with `managedUserId` when you create them); any other composition, including another of your users', answers 404. - `creator`: use Widgetic's widget creator for this user, including its AI. Draw on canvases and save them (`getAllCanvases`, `getCanvas`, `createCanvas`, `updateCanvas`, `previewDeleteCanvas`, `deleteCanvas`); make, change, copy and delete the widgets on them (`createWidget`, `getWidgets`, `getWidgetsBatch`, `updateWidget`, `uploadWidgetThumbnail`, `duplicateWidget`, `deleteWidget`); list and make the compositions of a widget it built (`getAllCompositions`, `createComposition`), which is how it shows the widget with sample values; keep the conversation of each widget (`getConversationsByWidgetId`, `createConversationForWidget`, `updateConversation`, `getMessages`, `createMessage`, `updateMessage`, `restoreCheckpoint`); and read a widget's schemas and give it its repository (`getWidgetContentSchema`, `getWidgetDesignSchema`, `updateWidgetRepository`). The AI that builds a widget is part of it: list the models (`agentModelsGet`), open the widget's repository (`agentRepositoriesPost`, `agentRepositoriesRepoIdGet`), start a generation and follow or cancel it (`agentCodeGeneratePost`, `operationsStreamGet`, `operationsIdGet`, `operationsIdCancelPost`), build and preview the result (`agentWidgetBuilderRepoHeadWidgetIdGet`, `buildWidgetFromRepo`, `previewWidgetVersion`), publish a version of the widget and move between its versions (`agentWidgetBuilderPublishWidgetIdPost`, `getWidgetPublishHistory`, `setWidgetPublishHistoryLive`, `renameWidgetPublishHistoryTitle`), and turn a stroke or a sentence into a decision (`agentShapeRecognizePost`, `agentDesignResolvePost`). It can also offer the customer your presets as starting points: read them and ask for a copy for this customer (`listMyPresets`, `copyMyPreset`; you choose the presets with `setPartnerPreset`). What the session makes is filed for this managed user, and the lists it reads hold only this user's canvases, widgets and compositions. It can reach only canvases, widgets, compositions, repositories, uploaded files and operations made for this managed user (tag the canvases and widgets you create with `managedUserId`); any other canvas, widget, composition, conversation, message, repository, file or operation, including another of your users', answers 404. The creator also saves the composition it is editing (`updateComposition`, from the `editor` surface) and attaches pictures to its chat (`uploadsPost`, from the `files` surface), and the surfaces do not imply one another: to open the whole creator for a user, ask for `creator`, `editor` and `files` together. A generation or a build one user starts can be followed and cancelled by that user and by you, never by another of your users. The AI is paid for by your account, as your own calls are: its credits and allowances are yours. A session cannot make a widget public (publishing a version does not), file one under a project or an organization, or set anything the creator does not set: a body with another field is refused with 403 and `EDITOR_SESSION_FIELD_NOT_ALLOWED`. - `workflows`: use Widgetic's Workflows editor for this user. List their workflows and the compositions a workflow of theirs can chain (`listWorkspaceWorkflows`, `listWorkspaceWorkflowCompositionOptions`); list the starting points you offer them and make a workflow from one, which gives the user their own copy of every widget it chains, a composition of their own on each copy, and a draft (`listWorkspaceWorkflowPresets`, `createWorkspaceWorkflowFromPreset`; you offer them with `setPartnerWorkflowPreset`); make, open, change and delete one (`createWorkspaceWorkflow`, `getWorkspaceWorkflow`, `saveWorkspaceWorkflow`, `deleteWorkspaceWorkflow`) and copy it (`duplicateWorkspaceWorkflow`); publish it or discard the changes of its draft (`publishWorkspaceWorkflow`, `discardWorkspaceWorkflowChanges`); read and restore its versions (`listWorkspaceWorkflowVersions`, `getWorkspaceWorkflowVersion`, `restoreWorkspaceWorkflowVersion`); pause, resume, archive and unarchive it (`pauseWorkspaceWorkflow`, `resumeWorkspaceWorkflow`, `archiveWorkspaceWorkflow`, `unarchiveWorkspaceWorkflow`); and read its counts (`getWorkspaceWorkflowStats`). The workspace in each path is `personal`: a session has no other, and a path that names an organization is refused. What the session makes is filed for this managed user (`managedUserId`), the lists hold only this user's workflows, and it can reach only workflows made for this managed user; any other workflow, including one of yours or of another of your users, answers 404. A workflow can chain only the compositions you made for this managed user (tag them with `managedUserId`): one that belongs to anybody else is not available, and publishing a workflow that uses it is refused. A customer can have at most 50 workflows, and what a customer's session reads never says who published a version. A session cannot set who a workflow belongs to or which workspace it is in: a body with another field is refused with 403 and `EDITOR_SESSION_FIELD_NOT_ALLOWED`. Everything else is refused with 403 and `EDITOR_SESSION_ROUTE_NOT_ALLOWED`: a session cannot read your account, make more sessions, change your presets or delete a composition, and a session without the `creator` surface cannot create or list compositions. Create the composition yourself with your API key, then open the editor on it. A session ends at `expiresAt` (at most four hours), when you end it (`revokeManagedUserEditorSession`), or when the managed user is switched off or deleted. A managed user can have at most 100 live sessions at once (`429 EDITOR_SESSION_LIMIT_REACHED`). A session that is bound to a web page (`allowedOrigin`) is refused from any other origin. The AI the session runs is paid for with your credits. Set `maxCredits` to hold the session to a number of them: once its generations have taken that many (a generation that fails is refunded and does not count), the next one is refused with 402 and `EDITOR_SESSION_CREDIT_LIMIT_REACHED`, and the browser is told only that the feature is not available right now. Without it, the limit Widgetic has set for your account applies when it has set one (the same limit for every session you make, and `maxCredits: null` asks for none), and otherwise the credits of your account are the only ceiling. What each of your users' sessions has spent is in `getManagedUserUsage`. Each call makes a new session. It does not take an `Idempotency-Key`: the answer holds the token, and the token is never stored where a retry could read it back. The answer is sent with `Cache-Control: no-store`.
256
256
 
257
257
  ### Examples
258
258
 
@@ -11,7 +11,7 @@
11
11
  | **status** | **String** | Initial status of the composition | [optional][default to &#39;draft&#39;] |
12
12
  | **embed_settings** | **Object** | Settings for embedding the composition | [optional] |
13
13
  | **design** | **Object** | Design settings for the composition | [optional] |
14
- | **database_schema** | **Object** | The tables this composition keeps what visitors send it in (votes, ratings, answers). They are made when the composition is created, in a schema of their own that no other composition can reach: in Widgetic&#39;s database, or in your own Neon database when you have set one with &#x60;setPartnerDataDatabase&#x60;. They are deleted with the composition. The shape is &#x60;{ \&quot;tables\&quot;: [ ... ] }&#x60;. A table has a &#x60;name&#x60;, a list of &#x60;columns&#x60; and, optionally, a list of &#x60;indexes&#x60;. A column has a &#x60;name&#x60; and a &#x60;type&#x60;, and optionally &#x60;primaryKey&#x60;, &#x60;notNull&#x60;, &#x60;unique&#x60; and &#x60;default&#x60;. An index has a &#x60;name&#x60; and the &#x60;columns&#x60; it covers (1 to 8), and optionally &#x60;unique&#x60;. Any other key is refused. - Names (tables, columns, indexes) use lower-case letters, digits and underscores, start with a letter and are at most 63 characters long. A name that starts with &#x60;_&#x60; or &#x60;pg_&#x60; is reserved. - &#x60;type&#x60; is one of &#x60;text&#x60;, &#x60;smallint&#x60;, &#x60;integer&#x60; (or &#x60;int&#x60;), &#x60;bigint&#x60;, &#x60;numeric&#x60;, &#x60;real&#x60;, &#x60;double precision&#x60;, &#x60;boolean&#x60; (or &#x60;bool&#x60;), &#x60;date&#x60;, &#x60;timestamp&#x60;, &#x60;timestamptz&#x60; (or &#x60;timestamp with time zone&#x60;), &#x60;uuid&#x60;, &#x60;json&#x60;, &#x60;jsonb&#x60;, &#x60;serial&#x60;, &#x60;bigserial&#x60;. - &#x60;default&#x60; is a number, &#x60;true&#x60; or &#x60;false&#x60;, a text of at most 500 characters (no backslash), a JSON value for a &#x60;json&#x60; or &#x60;jsonb&#x60; column, or one of &#x60;now()&#x60;, &#x60;current_timestamp&#x60; and &#x60;current_date&#x60; (date and timestamp columns) and &#x60;gen_random_uuid()&#x60; (a &#x60;uuid&#x60; column). A &#x60;serial&#x60; column numbers itself and has no default. - A composition declares at most 20 tables, with at most 64 columns and 10 indexes each. A declaration that cannot be used is refused with &#x60;400&#x60; and &#x60;INVALID_DATABASE_SCHEMA&#x60;; &#x60;error.details.problems&#x60; lists what to change. Tables that already exist are never changed or dropped: sending more tables later, when you update the composition, adds the ones that are missing. When the composition is saved but its tables cannot be made just now, the answer says so in &#x60;meta.warnings&#x60;: send the same &#x60;databaseSchema&#x60; again to retry. Leave it out and the composition gets the tables its widget declares in its own source (&#x60;src/lib/meta/database.json&#x60;), if any. Send &#x60;{ \&quot;tables\&quot;: [] }&#x60; to give the composition no tables and keep it from getting its widget&#39;s. | [optional] |
14
+ | **database_schema** | **Object** | The tables this composition keeps what visitors send it in (votes, ratings, answers). They are made when the composition is created, in a schema of their own that no other composition can reach: in Widgetic&#39;s database, or in your own Neon database when you have set one with &#x60;setPartnerDataDatabase&#x60;. They are deleted with the composition. The shape is &#x60;{ \&quot;tables\&quot;: [ ... ] }&#x60;. A table has a &#x60;name&#x60;, a list of &#x60;columns&#x60; and, optionally, a list of &#x60;indexes&#x60;, and optionally &#x60;countable&#x60;. A column has a &#x60;name&#x60; and a &#x60;type&#x60;, and optionally &#x60;primaryKey&#x60;, &#x60;notNull&#x60;, &#x60;unique&#x60;, &#x60;default&#x60; and &#x60;readable&#x60;. An index has a &#x60;name&#x60; and the &#x60;columns&#x60; it covers (1 to 8), and optionally &#x60;unique&#x60;. Any other key is refused, except &#x60;source&#x60; (see below). &#x60;countable&#x60; and &#x60;readable&#x60; are the read policy of the composition&#39;s own page: nothing the visitors sent can be read back by the page until you say so. &#x60;countable: true&#x60; on a table lets the widget show how many rows it has; &#x60;readable: true&#x60; on a column lets it show or total that column&#39;s values (a tally of votes, an average rating). Mark only what is safe to show to anyone who opens the page. A column whose name holds &#x60;email&#x60;, &#x60;phone&#x60;, &#x60;address&#x60;, &#x60;token&#x60;, &#x60;password&#x60;, &#x60;secret&#x60;, &#x60;ip&#x60; or the like, and a &#x60;json&#x60;, &#x60;jsonb&#x60; or &#x60;uuid&#x60; column, cannot be &#x60;readable&#x60;. - Names (tables, columns, indexes) use lower-case letters, digits and underscores, start with a letter and are at most 63 characters long. A name that starts with &#x60;_&#x60; or &#x60;pg_&#x60; is reserved. - &#x60;type&#x60; is one of &#x60;text&#x60;, &#x60;smallint&#x60;, &#x60;integer&#x60; (or &#x60;int&#x60;), &#x60;bigint&#x60;, &#x60;numeric&#x60;, &#x60;real&#x60;, &#x60;double precision&#x60;, &#x60;boolean&#x60; (or &#x60;bool&#x60;), &#x60;date&#x60;, &#x60;timestamp&#x60;, &#x60;timestamptz&#x60; (or &#x60;timestamp with time zone&#x60;), &#x60;uuid&#x60;, &#x60;json&#x60;, &#x60;jsonb&#x60;, &#x60;serial&#x60;, &#x60;bigserial&#x60;. - &#x60;default&#x60; is a number, &#x60;true&#x60; or &#x60;false&#x60;, a text of at most 500 characters (no backslash), a JSON value for a &#x60;json&#x60; or &#x60;jsonb&#x60; column, or one of &#x60;now()&#x60;, &#x60;current_timestamp&#x60; and &#x60;current_date&#x60; (date and timestamp columns) and &#x60;gen_random_uuid()&#x60; (a &#x60;uuid&#x60; column). A &#x60;serial&#x60; column numbers itself and has no default. - A composition declares at most 20 tables, with at most 64 columns and 10 indexes each. A declaration that cannot be used is refused with &#x60;400&#x60; and &#x60;INVALID_DATABASE_SCHEMA&#x60;; &#x60;error.details.problems&#x60; lists what to change. Tables that already exist are never changed or dropped: sending more tables later, when you update the composition, adds the ones that are missing. When the composition is saved but its tables cannot be made just now, the answer says so in &#x60;meta.warnings&#x60;: send the same &#x60;databaseSchema&#x60; again to retry. Leave it out and the composition gets the tables its widget declares in its own source (&#x60;src/lib/meta/database.json&#x60;), if any. Send &#x60;{ \&quot;tables\&quot;: [] }&#x60; to give the composition no tables and keep it from getting its widget&#39;s. A composition whose tables were made from its widget&#39;s own file reads back with &#x60;\&quot;source\&quot;: \&quot;widget\&quot;&#x60; next to &#x60;tables&#x60;. When the widget is published again, a table, a field or an index its file gained is added to them; nothing that exists is changed or dropped, and what a page may read does not change. Send &#x60;source&#x60; back as it was and it stays. Leave it out and the tables are yours: no widget&#39;s file adds anything to them. It is the only value &#x60;source&#x60; can have. | [optional] |
15
15
  | **project_id** | **String** | ID of the project this composition belongs to | [optional] |
16
16
  | **managed_user_id** | **String** | Make the composition for one of your managed users, by Widgetic&#39;s id for the user. Send this or &#x60;managedUserExternalId&#x60;, not both. The managed user must be yours and active. The composition stays in your account; the tag lets you list one user&#39;s compositions and keeps it out of the others&#39; lists. It is set here and does not change afterwards. | [optional] |
17
17
  | **managed_user_external_id** | **String** | The same, by your own identifier for the user, the &#x60;externalId&#x60; you gave when you created the managed user (answers show it as &#x60;externalId&#x60;). Send this or &#x60;managedUserId&#x60;, not both. | [optional] |
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **surfaces** | **Array&lt;String&gt;** | The pieces of Widgetic&#39;s editor the session may drive. &#x60;files&#x60; is the media library (the File Browser: upload a file, list the files uploaded for this user); what a user uploads is kept in your own storage destination. Partner storage is not optional: a session of any surface can be made only once you have set a destination up (&#x60;setPartnerStorageDestination&#x60;), and is refused with &#x60;409 PARTNER_STORAGE_REQUIRED&#x60; until then. &#x60;editor&#x60; is editing one of this user&#39;s compositions: read it, change its name, content, design and embed settings, read its schemas, and ask where to show it (&#x60;getCompositionPreview&#x60;: the widget&#39;s published page). &#x60;creator&#x60; is Widgetic&#39;s widget creator, with its drawing canvas and its AI: this user&#39;s canvases, the widgets on them and the conversation of each widget, the generation, build and publish calls that make a widget, and the compositions of those widgets (list, make). The surfaces do not imply one another: the whole creator also saves a composition (&#x60;editor&#x60;) and attaches pictures to its chat (&#x60;files&#x60;), so ask for &#x60;[\&quot;creator\&quot;, \&quot;editor\&quot;, \&quot;files\&quot;]&#x60;. | |
7
+ | **surfaces** | **Array&lt;String&gt;** | The pieces of Widgetic&#39;s editor the session may drive. &#x60;files&#x60; is the media library (the File Browser: upload a file, list the files uploaded for this user); what a user uploads is kept in your own storage destination. Partner storage is not optional: a session of any surface can be made only once you have set a destination up (&#x60;setPartnerStorageDestination&#x60;), and is refused with &#x60;409 PARTNER_STORAGE_REQUIRED&#x60; until then. &#x60;editor&#x60; is editing one of this user&#39;s compositions: read it, change its name, content, design and embed settings, read its schemas, and ask where to show it (&#x60;getCompositionPreview&#x60;: the widget&#39;s published page). &#x60;creator&#x60; is Widgetic&#39;s widget creator, with its drawing canvas and its AI: this user&#39;s canvases, the widgets on them and the conversation of each widget, the generation, build and publish calls that make a widget, and the compositions of those widgets (list, make). The surfaces do not imply one another: the whole creator also saves a composition (&#x60;editor&#x60;) and attaches pictures to its chat (&#x60;files&#x60;), so ask for &#x60;[\&quot;creator\&quot;, \&quot;editor\&quot;, \&quot;files\&quot;]&#x60;. &#x60;workflows&#x60; is the Workflows editor: this user&#39;s own workflows (list, make, make from one of your starting points, draw, publish, pause, resume, archive, delete, the version history and the counts) under &#x60;/workspaces/personal/workflows&#x60;, and the compositions made for this user, which are the only ones a workflow of theirs can chain. A workflow is filed under the user it was made for (&#x60;managedUserId&#x60;), and the session reaches nothing of another user&#39;s, nor of yours. | |
8
8
  | **expires_in_seconds** | **Integer** | How long the session lasts, in seconds. It cannot be extended; make a new session when it ends. | [optional][default to 3600] |
9
9
  | **allowed_origin** | **String** | Bind the session to one web page origin, such as &#x60;https://app.example.com&#x60; (no path; &#x60;http&#x60; is accepted only for &#x60;localhost&#x60;). The session is then refused from any other origin, and from a request that carries no &#x60;Origin&#x60; header. Leave it out for a session that can be used from anywhere, which is what a server-side caller needs. | [optional] |
10
10
  | **max_credits** | **Integer** | The most credits this session may spend on Widgetic&#39;s AI, one credit being one generation. Once the operations it ran have taken that many, the next one is refused (402, &#x60;EDITOR_SESSION_CREDIT_LIMIT_REACHED&#x60;) and the browser is only told that the feature is not available right now. A generation that fails is refunded and does not count. Leave it out to get the limit Widgetic has set for your account, if it has set one (it sets none unless you ask), and otherwise no limit of its own, which leaves the credits of your account as the only ceiling. Send &#x60;null&#x60; to ask for no limit of its own even when a default is set. | [optional] |
@@ -0,0 +1,24 @@
1
+ # ApiSdkRb::OfferWorkflowPresetRequest
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **workflow_id** | **String** | One of your own published workflows. | |
8
+ | **title** | **String** | What the picker shows. Leave it out to show the workflow&#39;s name. | [optional] |
9
+ | **description** | **String** | | [optional] |
10
+ | **position** | **Integer** | Where it sits in the list. Smallest first; the same position is ordered by key. | [optional][default to 0] |
11
+
12
+ ## Example
13
+
14
+ ```ruby
15
+ require 'api-sdk-rb'
16
+
17
+ instance = ApiSdkRb::OfferWorkflowPresetRequest.new(
18
+ workflow_id: null,
19
+ title: null,
20
+ description: null,
21
+ position: null
22
+ )
23
+ ```
24
+
@@ -0,0 +1,40 @@
1
+ # ApiSdkRb::OfferedWorkflowPreset
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **key** | **String** | The name your code and the picker use for the starting point. | |
8
+ | **workflow_id** | **String** | The workflow it is made from. What people get is its live version as it is when they start. | |
9
+ | **title** | **String** | What the picker shows. Null means show the workflow&#39;s name. | |
10
+ | **description** | **String** | | |
11
+ | **position** | **Integer** | The list is ordered by this, smallest first, then by key. | |
12
+ | **available** | **Boolean** | Whether people can start from it now. A starting point that is not available is not shown to anyone, and says why. | |
13
+ | **unavailable_reason** | **String** | Why it is not available. &#x60;workflow_missing&#x60;: the workflow was deleted. &#x60;workflow_not_own&#x60;: it is no longer a workflow of your own. &#x60;workflow_archived&#x60;: unarchive it. &#x60;workflow_not_published&#x60;: it has no live version. &#x60;workflow_empty&#x60;: it shows no composition. &#x60;composition_not_own&#x60;: a block shows a composition made for a customer or a team. &#x60;too_many_widgets&#x60;: it chains more than 10 widgets. &#x60;widget_not_preset&#x60;: a widget it chains is no longer offered as a preset. | |
14
+ | **workflow_name** | **String** | The workflow&#39;s name. Null when the workflow is gone. | |
15
+ | **block_count** | **Integer** | How many blocks its live version has. Null when it is not available. | |
16
+ | **widgets** | [**Array&lt;OfferedWorkflowPresetWidget&gt;**](OfferedWorkflowPresetWidget.md) | The widgets it chains, once each, in the order they first appear. Empty when it is not available. | |
17
+ | **created_at** | **Time** | | |
18
+ | **updated_at** | **Time** | | |
19
+
20
+ ## Example
21
+
22
+ ```ruby
23
+ require 'api-sdk-rb'
24
+
25
+ instance = ApiSdkRb::OfferedWorkflowPreset.new(
26
+ key: welcome-then-offer,
27
+ workflow_id: null,
28
+ title: null,
29
+ description: null,
30
+ position: null,
31
+ available: null,
32
+ unavailable_reason: null,
33
+ workflow_name: null,
34
+ block_count: null,
35
+ widgets: null,
36
+ created_at: null,
37
+ updated_at: null
38
+ )
39
+ ```
40
+
@@ -0,0 +1,18 @@
1
+ # ApiSdkRb::OfferedWorkflowPresetList
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **items** | [**Array&lt;OfferedWorkflowPreset&gt;**](OfferedWorkflowPreset.md) | | |
8
+
9
+ ## Example
10
+
11
+ ```ruby
12
+ require 'api-sdk-rb'
13
+
14
+ instance = ApiSdkRb::OfferedWorkflowPresetList.new(
15
+ items: null
16
+ )
17
+ ```
18
+
@@ -0,0 +1,22 @@
1
+ # ApiSdkRb::OfferedWorkflowPresetWidget
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **id** | **String** | Your own widget. | |
8
+ | **name** | **String** | | |
9
+ | **thumbnail_url** | **String** | | |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'api-sdk-rb'
15
+
16
+ instance = ApiSdkRb::OfferedWorkflowPresetWidget.new(
17
+ id: null,
18
+ name: null,
19
+ thumbnail_url: null
20
+ )
21
+ ```
22
+