api-sdk-rb 1.11.66 → 1.11.133

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 (430) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +294 -285
  3. data/docs/{GetPartnerCreditTransactions200Response.md → AccountCreditTransactionListResponse.md} +2 -2
  4. data/docs/AdapterConnection.md +7 -1
  5. data/docs/{GetUserAdapterConnections200Response.md → AdapterConnectionListResponse.md} +2 -2
  6. data/docs/{RemoveUserAdapterConnection200Response.md → AdapterConnectionRemovalResponse.md} +2 -2
  7. data/docs/{SetUserAdapterConnection200Response.md → AdapterConnectionResponse.md} +2 -2
  8. data/docs/{AddAiAnswersKnowledgeDocument201Response.md → AiAnswersKnowledgeDocumentResponse.md} +2 -2
  9. data/docs/BrandColor.md +22 -0
  10. data/docs/BrandFont.md +24 -0
  11. data/docs/BrandKitApi.md +593 -0
  12. data/docs/BrandKitAssetView.md +42 -0
  13. data/docs/BrandKitFigmaSource.md +26 -0
  14. data/docs/BrandKitTokens.md +26 -0
  15. data/docs/BrandKitTokensFonts.md +24 -0
  16. data/docs/BrandKitView.md +36 -0
  17. data/docs/BrandKitViewOwner.md +20 -0
  18. data/docs/{OperationsIdGetResponse.md → BrandKitViewResponse.md} +3 -3
  19. data/docs/BrandSpacing.md +32 -0
  20. data/docs/BrandTextStyle.md +22 -0
  21. data/docs/CanvasesApi.md +45 -45
  22. data/docs/Composition.md +5 -1
  23. data/docs/{CreateCompositionDatabaseRecord201Response.md → CompositionDatabaseRecordResponse.md} +2 -2
  24. data/docs/CompositionLastEditedBy.md +20 -0
  25. data/docs/CompositionsApi.md +821 -473
  26. data/docs/ConfirmAdapterConnectionRequest.md +18 -0
  27. data/docs/{CreateCompositionContentItem201Response.md → ContentItemWriteResultResponse.md} +2 -2
  28. data/docs/CreateWidget201ResponseData.md +2 -4
  29. data/docs/CreateWorkspaceWorkflowFromPresetRequest.md +20 -0
  30. data/docs/CreateWorkspaceWorkflowRequest.md +22 -0
  31. data/docs/CreditsApi.md +20 -20
  32. data/docs/DeleteUpload200Response.md +22 -0
  33. data/docs/{UploadsIdDelete200ResponseData.md → DeleteUpload200ResponseData.md} +2 -2
  34. data/docs/DeleteWorkspaceWorkflow200Response.md +22 -0
  35. data/docs/{GetPartnerDesignDefaults200Response.md → DesignDefaultsResponse.md} +2 -2
  36. data/docs/EntitlementsApi.md +18 -18
  37. data/docs/GetOperationResponse.md +22 -0
  38. data/docs/{OperationsIdGetResponseData.md → GetOperationResponseData.md} +3 -3
  39. data/docs/GetOperationResponseDataMetadata.md +24 -0
  40. data/docs/GetPublicCompositionEmbed200Response.md +7 -1
  41. data/docs/GetPublicCompositionEmbed200ResponseAdapters.md +20 -0
  42. data/docs/GetPublicCompositionEmbed200ResponseAdaptersCaptcha.md +18 -0
  43. data/docs/GetPublicCompositionEmbed200ResponseEntries.md +20 -0
  44. data/docs/GetPublicCompositionEmbed200ResponseMedia.md +18 -0
  45. data/docs/GetWorkspaceWorkflowStats200Response.md +22 -0
  46. data/docs/GetWorkspaceWorkflowVersion200Response.md +22 -0
  47. data/docs/InvoicesApi.md +9 -9
  48. data/docs/ListPartnerWorkflowPresets200Response.md +22 -0
  49. data/docs/{UploadsGet200Response.md → ListUploads200Response.md} +2 -2
  50. data/docs/ListWorkspaceWorkflowCompositionOptions200Response.md +22 -0
  51. data/docs/ListWorkspaceWorkflowPresets200Response.md +22 -0
  52. data/docs/ListWorkspaceWorkflowVersions200Response.md +22 -0
  53. data/docs/ListWorkspaceWorkflows200Response.md +22 -0
  54. data/docs/{GetManagedUserLimits200Response.md → ManagedUserLimitsResponse.md} +2 -2
  55. data/docs/{DeleteManagedUser200Response.md → ManagedUserRemovalResponse.md} +2 -2
  56. data/docs/ManagedUsersApi.md +261 -171
  57. data/docs/NewComposition.md +1 -1
  58. data/docs/NewEditorSession.md +1 -1
  59. data/docs/OfferWorkflowPresetRequest.md +24 -0
  60. data/docs/OfferedWorkflowPreset.md +40 -0
  61. data/docs/OfferedWorkflowPresetList.md +18 -0
  62. data/docs/OfferedWorkflowPresetWidget.md +22 -0
  63. data/docs/OperationsApi.md +11 -11
  64. data/docs/PartnerCustomization.md +2 -2
  65. data/docs/PartnerNotification.md +1 -1
  66. data/docs/PartnersApi.md +644 -352
  67. data/docs/PatchBrandKitAssetRequest.md +24 -0
  68. data/docs/PatchBrandKitRequest.md +30 -0
  69. data/docs/PatchBrandKitRequestFonts.md +24 -0
  70. data/docs/PatchBrandKitRequestSpacing.md +32 -0
  71. data/docs/PostBrandKitIconRequest.md +20 -0
  72. data/docs/PublicEmbedApi.md +324 -58
  73. data/docs/PublicWorkflow.md +36 -0
  74. data/docs/PublicWorkflowEventsAccepted.md +22 -0
  75. data/docs/PublicWorkflowEventsRequest.md +24 -0
  76. data/docs/PublicWorkflowEventsRequestEventsInner.md +24 -0
  77. data/docs/PublicWorkflowEventsRequestHeightsInner.md +20 -0
  78. data/docs/{CreateCompositionFromWidget201Response.md → PublicWorkflowResponse.md} +3 -3
  79. data/docs/PublicWorkflowTranslation.md +20 -0
  80. data/docs/PublishWorkspaceWorkflow200Response.md +22 -0
  81. data/docs/PublishWorkspaceWorkflowRequest.md +18 -0
  82. data/docs/PutBrandKitRequest.md +22 -0
  83. data/docs/RemovePartnerWorkflowPreset200Response.md +22 -0
  84. data/docs/ReportPublicWorkflowEvents200Response.md +22 -0
  85. data/docs/SaveWorkspaceWorkflowRequest.md +24 -0
  86. data/docs/SetAdapterConnectionRequest.md +1 -1
  87. data/docs/SetPartnerWorkflowPreset200Response.md +22 -0
  88. data/docs/TokensApi.md +11 -9
  89. data/docs/UpdateComposition.md +1 -1
  90. data/docs/Upload.md +1 -1
  91. data/docs/UploadLimits.md +3 -3
  92. data/docs/UploadsApi.md +85 -85
  93. data/docs/UsersApi.md +191 -115
  94. data/docs/Widget.md +2 -4
  95. data/docs/WidgetClarification.md +22 -0
  96. data/docs/WidgetClarificationOption.md +22 -0
  97. data/docs/WidgetClarificationQuestion.md +26 -0
  98. data/docs/WidgetNextStep.md +24 -0
  99. data/docs/WidgetPlan.md +26 -0
  100. data/docs/WidgetPlanDecisions.md +32 -0
  101. data/docs/WidgetPlanDecisionsAdaptersInner.md +20 -0
  102. data/docs/WidgetPlanDecisionsLibrariesInner.md +22 -0
  103. data/docs/WidgetPlanDecisionsResponsive.md +22 -0
  104. data/docs/WidgetPlanTask.md +24 -0
  105. data/docs/WidgetsApi.md +38 -38
  106. data/docs/Workflow.md +50 -0
  107. data/docs/WorkflowCompositionAction.md +24 -0
  108. data/docs/WorkflowCompositionField.md +24 -0
  109. data/docs/WorkflowCompositionOption.md +30 -0
  110. data/docs/WorkflowCompositionOptionActions.md +22 -0
  111. data/docs/WorkflowCompositionOptionInputs.md +24 -0
  112. data/docs/WorkflowCompositionOptions.md +24 -0
  113. data/docs/WorkflowConditionCase.md +24 -0
  114. data/docs/WorkflowConditionTest.md +22 -0
  115. data/docs/WorkflowCounter.md +20 -0
  116. data/docs/WorkflowDetail.md +60 -0
  117. data/docs/WorkflowDetailAllOfLastEditedBy.md +20 -0
  118. data/docs/WorkflowDetailResponse.md +22 -0
  119. data/docs/WorkflowEdge.md +24 -0
  120. data/docs/WorkflowFailureReason.md +15 -0
  121. data/docs/WorkflowFailureReasonCounter.md +22 -0
  122. data/docs/WorkflowFieldReference.md +22 -0
  123. data/docs/WorkflowGraph.md +22 -0
  124. data/docs/WorkflowIssue.md +28 -0
  125. data/docs/WorkflowList.md +24 -0
  126. data/docs/WorkflowNode.md +30 -0
  127. data/docs/WorkflowNodePosition.md +20 -0
  128. data/docs/WorkflowPresetChoice.md +26 -0
  129. data/docs/WorkflowPresetChoices.md +18 -0
  130. data/docs/WorkflowPresetRemoval.md +18 -0
  131. data/docs/WorkflowPresetWidget.md +20 -0
  132. data/docs/WorkflowPublishResult.md +22 -0
  133. data/docs/WorkflowRemoved.md +18 -0
  134. data/docs/WorkflowResponse.md +22 -0
  135. data/docs/WorkflowSchedule.md +24 -0
  136. data/docs/WorkflowStats.md +34 -0
  137. data/docs/WorkflowStatus.md +15 -0
  138. data/docs/WorkflowTrigger.md +28 -0
  139. data/docs/WorkflowTriggerValuesInner.md +20 -0
  140. data/docs/WorkflowVersion.md +28 -0
  141. data/docs/WorkflowVersionDetail.md +32 -0
  142. data/docs/WorkflowVersionList.md +18 -0
  143. data/docs/WorkflowVersionPublishedBy.md +20 -0
  144. data/docs/WorkflowsApi.md +1527 -0
  145. data/lib/api-sdk-rb/api/brand_kit_api.rb +581 -0
  146. data/lib/api-sdk-rb/api/canvases_api.rb +39 -39
  147. data/lib/api-sdk-rb/api/compositions_api.rb +993 -565
  148. data/lib/api-sdk-rb/api/credits_api.rb +20 -20
  149. data/lib/api-sdk-rb/api/entitlements_api.rb +14 -14
  150. data/lib/api-sdk-rb/api/invoices_api.rb +10 -10
  151. data/lib/api-sdk-rb/api/managed_users_api.rb +278 -172
  152. data/lib/api-sdk-rb/api/operations_api.rb +10 -10
  153. data/lib/api-sdk-rb/api/partners_api.rb +668 -352
  154. data/lib/api-sdk-rb/api/public_embed_api.rb +339 -62
  155. data/lib/api-sdk-rb/api/tokens_api.rb +8 -6
  156. data/lib/api-sdk-rb/api/uploads_api.rb +96 -96
  157. data/lib/api-sdk-rb/api/users_api.rb +213 -119
  158. data/lib/api-sdk-rb/api/widgets_api.rb +40 -40
  159. data/lib/api-sdk-rb/api/workflows_api.rb +1775 -0
  160. data/lib/api-sdk-rb/configuration.rb +11 -23
  161. data/lib/api-sdk-rb/models/{get_user_adapter_connections200_response.rb → account_credit_transaction_list_response.rb} +4 -4
  162. data/lib/api-sdk-rb/models/adapter_connection.rb +48 -5
  163. data/lib/api-sdk-rb/models/{get_partner_credit_transactions200_response.rb → adapter_connection_list_response.rb} +4 -4
  164. data/lib/api-sdk-rb/models/adapter_connection_removal_response.rb +246 -0
  165. data/lib/api-sdk-rb/models/{delete_managed_user200_response.rb → adapter_connection_response.rb} +4 -4
  166. data/lib/api-sdk-rb/models/ai_answers_knowledge_document_response.rb +246 -0
  167. data/lib/api-sdk-rb/models/brand_color.rb +329 -0
  168. data/lib/api-sdk-rb/models/brand_font.rb +357 -0
  169. data/lib/api-sdk-rb/models/brand_kit_asset_view.rb +409 -0
  170. data/lib/api-sdk-rb/models/brand_kit_figma_source.rb +277 -0
  171. data/lib/api-sdk-rb/models/brand_kit_tokens.rb +335 -0
  172. data/lib/api-sdk-rb/models/brand_kit_tokens_fonts.rb +241 -0
  173. data/lib/api-sdk-rb/models/brand_kit_view.rb +344 -0
  174. data/lib/api-sdk-rb/models/brand_kit_view_owner.rb +267 -0
  175. data/lib/api-sdk-rb/models/brand_kit_view_response.rb +247 -0
  176. data/lib/api-sdk-rb/models/brand_spacing.rb +557 -0
  177. data/lib/api-sdk-rb/models/brand_text_style.rb +344 -0
  178. data/lib/api-sdk-rb/models/composition.rb +26 -5
  179. data/lib/api-sdk-rb/models/{create_composition_database_record201_response.rb → composition_database_record_response.rb} +3 -3
  180. data/lib/api-sdk-rb/models/composition_last_edited_by.rb +242 -0
  181. data/lib/api-sdk-rb/models/confirm_adapter_connection_request.rb +241 -0
  182. data/lib/api-sdk-rb/models/content_item_write_result_response.rb +246 -0
  183. data/lib/api-sdk-rb/models/create_widget201_response_data.rb +9 -20
  184. data/lib/api-sdk-rb/models/create_workspace_workflow_from_preset_request.rb +278 -0
  185. data/lib/api-sdk-rb/models/create_workspace_workflow_request.rb +271 -0
  186. data/lib/api-sdk-rb/models/{operations_id_get_response.rb → delete_upload200_response.rb} +4 -5
  187. data/lib/api-sdk-rb/models/{uploads_id_delete200_response_data.rb → delete_upload200_response_data.rb} +3 -3
  188. data/lib/api-sdk-rb/models/delete_workspace_workflow200_response.rb +246 -0
  189. data/lib/api-sdk-rb/models/design_defaults_response.rb +246 -0
  190. data/lib/api-sdk-rb/models/get_operation_response.rb +247 -0
  191. data/lib/api-sdk-rb/models/{operations_id_get_response_data.rb → get_operation_response_data.rb} +5 -8
  192. data/lib/api-sdk-rb/models/get_operation_response_data_metadata.rb +283 -0
  193. data/lib/api-sdk-rb/models/get_public_composition_embed200_response.rb +29 -2
  194. data/lib/api-sdk-rb/models/get_public_composition_embed200_response_adapters.rb +225 -0
  195. data/lib/api-sdk-rb/models/get_public_composition_embed200_response_adapters_captcha.rb +216 -0
  196. data/lib/api-sdk-rb/models/get_public_composition_embed200_response_entries.rb +224 -0
  197. data/lib/api-sdk-rb/models/get_public_composition_embed200_response_media.rb +216 -0
  198. data/lib/api-sdk-rb/models/get_workspace_workflow_stats200_response.rb +246 -0
  199. data/lib/api-sdk-rb/models/{create_composition_from_widget201_response.rb → get_workspace_workflow_version200_response.rb} +4 -4
  200. data/lib/api-sdk-rb/models/list_partner_workflow_presets200_response.rb +246 -0
  201. data/lib/api-sdk-rb/models/{uploads_get200_response.rb → list_uploads200_response.rb} +3 -3
  202. data/lib/api-sdk-rb/models/list_workspace_workflow_composition_options200_response.rb +246 -0
  203. data/lib/api-sdk-rb/models/{create_composition_content_item201_response.rb → list_workspace_workflow_presets200_response.rb} +4 -4
  204. data/lib/api-sdk-rb/models/{add_ai_answers_knowledge_document201_response.rb → list_workspace_workflow_versions200_response.rb} +4 -4
  205. data/lib/api-sdk-rb/models/list_workspace_workflows200_response.rb +246 -0
  206. data/lib/api-sdk-rb/models/{get_managed_user_limits200_response.rb → managed_user_limits_response.rb} +3 -3
  207. data/lib/api-sdk-rb/models/{uploads_id_delete200_response.rb → managed_user_removal_response.rb} +4 -4
  208. data/lib/api-sdk-rb/models/new_composition.rb +1 -1
  209. data/lib/api-sdk-rb/models/new_editor_session.rb +1 -1
  210. data/lib/api-sdk-rb/models/offer_workflow_preset_request.rb +322 -0
  211. data/lib/api-sdk-rb/models/offered_workflow_preset.rb +423 -0
  212. data/lib/api-sdk-rb/models/offered_workflow_preset_list.rb +223 -0
  213. data/lib/api-sdk-rb/models/offered_workflow_preset_widget.rb +251 -0
  214. data/lib/api-sdk-rb/models/partner_notification.rb +1 -1
  215. data/lib/api-sdk-rb/models/partner_notification_event_type.rb +5 -1
  216. data/lib/api-sdk-rb/models/patch_brand_kit_asset_request.rb +289 -0
  217. data/lib/api-sdk-rb/models/patch_brand_kit_request.rb +363 -0
  218. data/lib/api-sdk-rb/models/patch_brand_kit_request_fonts.rb +242 -0
  219. data/lib/api-sdk-rb/models/patch_brand_kit_request_spacing.rb +502 -0
  220. data/lib/api-sdk-rb/models/post_brand_kit_icon_request.rb +237 -0
  221. data/lib/api-sdk-rb/models/public_workflow.rb +351 -0
  222. data/lib/api-sdk-rb/models/public_workflow_events_accepted.rb +242 -0
  223. data/lib/api-sdk-rb/models/public_workflow_events_request.rb +301 -0
  224. data/lib/api-sdk-rb/models/public_workflow_events_request_events_inner.rb +354 -0
  225. data/lib/api-sdk-rb/models/public_workflow_events_request_heights_inner.rb +267 -0
  226. data/lib/api-sdk-rb/models/public_workflow_response.rb +246 -0
  227. data/lib/api-sdk-rb/models/public_workflow_translation.rb +242 -0
  228. data/lib/api-sdk-rb/models/{set_user_adapter_connection200_response.rb → publish_workspace_workflow200_response.rb} +4 -4
  229. data/lib/api-sdk-rb/models/publish_workspace_workflow_request.rb +240 -0
  230. data/lib/api-sdk-rb/models/put_brand_kit_request.rb +239 -0
  231. data/lib/api-sdk-rb/models/{remove_user_adapter_connection200_response.rb → remove_partner_workflow_preset200_response.rb} +4 -4
  232. data/lib/api-sdk-rb/models/report_public_workflow_events200_response.rb +246 -0
  233. data/lib/api-sdk-rb/models/save_workspace_workflow_request.rb +296 -0
  234. data/lib/api-sdk-rb/models/set_adapter_connection_request.rb +1 -1
  235. data/lib/api-sdk-rb/models/{get_partner_design_defaults200_response.rb → set_partner_workflow_preset200_response.rb} +4 -4
  236. data/lib/api-sdk-rb/models/update_composition.rb +1 -1
  237. data/lib/api-sdk-rb/models/upload.rb +1 -1
  238. data/lib/api-sdk-rb/models/upload_limits.rb +3 -3
  239. data/lib/api-sdk-rb/models/widget.rb +9 -20
  240. data/lib/api-sdk-rb/models/widget_clarification.rb +279 -0
  241. data/lib/api-sdk-rb/models/widget_clarification_option.rb +256 -0
  242. data/lib/api-sdk-rb/models/widget_clarification_question.rb +329 -0
  243. data/lib/api-sdk-rb/models/widget_next_step.rb +307 -0
  244. data/lib/api-sdk-rb/models/widget_plan.rb +306 -0
  245. data/lib/api-sdk-rb/models/widget_plan_decisions.rb +346 -0
  246. data/lib/api-sdk-rb/models/widget_plan_decisions_adapters_inner.rb +237 -0
  247. data/lib/api-sdk-rb/models/widget_plan_decisions_libraries_inner.rb +255 -0
  248. data/lib/api-sdk-rb/models/widget_plan_decisions_responsive.rb +311 -0
  249. data/lib/api-sdk-rb/models/widget_plan_task.rb +320 -0
  250. data/lib/api-sdk-rb/models/workflow.rb +509 -0
  251. data/lib/api-sdk-rb/models/workflow_composition_action.rb +266 -0
  252. data/lib/api-sdk-rb/models/workflow_composition_field.rb +303 -0
  253. data/lib/api-sdk-rb/models/workflow_composition_option.rb +316 -0
  254. data/lib/api-sdk-rb/models/workflow_composition_option_actions.rb +284 -0
  255. data/lib/api-sdk-rb/models/workflow_composition_option_inputs.rb +304 -0
  256. data/lib/api-sdk-rb/models/workflow_composition_options.rb +271 -0
  257. data/lib/api-sdk-rb/models/workflow_condition_case.rb +322 -0
  258. data/lib/api-sdk-rb/models/workflow_condition_test.rb +284 -0
  259. data/lib/api-sdk-rb/models/workflow_counter.rb +238 -0
  260. data/lib/api-sdk-rb/models/workflow_detail.rb +580 -0
  261. data/lib/api-sdk-rb/models/workflow_detail_all_of_last_edited_by.rb +242 -0
  262. data/lib/api-sdk-rb/models/workflow_detail_response.rb +246 -0
  263. data/lib/api-sdk-rb/models/workflow_edge.rb +292 -0
  264. data/lib/api-sdk-rb/models/workflow_failure_reason.rb +42 -0
  265. data/lib/api-sdk-rb/models/workflow_failure_reason_counter.rb +277 -0
  266. data/lib/api-sdk-rb/models/workflow_field_reference.rb +300 -0
  267. data/lib/api-sdk-rb/models/workflow_graph.rb +330 -0
  268. data/lib/api-sdk-rb/models/workflow_issue.rb +309 -0
  269. data/lib/api-sdk-rb/models/workflow_list.rb +271 -0
  270. data/lib/api-sdk-rb/models/workflow_node.rb +343 -0
  271. data/lib/api-sdk-rb/models/workflow_node_position.rb +238 -0
  272. data/lib/api-sdk-rb/models/workflow_preset_choice.rb +288 -0
  273. data/lib/api-sdk-rb/models/workflow_preset_choices.rb +224 -0
  274. data/lib/api-sdk-rb/models/workflow_preset_removal.rb +222 -0
  275. data/lib/api-sdk-rb/models/workflow_preset_widget.rb +234 -0
  276. data/lib/api-sdk-rb/models/workflow_publish_result.rb +256 -0
  277. data/lib/api-sdk-rb/models/workflow_removed.rb +221 -0
  278. data/lib/api-sdk-rb/models/workflow_response.rb +246 -0
  279. data/lib/api-sdk-rb/models/workflow_schedule.rb +298 -0
  280. data/lib/api-sdk-rb/models/workflow_stats.rb +347 -0
  281. data/lib/api-sdk-rb/models/workflow_status.rb +42 -0
  282. data/lib/api-sdk-rb/models/workflow_trigger.rb +303 -0
  283. data/lib/api-sdk-rb/models/workflow_trigger_values_inner.rb +271 -0
  284. data/lib/api-sdk-rb/models/workflow_version.rb +316 -0
  285. data/lib/api-sdk-rb/models/workflow_version_detail.rb +354 -0
  286. data/lib/api-sdk-rb/models/workflow_version_list.rb +224 -0
  287. data/lib/api-sdk-rb/models/workflow_version_published_by.rb +225 -0
  288. data/lib/api-sdk-rb/version.rb +1 -1
  289. data/lib/api-sdk-rb.rb +116 -17
  290. data/spec/api/brand_kit_api_spec.rb +136 -0
  291. data/spec/api/canvases_api_spec.rb +10 -10
  292. data/spec/api/compositions_api_spec.rb +227 -149
  293. data/spec/api/credits_api_spec.rb +5 -5
  294. data/spec/api/entitlements_api_spec.rb +4 -4
  295. data/spec/api/invoices_api_spec.rb +2 -2
  296. data/spec/api/managed_users_api_spec.rb +63 -42
  297. data/spec/api/operations_api_spec.rb +3 -3
  298. data/spec/api/partners_api_spec.rb +138 -84
  299. data/spec/api/public_embed_api_spec.rb +66 -15
  300. data/spec/api/tokens_api_spec.rb +3 -2
  301. data/spec/api/uploads_api_spec.rb +24 -24
  302. data/spec/api/users_api_spec.rb +43 -28
  303. data/spec/api/widgets_api_spec.rb +9 -9
  304. data/spec/api/workflows_api_spec.rb +339 -0
  305. data/spec/models/account_credit_transaction_list_response_spec.rb +48 -0
  306. data/spec/models/adapter_connection_list_response_spec.rb +48 -0
  307. data/spec/models/{get_managed_user_limits200_response_spec.rb → adapter_connection_removal_response_spec.rb} +6 -6
  308. data/spec/models/{delete_managed_user200_response_spec.rb → adapter_connection_response_spec.rb} +6 -6
  309. data/spec/models/adapter_connection_spec.rb +18 -0
  310. data/spec/models/ai_answers_knowledge_document_response_spec.rb +48 -0
  311. data/spec/models/brand_color_spec.rb +52 -0
  312. data/spec/models/brand_font_spec.rb +62 -0
  313. data/spec/models/brand_kit_asset_view_spec.rb +120 -0
  314. data/spec/models/brand_kit_figma_source_spec.rb +60 -0
  315. data/spec/models/brand_kit_tokens_fonts_spec.rb +54 -0
  316. data/spec/models/brand_kit_tokens_spec.rb +60 -0
  317. data/spec/models/brand_kit_view_owner_spec.rb +46 -0
  318. data/spec/models/{uploads_get200_response_spec.rb → brand_kit_view_response_spec.rb} +6 -6
  319. data/spec/models/brand_kit_view_spec.rb +90 -0
  320. data/spec/models/brand_spacing_spec.rb +78 -0
  321. data/spec/models/brand_text_style_spec.rb +52 -0
  322. data/spec/models/composition_database_record_response_spec.rb +48 -0
  323. data/spec/models/composition_last_edited_by_spec.rb +42 -0
  324. data/spec/models/composition_spec.rb +12 -0
  325. data/spec/models/confirm_adapter_connection_request_spec.rb +36 -0
  326. data/spec/models/content_item_write_result_response_spec.rb +48 -0
  327. data/spec/models/create_widget201_response_data_spec.rb +1 -7
  328. data/spec/models/create_workspace_workflow_from_preset_request_spec.rb +42 -0
  329. data/spec/models/create_workspace_workflow_request_spec.rb +48 -0
  330. data/spec/models/{uploads_id_delete200_response_data_spec.rb → delete_upload200_response_data_spec.rb} +6 -6
  331. data/spec/models/{operations_id_get_response_spec.rb → delete_upload200_response_spec.rb} +6 -6
  332. data/spec/models/delete_workspace_workflow200_response_spec.rb +48 -0
  333. data/spec/models/design_defaults_response_spec.rb +48 -0
  334. data/spec/models/editor_session_spec.rb +1 -1
  335. data/spec/models/get_operation_response_data_metadata_spec.rb +58 -0
  336. data/spec/models/{operations_id_get_response_data_spec.rb → get_operation_response_data_spec.rb} +6 -6
  337. data/spec/models/get_operation_response_spec.rb +48 -0
  338. data/spec/models/get_public_composition_embed200_response_adapters_captcha_spec.rb +36 -0
  339. data/spec/models/get_public_composition_embed200_response_adapters_spec.rb +42 -0
  340. data/spec/models/get_public_composition_embed200_response_entries_spec.rb +42 -0
  341. data/spec/models/get_public_composition_embed200_response_media_spec.rb +36 -0
  342. data/spec/models/get_public_composition_embed200_response_spec.rb +18 -0
  343. data/spec/models/{get_user_adapter_connections200_response_spec.rb → get_workspace_workflow_stats200_response_spec.rb} +6 -6
  344. data/spec/models/{remove_user_adapter_connection200_response_spec.rb → get_workspace_workflow_version200_response_spec.rb} +6 -6
  345. data/spec/models/list_partner_workflow_presets200_response_spec.rb +48 -0
  346. data/spec/models/list_uploads200_response_spec.rb +48 -0
  347. data/spec/models/{create_composition_database_record201_response_spec.rb → list_workspace_workflow_composition_options200_response_spec.rb} +6 -6
  348. data/spec/models/{get_partner_credit_transactions200_response_spec.rb → list_workspace_workflow_presets200_response_spec.rb} +6 -6
  349. data/spec/models/{add_ai_answers_knowledge_document201_response_spec.rb → list_workspace_workflow_versions200_response_spec.rb} +6 -6
  350. data/spec/models/list_workspace_workflows200_response_spec.rb +48 -0
  351. data/spec/models/managed_user_limits_response_spec.rb +48 -0
  352. data/spec/models/{uploads_id_delete200_response_spec.rb → managed_user_removal_response_spec.rb} +6 -6
  353. data/spec/models/new_editor_session_spec.rb +1 -1
  354. data/spec/models/offer_workflow_preset_request_spec.rb +54 -0
  355. data/spec/models/offered_workflow_preset_list_spec.rb +36 -0
  356. data/spec/models/offered_workflow_preset_spec.rb +106 -0
  357. data/spec/models/offered_workflow_preset_widget_spec.rb +48 -0
  358. data/spec/models/patch_brand_kit_asset_request_spec.rb +62 -0
  359. data/spec/models/patch_brand_kit_request_fonts_spec.rb +54 -0
  360. data/spec/models/patch_brand_kit_request_spacing_spec.rb +78 -0
  361. data/spec/models/patch_brand_kit_request_spec.rb +72 -0
  362. data/spec/models/post_brand_kit_icon_request_spec.rb +42 -0
  363. data/spec/models/public_workflow_events_accepted_spec.rb +48 -0
  364. data/spec/models/public_workflow_events_request_events_inner_spec.rb +62 -0
  365. data/spec/models/public_workflow_events_request_heights_inner_spec.rb +42 -0
  366. data/spec/models/public_workflow_events_request_spec.rb +54 -0
  367. data/spec/models/public_workflow_response_spec.rb +48 -0
  368. data/spec/models/public_workflow_spec.rb +94 -0
  369. data/spec/models/public_workflow_translation_spec.rb +42 -0
  370. data/spec/models/{get_partner_design_defaults200_response_spec.rb → publish_workspace_workflow200_response_spec.rb} +6 -6
  371. data/spec/models/publish_workspace_workflow_request_spec.rb +36 -0
  372. data/spec/models/put_brand_kit_request_spec.rb +48 -0
  373. data/spec/models/{create_composition_from_widget201_response_spec.rb → remove_partner_workflow_preset200_response_spec.rb} +6 -6
  374. data/spec/models/report_public_workflow_events200_response_spec.rb +48 -0
  375. data/spec/models/save_workspace_workflow_request_spec.rb +54 -0
  376. data/spec/models/{set_user_adapter_connection200_response_spec.rb → set_partner_workflow_preset200_response_spec.rb} +6 -6
  377. data/spec/models/widget_clarification_option_spec.rb +48 -0
  378. data/spec/models/widget_clarification_question_spec.rb +60 -0
  379. data/spec/models/widget_clarification_spec.rb +48 -0
  380. data/spec/models/widget_next_step_spec.rb +58 -0
  381. data/spec/models/widget_plan_decisions_adapters_inner_spec.rb +42 -0
  382. data/spec/models/widget_plan_decisions_libraries_inner_spec.rb +48 -0
  383. data/spec/models/widget_plan_decisions_responsive_spec.rb +48 -0
  384. data/spec/models/widget_plan_decisions_spec.rb +78 -0
  385. data/spec/models/widget_plan_spec.rb +60 -0
  386. data/spec/models/widget_plan_task_spec.rb +62 -0
  387. data/spec/models/widget_spec.rb +1 -7
  388. data/spec/models/workflow_composition_action_spec.rb +54 -0
  389. data/spec/models/workflow_composition_field_spec.rb +58 -0
  390. data/spec/models/workflow_composition_option_actions_spec.rb +52 -0
  391. data/spec/models/workflow_composition_option_inputs_spec.rb +58 -0
  392. data/spec/models/workflow_composition_option_spec.rb +72 -0
  393. data/spec/models/workflow_composition_options_spec.rb +54 -0
  394. data/spec/models/workflow_condition_case_spec.rb +58 -0
  395. data/spec/models/workflow_condition_test_spec.rb +52 -0
  396. data/spec/models/workflow_counter_spec.rb +42 -0
  397. data/spec/models/workflow_detail_all_of_last_edited_by_spec.rb +42 -0
  398. data/spec/models/workflow_detail_response_spec.rb +48 -0
  399. data/spec/models/workflow_detail_spec.rb +162 -0
  400. data/spec/models/workflow_edge_spec.rb +54 -0
  401. data/spec/models/workflow_failure_reason_counter_spec.rb +48 -0
  402. data/spec/models/workflow_failure_reason_spec.rb +30 -0
  403. data/spec/models/workflow_field_reference_spec.rb +56 -0
  404. data/spec/models/workflow_graph_spec.rb +52 -0
  405. data/spec/models/workflow_issue_spec.rb +70 -0
  406. data/spec/models/{create_composition_content_item201_response_spec.rb → workflow_list_spec.rb} +15 -9
  407. data/spec/models/workflow_node_position_spec.rb +42 -0
  408. data/spec/models/workflow_node_spec.rb +76 -0
  409. data/spec/models/workflow_preset_choice_spec.rb +60 -0
  410. data/spec/models/workflow_preset_choices_spec.rb +36 -0
  411. data/spec/models/workflow_preset_removal_spec.rb +36 -0
  412. data/spec/models/workflow_preset_widget_spec.rb +42 -0
  413. data/spec/models/workflow_publish_result_spec.rb +48 -0
  414. data/spec/models/workflow_removed_spec.rb +36 -0
  415. data/spec/models/workflow_response_spec.rb +48 -0
  416. data/spec/models/workflow_schedule_spec.rb +62 -0
  417. data/spec/models/workflow_spec.rb +132 -0
  418. data/spec/models/workflow_stats_spec.rb +84 -0
  419. data/spec/models/workflow_status_spec.rb +30 -0
  420. data/spec/models/workflow_trigger_spec.rb +70 -0
  421. data/spec/models/workflow_trigger_values_inner_spec.rb +46 -0
  422. data/spec/models/workflow_version_detail_spec.rb +78 -0
  423. data/spec/models/workflow_version_list_spec.rb +36 -0
  424. data/spec/models/workflow_version_published_by_spec.rb +42 -0
  425. data/spec/models/workflow_version_spec.rb +66 -0
  426. metadata +476 -80
  427. data/docs/PartnerApi.md +0 -9892
  428. data/docs/UploadsIdDelete200Response.md +0 -22
  429. data/lib/api-sdk-rb/api/partner_api.rb +0 -10693
  430. data/spec/api/partner_api_spec.rb +0 -1895
