@ultracart/bq-skill 0.1.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 (303) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +952 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +42 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/alarm.d.ts +3 -0
  8. package/dist/commands/alarm.d.ts.map +1 -0
  9. package/dist/commands/alarm.js +146 -0
  10. package/dist/commands/alarm.js.map +1 -0
  11. package/dist/commands/config.d.ts +3 -0
  12. package/dist/commands/config.d.ts.map +1 -0
  13. package/dist/commands/config.js +749 -0
  14. package/dist/commands/config.js.map +1 -0
  15. package/dist/commands/deck.d.ts +3 -0
  16. package/dist/commands/deck.d.ts.map +1 -0
  17. package/dist/commands/deck.js +567 -0
  18. package/dist/commands/deck.js.map +1 -0
  19. package/dist/commands/dry-run.d.ts +3 -0
  20. package/dist/commands/dry-run.d.ts.map +1 -0
  21. package/dist/commands/dry-run.js +105 -0
  22. package/dist/commands/dry-run.js.map +1 -0
  23. package/dist/commands/history.d.ts +3 -0
  24. package/dist/commands/history.d.ts.map +1 -0
  25. package/dist/commands/history.js +127 -0
  26. package/dist/commands/history.js.map +1 -0
  27. package/dist/commands/init.d.ts +3 -0
  28. package/dist/commands/init.d.ts.map +1 -0
  29. package/dist/commands/init.js +302 -0
  30. package/dist/commands/init.js.map +1 -0
  31. package/dist/commands/install-skill.d.ts +3 -0
  32. package/dist/commands/install-skill.d.ts.map +1 -0
  33. package/dist/commands/install-skill.js +132 -0
  34. package/dist/commands/install-skill.js.map +1 -0
  35. package/dist/commands/list.d.ts +3 -0
  36. package/dist/commands/list.d.ts.map +1 -0
  37. package/dist/commands/list.js +89 -0
  38. package/dist/commands/list.js.map +1 -0
  39. package/dist/commands/query.d.ts +3 -0
  40. package/dist/commands/query.d.ts.map +1 -0
  41. package/dist/commands/query.js +152 -0
  42. package/dist/commands/query.js.map +1 -0
  43. package/dist/commands/render.d.ts +3 -0
  44. package/dist/commands/render.d.ts.map +1 -0
  45. package/dist/commands/render.js +107 -0
  46. package/dist/commands/render.js.map +1 -0
  47. package/dist/commands/run-all.d.ts +3 -0
  48. package/dist/commands/run-all.d.ts.map +1 -0
  49. package/dist/commands/run-all.js +285 -0
  50. package/dist/commands/run-all.js.map +1 -0
  51. package/dist/commands/run.d.ts +3 -0
  52. package/dist/commands/run.d.ts.map +1 -0
  53. package/dist/commands/run.js +321 -0
  54. package/dist/commands/run.js.map +1 -0
  55. package/dist/commands/schema.d.ts +3 -0
  56. package/dist/commands/schema.d.ts.map +1 -0
  57. package/dist/commands/schema.js +271 -0
  58. package/dist/commands/schema.js.map +1 -0
  59. package/dist/commands/validate.d.ts +3 -0
  60. package/dist/commands/validate.d.ts.map +1 -0
  61. package/dist/commands/validate.js +109 -0
  62. package/dist/commands/validate.js.map +1 -0
  63. package/dist/lib/alarm-notify.d.ts +16 -0
  64. package/dist/lib/alarm-notify.d.ts.map +1 -0
  65. package/dist/lib/alarm-notify.js +312 -0
  66. package/dist/lib/alarm-notify.js.map +1 -0
  67. package/dist/lib/alarm-state.d.ts +26 -0
  68. package/dist/lib/alarm-state.d.ts.map +1 -0
  69. package/dist/lib/alarm-state.js +118 -0
  70. package/dist/lib/alarm-state.js.map +1 -0
  71. package/dist/lib/alarm.d.ts +28 -0
  72. package/dist/lib/alarm.d.ts.map +1 -0
  73. package/dist/lib/alarm.js +215 -0
  74. package/dist/lib/alarm.js.map +1 -0
  75. package/dist/lib/analysis.d.ts +16 -0
  76. package/dist/lib/analysis.d.ts.map +1 -0
  77. package/dist/lib/analysis.js +134 -0
  78. package/dist/lib/analysis.js.map +1 -0
  79. package/dist/lib/bigquery.d.ts +55 -0
  80. package/dist/lib/bigquery.d.ts.map +1 -0
  81. package/dist/lib/bigquery.js +321 -0
  82. package/dist/lib/bigquery.js.map +1 -0
  83. package/dist/lib/config-writer.d.ts +3 -0
  84. package/dist/lib/config-writer.d.ts.map +1 -0
  85. package/dist/lib/config-writer.js +60 -0
  86. package/dist/lib/config-writer.js.map +1 -0
  87. package/dist/lib/config.d.ts +63 -0
  88. package/dist/lib/config.d.ts.map +1 -0
  89. package/dist/lib/config.js +151 -0
  90. package/dist/lib/config.js.map +1 -0
  91. package/dist/lib/dashboard.d.ts +3 -0
  92. package/dist/lib/dashboard.d.ts.map +1 -0
  93. package/dist/lib/dashboard.js +468 -0
  94. package/dist/lib/dashboard.js.map +1 -0
  95. package/dist/lib/deck.d.ts +58 -0
  96. package/dist/lib/deck.d.ts.map +1 -0
  97. package/dist/lib/deck.js +232 -0
  98. package/dist/lib/deck.js.map +1 -0
  99. package/dist/lib/deliver-email.d.ts +14 -0
  100. package/dist/lib/deliver-email.d.ts.map +1 -0
  101. package/dist/lib/deliver-email.js +360 -0
  102. package/dist/lib/deliver-email.js.map +1 -0
  103. package/dist/lib/deliver-slack.d.ts +6 -0
  104. package/dist/lib/deliver-slack.d.ts.map +1 -0
  105. package/dist/lib/deliver-slack.js +73 -0
  106. package/dist/lib/deliver-slack.js.map +1 -0
  107. package/dist/lib/deliver.d.ts +10 -0
  108. package/dist/lib/deliver.d.ts.map +1 -0
  109. package/dist/lib/deliver.js +95 -0
  110. package/dist/lib/deliver.js.map +1 -0
  111. package/dist/lib/llm/anthropic.d.ts +7 -0
  112. package/dist/lib/llm/anthropic.d.ts.map +1 -0
  113. package/dist/lib/llm/anthropic.js +69 -0
  114. package/dist/lib/llm/anthropic.js.map +1 -0
  115. package/dist/lib/llm/bedrock.d.ts +7 -0
  116. package/dist/lib/llm/bedrock.d.ts.map +1 -0
  117. package/dist/lib/llm/bedrock.js +67 -0
  118. package/dist/lib/llm/bedrock.js.map +1 -0
  119. package/dist/lib/llm/gemini.d.ts +7 -0
  120. package/dist/lib/llm/gemini.d.ts.map +1 -0
  121. package/dist/lib/llm/gemini.js +67 -0
  122. package/dist/lib/llm/gemini.js.map +1 -0
  123. package/dist/lib/llm/index.d.ts +5 -0
  124. package/dist/lib/llm/index.d.ts.map +1 -0
  125. package/dist/lib/llm/index.js +61 -0
  126. package/dist/lib/llm/index.js.map +1 -0
  127. package/dist/lib/llm/models.d.ts +5 -0
  128. package/dist/lib/llm/models.d.ts.map +1 -0
  129. package/dist/lib/llm/models.js +33 -0
  130. package/dist/lib/llm/models.js.map +1 -0
  131. package/dist/lib/llm/openai.d.ts +8 -0
  132. package/dist/lib/llm/openai.d.ts.map +1 -0
  133. package/dist/lib/llm/openai.js +48 -0
  134. package/dist/lib/llm/openai.js.map +1 -0
  135. package/dist/lib/llm/provider.d.ts +28 -0
  136. package/dist/lib/llm/provider.d.ts.map +1 -0
  137. package/dist/lib/llm/provider.js +3 -0
  138. package/dist/lib/llm/provider.js.map +1 -0
  139. package/dist/lib/manifest.d.ts +95 -0
  140. package/dist/lib/manifest.d.ts.map +1 -0
  141. package/dist/lib/manifest.js +105 -0
  142. package/dist/lib/manifest.js.map +1 -0
  143. package/dist/lib/params.d.ts +27 -0
  144. package/dist/lib/params.d.ts.map +1 -0
  145. package/dist/lib/params.js +192 -0
  146. package/dist/lib/params.js.map +1 -0
  147. package/dist/lib/pdf.d.ts +8 -0
  148. package/dist/lib/pdf.d.ts.map +1 -0
  149. package/dist/lib/pdf.js +86 -0
  150. package/dist/lib/pdf.js.map +1 -0
  151. package/dist/lib/renderer.d.ts +17 -0
  152. package/dist/lib/renderer.d.ts.map +1 -0
  153. package/dist/lib/renderer.js +166 -0
  154. package/dist/lib/renderer.js.map +1 -0
  155. package/dist/lib/schema-filter.d.ts +3 -0
  156. package/dist/lib/schema-filter.d.ts.map +1 -0
  157. package/dist/lib/schema-filter.js +49 -0
  158. package/dist/lib/schema-filter.js.map +1 -0
  159. package/dist/lib/template.d.ts +4 -0
  160. package/dist/lib/template.d.ts.map +1 -0
  161. package/dist/lib/template.js +37 -0
  162. package/dist/lib/template.js.map +1 -0
  163. package/dist/lib/validator.d.ts +8 -0
  164. package/dist/lib/validator.d.ts.map +1 -0
  165. package/dist/lib/validator.js +88 -0
  166. package/dist/lib/validator.js.map +1 -0
  167. package/package.json +59 -0
  168. package/schemas/deck.schema.json +122 -0
  169. package/schemas/report-manifest.schema.json +309 -0
  170. package/schemas/tables/README.md +45 -0
  171. package/schemas/tables/ultracart_dw/uc_affiliate_clicks.json +186 -0
  172. package/schemas/tables/ultracart_dw/uc_affiliate_commission_groups.json +317 -0
  173. package/schemas/tables/ultracart_dw/uc_affiliate_ledgers.json +404 -0
  174. package/schemas/tables/ultracart_dw/uc_affiliate_network_pixel_postback_logs.json +166 -0
  175. package/schemas/tables/ultracart_dw/uc_affiliate_network_pixels.json +106 -0
  176. package/schemas/tables/ultracart_dw/uc_affiliate_payments.json +204 -0
  177. package/schemas/tables/ultracart_dw/uc_affiliate_postback_logs.json +90 -0
  178. package/schemas/tables/ultracart_dw/uc_affiliates.json +425 -0
  179. package/schemas/tables/ultracart_dw/uc_auto_orders.json +13848 -0
  180. package/schemas/tables/ultracart_dw/uc_cart_abandons.json +3971 -0
  181. package/schemas/tables/ultracart_dw/uc_conversation_pbx_calls.json +374 -0
  182. package/schemas/tables/ultracart_dw/uc_conversations.json +374 -0
  183. package/schemas/tables/ultracart_dw/uc_coupons.json +1893 -0
  184. package/schemas/tables/ultracart_dw/uc_customers.json +11886 -0
  185. package/schemas/tables/ultracart_dw/uc_fraud_rules.json +239 -0
  186. package/schemas/tables/ultracart_dw/uc_gift_certificates.json +135 -0
  187. package/schemas/tables/ultracart_dw/uc_item_inventory_history.json +79 -0
  188. package/schemas/tables/ultracart_dw/uc_items.json +4437 -0
  189. package/schemas/tables/ultracart_dw/uc_orders.json +6629 -0
  190. package/schemas/tables/ultracart_dw/uc_rotating_transaction_gateway_history.json +271 -0
  191. package/schemas/tables/ultracart_dw/uc_rotating_transaction_gateways.json +416 -0
  192. package/schemas/tables/ultracart_dw/uc_shipping_methods.json +1372 -0
  193. package/schemas/tables/ultracart_dw/uc_storefront_customers.json +261 -0
  194. package/schemas/tables/ultracart_dw/uc_storefront_experiments.json +386 -0
  195. package/schemas/tables/ultracart_dw/uc_storefront_pages.json +513 -0
  196. package/schemas/tables/ultracart_dw/uc_storefront_upsell_offer_events.json +338 -0
  197. package/schemas/tables/ultracart_dw/uc_storefront_upsell_offers.json +431 -0
  198. package/schemas/tables/ultracart_dw/uc_storefront_upsell_paths.json +163 -0
  199. package/schemas/tables/ultracart_dw/uc_storefronts.json +62 -0
  200. package/schemas/tables/ultracart_dw/uc_surveys.json +238 -0
  201. package/schemas/tables/ultracart_dw/uc_workflow_tasks.json +377 -0
  202. package/schemas/tables/ultracart_dw/uc_zoho_desk_tickets.json +1184 -0
  203. package/schemas/tables/ultracart_dw_high/uc_affiliate_clicks.json +186 -0
  204. package/schemas/tables/ultracart_dw_high/uc_affiliate_commission_groups.json +317 -0
  205. package/schemas/tables/ultracart_dw_high/uc_affiliate_ledgers.json +404 -0
  206. package/schemas/tables/ultracart_dw_high/uc_affiliate_network_pixel_postback_logs.json +166 -0
  207. package/schemas/tables/ultracart_dw_high/uc_affiliate_network_pixels.json +106 -0
  208. package/schemas/tables/ultracart_dw_high/uc_affiliate_payments.json +204 -0
  209. package/schemas/tables/ultracart_dw_high/uc_affiliate_postback_logs.json +90 -0
  210. package/schemas/tables/ultracart_dw_high/uc_affiliates.json +425 -0
  211. package/schemas/tables/ultracart_dw_high/uc_auto_orders.json +14332 -0
  212. package/schemas/tables/ultracart_dw_high/uc_cart_abandons.json +4245 -0
  213. package/schemas/tables/ultracart_dw_high/uc_conversation_pbx_calls.json +415 -0
  214. package/schemas/tables/ultracart_dw_high/uc_conversations.json +415 -0
  215. package/schemas/tables/ultracart_dw_high/uc_coupons.json +1893 -0
  216. package/schemas/tables/ultracart_dw_high/uc_customers.json +12250 -0
  217. package/schemas/tables/ultracart_dw_high/uc_fraud_rules.json +239 -0
  218. package/schemas/tables/ultracart_dw_high/uc_gift_certificates.json +135 -0
  219. package/schemas/tables/ultracart_dw_high/uc_item_inventory_history.json +79 -0
  220. package/schemas/tables/ultracart_dw_high/uc_items.json +4437 -0
  221. package/schemas/tables/ultracart_dw_high/uc_orders.json +6871 -0
  222. package/schemas/tables/ultracart_dw_high/uc_rotating_transaction_gateway_history.json +271 -0
  223. package/schemas/tables/ultracart_dw_high/uc_rotating_transaction_gateways.json +416 -0
  224. package/schemas/tables/ultracart_dw_high/uc_shipping_methods.json +1372 -0
  225. package/schemas/tables/ultracart_dw_high/uc_storefront_customers.json +261 -0
  226. package/schemas/tables/ultracart_dw_high/uc_storefront_experiments.json +386 -0
  227. package/schemas/tables/ultracart_dw_high/uc_storefront_pages.json +513 -0
  228. package/schemas/tables/ultracart_dw_high/uc_storefront_upsell_offer_events.json +338 -0
  229. package/schemas/tables/ultracart_dw_high/uc_storefront_upsell_offers.json +431 -0
  230. package/schemas/tables/ultracart_dw_high/uc_storefront_upsell_paths.json +163 -0
  231. package/schemas/tables/ultracart_dw_high/uc_storefronts.json +62 -0
  232. package/schemas/tables/ultracart_dw_high/uc_surveys.json +269 -0
  233. package/schemas/tables/ultracart_dw_high/uc_workflow_tasks.json +377 -0
  234. package/schemas/tables/ultracart_dw_high/uc_zoho_desk_tickets.json +1330 -0
  235. package/schemas/tables/ultracart_dw_low/uc_affiliate_clicks.json +186 -0
  236. package/schemas/tables/ultracart_dw_low/uc_affiliate_commission_groups.json +317 -0
  237. package/schemas/tables/ultracart_dw_low/uc_affiliate_ledgers.json +404 -0
  238. package/schemas/tables/ultracart_dw_low/uc_affiliate_network_pixel_postback_logs.json +166 -0
  239. package/schemas/tables/ultracart_dw_low/uc_affiliate_network_pixels.json +106 -0
  240. package/schemas/tables/ultracart_dw_low/uc_affiliate_payments.json +204 -0
  241. package/schemas/tables/ultracart_dw_low/uc_affiliate_postback_logs.json +90 -0
  242. package/schemas/tables/ultracart_dw_low/uc_affiliates.json +425 -0
  243. package/schemas/tables/ultracart_dw_low/uc_auto_orders.json +13868 -0
  244. package/schemas/tables/ultracart_dw_low/uc_cart_abandons.json +3971 -0
  245. package/schemas/tables/ultracart_dw_low/uc_conversation_pbx_calls.json +374 -0
  246. package/schemas/tables/ultracart_dw_low/uc_conversations.json +374 -0
  247. package/schemas/tables/ultracart_dw_low/uc_coupons.json +1893 -0
  248. package/schemas/tables/ultracart_dw_low/uc_customers.json +11900 -0
  249. package/schemas/tables/ultracart_dw_low/uc_fraud_rules.json +239 -0
  250. package/schemas/tables/ultracart_dw_low/uc_gift_certificates.json +135 -0
  251. package/schemas/tables/ultracart_dw_low/uc_item_inventory_history.json +79 -0
  252. package/schemas/tables/ultracart_dw_low/uc_items.json +4437 -0
  253. package/schemas/tables/ultracart_dw_low/uc_orders.json +6639 -0
  254. package/schemas/tables/ultracart_dw_low/uc_rotating_transaction_gateway_history.json +271 -0
  255. package/schemas/tables/ultracart_dw_low/uc_rotating_transaction_gateways.json +416 -0
  256. package/schemas/tables/ultracart_dw_low/uc_shipping_methods.json +1372 -0
  257. package/schemas/tables/ultracart_dw_low/uc_storefront_customers.json +261 -0
  258. package/schemas/tables/ultracart_dw_low/uc_storefront_experiments.json +386 -0
  259. package/schemas/tables/ultracart_dw_low/uc_storefront_pages.json +513 -0
  260. package/schemas/tables/ultracart_dw_low/uc_storefront_upsell_offer_events.json +338 -0
  261. package/schemas/tables/ultracart_dw_low/uc_storefront_upsell_offers.json +431 -0
  262. package/schemas/tables/ultracart_dw_low/uc_storefront_upsell_paths.json +163 -0
  263. package/schemas/tables/ultracart_dw_low/uc_storefronts.json +62 -0
  264. package/schemas/tables/ultracart_dw_low/uc_surveys.json +238 -0
  265. package/schemas/tables/ultracart_dw_low/uc_workflow_tasks.json +377 -0
  266. package/schemas/tables/ultracart_dw_low/uc_zoho_desk_tickets.json +1184 -0
  267. package/schemas/tables/ultracart_dw_medium/uc_affiliate_clicks.json +186 -0
  268. package/schemas/tables/ultracart_dw_medium/uc_affiliate_commission_groups.json +317 -0
  269. package/schemas/tables/ultracart_dw_medium/uc_affiliate_ledgers.json +404 -0
  270. package/schemas/tables/ultracart_dw_medium/uc_affiliate_network_pixel_postback_logs.json +166 -0
  271. package/schemas/tables/ultracart_dw_medium/uc_affiliate_network_pixels.json +106 -0
  272. package/schemas/tables/ultracart_dw_medium/uc_affiliate_payments.json +204 -0
  273. package/schemas/tables/ultracart_dw_medium/uc_affiliate_postback_logs.json +90 -0
  274. package/schemas/tables/ultracart_dw_medium/uc_affiliates.json +425 -0
  275. package/schemas/tables/ultracart_dw_medium/uc_auto_orders.json +14320 -0
  276. package/schemas/tables/ultracart_dw_medium/uc_cart_abandons.json +4245 -0
  277. package/schemas/tables/ultracart_dw_medium/uc_conversation_pbx_calls.json +415 -0
  278. package/schemas/tables/ultracart_dw_medium/uc_conversations.json +415 -0
  279. package/schemas/tables/ultracart_dw_medium/uc_coupons.json +1893 -0
  280. package/schemas/tables/ultracart_dw_medium/uc_customers.json +12250 -0
  281. package/schemas/tables/ultracart_dw_medium/uc_fraud_rules.json +239 -0
  282. package/schemas/tables/ultracart_dw_medium/uc_gift_certificates.json +135 -0
  283. package/schemas/tables/ultracart_dw_medium/uc_item_inventory_history.json +79 -0
  284. package/schemas/tables/ultracart_dw_medium/uc_items.json +4437 -0
  285. package/schemas/tables/ultracart_dw_medium/uc_orders.json +6865 -0
  286. package/schemas/tables/ultracart_dw_medium/uc_rotating_transaction_gateway_history.json +271 -0
  287. package/schemas/tables/ultracart_dw_medium/uc_rotating_transaction_gateways.json +416 -0
  288. package/schemas/tables/ultracart_dw_medium/uc_shipping_methods.json +1372 -0
  289. package/schemas/tables/ultracart_dw_medium/uc_storefront_customers.json +261 -0
  290. package/schemas/tables/ultracart_dw_medium/uc_storefront_experiments.json +386 -0
  291. package/schemas/tables/ultracart_dw_medium/uc_storefront_pages.json +513 -0
  292. package/schemas/tables/ultracart_dw_medium/uc_storefront_upsell_offer_events.json +338 -0
  293. package/schemas/tables/ultracart_dw_medium/uc_storefront_upsell_offers.json +431 -0
  294. package/schemas/tables/ultracart_dw_medium/uc_storefront_upsell_paths.json +163 -0
  295. package/schemas/tables/ultracart_dw_medium/uc_storefronts.json +62 -0
  296. package/schemas/tables/ultracart_dw_medium/uc_surveys.json +269 -0
  297. package/schemas/tables/ultracart_dw_medium/uc_workflow_tasks.json +377 -0
  298. package/schemas/tables/ultracart_dw_medium/uc_zoho_desk_tickets.json +1330 -0
  299. package/schemas/tables/ultracart_dw_streaming/uc_analytics_session_streaming.json +2444 -0
  300. package/schemas/tables/ultracart_dw_streaming/uc_screen_recording_streaming.json +509 -0
  301. package/schemas/ultracart-bq-config.schema.json +140 -0
  302. package/skill/skill.md +1228 -0
  303. package/templates/render.html +73 -0
