@burgan-tech/morph-touch-runtime 0.0.2

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 (244) hide show
  1. package/LICENSE +21 -0
  2. package/burgan-tech-morph-touch-runtime-0.0.2.tgz +0 -0
  3. package/package.json +21 -0
  4. package/touch/Extensions/.gitkeep +0 -0
  5. package/touch/Functions/.gitkeep +0 -0
  6. package/touch/Functions/check-livekit-room-access.1.0.0.json +28 -0
  7. package/touch/Functions/check-livekit-room-access.http +44 -0
  8. package/touch/Functions/get-absence-entry.1.0.0.json +28 -0
  9. package/touch/Functions/get-advisor-stats.1.0.0.json +27 -0
  10. package/touch/Functions/get-available-slots.1.0.0.json +30 -0
  11. package/touch/Functions/get-available-slots.http +29 -0
  12. package/touch/Functions/get-chat-rooms.1.0.0.json +28 -0
  13. package/touch/Functions/get-chat-rooms.http +62 -0
  14. package/touch/Functions/get-customer-info.1.0.0.json +27 -0
  15. package/touch/Functions/get-matrix-sync.1.0.0.json +28 -0
  16. package/touch/Functions/get-rezervations.1.0.0.json +26 -0
  17. package/touch/Functions/get-rezervations.http +59 -0
  18. package/touch/Functions/get-room-messages.1.0.0.json +29 -0
  19. package/touch/Functions/get-room-messages.http +45 -0
  20. package/touch/Functions/rezervation-transfer.http +118 -0
  21. package/touch/Functions/send-room-message.1.0.0.json +29 -0
  22. package/touch/Functions/src/CheckLivekitRoomAccessMapping.csx +238 -0
  23. package/touch/Functions/src/GetAbsenceEntryMapping.csx +225 -0
  24. package/touch/Functions/src/GetAdvisorStatsMapping.csx +190 -0
  25. package/touch/Functions/src/GetAvailableSlotsMapping.csx +468 -0
  26. package/touch/Functions/src/GetChatRoomsMapping.csx +202 -0
  27. package/touch/Functions/src/GetCustomerInfoMapping.csx +140 -0
  28. package/touch/Functions/src/GetMatrixSyncMapping.csx +197 -0
  29. package/touch/Functions/src/GetRezervationsMapping.csx +162 -0
  30. package/touch/Functions/src/GetRoomMessagesMapping.csx +165 -0
  31. package/touch/Functions/src/SendCancelNotificationMapping.csx +63 -0
  32. package/touch/Functions/src/SendRoomMessageMapping.csx +131 -0
  33. package/touch/Schemas/.gitkeep +0 -0
  34. package/touch/Schemas/absence-entry.1.0.0.json +232 -0
  35. package/touch/Schemas/advisor-chat-rooms.1.0.0.json +62 -0
  36. package/touch/Schemas/chat-room.1.0.0.json +110 -0
  37. package/touch/Schemas/notification-sender.1.0.0.json +159 -0
  38. package/touch/Schemas/portfolio-manager.1.0.0.json +63 -0
  39. package/touch/Schemas/rezervation.1.0.0.json +102 -0
  40. package/touch/Tasks/.gitkeep +0 -0
  41. package/touch/Tasks/cancel-absence-entry-for-rezervation.1.0.0.json +21 -0
  42. package/touch/Tasks/check-already-completed-chat-room.1.0.0.json +24 -0
  43. package/touch/Tasks/check-duplicate-portfolio-manager.1.0.0.json +23 -0
  44. package/touch/Tasks/check-duplicate-rezervation.1.0.0.json +23 -0
  45. package/touch/Tasks/check-existing-permanent-chat-room.1.0.0.json +21 -0
  46. package/touch/Tasks/check-randevu-time.1.0.0.json +17 -0
  47. package/touch/Tasks/create-permanent-chat-room.1.0.0.json +28 -0
  48. package/touch/Tasks/determine-transfer-type.1.0.0.json +16 -0
  49. package/touch/Tasks/enrich-rezervations-for-transfer.1.0.0.json +23 -0
  50. package/touch/Tasks/execute-permanent-chatroom-update.1.0.0.json +21 -0
  51. package/touch/Tasks/execute-rez-chatroom-transfer.1.0.0.json +21 -0
  52. package/touch/Tasks/execute-rezervation-transfer.1.0.0.json +19 -0
  53. package/touch/Tasks/fetch-absence-entries-for-transfer.1.0.0.json +23 -0
  54. package/touch/Tasks/fetch-advisors-for-transfer.1.0.0.json +23 -0
  55. package/touch/Tasks/fetch-permanent-chatrooms-for-transfer.1.0.0.json +23 -0
  56. package/touch/Tasks/fetch-rez-chatrooms-for-transfer.1.0.0.json +23 -0
  57. package/touch/Tasks/fetch-rezervations-for-transfer.1.0.0.json +22 -0
  58. package/touch/Tasks/get-absence-entry-task.1.0.0.json +23 -0
  59. package/touch/Tasks/get-available-slots-http.1.0.0.json +27 -0
  60. package/touch/Tasks/get-available-slots.1.0.0.json +24 -0
  61. package/touch/Tasks/get-chat-room-data-for-rezervation.1.0.0.json +23 -0
  62. package/touch/Tasks/get-chat-token.1.0.0.json +27 -0
  63. package/touch/Tasks/get-matrix-room-messages.1.0.0.json +25 -0
  64. package/touch/Tasks/get-matrix-sync.1.0.0.json +25 -0
  65. package/touch/Tasks/get-rezervation-data-task.1.0.0.json +22 -0
  66. package/touch/Tasks/get-rezervation-state-task.1.0.0.json +22 -0
  67. package/touch/Tasks/get-rezervations-task.1.0.0.json +21 -0
  68. package/touch/Tasks/get-user-info-for-rezervation.1.0.0.json +24 -0
  69. package/touch/Tasks/get-video-call-url.1.0.0.json +17 -0
  70. package/touch/Tasks/invite-user-to-rezervation-room.1.0.0.json +27 -0
  71. package/touch/Tasks/join-chat-room-for-rezervation.1.0.0.json +28 -0
  72. package/touch/Tasks/join-matrix-room.1.0.0.json +27 -0
  73. package/touch/Tasks/join-user-to-room.1.0.0.json +27 -0
  74. package/touch/Tasks/merge-invited-user.1.0.0.json +17 -0
  75. package/touch/Tasks/merge-rezervation-update.1.0.0.json +16 -0
  76. package/touch/Tasks/merge-target-advisor-for-transfer.1.0.0.json +17 -0
  77. package/touch/Tasks/merge-update-body-for-randevu-update.1.0.0.json +16 -0
  78. package/touch/Tasks/merge-video-call-urls.1.0.0.json +17 -0
  79. package/touch/Tasks/query-chat-room-instances.1.0.0.json +23 -0
  80. package/touch/Tasks/remove-member-from-room.1.0.0.json +28 -0
  81. package/touch/Tasks/send-matrix-room-message.1.0.0.json +26 -0
  82. package/touch/Tasks/send-push-notification.1.0.0.json +26 -0
  83. package/touch/Tasks/send-sms-notification.1.0.0.json +26 -0
  84. package/touch/Tasks/set-chat-room-status-active.1.0.0.json +16 -0
  85. package/touch/Tasks/set-chat-room-status-deactive.1.0.0.json +16 -0
  86. package/touch/Tasks/set-previous-advisor.1.0.0.json +16 -0
  87. package/touch/Tasks/set-user-from-headers-for-rezervation.1.0.0.json +17 -0
  88. package/touch/Tasks/start-absence-entry-for-rezervation.1.0.0.json +21 -0
  89. package/touch/Tasks/start-chat-room-for-rezervation.1.0.0.json +20 -0
  90. package/touch/Tasks/start-notification-sender.1.0.0.json +20 -0
  91. package/touch/Tasks/start-permanent-chat-room.1.0.0.json +21 -0
  92. package/touch/Tasks/start-transfer-from-absence-entry.1.0.0.json +19 -0
  93. package/touch/Tasks/start-video-call.1.0.0.json +22 -0
  94. package/touch/Tasks/trigger-chat-room-deactivate.1.0.0.json +21 -0
  95. package/touch/Tasks/trigger-chat-room-transfer.1.0.0.json +21 -0
  96. package/touch/Tasks/trigger-chat-room-update.1.0.0.json +20 -0
  97. package/touch/Tasks/trigger-rezervation-add-invited-participant.1.0.0.json +20 -0
  98. package/touch/Tasks/trigger-rezervation-apply-update.1.0.0.json +20 -0
  99. package/touch/Tasks/trigger-rezervation-to-in-meet.1.0.0.json +20 -0
  100. package/touch/Tasks/trigger-rezervation-video-call-update.1.0.0.json +21 -0
  101. package/touch/Tasks/validate-date-for-rezervation.1.0.0.json +18 -0
  102. package/touch/Tasks/validate-slot-for-rezervation.1.0.0.json +24 -0
  103. package/touch/Tasks/validate-transfer-availability.1.0.0.json +23 -0
  104. package/touch/Views/.gitkeep +0 -0
  105. package/touch/Workflows/.gitkeep +0 -0
  106. package/touch/Workflows/absence-entry.http +458 -0
  107. package/touch/Workflows/absence-entry.json +179 -0
  108. package/touch/Workflows/add-participant-to-rezervation.http +47 -0
  109. package/touch/Workflows/add-participant-to-rezervation.json +340 -0
  110. package/touch/Workflows/chat-room.http +207 -0
  111. package/touch/Workflows/chat-room.json +452 -0
  112. package/touch/Workflows/investment-advisor.json +367 -0
  113. package/touch/Workflows/notification-sender.http +299 -0
  114. package/touch/Workflows/notification-sender.json +262 -0
  115. package/touch/Workflows/portfolio-manager.json +367 -0
  116. package/touch/Workflows/randevu-update.http +87 -0
  117. package/touch/Workflows/rezervation-start.json +467 -0
  118. package/touch/Workflows/rezervation-transfer.json +512 -0
  119. package/touch/Workflows/rezervation-update.http +87 -0
  120. package/touch/Workflows/rezervation-update.json +485 -0
  121. package/touch/Workflows/rezervation.http +214 -0
  122. package/touch/Workflows/rezervation.json +726 -0
  123. package/touch/Workflows/src/AllChatRoomsSuccessRule.csx +65 -0
  124. package/touch/Workflows/src/AlwaysTrueRule.csx +13 -0
  125. package/touch/Workflows/src/AnyChatRoomFailedRule.csx +64 -0
  126. package/touch/Workflows/src/AutoProcessRule.csx +38 -0
  127. package/touch/Workflows/src/BuildRezChatRoomPlanMapping.csx +160 -0
  128. package/touch/Workflows/src/CanStartRezervationTimerMapping.csx +48 -0
  129. package/touch/Workflows/src/CanStartTransferMapping.csx +14 -0
  130. package/touch/Workflows/src/CancelAbsenceEntryForRezervationMapping.csx +48 -0
  131. package/touch/Workflows/src/CancelAbsenceForRandevuUpdateMapping.csx +62 -0
  132. package/touch/Workflows/src/ChatRoomCreatedFailedRule.csx +54 -0
  133. package/touch/Workflows/src/ChatRoomCreatedSuccessRule.csx +54 -0
  134. package/touch/Workflows/src/ChatRoomRemoveMapping.csx +104 -0
  135. package/touch/Workflows/src/ChatRoomTransferInviteMapping.csx +109 -0
  136. package/touch/Workflows/src/ChatRoomTransferRemoveMapping.csx +71 -0
  137. package/touch/Workflows/src/ChatRoomUpdateMapping.csx +107 -0
  138. package/touch/Workflows/src/CheckAlreadyCompletedChatRoomMapping.csx +100 -0
  139. package/touch/Workflows/src/CheckDuplicatePortfolioManagerMapping.csx +119 -0
  140. package/touch/Workflows/src/CheckDuplicateRezervationMapping.csx +150 -0
  141. package/touch/Workflows/src/CheckExistingPermanentChatRoomMapping.csx +169 -0
  142. package/touch/Workflows/src/CheckRandevuTimeMapping.csx +67 -0
  143. package/touch/Workflows/src/CheckRezervationStateActiveOrInMeetRule.csx +14 -0
  144. package/touch/Workflows/src/CreateAbsenceEntryForRezervationMapping.csx +111 -0
  145. package/touch/Workflows/src/CreateAbsenceForRandevuUpdateMapping.csx +108 -0
  146. package/touch/Workflows/src/CreateChatRoomForRezervationMapping.csx +122 -0
  147. package/touch/Workflows/src/CreatePermanentChatRoomMapping.csx +140 -0
  148. package/touch/Workflows/src/CustomerControlToEndRule.csx +14 -0
  149. package/touch/Workflows/src/DetermineTransferTypeMapping.csx +92 -0
  150. package/touch/Workflows/src/EnrichRezervationsForTransferMapping.csx +495 -0
  151. package/touch/Workflows/src/ExecutePermanentChatRoomUpdateMapping.csx +124 -0
  152. package/touch/Workflows/src/ExecuteRezChatRoomTransferMapping.csx +95 -0
  153. package/touch/Workflows/src/ExecuteTransferMapping.csx +152 -0
  154. package/touch/Workflows/src/FetchAbsenceEntriesForTransferMapping.csx +116 -0
  155. package/touch/Workflows/src/FetchAdvisorsForTransferMapping.csx +145 -0
  156. package/touch/Workflows/src/FetchPermanentChatRoomsMapping.csx +128 -0
  157. package/touch/Workflows/src/FetchRezervationsForTransferMapping.csx +124 -0
  158. package/touch/Workflows/src/GetChatRoomDataForRezervationMapping.csx +100 -0
  159. package/touch/Workflows/src/GetChatTokenMapping.csx +85 -0
  160. package/touch/Workflows/src/GetRezervationDataForAddParticipantMapping.csx +105 -0
  161. package/touch/Workflows/src/GetRezervationDataForRandevuUpdateMapping.csx +110 -0
  162. package/touch/Workflows/src/GetRezervationDataMapping.csx +111 -0
  163. package/touch/Workflows/src/GetRezervationStateForRandevuUpdateMapping.csx +80 -0
  164. package/touch/Workflows/src/GetRezervationStateMapping.csx +92 -0
  165. package/touch/Workflows/src/GetUserInfoForRezervationMapping.csx +63 -0
  166. package/touch/Workflows/src/GetVideoCallUrlMapping.csx +62 -0
  167. package/touch/Workflows/src/HasChangedAdvisorRule.csx +28 -0
  168. package/touch/Workflows/src/HasChatIntegrationRule.csx +41 -0
  169. package/touch/Workflows/src/HasExistingPermanentRoomRule.csx +28 -0
  170. package/touch/Workflows/src/InviteAdvisorForRandevuUpdateMapping.csx +86 -0
  171. package/touch/Workflows/src/InviteNewAdvisorToRezervationRoomMapping.csx +78 -0
  172. package/touch/Workflows/src/InviteNewParticipantToRandevuRoomMapping.csx +88 -0
  173. package/touch/Workflows/src/InvitedUserMergeMapping.csx +77 -0
  174. package/touch/Workflows/src/InvitedUserNotAllowedRule.csx +71 -0
  175. package/touch/Workflows/src/InvitedUserNotInMeetRule.csx +19 -0
  176. package/touch/Workflows/src/IsNotfSentRule.csx +36 -0
  177. package/touch/Workflows/src/JoinChatRoomForAddParticipantMapping.csx +118 -0
  178. package/touch/Workflows/src/JoinChatRoomForRandevuStartMapping.csx +119 -0
  179. package/touch/Workflows/src/JoinChatRoomForRezervationMapping.csx +118 -0
  180. package/touch/Workflows/src/JoinMatrixRoomMapping.csx +100 -0
  181. package/touch/Workflows/src/JoinUserToRoomMapping.csx +118 -0
  182. package/touch/Workflows/src/LoginForAddParticipantChatMapping.csx +102 -0
  183. package/touch/Workflows/src/LoginForRandevuStartChatMapping.csx +96 -0
  184. package/touch/Workflows/src/MergeRezervationUpdateMapping.csx +82 -0
  185. package/touch/Workflows/src/MergeTargetAdvisorForTransferMapping.csx +79 -0
  186. package/touch/Workflows/src/MergeUpdateBodyForRandevuUpdateMapping.csx +91 -0
  187. package/touch/Workflows/src/NoExistingPermanentRoomRule.csx +23 -0
  188. package/touch/Workflows/src/NotificationCompleteAlwaysRule.csx +14 -0
  189. package/touch/Workflows/src/NotificationCompleteFromPendingRule.csx +41 -0
  190. package/touch/Workflows/src/NotificationCompleteFromSmsRule.csx +36 -0
  191. package/touch/Workflows/src/NotificationPushFromPendingRule.csx +42 -0
  192. package/touch/Workflows/src/NotificationPushFromSmsRule.csx +36 -0
  193. package/touch/Workflows/src/NotificationSmsPendingRule.csx +32 -0
  194. package/touch/Workflows/src/PermanentDoneRule.csx +44 -0
  195. package/touch/Workflows/src/PermanentProcessNextRule.csx +44 -0
  196. package/touch/Workflows/src/RezChatRoomProcessNextRule.csx +44 -0
  197. package/touch/Workflows/src/RezChatRoomsDoneRule.csx +44 -0
  198. package/touch/Workflows/src/SendPushNotificationMapping.csx +146 -0
  199. package/touch/Workflows/src/SendSmsNotificationMapping.csx +138 -0
  200. package/touch/Workflows/src/SetChatRoomStatusActiveMapping.csx +22 -0
  201. package/touch/Workflows/src/SetChatRoomStatusDeactiveMapping.csx +22 -0
  202. package/touch/Workflows/src/SetPreviousAdvisorMapping.csx +28 -0
  203. package/touch/Workflows/src/SetUserFromHeadersForRezervationMapping.csx +24 -0
  204. package/touch/Workflows/src/SlotAvailableRule.csx +33 -0
  205. package/touch/Workflows/src/SlotUnavailableRule.csx +33 -0
  206. package/touch/Workflows/src/StartChatRoomForRezervationMapping.csx +100 -0
  207. package/touch/Workflows/src/StartGetChatTokenForRezervationMapping.csx +71 -0
  208. package/touch/Workflows/src/StartNotificationForAdvisorMapping.csx +117 -0
  209. package/touch/Workflows/src/StartNotificationForRezervationFromUserInfoMapping.csx +128 -0
  210. package/touch/Workflows/src/StartNotificationForUserMapping.csx +117 -0
  211. package/touch/Workflows/src/StartPermanentChatRoomMapping.csx +92 -0
  212. package/touch/Workflows/src/StartTransferFromAbsenceEntryMapping.csx +94 -0
  213. package/touch/Workflows/src/StartVideoCallCustomerSubFlowMapping.csx +37 -0
  214. package/touch/Workflows/src/StartVideoCallForInvitedParticipantMapping.csx +54 -0
  215. package/touch/Workflows/src/StartVideoCallForRandevuStartMapping.csx +70 -0
  216. package/touch/Workflows/src/StartVideoCallStaffSubFlowMapping.csx +37 -0
  217. package/touch/Workflows/src/StateActiveForUpdateRule.csx +14 -0
  218. package/touch/Workflows/src/StateActiveRule.csx +14 -0
  219. package/touch/Workflows/src/StateInMeetRule.csx +14 -0
  220. package/touch/Workflows/src/StateNotActiveForUpdateRule.csx +14 -0
  221. package/touch/Workflows/src/StateNotActiveOrInMeetRule.csx +14 -0
  222. package/touch/Workflows/src/StatusCustomerEnterRule.csx +25 -0
  223. package/touch/Workflows/src/StatusStaffEnterRule.csx +25 -0
  224. package/touch/Workflows/src/SyncWorkingHoursRule.csx +46 -0
  225. package/touch/Workflows/src/TokenSuccessRule.csx +24 -0
  226. package/touch/Workflows/src/TransferAllDoneRule.csx +50 -0
  227. package/touch/Workflows/src/TransferHasInvalidRule.csx +34 -0
  228. package/touch/Workflows/src/TransferProcessNextRule.csx +50 -0
  229. package/touch/Workflows/src/TriggerChatRoomDeactivateMapping.csx +77 -0
  230. package/touch/Workflows/src/TriggerChatRoomTransferMapping.csx +93 -0
  231. package/touch/Workflows/src/TriggerChatRoomUpdateMapping.csx +99 -0
  232. package/touch/Workflows/src/TriggerRezervationAddInvitedParticipantMapping.csx +77 -0
  233. package/touch/Workflows/src/TriggerRezervationApplyUpdateMapping.csx +66 -0
  234. package/touch/Workflows/src/TriggerRezervationToInMeetMapping.csx +69 -0
  235. package/touch/Workflows/src/TriggerRezervationVideoCallUpdateMapping.csx +67 -0
  236. package/touch/Workflows/src/ValidateDateForRezervationMapping.csx +60 -0
  237. package/touch/Workflows/src/ValidateSlotForRandevuUpdateMapping.csx +211 -0
  238. package/touch/Workflows/src/ValidateSlotForRezervationMapping.csx +246 -0
  239. package/touch/Workflows/src/ValidateTransferMapping.csx +243 -0
  240. package/touch/Workflows/src/VideoCallUrlUpdateMergeMapping.csx +141 -0
  241. package/touch/Workflows/start-chat.json +217 -0
  242. package/touch/Workflows/start-video-call.http +93 -0
  243. package/touch/Workflows/start-video-call.json +206 -0
  244. package/vnext.config.json +58 -0