@@ -4,21 +4,25 @@ All URIs are relative to *https://api.widgetic.com/v1*
4
4
 
5
5
  | Method | HTTP request | Description |
6
6
  | ------ | ------------ | ----------- |
7
- | [**call_public_composition_adapter_0**](PublicEmbedApi.md#call_public_composition_adapter_0) | **POST** /embed/compositions/{compositionId}/adapters/{adapterId}/{operation} | Call a gateway operation of an adapter a published widget uses |
8
- | [**create_public_composition_entry_0**](PublicEmbedApi.md#create_public_composition_entry_0) | **POST** /embed/compositions/{compositionId}/entries/{table} | Append a visitor entry through the gateway |
9
- | [**get_public_composition_embed_0**](PublicEmbedApi.md#get_public_composition_embed_0) | **GET** /embed/compositions/{compositionId} | Resolve a composition UUID to a published widget URL |
10
- | [**get_public_composition_iframe_0**](PublicEmbedApi.md#get_public_composition_iframe_0) | **GET** /embed/compositions/{compositionId}/frame | Embed a published composition with its saved values |
11
- | [**post_public_composition_embed_status_0**](PublicEmbedApi.md#post_public_composition_embed_status_0) | **POST** /embed/compositions/status | Batch-check whether compositions are currently served for embed |
12
- | [**upload_public_composition_adapter_file_0**](PublicEmbedApi.md#upload_public_composition_adapter_file_0) | **PUT** /embed/compositions/{compositionId}/adapters/upload/files/{ticket} | Send the file a visitor chose through the upload adapter of a published widget |
7
+ | [**call_public_composition_adapter**](PublicEmbedApi.md#call_public_composition_adapter) | **POST** /embed/compositions/{compositionId}/adapters/{adapterId}/{operation} | Call a gateway operation of an adapter a published widget uses |
8
+ | [**create_public_composition_entry**](PublicEmbedApi.md#create_public_composition_entry) | **POST** /embed/compositions/{compositionId}/entries/{table} | Append a visitor entry through the gateway |
9
+ | [**get_public_composition_embed**](PublicEmbedApi.md#get_public_composition_embed) | **GET** /embed/compositions/{compositionId} | Resolve a composition UUID to a published widget URL |
10
+ | [**get_public_composition_iframe**](PublicEmbedApi.md#get_public_composition_iframe) | **GET** /embed/compositions/{compositionId}/frame | Embed a published composition with its saved values |
11
+ | [**get_public_workflow**](PublicEmbedApi.md#get_public_workflow) | **GET** /embed/workflows/{workflowId} | Read the published Workflow of an embed |
12
+ | [**get_public_workflow_frame**](PublicEmbedApi.md#get_public_workflow_frame) | **GET** /embed/workflows/{workflowId}/frame | Show a published Workflow in a page of its own |
13
+ | [**get_public_workflow_version**](PublicEmbedApi.md#get_public_workflow_version) | **GET** /embed/workflows/{workflowId}/versions/{versionId} | Read one published version of a Workflow |
14
+ | [**post_public_composition_embed_status**](PublicEmbedApi.md#post_public_composition_embed_status) | **POST** /embed/compositions/status | Batch-check whether compositions are currently served for embed |
15
+ | [**report_public_workflow_events**](PublicEmbedApi.md#report_public_workflow_events) | **POST** /embed/workflows/{workflowId}/events | Report what visitors did in a Workflow, as counts |
16
+ | [**upload_public_composition_adapter_file**](PublicEmbedApi.md#upload_public_composition_adapter_file) | **PUT** /embed/compositions/{compositionId}/adapters/upload/files/{ticket} | Send the file a visitor chose through the upload adapter of a published widget |
13
17
 
14
18
 
15
- ## call_public_composition_adapter_0
19
+ ## call_public_composition_adapter
16
20
 
17
- > <PublicAdapterCallResult> call_public_composition_adapter_0(composition_id, adapter_id, operation, public_adapter_call_request)
21
+ > <PublicAdapterCallResult> call_public_composition_adapter(composition_id, adapter_id, operation, public_adapter_call_request)
18
22
 
19
23
  Call a gateway operation of an adapter a published widget uses
20
24
 
21
- The door a widget's adapter module calls, from the visitor's browser, for the operations that cannot run in the browser: anything with a secret, a charge in credits or the owner's storage behind it. A widget that uses such an adapter is handed the address of this route as `adapters.url` in its `widgetic:host` message (see the host bridge contract) and calls `{adapters.url}/{adapterId}/{operation}`. It is not meant to be called by hand, and it takes no API key. **Address.** `https://api.widgetic.com/embed/compositions/{compositionId}/adapters/{adapterId}/{operation}`: the root of the API host, NOT under `/v1`. A client generated from this description for `https://api.widgetic.com/v1` must be given the base address `https://api.widgetic.com` for the calls of the `Public Embed` tag. **What it serves.** Only an adapter, and a version of it, that the widget's LIVE manifest (what the version that is published uses) lists, and only an operation that runs on the gateway. Anything else is one 404 `ADAPTER_NOT_AVAILABLE`, whatever the reason, so the route is no way to ask what a widget contains. An adapter an administrator stopped offering to NEW widgets keeps serving the widgets that already use it. **Who may call.** The same rule as the entry route: a permitted `Origin` header, which is the artifact origin the widget runs from or a website the owner allowed (or the owner's own platform). Page script cannot forge it. A request without a permitted `Origin` is 403 `ORIGIN_NOT_ALLOWED`. A composition that is not served (unpublished, or its owner's plan does not serve it) is 404, with the codes of the other public embed routes. When the partner of the owner signs the host context, a context that is not signed as the partner requires is refused with 403 `CONTEXT_SIGNATURE_REQUIRED`, `CONTEXT_SIGNATURE_INVALID` or `CONTEXT_SIGNATURE_EXPIRED`. **Cost and retries.** An operation priced in credits is charged to the owner of the widget (for a customer a partner manages, to the partner's administrator, within the monthly credits set for that customer), once for each `requestId`, before it runs, and given back if it does not answer. A `requestId` that was charged and not given back is 409 `REQUEST_ALREADY_USED` and the operation is NOT run a second time; one whose charge was given back may be tried again with the same `requestId`. A visitor never sees an owner's balance: a feature that cannot be used because its owner has no credits left, because the customer's monthly credits are spent, or because an administrator stopped the adapter, is the same 503 `ADAPTER_UNAVAILABLE` as every other \"not right now\". The owner is told through a notice. **Limits.** In front of everything, 120 calls a minute for each visitor address and composition and 600 a minute for a composition (429 `RATE_LIMITED`). Then, for each operation of a widget, a rate for each visitor address a minute and a cap for the widget a day: 30 and 5000 for an operation that is free, 10 and 500 for one that costs credits, unless the adapter says otherwise (never above 120 and 100000). A visitor over the rate is 429 `RATE_LIMITED`; a widget over its cap is 429 `WIDGET_LIMIT_REACHED`. Both carry a `Retry-After` header. The body is at most 64 KiB (413 `PAYLOAD_TOO_LARGE`) and JSON (415 `UNSUPPORTED_MEDIA_TYPE`); an operation has 30 seconds to answer (504 `ADAPTER_TIMEOUT`, and the charge is given back).
25
+ The door a widget's adapter module calls, from the visitor's browser, for the operations that cannot run in the browser: anything with a secret, a charge in credits or the owner's storage behind it. A widget that uses such an adapter is handed the address of this route as `adapters.url` in its `widgetic:host` message (see the host bridge contract) and calls `{adapters.url}/{adapterId}/{operation}`. It is not meant to be called by hand, and it takes no API key. **Address.** `https://api.widgetic.com/embed/compositions/{compositionId}/adapters/{adapterId}/{operation}`: the root of the API host, NOT under `/v1`. A client generated from this description for `https://api.widgetic.com/v1` must be given the base address `https://api.widgetic.com` for the calls of the `Public Embed` tag. **What it serves.** Only an adapter, and a version of it, that the widget's LIVE manifest (what the version that is published uses) lists, and only an operation that runs on the gateway. Anything else is one 404 `ADAPTER_NOT_AVAILABLE`, whatever the reason, so the route is no way to ask what a widget contains. An adapter an administrator stopped offering to NEW widgets keeps serving the widgets that already use it. **Who may call.** The same rule as the entry route: a permitted `Origin` header, which is the artifact origin the widget runs from or any website when the owner has not restricted the allowed websites (when the owner has, one of the websites the owner listed, Widgetic's own sites, the visitor's own machine or the owner's own platform). Page script cannot forge it. A request without a permitted `Origin` is 403 `ORIGIN_NOT_ALLOWED`. A composition that is not served (unpublished, or its owner's plan does not serve it) is 404, with the codes of the other public embed routes. When the partner of the owner signs the host context, a context that is not signed as the partner requires is refused with 403 `CONTEXT_SIGNATURE_REQUIRED`, `CONTEXT_SIGNATURE_INVALID` or `CONTEXT_SIGNATURE_EXPIRED`. **Cost and retries.** An operation priced in credits is charged to the owner of the widget (for a customer a partner manages, to the partner's administrator, within the monthly credits set for that customer), once for each `requestId`, before it runs, and given back if it does not answer. A `requestId` that was charged and not given back is 409 `REQUEST_ALREADY_USED` and the operation is NOT run a second time; one whose charge was given back may be tried again with the same `requestId`. A visitor never sees an owner's balance: a feature that cannot be used because its owner has no credits left, because the customer's monthly credits are spent, or because an administrator stopped the adapter, is the same 503 `ADAPTER_UNAVAILABLE` as every other \"not right now\". The owner is told through a notice. **Limits.** In front of everything, 120 calls a minute for each visitor address and composition and 600 a minute for a composition (429 `RATE_LIMITED`). Then, for each operation of a widget, a rate for each visitor address a minute and a cap for the widget a day: 30 and 5000 for an operation that is free, 10 and 500 for one that costs credits, unless the adapter says otherwise (never above 120 and 100000). A visitor over the rate is 429 `RATE_LIMITED`; a widget over its cap is 429 `WIDGET_LIMIT_REACHED`. Both carry a `Retry-After` header. The body is at most 64 KiB (413 `PAYLOAD_TOO_LARGE`) and JSON (415 `UNSUPPORTED_MEDIA_TYPE`); an operation has 30 seconds to answer (504 `ADAPTER_TIMEOUT`, and the charge is given back).
22
26
 
23
27
  ### Examples
24
28
 
@@ -34,28 +38,28 @@ public_adapter_call_request = ApiSdkRb::PublicAdapterCallRequest.new({request_id
34
38
 
35
39
  begin
36
40
  # Call a gateway operation of an adapter a published widget uses
37
- result = api_instance.call_public_composition_adapter_0(composition_id, adapter_id, operation, public_adapter_call_request)
41
+ result = api_instance.call_public_composition_adapter(composition_id, adapter_id, operation, public_adapter_call_request)
38
42
  p result
39
43
  rescue ApiSdkRb::ApiError => e
40
- puts "Error when calling PublicEmbedApi->call_public_composition_adapter_0: #{e}"
44
+ puts "Error when calling PublicEmbedApi->call_public_composition_adapter: #{e}"
41
45
  end
42
46
  ```
43
47
 
44
- #### Using the call_public_composition_adapter_0_with_http_info variant
48
+ #### Using the call_public_composition_adapter_with_http_info variant
45
49
 
46
50
  This returns an Array which contains the response data, status code and headers.
47
51
 
48
- > <Array(<PublicAdapterCallResult>, Integer, Hash)> call_public_composition_adapter_0_with_http_info(composition_id, adapter_id, operation, public_adapter_call_request)
52
+ > <Array(<PublicAdapterCallResult>, Integer, Hash)> call_public_composition_adapter_with_http_info(composition_id, adapter_id, operation, public_adapter_call_request)
49
53
 
50
54
  ```ruby
51
55
  begin
52
56
  # Call a gateway operation of an adapter a published widget uses
53
- data, status_code, headers = api_instance.call_public_composition_adapter_0_with_http_info(composition_id, adapter_id, operation, public_adapter_call_request)
57
+ data, status_code, headers = api_instance.call_public_composition_adapter_with_http_info(composition_id, adapter_id, operation, public_adapter_call_request)
54
58
  p status_code # => 2xx
55
59
  p headers # => { ... }
56
60
  p data # => <PublicAdapterCallResult>
57
61
  rescue ApiSdkRb::ApiError => e
58
- puts "Error when calling PublicEmbedApi->call_public_composition_adapter_0_with_http_info: #{e}"
62
+ puts "Error when calling PublicEmbedApi->call_public_composition_adapter_with_http_info: #{e}"
59
63
  end
60
64
  ```
61
65
 
@@ -82,13 +86,13 @@ No authorization required
82
86
  - **Accept**: application/json
83
87
 
84
88
 
85
- ## create_public_composition_entry_0
89
+ ## create_public_composition_entry
86
90
 
87
- > <PublicCompositionEntryCreated> create_public_composition_entry_0(composition_id, table, public_composition_entry_request, opts)
91
+ > <PublicCompositionEntryCreated> create_public_composition_entry(composition_id, table, public_composition_entry_request, opts)
88
92
 
89
93
  Append a visitor entry through the gateway
90
94
 
91
- Public append-only write into a published composition database. No API key. The browser must send a permitted `Origin` header (the artifact iframe origin or a website the owner allowed). When the request comes from the shared artifact origin, it must also carry the per-composition write token (`X-Widgetic-Write-Token` header or `writeToken` body field, handed to the widget in `widgetic:host` as `entries.writeToken` and returned as `entryWriteToken` on `getPublicCompositionEmbed`). Host `context` is stored for partner attribution; it is not authenticated unless the partner signs it (see **Signed context**). Request bodies are limited to 16 KB before parsing. **Address.** `https://api.widgetic.com/embed/compositions/{compositionId}/entries/{table}`: the root of the API host, NOT under `/v1`. A client generated from this description for `https://api.widgetic.com/v1` must be given the base address `https://api.widgetic.com` for the calls of the `Public Embed` tag. **Signed context.** A partner that wants to trust `context` (to bill a customer by it, say) makes a signing secret (`rotatePartnerEntryContextSecret`), and its server signs the context it hands to the embed. The signature travels inside `context` as two reserved keys, `widgetic_exp` (UTC seconds, at most seven days ahead) and `widgetic_sig`. The gateway checks them after the `Origin` and before anything else is judged, stored or announced, and keeps and announces the context WITHOUT them. A context that is not signed as the partner requires is refused with 403 `CONTEXT_SIGNATURE_REQUIRED`, `CONTEXT_SIGNATURE_INVALID` or `CONTEXT_SIGNATURE_EXPIRED`; when the check cannot be made just now the answer is a retryable 503 `CONTEXT_SIGNATURE_UNAVAILABLE`, never an unchecked entry. Until a partner makes a secret nothing changes: the two keys are dropped and the rest is taken as it came. A signature is good until its `widgetic_exp` and may be used again until then, so a partner that must count each submission once keeps a unique value of its own (a `submissionId`, say) in the context. The recipe and a test vector are in the description of `rotatePartnerEntryContextSecret`.
95
+ Public append-only write into a published composition database. No API key. The browser must send a permitted `Origin` header: the artifact iframe origin, or any website when the owner has not restricted the allowed websites (when the owner has, one of the websites the owner listed, Widgetic's own sites, the visitor's own machine or the owner's own platform). When the request comes from the shared artifact origin, it must also carry the per-composition write token (`X-Widgetic-Write-Token` header or `writeToken` body field, handed to the widget in `widgetic:host` as `entries.writeToken` and returned as `entryWriteToken` on `getPublicCompositionEmbed`). Host `context` is stored for partner attribution; it is not authenticated unless the partner signs it (see **Signed context**). Request bodies are limited to 16 KB before parsing. **Address.** `https://api.widgetic.com/embed/compositions/{compositionId}/entries/{table}`: the root of the API host, NOT under `/v1`. A client generated from this description for `https://api.widgetic.com/v1` must be given the base address `https://api.widgetic.com` for the calls of the `Public Embed` tag. **Signed context.** A partner that wants to trust `context` (to bill a customer by it, say) makes a signing secret (`rotatePartnerEntryContextSecret`), and its server signs the context it hands to the embed. The signature travels inside `context` as two reserved keys, `widgetic_exp` (UTC seconds, at most seven days ahead) and `widgetic_sig`. The gateway checks them after the `Origin` and before anything else is judged, stored or announced, and keeps and announces the context WITHOUT them. A context that is not signed as the partner requires is refused with 403 `CONTEXT_SIGNATURE_REQUIRED`, `CONTEXT_SIGNATURE_INVALID` or `CONTEXT_SIGNATURE_EXPIRED`; when the check cannot be made just now the answer is a retryable 503 `CONTEXT_SIGNATURE_UNAVAILABLE`, never an unchecked entry. Until a partner makes a secret nothing changes: the two keys are dropped and the rest is taken as it came. A signature is good until its `widgetic_exp` and may be used again until then, so a partner that must count each submission once keeps a unique value of its own (a `submissionId`, say) in the context. The recipe and a test vector are in the description of `rotatePartnerEntryContextSecret`.
92
96
 
93
97
  ### Examples
94
98
 
@@ -101,33 +105,34 @@ composition_id = '38400000-8cf0-11bd-b23e-10b96e4ef00d' # String |
101
105
  table = 'table_example' # String |
102
106
  public_composition_entry_request = ApiSdkRb::PublicCompositionEntryRequest.new({values: { key: 3.56}}) # PublicCompositionEntryRequest |
103
107
  opts = {
104
- x_widgetic_write_token: 'x_widgetic_write_token_example' # String | Signed per-composition write token handed to the widget in `widgetic:host` as `entries.writeToken` (and returned by `GET /embed/compositions/{compositionId}` as `entryWriteToken`). Required when the request comes from the shared Widgetic artifact origin; verified whenever present.
108
+ x_widgetic_write_token: 'x_widgetic_write_token_example', # String | Signed per-composition write token handed to the widget in `widgetic:host` as `entries.writeToken` (and returned by `GET /embed/compositions/{compositionId}` as `entryWriteToken`). Required when the request comes from the shared Widgetic artifact origin; verified whenever present.
109
+ x_widgetic_visitor_id: 'x_widgetic_visitor_id_example' # String | A random id the widget's browser makes once and keeps (16 to 64 characters of `A-Za-z0-9_-`), sent so a table's per-visitor `limit` (declared in the widget database file) can count this browser. Not an identity and not a secret. Without it, or with a malformed value, the limit counts only by network address.
105
110
  }
106
111
 
107
112
  begin
108
113
  # Append a visitor entry through the gateway
109
- result = api_instance.create_public_composition_entry_0(composition_id, table, public_composition_entry_request, opts)
114
+ result = api_instance.create_public_composition_entry(composition_id, table, public_composition_entry_request, opts)
110
115
  p result
111
116
  rescue ApiSdkRb::ApiError => e
112
- puts "Error when calling PublicEmbedApi->create_public_composition_entry_0: #{e}"
117
+ puts "Error when calling PublicEmbedApi->create_public_composition_entry: #{e}"
113
118
  end
114
119
  ```
115
120
 
116
- #### Using the create_public_composition_entry_0_with_http_info variant
121
+ #### Using the create_public_composition_entry_with_http_info variant
117
122
 
118
123
  This returns an Array which contains the response data, status code and headers.
119
124
 
120
- > <Array(<PublicCompositionEntryCreated>, Integer, Hash)> create_public_composition_entry_0_with_http_info(composition_id, table, public_composition_entry_request, opts)
125
+ > <Array(<PublicCompositionEntryCreated>, Integer, Hash)> create_public_composition_entry_with_http_info(composition_id, table, public_composition_entry_request, opts)
121
126
 
122
127
  ```ruby
123
128
  begin
124
129
  # Append a visitor entry through the gateway
125
- data, status_code, headers = api_instance.create_public_composition_entry_0_with_http_info(composition_id, table, public_composition_entry_request, opts)
130
+ data, status_code, headers = api_instance.create_public_composition_entry_with_http_info(composition_id, table, public_composition_entry_request, opts)
126
131
  p status_code # => 2xx
127
132
  p headers # => { ... }
128
133
  p data # => <PublicCompositionEntryCreated>
129
134
  rescue ApiSdkRb::ApiError => e
130
- puts "Error when calling PublicEmbedApi->create_public_composition_entry_0_with_http_info: #{e}"
135
+ puts "Error when calling PublicEmbedApi->create_public_composition_entry_with_http_info: #{e}"
131
136
  end
132
137
  ```
133
138
 
@@ -139,6 +144,7 @@ end
139
144
  | **table** | **String** | | |
140
145
  | **public_composition_entry_request** | [**PublicCompositionEntryRequest**](PublicCompositionEntryRequest.md) | | |
141
146
  | **x_widgetic_write_token** | **String** | Signed per-composition write token handed to the widget in &#x60;widgetic:host&#x60; as &#x60;entries.writeToken&#x60; (and returned by &#x60;GET /embed/compositions/{compositionId}&#x60; as &#x60;entryWriteToken&#x60;). Required when the request comes from the shared Widgetic artifact origin; verified whenever present. | [optional] |
147
+ | **x_widgetic_visitor_id** | **String** | A random id the widget&#39;s browser makes once and keeps (16 to 64 characters of &#x60;A-Za-z0-9_-&#x60;), sent so a table&#39;s per-visitor &#x60;limit&#x60; (declared in the widget database file) can count this browser. Not an identity and not a secret. Without it, or with a malformed value, the limit counts only by network address. | [optional] |
142
148
 
143
149
  ### Return type
144
150
 
@@ -154,9 +160,9 @@ No authorization required
154
160
  - **Accept**: application/json
155
161
 
156
162
 
157
- ## get_public_composition_embed_0
163
+ ## get_public_composition_embed
158
164
 
159
- > <GetPublicCompositionEmbed200Response> get_public_composition_embed_0(composition_id)
165
+ > <GetPublicCompositionEmbed200Response> get_public_composition_embed(composition_id)
160
166
 
161
167
  Resolve a composition UUID to a published widget URL
162
168
 
@@ -173,28 +179,28 @@ composition_id = '38400000-8cf0-11bd-b23e-10b96e4ef00d' # String |
173
179
 
174
180
  begin
175
181
  # Resolve a composition UUID to a published widget URL
176
- result = api_instance.get_public_composition_embed_0(composition_id)
182
+ result = api_instance.get_public_composition_embed(composition_id)
177
183
  p result
178
184
  rescue ApiSdkRb::ApiError => e
179
- puts "Error when calling PublicEmbedApi->get_public_composition_embed_0: #{e}"
185
+ puts "Error when calling PublicEmbedApi->get_public_composition_embed: #{e}"
180
186
  end
181
187
  ```
182
188
 
183
- #### Using the get_public_composition_embed_0_with_http_info variant
189
+ #### Using the get_public_composition_embed_with_http_info variant
184
190
 
185
191
  This returns an Array which contains the response data, status code and headers.
186
192
 
187
- > <Array(<GetPublicCompositionEmbed200Response>, Integer, Hash)> get_public_composition_embed_0_with_http_info(composition_id)
193
+ > <Array(<GetPublicCompositionEmbed200Response>, Integer, Hash)> get_public_composition_embed_with_http_info(composition_id)
188
194
 
189
195
  ```ruby
190
196
  begin
191
197
  # Resolve a composition UUID to a published widget URL
192
- data, status_code, headers = api_instance.get_public_composition_embed_0_with_http_info(composition_id)
198
+ data, status_code, headers = api_instance.get_public_composition_embed_with_http_info(composition_id)
193
199
  p status_code # => 2xx
194
200
  p headers # => { ... }
195
201
  p data # => <GetPublicCompositionEmbed200Response>
196
202
  rescue ApiSdkRb::ApiError => e
197
- puts "Error when calling PublicEmbedApi->get_public_composition_embed_0_with_http_info: #{e}"
203
+ puts "Error when calling PublicEmbedApi->get_public_composition_embed_with_http_info: #{e}"
198
204
  end
199
205
  ```
200
206
 
@@ -218,9 +224,9 @@ No authorization required
218
224
  - **Accept**: application/json
219
225
 
220
226
 
221
- ## get_public_composition_iframe_0
227
+ ## get_public_composition_iframe
222
228
 
223
- > String get_public_composition_iframe_0(composition_id)
229
+ > String get_public_composition_iframe(composition_id)
224
230
 
225
231
  Embed a published composition with its saved values
226
232
 
@@ -237,28 +243,28 @@ composition_id = '38400000-8cf0-11bd-b23e-10b96e4ef00d' # String |
237
243
 
238
244
  begin
239
245
  # Embed a published composition with its saved values
240
- result = api_instance.get_public_composition_iframe_0(composition_id)
246
+ result = api_instance.get_public_composition_iframe(composition_id)
241
247
  p result
242
248
  rescue ApiSdkRb::ApiError => e
243
- puts "Error when calling PublicEmbedApi->get_public_composition_iframe_0: #{e}"
249
+ puts "Error when calling PublicEmbedApi->get_public_composition_iframe: #{e}"
244
250
  end
245
251
  ```
246
252
 
247
- #### Using the get_public_composition_iframe_0_with_http_info variant
253
+ #### Using the get_public_composition_iframe_with_http_info variant
248
254
 
249
255
  This returns an Array which contains the response data, status code and headers.
250
256
 
251
- > <Array(String, Integer, Hash)> get_public_composition_iframe_0_with_http_info(composition_id)
257
+ > <Array(String, Integer, Hash)> get_public_composition_iframe_with_http_info(composition_id)
252
258
 
253
259
  ```ruby
254
260
  begin
255
261
  # Embed a published composition with its saved values
256
- data, status_code, headers = api_instance.get_public_composition_iframe_0_with_http_info(composition_id)
262
+ data, status_code, headers = api_instance.get_public_composition_iframe_with_http_info(composition_id)
257
263
  p status_code # => 2xx
258
264
  p headers # => { ... }
259
265
  p data # => String
260
266
  rescue ApiSdkRb::ApiError => e
261
- puts "Error when calling PublicEmbedApi->get_public_composition_iframe_0_with_http_info: #{e}"
267
+ puts "Error when calling PublicEmbedApi->get_public_composition_iframe_with_http_info: #{e}"
262
268
  end
263
269
  ```
264
270
 
@@ -282,9 +288,203 @@ No authorization required
282
288
  - **Accept**: text/html, application/json
283
289
 
284
290
 
285
- ## post_public_composition_embed_status_0
291
+ ## get_public_workflow
286
292
 
287
- > <PostPublicCompositionEmbedStatus200Response> post_public_composition_embed_status_0(post_public_composition_embed_status_request)
293
+ > <PublicWorkflowResponse> get_public_workflow(workflow_id)
294
+
295
+ Read the published Workflow of an embed
296
+
297
+ Public read of a workflow for the embed that carries `workflow-id`. No API key. The answer is the live version (its graph, the composition a new visitor starts on, the time zone, the languages its compositions can be shown in, and the token that lets the browser report counts), or `status: paused` with nothing else, in which case the embed shows only its first composition. A workflow that is a draft, archived or unknown answers 404, and the embed then behaves as a plain embed of its `composition-id`. So does a workflow whose owner is not being served (a plan that lapsed, a partner whose agreement is not in force): the answer is the one the compositions of that owner give. **Address.** `https://api.widgetic.com/embed/workflows/{workflowId}`: the root of the API host, NOT under `/v1`. A client generated from this description for `https://api.widgetic.com/v1` must be given the base address `https://api.widgetic.com` for the calls of the `Public Embed` tag. The answer may be reused for a few seconds (`Cache-Control: public, max-age=15`), so a publish or a pause reaches visitors within moments. The graph is readable by anyone who has the workflow's id: its rules run in the visitor's browser, so a rule must never hold a secret.
298
+
299
+ ### Examples
300
+
301
+ ```ruby
302
+ require 'time'
303
+ require 'api-sdk-rb'
304
+
305
+ api_instance = ApiSdkRb::PublicEmbedApi.new
306
+ workflow_id = '38400000-8cf0-11bd-b23e-10b96e4ef00d' # String |
307
+
308
+ begin
309
+ # Read the published Workflow of an embed
310
+ result = api_instance.get_public_workflow(workflow_id)
311
+ p result
312
+ rescue ApiSdkRb::ApiError => e
313
+ puts "Error when calling PublicEmbedApi->get_public_workflow: #{e}"
314
+ end
315
+ ```
316
+
317
+ #### Using the get_public_workflow_with_http_info variant
318
+
319
+ This returns an Array which contains the response data, status code and headers.
320
+
321
+ > <Array(<PublicWorkflowResponse>, Integer, Hash)> get_public_workflow_with_http_info(workflow_id)
322
+
323
+ ```ruby
324
+ begin
325
+ # Read the published Workflow of an embed
326
+ data, status_code, headers = api_instance.get_public_workflow_with_http_info(workflow_id)
327
+ p status_code # => 2xx
328
+ p headers # => { ... }
329
+ p data # => <PublicWorkflowResponse>
330
+ rescue ApiSdkRb::ApiError => e
331
+ puts "Error when calling PublicEmbedApi->get_public_workflow_with_http_info: #{e}"
332
+ end
333
+ ```
334
+
335
+ ### Parameters
336
+
337
+ | Name | Type | Description | Notes |
338
+ | ---- | ---- | ----------- | ----- |
339
+ | **workflow_id** | **String** | | |
340
+
341
+ ### Return type
342
+
343
+ [**PublicWorkflowResponse**](PublicWorkflowResponse.md)
344
+
345
+ ### Authorization
346
+
347
+ No authorization required
348
+
349
+ ### HTTP request headers
350
+
351
+ - **Content-Type**: Not defined
352
+ - **Accept**: application/json
353
+
354
+
355
+ ## get_public_workflow_frame
356
+
357
+ > String get_public_workflow_frame(workflow_id)
358
+
359
+ Show a published Workflow in a page of its own
360
+
361
+ A page that runs a published workflow, for a place that can only be given an address or an iframe: a chat messenger, a link page, a site builder, a blog that follows oEmbed. No API key, no SDK to add. The page holds the Embed SDK and the same tag a website carries (`<widgetic workflow-id composition-id>`), so a visitor moves from one composition to the next in place, by the same rules, exactly as on a website. A paused workflow shows its first composition alone, as its embeds do. **What the frame can count.** Only what happens inside it: entries, a widget's goals and actions, and waits. The page events a website can send to a workflow (`widgetic:workflow-event`) are events of the page around the embed, and they do not cross an iframe, so a connection that waits for one never fires from a frame. A workflow that is a draft, is archived, or does not exist, and one whose owner is not being served, answers 404 with a short page that gives no reason. If the owner of the workflow's first composition listed the websites it may appear on, the page is sent with `Content-Security-Policy: frame-ancestors` naming those websites (and Widgetic's own, and the website where the partner the owner administers integrates Widgetic, with its subdomains), so a browser refuses to show it inside any other website. Opening the address directly still works. An owner who listed nothing is not restricted. The page links its oEmbed card, so a site that follows oEmbed turns the address of the frame into an embed. **Address.** `https://api.widgetic.com/embed/workflows/{workflowId}/frame`: the root of the API host, NOT under `/v1`. A client generated from this description for `https://api.widgetic.com/v1` must be given the base address `https://api.widgetic.com` for the calls of the `Public Embed` tag.
362
+
363
+ ### Examples
364
+
365
+ ```ruby
366
+ require 'time'
367
+ require 'api-sdk-rb'
368
+
369
+ api_instance = ApiSdkRb::PublicEmbedApi.new
370
+ workflow_id = '38400000-8cf0-11bd-b23e-10b96e4ef00d' # String |
371
+
372
+ begin
373
+ # Show a published Workflow in a page of its own
374
+ result = api_instance.get_public_workflow_frame(workflow_id)
375
+ p result
376
+ rescue ApiSdkRb::ApiError => e
377
+ puts "Error when calling PublicEmbedApi->get_public_workflow_frame: #{e}"
378
+ end
379
+ ```
380
+
381
+ #### Using the get_public_workflow_frame_with_http_info variant
382
+
383
+ This returns an Array which contains the response data, status code and headers.
384
+
385
+ > <Array(String, Integer, Hash)> get_public_workflow_frame_with_http_info(workflow_id)
386
+
387
+ ```ruby
388
+ begin
389
+ # Show a published Workflow in a page of its own
390
+ data, status_code, headers = api_instance.get_public_workflow_frame_with_http_info(workflow_id)
391
+ p status_code # => 2xx
392
+ p headers # => { ... }
393
+ p data # => String
394
+ rescue ApiSdkRb::ApiError => e
395
+ puts "Error when calling PublicEmbedApi->get_public_workflow_frame_with_http_info: #{e}"
396
+ end
397
+ ```
398
+
399
+ ### Parameters
400
+
401
+ | Name | Type | Description | Notes |
402
+ | ---- | ---- | ----------- | ----- |
403
+ | **workflow_id** | **String** | | |
404
+
405
+ ### Return type
406
+
407
+ **String**
408
+
409
+ ### Authorization
410
+
411
+ No authorization required
412
+
413
+ ### HTTP request headers
414
+
415
+ - **Content-Type**: Not defined
416
+ - **Accept**: text/html, application/json
417
+
418
+
419
+ ## get_public_workflow_version
420
+
421
+ > <PublicWorkflowResponse> get_public_workflow_version(workflow_id, version_id)
422
+
423
+ Read one published version of a Workflow
424
+
425
+ Public read of one version of a workflow, for a visitor who started on it before a newer one was published: they finish on the version they started on (for up to 30 days; after that they get the latest). The graph of a version never changes once published; the languages its compositions can be shown in (`translations`) are read each time, as for the live version. Like the read of the live version, it answers `status: paused` with nothing else while the workflow is paused, and 404 when the workflow is a draft or archived, or has no such version. **Address.** `https://api.widgetic.com/embed/workflows/{workflowId}/versions/{versionId}`: the root of the API host, NOT under `/v1`. A client generated from this description for `https://api.widgetic.com/v1` must be given the base address `https://api.widgetic.com` for the calls of the `Public Embed` tag.
426
+
427
+ ### Examples
428
+
429
+ ```ruby
430
+ require 'time'
431
+ require 'api-sdk-rb'
432
+
433
+ api_instance = ApiSdkRb::PublicEmbedApi.new
434
+ workflow_id = '38400000-8cf0-11bd-b23e-10b96e4ef00d' # String |
435
+ version_id = '38400000-8cf0-11bd-b23e-10b96e4ef00d' # String |
436
+
437
+ begin
438
+ # Read one published version of a Workflow
439
+ result = api_instance.get_public_workflow_version(workflow_id, version_id)
440
+ p result
441
+ rescue ApiSdkRb::ApiError => e
442
+ puts "Error when calling PublicEmbedApi->get_public_workflow_version: #{e}"
443
+ end
444
+ ```
445
+
446
+ #### Using the get_public_workflow_version_with_http_info variant
447
+
448
+ This returns an Array which contains the response data, status code and headers.
449
+
450
+ > <Array(<PublicWorkflowResponse>, Integer, Hash)> get_public_workflow_version_with_http_info(workflow_id, version_id)
451
+
452
+ ```ruby
453
+ begin
454
+ # Read one published version of a Workflow
455
+ data, status_code, headers = api_instance.get_public_workflow_version_with_http_info(workflow_id, version_id)
456
+ p status_code # => 2xx
457
+ p headers # => { ... }
458
+ p data # => <PublicWorkflowResponse>
459
+ rescue ApiSdkRb::ApiError => e
460
+ puts "Error when calling PublicEmbedApi->get_public_workflow_version_with_http_info: #{e}"
461
+ end
462
+ ```
463
+
464
+ ### Parameters
465
+
466
+ | Name | Type | Description | Notes |
467
+ | ---- | ---- | ----------- | ----- |
468
+ | **workflow_id** | **String** | | |
469
+ | **version_id** | **String** | | |
470
+
471
+ ### Return type
472
+
473
+ [**PublicWorkflowResponse**](PublicWorkflowResponse.md)
474
+
475
+ ### Authorization
476
+
477
+ No authorization required
478
+
479
+ ### HTTP request headers
480
+
481
+ - **Content-Type**: Not defined
482
+ - **Accept**: application/json
483
+
484
+
485
+ ## post_public_composition_embed_status
486
+
487
+ > <PostPublicCompositionEmbedStatus200Response> post_public_composition_embed_status(post_public_composition_embed_status_request)
288
488
 
289
489
  Batch-check whether compositions are currently served for embed
290
490
 
@@ -301,28 +501,28 @@ post_public_composition_embed_status_request = ApiSdkRb::PostPublicCompositionEm
301
501
 
302
502
  begin
303
503
  # Batch-check whether compositions are currently served for embed
304
- result = api_instance.post_public_composition_embed_status_0(post_public_composition_embed_status_request)
504
+ result = api_instance.post_public_composition_embed_status(post_public_composition_embed_status_request)
305
505
  p result
306
506
  rescue ApiSdkRb::ApiError => e
307
- puts "Error when calling PublicEmbedApi->post_public_composition_embed_status_0: #{e}"
507
+ puts "Error when calling PublicEmbedApi->post_public_composition_embed_status: #{e}"
308
508
  end
309
509
  ```
310
510
 
311
- #### Using the post_public_composition_embed_status_0_with_http_info variant
511
+ #### Using the post_public_composition_embed_status_with_http_info variant
312
512
 
313
513
  This returns an Array which contains the response data, status code and headers.
314
514
 
315
- > <Array(<PostPublicCompositionEmbedStatus200Response>, Integer, Hash)> post_public_composition_embed_status_0_with_http_info(post_public_composition_embed_status_request)
515
+ > <Array(<PostPublicCompositionEmbedStatus200Response>, Integer, Hash)> post_public_composition_embed_status_with_http_info(post_public_composition_embed_status_request)
316
516
 
317
517
  ```ruby
318
518
  begin
319
519
  # Batch-check whether compositions are currently served for embed
320
- data, status_code, headers = api_instance.post_public_composition_embed_status_0_with_http_info(post_public_composition_embed_status_request)
520
+ data, status_code, headers = api_instance.post_public_composition_embed_status_with_http_info(post_public_composition_embed_status_request)
321
521
  p status_code # => 2xx
322
522
  p headers # => { ... }
323
523
  p data # => <PostPublicCompositionEmbedStatus200Response>
324
524
  rescue ApiSdkRb::ApiError => e
325
- puts "Error when calling PublicEmbedApi->post_public_composition_embed_status_0_with_http_info: #{e}"
525
+ puts "Error when calling PublicEmbedApi->post_public_composition_embed_status_with_http_info: #{e}"
326
526
  end
327
527
  ```
328
528
 
@@ -346,13 +546,79 @@ No authorization required
346
546
  - **Accept**: application/json
347
547
 
348
548
 
349
- ## upload_public_composition_adapter_file_0
549
+ ## report_public_workflow_events
550
+
551
+ > <ReportPublicWorkflowEvents200Response> report_public_workflow_events(workflow_id, public_workflow_events_request)
552
+
553
+ Report what visitors did in a Workflow, as counts
554
+
555
+ Public report of counts for a workflow, sent by the embed. No API key. Each event is one id and a number: a visitor reached a block (`n`), took a connection (`e`), or could not be moved on (`f`). Nothing else is kept: no visitor, no value a visitor typed, no address. A batch carries at most 100 events and 16 KB. The same report may carry `heights`: how tall a step settled at in the browser, which the embed code of the workflow uses to start its box at a real height (a composition, a whole number of pixels, nothing about the visitor). A report is accepted only with the `token` the workflow's own read handed out for that `versionId`, so a page that never read the workflow cannot raise its numbers. An expired token (`EVENT_TOKEN_EXPIRED`) is refused with 401: read the workflow again for a new one. Counts for ids that are not in that version, or for a workflow that is not live, are not recorded and the answer says so (`recorded: false`) with 200: the visitor's page has nothing to fix. The body is JSON, sent as `application/json` or as `text/plain` (a \"simple\" cross-origin request, which is what lets a report leave a page that is being closed). **Address.** `https://api.widgetic.com/embed/workflows/{workflowId}/events`: the root of the API host, NOT under `/v1`. A client generated from this description for `https://api.widgetic.com/v1` must be given the base address `https://api.widgetic.com` for the calls of the `Public Embed` tag.
556
+
557
+ ### Examples
558
+
559
+ ```ruby
560
+ require 'time'
561
+ require 'api-sdk-rb'
562
+
563
+ api_instance = ApiSdkRb::PublicEmbedApi.new
564
+ workflow_id = '38400000-8cf0-11bd-b23e-10b96e4ef00d' # String |
565
+ public_workflow_events_request = ApiSdkRb::PublicWorkflowEventsRequest.new({version_id: 'version_id_example', token: 'token_example'}) # PublicWorkflowEventsRequest |
566
+
567
+ begin
568
+ # Report what visitors did in a Workflow, as counts
569
+ result = api_instance.report_public_workflow_events(workflow_id, public_workflow_events_request)
570
+ p result
571
+ rescue ApiSdkRb::ApiError => e
572
+ puts "Error when calling PublicEmbedApi->report_public_workflow_events: #{e}"
573
+ end
574
+ ```
575
+
576
+ #### Using the report_public_workflow_events_with_http_info variant
577
+
578
+ This returns an Array which contains the response data, status code and headers.
579
+
580
+ > <Array(<ReportPublicWorkflowEvents200Response>, Integer, Hash)> report_public_workflow_events_with_http_info(workflow_id, public_workflow_events_request)
581
+
582
+ ```ruby
583
+ begin
584
+ # Report what visitors did in a Workflow, as counts
585
+ data, status_code, headers = api_instance.report_public_workflow_events_with_http_info(workflow_id, public_workflow_events_request)
586
+ p status_code # => 2xx
587
+ p headers # => { ... }
588
+ p data # => <ReportPublicWorkflowEvents200Response>
589
+ rescue ApiSdkRb::ApiError => e
590
+ puts "Error when calling PublicEmbedApi->report_public_workflow_events_with_http_info: #{e}"
591
+ end
592
+ ```
593
+
594
+ ### Parameters
595
+
596
+ | Name | Type | Description | Notes |
597
+ | ---- | ---- | ----------- | ----- |
598
+ | **workflow_id** | **String** | | |
599
+ | **public_workflow_events_request** | [**PublicWorkflowEventsRequest**](PublicWorkflowEventsRequest.md) | | |
600
+
601
+ ### Return type
602
+
603
+ [**ReportPublicWorkflowEvents200Response**](ReportPublicWorkflowEvents200Response.md)
604
+
605
+ ### Authorization
606
+
607
+ No authorization required
608
+
609
+ ### HTTP request headers
610
+
611
+ - **Content-Type**: application/json, text/plain
612
+ - **Accept**: application/json
613
+
614
+
615
+ ## upload_public_composition_adapter_file
350
616
 
351
- > <PublicAdapterFileResult> upload_public_composition_adapter_file_0(composition_id, ticket, body)
617
+ > <PublicAdapterFileResult> upload_public_composition_adapter_file(composition_id, ticket, body)
352
618
 
353
619
  Send the file a visitor chose through the upload adapter of a published widget
354
620
 
355
- The second of the two calls the `upload` adapter's module makes from the visitor's browser (the first, the `begin-upload` operation of `callPublicCompositionAdapter`, answers with the ticket this route takes). The module sends the file itself, as the body, with its media type as the `Content-Type`. It is not meant to be called by hand, and it takes no API key. **Address.** `https://api.widgetic.com/embed/compositions/{compositionId}/adapters/upload/files/{ticket}`: the root of the API host, NOT under `/v1`. A client generated from this description for `https://api.widgetic.com/v1` must be given the base address `https://api.widgetic.com` for the calls of the `Public Embed` tag. **The ticket.** Single-use and valid for ten minutes, given for one file: its name, its media type and its exact size are what the visitor said when the ticket was asked for, after the widget's owner's settings (the kinds of file they take, the largest size) were applied. The `Content-Type` and the `Content-Length` of this request must be those, and the body must be exactly that many bytes (400 `UPLOAD_FILE_CHANGED` otherwise). The gateway never believes the type it was told: the first bytes of the file must be a file of that type and one the owner accepts (422 otherwise). A ticket whose file was stored and is sent again is answered with the same file, so a visitor whose connection dropped after the file landed does not store it twice; a ticket whose attempt failed is spent, and the module asks for a new one. **What it stores.** The file goes to the widget owner's storage: Widgetic's, or the partner's own bucket for a widget of a customer a partner manages. It counts against the owner's storage allowance and is filed in the folder the owner chose, as a file sent by a visitor, which the owner's own file list leaves out. A full allowance, a partner's storage that cannot be used and a stopped feature are all the same 503 `UPLOAD_UNAVAILABLE` to a visitor, and the owner is told through a notice. **Who may call.** The same rule as the entry route: a permitted `Origin` header, which is the artifact origin the widget runs from or a website the owner allowed (or the owner's own platform). A request without a permitted `Origin` is 403 `ORIGIN_NOT_ALLOWED`. A composition that is not served (unpublished, or its owner's plan does not serve it) is 404, with the codes of the other public embed routes. **Limits.** 30 requests a minute for each visitor address and composition and 240 a minute for a composition (429 `RATE_LIMITED`, with a `Retry-After` header); at most 10 MB for a file, and only so many files held in memory at once on each gateway process (503 `UPLOAD_BUSY`, with a `Retry-After`). A file that does not arrive within two minutes is 408 `UPLOAD_TIMEOUT`. Every answer but a success closes the connection, so a client that is refused before it has sent the file reads the answer and stops.
621
+ The second of the two calls the `upload` adapter's module makes from the visitor's browser (the first, the `begin-upload` operation of `callPublicCompositionAdapter`, answers with the ticket this route takes). The module sends the file itself, as the body, with its media type as the `Content-Type`. It is not meant to be called by hand, and it takes no API key. **Address.** `https://api.widgetic.com/embed/compositions/{compositionId}/adapters/upload/files/{ticket}`: the root of the API host, NOT under `/v1`. A client generated from this description for `https://api.widgetic.com/v1` must be given the base address `https://api.widgetic.com` for the calls of the `Public Embed` tag. **The ticket.** Single-use and valid for ten minutes, given for one file: its name, its media type and its exact size are what the visitor said when the ticket was asked for, after the widget's owner's settings (the kinds of file they take, the largest size) were applied. The `Content-Type` and the `Content-Length` of this request must be those, and the body must be exactly that many bytes (400 `UPLOAD_FILE_CHANGED` otherwise). The gateway never believes the type it was told: the first bytes of the file must be a file of that type and one the owner accepts (422 otherwise). A ticket whose file was stored and is sent again is answered with the same file, so a visitor whose connection dropped after the file landed does not store it twice; a ticket whose attempt failed is spent, and the module asks for a new one. **The virus check.** Before anything is stored, the file is checked for viruses, wherever it would be kept (Widgetic's storage or a partner's own bucket). A file that fails the check is refused with 422 `UPLOAD_FILE_UNSAFE` and nothing is stored. When the check cannot be done, nothing is stored either, and the answer is the same neutral 503 `UPLOAD_UNAVAILABLE` as for any other cause the visitor is not told. The ticket of a refused file is spent. **What it stores.** The file goes to the widget owner's storage: Widgetic's, or the partner's own bucket for a widget of a customer a partner manages. It counts against the owner's storage allowance and is filed in the folder the owner chose, as a file sent by a visitor, which the owner's own file list leaves out. A full allowance, a partner's storage that cannot be used and a stopped feature are all the same 503 `UPLOAD_UNAVAILABLE` to a visitor, and the owner is told through a notice. **Who may call.** The same rule as the entry route: a permitted `Origin` header, which is the artifact origin the widget runs from or any website when the owner has not restricted the allowed websites (when the owner has, one of the websites the owner listed, Widgetic's own sites, the visitor's own machine or the owner's own platform). A request without a permitted `Origin` is 403 `ORIGIN_NOT_ALLOWED`. A composition that is not served (unpublished, or its owner's plan does not serve it) is 404, with the codes of the other public embed routes. **Limits.** 30 requests a minute for each visitor address and composition and 240 a minute for a composition (429 `RATE_LIMITED`, with a `Retry-After` header); at most 10 MB for a file, and only so many files held in memory at once on each gateway process (503 `UPLOAD_BUSY`, with a `Retry-After`). A file that does not arrive within two minutes is 408 `UPLOAD_TIMEOUT`. Every answer but a success closes the connection, so a client that is refused before it has sent the file reads the answer and stops.
356
622
 
357
623
  ### Examples
358
624
 
@@ -367,28 +633,28 @@ body = File.new('/path/to/some/file') # File |
367
633
 
368
634
  begin
369
635
  # Send the file a visitor chose through the upload adapter of a published widget
370
- result = api_instance.upload_public_composition_adapter_file_0(composition_id, ticket, body)
636
+ result = api_instance.upload_public_composition_adapter_file(composition_id, ticket, body)
371
637
  p result
372
638
  rescue ApiSdkRb::ApiError => e
373
- puts "Error when calling PublicEmbedApi->upload_public_composition_adapter_file_0: #{e}"
639
+ puts "Error when calling PublicEmbedApi->upload_public_composition_adapter_file: #{e}"
374
640
  end
375
641
  ```
376
642
 
377
- #### Using the upload_public_composition_adapter_file_0_with_http_info variant
643
+ #### Using the upload_public_composition_adapter_file_with_http_info variant
378
644
 
379
645
  This returns an Array which contains the response data, status code and headers.
380
646
 
381
- > <Array(<PublicAdapterFileResult>, Integer, Hash)> upload_public_composition_adapter_file_0_with_http_info(composition_id, ticket, body)
647
+ > <Array(<PublicAdapterFileResult>, Integer, Hash)> upload_public_composition_adapter_file_with_http_info(composition_id, ticket, body)
382
648
 
383
649
  ```ruby
384
650
  begin
385
651
  # Send the file a visitor chose through the upload adapter of a published widget
386
- data, status_code, headers = api_instance.upload_public_composition_adapter_file_0_with_http_info(composition_id, ticket, body)
652
+ data, status_code, headers = api_instance.upload_public_composition_adapter_file_with_http_info(composition_id, ticket, body)
387
653
  p status_code # => 2xx
388
654
  p headers # => { ... }
389
655
  p data # => <PublicAdapterFileResult>
390
656
  rescue ApiSdkRb::ApiError => e
391
- puts "Error when calling PublicEmbedApi->upload_public_composition_adapter_file_0_with_http_info: #{e}"
657
+ puts "Error when calling PublicEmbedApi->upload_public_composition_adapter_file_with_http_info: #{e}"
392
658
  end
393
659
  ```
394
660