@@ -0,0 +1,1184 @@
1
+ [
2
+ {
3
+ "mode": "NULLABLE",
4
+ "name": "partition_date",
5
+ "type": "DATE"
6
+ },
7
+ {
8
+ "mode": "NULLABLE",
9
+ "name": "merchant_id",
10
+ "description": "UltraCart Merchant ID",
11
+ "type": "STRING"
12
+ },
13
+ {
14
+ "mode": "NULLABLE",
15
+ "name": "id",
16
+ "description": "Unique ticket ID",
17
+ "type": "STRING"
18
+ },
19
+ {
20
+ "mode": "NULLABLE",
21
+ "name": "ticket_number",
22
+ "description": "Human-readable ticket number",
23
+ "type": "STRING"
24
+ },
25
+ {
26
+ "mode": "NULLABLE",
27
+ "name": "subject",
28
+ "description": "Ticket subject",
29
+ "type": "STRING"
30
+ },
31
+ {
32
+ "mode": "NULLABLE",
33
+ "name": "subject_hash",
34
+ "description": "SHA-256 Base64 hash of subject",
35
+ "type": "STRING"
36
+ },
37
+ {
38
+ "mode": "NULLABLE",
39
+ "name": "description",
40
+ "description": "Initial ticket description (HTML)",
41
+ "type": "STRING"
42
+ },
43
+ {
44
+ "mode": "NULLABLE",
45
+ "name": "description_hash",
46
+ "description": "SHA-256 Base64 hash of description",
47
+ "type": "STRING"
48
+ },
49
+ {
50
+ "mode": "NULLABLE",
51
+ "name": "status",
52
+ "description": "Current status",
53
+ "type": "STRING"
54
+ },
55
+ {
56
+ "mode": "NULLABLE",
57
+ "name": "status_type",
58
+ "description": "Status category",
59
+ "type": "STRING"
60
+ },
61
+ {
62
+ "mode": "NULLABLE",
63
+ "name": "priority",
64
+ "description": "Priority",
65
+ "type": "STRING"
66
+ },
67
+ {
68
+ "mode": "NULLABLE",
69
+ "name": "classification",
70
+ "description": "Ticket classification",
71
+ "type": "STRING"
72
+ },
73
+ {
74
+ "mode": "NULLABLE",
75
+ "name": "category",
76
+ "description": "Category",
77
+ "type": "STRING"
78
+ },
79
+ {
80
+ "mode": "NULLABLE",
81
+ "name": "sub_category",
82
+ "description": "Sub-category",
83
+ "type": "STRING"
84
+ },
85
+ {
86
+ "mode": "NULLABLE",
87
+ "name": "department_id",
88
+ "description": "Department ID",
89
+ "type": "STRING"
90
+ },
91
+ {
92
+ "mode": "NULLABLE",
93
+ "name": "channel",
94
+ "description": "Source channel",
95
+ "type": "STRING"
96
+ },
97
+ {
98
+ "mode": "NULLABLE",
99
+ "name": "phone",
100
+ "description": "Contact phone from ticket",
101
+ "type": "STRING"
102
+ },
103
+ {
104
+ "mode": "NULLABLE",
105
+ "name": "phone_hash",
106
+ "description": "SHA-256 Base64 hash of phone",
107
+ "type": "STRING"
108
+ },
109
+ {
110
+ "mode": "NULLABLE",
111
+ "name": "language",
112
+ "description": "Ticket language",
113
+ "type": "STRING"
114
+ },
115
+ {
116
+ "mode": "NULLABLE",
117
+ "name": "is_spam",
118
+ "description": "Marked as spam",
119
+ "type": "BOOLEAN"
120
+ },
121
+ {
122
+ "mode": "NULLABLE",
123
+ "name": "is_public",
124
+ "description": "Visible to portal users",
125
+ "type": "BOOLEAN"
126
+ },
127
+ {
128
+ "mode": "NULLABLE",
129
+ "name": "due_date",
130
+ "description": "Due date in ISO 8601",
131
+ "type": "DATETIME"
132
+ },
133
+ {
134
+ "mode": "NULLABLE",
135
+ "name": "response_due_date",
136
+ "description": "Response due date in ISO 8601",
137
+ "type": "DATETIME"
138
+ },
139
+ {
140
+ "mode": "NULLABLE",
141
+ "name": "onhold_time",
142
+ "description": "Total time on hold in ISO 8601 duration format",
143
+ "type": "DATETIME"
144
+ },
145
+ {
146
+ "mode": "NULLABLE",
147
+ "name": "resolution",
148
+ "description": "Resolution text (HTML)",
149
+ "type": "STRING"
150
+ },
151
+ {
152
+ "mode": "NULLABLE",
153
+ "name": "resolution_hash",
154
+ "description": "SHA-256 Base64 hash of resolution",
155
+ "type": "STRING"
156
+ },
157
+ {
158
+ "mode": "NULLABLE",
159
+ "name": "closed_time",
160
+ "description": "Time when ticket was closed",
161
+ "type": "DATETIME"
162
+ },
163
+ {
164
+ "mode": "NULLABLE",
165
+ "name": "created_time",
166
+ "description": "Creation timestamp",
167
+ "type": "DATETIME"
168
+ },
169
+ {
170
+ "mode": "NULLABLE",
171
+ "name": "modified_time",
172
+ "description": "Last modification timestamp",
173
+ "type": "DATETIME"
174
+ },
175
+ {
176
+ "mode": "NULLABLE",
177
+ "name": "customer_response_time",
178
+ "description": "Last customer response time",
179
+ "type": "DATETIME"
180
+ },
181
+ {
182
+ "mode": "NULLABLE",
183
+ "name": "contact_id",
184
+ "description": "Contact (customer) ID",
185
+ "type": "STRING"
186
+ },
187
+ {
188
+ "mode": "NULLABLE",
189
+ "name": "assignee_id",
190
+ "description": "Current assignee (agent) ID",
191
+ "type": "STRING"
192
+ },
193
+ {
194
+ "mode": "NULLABLE",
195
+ "name": "team_id",
196
+ "description": "Team ID",
197
+ "type": "STRING"
198
+ },
199
+ {
200
+ "mode": "NULLABLE",
201
+ "name": "product_id",
202
+ "description": "Associated product ID",
203
+ "type": "STRING"
204
+ },
205
+ {
206
+ "mode": "NULLABLE",
207
+ "name": "account_id",
208
+ "description": "Associated account/organization ID",
209
+ "type": "STRING"
210
+ },
211
+ {
212
+ "mode": "NULLABLE",
213
+ "name": "thread_count",
214
+ "description": "Total number of threads",
215
+ "type": "STRING"
216
+ },
217
+ {
218
+ "mode": "NULLABLE",
219
+ "name": "comment_count",
220
+ "description": "Number of public comments",
221
+ "type": "STRING"
222
+ },
223
+ {
224
+ "mode": "NULLABLE",
225
+ "name": "attachment_count",
226
+ "description": "Number of attachments",
227
+ "type": "STRING"
228
+ },
229
+ {
230
+ "mode": "NULLABLE",
231
+ "name": "task_count",
232
+ "description": "Number of tasks",
233
+ "type": "STRING"
234
+ },
235
+ {
236
+ "mode": "NULLABLE",
237
+ "name": "time_entry_count",
238
+ "description": "Number of time entries",
239
+ "type": "STRING"
240
+ },
241
+ {
242
+ "mode": "NULLABLE",
243
+ "name": "approval_count",
244
+ "description": "Number of approvals",
245
+ "type": "STRING"
246
+ },
247
+ {
248
+ "mode": "NULLABLE",
249
+ "name": "tag_count",
250
+ "description": "Number of tags",
251
+ "type": "STRING"
252
+ },
253
+ {
254
+ "mode": "NULLABLE",
255
+ "name": "follower_count",
256
+ "description": "Number of followers",
257
+ "type": "STRING"
258
+ },
259
+ {
260
+ "mode": "NULLABLE",
261
+ "name": "layout_id",
262
+ "description": "Ticket layout ID",
263
+ "type": "STRING"
264
+ },
265
+ {
266
+ "mode": "NULLABLE",
267
+ "name": "web_url",
268
+ "description": "Direct link to ticket in Zoho Desk",
269
+ "type": "STRING"
270
+ },
271
+ {
272
+ "mode": "NULLABLE",
273
+ "name": "portal_url",
274
+ "description": "Customer portal URL",
275
+ "type": "STRING"
276
+ },
277
+ {
278
+ "mode": "NULLABLE",
279
+ "name": "email",
280
+ "description": "Primary email (usually same as contact.email)",
281
+ "type": "STRING"
282
+ },
283
+ {
284
+ "mode": "NULLABLE",
285
+ "name": "email_hash",
286
+ "description": "SHA-256 Base64 hash of email",
287
+ "type": "STRING"
288
+ },
289
+ {
290
+ "mode": "NULLABLE",
291
+ "name": "channel_code",
292
+ "description": "Channel code",
293
+ "type": "STRING"
294
+ },
295
+ {
296
+ "mode": "NULLABLE",
297
+ "name": "sla_id",
298
+ "description": "Applied SLA ID",
299
+ "type": "STRING"
300
+ },
301
+ {
302
+ "mode": "NULLABLE",
303
+ "name": "contract_id",
304
+ "description": "Associated contract ID",
305
+ "type": "STRING"
306
+ },
307
+ {
308
+ "mode": "NULLABLE",
309
+ "name": "created_by",
310
+ "description": "User ID who created the ticket",
311
+ "type": "STRING"
312
+ },
313
+ {
314
+ "mode": "NULLABLE",
315
+ "name": "modified_by",
316
+ "description": "User ID who last modified the ticket",
317
+ "type": "STRING"
318
+ },
319
+ {
320
+ "mode": "NULLABLE",
321
+ "name": "sentiment",
322
+ "description": "Sentiment analysis result",
323
+ "type": "STRING"
324
+ },
325
+ {
326
+ "mode": "NULLABLE",
327
+ "name": "is_over_due",
328
+ "description": "Is ticket overdue",
329
+ "type": "BOOLEAN"
330
+ },
331
+ {
332
+ "mode": "NULLABLE",
333
+ "name": "is_response_overdue",
334
+ "description": "Is response overdue",
335
+ "type": "BOOLEAN"
336
+ },
337
+ {
338
+ "mode": "NULLABLE",
339
+ "name": "is_escalated",
340
+ "description": "Is ticket escalated",
341
+ "type": "BOOLEAN"
342
+ },
343
+ {
344
+ "mode": "NULLABLE",
345
+ "name": "is_archived",
346
+ "description": "Is ticket archived",
347
+ "type": "BOOLEAN"
348
+ },
349
+ {
350
+ "mode": "NULLABLE",
351
+ "name": "is_trashed",
352
+ "description": "Is ticket in trash",
353
+ "type": "BOOLEAN"
354
+ },
355
+ {
356
+ "mode": "NULLABLE",
357
+ "name": "is_deleted",
358
+ "description": "Is ticket deleted",
359
+ "type": "BOOLEAN"
360
+ },
361
+ {
362
+ "mode": "NULLABLE",
363
+ "name": "is_read",
364
+ "description": "Has ticket been read",
365
+ "type": "BOOLEAN"
366
+ },
367
+ {
368
+ "mode": "NULLABLE",
369
+ "name": "is_following",
370
+ "description": "Is current user following",
371
+ "type": "BOOLEAN"
372
+ },
373
+ {
374
+ "mode": "REPEATED",
375
+ "name": "custom_fields",
376
+ "description": "Flat map of custom fields using human-readable labels as keys",
377
+ "type": "RECORD",
378
+ "fields": [
379
+ {
380
+ "mode": "NULLABLE",
381
+ "name": "key",
382
+ "type": "STRING"
383
+ },
384
+ {
385
+ "mode": "NULLABLE",
386
+ "name": "value",
387
+ "type": "STRING"
388
+ }
389
+ ]
390
+ },
391
+ {
392
+ "mode": "REPEATED",
393
+ "name": "cf",
394
+ "description": "Alternative flat custom fields with cf_ prefix",
395
+ "type": "RECORD",
396
+ "fields": [
397
+ {
398
+ "mode": "NULLABLE",
399
+ "name": "key",
400
+ "type": "STRING"
401
+ },
402
+ {
403
+ "mode": "NULLABLE",
404
+ "name": "value",
405
+ "type": "STRING"
406
+ }
407
+ ]
408
+ },
409
+ {
410
+ "mode": "REPEATED",
411
+ "name": "channel_related_info",
412
+ "description": "Channel-specific metadata",
413
+ "type": "RECORD",
414
+ "fields": [
415
+ {
416
+ "mode": "NULLABLE",
417
+ "name": "key",
418
+ "type": "STRING"
419
+ },
420
+ {
421
+ "mode": "NULLABLE",
422
+ "name": "value",
423
+ "type": "STRING"
424
+ }
425
+ ]
426
+ },
427
+ {
428
+ "name": "source",
429
+ "description": "Source metadata",
430
+ "type": "RECORD",
431
+ "fields": [
432
+ {
433
+ "mode": "NULLABLE",
434
+ "name": "app_name",
435
+ "type": "STRING"
436
+ },
437
+ {
438
+ "mode": "NULLABLE",
439
+ "name": "ext_id",
440
+ "type": "STRING"
441
+ },
442
+ {
443
+ "mode": "NULLABLE",
444
+ "name": "permalink",
445
+ "type": "STRING"
446
+ },
447
+ {
448
+ "mode": "NULLABLE",
449
+ "name": "type",
450
+ "type": "STRING"
451
+ },
452
+ {
453
+ "mode": "NULLABLE",
454
+ "name": "uuid",
455
+ "type": "STRING"
456
+ },
457
+ {
458
+ "mode": "NULLABLE",
459
+ "name": "app_photo_url",
460
+ "type": "STRING"
461
+ }
462
+ ]
463
+ },
464
+ {
465
+ "mode": "REPEATED",
466
+ "name": "shared_departments",
467
+ "description": "Departments this ticket is shared with",
468
+ "type": "RECORD",
469
+ "fields": [
470
+ {
471
+ "mode": "NULLABLE",
472
+ "name": "id",
473
+ "type": "STRING"
474
+ },
475
+ {
476
+ "mode": "NULLABLE",
477
+ "name": "name",
478
+ "type": "STRING"
479
+ }
480
+ ]
481
+ },
482
+ {
483
+ "mode": "REPEATED",
484
+ "name": "secondary_contacts",
485
+ "description": "Additional contacts",
486
+ "type": "RECORD",
487
+ "fields": [
488
+ {
489
+ "mode": "NULLABLE",
490
+ "name": "id",
491
+ "type": "STRING"
492
+ },
493
+ {
494
+ "mode": "NULLABLE",
495
+ "name": "name",
496
+ "type": "STRING"
497
+ },
498
+ {
499
+ "mode": "NULLABLE",
500
+ "name": "first_name",
501
+ "type": "STRING"
502
+ },
503
+ {
504
+ "mode": "NULLABLE",
505
+ "name": "last_name",
506
+ "type": "STRING"
507
+ },
508
+ {
509
+ "mode": "NULLABLE",
510
+ "name": "email",
511
+ "type": "STRING"
512
+ },
513
+ {
514
+ "mode": "NULLABLE",
515
+ "name": "phone",
516
+ "type": "STRING"
517
+ },
518
+ {
519
+ "mode": "NULLABLE",
520
+ "name": "mobile",
521
+ "type": "STRING"
522
+ },
523
+ {
524
+ "mode": "NULLABLE",
525
+ "name": "photo_url",
526
+ "type": "STRING"
527
+ },
528
+ {
529
+ "mode": "NULLABLE",
530
+ "name": "company_name",
531
+ "type": "STRING"
532
+ },
533
+ {
534
+ "mode": "NULLABLE",
535
+ "name": "is_spam",
536
+ "type": "BOOLEAN"
537
+ },
538
+ {
539
+ "mode": "NULLABLE",
540
+ "name": "type",
541
+ "type": "STRING"
542
+ },
543
+ {
544
+ "mode": "REPEATED",
545
+ "name": "account",
546
+ "type": "RECORD",
547
+ "fields": [
548
+ {
549
+ "mode": "NULLABLE",
550
+ "name": "key",
551
+ "type": "STRING"
552
+ },
553
+ {
554
+ "mode": "NULLABLE",
555
+ "name": "value",
556
+ "type": "STRING"
557
+ }
558
+ ]
559
+ }
560
+ ]
561
+ },
562
+ {
563
+ "mode": "REPEATED",
564
+ "name": "entity_skills",
565
+ "description": "Required skills as strings",
566
+ "type": "RECORD",
567
+ "fields": [{
568
+ "mode": "NULLABLE",
569
+ "name": "value",
570
+ "type": "STRING"
571
+ }]
572
+ },
573
+ {
574
+ "mode": "REPEATED",
575
+ "name": "skills_info",
576
+ "description": "Skills routing information",
577
+ "type": "RECORD",
578
+ "fields": [
579
+ {
580
+ "mode": "NULLABLE",
581
+ "name": "id",
582
+ "type": "STRING"
583
+ },
584
+ {
585
+ "mode": "NULLABLE",
586
+ "name": "name",
587
+ "type": "STRING"
588
+ }
589
+ ]
590
+ },
591
+ {
592
+ "name": "contact",
593
+ "description": "Full contact object",
594
+ "type": "RECORD",
595
+ "fields": [
596
+ {
597
+ "mode": "NULLABLE",
598
+ "name": "id",
599
+ "type": "STRING"
600
+ },
601
+ {
602
+ "mode": "NULLABLE",
603
+ "name": "name",
604
+ "type": "STRING"
605
+ },
606
+ {
607
+ "mode": "NULLABLE",
608
+ "name": "first_name",
609
+ "type": "STRING"
610
+ },
611
+ {
612
+ "mode": "NULLABLE",
613
+ "name": "last_name",
614
+ "type": "STRING"
615
+ },
616
+ {
617
+ "mode": "NULLABLE",
618
+ "name": "email",
619
+ "type": "STRING"
620
+ },
621
+ {
622
+ "mode": "NULLABLE",
623
+ "name": "phone",
624
+ "type": "STRING"
625
+ },
626
+ {
627
+ "mode": "NULLABLE",
628
+ "name": "mobile",
629
+ "type": "STRING"
630
+ },
631
+ {
632
+ "mode": "NULLABLE",
633
+ "name": "photo_url",
634
+ "type": "STRING"
635
+ },
636
+ {
637
+ "mode": "NULLABLE",
638
+ "name": "company_name",
639
+ "type": "STRING"
640
+ },
641
+ {
642
+ "mode": "NULLABLE",
643
+ "name": "is_spam",
644
+ "type": "BOOLEAN"
645
+ },
646
+ {
647
+ "mode": "NULLABLE",
648
+ "name": "type",
649
+ "type": "STRING"
650
+ },
651
+ {
652
+ "mode": "REPEATED",
653
+ "name": "account",
654
+ "type": "RECORD",
655
+ "fields": [
656
+ {
657
+ "mode": "NULLABLE",
658
+ "name": "key",
659
+ "type": "STRING"
660
+ },
661
+ {
662
+ "mode": "NULLABLE",
663
+ "name": "value",
664
+ "type": "STRING"
665
+ }
666
+ ]
667
+ }
668
+ ]
669
+ },
670
+ {
671
+ "name": "assignee",
672
+ "description": "Full assignee (agent) object",
673
+ "type": "RECORD",
674
+ "fields": [
675
+ {
676
+ "mode": "NULLABLE",
677
+ "name": "id",
678
+ "type": "STRING"
679
+ },
680
+ {
681
+ "mode": "NULLABLE",
682
+ "name": "first_name",
683
+ "type": "STRING"
684
+ },
685
+ {
686
+ "mode": "NULLABLE",
687
+ "name": "last_name",
688
+ "type": "STRING"
689
+ },
690
+ {
691
+ "mode": "NULLABLE",
692
+ "name": "name",
693
+ "type": "STRING"
694
+ },
695
+ {
696
+ "mode": "NULLABLE",
697
+ "name": "email",
698
+ "type": "STRING"
699
+ },
700
+ {
701
+ "mode": "NULLABLE",
702
+ "name": "role_name",
703
+ "type": "STRING"
704
+ },
705
+ {
706
+ "mode": "NULLABLE",
707
+ "name": "photo_url",
708
+ "type": "STRING"
709
+ }
710
+ ]
711
+ },
712
+ {
713
+ "name": "team",
714
+ "description": "Full team object",
715
+ "type": "RECORD",
716
+ "fields": [
717
+ {
718
+ "mode": "NULLABLE",
719
+ "name": "id",
720
+ "type": "STRING"
721
+ },
722
+ {
723
+ "mode": "NULLABLE",
724
+ "name": "name",
725
+ "type": "STRING"
726
+ },
727
+ {
728
+ "mode": "NULLABLE",
729
+ "name": "logo_url",
730
+ "type": "STRING"
731
+ }
732
+ ]
733
+ },
734
+ {
735
+ "name": "product",
736
+ "description": "Full product object",
737
+ "type": "RECORD",
738
+ "fields": [
739
+ {
740
+ "mode": "NULLABLE",
741
+ "name": "id",
742
+ "type": "STRING"
743
+ },
744
+ {
745
+ "mode": "NULLABLE",
746
+ "name": "name",
747
+ "type": "STRING"
748
+ }
749
+ ]
750
+ },
751
+ {
752
+ "name": "department",
753
+ "description": "Department details",
754
+ "type": "RECORD",
755
+ "fields": [
756
+ {
757
+ "mode": "NULLABLE",
758
+ "name": "id",
759
+ "type": "STRING"
760
+ },
761
+ {
762
+ "mode": "NULLABLE",
763
+ "name": "name",
764
+ "type": "STRING"
765
+ }
766
+ ]
767
+ },
768
+ {
769
+ "name": "layout_details",
770
+ "description": "Layout information",
771
+ "type": "RECORD",
772
+ "fields": [
773
+ {
774
+ "mode": "NULLABLE",
775
+ "name": "id",
776
+ "type": "STRING"
777
+ },
778
+ {
779
+ "mode": "NULLABLE",
780
+ "name": "layout_name",
781
+ "type": "STRING"
782
+ }
783
+ ]
784
+ },
785
+ {
786
+ "mode": "REPEATED",
787
+ "name": "threads",
788
+ "description": "Array of all threads",
789
+ "type": "RECORD",
790
+ "fields": [
791
+ {
792
+ "mode": "NULLABLE",
793
+ "name": "id",
794
+ "type": "STRING"
795
+ },
796
+ {
797
+ "mode": "NULLABLE",
798
+ "name": "ticket_id",
799
+ "type": "STRING"
800
+ },
801
+ {
802
+ "mode": "NULLABLE",
803
+ "name": "direction",
804
+ "type": "STRING"
805
+ },
806
+ {
807
+ "mode": "NULLABLE",
808
+ "name": "content",
809
+ "type": "STRING"
810
+ },
811
+ {
812
+ "mode": "NULLABLE",
813
+ "name": "content_type",
814
+ "type": "STRING"
815
+ },
816
+ {
817
+ "mode": "NULLABLE",
818
+ "name": "is_public",
819
+ "type": "BOOLEAN"
820
+ },
821
+ {
822
+ "mode": "NULLABLE",
823
+ "name": "sent_time",
824
+ "type": "STRING"
825
+ },
826
+ {
827
+ "mode": "NULLABLE",
828
+ "name": "from_email_address",
829
+ "type": "STRING"
830
+ },
831
+ {
832
+ "mode": "REPEATED",
833
+ "name": "to_email_addresses",
834
+ "type": "RECORD",
835
+ "fields": [{
836
+ "mode": "NULLABLE",
837
+ "name": "value",
838
+ "type": "STRING"
839
+ }]
840
+ },
841
+ {
842
+ "mode": "REPEATED",
843
+ "name": "cc_email_addresses",
844
+ "type": "RECORD",
845
+ "fields": [{
846
+ "mode": "NULLABLE",
847
+ "name": "value",
848
+ "type": "STRING"
849
+ }]
850
+ },
851
+ {
852
+ "mode": "REPEATED",
853
+ "name": "bcc_email_addresses",
854
+ "type": "RECORD",
855
+ "fields": [{
856
+ "mode": "NULLABLE",
857
+ "name": "value",
858
+ "type": "STRING"
859
+ }]
860
+ },
861
+ {
862
+ "mode": "REPEATED",
863
+ "name": "attachments",
864
+ "type": "RECORD",
865
+ "fields": [
866
+ {
867
+ "mode": "NULLABLE",
868
+ "name": "id",
869
+ "type": "STRING"
870
+ },
871
+ {
872
+ "mode": "NULLABLE",
873
+ "name": "file_id",
874
+ "type": "STRING"
875
+ },
876
+ {
877
+ "mode": "NULLABLE",
878
+ "name": "file_name",
879
+ "type": "STRING"
880
+ },
881
+ {
882
+ "mode": "NULLABLE",
883
+ "name": "size",
884
+ "type": "INTEGER"
885
+ },
886
+ {
887
+ "mode": "NULLABLE",
888
+ "name": "file_url",
889
+ "type": "STRING"
890
+ },
891
+ {
892
+ "mode": "NULLABLE",
893
+ "name": "view_url",
894
+ "type": "STRING"
895
+ },
896
+ {
897
+ "mode": "NULLABLE",
898
+ "name": "content_type",
899
+ "type": "STRING"
900
+ },
901
+ {
902
+ "mode": "NULLABLE",
903
+ "name": "is_public",
904
+ "type": "BOOLEAN"
905
+ },
906
+ {
907
+ "mode": "NULLABLE",
908
+ "name": "creator_id",
909
+ "type": "STRING"
910
+ },
911
+ {
912
+ "mode": "NULLABLE",
913
+ "name": "uploaded_time",
914
+ "type": "STRING"
915
+ }
916
+ ]
917
+ },
918
+ {
919
+ "mode": "REPEATED",
920
+ "name": "mentions",
921
+ "type": "RECORD",
922
+ "fields": [{
923
+ "mode": "NULLABLE",
924
+ "name": "value",
925
+ "type": "STRING"
926
+ }]
927
+ },
928
+ {
929
+ "mode": "REPEATED",
930
+ "name": "hashtags",
931
+ "type": "RECORD",
932
+ "fields": [{
933
+ "mode": "NULLABLE",
934
+ "name": "value",
935
+ "type": "STRING"
936
+ }]
937
+ }
938
+ ]
939
+ },
940
+ {
941
+ "mode": "REPEATED",
942
+ "name": "attachments",
943
+ "description": "Array of top-level attachments",
944
+ "type": "RECORD",
945
+ "fields": [
946
+ {
947
+ "mode": "NULLABLE",
948
+ "name": "id",
949
+ "type": "STRING"
950
+ },
951
+ {
952
+ "mode": "NULLABLE",
953
+ "name": "file_id",
954
+ "type": "STRING"
955
+ },
956
+ {
957
+ "mode": "NULLABLE",
958
+ "name": "file_name",
959
+ "type": "STRING"
960
+ },
961
+ {
962
+ "mode": "NULLABLE",
963
+ "name": "size",
964
+ "type": "INTEGER"
965
+ },
966
+ {
967
+ "mode": "NULLABLE",
968
+ "name": "file_url",
969
+ "type": "STRING"
970
+ },
971
+ {
972
+ "mode": "NULLABLE",
973
+ "name": "view_url",
974
+ "type": "STRING"
975
+ },
976
+ {
977
+ "mode": "NULLABLE",
978
+ "name": "content_type",
979
+ "type": "STRING"
980
+ },
981
+ {
982
+ "mode": "NULLABLE",
983
+ "name": "is_public",
984
+ "type": "BOOLEAN"
985
+ },
986
+ {
987
+ "mode": "NULLABLE",
988
+ "name": "creator_id",
989
+ "type": "STRING"
990
+ },
991
+ {
992
+ "mode": "NULLABLE",
993
+ "name": "uploaded_time",
994
+ "type": "STRING"
995
+ }
996
+ ]
997
+ },
998
+ {
999
+ "mode": "REPEATED",
1000
+ "name": "comments",
1001
+ "description": "Array of all ticket comments",
1002
+ "type": "RECORD",
1003
+ "fields": [
1004
+ {
1005
+ "mode": "NULLABLE",
1006
+ "name": "id",
1007
+ "type": "STRING"
1008
+ },
1009
+ {
1010
+ "mode": "NULLABLE",
1011
+ "name": "ticket_id",
1012
+ "type": "STRING"
1013
+ },
1014
+ {
1015
+ "mode": "NULLABLE",
1016
+ "name": "content_hash",
1017
+ "description": "SHA-256 Base64 hash of content",
1018
+ "type": "STRING"
1019
+ },
1020
+ {
1021
+ "mode": "NULLABLE",
1022
+ "name": "content_type",
1023
+ "description": "Content format: html or plain",
1024
+ "type": "STRING"
1025
+ },
1026
+ {
1027
+ "mode": "NULLABLE",
1028
+ "name": "is_public",
1029
+ "type": "BOOLEAN"
1030
+ },
1031
+ {
1032
+ "mode": "NULLABLE",
1033
+ "name": "commented_time",
1034
+ "type": "STRING"
1035
+ },
1036
+ {
1037
+ "mode": "NULLABLE",
1038
+ "name": "modified_time",
1039
+ "type": "STRING"
1040
+ },
1041
+ {
1042
+ "mode": "NULLABLE",
1043
+ "name": "author_id",
1044
+ "type": "STRING"
1045
+ },
1046
+ {
1047
+ "mode": "NULLABLE",
1048
+ "name": "author_type",
1049
+ "type": "STRING"
1050
+ },
1051
+ {
1052
+ "name": "commenter",
1053
+ "description": "Full author details (agent or contact)",
1054
+ "type": "RECORD",
1055
+ "fields": [
1056
+ {
1057
+ "mode": "NULLABLE",
1058
+ "name": "id",
1059
+ "type": "STRING"
1060
+ },
1061
+ {
1062
+ "mode": "NULLABLE",
1063
+ "name": "name_hash",
1064
+ "type": "STRING"
1065
+ },
1066
+ {
1067
+ "mode": "NULLABLE",
1068
+ "name": "first_name_hash",
1069
+ "type": "STRING"
1070
+ },
1071
+ {
1072
+ "mode": "NULLABLE",
1073
+ "name": "last_name_hash",
1074
+ "type": "STRING"
1075
+ },
1076
+ {
1077
+ "mode": "NULLABLE",
1078
+ "name": "email_hash",
1079
+ "type": "STRING"
1080
+ },
1081
+ {
1082
+ "mode": "NULLABLE",
1083
+ "name": "photo_url",
1084
+ "type": "STRING"
1085
+ },
1086
+ {
1087
+ "mode": "NULLABLE",
1088
+ "name": "role_name",
1089
+ "type": "STRING"
1090
+ },
1091
+ {
1092
+ "mode": "NULLABLE",
1093
+ "name": "type",
1094
+ "type": "STRING"
1095
+ }
1096
+ ]
1097
+ },
1098
+ {
1099
+ "mode": "REPEATED",
1100
+ "name": "attachments",
1101
+ "type": "RECORD",
1102
+ "fields": [
1103
+ {
1104
+ "mode": "NULLABLE",
1105
+ "name": "id",
1106
+ "type": "STRING"
1107
+ },
1108
+ {
1109
+ "mode": "NULLABLE",
1110
+ "name": "file_id",
1111
+ "type": "STRING"
1112
+ },
1113
+ {
1114
+ "mode": "NULLABLE",
1115
+ "name": "file_name",
1116
+ "type": "STRING"
1117
+ },
1118
+ {
1119
+ "mode": "NULLABLE",
1120
+ "name": "size",
1121
+ "type": "INTEGER"
1122
+ },
1123
+ {
1124
+ "mode": "NULLABLE",
1125
+ "name": "file_url",
1126
+ "type": "STRING"
1127
+ },
1128
+ {
1129
+ "mode": "NULLABLE",
1130
+ "name": "view_url",
1131
+ "type": "STRING"
1132
+ },
1133
+ {
1134
+ "mode": "NULLABLE",
1135
+ "name": "content_type",
1136
+ "type": "STRING"
1137
+ },
1138
+ {
1139
+ "mode": "NULLABLE",
1140
+ "name": "is_public",
1141
+ "type": "BOOLEAN"
1142
+ },
1143
+ {
1144
+ "mode": "NULLABLE",
1145
+ "name": "creator_id",
1146
+ "type": "STRING"
1147
+ },
1148
+ {
1149
+ "mode": "NULLABLE",
1150
+ "name": "uploaded_time",
1151
+ "type": "STRING"
1152
+ }
1153
+ ]
1154
+ },
1155
+ {
1156
+ "mode": "REPEATED",
1157
+ "name": "mentions",
1158
+ "type": "RECORD",
1159
+ "fields": [
1160
+ {
1161
+ "mode": "NULLABLE",
1162
+ "name": "id",
1163
+ "type": "STRING"
1164
+ },
1165
+ {
1166
+ "mode": "NULLABLE",
1167
+ "name": "name",
1168
+ "type": "STRING"
1169
+ },
1170
+ {
1171
+ "mode": "NULLABLE",
1172
+ "name": "type",
1173
+ "type": "STRING"
1174
+ },
1175
+ {
1176
+ "mode": "NULLABLE",
1177
+ "name": "photo_url",
1178
+ "type": "STRING"
1179
+ }
1180
+ ]
1181
+ }
1182
+ ]
1183
+ }
1184
+ ]