@@ -0,0 +1,458 @@
1
+ ###############################################################################
2
+ # Absence Entry Workflow - HTTP Test File
3
+ #
4
+ # Simplified workflow: start -> complete (update/cancel supported)
5
+ #
6
+ # States: complete (normal), cancelled (finish)
7
+ # Transitions:
8
+ # - start -> complete (direct)
9
+ # - update (complete -> complete) self-loop
10
+ # - cancel (complete -> cancelled) global cancel
11
+ #
12
+ # Key Conventions:
13
+ # - personal-leave: personal-leave-{advisorId}-{startDateTime}-{endDateTime}
14
+ # - public-holiday: public-holiday-{date}
15
+ # - working-hours-change (advisor): working-hour-{advisorId}
16
+ # - working-hours-change (company): working-hour
17
+ #
18
+ # Prerequisites:
19
+ # 1. vNext Runtime running on localhost:4201
20
+ ###############################################################################
21
+
22
+ @baseUrl = http://localhost:4201
23
+ @apiVersion = 1
24
+ @domain = touch
25
+ @workflow = absence-entry
26
+
27
+ ###############################################################################
28
+ # #
29
+ # SCENARIO 1: PERSONAL LEAVE #
30
+ # #
31
+ ###############################################################################
32
+
33
+ ### Start Personal Leave
34
+ # @name startPersonalLeave
35
+ POST {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/start?sync=true
36
+ Content-Type: application/json
37
+ Accept-Language: tr-TR
38
+ X-Request-Id: {{$guid}}
39
+
40
+ {
41
+ "key": "personal-leave-pm001-2026-01-28T14:00:00-2026-01-28T16:30:00",
42
+ "tags": [
43
+ "personal-leave"
44
+ ],
45
+ "attributes": {
46
+ "advisor": "touch.portfolio-manager.pm-001",
47
+ "absenceType": "personal-leave",
48
+ "startDateTime": "2026-01-28T14:00:00",
49
+ "endDateTime": "2026-01-28T16:30:00",
50
+ "title": "Müşteri Toplantısı"
51
+ }
52
+ }
53
+
54
+ ### Get Personal Leave Instance
55
+ # @name getPersonalLeave
56
+ GET {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/{{startPersonalLeave.response.body.id}}
57
+ Accept: application/json
58
+ Accept-Language: tr-TR
59
+ X-Request-Id: {{$guid}}
60
+
61
+ ### Update Personal Leave (complete -> complete)
62
+ # @name updatePersonalLeave
63
+ PATCH {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/{{startPersonalLeave.response.body.id}}/transitions/update?sync=true
64
+ Content-Type: application/json
65
+ Accept-Language: tr-TR
66
+ X-Request-Id: {{$guid}}
67
+
68
+ {
69
+ "attributes": {
70
+ "startDateTime": "2026-01-28T15:00:00",
71
+ "endDateTime": "2026-01-28T17:00:00",
72
+ "title": "Müşteri Toplantısı (Güncellendi)"
73
+ }
74
+ }
75
+
76
+ ### Cancel Personal Leave (complete -> cancelled)
77
+ # @name cancelPersonalLeave
78
+ PATCH {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/{{startPersonalLeave.response.body.id}}/transitions/cancel?sync=true
79
+ Content-Type: application/json
80
+ Accept-Language: tr-TR
81
+ X-Request-Id: {{$guid}}
82
+
83
+ {
84
+ "attributes": {}
85
+ }
86
+
87
+ ###############################################################################
88
+ # #
89
+ # SCENARIO 2: PUBLIC HOLIDAY (Full Day) #
90
+ # #
91
+ ###############################################################################
92
+
93
+ ### Start Full Day Public Holiday
94
+ # @name startPublicHolidayFullDay
95
+ POST {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/start?sync=true
96
+ Content-Type: application/json
97
+ Accept-Language: tr-TR
98
+ X-Request-Id: {{$guid}}
99
+
100
+ {
101
+ "key": "public-holiday-2026-04-23",
102
+ "tags": [
103
+ "public-holiday"
104
+ ],
105
+ "attributes": {
106
+ "absenceType": "public-holiday",
107
+ "startDateTime": "2026-04-23T00:00:00",
108
+ "endDateTime": "2026-04-23T23:59:59",
109
+ "title": "23 Nisan Ulusal Egemenlik ve Çocuk Bayramı"
110
+ }
111
+ }
112
+
113
+ ### Update Full Day Public Holiday (complete -> complete)
114
+ # @name updatePublicHolidayFullDay
115
+ PATCH {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/{{startPublicHolidayFullDay.response.body.id}}/transitions/update?sync=true
116
+ Content-Type: application/json
117
+ Accept-Language: tr-TR
118
+ X-Request-Id: {{$guid}}
119
+
120
+ {
121
+ "attributes": {
122
+ "startDateTime": "2026-04-23T00:00:00",
123
+ "endDateTime": "2026-04-23T23:59:59",
124
+ "title": "23 Nisan Ulusal Egemenlik ve Çocuk Bayramı (Güncellendi)"
125
+ }
126
+ }
127
+
128
+ ### Cancel Full Day Public Holiday (complete -> cancelled)
129
+ # @name cancelPublicHolidayFullDay
130
+ PATCH {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/{{startPublicHolidayFullDay.response.body.id}}/transitions/cancel?sync=true
131
+ Content-Type: application/json
132
+ Accept-Language: tr-TR
133
+ X-Request-Id: {{$guid}}
134
+
135
+ {
136
+ "attributes": {}
137
+ }
138
+
139
+ ###############################################################################
140
+ # #
141
+ # SCENARIO 3: PUBLIC HOLIDAY (Half Day) #
142
+ # #
143
+ ###############################################################################
144
+
145
+ ### Start Half Day Public Holiday (morning off, afternoon available)
146
+ # @name startPublicHolidayHalfDay
147
+ POST {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/start?sync=true
148
+ Content-Type: application/json
149
+ Accept-Language: tr-TR
150
+ X-Request-Id: {{$guid}}
151
+
152
+ {
153
+ "key": "public-holiday-2026-04-24",
154
+ "tags": [
155
+ "public-holiday"
156
+ ],
157
+ "attributes": {
158
+ "absenceType": "public-holiday",
159
+ "startDateTime": "2026-04-24T00:00:00",
160
+ "endDateTime": "2026-04-24T12:59:59",
161
+ "title": "23 Nisan Yarım Gün (Öğleden Sonra Açık)"
162
+ }
163
+ }
164
+
165
+ ### Update Half Day Public Holiday (complete -> complete)
166
+ # @name updatePublicHolidayHalfDay
167
+ PATCH {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/{{startPublicHolidayHalfDay.response.body.id}}/transitions/update?sync=true
168
+ Content-Type: application/json
169
+ Accept-Language: tr-TR
170
+ X-Request-Id: {{$guid}}
171
+
172
+ {
173
+ "attributes": {
174
+ "startDateTime": "2026-04-24T00:00:00",
175
+ "endDateTime": "2026-04-24T14:59:59",
176
+ "title": "23 Nisan Yarım Gün - Saat Güncellendi (Öğleden Sonra 15:00'den Açık)"
177
+ }
178
+ }
179
+
180
+ ### Cancel Half Day Public Holiday (complete -> cancelled)
181
+ # @name cancelPublicHolidayHalfDay
182
+ PATCH {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/{{startPublicHolidayHalfDay.response.body.id}}/transitions/cancel?sync=true
183
+ Content-Type: application/json
184
+ Accept-Language: tr-TR
185
+ X-Request-Id: {{$guid}}
186
+
187
+ {
188
+ "attributes": {}
189
+ }
190
+
191
+ ###############################################################################
192
+ # #
193
+ # SCENARIO 4: WORKING HOURS - COMPANY WIDE #
194
+ # #
195
+ ###############################################################################
196
+
197
+ ### Start Company Working Hours (first time - creates instance)
198
+ # @name startCompanyWorkingHours
199
+ POST {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/start?sync=true
200
+ Content-Type: application/json
201
+ Accept-Language: tr-TR
202
+ X-Request-Id: {{$guid}}
203
+
204
+ {
205
+ "key": "working-hour",
206
+ "tags": [
207
+ "working-hours-change",
208
+ "company"
209
+ ],
210
+ "attributes": {
211
+ "absenceType": "working-hours-change",
212
+ "title": "Şirket Çalışma Saatleri",
213
+ "customWorkingHours": {
214
+ "monday": [
215
+ {"start": "09:00", "end": "12:00"},
216
+ {"start": "13:30", "end": "18:00"}
217
+ ],
218
+ "tuesday": [
219
+ {"start": "09:00", "end": "12:00"},
220
+ {"start": "13:30", "end": "18:00"}
221
+ ],
222
+ "wednesday": [
223
+ {"start": "09:00", "end": "12:00"},
224
+ {"start": "13:30", "end": "18:00"}
225
+ ],
226
+ "thursday": [
227
+ {"start": "09:00", "end": "12:00"},
228
+ {"start": "13:30", "end": "18:00"}
229
+ ],
230
+ "friday": [
231
+ {"start": "09:00", "end": "12:00"},
232
+ {"start": "13:30", "end": "17:00"}
233
+ ],
234
+ "saturday": [],
235
+ "sunday": []
236
+ }
237
+ }
238
+ }
239
+
240
+ ### Update Company Working Hours (subsequent changes update existing instance)
241
+ # @name updateCompanyWorkingHours
242
+ PATCH {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/{{startCompanyWorkingHours.response.body.id}}/transitions/update?sync=true
243
+ Content-Type: application/json
244
+ Accept-Language: tr-TR
245
+ X-Request-Id: {{$guid}}
246
+
247
+ {
248
+ "attributes": {
249
+ "customWorkingHours": {
250
+ "monday": [
251
+ {"start": "08:30", "end": "12:00"},
252
+ {"start": "13:00", "end": "17:30"}
253
+ ],
254
+ "tuesday": [
255
+ {"start": "08:30", "end": "12:00"},
256
+ {"start": "13:00", "end": "17:30"}
257
+ ],
258
+ "wednesday": [
259
+ {"start": "08:30", "end": "12:00"},
260
+ {"start": "13:00", "end": "17:30"}
261
+ ],
262
+ "thursday": [
263
+ {"start": "08:30", "end": "12:00"},
264
+ {"start": "13:00", "end": "17:30"}
265
+ ],
266
+ "friday": [
267
+ {"start": "08:30", "end": "12:00"},
268
+ {"start": "13:00", "end": "16:30"}
269
+ ],
270
+ "saturday": [],
271
+ "sunday": []
272
+ }
273
+ }
274
+ }
275
+
276
+ ### Get Company Working Hours Instance
277
+ # @name getCompanyWorkingHours
278
+ GET {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/{{startCompanyWorkingHours.response.body.id}}
279
+ Accept: application/json
280
+ Accept-Language: tr-TR
281
+ X-Request-Id: {{$guid}}
282
+
283
+ ###############################################################################
284
+ # #
285
+ # SCENARIO 5: WORKING HOURS - ADVISOR SPECIFIC #
286
+ # #
287
+ ###############################################################################
288
+
289
+ ### Start Advisor Working Hours (first time - creates instance)
290
+ # @name startAdvisorWorkingHours
291
+ POST {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/start?sync=true
292
+ Content-Type: application/json
293
+ Accept-Language: tr-TR
294
+ X-Request-Id: {{$guid}}
295
+
296
+ {
297
+ "key": "working-hour-touch.portfolio-manager.pm-002",
298
+ "tags": [
299
+ "working-hours-change",
300
+ "advisor"
301
+ ],
302
+ "attributes": {
303
+ "advisor": "touch.portfolio-manager.pm-002",
304
+ "absenceType": "working-hours-change",
305
+ "title": "PM-002 Özel Çalışma Saatleri",
306
+ "customWorkingHours": {
307
+ "monday": [
308
+ {"start": "10:00", "end": "12:00"},
309
+ {"start": "13:00", "end": "19:00"}
310
+ ],
311
+ "tuesday": [
312
+ {"start": "10:00", "end": "12:00"},
313
+ {"start": "13:00", "end": "19:00"}
314
+ ],
315
+ "wednesday": [
316
+ {"start": "10:00", "end": "12:00"},
317
+ {"start": "13:00", "end": "19:00"}
318
+ ],
319
+ "thursday": [
320
+ {"start": "10:00", "end": "12:00"},
321
+ {"start": "13:00", "end": "19:00"}
322
+ ],
323
+ "friday": [
324
+ {"start": "10:00", "end": "12:00"},
325
+ {"start": "13:00", "end": "17:00"}
326
+ ],
327
+ "saturday": [],
328
+ "sunday": []
329
+ }
330
+ }
331
+ }
332
+
333
+ ### Update Advisor Working Hours (subsequent changes update existing instance)
334
+ # @name updateAdvisorWorkingHours
335
+ PATCH {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/{{startAdvisorWorkingHours.response.body.id}}/transitions/update?sync=true
336
+ Content-Type: application/json
337
+ Accept-Language: tr-TR
338
+ X-Request-Id: {{$guid}}
339
+
340
+ {
341
+ "attributes": {
342
+ "customWorkingHours": {
343
+ "monday": [
344
+ {"start": "08:00", "end": "12:00"},
345
+ {"start": "13:00", "end": "17:00"}
346
+ ],
347
+ "tuesday": [
348
+ {"start": "08:00", "end": "12:00"},
349
+ {"start": "13:00", "end": "17:00"}
350
+ ],
351
+ "wednesday": [
352
+ {"start": "08:00", "end": "12:00"},
353
+ {"start": "13:00", "end": "17:00"}
354
+ ],
355
+ "thursday": [
356
+ {"start": "08:00", "end": "12:00"},
357
+ {"start": "13:00", "end": "17:00"}
358
+ ],
359
+ "friday": [
360
+ {"start": "08:00", "end": "12:00"},
361
+ {"start": "13:00", "end": "16:00"}
362
+ ],
363
+ "saturday": [],
364
+ "sunday": []
365
+ }
366
+ }
367
+ }
368
+
369
+ ### Get Advisor Working Hours Instance
370
+ # @name getAdvisorWorkingHours
371
+ GET {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/{{startAdvisorWorkingHours.response.body.id}}
372
+ Accept: application/json
373
+ Accept-Language: tr-TR
374
+ X-Request-Id: {{$guid}}
375
+
376
+ ### Cancel Advisor Working Hours (complete -> cancelled)
377
+ # @name cancelAdvisorWorkingHours
378
+ PATCH {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/{{startAdvisorWorkingHours.response.body.id}}/transitions/cancel?sync=true
379
+ Content-Type: application/json
380
+ Accept-Language: tr-TR
381
+ X-Request-Id: {{$guid}}
382
+
383
+ {
384
+ "attributes": {}
385
+ }
386
+
387
+ ###############################################################################
388
+ # #
389
+ # GET ABSENCE ENTRY FUNCTION #
390
+ # #
391
+ ###############################################################################
392
+ # Uses get-absence-entry function to list absence entries by absenceType.
393
+ #
394
+ # Query parameters:
395
+ # - absenceType (required): public-holiday | personal-leave | working-hours-change
396
+ # - startDate (optional, public-holiday/personal-leave): startDateTime >= value
397
+ # - endDate (optional, public-holiday/personal-leave): endDateTime <= value
398
+ # - advisor (optional):
399
+ # personal-leave: filter by advisor
400
+ # working-hours-change: if provided returns that advisor's working hours,
401
+ # if omitted returns company-wide working hours only
402
+ # - pageSize (optional, default 100)
403
+ # Note: Only returns instances in complete state.
404
+
405
+ ### --- PUBLIC HOLIDAY ---
406
+
407
+ ### Get Public Holidays
408
+ # @name getPublicHolidays
409
+ GET {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/functions/get-absence-entry?absenceType=public-holiday
410
+ Accept: application/json
411
+ Accept-Language: tr-TR
412
+ X-Request-Id: {{$guid}}
413
+
414
+ ### Get Public Holidays in Date Range
415
+ # @name getPublicHolidaysDateRange
416
+ GET {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/functions/get-absence-entry?absenceType=public-holiday&startDate=2026-04-01T00:00:00&endDate=2026-04-30T23:59:59
417
+ Accept: application/json
418
+ Accept-Language: tr-TR
419
+ X-Request-Id: {{$guid}}
420
+
421
+ ### --- WORKING HOURS CHANGE ---
422
+
423
+ ### Get Company Working Hours
424
+ # @name getCompanyWorkingHours
425
+ GET {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/functions/get-absence-entry?absenceType=working-hours-change
426
+ Accept: application/json
427
+ Accept-Language: tr-TR
428
+ X-Request-Id: {{$guid}}
429
+
430
+ ### Get Advisor Working Hours
431
+ # @name getAdvisorWorkingHours
432
+ GET {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/functions/get-absence-entry?absenceType=working-hours-change&advisor=touch.portfolio-manager.pm-002
433
+ Accept: application/json
434
+ Accept-Language: tr-TR
435
+ X-Request-Id: {{$guid}}
436
+
437
+ ### --- PERSONAL LEAVE ---
438
+
439
+ ### Get Personal Leaves
440
+ # @name getPersonalLeaves
441
+ GET {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/functions/get-absence-entry?absenceType=personal-leave
442
+ Accept: application/json
443
+ Accept-Language: tr-TR
444
+ X-Request-Id: {{$guid}}
445
+
446
+ ### Get Personal Leaves by Advisor
447
+ # @name getPersonalLeavesByAdvisor
448
+ GET {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/functions/get-absence-entry?absenceType=personal-leave&advisor=touch.portfolio-manager.pm-001
449
+ Accept: application/json
450
+ Accept-Language: tr-TR
451
+ X-Request-Id: {{$guid}}
452
+
453
+ ### Get Personal Leaves by Advisor + Date Range
454
+ # @name getPersonalLeavesByAdvisorDateRange
455
+ GET {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/functions/get-absence-entry?absenceType=personal-leave&advisor=touch.portfolio-manager.pm-001&startDate=2026-01-01T00:00:00&endDate=2026-06-30T23:59:59
456
+ Accept: application/json
457
+ Accept-Language: tr-TR
458
+ X-Request-Id: {{$guid}}
@@ -0,0 +1,179 @@
1
+ {
2
+ "key": "absence-entry",
3
+ "flow": "sys-flows",
4
+ "domain": "touch",
5
+ "version": "1.0.0",
6
+ "flowVersion": "1.0.0",
7
+ "tags": [
8
+ "new"
9
+ ],
10
+ "attributes": {
11
+ "type": "S",
12
+ "labels": [
13
+ {
14
+ "label": "Absence Entry",
15
+ "language": "en-US"
16
+ },
17
+ {
18
+ "label": "Yokluk Kaydı",
19
+ "language": "tr-TR"
20
+ }
21
+ ],
22
+ "functions": [],
23
+ "features": [],
24
+ "extensions": [],
25
+ "cancel": {
26
+ "key": "cancel",
27
+ "target": "cancelled",
28
+ "triggerType": 0,
29
+ "versionStrategy": "Minor",
30
+ "labels": [
31
+ {
32
+ "label": "Cancel",
33
+ "language": "en-US"
34
+ },
35
+ {
36
+ "label": "İptal Et",
37
+ "language": "tr-TR"
38
+ }
39
+ ]
40
+ },
41
+ "startTransition": {
42
+ "key": "start",
43
+ "target": "complete",
44
+ "versionStrategy": "Major",
45
+ "triggerType": 0,
46
+ "labels": [
47
+ {
48
+ "label": "Start",
49
+ "language": "en-US"
50
+ },
51
+ {
52
+ "label": "Başla",
53
+ "language": "tr-TR"
54
+ }
55
+ ],
56
+ "onExecutionTasks": []
57
+ },
58
+ "states": [
59
+ {
60
+ "key": "complete",
61
+ "stateType": 1,
62
+ "versionStrategy": "Minor",
63
+ "labels": [
64
+ {
65
+ "label": "Complete",
66
+ "language": "en-US"
67
+ },
68
+ {
69
+ "label": "Tamamlandı",
70
+ "language": "tr-TR"
71
+ }
72
+ ],
73
+ "transitions": [
74
+ {
75
+ "key": "update",
76
+ "target": "complete",
77
+ "triggerType": 0,
78
+ "versionStrategy": "Minor",
79
+ "labels": [
80
+ {
81
+ "label": "Update",
82
+ "language": "en-US"
83
+ },
84
+ {
85
+ "label": "Güncelle",
86
+ "language": "tr-TR"
87
+ }
88
+ ]
89
+ },
90
+ {
91
+ "key": "start-transfer",
92
+ "target": "complete-with-transfer",
93
+ "triggerType": 1,
94
+ "versionStrategy": "Minor",
95
+ "labels": [
96
+ {
97
+ "label": "Start Transfer",
98
+ "language": "en-US"
99
+ },
100
+ {
101
+ "label": "Transferi Başlat",
102
+ "language": "tr-TR"
103
+ }
104
+ ],
105
+ "rule": {
106
+ "location": "./src/CanStartTransferMapping.csx",
107
+ "code": "dXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKdXNpbmcgQkJULldvcmtmbG93LlNjcmlwdGluZzsKCi8vLyA8c3VtbWFyeT4KLy8vIENvbmRpdGlvbiBmb3IgY2hlY2stdGltZTogc3RhdGU9YWN0aXZlIC0+IGNyZWF0ZS1yb29tLWFuZC10cmlnZ2VyLgovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgQ2FuU3RhcnRUcmFuc2Zlck1hcHBpbmcgOiBTY3JpcHRCYXNlLCBJQ29uZGl0aW9uTWFwcGluZwp7CiAgICBwdWJsaWMgVGFzazxib29sPiBIYW5kbGVyKFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgYWJzZW5jZVR5cGUgPSBjb250ZXh0Lkluc3RhbmNlPy5EYXRhPy5hYnNlbmNlVHlwZT8uVG9TdHJpbmcoKT8uVHJpbSgpOwogICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQoYWJzZW5jZVR5cGUgPT0gInBlcnNvbmFsLWxlYXZlIik7CiAgICB9Cn0K"
108
+ },
109
+ "onExecutionTasks": [
110
+ {
111
+ "order": 1,
112
+ "task": {
113
+ "domain": "touch",
114
+ "flow": "sys-tasks",
115
+ "key": "start-transfer-from-absence-entry",
116
+ "version": "1.0.0"
117
+ },
118
+ "mapping": {
119
+ "location": "./src/StartTransferFromAbsenceEntryMapping.csx",
120
+ "code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwp1c2luZyBCQlQuV29ya2Zsb3cuU2NyaXB0aW5nOwp1c2luZyBCQlQuV29ya2Zsb3cuRGVmaW5pdGlvbnM7CgovLy8gPHN1bW1hcnk+Ci8vLyBNYXBwaW5nIGZvciBzdGFydC10cmFuc2Zlci1mcm9tLWFic2VuY2UtZW50cnkgU3RhcnRUYXNrIChUeXBlIDExKS4KLy8vIENvbmRpdGlvbmFsbHkgc3RhcnRzIGEgcmV6ZXJ2YXRpb24tdHJhbnNmZXIgc3ViZmxvdyB3aGVuIGFic2VuY2VUeXBlIGlzIHBlcnNvbmFsLWxlYXZlLgovLy8gRGV0ZXJtaW5lcyB0cmFuc2ZlciB0eXBlOiBhbm51YWwtbGVhdmUgKGVuZERhdGVUaW1lIHByZXNlbnQpIG9yIHRlcm1pbmF0aW9uIChlbmREYXRlVGltZSBudWxsKS4KLy8vIDwvc3VtbWFyeT4KcHVibGljIGNsYXNzIFN0YXJ0VHJhbnNmZXJGcm9tQWJzZW5jZUVudHJ5TWFwcGluZyA6IFNjcmlwdEJhc2UsIElNYXBwaW5nCnsKICAgIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBJbnB1dEhhbmRsZXIoV29ya2Zsb3dUYXNrIHRhc2ssIFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgc3RhcnRUYXNrID0gdGFzayBhcyBTdGFydFRhc2s7CiAgICAgICAgaWYgKHN0YXJ0VGFzayA9PSBudWxsKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiVGFzayBtdXN0IGJlIGEgU3RhcnRUYXNrIik7CgogICAgICAgIHZhciBkYXRhID0gY29udGV4dC5JbnN0YW5jZT8uRGF0YTsKICAgICAgICBpZiAoZGF0YSA9PSBudWxsKQogICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSBuZXcgeyBza2lwcGVkID0gdHJ1ZSwgcmVhc29uID0gIm5vLWluc3RhbmNlLWRhdGEiIH0gfSk7CgogICAgICAgIHZhciBhYnNlbmNlVHlwZSA9IEdldFN0cmluZyhkYXRhLCAiYWJzZW5jZVR5cGUiKTsKICAgICAgICBpZiAoYWJzZW5jZVR5cGUgIT0gInBlcnNvbmFsLWxlYXZlIikKICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UgeyBEYXRhID0gbmV3IHsgc2tpcHBlZCA9IHRydWUsIHJlYXNvbiA9ICJub3QtcGVyc29uYWwtbGVhdmUiIH0gfSk7CgogICAgICAgIHZhciBhZHZpc29yID0gR2V0U3RyaW5nKGRhdGEsICJhZHZpc29yIik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KGFkdmlzb3IpKQogICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSBuZXcgeyBza2lwcGVkID0gdHJ1ZSwgcmVhc29uID0gIm5vLWFkdmlzb3IiIH0gfSk7CgogICAgICAgIHZhciBzdGFydERhdGVUaW1lID0gR2V0U3RyaW5nKGRhdGEsICJzdGFydERhdGVUaW1lIik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KHN0YXJ0RGF0ZVRpbWUpKQogICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSBuZXcgeyBza2lwcGVkID0gdHJ1ZSwgcmVhc29uID0gIm5vLXN0YXJ0RGF0ZVRpbWUiIH0gfSk7CgogICAgICAgIHZhciBlbmREYXRlVGltZSA9IEdldFN0cmluZyhkYXRhLCAiZW5kRGF0ZVRpbWUiKTsKCiAgICAgICAgdmFyIGFkdmlzb3JUeXBlID0gRXh0cmFjdEFkdmlzb3JUeXBlKGFkdmlzb3IpOwogICAgICAgIHZhciB0cmFuc2ZlclR5cGUgPSBzdHJpbmcuSXNOdWxsT3JFbXB0eShlbmREYXRlVGltZSkgPyAidGVybWluYXRpb24iIDogImFubnVhbC1sZWF2ZSI7CgogICAgICAgIHZhciBzYWZlU3RhcnQgPSBzdGFydERhdGVUaW1lLlJlcGxhY2UoIjoiLCAiLSIpOwogICAgICAgIHZhciB0cmFuc2ZlcktleSA9ICQidHJhbnNmZXItbGVhdmUte2Fkdmlzb3J9LXtzYWZlU3RhcnR9IjsKCiAgICAgICAgc3RhcnRUYXNrLlNldERvbWFpbigidG91Y2giKTsKICAgICAgICBzdGFydFRhc2suU2V0RmxvdygicmV6ZXJ2YXRpb24tdHJhbnNmZXIiKTsKICAgICAgICBzdGFydFRhc2suU2V0S2V5KHRyYW5zZmVyS2V5KTsKCiAgICAgICAgdmFyIGJvZHkgPSBuZXcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4KICAgICAgICB7CiAgICAgICAgICAgIFsic291cmNlQWR2aXNvcklkIl0gPSBhZHZpc29yLAogICAgICAgICAgICBbImFkdmlzb3JUeXBlIl0gPSBhZHZpc29yVHlwZSwKICAgICAgICAgICAgWyJzdGFydERhdGUiXSA9IHN0YXJ0RGF0ZVRpbWUKICAgICAgICB9OwogICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoZW5kRGF0ZVRpbWUpKQogICAgICAgICAgICBib2R5WyJlbmREYXRlIl0gPSBlbmREYXRlVGltZTsKCiAgICAgICAgc3RhcnRUYXNrLlNldEJvZHkoYm9keSk7CgogICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgewogICAgICAgICAgICBEYXRhID0gbmV3IHsgc2tpcHBlZCA9IGZhbHNlLCB0cmFuc2ZlclR5cGUsIHRyYW5zZmVyS2V5IH0KICAgICAgICB9KTsKICAgIH0KCiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gT3V0cHV0SGFuZGxlcihTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UoKSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdHJpbmcgRXh0cmFjdEFkdmlzb3JUeXBlKHN0cmluZyBhZHZpc29yKQogICAgewogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JFbXB0eShhZHZpc29yKSkgcmV0dXJuIG51bGw7CiAgICAgICAgdmFyIHBhcnRzID0gYWR2aXNvci5TcGxpdCgnLicpOwogICAgICAgIGlmIChwYXJ0cy5MZW5ndGggPj0gMykKICAgICAgICAgICAgcmV0dXJuIHBhcnRzWzFdOwogICAgICAgIGlmIChwYXJ0cy5MZW5ndGggPT0gMikKICAgICAgICAgICAgcmV0dXJuIHBhcnRzWzBdOwogICAgICAgIHJldHVybiBhZHZpc29yOwogICAgfQoKICAgIHByaXZhdGUgc3RyaW5nIEdldFN0cmluZyhkeW5hbWljIG9iaiwgc3RyaW5nIG5hbWUpCiAgICB7CiAgICAgICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gbnVsbDsKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChIYXNQcm9wZXJ0eShvYmosIG5hbWUpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIgdiA9IEdldFByb3BlcnR5VmFsdWUob2JqLCBuYW1lKTsKICAgICAgICAgICAgICAgIHJldHVybiB2Py5Ub1N0cmluZygpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNhdGNoIHsgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfQp9Cg=="
121
+ }
122
+ }
123
+ ]
124
+ }
125
+ ]
126
+ },
127
+ {
128
+ "key": "complete-with-transfer",
129
+ "stateType": 2,
130
+ "versionStrategy": "Minor",
131
+ "labels": [
132
+ {
133
+ "label": "Complete (Transfer Started)",
134
+ "language": "en-US"
135
+ },
136
+ {
137
+ "label": "Tamamlandı (Transfer Başlatıldı)",
138
+ "language": "tr-TR"
139
+ }
140
+ ],
141
+ "transitions": [
142
+ {
143
+ "key": "update",
144
+ "target": "complete-with-transfer",
145
+ "triggerType": 0,
146
+ "versionStrategy": "Minor",
147
+ "labels": [
148
+ {
149
+ "label": "Update",
150
+ "language": "en-US"
151
+ },
152
+ {
153
+ "label": "Güncelle",
154
+ "language": "tr-TR"
155
+ }
156
+ ]
157
+ }
158
+ ]
159
+ },
160
+ {
161
+ "key": "cancelled",
162
+ "stateType": 3,
163
+ "versionStrategy": "Minor",
164
+ "labels": [
165
+ {
166
+ "label": "Cancelled",
167
+ "language": "en-US"
168
+ },
169
+ {
170
+ "label": "İptal Edildi",
171
+ "language": "tr-TR"
172
+ }
173
+ ]
174
+ }
175
+ ],
176
+ "subFlowType": "S",
177
+ "timeout": null
178
+ }
179
+ }
@@ -0,0 +1,47 @@
1
+ ###############################################################################
2
+ # Add Participant to Rezervation - HTTP Test File
3
+ #
4
+ # This flow adds a new participant to an existing rezervation that is in
5
+ # active or in-meet state. It invites to chat room (if chatIntegration
6
+ # exists), adds to video call (if in-meet), and updates invitedUser on rezervation.
7
+ #
8
+ # Flow: start -> check-rezervation-state -> add-participant -> [add-video-call | update-invited] -> end
9
+ # or -> state-not-valid (when not active/in-meet)
10
+ #
11
+ # Prerequisites:
12
+ # 1. vNext Runtime running on localhost:4201
13
+ # 2. Rezervation instance in active or in-meet state with valid rezervationKey
14
+ # 3. newUserId: Matrix username of the user to add (e.g. touch.portfolio-manager.pm-002)
15
+ ###############################################################################
16
+
17
+ @baseUrl = http://localhost:4201
18
+ @apiVersion = 1
19
+ @domain = touch
20
+ @workflow = add-participant-to-rezervation
21
+
22
+ ###############################################################################
23
+ # Start Add Participant Flow
24
+ ###############################################################################
25
+
26
+ @rezervationKey = <paste-rezervation-key>
27
+ @newUserId = touch.portfolio-manager.pm-002
28
+
29
+ ### Start Add Participant to Rezervation Flow
30
+ # Adds newUserId to rezervation. Rezervation must be in active or in-meet state.
31
+ # @name startAddParticipantFlow
32
+ POST {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/workflows/{{workflow}}/instances/start?sync=true
33
+ Content-Type: application/json
34
+ Accept-Language: tr-TR
35
+ X-Request-Id: {{$guid}}
36
+
37
+ {
38
+ "key": "add-participant-{{$timestamp}}",
39
+ "tags": [
40
+ "rezervation",
41
+ "add-participant"
42
+ ],
43
+ "attributes": {
44
+ "randevuKey": "{{rezervationKey}}",
45
+ "newUserId": "{{newUserId}}"
46
+ }
47
+ }