@deepintel-ltd/buildlink-api-contracts 0.2.23

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 (278) hide show
  1. package/README.md +27 -0
  2. package/contracts/auth.d.ts +3641 -0
  3. package/contracts/auth.d.ts.map +1 -0
  4. package/contracts/auth.js +266 -0
  5. package/contracts/auth.js.map +1 -0
  6. package/contracts/billing.d.ts +2167 -0
  7. package/contracts/billing.d.ts.map +1 -0
  8. package/contracts/billing.js +55 -0
  9. package/contracts/billing.js.map +1 -0
  10. package/contracts/boq.d.ts +1214 -0
  11. package/contracts/boq.d.ts.map +1 -0
  12. package/contracts/boq.js +31 -0
  13. package/contracts/boq.js.map +1 -0
  14. package/contracts/budget.d.ts +10677 -0
  15. package/contracts/budget.d.ts.map +1 -0
  16. package/contracts/budget.js +599 -0
  17. package/contracts/budget.js.map +1 -0
  18. package/contracts/commercial.d.ts +1475 -0
  19. package/contracts/commercial.d.ts.map +1 -0
  20. package/contracts/commercial.js +40 -0
  21. package/contracts/commercial.js.map +1 -0
  22. package/contracts/communication.d.ts +5389 -0
  23. package/contracts/communication.d.ts.map +1 -0
  24. package/contracts/communication.js +255 -0
  25. package/contracts/communication.js.map +1 -0
  26. package/contracts/contractor-ledger.d.ts +1293 -0
  27. package/contracts/contractor-ledger.d.ts.map +1 -0
  28. package/contracts/contractor-ledger.js +41 -0
  29. package/contracts/contractor-ledger.js.map +1 -0
  30. package/contracts/daily-logs.d.ts +9132 -0
  31. package/contracts/daily-logs.d.ts.map +1 -0
  32. package/contracts/daily-logs.js +188 -0
  33. package/contracts/daily-logs.js.map +1 -0
  34. package/contracts/deficiencies.d.ts +11786 -0
  35. package/contracts/deficiencies.d.ts.map +1 -0
  36. package/contracts/deficiencies.js +312 -0
  37. package/contracts/deficiencies.js.map +1 -0
  38. package/contracts/directory.d.ts +3116 -0
  39. package/contracts/directory.d.ts.map +1 -0
  40. package/contracts/directory.js +117 -0
  41. package/contracts/directory.js.map +1 -0
  42. package/contracts/documents.d.ts +4944 -0
  43. package/contracts/documents.d.ts.map +1 -0
  44. package/contracts/documents.js +251 -0
  45. package/contracts/documents.js.map +1 -0
  46. package/contracts/drawings.d.ts +10552 -0
  47. package/contracts/drawings.d.ts.map +1 -0
  48. package/contracts/drawings.js +321 -0
  49. package/contracts/drawings.js.map +1 -0
  50. package/contracts/hub.d.ts +1174 -0
  51. package/contracts/hub.d.ts.map +1 -0
  52. package/contracts/hub.js +42 -0
  53. package/contracts/hub.js.map +1 -0
  54. package/contracts/index.d.ts +128 -0
  55. package/contracts/index.d.ts.map +1 -0
  56. package/contracts/index.js +119 -0
  57. package/contracts/index.js.map +1 -0
  58. package/contracts/integrations.d.ts +4163 -0
  59. package/contracts/integrations.d.ts.map +1 -0
  60. package/contracts/integrations.js +326 -0
  61. package/contracts/integrations.js.map +1 -0
  62. package/contracts/maps.d.ts +4911 -0
  63. package/contracts/maps.d.ts.map +1 -0
  64. package/contracts/maps.js +276 -0
  65. package/contracts/maps.js.map +1 -0
  66. package/contracts/meetings.d.ts +4194 -0
  67. package/contracts/meetings.d.ts.map +1 -0
  68. package/contracts/meetings.js +115 -0
  69. package/contracts/meetings.js.map +1 -0
  70. package/contracts/monitoring.d.ts +2749 -0
  71. package/contracts/monitoring.d.ts.map +1 -0
  72. package/contracts/monitoring.js +289 -0
  73. package/contracts/monitoring.js.map +1 -0
  74. package/contracts/packages.d.ts +1470 -0
  75. package/contracts/packages.d.ts.map +1 -0
  76. package/contracts/packages.js +74 -0
  77. package/contracts/packages.js.map +1 -0
  78. package/contracts/projects.d.ts +6281 -0
  79. package/contracts/projects.d.ts.map +1 -0
  80. package/contracts/projects.js +448 -0
  81. package/contracts/projects.js.map +1 -0
  82. package/contracts/proof.d.ts +962 -0
  83. package/contracts/proof.d.ts.map +1 -0
  84. package/contracts/proof.js +34 -0
  85. package/contracts/proof.js.map +1 -0
  86. package/contracts/qaqc.d.ts +1184 -0
  87. package/contracts/qaqc.d.ts.map +1 -0
  88. package/contracts/qaqc.js +35 -0
  89. package/contracts/qaqc.js.map +1 -0
  90. package/contracts/rbac.d.ts +5227 -0
  91. package/contracts/rbac.d.ts.map +1 -0
  92. package/contracts/rbac.js +357 -0
  93. package/contracts/rbac.js.map +1 -0
  94. package/contracts/reports.d.ts +8468 -0
  95. package/contracts/reports.d.ts.map +1 -0
  96. package/contracts/reports.js +377 -0
  97. package/contracts/reports.js.map +1 -0
  98. package/contracts/resources.d.ts +15870 -0
  99. package/contracts/resources.d.ts.map +1 -0
  100. package/contracts/resources.js +869 -0
  101. package/contracts/resources.js.map +1 -0
  102. package/contracts/rfi-submittal.d.ts +2545 -0
  103. package/contracts/rfi-submittal.d.ts.map +1 -0
  104. package/contracts/rfi-submittal.js +159 -0
  105. package/contracts/rfi-submittal.js.map +1 -0
  106. package/contracts/safety.d.ts +7162 -0
  107. package/contracts/safety.d.ts.map +1 -0
  108. package/contracts/safety.js +519 -0
  109. package/contracts/safety.js.map +1 -0
  110. package/contracts/schedule.d.ts +9456 -0
  111. package/contracts/schedule.d.ts.map +1 -0
  112. package/contracts/schedule.js +460 -0
  113. package/contracts/schedule.js.map +1 -0
  114. package/contracts/spec-equal.d.ts +841 -0
  115. package/contracts/spec-equal.d.ts.map +1 -0
  116. package/contracts/spec-equal.js +28 -0
  117. package/contracts/spec-equal.js.map +1 -0
  118. package/contracts/specifications.d.ts +15478 -0
  119. package/contracts/specifications.d.ts.map +1 -0
  120. package/contracts/specifications.js +521 -0
  121. package/contracts/specifications.js.map +1 -0
  122. package/contracts/tasks.d.ts +11037 -0
  123. package/contracts/tasks.d.ts.map +1 -0
  124. package/contracts/tasks.js +693 -0
  125. package/contracts/tasks.js.map +1 -0
  126. package/contracts/timecards.d.ts +3130 -0
  127. package/contracts/timecards.d.ts.map +1 -0
  128. package/contracts/timecards.js +133 -0
  129. package/contracts/timecards.js.map +1 -0
  130. package/contracts/transmittals.d.ts +3921 -0
  131. package/contracts/transmittals.d.ts.map +1 -0
  132. package/contracts/transmittals.js +156 -0
  133. package/contracts/transmittals.js.map +1 -0
  134. package/contracts/valuations.d.ts +3266 -0
  135. package/contracts/valuations.d.ts.map +1 -0
  136. package/contracts/valuations.js +116 -0
  137. package/contracts/valuations.js.map +1 -0
  138. package/package.json +216 -0
  139. package/schemas/auth.d.ts +449 -0
  140. package/schemas/auth.d.ts.map +1 -0
  141. package/schemas/auth.js +103 -0
  142. package/schemas/auth.js.map +1 -0
  143. package/schemas/billing.d.ts +710 -0
  144. package/schemas/billing.d.ts.map +1 -0
  145. package/schemas/billing.js +82 -0
  146. package/schemas/billing.js.map +1 -0
  147. package/schemas/boq.d.ts +385 -0
  148. package/schemas/boq.d.ts.map +1 -0
  149. package/schemas/boq.js +49 -0
  150. package/schemas/boq.js.map +1 -0
  151. package/schemas/budget.d.ts +737 -0
  152. package/schemas/budget.d.ts.map +1 -0
  153. package/schemas/budget.js +272 -0
  154. package/schemas/budget.js.map +1 -0
  155. package/schemas/commercial.d.ts +358 -0
  156. package/schemas/commercial.d.ts.map +1 -0
  157. package/schemas/commercial.js +36 -0
  158. package/schemas/commercial.js.map +1 -0
  159. package/schemas/common.d.ts +865 -0
  160. package/schemas/common.d.ts.map +1 -0
  161. package/schemas/common.js +193 -0
  162. package/schemas/common.js.map +1 -0
  163. package/schemas/communication.d.ts +884 -0
  164. package/schemas/communication.d.ts.map +1 -0
  165. package/schemas/communication.js +245 -0
  166. package/schemas/communication.js.map +1 -0
  167. package/schemas/contractor-ledger.d.ts +364 -0
  168. package/schemas/contractor-ledger.d.ts.map +1 -0
  169. package/schemas/contractor-ledger.js +36 -0
  170. package/schemas/contractor-ledger.js.map +1 -0
  171. package/schemas/cursor-pagination.d.ts +258 -0
  172. package/schemas/cursor-pagination.d.ts.map +1 -0
  173. package/schemas/cursor-pagination.js +84 -0
  174. package/schemas/cursor-pagination.js.map +1 -0
  175. package/schemas/daily-logs.d.ts +2339 -0
  176. package/schemas/daily-logs.d.ts.map +1 -0
  177. package/schemas/daily-logs.js +235 -0
  178. package/schemas/daily-logs.js.map +1 -0
  179. package/schemas/deficiencies.d.ts +2496 -0
  180. package/schemas/deficiencies.d.ts.map +1 -0
  181. package/schemas/deficiencies.js +338 -0
  182. package/schemas/deficiencies.js.map +1 -0
  183. package/schemas/directory.d.ts +783 -0
  184. package/schemas/directory.d.ts.map +1 -0
  185. package/schemas/directory.js +122 -0
  186. package/schemas/directory.js.map +1 -0
  187. package/schemas/documents.d.ts +202 -0
  188. package/schemas/documents.d.ts.map +1 -0
  189. package/schemas/documents.js +76 -0
  190. package/schemas/documents.js.map +1 -0
  191. package/schemas/drawings.d.ts +2042 -0
  192. package/schemas/drawings.d.ts.map +1 -0
  193. package/schemas/drawings.js +350 -0
  194. package/schemas/drawings.js.map +1 -0
  195. package/schemas/hub.d.ts +288 -0
  196. package/schemas/hub.d.ts.map +1 -0
  197. package/schemas/hub.js +32 -0
  198. package/schemas/hub.js.map +1 -0
  199. package/schemas/integrations.d.ts +508 -0
  200. package/schemas/integrations.d.ts.map +1 -0
  201. package/schemas/integrations.js +119 -0
  202. package/schemas/integrations.js.map +1 -0
  203. package/schemas/maps.d.ts +793 -0
  204. package/schemas/maps.d.ts.map +1 -0
  205. package/schemas/maps.js +118 -0
  206. package/schemas/maps.js.map +1 -0
  207. package/schemas/meetings.d.ts +888 -0
  208. package/schemas/meetings.d.ts.map +1 -0
  209. package/schemas/meetings.js +138 -0
  210. package/schemas/meetings.js.map +1 -0
  211. package/schemas/packages.d.ts +236 -0
  212. package/schemas/packages.d.ts.map +1 -0
  213. package/schemas/packages.js +53 -0
  214. package/schemas/packages.js.map +1 -0
  215. package/schemas/projects.d.ts +306 -0
  216. package/schemas/projects.d.ts.map +1 -0
  217. package/schemas/projects.js +92 -0
  218. package/schemas/projects.js.map +1 -0
  219. package/schemas/proof.d.ts +210 -0
  220. package/schemas/proof.d.ts.map +1 -0
  221. package/schemas/proof.js +26 -0
  222. package/schemas/proof.js.map +1 -0
  223. package/schemas/qaqc.d.ts +235 -0
  224. package/schemas/qaqc.d.ts.map +1 -0
  225. package/schemas/qaqc.js +47 -0
  226. package/schemas/qaqc.js.map +1 -0
  227. package/schemas/rbac.d.ts +730 -0
  228. package/schemas/rbac.d.ts.map +1 -0
  229. package/schemas/rbac.js +230 -0
  230. package/schemas/rbac.js.map +1 -0
  231. package/schemas/reports.d.ts +5729 -0
  232. package/schemas/reports.d.ts.map +1 -0
  233. package/schemas/reports.js +589 -0
  234. package/schemas/reports.js.map +1 -0
  235. package/schemas/resources.d.ts +5190 -0
  236. package/schemas/resources.d.ts.map +1 -0
  237. package/schemas/resources.js +678 -0
  238. package/schemas/resources.js.map +1 -0
  239. package/schemas/rfi.d.ts +877 -0
  240. package/schemas/rfi.d.ts.map +1 -0
  241. package/schemas/rfi.js +84 -0
  242. package/schemas/rfi.js.map +1 -0
  243. package/schemas/safety.d.ts +1080 -0
  244. package/schemas/safety.d.ts.map +1 -0
  245. package/schemas/safety.js +237 -0
  246. package/schemas/safety.js.map +1 -0
  247. package/schemas/schedule.d.ts +4657 -0
  248. package/schemas/schedule.d.ts.map +1 -0
  249. package/schemas/schedule.js +441 -0
  250. package/schemas/schedule.js.map +1 -0
  251. package/schemas/spec-equal.d.ts +162 -0
  252. package/schemas/spec-equal.d.ts.map +1 -0
  253. package/schemas/spec-equal.js +29 -0
  254. package/schemas/spec-equal.js.map +1 -0
  255. package/schemas/specifications.d.ts +5241 -0
  256. package/schemas/specifications.d.ts.map +1 -0
  257. package/schemas/specifications.js +426 -0
  258. package/schemas/specifications.js.map +1 -0
  259. package/schemas/submittal.d.ts +867 -0
  260. package/schemas/submittal.d.ts.map +1 -0
  261. package/schemas/submittal.js +87 -0
  262. package/schemas/submittal.js.map +1 -0
  263. package/schemas/tasks.d.ts +610 -0
  264. package/schemas/tasks.d.ts.map +1 -0
  265. package/schemas/tasks.js +133 -0
  266. package/schemas/tasks.js.map +1 -0
  267. package/schemas/timecards.d.ts +618 -0
  268. package/schemas/timecards.d.ts.map +1 -0
  269. package/schemas/timecards.js +80 -0
  270. package/schemas/timecards.js.map +1 -0
  271. package/schemas/transmittals.d.ts +662 -0
  272. package/schemas/transmittals.d.ts.map +1 -0
  273. package/schemas/transmittals.js +132 -0
  274. package/schemas/transmittals.js.map +1 -0
  275. package/schemas/valuations.d.ts +713 -0
  276. package/schemas/valuations.d.ts.map +1 -0
  277. package/schemas/valuations.js +116 -0
  278. package/schemas/valuations.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specifications.d.ts","sourceRoot":"","sources":["../../../src/contracts/specifications.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA8BxB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6iBjC,CAAC"}
@@ -0,0 +1,521 @@
1
+ import { initContract } from '@ts-rest/core';
2
+ import { z } from 'zod';
3
+ import { CuidSchema, JsonApiErrorResponseSchema, JsonApiResponseSchema } from '../schemas/common';
4
+ import { ApprovalStatusSchema, BulkOperationResponseSchema, BulkRemoveAttachmentsSchema, BulkSpecificationOperationSchema, CreateSpecificationSchema, CreateSpecificationVersionSchema, EnhancedSpecificationAnalyticsSchema, LinkedEntitiesSchema, MultiProjectAnalyticsSchema, PaginationQuerySchema, SpecificationAttachmentsResponseSchema, SpecificationFiltersSchema, SpecificationLinkSchema, SpecificationListResponseSchema, SpecificationResponseSchema, SpecificationSearchSchema, SpecificationVersionListResponseSchema, UpdateAttachmentSchema, UpdateSpecificationSchema, UploadAttachmentSchema, UserAnalyticsSchema, VersionComparisonSchema, } from '../schemas/specifications';
5
+ const c = initContract();
6
+ export const specificationsContract = c.router({
7
+ // ===== SPECIFICATION CRUD =====
8
+ getSpecifications: {
9
+ method: 'GET',
10
+ path: '/projects/:projectId/specifications',
11
+ pathParams: z.object({
12
+ projectId: CuidSchema,
13
+ }),
14
+ query: SpecificationFiltersSchema,
15
+ responses: {
16
+ 200: SpecificationListResponseSchema,
17
+ 400: JsonApiErrorResponseSchema,
18
+ 401: JsonApiErrorResponseSchema,
19
+ 403: JsonApiErrorResponseSchema,
20
+ 404: JsonApiErrorResponseSchema,
21
+ },
22
+ summary: 'Get project specifications with filtering',
23
+ description: 'Retrieve a paginated list of specifications for a project with optional filtering and search',
24
+ },
25
+ createSpecification: {
26
+ method: 'POST',
27
+ path: '/projects/:projectId/specifications',
28
+ pathParams: z.object({
29
+ projectId: CuidSchema,
30
+ }),
31
+ body: CreateSpecificationSchema,
32
+ responses: {
33
+ 201: SpecificationResponseSchema,
34
+ 400: JsonApiErrorResponseSchema,
35
+ 401: JsonApiErrorResponseSchema,
36
+ 403: JsonApiErrorResponseSchema,
37
+ 404: JsonApiErrorResponseSchema,
38
+ },
39
+ summary: 'Create a new specification',
40
+ description: 'Create a new specification document for a project',
41
+ },
42
+ getSpecification: {
43
+ method: 'GET',
44
+ path: '/specifications/:specificationId',
45
+ pathParams: z.object({
46
+ specificationId: CuidSchema,
47
+ }),
48
+ responses: {
49
+ 200: SpecificationResponseSchema,
50
+ 401: JsonApiErrorResponseSchema,
51
+ 403: JsonApiErrorResponseSchema,
52
+ 404: JsonApiErrorResponseSchema,
53
+ },
54
+ summary: 'Get specification by ID',
55
+ description: 'Retrieve a specific specification with all sections and metadata',
56
+ },
57
+ updateSpecification: {
58
+ method: 'PUT',
59
+ path: '/specifications/:specificationId',
60
+ pathParams: z.object({
61
+ specificationId: CuidSchema,
62
+ }),
63
+ body: UpdateSpecificationSchema,
64
+ responses: {
65
+ 200: SpecificationResponseSchema,
66
+ 400: JsonApiErrorResponseSchema,
67
+ 401: JsonApiErrorResponseSchema,
68
+ 403: JsonApiErrorResponseSchema,
69
+ 404: JsonApiErrorResponseSchema,
70
+ },
71
+ summary: 'Update a specification',
72
+ description: 'Update specification content, metadata, or relationships',
73
+ },
74
+ deleteSpecification: {
75
+ method: 'DELETE',
76
+ path: '/specifications/:specificationId',
77
+ pathParams: z.object({
78
+ specificationId: CuidSchema,
79
+ }),
80
+ body: null,
81
+ responses: {
82
+ 204: z.undefined(),
83
+ 401: JsonApiErrorResponseSchema,
84
+ 403: JsonApiErrorResponseSchema,
85
+ 404: JsonApiErrorResponseSchema,
86
+ },
87
+ summary: 'Delete a specification',
88
+ description: 'Delete a specification (only if not approved or linked)',
89
+ },
90
+ // ===== VERSION MANAGEMENT =====
91
+ getSpecificationVersions: {
92
+ method: 'GET',
93
+ path: '/specifications/:specificationId/versions',
94
+ pathParams: z.object({
95
+ specificationId: CuidSchema,
96
+ }),
97
+ query: PaginationQuerySchema,
98
+ responses: {
99
+ 200: SpecificationVersionListResponseSchema,
100
+ 401: JsonApiErrorResponseSchema,
101
+ 403: JsonApiErrorResponseSchema,
102
+ 404: JsonApiErrorResponseSchema,
103
+ },
104
+ summary: 'Get specification version history',
105
+ description: 'Retrieve all versions of a specification with change tracking',
106
+ },
107
+ createSpecificationVersion: {
108
+ method: 'POST',
109
+ path: '/specifications/:specificationId/versions',
110
+ pathParams: z.object({
111
+ specificationId: CuidSchema,
112
+ }),
113
+ body: CreateSpecificationVersionSchema,
114
+ responses: {
115
+ 201: SpecificationResponseSchema,
116
+ 400: JsonApiErrorResponseSchema,
117
+ 401: JsonApiErrorResponseSchema,
118
+ 403: JsonApiErrorResponseSchema,
119
+ 404: JsonApiErrorResponseSchema,
120
+ },
121
+ summary: 'Create new specification version',
122
+ description: 'Create a new version of an existing specification',
123
+ },
124
+ setCurrentVersion: {
125
+ method: 'PUT',
126
+ path: '/specifications/:specificationId/versions/:versionId/current',
127
+ pathParams: z.object({
128
+ specificationId: CuidSchema,
129
+ versionId: CuidSchema,
130
+ }),
131
+ body: null,
132
+ responses: {
133
+ 200: SpecificationResponseSchema,
134
+ 400: JsonApiErrorResponseSchema,
135
+ 401: JsonApiErrorResponseSchema,
136
+ 403: JsonApiErrorResponseSchema,
137
+ 404: JsonApiErrorResponseSchema,
138
+ },
139
+ summary: 'Set version as current',
140
+ description: 'Set a specific version as the current active version',
141
+ },
142
+ compareVersions: {
143
+ method: 'GET',
144
+ path: '/specifications/:specificationId/versions/:fromVersionId/compare/:toVersionId',
145
+ pathParams: z.object({
146
+ specificationId: CuidSchema,
147
+ fromVersionId: CuidSchema,
148
+ toVersionId: CuidSchema,
149
+ }),
150
+ responses: {
151
+ 200: JsonApiResponseSchema(VersionComparisonSchema),
152
+ 401: JsonApiErrorResponseSchema,
153
+ 403: JsonApiErrorResponseSchema,
154
+ 404: JsonApiErrorResponseSchema,
155
+ },
156
+ summary: 'Compare specification versions',
157
+ description: 'Compare two versions of a specification to see changes',
158
+ },
159
+ // ===== APPROVAL WORKFLOW =====
160
+ submitForApproval: {
161
+ method: 'POST',
162
+ path: '/specifications/:specificationId/submit',
163
+ pathParams: z.object({
164
+ specificationId: CuidSchema,
165
+ }),
166
+ body: z.object({
167
+ submissionNotes: z.string().max(1000).optional(),
168
+ }),
169
+ responses: {
170
+ 200: SpecificationResponseSchema,
171
+ 400: JsonApiErrorResponseSchema,
172
+ 401: JsonApiErrorResponseSchema,
173
+ 403: JsonApiErrorResponseSchema,
174
+ 404: JsonApiErrorResponseSchema,
175
+ },
176
+ summary: 'Submit specification for approval',
177
+ description: 'Submit a draft specification for review and approval',
178
+ },
179
+ approveSpecification: {
180
+ method: 'POST',
181
+ path: '/specifications/:specificationId/approve',
182
+ pathParams: z.object({
183
+ specificationId: CuidSchema,
184
+ }),
185
+ body: z.object({
186
+ approvalNotes: z.string().max(1000).optional(),
187
+ approvedSections: z.array(CuidSchema).optional(),
188
+ }),
189
+ responses: {
190
+ 200: SpecificationResponseSchema,
191
+ 400: JsonApiErrorResponseSchema,
192
+ 401: JsonApiErrorResponseSchema,
193
+ 403: JsonApiErrorResponseSchema,
194
+ 404: JsonApiErrorResponseSchema,
195
+ },
196
+ summary: 'Approve a specification',
197
+ description: 'Approve a specification for use in construction',
198
+ },
199
+ rejectSpecification: {
200
+ method: 'POST',
201
+ path: '/specifications/:specificationId/reject',
202
+ pathParams: z.object({
203
+ specificationId: CuidSchema,
204
+ }),
205
+ body: z.object({
206
+ rejectionNotes: z.string().min(1).max(1000),
207
+ }),
208
+ responses: {
209
+ 200: SpecificationResponseSchema,
210
+ 400: JsonApiErrorResponseSchema,
211
+ 401: JsonApiErrorResponseSchema,
212
+ 403: JsonApiErrorResponseSchema,
213
+ 404: JsonApiErrorResponseSchema,
214
+ },
215
+ summary: 'Reject a specification',
216
+ description: 'Reject a specification with required notes',
217
+ },
218
+ withdrawFromApproval: {
219
+ method: 'POST',
220
+ path: '/specifications/:specificationId/withdraw',
221
+ pathParams: z.object({
222
+ specificationId: CuidSchema,
223
+ }),
224
+ body: z.object({
225
+ withdrawalNotes: z.string().max(1000).optional(),
226
+ }),
227
+ responses: {
228
+ 200: SpecificationResponseSchema,
229
+ 400: JsonApiErrorResponseSchema,
230
+ 401: JsonApiErrorResponseSchema,
231
+ 403: JsonApiErrorResponseSchema,
232
+ 404: JsonApiErrorResponseSchema,
233
+ },
234
+ summary: 'Withdraw specification from approval',
235
+ description: 'Withdraw a specification from the approval process',
236
+ },
237
+ supersedeSpecification: {
238
+ method: 'POST',
239
+ path: '/specifications/:specificationId/supersede',
240
+ pathParams: z.object({
241
+ specificationId: CuidSchema,
242
+ }),
243
+ body: z.object({
244
+ supersessionNotes: z.string().max(1000).optional(),
245
+ }),
246
+ responses: {
247
+ 200: SpecificationResponseSchema,
248
+ 400: JsonApiErrorResponseSchema,
249
+ 401: JsonApiErrorResponseSchema,
250
+ 403: JsonApiErrorResponseSchema,
251
+ 404: JsonApiErrorResponseSchema,
252
+ },
253
+ summary: 'Supersede a specification',
254
+ description: 'Mark an approved specification as superseded',
255
+ },
256
+ getApprovalStatus: {
257
+ method: 'GET',
258
+ path: '/specifications/:specificationId/approval-status',
259
+ pathParams: z.object({
260
+ specificationId: CuidSchema,
261
+ }),
262
+ responses: {
263
+ 200: JsonApiResponseSchema(z.object({
264
+ type: z.literal('approval-status'),
265
+ id: z.string(),
266
+ attributes: ApprovalStatusSchema,
267
+ })),
268
+ 401: JsonApiErrorResponseSchema,
269
+ 403: JsonApiErrorResponseSchema,
270
+ 404: JsonApiErrorResponseSchema,
271
+ },
272
+ summary: 'Get approval status and permissions',
273
+ description: 'Get detailed approval status and user permissions for a specification',
274
+ },
275
+ // ===== BULK OPERATIONS =====
276
+ bulkApproveSpecifications: {
277
+ method: 'POST',
278
+ path: '/specifications/bulk/approve',
279
+ body: BulkSpecificationOperationSchema.extend({
280
+ approvalNotes: z.string().max(1000).optional(),
281
+ }),
282
+ responses: {
283
+ 200: BulkOperationResponseSchema,
284
+ 400: JsonApiErrorResponseSchema,
285
+ 401: JsonApiErrorResponseSchema,
286
+ 403: JsonApiErrorResponseSchema,
287
+ },
288
+ summary: 'Bulk approve specifications',
289
+ description: 'Approve multiple specifications at once',
290
+ },
291
+ // ===== RELATIONSHIP MANAGEMENT =====
292
+ linkSpecificationToEntities: {
293
+ method: 'POST',
294
+ path: '/specifications/:specificationId/links',
295
+ pathParams: z.object({
296
+ specificationId: CuidSchema,
297
+ }),
298
+ body: SpecificationLinkSchema,
299
+ responses: {
300
+ 200: SpecificationResponseSchema,
301
+ 400: JsonApiErrorResponseSchema,
302
+ 401: JsonApiErrorResponseSchema,
303
+ 403: JsonApiErrorResponseSchema,
304
+ 404: JsonApiErrorResponseSchema,
305
+ },
306
+ summary: 'Link specification to tasks/submittals/RFIs',
307
+ description: 'Create relationships between specifications and other project entities',
308
+ },
309
+ unlinkSpecificationFromEntities: {
310
+ method: 'DELETE',
311
+ path: '/specifications/:specificationId/links',
312
+ pathParams: z.object({
313
+ specificationId: CuidSchema,
314
+ }),
315
+ body: SpecificationLinkSchema,
316
+ responses: {
317
+ 200: SpecificationResponseSchema,
318
+ 400: JsonApiErrorResponseSchema,
319
+ 401: JsonApiErrorResponseSchema,
320
+ 403: JsonApiErrorResponseSchema,
321
+ 404: JsonApiErrorResponseSchema,
322
+ },
323
+ summary: 'Unlink specification from tasks/submittals/RFIs',
324
+ description: 'Remove relationships between specifications and other project entities',
325
+ },
326
+ getLinkedEntities: {
327
+ method: 'GET',
328
+ path: '/specifications/:specificationId/links',
329
+ pathParams: z.object({
330
+ specificationId: CuidSchema,
331
+ }),
332
+ responses: {
333
+ 200: JsonApiResponseSchema(LinkedEntitiesSchema),
334
+ 401: JsonApiErrorResponseSchema,
335
+ 403: JsonApiErrorResponseSchema,
336
+ 404: JsonApiErrorResponseSchema,
337
+ },
338
+ summary: 'Get linked entities',
339
+ description: 'Get all tasks, submittals, and RFIs linked to a specification',
340
+ },
341
+ bulkLinkToEntities: {
342
+ method: 'POST',
343
+ path: '/specifications/bulk/link',
344
+ body: z.object({
345
+ specificationIds: z.array(CuidSchema).min(1).max(50),
346
+ entityLinks: SpecificationLinkSchema,
347
+ }),
348
+ responses: {
349
+ 200: BulkOperationResponseSchema,
350
+ 400: JsonApiErrorResponseSchema,
351
+ 401: JsonApiErrorResponseSchema,
352
+ 403: JsonApiErrorResponseSchema,
353
+ },
354
+ summary: 'Bulk link specifications to entities',
355
+ description: 'Link multiple specifications to tasks, submittals, or RFIs',
356
+ },
357
+ // ===== FILE MANAGEMENT =====
358
+ getAttachments: {
359
+ method: 'GET',
360
+ path: '/specifications/:specificationId/attachments',
361
+ pathParams: z.object({
362
+ specificationId: CuidSchema,
363
+ }),
364
+ query: PaginationQuerySchema,
365
+ responses: {
366
+ 200: JsonApiResponseSchema(SpecificationAttachmentsResponseSchema),
367
+ 401: JsonApiErrorResponseSchema,
368
+ 403: JsonApiErrorResponseSchema,
369
+ 404: JsonApiErrorResponseSchema,
370
+ },
371
+ summary: 'Get specification attachments',
372
+ description: 'Get all file attachments for a specification',
373
+ },
374
+ uploadSpecificationAttachment: {
375
+ method: 'POST',
376
+ path: '/specifications/:specificationId/attachments',
377
+ pathParams: z.object({
378
+ specificationId: CuidSchema,
379
+ }),
380
+ body: UploadAttachmentSchema,
381
+ responses: {
382
+ 201: SpecificationResponseSchema,
383
+ 400: JsonApiErrorResponseSchema,
384
+ 401: JsonApiErrorResponseSchema,
385
+ 403: JsonApiErrorResponseSchema,
386
+ 404: JsonApiErrorResponseSchema,
387
+ },
388
+ summary: 'Upload specification attachment',
389
+ description: 'Add a file attachment to a specification',
390
+ },
391
+ updateAttachment: {
392
+ method: 'PUT',
393
+ path: '/specifications/:specificationId/attachments/:attachmentId',
394
+ pathParams: z.object({
395
+ specificationId: CuidSchema,
396
+ attachmentId: CuidSchema,
397
+ }),
398
+ body: UpdateAttachmentSchema,
399
+ responses: {
400
+ 200: SpecificationResponseSchema,
401
+ 400: JsonApiErrorResponseSchema,
402
+ 401: JsonApiErrorResponseSchema,
403
+ 403: JsonApiErrorResponseSchema,
404
+ 404: JsonApiErrorResponseSchema,
405
+ },
406
+ summary: 'Update attachment metadata',
407
+ description: 'Update attachment filename or other metadata',
408
+ },
409
+ deleteSpecificationAttachment: {
410
+ method: 'DELETE',
411
+ path: '/specifications/:specificationId/attachments/:attachmentId',
412
+ pathParams: z.object({
413
+ specificationId: CuidSchema,
414
+ attachmentId: CuidSchema,
415
+ }),
416
+ body: null,
417
+ responses: {
418
+ 204: z.undefined(),
419
+ 401: JsonApiErrorResponseSchema,
420
+ 403: JsonApiErrorResponseSchema,
421
+ 404: JsonApiErrorResponseSchema,
422
+ },
423
+ summary: 'Delete specification attachment',
424
+ description: 'Remove a file attachment from a specification',
425
+ },
426
+ bulkRemoveAttachments: {
427
+ method: 'DELETE',
428
+ path: '/specifications/:specificationId/attachments/bulk',
429
+ pathParams: z.object({
430
+ specificationId: CuidSchema,
431
+ }),
432
+ body: BulkRemoveAttachmentsSchema,
433
+ responses: {
434
+ 200: BulkOperationResponseSchema,
435
+ 400: JsonApiErrorResponseSchema,
436
+ 401: JsonApiErrorResponseSchema,
437
+ 403: JsonApiErrorResponseSchema,
438
+ 404: JsonApiErrorResponseSchema,
439
+ },
440
+ summary: 'Bulk remove attachments',
441
+ description: 'Remove multiple attachments from a specification',
442
+ },
443
+ // ===== SEARCH & ANALYTICS =====
444
+ searchSpecifications: {
445
+ method: 'GET',
446
+ path: '/projects/:projectId/specifications/search',
447
+ pathParams: z.object({
448
+ projectId: CuidSchema,
449
+ }),
450
+ query: SpecificationSearchSchema,
451
+ responses: {
452
+ 200: SpecificationListResponseSchema,
453
+ 400: JsonApiErrorResponseSchema,
454
+ 401: JsonApiErrorResponseSchema,
455
+ 403: JsonApiErrorResponseSchema,
456
+ },
457
+ summary: 'Search specifications',
458
+ description: 'Full-text search across specification titles, descriptions, and optionally content',
459
+ },
460
+ getSpecificationAnalytics: {
461
+ method: 'GET',
462
+ path: '/projects/:projectId/specifications/analytics',
463
+ pathParams: z.object({
464
+ projectId: CuidSchema,
465
+ }),
466
+ query: z.object({
467
+ startDate: z.string().datetime().optional(),
468
+ endDate: z.string().datetime().optional(),
469
+ }),
470
+ responses: {
471
+ 200: JsonApiResponseSchema(z.object({
472
+ type: z.literal('specification-analytics'),
473
+ id: z.string(),
474
+ attributes: EnhancedSpecificationAnalyticsSchema,
475
+ })),
476
+ 401: JsonApiErrorResponseSchema,
477
+ 403: JsonApiErrorResponseSchema,
478
+ 404: JsonApiErrorResponseSchema,
479
+ },
480
+ summary: 'Get enhanced specification analytics',
481
+ description: 'Retrieve comprehensive analytics and metrics for project specifications',
482
+ },
483
+ getMultiProjectAnalytics: {
484
+ method: 'GET',
485
+ path: '/specifications/analytics/multi-project',
486
+ query: z.object({
487
+ projectIds: z.array(CuidSchema).min(1).max(20),
488
+ startDate: z.string().datetime().optional(),
489
+ endDate: z.string().datetime().optional(),
490
+ }),
491
+ responses: {
492
+ 200: JsonApiResponseSchema(MultiProjectAnalyticsSchema),
493
+ 401: JsonApiErrorResponseSchema,
494
+ 403: JsonApiErrorResponseSchema,
495
+ 404: JsonApiErrorResponseSchema,
496
+ },
497
+ summary: 'Get multi-project analytics',
498
+ description: 'Get analytics across multiple projects (requires management permissions)',
499
+ },
500
+ getUserAnalytics: {
501
+ method: 'GET',
502
+ path: '/specifications/analytics/user',
503
+ query: z.object({
504
+ targetUserId: CuidSchema.optional(),
505
+ startDate: z.string().datetime().optional(),
506
+ endDate: z.string().datetime().optional(),
507
+ }),
508
+ responses: {
509
+ 200: JsonApiResponseSchema(z.object({
510
+ type: z.literal('user-analytics'),
511
+ id: z.string(),
512
+ attributes: UserAnalyticsSchema,
513
+ })),
514
+ 401: JsonApiErrorResponseSchema,
515
+ 403: JsonApiErrorResponseSchema,
516
+ },
517
+ summary: 'Get user-specific analytics',
518
+ description: 'Get analytics for a specific user (own data or others with permissions)',
519
+ },
520
+ });
521
+ //# sourceMappingURL=specifications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specifications.js","sourceRoot":"","sources":["../../../src/contracts/specifications.ts"],"names":[],"mappings":"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"}