@cmarket/partner-sdk 25.2.0 → 31.1.0

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 (968) hide show
  1. package/README.md +81 -18
  2. package/api/oauth-api.ts +75 -2
  3. package/api/partner-v1-api.ts +14 -14
  4. package/api/partner-v2-api.ts +1593 -258
  5. package/api/well-known-api.ts +2 -2
  6. package/api.ts +2 -2
  7. package/base.ts +2 -2
  8. package/common.ts +2 -2
  9. package/configuration.ts +2 -2
  10. package/dist/api/oauth-api.d.ts +36 -2
  11. package/dist/api/oauth-api.js +69 -2
  12. package/dist/api/partner-v1-api.d.ts +2 -2
  13. package/dist/api/partner-v1-api.js +14 -14
  14. package/dist/api/partner-v2-api.d.ts +763 -171
  15. package/dist/api/partner-v2-api.js +1500 -250
  16. package/dist/api/well-known-api.d.ts +2 -2
  17. package/dist/api/well-known-api.js +2 -2
  18. package/dist/api.d.ts +2 -2
  19. package/dist/api.js +2 -2
  20. package/dist/base.d.ts +2 -2
  21. package/dist/base.js +2 -2
  22. package/dist/common.d.ts +2 -2
  23. package/dist/common.js +2 -2
  24. package/dist/configuration.d.ts +2 -2
  25. package/dist/configuration.js +2 -2
  26. package/dist/esm/api/oauth-api.d.ts +36 -2
  27. package/dist/esm/api/oauth-api.js +69 -2
  28. package/dist/esm/api/partner-v1-api.d.ts +2 -2
  29. package/dist/esm/api/partner-v1-api.js +14 -14
  30. package/dist/esm/api/partner-v2-api.d.ts +763 -171
  31. package/dist/esm/api/partner-v2-api.js +1500 -250
  32. package/dist/esm/api/well-known-api.d.ts +2 -2
  33. package/dist/esm/api/well-known-api.js +2 -2
  34. package/dist/esm/api.d.ts +2 -2
  35. package/dist/esm/api.js +2 -2
  36. package/dist/esm/base.d.ts +2 -2
  37. package/dist/esm/base.js +2 -2
  38. package/dist/esm/common.d.ts +2 -2
  39. package/dist/esm/common.js +2 -2
  40. package/dist/esm/configuration.d.ts +2 -2
  41. package/dist/esm/configuration.js +2 -2
  42. package/dist/esm/index.d.ts +2 -2
  43. package/dist/esm/index.js +2 -2
  44. package/dist/esm/models/acceptance-result-response-dto.d.ts +2 -2
  45. package/dist/esm/models/acceptance-result-response-dto.js +2 -2
  46. package/dist/esm/models/acceptance-result-v1-response-dto.d.ts +2 -2
  47. package/dist/esm/models/acceptance-result-v1-response-dto.js +2 -2
  48. package/dist/esm/models/acceptance-status-response-dto.d.ts +33 -0
  49. package/dist/esm/models/acceptance-status-response-dto.js +14 -0
  50. package/dist/esm/models/acknowledge-product-receipt200-response.d.ts +21 -0
  51. package/dist/esm/models/acknowledge-product-receipt200-response.js +14 -0
  52. package/dist/esm/models/acknowledge-products-request-dto.d.ts +17 -0
  53. package/dist/esm/models/acknowledge-products-request-dto.js +14 -0
  54. package/dist/esm/models/acknowledge-products-v1-request-dto.d.ts +2 -2
  55. package/dist/esm/models/acknowledge-products-v1-request-dto.js +2 -2
  56. package/dist/esm/models/authorization-server-metadata-dto.d.ts +6 -2
  57. package/dist/esm/models/authorization-server-metadata-dto.js +2 -2
  58. package/dist/esm/models/award-method-public.d.ts +2 -2
  59. package/dist/esm/models/award-method-public.js +2 -2
  60. package/dist/esm/models/award-registered-response-dto.d.ts +2 -2
  61. package/dist/esm/models/award-registered-response-dto.js +2 -2
  62. package/dist/esm/models/award-registered-v2-response-dto.d.ts +2 -2
  63. package/dist/esm/models/award-registered-v2-response-dto.js +2 -2
  64. package/dist/esm/models/award-reverted-v2-response-dto.d.ts +25 -0
  65. package/dist/esm/models/award-reverted-v2-response-dto.js +16 -0
  66. package/dist/esm/models/bid-attachment-v1-dto.d.ts +2 -2
  67. package/dist/esm/models/bid-attachment-v1-dto.js +2 -2
  68. package/dist/esm/models/bid-bond-dto.d.ts +2 -2
  69. package/dist/esm/models/bid-bond-dto.js +2 -2
  70. package/dist/esm/models/bid-bond-v1-dto.d.ts +2 -2
  71. package/dist/esm/models/bid-bond-v1-dto.js +2 -2
  72. package/dist/esm/models/bid-cancelled-response-dto.d.ts +25 -0
  73. package/dist/esm/models/bid-cancelled-response-dto.js +16 -0
  74. package/dist/esm/models/bid-contact-dto.d.ts +2 -2
  75. package/dist/esm/models/bid-contact-dto.js +2 -2
  76. package/dist/esm/models/bid-contacts-dto.d.ts +2 -2
  77. package/dist/esm/models/bid-contacts-dto.js +2 -2
  78. package/dist/esm/models/bid-contract-document-dto.d.ts +60 -0
  79. package/dist/esm/models/bid-contract-document-dto.js +19 -0
  80. package/dist/esm/models/bid-contract-documents-batch-v1-request-dto.d.ts +2 -2
  81. package/dist/esm/models/bid-contract-documents-batch-v1-request-dto.js +2 -2
  82. package/dist/esm/models/bid-contract-documents-v1-response-dto.d.ts +2 -2
  83. package/dist/esm/models/bid-contract-documents-v1-response-dto.js +2 -2
  84. package/dist/esm/models/bid-created-response-dto.d.ts +2 -2
  85. package/dist/esm/models/bid-created-response-dto.js +2 -2
  86. package/dist/esm/models/bid-delivery-terms-dto.d.ts +2 -2
  87. package/dist/esm/models/bid-delivery-terms-dto.js +2 -2
  88. package/dist/esm/models/bid-detail-response-dto.d.ts +2 -2
  89. package/dist/esm/models/bid-detail-response-dto.js +2 -2
  90. package/dist/esm/models/bid-document-dto.d.ts +2 -2
  91. package/dist/esm/models/bid-document-dto.js +2 -2
  92. package/dist/esm/models/bid-document-v1-dto.d.ts +2 -2
  93. package/dist/esm/models/bid-document-v1-dto.js +2 -2
  94. package/dist/esm/models/bid-failed-response-dto.d.ts +2 -2
  95. package/dist/esm/models/bid-failed-response-dto.js +2 -2
  96. package/dist/esm/models/bid-failed-v2-response-dto.d.ts +2 -2
  97. package/dist/esm/models/bid-failed-v2-response-dto.js +2 -2
  98. package/dist/esm/models/bid-failure-reason.d.ts +2 -2
  99. package/dist/esm/models/bid-failure-reason.js +2 -2
  100. package/dist/esm/models/bid-item-dto.d.ts +2 -2
  101. package/dist/esm/models/bid-item-dto.js +2 -2
  102. package/dist/esm/models/bid-item-v1-dto.d.ts +2 -2
  103. package/dist/esm/models/bid-item-v1-dto.js +2 -2
  104. package/dist/esm/models/bid-lifecycle-dto.d.ts +2 -2
  105. package/dist/esm/models/bid-lifecycle-dto.js +2 -2
  106. package/dist/esm/models/bid-manager-dto.d.ts +2 -2
  107. package/dist/esm/models/bid-manager-dto.js +2 -2
  108. package/dist/esm/models/bid-manager-v1-dto.d.ts +2 -2
  109. package/dist/esm/models/bid-manager-v1-dto.js +2 -2
  110. package/dist/esm/models/bid-participant-summary-dto.d.ts +2 -2
  111. package/dist/esm/models/bid-participant-summary-dto.js +2 -2
  112. package/dist/esm/models/bid-payment-terms-dto.d.ts +2 -2
  113. package/dist/esm/models/bid-payment-terms-dto.js +2 -2
  114. package/dist/esm/models/bid-product-dto.d.ts +2 -2
  115. package/dist/esm/models/bid-product-dto.js +2 -2
  116. package/dist/esm/models/bid-public-status.d.ts +2 -2
  117. package/dist/esm/models/bid-public-status.js +2 -2
  118. package/dist/esm/models/bid-published-response-dto.d.ts +2 -2
  119. package/dist/esm/models/bid-published-response-dto.js +2 -2
  120. package/dist/esm/models/bid-registered-response-dto.d.ts +2 -2
  121. package/dist/esm/models/bid-registered-response-dto.js +2 -2
  122. package/dist/esm/models/bid-result-participant-attachment-dto.d.ts +2 -2
  123. package/dist/esm/models/bid-result-participant-attachment-dto.js +2 -2
  124. package/dist/esm/models/bid-result-participant-dto.d.ts +2 -2
  125. package/dist/esm/models/bid-result-participant-dto.js +2 -2
  126. package/dist/esm/models/bid-result-v1-attachment-dto.d.ts +2 -2
  127. package/dist/esm/models/bid-result-v1-attachment-dto.js +2 -2
  128. package/dist/esm/models/bid-result-v1-bid-product-info-dto.d.ts +2 -2
  129. package/dist/esm/models/bid-result-v1-bid-product-info-dto.js +2 -2
  130. package/dist/esm/models/bid-result-v1-participant-dto.d.ts +2 -2
  131. package/dist/esm/models/bid-result-v1-participant-dto.js +2 -2
  132. package/dist/esm/models/bid-result-v1-product-dto.d.ts +2 -2
  133. package/dist/esm/models/bid-result-v1-product-dto.js +2 -2
  134. package/dist/esm/models/bid-results-batch-request-dto.d.ts +17 -0
  135. package/dist/esm/models/bid-results-batch-request-dto.js +14 -0
  136. package/dist/esm/models/bid-results-batch-v1-request-dto.d.ts +2 -2
  137. package/dist/esm/models/bid-results-batch-v1-request-dto.js +2 -2
  138. package/dist/esm/models/bid-results-response-dto.d.ts +2 -2
  139. package/dist/esm/models/bid-results-response-dto.js +2 -2
  140. package/dist/esm/models/bid-results-v1-response-dto.d.ts +2 -2
  141. package/dist/esm/models/bid-results-v1-response-dto.js +2 -2
  142. package/dist/esm/models/bid-settlement-line-item-dto.d.ts +2 -2
  143. package/dist/esm/models/bid-settlement-line-item-dto.js +2 -2
  144. package/dist/esm/models/bid-settlement-participant-dto.d.ts +2 -2
  145. package/dist/esm/models/bid-settlement-participant-dto.js +2 -2
  146. package/dist/esm/models/bid-settlement-response-dto.d.ts +2 -2
  147. package/dist/esm/models/bid-settlement-response-dto.js +2 -2
  148. package/dist/esm/models/bid-statement-response-dto.d.ts +2 -2
  149. package/dist/esm/models/bid-statement-response-dto.js +2 -2
  150. package/dist/esm/models/bid-statement-v1-response-dto.d.ts +2 -2
  151. package/dist/esm/models/bid-statement-v1-response-dto.js +2 -2
  152. package/dist/esm/models/bid-status.d.ts +2 -2
  153. package/dist/esm/models/bid-status.js +2 -2
  154. package/dist/esm/models/bid-summary-dto.d.ts +2 -2
  155. package/dist/esm/models/bid-summary-dto.js +2 -2
  156. package/dist/esm/models/bid-updated-response-dto.d.ts +2 -2
  157. package/dist/esm/models/bid-updated-response-dto.js +2 -2
  158. package/dist/esm/models/cancel-bid-request-dto.d.ts +17 -0
  159. package/dist/esm/models/cancel-bid-request-dto.js +14 -0
  160. package/dist/esm/models/cancel-bid200-response.d.ts +21 -0
  161. package/dist/esm/models/cancel-bid200-response.js +14 -0
  162. package/dist/esm/models/card-payment-request-response-dto.d.ts +2 -2
  163. package/dist/esm/models/card-payment-request-response-dto.js +2 -2
  164. package/dist/esm/models/complete-acceptance-request-dto.d.ts +2 -2
  165. package/dist/esm/models/complete-acceptance-request-dto.js +2 -2
  166. package/dist/esm/models/complete-acceptance-v1-request-dto.d.ts +2 -2
  167. package/dist/esm/models/complete-acceptance-v1-request-dto.js +2 -2
  168. package/dist/esm/models/complete-acceptance200-response.d.ts +21 -0
  169. package/dist/esm/models/complete-acceptance200-response.js +14 -0
  170. package/dist/esm/models/complete-invoice200-response.d.ts +21 -0
  171. package/dist/esm/models/complete-invoice200-response.js +14 -0
  172. package/dist/esm/models/contract-document-item-dto.d.ts +2 -2
  173. package/dist/esm/models/contract-document-item-dto.js +2 -2
  174. package/dist/esm/models/contract-documents-regenerated-response-dto.d.ts +2 -2
  175. package/dist/esm/models/contract-documents-regenerated-response-dto.js +2 -2
  176. package/dist/esm/models/contract-restriction-confirm-input-dto.d.ts +2 -2
  177. package/dist/esm/models/contract-restriction-confirm-input-dto.js +2 -2
  178. package/dist/esm/models/create-bid-request-dto.d.ts +2 -2
  179. package/dist/esm/models/create-bid-request-dto.js +2 -2
  180. package/dist/esm/models/create-bid-v1-request-dto.d.ts +2 -2
  181. package/dist/esm/models/create-bid-v1-request-dto.js +2 -2
  182. package/dist/esm/models/create-card-payment-request-dto.d.ts +2 -2
  183. package/dist/esm/models/create-card-payment-request-dto.js +2 -2
  184. package/dist/esm/models/create-card-payment200-response.d.ts +21 -0
  185. package/dist/esm/models/create-card-payment200-response.js +14 -0
  186. package/dist/esm/models/create-external-contract-documents-request-dto.d.ts +2 -2
  187. package/dist/esm/models/create-external-contract-documents-request-dto.js +2 -2
  188. package/dist/esm/models/create-external-contract-documents-response-dto.d.ts +2 -2
  189. package/dist/esm/models/create-external-contract-documents-response-dto.js +2 -2
  190. package/dist/esm/models/create-webhook-endpoint-request-dto.d.ts +22 -0
  191. package/dist/esm/models/create-webhook-endpoint-request-dto.js +14 -0
  192. package/dist/esm/models/create-webhook-endpoint201-response.d.ts +21 -0
  193. package/dist/esm/models/create-webhook-endpoint201-response.js +14 -0
  194. package/dist/esm/models/external-contract-document-item-dto.d.ts +2 -2
  195. package/dist/esm/models/external-contract-document-item-dto.js +2 -2
  196. package/dist/esm/models/external-contract-documents-response-dto.d.ts +2 -2
  197. package/dist/esm/models/external-contract-documents-response-dto.js +2 -2
  198. package/dist/esm/models/external-contract-item-dto.d.ts +2 -2
  199. package/dist/esm/models/external-contract-item-dto.js +2 -2
  200. package/dist/esm/models/external-contract-snapshot-dto.d.ts +2 -2
  201. package/dist/esm/models/external-contract-snapshot-dto.js +2 -2
  202. package/dist/esm/models/external-document-inputs-dto.d.ts +2 -2
  203. package/dist/esm/models/external-document-inputs-dto.js +2 -2
  204. package/dist/esm/models/file-meta-response-dto.d.ts +33 -0
  205. package/dist/esm/models/file-meta-response-dto.js +14 -0
  206. package/dist/esm/models/file-uploaded-response-dto.d.ts +2 -2
  207. package/dist/esm/models/file-uploaded-response-dto.js +2 -2
  208. package/dist/esm/models/file-uploaded-v1-response-dto.d.ts +2 -2
  209. package/dist/esm/models/file-uploaded-v1-response-dto.js +2 -2
  210. package/dist/esm/models/generated-external-contract-document-dto.d.ts +2 -2
  211. package/dist/esm/models/generated-external-contract-document-dto.js +2 -2
  212. package/dist/esm/models/get-bid-acceptance200-response.d.ts +21 -0
  213. package/dist/esm/models/get-bid-acceptance200-response.js +14 -0
  214. package/dist/esm/models/get-bid-results200-response.d.ts +21 -0
  215. package/dist/esm/models/get-bid-results200-response.js +14 -0
  216. package/dist/esm/models/get-bid-settlement200-response.d.ts +21 -0
  217. package/dist/esm/models/get-bid-settlement200-response.js +14 -0
  218. package/dist/esm/models/get-bid-statement200-response.d.ts +21 -0
  219. package/dist/esm/models/get-bid-statement200-response.js +14 -0
  220. package/dist/esm/models/get-bid200-response.d.ts +21 -0
  221. package/dist/esm/models/get-bid200-response.js +14 -0
  222. package/dist/esm/models/get-file-meta200-response.d.ts +21 -0
  223. package/dist/esm/models/get-file-meta200-response.js +14 -0
  224. package/dist/esm/models/get-supplier-card-payable-v2200-response.d.ts +21 -0
  225. package/dist/esm/models/get-supplier-card-payable-v2200-response.js +14 -0
  226. package/dist/esm/models/get-webhook-endpoint200-response.d.ts +21 -0
  227. package/dist/esm/models/get-webhook-endpoint200-response.js +14 -0
  228. package/dist/esm/models/health-controller-check200-response.d.ts +21 -0
  229. package/dist/esm/models/health-controller-check200-response.js +14 -0
  230. package/dist/esm/models/health-response-dto.d.ts +2 -2
  231. package/dist/esm/models/health-response-dto.js +2 -2
  232. package/dist/esm/models/hierarchical-region-dto.d.ts +2 -2
  233. package/dist/esm/models/hierarchical-region-dto.js +2 -2
  234. package/dist/esm/models/hierarchical-region-v1-dto.d.ts +2 -2
  235. package/dist/esm/models/hierarchical-region-v1-dto.js +2 -2
  236. package/dist/esm/models/index.d.ts +54 -8
  237. package/dist/esm/models/index.js +54 -8
  238. package/dist/esm/models/introspect-request-dto.d.ts +46 -0
  239. package/dist/esm/models/introspect-request-dto.js +20 -0
  240. package/dist/esm/models/introspection-response-dto.d.ts +45 -0
  241. package/dist/esm/models/introspection-response-dto.js +14 -0
  242. package/dist/esm/models/invalid-param-dto.d.ts +2 -2
  243. package/dist/esm/models/invalid-param-dto.js +2 -2
  244. package/dist/esm/models/invoice-completed-response-dto.d.ts +2 -2
  245. package/dist/esm/models/invoice-completed-response-dto.js +2 -2
  246. package/dist/esm/models/list-bid-contract-documents200-response.d.ts +21 -0
  247. package/dist/esm/models/list-bid-contract-documents200-response.js +14 -0
  248. package/dist/esm/models/list-bid-participants200-response.d.ts +21 -0
  249. package/dist/esm/models/list-bid-participants200-response.js +14 -0
  250. package/dist/esm/models/list-bid-results200-response.d.ts +21 -0
  251. package/dist/esm/models/list-bid-results200-response.js +14 -0
  252. package/dist/esm/models/list-bids-response-dto.d.ts +2 -2
  253. package/dist/esm/models/list-bids-response-dto.js +2 -2
  254. package/dist/esm/models/list-bids200-response.d.ts +21 -0
  255. package/dist/esm/models/list-bids200-response.js +14 -0
  256. package/dist/esm/models/list-products200-response.d.ts +21 -0
  257. package/dist/esm/models/list-products200-response.js +14 -0
  258. package/dist/esm/models/list-webhook-deliveries-response-dto.d.ts +22 -0
  259. package/dist/esm/models/list-webhook-deliveries-response-dto.js +14 -0
  260. package/dist/esm/models/list-webhook-deliveries200-response.d.ts +21 -0
  261. package/dist/esm/models/list-webhook-deliveries200-response.js +14 -0
  262. package/dist/esm/models/list-webhook-endpoints200-response.d.ts +21 -0
  263. package/dist/esm/models/list-webhook-endpoints200-response.js +14 -0
  264. package/dist/esm/models/mark-bid-failed-request-dto.d.ts +2 -2
  265. package/dist/esm/models/mark-bid-failed-request-dto.js +2 -2
  266. package/dist/esm/models/mark-bid-failed-v1-request-dto.d.ts +2 -2
  267. package/dist/esm/models/mark-bid-failed-v1-request-dto.js +2 -2
  268. package/dist/esm/models/mark-bid-failed201-response.d.ts +21 -0
  269. package/dist/esm/models/mark-bid-failed201-response.js +14 -0
  270. package/dist/esm/models/negotiation-score-v1-dto.d.ts +2 -2
  271. package/dist/esm/models/negotiation-score-v1-dto.js +2 -2
  272. package/dist/esm/models/negotiation-scored-response-dto.d.ts +2 -2
  273. package/dist/esm/models/negotiation-scored-response-dto.js +2 -2
  274. package/dist/esm/models/oauth-error-response-dto.d.ts +2 -2
  275. package/dist/esm/models/oauth-error-response-dto.js +2 -2
  276. package/dist/esm/models/partner-webhook-delivery-status.d.ts +18 -0
  277. package/dist/esm/models/partner-webhook-delivery-status.js +19 -0
  278. package/dist/esm/models/partner-webhook-endpoint-status.d.ts +19 -0
  279. package/dist/esm/models/partner-webhook-endpoint-status.js +20 -0
  280. package/dist/esm/models/partner-webhook-event-type.d.ts +22 -0
  281. package/dist/esm/models/partner-webhook-event-type.js +23 -0
  282. package/dist/esm/models/preconditions-dto.d.ts +2 -2
  283. package/dist/esm/models/preconditions-dto.js +2 -2
  284. package/dist/esm/models/preconditions-v1-dto.d.ts +2 -2
  285. package/dist/esm/models/preconditions-v1-dto.js +2 -2
  286. package/dist/esm/models/problem-details-dto.d.ts +7 -3
  287. package/dist/esm/models/problem-details-dto.js +2 -2
  288. package/dist/esm/models/product-receipt-response-dto.d.ts +17 -0
  289. package/dist/esm/models/product-receipt-response-dto.js +14 -0
  290. package/dist/esm/models/product-receipt-v1-response-dto.d.ts +2 -2
  291. package/dist/esm/models/product-receipt-v1-response-dto.js +2 -2
  292. package/dist/esm/models/product-response-dto.d.ts +77 -0
  293. package/dist/esm/models/product-response-dto.js +14 -0
  294. package/dist/esm/models/product-v1-response-dto.d.ts +2 -2
  295. package/dist/esm/models/product-v1-response-dto.js +2 -2
  296. package/dist/esm/models/protected-resource-metadata-dto.d.ts +2 -2
  297. package/dist/esm/models/protected-resource-metadata-dto.js +2 -2
  298. package/dist/esm/models/publish-bid200-response.d.ts +21 -0
  299. package/dist/esm/models/publish-bid200-response.js +14 -0
  300. package/dist/esm/models/regenerate-contract-documents201-response.d.ts +21 -0
  301. package/dist/esm/models/regenerate-contract-documents201-response.js +14 -0
  302. package/dist/esm/models/register-award-request-dto.d.ts +2 -2
  303. package/dist/esm/models/register-award-request-dto.js +2 -2
  304. package/dist/esm/models/register-award-v1-request-dto.d.ts +2 -2
  305. package/dist/esm/models/register-award-v1-request-dto.js +2 -2
  306. package/dist/esm/models/register-award201-response.d.ts +21 -0
  307. package/dist/esm/models/register-award201-response.js +14 -0
  308. package/dist/esm/models/register-bid201-response.d.ts +21 -0
  309. package/dist/esm/models/register-bid201-response.js +14 -0
  310. package/dist/esm/models/register-semo-contract-request-dto.d.ts +2 -2
  311. package/dist/esm/models/register-semo-contract-request-dto.js +2 -2
  312. package/dist/esm/models/request-split-invoice-v1-request-dto.d.ts +2 -2
  313. package/dist/esm/models/request-split-invoice-v1-request-dto.js +2 -2
  314. package/dist/esm/models/retiree-roster-input-dto.d.ts +2 -2
  315. package/dist/esm/models/retiree-roster-input-dto.js +2 -2
  316. package/dist/esm/models/retiree-roster-row-dto.d.ts +2 -2
  317. package/dist/esm/models/retiree-roster-row-dto.js +2 -2
  318. package/dist/esm/models/revert-award-request-dto.d.ts +17 -0
  319. package/dist/esm/models/revert-award-request-dto.js +14 -0
  320. package/dist/esm/models/revert-award200-response.d.ts +21 -0
  321. package/dist/esm/models/revert-award200-response.js +14 -0
  322. package/dist/esm/models/revoke-request-dto.d.ts +2 -2
  323. package/dist/esm/models/revoke-request-dto.js +2 -2
  324. package/dist/esm/models/semo-contract-registered-response-dto.d.ts +2 -2
  325. package/dist/esm/models/semo-contract-registered-response-dto.js +2 -2
  326. package/dist/esm/models/semo-contract-taxinvoice-status-response-dto.d.ts +2 -2
  327. package/dist/esm/models/semo-contract-taxinvoice-status-response-dto.js +2 -2
  328. package/dist/esm/models/send-webhook-test-event200-response.d.ts +21 -0
  329. package/dist/esm/models/send-webhook-test-event200-response.js +14 -0
  330. package/dist/esm/models/split-invoice-v1-response-dto.d.ts +2 -2
  331. package/dist/esm/models/split-invoice-v1-response-dto.js +2 -2
  332. package/dist/esm/models/statement-document-dto.d.ts +2 -2
  333. package/dist/esm/models/statement-document-dto.js +2 -2
  334. package/dist/esm/models/statement-product-dto.d.ts +2 -2
  335. package/dist/esm/models/statement-product-dto.js +2 -2
  336. package/dist/esm/models/statement-v1-document-dto.d.ts +2 -2
  337. package/dist/esm/models/statement-v1-document-dto.js +2 -2
  338. package/dist/esm/models/statement-v1-product-dto.d.ts +2 -2
  339. package/dist/esm/models/statement-v1-product-dto.js +2 -2
  340. package/dist/esm/models/submit-negotiation-scores-v1-request-dto.d.ts +2 -2
  341. package/dist/esm/models/submit-negotiation-scores-v1-request-dto.js +2 -2
  342. package/dist/esm/models/supplier-card-payable-response-dto.d.ts +2 -2
  343. package/dist/esm/models/supplier-card-payable-response-dto.js +2 -2
  344. package/dist/esm/models/supplier-tax-type.d.ts +2 -2
  345. package/dist/esm/models/supplier-tax-type.js +2 -2
  346. package/dist/esm/models/token-request-dto.d.ts +2 -2
  347. package/dist/esm/models/token-request-dto.js +2 -2
  348. package/dist/esm/models/token-response-dto.d.ts +2 -2
  349. package/dist/esm/models/token-response-dto.js +2 -2
  350. package/dist/esm/models/update-bid-request-dto.d.ts +2 -2
  351. package/dist/esm/models/update-bid-request-dto.js +2 -2
  352. package/dist/esm/models/update-bid200-response.d.ts +21 -0
  353. package/dist/esm/models/update-bid200-response.js +14 -0
  354. package/dist/esm/models/update-webhook-endpoint-request-dto.d.ts +27 -0
  355. package/dist/esm/models/update-webhook-endpoint-request-dto.js +14 -0
  356. package/dist/esm/models/upload-file-request-dto.d.ts +2 -2
  357. package/dist/esm/models/upload-file-request-dto.js +2 -2
  358. package/dist/esm/models/upload-file-v1-request-dto.d.ts +2 -2
  359. package/dist/esm/models/upload-file-v1-request-dto.js +2 -2
  360. package/dist/esm/models/upload-file201-response.d.ts +21 -0
  361. package/dist/esm/models/upload-file201-response.js +14 -0
  362. package/dist/esm/models/webhook-delivery-dto.d.ts +73 -0
  363. package/dist/esm/models/webhook-delivery-dto.js +21 -0
  364. package/dist/esm/models/webhook-endpoint-dto.d.ts +55 -0
  365. package/dist/esm/models/webhook-endpoint-dto.js +14 -0
  366. package/dist/esm/models/webhook-endpoint-with-secret-dto.d.ts +59 -0
  367. package/dist/esm/models/webhook-endpoint-with-secret-dto.js +14 -0
  368. package/dist/esm/models/webhook-test-result-dto.d.ts +25 -0
  369. package/dist/esm/models/webhook-test-result-dto.js +14 -0
  370. package/dist/index.d.ts +2 -2
  371. package/dist/index.js +2 -2
  372. package/dist/models/acceptance-result-response-dto.d.ts +2 -2
  373. package/dist/models/acceptance-result-response-dto.js +2 -2
  374. package/dist/models/acceptance-result-v1-response-dto.d.ts +2 -2
  375. package/dist/models/acceptance-result-v1-response-dto.js +2 -2
  376. package/dist/models/acceptance-status-response-dto.d.ts +33 -0
  377. package/dist/models/acceptance-status-response-dto.js +15 -0
  378. package/dist/models/acknowledge-product-receipt200-response.d.ts +21 -0
  379. package/dist/models/acknowledge-product-receipt200-response.js +15 -0
  380. package/dist/models/acknowledge-products-request-dto.d.ts +17 -0
  381. package/dist/models/acknowledge-products-request-dto.js +15 -0
  382. package/dist/models/acknowledge-products-v1-request-dto.d.ts +2 -2
  383. package/dist/models/acknowledge-products-v1-request-dto.js +2 -2
  384. package/dist/models/authorization-server-metadata-dto.d.ts +6 -2
  385. package/dist/models/authorization-server-metadata-dto.js +2 -2
  386. package/dist/models/award-method-public.d.ts +2 -2
  387. package/dist/models/award-method-public.js +2 -2
  388. package/dist/models/award-registered-response-dto.d.ts +2 -2
  389. package/dist/models/award-registered-response-dto.js +2 -2
  390. package/dist/models/award-registered-v2-response-dto.d.ts +2 -2
  391. package/dist/models/award-registered-v2-response-dto.js +2 -2
  392. package/dist/models/award-reverted-v2-response-dto.d.ts +25 -0
  393. package/dist/models/award-reverted-v2-response-dto.js +19 -0
  394. package/dist/models/bid-attachment-v1-dto.d.ts +2 -2
  395. package/dist/models/bid-attachment-v1-dto.js +2 -2
  396. package/dist/models/bid-bond-dto.d.ts +2 -2
  397. package/dist/models/bid-bond-dto.js +2 -2
  398. package/dist/models/bid-bond-v1-dto.d.ts +2 -2
  399. package/dist/models/bid-bond-v1-dto.js +2 -2
  400. package/dist/models/bid-cancelled-response-dto.d.ts +25 -0
  401. package/dist/models/bid-cancelled-response-dto.js +19 -0
  402. package/dist/models/bid-contact-dto.d.ts +2 -2
  403. package/dist/models/bid-contact-dto.js +2 -2
  404. package/dist/models/bid-contacts-dto.d.ts +2 -2
  405. package/dist/models/bid-contacts-dto.js +2 -2
  406. package/dist/models/bid-contract-document-dto.d.ts +60 -0
  407. package/dist/models/bid-contract-document-dto.js +22 -0
  408. package/dist/models/bid-contract-documents-batch-v1-request-dto.d.ts +2 -2
  409. package/dist/models/bid-contract-documents-batch-v1-request-dto.js +2 -2
  410. package/dist/models/bid-contract-documents-v1-response-dto.d.ts +2 -2
  411. package/dist/models/bid-contract-documents-v1-response-dto.js +2 -2
  412. package/dist/models/bid-created-response-dto.d.ts +2 -2
  413. package/dist/models/bid-created-response-dto.js +2 -2
  414. package/dist/models/bid-delivery-terms-dto.d.ts +2 -2
  415. package/dist/models/bid-delivery-terms-dto.js +2 -2
  416. package/dist/models/bid-detail-response-dto.d.ts +2 -2
  417. package/dist/models/bid-detail-response-dto.js +2 -2
  418. package/dist/models/bid-document-dto.d.ts +2 -2
  419. package/dist/models/bid-document-dto.js +2 -2
  420. package/dist/models/bid-document-v1-dto.d.ts +2 -2
  421. package/dist/models/bid-document-v1-dto.js +2 -2
  422. package/dist/models/bid-failed-response-dto.d.ts +2 -2
  423. package/dist/models/bid-failed-response-dto.js +2 -2
  424. package/dist/models/bid-failed-v2-response-dto.d.ts +2 -2
  425. package/dist/models/bid-failed-v2-response-dto.js +2 -2
  426. package/dist/models/bid-failure-reason.d.ts +2 -2
  427. package/dist/models/bid-failure-reason.js +2 -2
  428. package/dist/models/bid-item-dto.d.ts +2 -2
  429. package/dist/models/bid-item-dto.js +2 -2
  430. package/dist/models/bid-item-v1-dto.d.ts +2 -2
  431. package/dist/models/bid-item-v1-dto.js +2 -2
  432. package/dist/models/bid-lifecycle-dto.d.ts +2 -2
  433. package/dist/models/bid-lifecycle-dto.js +2 -2
  434. package/dist/models/bid-manager-dto.d.ts +2 -2
  435. package/dist/models/bid-manager-dto.js +2 -2
  436. package/dist/models/bid-manager-v1-dto.d.ts +2 -2
  437. package/dist/models/bid-manager-v1-dto.js +2 -2
  438. package/dist/models/bid-participant-summary-dto.d.ts +2 -2
  439. package/dist/models/bid-participant-summary-dto.js +2 -2
  440. package/dist/models/bid-payment-terms-dto.d.ts +2 -2
  441. package/dist/models/bid-payment-terms-dto.js +2 -2
  442. package/dist/models/bid-product-dto.d.ts +2 -2
  443. package/dist/models/bid-product-dto.js +2 -2
  444. package/dist/models/bid-public-status.d.ts +2 -2
  445. package/dist/models/bid-public-status.js +2 -2
  446. package/dist/models/bid-published-response-dto.d.ts +2 -2
  447. package/dist/models/bid-published-response-dto.js +2 -2
  448. package/dist/models/bid-registered-response-dto.d.ts +2 -2
  449. package/dist/models/bid-registered-response-dto.js +2 -2
  450. package/dist/models/bid-result-participant-attachment-dto.d.ts +2 -2
  451. package/dist/models/bid-result-participant-attachment-dto.js +2 -2
  452. package/dist/models/bid-result-participant-dto.d.ts +2 -2
  453. package/dist/models/bid-result-participant-dto.js +2 -2
  454. package/dist/models/bid-result-v1-attachment-dto.d.ts +2 -2
  455. package/dist/models/bid-result-v1-attachment-dto.js +2 -2
  456. package/dist/models/bid-result-v1-bid-product-info-dto.d.ts +2 -2
  457. package/dist/models/bid-result-v1-bid-product-info-dto.js +2 -2
  458. package/dist/models/bid-result-v1-participant-dto.d.ts +2 -2
  459. package/dist/models/bid-result-v1-participant-dto.js +2 -2
  460. package/dist/models/bid-result-v1-product-dto.d.ts +2 -2
  461. package/dist/models/bid-result-v1-product-dto.js +2 -2
  462. package/dist/models/bid-results-batch-request-dto.d.ts +17 -0
  463. package/dist/models/bid-results-batch-request-dto.js +15 -0
  464. package/dist/models/bid-results-batch-v1-request-dto.d.ts +2 -2
  465. package/dist/models/bid-results-batch-v1-request-dto.js +2 -2
  466. package/dist/models/bid-results-response-dto.d.ts +2 -2
  467. package/dist/models/bid-results-response-dto.js +2 -2
  468. package/dist/models/bid-results-v1-response-dto.d.ts +2 -2
  469. package/dist/models/bid-results-v1-response-dto.js +2 -2
  470. package/dist/models/bid-settlement-line-item-dto.d.ts +2 -2
  471. package/dist/models/bid-settlement-line-item-dto.js +2 -2
  472. package/dist/models/bid-settlement-participant-dto.d.ts +2 -2
  473. package/dist/models/bid-settlement-participant-dto.js +2 -2
  474. package/dist/models/bid-settlement-response-dto.d.ts +2 -2
  475. package/dist/models/bid-settlement-response-dto.js +2 -2
  476. package/dist/models/bid-statement-response-dto.d.ts +2 -2
  477. package/dist/models/bid-statement-response-dto.js +2 -2
  478. package/dist/models/bid-statement-v1-response-dto.d.ts +2 -2
  479. package/dist/models/bid-statement-v1-response-dto.js +2 -2
  480. package/dist/models/bid-status.d.ts +2 -2
  481. package/dist/models/bid-status.js +2 -2
  482. package/dist/models/bid-summary-dto.d.ts +2 -2
  483. package/dist/models/bid-summary-dto.js +2 -2
  484. package/dist/models/bid-updated-response-dto.d.ts +2 -2
  485. package/dist/models/bid-updated-response-dto.js +2 -2
  486. package/dist/models/cancel-bid-request-dto.d.ts +17 -0
  487. package/dist/models/cancel-bid-request-dto.js +15 -0
  488. package/dist/models/cancel-bid200-response.d.ts +21 -0
  489. package/dist/models/cancel-bid200-response.js +15 -0
  490. package/dist/models/card-payment-request-response-dto.d.ts +2 -2
  491. package/dist/models/card-payment-request-response-dto.js +2 -2
  492. package/dist/models/complete-acceptance-request-dto.d.ts +2 -2
  493. package/dist/models/complete-acceptance-request-dto.js +2 -2
  494. package/dist/models/complete-acceptance-v1-request-dto.d.ts +2 -2
  495. package/dist/models/complete-acceptance-v1-request-dto.js +2 -2
  496. package/dist/models/complete-acceptance200-response.d.ts +21 -0
  497. package/dist/models/complete-acceptance200-response.js +15 -0
  498. package/dist/models/complete-invoice200-response.d.ts +21 -0
  499. package/dist/models/complete-invoice200-response.js +15 -0
  500. package/dist/models/contract-document-item-dto.d.ts +2 -2
  501. package/dist/models/contract-document-item-dto.js +2 -2
  502. package/dist/models/contract-documents-regenerated-response-dto.d.ts +2 -2
  503. package/dist/models/contract-documents-regenerated-response-dto.js +2 -2
  504. package/dist/models/contract-restriction-confirm-input-dto.d.ts +2 -2
  505. package/dist/models/contract-restriction-confirm-input-dto.js +2 -2
  506. package/dist/models/create-bid-request-dto.d.ts +2 -2
  507. package/dist/models/create-bid-request-dto.js +2 -2
  508. package/dist/models/create-bid-v1-request-dto.d.ts +2 -2
  509. package/dist/models/create-bid-v1-request-dto.js +2 -2
  510. package/dist/models/create-card-payment-request-dto.d.ts +2 -2
  511. package/dist/models/create-card-payment-request-dto.js +2 -2
  512. package/dist/models/create-card-payment200-response.d.ts +21 -0
  513. package/dist/models/create-card-payment200-response.js +15 -0
  514. package/dist/models/create-external-contract-documents-request-dto.d.ts +2 -2
  515. package/dist/models/create-external-contract-documents-request-dto.js +2 -2
  516. package/dist/models/create-external-contract-documents-response-dto.d.ts +2 -2
  517. package/dist/models/create-external-contract-documents-response-dto.js +2 -2
  518. package/dist/models/create-webhook-endpoint-request-dto.d.ts +22 -0
  519. package/dist/models/create-webhook-endpoint-request-dto.js +15 -0
  520. package/dist/models/create-webhook-endpoint201-response.d.ts +21 -0
  521. package/dist/models/create-webhook-endpoint201-response.js +15 -0
  522. package/dist/models/external-contract-document-item-dto.d.ts +2 -2
  523. package/dist/models/external-contract-document-item-dto.js +2 -2
  524. package/dist/models/external-contract-documents-response-dto.d.ts +2 -2
  525. package/dist/models/external-contract-documents-response-dto.js +2 -2
  526. package/dist/models/external-contract-item-dto.d.ts +2 -2
  527. package/dist/models/external-contract-item-dto.js +2 -2
  528. package/dist/models/external-contract-snapshot-dto.d.ts +2 -2
  529. package/dist/models/external-contract-snapshot-dto.js +2 -2
  530. package/dist/models/external-document-inputs-dto.d.ts +2 -2
  531. package/dist/models/external-document-inputs-dto.js +2 -2
  532. package/dist/models/file-meta-response-dto.d.ts +33 -0
  533. package/dist/models/file-meta-response-dto.js +15 -0
  534. package/dist/models/file-uploaded-response-dto.d.ts +2 -2
  535. package/dist/models/file-uploaded-response-dto.js +2 -2
  536. package/dist/models/file-uploaded-v1-response-dto.d.ts +2 -2
  537. package/dist/models/file-uploaded-v1-response-dto.js +2 -2
  538. package/dist/models/generated-external-contract-document-dto.d.ts +2 -2
  539. package/dist/models/generated-external-contract-document-dto.js +2 -2
  540. package/dist/models/get-bid-acceptance200-response.d.ts +21 -0
  541. package/dist/models/get-bid-acceptance200-response.js +15 -0
  542. package/dist/models/get-bid-results200-response.d.ts +21 -0
  543. package/dist/models/get-bid-results200-response.js +15 -0
  544. package/dist/models/get-bid-settlement200-response.d.ts +21 -0
  545. package/dist/models/get-bid-settlement200-response.js +15 -0
  546. package/dist/models/get-bid-statement200-response.d.ts +21 -0
  547. package/dist/models/get-bid-statement200-response.js +15 -0
  548. package/dist/models/get-bid200-response.d.ts +21 -0
  549. package/dist/models/get-bid200-response.js +15 -0
  550. package/dist/models/get-file-meta200-response.d.ts +21 -0
  551. package/dist/models/get-file-meta200-response.js +15 -0
  552. package/dist/models/get-supplier-card-payable-v2200-response.d.ts +21 -0
  553. package/dist/models/get-supplier-card-payable-v2200-response.js +15 -0
  554. package/dist/models/get-webhook-endpoint200-response.d.ts +21 -0
  555. package/dist/models/get-webhook-endpoint200-response.js +15 -0
  556. package/dist/models/health-controller-check200-response.d.ts +21 -0
  557. package/dist/models/health-controller-check200-response.js +15 -0
  558. package/dist/models/health-response-dto.d.ts +2 -2
  559. package/dist/models/health-response-dto.js +2 -2
  560. package/dist/models/hierarchical-region-dto.d.ts +2 -2
  561. package/dist/models/hierarchical-region-dto.js +2 -2
  562. package/dist/models/hierarchical-region-v1-dto.d.ts +2 -2
  563. package/dist/models/hierarchical-region-v1-dto.js +2 -2
  564. package/dist/models/index.d.ts +54 -8
  565. package/dist/models/index.js +54 -8
  566. package/dist/models/introspect-request-dto.d.ts +46 -0
  567. package/dist/models/introspect-request-dto.js +23 -0
  568. package/dist/models/introspection-response-dto.d.ts +45 -0
  569. package/dist/models/introspection-response-dto.js +15 -0
  570. package/dist/models/invalid-param-dto.d.ts +2 -2
  571. package/dist/models/invalid-param-dto.js +2 -2
  572. package/dist/models/invoice-completed-response-dto.d.ts +2 -2
  573. package/dist/models/invoice-completed-response-dto.js +2 -2
  574. package/dist/models/list-bid-contract-documents200-response.d.ts +21 -0
  575. package/dist/models/list-bid-contract-documents200-response.js +15 -0
  576. package/dist/models/list-bid-participants200-response.d.ts +21 -0
  577. package/dist/models/list-bid-participants200-response.js +15 -0
  578. package/dist/models/list-bid-results200-response.d.ts +21 -0
  579. package/dist/models/list-bid-results200-response.js +15 -0
  580. package/dist/models/list-bids-response-dto.d.ts +2 -2
  581. package/dist/models/list-bids-response-dto.js +2 -2
  582. package/dist/models/list-bids200-response.d.ts +21 -0
  583. package/dist/models/list-bids200-response.js +15 -0
  584. package/dist/models/list-products200-response.d.ts +21 -0
  585. package/dist/models/list-products200-response.js +15 -0
  586. package/dist/models/list-webhook-deliveries-response-dto.d.ts +22 -0
  587. package/dist/models/list-webhook-deliveries-response-dto.js +15 -0
  588. package/dist/models/list-webhook-deliveries200-response.d.ts +21 -0
  589. package/dist/models/list-webhook-deliveries200-response.js +15 -0
  590. package/dist/models/list-webhook-endpoints200-response.d.ts +21 -0
  591. package/dist/models/list-webhook-endpoints200-response.js +15 -0
  592. package/dist/models/mark-bid-failed-request-dto.d.ts +2 -2
  593. package/dist/models/mark-bid-failed-request-dto.js +2 -2
  594. package/dist/models/mark-bid-failed-v1-request-dto.d.ts +2 -2
  595. package/dist/models/mark-bid-failed-v1-request-dto.js +2 -2
  596. package/dist/models/mark-bid-failed201-response.d.ts +21 -0
  597. package/dist/models/mark-bid-failed201-response.js +15 -0
  598. package/dist/models/negotiation-score-v1-dto.d.ts +2 -2
  599. package/dist/models/negotiation-score-v1-dto.js +2 -2
  600. package/dist/models/negotiation-scored-response-dto.d.ts +2 -2
  601. package/dist/models/negotiation-scored-response-dto.js +2 -2
  602. package/dist/models/oauth-error-response-dto.d.ts +2 -2
  603. package/dist/models/oauth-error-response-dto.js +2 -2
  604. package/dist/models/partner-webhook-delivery-status.d.ts +18 -0
  605. package/dist/models/partner-webhook-delivery-status.js +22 -0
  606. package/dist/models/partner-webhook-endpoint-status.d.ts +19 -0
  607. package/dist/models/partner-webhook-endpoint-status.js +23 -0
  608. package/dist/models/partner-webhook-event-type.d.ts +22 -0
  609. package/dist/models/partner-webhook-event-type.js +26 -0
  610. package/dist/models/preconditions-dto.d.ts +2 -2
  611. package/dist/models/preconditions-dto.js +2 -2
  612. package/dist/models/preconditions-v1-dto.d.ts +2 -2
  613. package/dist/models/preconditions-v1-dto.js +2 -2
  614. package/dist/models/problem-details-dto.d.ts +7 -3
  615. package/dist/models/problem-details-dto.js +2 -2
  616. package/dist/models/product-receipt-response-dto.d.ts +17 -0
  617. package/dist/models/product-receipt-response-dto.js +15 -0
  618. package/dist/models/product-receipt-v1-response-dto.d.ts +2 -2
  619. package/dist/models/product-receipt-v1-response-dto.js +2 -2
  620. package/dist/models/product-response-dto.d.ts +77 -0
  621. package/dist/models/product-response-dto.js +15 -0
  622. package/dist/models/product-v1-response-dto.d.ts +2 -2
  623. package/dist/models/product-v1-response-dto.js +2 -2
  624. package/dist/models/protected-resource-metadata-dto.d.ts +2 -2
  625. package/dist/models/protected-resource-metadata-dto.js +2 -2
  626. package/dist/models/publish-bid200-response.d.ts +21 -0
  627. package/dist/models/publish-bid200-response.js +15 -0
  628. package/dist/models/regenerate-contract-documents201-response.d.ts +21 -0
  629. package/dist/models/regenerate-contract-documents201-response.js +15 -0
  630. package/dist/models/register-award-request-dto.d.ts +2 -2
  631. package/dist/models/register-award-request-dto.js +2 -2
  632. package/dist/models/register-award-v1-request-dto.d.ts +2 -2
  633. package/dist/models/register-award-v1-request-dto.js +2 -2
  634. package/dist/models/register-award201-response.d.ts +21 -0
  635. package/dist/models/register-award201-response.js +15 -0
  636. package/dist/models/register-bid201-response.d.ts +21 -0
  637. package/dist/models/register-bid201-response.js +15 -0
  638. package/dist/models/register-semo-contract-request-dto.d.ts +2 -2
  639. package/dist/models/register-semo-contract-request-dto.js +2 -2
  640. package/dist/models/request-split-invoice-v1-request-dto.d.ts +2 -2
  641. package/dist/models/request-split-invoice-v1-request-dto.js +2 -2
  642. package/dist/models/retiree-roster-input-dto.d.ts +2 -2
  643. package/dist/models/retiree-roster-input-dto.js +2 -2
  644. package/dist/models/retiree-roster-row-dto.d.ts +2 -2
  645. package/dist/models/retiree-roster-row-dto.js +2 -2
  646. package/dist/models/revert-award-request-dto.d.ts +17 -0
  647. package/dist/models/revert-award-request-dto.js +15 -0
  648. package/dist/models/revert-award200-response.d.ts +21 -0
  649. package/dist/models/revert-award200-response.js +15 -0
  650. package/dist/models/revoke-request-dto.d.ts +2 -2
  651. package/dist/models/revoke-request-dto.js +2 -2
  652. package/dist/models/semo-contract-registered-response-dto.d.ts +2 -2
  653. package/dist/models/semo-contract-registered-response-dto.js +2 -2
  654. package/dist/models/semo-contract-taxinvoice-status-response-dto.d.ts +2 -2
  655. package/dist/models/semo-contract-taxinvoice-status-response-dto.js +2 -2
  656. package/dist/models/send-webhook-test-event200-response.d.ts +21 -0
  657. package/dist/models/send-webhook-test-event200-response.js +15 -0
  658. package/dist/models/split-invoice-v1-response-dto.d.ts +2 -2
  659. package/dist/models/split-invoice-v1-response-dto.js +2 -2
  660. package/dist/models/statement-document-dto.d.ts +2 -2
  661. package/dist/models/statement-document-dto.js +2 -2
  662. package/dist/models/statement-product-dto.d.ts +2 -2
  663. package/dist/models/statement-product-dto.js +2 -2
  664. package/dist/models/statement-v1-document-dto.d.ts +2 -2
  665. package/dist/models/statement-v1-document-dto.js +2 -2
  666. package/dist/models/statement-v1-product-dto.d.ts +2 -2
  667. package/dist/models/statement-v1-product-dto.js +2 -2
  668. package/dist/models/submit-negotiation-scores-v1-request-dto.d.ts +2 -2
  669. package/dist/models/submit-negotiation-scores-v1-request-dto.js +2 -2
  670. package/dist/models/supplier-card-payable-response-dto.d.ts +2 -2
  671. package/dist/models/supplier-card-payable-response-dto.js +2 -2
  672. package/dist/models/supplier-tax-type.d.ts +2 -2
  673. package/dist/models/supplier-tax-type.js +2 -2
  674. package/dist/models/token-request-dto.d.ts +2 -2
  675. package/dist/models/token-request-dto.js +2 -2
  676. package/dist/models/token-response-dto.d.ts +2 -2
  677. package/dist/models/token-response-dto.js +2 -2
  678. package/dist/models/update-bid-request-dto.d.ts +2 -2
  679. package/dist/models/update-bid-request-dto.js +2 -2
  680. package/dist/models/update-bid200-response.d.ts +21 -0
  681. package/dist/models/update-bid200-response.js +15 -0
  682. package/dist/models/update-webhook-endpoint-request-dto.d.ts +27 -0
  683. package/dist/models/update-webhook-endpoint-request-dto.js +15 -0
  684. package/dist/models/upload-file-request-dto.d.ts +2 -2
  685. package/dist/models/upload-file-request-dto.js +2 -2
  686. package/dist/models/upload-file-v1-request-dto.d.ts +2 -2
  687. package/dist/models/upload-file-v1-request-dto.js +2 -2
  688. package/dist/models/upload-file201-response.d.ts +21 -0
  689. package/dist/models/upload-file201-response.js +15 -0
  690. package/dist/models/webhook-delivery-dto.d.ts +73 -0
  691. package/dist/models/webhook-delivery-dto.js +24 -0
  692. package/dist/models/webhook-endpoint-dto.d.ts +55 -0
  693. package/dist/models/webhook-endpoint-dto.js +15 -0
  694. package/dist/models/webhook-endpoint-with-secret-dto.d.ts +59 -0
  695. package/dist/models/webhook-endpoint-with-secret-dto.js +15 -0
  696. package/dist/models/webhook-test-result-dto.d.ts +25 -0
  697. package/dist/models/webhook-test-result-dto.js +15 -0
  698. package/docs/AcceptanceStatusResponseDto.md +28 -0
  699. package/docs/AcknowledgeProductReceipt200Response.md +22 -0
  700. package/docs/AcknowledgeProductsRequestDto.md +20 -0
  701. package/docs/AuthorizationServerMetadataDto.md +2 -0
  702. package/docs/AwardRevertedV2ResponseDto.md +22 -0
  703. package/docs/BidCancelledResponseDto.md +22 -0
  704. package/docs/BidContractDocumentDto.md +38 -0
  705. package/docs/{IssueTaxInvoiceRequestDto.md → BidResultsBatchRequestDto.md} +5 -5
  706. package/docs/CancelBid200Response.md +22 -0
  707. package/docs/CancelBidRequestDto.md +20 -0
  708. package/docs/CompleteAcceptance200Response.md +22 -0
  709. package/docs/CompleteInvoice200Response.md +22 -0
  710. package/docs/CreateCardPayment200Response.md +22 -0
  711. package/docs/CreateWebhookEndpoint201Response.md +22 -0
  712. package/docs/CreateWebhookEndpointRequestDto.md +22 -0
  713. package/docs/FileMetaResponseDto.md +28 -0
  714. package/docs/GetBid200Response.md +22 -0
  715. package/docs/GetBidAcceptance200Response.md +22 -0
  716. package/docs/GetBidResults200Response.md +22 -0
  717. package/docs/GetBidSettlement200Response.md +22 -0
  718. package/docs/GetBidStatement200Response.md +22 -0
  719. package/docs/GetFileMeta200Response.md +22 -0
  720. package/docs/GetSupplierCardPayableV2200Response.md +22 -0
  721. package/docs/GetWebhookEndpoint200Response.md +22 -0
  722. package/docs/HealthControllerCheck200Response.md +22 -0
  723. package/docs/IntrospectRequestDto.md +30 -0
  724. package/docs/IntrospectionResponseDto.md +34 -0
  725. package/docs/ListBidContractDocuments200Response.md +22 -0
  726. package/docs/ListBidParticipants200Response.md +22 -0
  727. package/docs/ListBidResults200Response.md +22 -0
  728. package/docs/ListBids200Response.md +22 -0
  729. package/docs/ListProducts200Response.md +22 -0
  730. package/docs/ListWebhookDeliveries200Response.md +22 -0
  731. package/docs/ListWebhookDeliveriesResponseDto.md +22 -0
  732. package/docs/ListWebhookEndpoints200Response.md +22 -0
  733. package/docs/MarkBidFailed201Response.md +22 -0
  734. package/docs/OauthApi.md +54 -0
  735. package/docs/PartnerV1Api.md +12 -12
  736. package/docs/PartnerV2Api.md +1233 -228
  737. package/docs/PartnerWebhookDeliveryStatus.md +14 -0
  738. package/docs/PartnerWebhookEndpointStatus.md +11 -0
  739. package/docs/PartnerWebhookEventType.md +17 -0
  740. package/docs/ProblemDetailsDto.md +3 -1
  741. package/docs/ProductReceiptResponseDto.md +20 -0
  742. package/docs/ProductResponseDto.md +50 -0
  743. package/docs/PublishBid200Response.md +22 -0
  744. package/docs/RegenerateContractDocuments201Response.md +22 -0
  745. package/docs/RegisterAward201Response.md +22 -0
  746. package/docs/RegisterBid201Response.md +22 -0
  747. package/docs/RevertAward200Response.md +22 -0
  748. package/docs/RevertAwardRequestDto.md +20 -0
  749. package/docs/SendWebhookTestEvent200Response.md +22 -0
  750. package/docs/UpdateBid200Response.md +22 -0
  751. package/docs/UpdateWebhookEndpointRequestDto.md +24 -0
  752. package/docs/UploadFile201Response.md +22 -0
  753. package/docs/WebhookDeliveryDto.md +42 -0
  754. package/docs/WebhookEndpointDto.md +38 -0
  755. package/docs/WebhookEndpointWithSecretDto.md +40 -0
  756. package/docs/WebhookTestResultDto.md +24 -0
  757. package/index.ts +2 -2
  758. package/models/acceptance-result-response-dto.ts +2 -2
  759. package/models/acceptance-result-v1-response-dto.ts +2 -2
  760. package/models/acceptance-status-response-dto.ts +39 -0
  761. package/models/acknowledge-product-receipt200-response.ts +27 -0
  762. package/models/acknowledge-products-request-dto.ts +23 -0
  763. package/models/acknowledge-products-v1-request-dto.ts +2 -2
  764. package/models/authorization-server-metadata-dto.ts +6 -2
  765. package/models/award-method-public.ts +2 -2
  766. package/models/award-registered-response-dto.ts +2 -2
  767. package/models/award-registered-v2-response-dto.ts +2 -2
  768. package/models/award-reverted-v2-response-dto.ts +34 -0
  769. package/models/bid-attachment-v1-dto.ts +2 -2
  770. package/models/bid-bond-dto.ts +2 -2
  771. package/models/bid-bond-v1-dto.ts +2 -2
  772. package/models/bid-cancelled-response-dto.ts +34 -0
  773. package/models/bid-contact-dto.ts +2 -2
  774. package/models/bid-contacts-dto.ts +2 -2
  775. package/models/bid-contract-document-dto.ts +69 -0
  776. package/models/bid-contract-documents-batch-v1-request-dto.ts +2 -2
  777. package/models/bid-contract-documents-v1-response-dto.ts +2 -2
  778. package/models/bid-created-response-dto.ts +2 -2
  779. package/models/bid-delivery-terms-dto.ts +2 -2
  780. package/models/bid-detail-response-dto.ts +2 -2
  781. package/models/bid-document-dto.ts +2 -2
  782. package/models/bid-document-v1-dto.ts +2 -2
  783. package/models/bid-failed-response-dto.ts +2 -2
  784. package/models/bid-failed-v2-response-dto.ts +2 -2
  785. package/models/bid-failure-reason.ts +2 -2
  786. package/models/bid-item-dto.ts +2 -2
  787. package/models/bid-item-v1-dto.ts +2 -2
  788. package/models/bid-lifecycle-dto.ts +2 -2
  789. package/models/bid-manager-dto.ts +2 -2
  790. package/models/bid-manager-v1-dto.ts +2 -2
  791. package/models/bid-participant-summary-dto.ts +2 -2
  792. package/models/bid-payment-terms-dto.ts +2 -2
  793. package/models/bid-product-dto.ts +2 -2
  794. package/models/bid-public-status.ts +2 -2
  795. package/models/bid-published-response-dto.ts +2 -2
  796. package/models/bid-registered-response-dto.ts +2 -2
  797. package/models/bid-result-participant-attachment-dto.ts +2 -2
  798. package/models/bid-result-participant-dto.ts +2 -2
  799. package/models/bid-result-v1-attachment-dto.ts +2 -2
  800. package/models/bid-result-v1-bid-product-info-dto.ts +2 -2
  801. package/models/bid-result-v1-participant-dto.ts +2 -2
  802. package/models/bid-result-v1-product-dto.ts +2 -2
  803. package/models/bid-results-batch-request-dto.ts +23 -0
  804. package/models/bid-results-batch-v1-request-dto.ts +2 -2
  805. package/models/bid-results-response-dto.ts +2 -2
  806. package/models/bid-results-v1-response-dto.ts +2 -2
  807. package/models/bid-settlement-line-item-dto.ts +2 -2
  808. package/models/bid-settlement-participant-dto.ts +2 -2
  809. package/models/bid-settlement-response-dto.ts +2 -2
  810. package/models/bid-statement-response-dto.ts +2 -2
  811. package/models/bid-statement-v1-response-dto.ts +2 -2
  812. package/models/bid-status.ts +2 -2
  813. package/models/bid-summary-dto.ts +2 -2
  814. package/models/bid-updated-response-dto.ts +2 -2
  815. package/models/cancel-bid-request-dto.ts +23 -0
  816. package/models/cancel-bid200-response.ts +27 -0
  817. package/models/card-payment-request-response-dto.ts +2 -2
  818. package/models/complete-acceptance-request-dto.ts +2 -2
  819. package/models/complete-acceptance-v1-request-dto.ts +2 -2
  820. package/models/complete-acceptance200-response.ts +27 -0
  821. package/models/complete-invoice200-response.ts +27 -0
  822. package/models/contract-document-item-dto.ts +2 -2
  823. package/models/contract-documents-regenerated-response-dto.ts +2 -2
  824. package/models/contract-restriction-confirm-input-dto.ts +2 -2
  825. package/models/create-bid-request-dto.ts +2 -2
  826. package/models/create-bid-v1-request-dto.ts +2 -2
  827. package/models/create-card-payment-request-dto.ts +2 -2
  828. package/models/create-card-payment200-response.ts +27 -0
  829. package/models/create-external-contract-documents-request-dto.ts +2 -2
  830. package/models/create-external-contract-documents-response-dto.ts +2 -2
  831. package/models/create-webhook-endpoint-request-dto.ts +30 -0
  832. package/models/create-webhook-endpoint201-response.ts +27 -0
  833. package/models/external-contract-document-item-dto.ts +2 -2
  834. package/models/external-contract-documents-response-dto.ts +2 -2
  835. package/models/external-contract-item-dto.ts +2 -2
  836. package/models/external-contract-snapshot-dto.ts +2 -2
  837. package/models/external-document-inputs-dto.ts +2 -2
  838. package/models/file-meta-response-dto.ts +39 -0
  839. package/models/file-uploaded-response-dto.ts +2 -2
  840. package/models/file-uploaded-v1-response-dto.ts +2 -2
  841. package/models/generated-external-contract-document-dto.ts +2 -2
  842. package/models/get-bid-acceptance200-response.ts +27 -0
  843. package/models/get-bid-results200-response.ts +27 -0
  844. package/models/get-bid-settlement200-response.ts +27 -0
  845. package/models/get-bid-statement200-response.ts +27 -0
  846. package/models/get-bid200-response.ts +27 -0
  847. package/models/get-file-meta200-response.ts +27 -0
  848. package/models/get-supplier-card-payable-v2200-response.ts +27 -0
  849. package/models/get-webhook-endpoint200-response.ts +27 -0
  850. package/models/health-controller-check200-response.ts +27 -0
  851. package/models/health-response-dto.ts +2 -2
  852. package/models/hierarchical-region-dto.ts +2 -2
  853. package/models/hierarchical-region-v1-dto.ts +2 -2
  854. package/models/index.ts +54 -8
  855. package/models/introspect-request-dto.ts +56 -0
  856. package/models/introspection-response-dto.ts +51 -0
  857. package/models/invalid-param-dto.ts +2 -2
  858. package/models/invoice-completed-response-dto.ts +2 -2
  859. package/models/list-bid-contract-documents200-response.ts +27 -0
  860. package/models/list-bid-participants200-response.ts +27 -0
  861. package/models/list-bid-results200-response.ts +27 -0
  862. package/models/list-bids-response-dto.ts +2 -2
  863. package/models/list-bids200-response.ts +27 -0
  864. package/models/list-products200-response.ts +27 -0
  865. package/models/list-webhook-deliveries-response-dto.ts +30 -0
  866. package/models/list-webhook-deliveries200-response.ts +27 -0
  867. package/models/list-webhook-endpoints200-response.ts +27 -0
  868. package/models/mark-bid-failed-request-dto.ts +2 -2
  869. package/models/mark-bid-failed-v1-request-dto.ts +2 -2
  870. package/models/mark-bid-failed201-response.ts +27 -0
  871. package/models/negotiation-score-v1-dto.ts +2 -2
  872. package/models/negotiation-scored-response-dto.ts +2 -2
  873. package/models/oauth-error-response-dto.ts +2 -2
  874. package/models/partner-webhook-delivery-status.ts +28 -0
  875. package/models/partner-webhook-endpoint-status.ts +29 -0
  876. package/models/partner-webhook-event-type.ts +32 -0
  877. package/models/preconditions-dto.ts +2 -2
  878. package/models/preconditions-v1-dto.ts +2 -2
  879. package/models/problem-details-dto.ts +7 -3
  880. package/models/product-receipt-response-dto.ts +23 -0
  881. package/models/product-receipt-v1-response-dto.ts +2 -2
  882. package/models/product-response-dto.ts +83 -0
  883. package/models/product-v1-response-dto.ts +2 -2
  884. package/models/protected-resource-metadata-dto.ts +2 -2
  885. package/models/publish-bid200-response.ts +27 -0
  886. package/models/regenerate-contract-documents201-response.ts +27 -0
  887. package/models/register-award-request-dto.ts +2 -2
  888. package/models/register-award-v1-request-dto.ts +2 -2
  889. package/models/register-award201-response.ts +27 -0
  890. package/models/register-bid201-response.ts +27 -0
  891. package/models/register-semo-contract-request-dto.ts +2 -2
  892. package/models/request-split-invoice-v1-request-dto.ts +2 -2
  893. package/models/retiree-roster-input-dto.ts +2 -2
  894. package/models/retiree-roster-row-dto.ts +2 -2
  895. package/models/revert-award-request-dto.ts +23 -0
  896. package/models/revert-award200-response.ts +27 -0
  897. package/models/revoke-request-dto.ts +2 -2
  898. package/models/semo-contract-registered-response-dto.ts +2 -2
  899. package/models/semo-contract-taxinvoice-status-response-dto.ts +2 -2
  900. package/models/send-webhook-test-event200-response.ts +27 -0
  901. package/models/split-invoice-v1-response-dto.ts +2 -2
  902. package/models/statement-document-dto.ts +2 -2
  903. package/models/statement-product-dto.ts +2 -2
  904. package/models/statement-v1-document-dto.ts +2 -2
  905. package/models/statement-v1-product-dto.ts +2 -2
  906. package/models/submit-negotiation-scores-v1-request-dto.ts +2 -2
  907. package/models/supplier-card-payable-response-dto.ts +2 -2
  908. package/models/supplier-tax-type.ts +2 -2
  909. package/models/token-request-dto.ts +2 -2
  910. package/models/token-response-dto.ts +2 -2
  911. package/models/update-bid-request-dto.ts +2 -2
  912. package/models/update-bid200-response.ts +27 -0
  913. package/models/update-webhook-endpoint-request-dto.ts +39 -0
  914. package/models/upload-file-request-dto.ts +2 -2
  915. package/models/upload-file-v1-request-dto.ts +2 -2
  916. package/models/upload-file201-response.ts +27 -0
  917. package/models/webhook-delivery-dto.ts +82 -0
  918. package/models/webhook-endpoint-dto.ts +67 -0
  919. package/models/webhook-endpoint-with-secret-dto.ts +71 -0
  920. package/models/webhook-test-result-dto.ts +31 -0
  921. package/package.json +1 -1
  922. package/dist/esm/models/close-sandbox-bid-response-dto.d.ts +0 -34
  923. package/dist/esm/models/close-sandbox-bid-response-dto.js +0 -21
  924. package/dist/esm/models/embed-launch-request-dto.d.ts +0 -33
  925. package/dist/esm/models/embed-launch-request-dto.js +0 -20
  926. package/dist/esm/models/embed-launch-response-dto.d.ts +0 -21
  927. package/dist/esm/models/embed-launch-response-dto.js +0 -14
  928. package/dist/esm/models/issue-tax-invoice-request-dto.d.ts +0 -17
  929. package/dist/esm/models/issue-tax-invoice-request-dto.js +0 -14
  930. package/dist/esm/models/negotiation-score-dto.d.ts +0 -25
  931. package/dist/esm/models/negotiation-score-dto.js +0 -14
  932. package/dist/esm/models/negotiation-scored-v2-response-dto.d.ts +0 -29
  933. package/dist/esm/models/negotiation-scored-v2-response-dto.js +0 -16
  934. package/dist/esm/models/submit-negotiation-scores-request-dto.d.ts +0 -22
  935. package/dist/esm/models/submit-negotiation-scores-request-dto.js +0 -14
  936. package/dist/esm/models/tax-invoice-issued-response-dto.d.ts +0 -33
  937. package/dist/esm/models/tax-invoice-issued-response-dto.js +0 -14
  938. package/dist/models/close-sandbox-bid-response-dto.d.ts +0 -34
  939. package/dist/models/close-sandbox-bid-response-dto.js +0 -24
  940. package/dist/models/embed-launch-request-dto.d.ts +0 -33
  941. package/dist/models/embed-launch-request-dto.js +0 -23
  942. package/dist/models/embed-launch-response-dto.d.ts +0 -21
  943. package/dist/models/embed-launch-response-dto.js +0 -15
  944. package/dist/models/issue-tax-invoice-request-dto.d.ts +0 -17
  945. package/dist/models/issue-tax-invoice-request-dto.js +0 -15
  946. package/dist/models/negotiation-score-dto.d.ts +0 -25
  947. package/dist/models/negotiation-score-dto.js +0 -15
  948. package/dist/models/negotiation-scored-v2-response-dto.d.ts +0 -29
  949. package/dist/models/negotiation-scored-v2-response-dto.js +0 -19
  950. package/dist/models/submit-negotiation-scores-request-dto.d.ts +0 -22
  951. package/dist/models/submit-negotiation-scores-request-dto.js +0 -15
  952. package/dist/models/tax-invoice-issued-response-dto.d.ts +0 -33
  953. package/dist/models/tax-invoice-issued-response-dto.js +0 -15
  954. package/docs/CloseSandboxBidResponseDto.md +0 -24
  955. package/docs/EmbedLaunchRequestDto.md +0 -24
  956. package/docs/EmbedLaunchResponseDto.md +0 -22
  957. package/docs/NegotiationScoreDto.md +0 -24
  958. package/docs/NegotiationScoredV2ResponseDto.md +0 -24
  959. package/docs/SubmitNegotiationScoresRequestDto.md +0 -22
  960. package/docs/TaxInvoiceIssuedResponseDto.md +0 -28
  961. package/models/close-sandbox-bid-response-dto.ts +0 -43
  962. package/models/embed-launch-request-dto.ts +0 -42
  963. package/models/embed-launch-response-dto.ts +0 -27
  964. package/models/issue-tax-invoice-request-dto.ts +0 -23
  965. package/models/negotiation-score-dto.ts +0 -31
  966. package/models/negotiation-scored-v2-response-dto.ts +0 -38
  967. package/models/submit-negotiation-scores-request-dto.ts +0 -30
  968. package/models/tax-invoice-issued-response-dto.ts +0 -39
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * CMARKET V6 Partner API
3
- * 외부 ERP 연동용 RESTful API. ## 버전별 인증 - **_/v2** — OAuth2 Bearer JWT (`client_credentials` 플로우). `/oauth/token` 에서 토큰 발급 후 `Authorization: Bearer <token>` 헤더. - **_/v1** — V5 충실 platform-auth. `X-Platform-Id`(cate_set.api_id) / `X-Platform-Secret`(cate_set.api_secret, MD5-hex) 헤더로 전송. ## 권한 — 두 개의 독립된 축 `403` 을 만났다면 둘 중 어느 축에 걸린 것인지 먼저 구분할 것. - **스코프** = *무엇을 할 수 있나*. 토큰에 부여된 `bids:read`·`contracts:write` 등. 미보유 시 `…/insufficient-scope`. - **대행 범위** = *누구의 데이터를 다룰 수 있나*. API 키 설정이며 스코프로 표현되지 않는다. 범위 밖이면 스코프와 무관하게 403 이다. 대행 범위는 키마다 둘 중 하나로 설정된다 — **소속 그룹 전원**(기관 키. 사업처·부서 계정이 새로 생겨도 자동 포함) 또는 **지정 발주처 목록**(계약으로 합의된 목록). 범위를 넓혀야 하면 스코프가 아니라 키 설정 변경을 요청할 것. ## 에러 (RFC 9457 problem+json) 모든 에러 응답은 `application/problem+json`. 소비자는 **HTTP status + `type` URI** 로 분기한다. - `retryable`(boolean): 자동 재시도 안전 여부. `true`(429·5xx transient)면 backoff 후 재시도, `false`면 요청을 고쳐야 한다. - `correlationId`: 요청 추적 id. `X-Correlation-Id` 응답 헤더와 동일문의 이 값을 첨부. - `invalid-params`: 검증 실패(400 `…/validation-failed`) 시 위반 필드 경로 목록(RFC 9457 확장, 값 없음). `type` 은 `https://problems.cmarket.io/partner/<slug>` 형태의 **안정 식별자**다. RFC 9457 §3.1.1 이 허용하는 대로 이 URI 는 **역참조(dereference)되지 않는다** — 브라우저로 열지 말고 문자열 비교로만 쓸 것. slug 목록과 의미는 각 엔드포인트의 응답 설명에 status 별로 명시돼 있다. 새 slug 은 추가될 수 있으므로, 모르는 slug 을 만나면 `type` 이 아니라 **HTTP status 로 폴백**하도록 구현할 것. ### 멱등성 위반: 409 와 422 의 차이 - `409` `…/idempotency-key-conflict` — 같은 키의 **원 요청이 아직 처리 중**이다. 잠시 뒤 같은 키로 다시 부르면 그 결과를 받는다. - `422` `…/idempotency-key-reused` — 같은 키를 **다른 body** 로 보냈다. 재시도해도 영원히 같은 실패다. 새 키를 쓰거나 body 를 되돌릴 것. ## 레이트 리밋 전역 **60 요청/분 per `client_id`**, 토큰 발급(`/oauth/token`)은 **5 요청/분**. 초과 시 `429`(`type: …/too-many-requests`). 쿼터는 두 가지 표기로 함께 나간다 — 신규 연동은 표준 필드를 쓸 것. - **표준**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (정책) · `RateLimit: \"default\";r=59;t=42` (잔량 r, 리셋까지 t 초) - **레거시**(관용): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. 기존 연동 호환을 위해 유지한다. `429` 에서는 `Retry-After`(초)가 우선한다. 대량 동기화(품목 단위 반복 등록 등)는 `Retry-After` 만큼 backoff 후 재시도할 것. ## 추적 요청에 `X-Correlation-Id` 헤더를 실으면 그대로 echo 되고, 없으면 서버가 발급한다. 모든 응답(성공/에러)에 `X-Correlation-Id` 가 실린다. ## 버전 수명(deprecation/sunset) - **_/v1** 은 레거시 V5 cutover 완료 시점까지 유지되는 충실 프록시다. 폐지 일정이 정해지면 /v1 응답에 `Deprecation`(RFC 9745, `@<epoch초>`) `Sunset`(RFC 8594, HTTP-date) 헤더가 실린다 전까지는 헤더가 나가지 않는다. - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` 헤더로 통지한다. 소비자는 이 헤더를 모니터링할 것.
3
+ * 외부 ERP 연동용 RESTful API. ## 버전별 인증 - **_/v2** — OAuth2 Bearer JWT (`client_credentials` 플로우). `/oauth/token` 에서 토큰 발급 후 `Authorization: Bearer <token>` 헤더. - **_/v1** — V5 충실 platform-auth. `X-Platform-Id`(cate_set.api_id) / `X-Platform-Secret`(cate_set.api_secret, MD5-hex) 헤더로 전송. ## 권한 — 두 개의 독립된 축 `403` 을 만났다면 둘 중 어느 축에 걸린 것인지 먼저 구분할 것. - **스코프** = *무엇을 할 수 있나*. 토큰에 부여된 `bids:read`·`contracts:write` 등. 미보유 시 `…/insufficient-scope`. - **대행 범위** = *누구의 데이터를 다룰 수 있나*. API 키 설정이며 스코프로 표현되지 않는다. 범위 밖이면 스코프와 무관하게 403 이다. 대행 범위는 키마다 둘 중 하나로 설정된다 — **소속 그룹 전원**(기관 키. 사업처·부서 계정이 새로 생겨도 자동 포함) 또는 **지정 발주처 목록**(계약으로 합의된 목록). 범위를 넓혀야 하면 스코프가 아니라 키 설정 변경을 요청할 것. ## 성공 응답 봉투 `/v2` 의 모든 2xx 본문은 `{ \"data\": … }` 입니다. 단일 리소스든 목록이든 같습니다. 목록처럼 부가 정보가 있는 응답은 `meta` 가 함께 실립니다 — 예: `{ \"data\": [...], \"meta\": { \"nextCursor\": \"…\" } }`. 부가 정보가 없으면 `meta` 키는 아예 나가지 않습니다(빈 객체를 싣지 않습니다). 봉투를 쓰지 않는 표면은 셋입니다. `/oauth/_*` 와 `/.well-known/_*` 는 각각 RFC 6749·RFC 8414·RFC 9728 이 최상위 필드를 규정하고, `/v1/_*` 은 동결된 레거시 표면이며, 파일 내용 응답은 본문이 JSON 이 아닙니다. 에러 응답에는 봉투를 씌우지 않습니다 — 아래 problem+json 이 단독으로 책임집니다. ## 조건부 요청 (ETag) `/v2` 의 모든 `GET` 응답에 weak `ETag`(`W/\"…\"`)가 실립니다. 받은 값을 다음 요청의 `If-None-Match` 헤더로 되보내면, 내용이 그대로일 때 `304 Not Modified` 를 본문 없이 받습니다. 결과가 나기를 기다리며 같은 자원을 반복 조회하는 연동이라면 이 헤더 하나로 전송량이 사라집니다. 호출 횟수 자체를 줄이려면 웹훅을 사용하세요. ## 에러 (RFC 9457 problem+json) 모든 에러 응답은 `application/problem+json`. 소비자는 **HTTP status + `type` URI** 로 분기한다. - `retryable`(boolean): 자동 재시도 안전 여부. `true`(429·5xx transient)면 backoff 후 재시도, `false`면 요청을 고쳐야 한다. - `traceId`: 요청 추적 id. `X-Correlation-Id` 응답 헤더와 같은 값입니다 문의할 이 값을 첨부하세요. - `correlationId`: `traceId` 와 같은 값의 옛 이름. 기존 연동 호환으로 함께 실립니다. 새 연동은 `traceId` 를 읽으세요. - `invalid-params`: 검증 실패(400 `…/validation-failed`) 시 위반 필드 경로 목록(RFC 9457 확장, 값 없음). `type` 은 `https://problems.cmarket.io/partner/<slug>` 형태의 **안정 식별자**다. RFC 9457 §3.1.1 이 허용하는 대로 이 URI 는 **역참조(dereference)되지 않는다** — 브라우저로 열지 말고 문자열 비교로만 쓸 것. slug 목록과 의미는 각 엔드포인트의 응답 설명에 status 별로 명시돼 있다. 새 slug 은 추가될 수 있으므로, 모르는 slug 을 만나면 `type` 이 아니라 **HTTP status 로 폴백**하도록 구현할 것. ### 멱등성 위반: 409 와 422 의 차이 - `409` `…/idempotency-key-conflict` — 같은 키의 **원 요청이 아직 처리 중**이다. 잠시 뒤 같은 키로 다시 부르면 그 결과를 받는다. - `422` `…/idempotency-key-reused` — 같은 키를 **다른 body** 로 보냈다. 재시도해도 영원히 같은 실패다. 새 키를 쓰거나 body 를 되돌릴 것. ## 레이트 리밋 전역 **60 요청/분 per `client_id`**, 토큰 발급(`/oauth/token`)은 **5 요청/분**. 초과 시 `429`(`type: …/too-many-requests`). 쿼터는 두 가지 표기로 함께 나간다 — 신규 연동은 표준 필드를 쓸 것. - **표준**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (정책) · `RateLimit: \"default\";r=59;t=42` (잔량 r, 리셋까지 t 초) - **레거시**(관용): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. 기존 연동 호환을 위해 유지한다. `429` 에서는 `Retry-After`(초)가 우선한다. 대량 동기화(품목 단위 반복 등록 등)는 `Retry-After` 만큼 backoff 후 재시도할 것. ## 추적 요청에 `X-Correlation-Id` 헤더를 실으면 그대로 echo 되고, 없으면 서버가 발급한다. 모든 응답(성공/에러)에 `X-Correlation-Id` 가 실린다. ## 버전 수명(deprecation/sunset) - **_/v1** 은 레거시 V5 cutover 완료 시점까지 유지되는 충실 프록시입니다. 폐지 일정이 정해지면 /v1 응답에 헤더 세 개가 실립니다 — `Deprecation`(RFC 9745, `@<epoch초>`) · `Sunset`(RFC 8594, HTTP-date) · `Link`(RFC 8288, `rel=\"deprecation\"`/`rel=\"sunset\"` 이전 안내 문서를 가리킵니다). 일정이 정해지기 전에는 셋 다 나가지 않습니다. 종료일이 지난 뒤의 호출은 `404` 가 아니라 **`410 Gone`** 과 `type: …/endpoint-sunset` 으로 거절됩니다. 둘의 뜻이 다릅니다 — `404` 는 \"그런 것이 있었는지 모르겠다\", `410` 은 \"있었고 의도적으로 없앴다\" 입니다. `410` 을 받으면 경로 오타를 의심하지 말고 /v2 로 이전하세요. - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` 헤더로 통지한다. 소비자는 이 헤더를 모니터링할 것.
4
4
  *
5
- * The version of the OpenAPI document: 25.2.0
5
+ * The version of the OpenAPI document: 31.1.0
6
6
  * Contact: semo.io.kr@gmail.com
7
7
  *
8
8
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -12,56 +12,83 @@
12
12
  import type { Configuration } from '../configuration';
13
13
  import type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from 'axios';
14
14
  import { type RequestArgs, BaseAPI } from '../base';
15
- import type { AcceptanceResultResponseDto } from '../models';
16
- import type { AwardRegisteredV2ResponseDto } from '../models';
17
- import type { BidDetailResponseDto } from '../models';
18
- import type { BidFailedV2ResponseDto } from '../models';
15
+ import type { AcknowledgeProductReceipt200Response } from '../models';
16
+ import type { AcknowledgeProductsRequestDto } from '../models';
19
17
  import type { BidPublicStatus } from '../models';
20
- import type { BidPublishedResponseDto } from '../models';
21
- import type { BidRegisteredResponseDto } from '../models';
22
- import type { BidResultsResponseDto } from '../models';
23
- import type { BidSettlementResponseDto } from '../models';
24
- import type { BidStatementResponseDto } from '../models';
25
- import type { BidUpdatedResponseDto } from '../models';
18
+ import type { BidResultsBatchRequestDto } from '../models';
19
+ import type { CancelBid200Response } from '../models';
20
+ import type { CancelBidRequestDto } from '../models';
26
21
  import type { CardPaymentRequestResponseDto } from '../models';
27
- import type { CloseSandboxBidResponseDto } from '../models';
22
+ import type { CompleteAcceptance200Response } from '../models';
28
23
  import type { CompleteAcceptanceRequestDto } from '../models';
29
- import type { ContractDocumentsRegeneratedResponseDto } from '../models';
24
+ import type { CompleteInvoice200Response } from '../models';
30
25
  import type { CreateBidRequestDto } from '../models';
26
+ import type { CreateCardPayment200Response } from '../models';
31
27
  import type { CreateCardPaymentRequestDto } from '../models';
32
28
  import type { CreateExternalContractDocumentsRequestDto } from '../models';
33
29
  import type { CreateExternalContractDocumentsResponseDto } from '../models';
34
- import type { EmbedLaunchRequestDto } from '../models';
35
- import type { EmbedLaunchResponseDto } from '../models';
30
+ import type { CreateWebhookEndpoint201Response } from '../models';
31
+ import type { CreateWebhookEndpointRequestDto } from '../models';
36
32
  import type { ExternalContractDocumentsResponseDto } from '../models';
37
- import type { FileUploadedResponseDto } from '../models';
38
- import type { HealthResponseDto } from '../models';
39
- import type { InvoiceCompletedResponseDto } from '../models';
40
- import type { IssueTaxInvoiceRequestDto } from '../models';
41
- import type { ListBidsResponseDto } from '../models';
33
+ import type { GetBid200Response } from '../models';
34
+ import type { GetBidAcceptance200Response } from '../models';
35
+ import type { GetBidResults200Response } from '../models';
36
+ import type { GetBidSettlement200Response } from '../models';
37
+ import type { GetBidStatement200Response } from '../models';
38
+ import type { GetFileMeta200Response } from '../models';
39
+ import type { GetSupplierCardPayableV2200Response } from '../models';
40
+ import type { GetWebhookEndpoint200Response } from '../models';
41
+ import type { HealthControllerCheck200Response } from '../models';
42
+ import type { ListBidContractDocuments200Response } from '../models';
43
+ import type { ListBidParticipants200Response } from '../models';
44
+ import type { ListBidResults200Response } from '../models';
45
+ import type { ListBids200Response } from '../models';
46
+ import type { ListProducts200Response } from '../models';
47
+ import type { ListWebhookDeliveries200Response } from '../models';
48
+ import type { ListWebhookEndpoints200Response } from '../models';
49
+ import type { MarkBidFailed201Response } from '../models';
42
50
  import type { MarkBidFailedRequestDto } from '../models';
43
- import type { NegotiationScoredV2ResponseDto } from '../models';
51
+ import type { PartnerWebhookDeliveryStatus } from '../models';
52
+ import type { PublishBid200Response } from '../models';
53
+ import type { RegenerateContractDocuments201Response } from '../models';
54
+ import type { RegisterAward201Response } from '../models';
44
55
  import type { RegisterAwardRequestDto } from '../models';
56
+ import type { RegisterBid201Response } from '../models';
45
57
  import type { RegisterSemoContractRequestDto } from '../models';
58
+ import type { RevertAward200Response } from '../models';
59
+ import type { RevertAwardRequestDto } from '../models';
46
60
  import type { SemoContractRegisteredResponseDto } from '../models';
47
61
  import type { SemoContractTaxinvoiceStatusResponseDto } from '../models';
48
- import type { SubmitNegotiationScoresRequestDto } from '../models';
62
+ import type { SendWebhookTestEvent200Response } from '../models';
49
63
  import type { SupplierCardPayableResponseDto } from '../models';
50
- import type { TaxInvoiceIssuedResponseDto } from '../models';
64
+ import type { UpdateBid200Response } from '../models';
51
65
  import type { UpdateBidRequestDto } from '../models';
66
+ import type { UpdateWebhookEndpointRequestDto } from '../models';
67
+ import type { UploadFile201Response } from '../models';
52
68
  import type { UploadFileRequestDto } from '../models';
53
69
  /**
54
70
  * PartnerV2Api - axios parameter creator
55
71
  */
56
72
  export declare const PartnerV2ApiAxiosParamCreator: (configuration?: Configuration) => {
57
73
  /**
58
- * 샌드박스 공고를 마감하는 **영업 데모 전용** 엔드포인트입니다. **가짜 상태 주입이 아닙니다.** backend 스케줄러가 부르는 것과 동일한 실제 `CloseBidCommand` dispatch 합니다 개찰이 실제로 수행되고, `status=\'B\'` 커밋 직전 투찰가 동기 복호화가 실제로 일어납니다(복호화 실패 마감이 중단됩니다). 엔드포인트는 데모인 동시에 살아있는 e2e 스모크입니다. **데모 공고 전용:** backend 공고 명의 == 데모 발주처인 공고에 한해서만 마감합니다. 실 발주처 공고는 절대 마감하지 않습니다. **마감 불가:** 이미 마감됐거나 마감 불가 상태면 409(`type: …/upstream-conflict`)를 반환합니다. **필수 스코프:** `bids:write`
59
- * @summary 샌드박스 공고 마감 (영업 데모 전용)
60
- * @param {string} bidId 샌드박스 공고 ID(&#x3D; backend bidId).
74
+ * 저장을 마친 물품을 전송완료로 표시해 다음 조회에서 제외합니다. **되돌릴 없습니다.** 표시한 물품은 `GET /v2/products` 다시 내려오지 않으므로, 자기 시스템에 저장이 끝난 뒤에 호출하세요. **표시 범위는 기관 그룹으로 잠깁니다.** 다른 기관의 물품 코드를 섞어 보내면 건은 표시되지 않고 `acknowledged`요청 수보다 작게 돌아옵니다. **필수 스코프:** `products:write` **멱등성:** `Idempotency-Key` 헤더 필수.
75
+ * @summary 물품 수신확인
76
+ * @param {string} idempotencyKey 멱등성 (1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
77
+ * @param {AcknowledgeProductsRequestDto} acknowledgeProductsRequestDto
61
78
  * @param {*} [options] Override http request option.
62
79
  * @throws {RequiredError}
63
80
  */
64
- closeSandboxBid: (bidId: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
81
+ acknowledgeProductReceipt: (idempotencyKey: string, acknowledgeProductsRequestDto: AcknowledgeProductsRequestDto, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
82
+ /**
83
+ * 진행중인 공고를 취소합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. **되돌릴 수 없습니다.** 취소 사유는 필수이며 공고 이력에 남습니다. **전제조건:** 진행중(ONGOING) 상태여야 합니다. **거부:** 진행중이 아니거나 이미 취소된 공고 → 409. 타 발주처 공고 → 403. **마감과의 차이:** 취소는 공고를 무효로 되돌리는 것이고, 유찰(`POST /v2/bids/{bidId}/fail`)은 응찰을 받았으나 낙찰자를 정하지 못한 종료입니다.
84
+ * @summary 공고 취소
85
+ * @param {string} bidId 공고 식별자(등록 응답의 bidId).
86
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
87
+ * @param {CancelBidRequestDto} cancelBidRequestDto
88
+ * @param {*} [options] Override http request option.
89
+ * @throws {RequiredError}
90
+ */
91
+ cancelBid: (bidId: string, idempotencyKey: string, cancelBidRequestDto: CancelBidRequestDto, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
65
92
  /**
66
93
  * 낙찰 공고의 검수(납품 검수)가 완료되었음을 기록합니다. **V5 대응:** `acceptanceCompleteSend` — BidApi.xml `acceptanceComplete` 액션의 V6 후속. **호출 시점:** 낙찰자(공급사)가 납품을 완료하고 구매자가 검수를 확인한 시점. 공고 상태가 낙찰(AWARDED) 상태여야 합니다. **부수효과:** - 검수완료 상태가 기록됩니다. - 응답은 204가 아닌 200입니다 — 멱등성 인터셉터가 구체 바디를 캐시하고 SDK 가 타입드 응답을 필요로 하기 때문. **V5-compat 안내:** 거래명세서·검수보고서에 찍힐 구매사 사업자정보·담당자·작성일자 override(11종)는 modern v2 표면에서 제거됐습니다. 필요 시 V5 충실 카운터파트 `POST /v1/bids/{bidId}/acceptance`(`CompleteAcceptanceV1RequestDto`)를 사용하세요. **낙찰자 식별:** `winnerMemberId`(공급사 memberId). 내부 joinSeq 해소는 backend 가 처리합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
67
94
  * @summary 검수완료 전송
@@ -82,24 +109,25 @@ export declare const PartnerV2ApiAxiosParamCreator: (configuration?: Configurati
82
109
  */
83
110
  completeInvoice: (bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
84
111
  /**
85
- * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인(APPROVED)되어 바로 결제 가능합니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. 거기서 카드를 골라 결제합니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/card-payment-requests/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
112
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인되어 바로 결제할 수 있습니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 도메인 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
86
113
  * @summary 결제창 발행
87
114
  * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
88
115
  * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
89
116
  * @param {*} [options] Override http request option.
90
117
  * @throws {RequiredError}
91
118
  */
92
- createCardPaymentRequest: (idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
119
+ createCardPayment: (idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
93
120
  /**
94
- * 스코프 `embed:launch` 필수. 발주기관 담당자(memberId) 일회성 launch code(60초 TTL) 발급한다. code URL 싣지 말고 @cmarket/embed SDK postMessage 핸드셰이크로만 iframe 전달할 것. memberId API 키의 발주처 소속이 아니면 403, 미허용 screen 400.
95
- * @summary 임베드 launch code 발급 (iframe SSO)
96
- * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
121
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인(APPROVED)되어 바로 결제 가능합니다. **사용자 동선:** 응답의 `payUrl` 발주기관을 보내면 결제창 건만 걸러진 화면이 열립니다. 거기서 카드를 골라 결제합니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/card-payment-requests/suppliers/{memberId}/card-payable` 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요. --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
122
+ * @summary 결제창 발행
123
+ * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
124
+ * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
97
125
  * @param {*} [options] Override http request option.
98
126
  * @throws {RequiredError}
99
127
  */
100
- createEmbedLaunch: (embedLaunchRequestDto: EmbedLaunchRequestDto, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
128
+ createCardPaymentRequest: (idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
101
129
  /**
102
- * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `paperCodes` 와 같은 순서로 같은 개수가 돌아옵니다.** 각 항목의 `fileUrl` 을 그대로 쓰면 되고, `paperCode` 로 어느 요청에 대한 결과인지 대응시킬 수 있습니다. **`name` 의 출처는 서류에 따라 다릅니다.** 시스템이 렌더한 서류는 계약서류명이고, 공급사 사전등록 3종(11·12·13)은 **공급사가 등록한 원본 파일명**입니다 — 채팅 첨부 라벨로 그대로 쓰세요. **필요한 입력:** 발주기관·공급사는 회원 ID 만 주면 됩니다. 상호·사업자번호·대표자·주소·직인은 c-market 이 회원 정보에서 직접 채웁니다. **전부 성공 또는 전부 실패입니다.** 지원하지 않는 서류가 하나라도 섞이면(400) 아무것도 만들지 않습니다. 렌더가 필요한 서류를 요청하면서 `contract` 를 빠뜨려도 마찬가지입니다(422). **135(수의계약체결제한여부확인서)를 요청하면 추가 입력이 필요합니다.** `contract.subject`(발주내용)·`contract.category`(계약구분)·`contract.buyerDepartment`(발주부서)가 필수이고, `documentInputs.contractRestrictionConfirm.answers`에 서식 ①~⑧에 대한 **계약상대자**의 답변 8개를 순서대로 담아야 합니다(c-market 이 대신 만들어낼 수 없는 값입니다). ⑨(발주자 확인사항)는 `documentInputs.contractRestrictionConfirm.buyerConfirmation`으로 선택 전달하며, 생략하면 서식에 빈칸으로 인쇄됩니다. 문항 ①~⑧의 원문은 `answers` 필드 설명을 참고하세요. **164(퇴직자영입현황확인서)를 요청하면 퇴직자 명단이 필요합니다.** `contract.subject`(서식의 \"수의계약 대상건명\")가 필수이고, `documentInputs.retireeRoster.rows` 에 명단을 넣습니다(성명·직급 필수, 직급·입사일·근무기간·비고 선택, 최대 50행). **퇴직자가 없으면 `rows` 를 빈 배열로 보내세요** — 서식에 \"해당사항 없음\"으로 인쇄됩니다. 블록 자체를 생략하면 422 입니다(\"퇴직자 없음\"과 \"확인하지 않음\"을 구분할 수 없기 때문입니다). **승낙사항(4·184·185·186·189·197·208)을 요청하면 `contract.subject`(계약건명)가 필수입니다.** 서식 상단 \"건명\" 칸에 인쇄되는 값이라 비면 어느 계약의 승낙인지 알 수 없습니다. 그 외 추가 입력은 없습니다 — 갑(발주기관) 서명란은 `buyerId` 로, 을(공급사) 서명란은 `supplierId` 로 c-market 이 채웁니다. 발주기관이 기관 전용 승낙사항 서식을 쓰면 요청한 코드 그대로 응답하되 PDF 는 그 기관 서식으로 발급됩니다. **응답의 `fileUrl` 은 만료되지 않습니다.** 채팅 메시지 등에 그대로 저장해 두어도 됩니다. **생성 가능한 회원 범위:** 조회와 같습니다 — 이 API 키에 설정된 대행 범위 안의 회원만 가능합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
130
+ * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `paperCodes` 와 같은 순서로 같은 개수가 돌아옵니다.** 각 항목의 `fileUrl` 을 그대로 쓰면 되고, `paperCode` 로 어느 요청에 대한 결과인지 대응시킬 수 있습니다. **`name` 의 출처는 서류에 따라 다릅니다.** 시스템이 렌더한 서류는 계약서류명이고, 공급사 사전등록 3종(11·12·13)은 **공급사가 등록한 원본 파일명**입니다 — 채팅 첨부 라벨로 그대로 쓰세요. **필요한 입력:** 발주기관·공급사는 회원 ID 만 주면 됩니다. 상호·사업자번호·대표자·주소·직인은 c-market 이 회원 정보에서 직접 채웁니다. **전부 성공 또는 전부 실패입니다.** 지원하지 않는 서류가 하나라도 섞이면(400) 아무것도 만들지 않습니다. 렌더가 필요한 서류를 요청하면서 `contract` 를 빠뜨려도 마찬가지입니다(422). **135(수의계약체결제한여부확인서)를 요청하면 추가 입력이 필요합니다.** `contract.subject`(발주내용)·`contract.category`(계약구분)·`contract.buyerDepartment`(발주부서)가 필수이고, `documentInputs.contractRestrictionConfirm.answers`에 서식 ①~⑧에 대한 **계약상대자**의 답변 8개를 순서대로 담아야 합니다(c-market 이 대신 만들어낼 수 없는 값입니다). ⑨(발주자 확인사항)는 `documentInputs.contractRestrictionConfirm.buyerConfirmation`으로 선택 전달하며, 생략하면 서식에 빈칸으로 인쇄됩니다. 문항 ①~⑧의 원문은 `answers` 필드 설명을 참고하세요. **164(퇴직자영입현황확인서)를 요청하면 퇴직자 명단이 필요합니다.** `contract.subject`(서식의 \"수의계약 대상건명\")가 필수이고, `documentInputs.retireeRoster.rows` 에 명단을 넣습니다(성명·직급 필수, 직급·입사일·근무기간·비고 선택, 최대 50행). **퇴직자가 없으면 `rows` 를 빈 배열로 보내세요** — 서식에 \"해당사항 없음\"으로 인쇄됩니다. 블록 자체를 생략하면 422 입니다(\"퇴직자 없음\"과 \"확인하지 않음\"을 구분할 수 없기 때문입니다). **승낙사항(4·184·185·186·189·197·208)을 요청하면 `contract.subject`(계약건명)가 필수입니다.** 서식 상단 \"건명\" 칸에 인쇄되는 값이라 비면 어느 계약의 승낙인지 알 수 없습니다. 그 외 추가 입력은 없습니다 — 갑(발주기관) 서명란은 `buyerId` 로, 을(공급사) 서명란은 `supplierId` 로 c-market 이 채웁니다. 발주기관이 기관 전용 승낙사항 서식을 쓰면 요청한 코드 그대로 응답하되 PDF 는 그 기관 서식으로 발급됩니다. **응답의 `fileUrl` 은 만료되지 않습니다.** 채팅 메시지 등에 그대로 저장해 두어도 됩니다. **생성 가능한 회원 범위:** 조회와 같습니다 — 이 API 키에 설정된 대행 범위 안의 회원만 가능합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수. --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidId}/contract-documents` 가 v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
103
131
  * @summary 계약서류 생성
104
132
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
105
133
  * @param {CreateExternalContractDocumentsRequestDto} createExternalContractDocumentsRequestDto
@@ -108,7 +136,27 @@ export declare const PartnerV2ApiAxiosParamCreator: (configuration?: Configurati
108
136
  */
109
137
  createExternalContractDocuments: (idempotencyKey: string, createExternalContractDocumentsRequestDto: CreateExternalContractDocumentsRequestDto, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
110
138
  /**
111
- * 무인증 — `fileKey` 자체가 capability 다(V5 `/download/{fileKey}` 같은 보안 모델). 파트너 응답의 `fileUrl`/`fullUrl` URL 가리킨다. 요청 시점에 서명하므로 URL저장해 두어도 만료되지 않는다. 응답은 실제 저장소 URL 로의 302 리다이렉트이며 리다이렉트 타깃은 1시간 만료되므로 302 자체를 캐시하지 것(`Cache-Control: no-store`).
139
+ * 수신 주소와 구독할 이벤트를 등록합니다. **호출 시점:** 연동 초기 1회. 수신 주소가 바뀌면 새로 만들지 말고 `PATCH` 로 고치세요 그래야 시크릿과 전송 이력이 유지됩니다. **서명 시크릿은 이 응답에서 한 번만 나갑니다.** 서버는 해시만 보관하므로 조회로 다시 받을 수 없습니다. 응답의 `secret` 즉시 안전한 곳에 보관하세요. 잃어버렸다면 복구가 아니라 `POST /v2/webhook-endpoints/{endpointId}/rotate-secret` 으로 **재발급**해야 합니다. **거절되는 경우와 고치는 법:** - `400` — `url` 이 HTTPS 가 아니거나 형식이 잘못됨, `eventTypes` 가 비었거나 목록 밖 값 (`ping` 은 구독 불가). 값을 고쳐 재시도하세요. - `400` `Idempotency-Key` 헤더 누락/형식 오류. UUID v4 를 실어 보내세요. - `403` — 토큰에 `webhooks:write` 스코프가 없음. 키 발급 설정을 넓혀야 합니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. ### 서명 검증 (필수) 발송 요청마다 헤더 `X-CMarket-Signature` 가 실립니다. ``` X-CMarket-Signature: t=<unix초>,v1=<hex> ``` `v1` 은 `HMAC-SHA256(secret, \"${t}.${요청 본문 원문}\")` 소문자 hex 입니다. 1. 헤더를 `t` 와 `v1` 로 나눕니다. 2. `\"${t}.${본문}\"` 만듭니다. **본문은 파싱 원문 바이트**여야 합니다 JSON 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. 등록 시 받은 시크릿으로 HMAC-SHA256 을 계산해 `v1` 과 비교합니다. 비교는 **상수 시간** 비교 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `t` 가 현재 시각으로부터 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). ### 중복 제거 `X-CMarket-Event-Id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. ### 응답과 재시도 2xx 를 돌려주면 성공입니다. 그 외(또는 무응답)는 실패로 보고 최대 7회 재시도합니다 — 간격은 10초 → 1분 → 5분 → 30분 → 2시간 6시간 24시간 입니다. 처리 시간이 길면 먼저 2xx 를 돌려주고 비동기로 처리하세요. 연속 실패가 20회에 닿으면 구독이 자동으로 `DISABLED` 로 내려가고 발송이 멈춥니다. 수신측을 고친 뒤 `PATCH /v2/webhook-endpoints/{endpointId}` 에 `{\"status\":\"ACTIVE\"}` 로 되살리세요. ### 구독 가능한 이벤트 `bid.closed` · `bid.awarded` · `bid.failed` · `bid.canceled` · `bid.award_reverted` `ping` 은 연결 확인 전용이라 구독할 수 없습니다 — 테스트 발송 경로에서만 나갑니다. ### 놓친 이벤트 확인 `GET /v2/webhook-deliveries` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
140
+ * @summary 웹훅 구독 등록
141
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
142
+ * @param {CreateWebhookEndpointRequestDto} createWebhookEndpointRequestDto
143
+ * @param {*} [options] Override http request option.
144
+ * @throws {RequiredError}
145
+ */
146
+ createWebhookEndpoint: (idempotencyKey: string, createWebhookEndpointRequestDto: CreateWebhookEndpointRequestDto, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
147
+ /**
148
+ * 구독을 삭제합니다. 이후 그 주소로는 아무 이벤트도 발송되지 않습니다. **호출 시점:** 연동을 종료할 때. 잠시만 멈추려면 삭제하지 말고 `PATCH … {\"status\":\"DISABLED\"}` 를 쓰세요 — 시크릿과 이벤트 구성이 남아 그대로 되살릴 수 있습니다. **되돌릴 수 없습니다.** 다시 등록하면 새 구독이고 서명 시크릿도 새 값입니다. **`If-Match` 가 필수입니다.** `GET` 으로 받은 `ETag` 를 실어 보내세요. - `428` — 헤더 누락. 조회 후 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다(누군가 수정했거나 발송기가 상태를 내렸습니다). 다시 조회해 정말 지울 대상이 맞는지 확인하고 최신 `ETag` 로 재시도하세요. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
149
+ * @summary 웹훅 구독 삭제
150
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
151
+ * @param {string} ifMatch
152
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
153
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
154
+ * @param {*} [options] Override http request option.
155
+ * @throws {RequiredError}
156
+ */
157
+ deleteWebhookEndpoint: (endpointId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
158
+ /**
159
+ * 무인증 — `fileKey` 자체가 capability 다(V5 `/download/{fileKey}` 와 같은 보안 모델). 파트너 응답의 `fileUrl`/`fullUrl` 이 이 URL 을 가리킨다. 요청 시점에 서명하므로 URL 을 저장해 두어도 만료되지 않는다. 응답은 실제 저장소 URL 로의 302 리다이렉트이며 리다이렉트 타깃은 1시간 뒤 만료되므로 302 자체를 캐시하지 말 것(`Cache-Control: no-store`). --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — `GET /v2/files/{fileKey}` 가 파일 메타와 `downloadUrl` 을 v2 응답 규약으로 돌려줍니다. 이 안정 URL 은 파트너 응답의 `fileUrl`/`fullUrl` 이 가리키는 주소라 계속 유지되며 중단 일정은 없습니다.
112
160
  * @summary 파일 다운로드 — 안정 URL(302)
113
161
  * @param {string} fileKey 파일 키 — UUIDv4 hex 32자. 업로드(&#x60;POST /v1|/v2/files&#x60;) 응답에서 받은 값.
114
162
  * @param {*} [options] Override http request option.
@@ -123,6 +171,14 @@ export declare const PartnerV2ApiAxiosParamCreator: (configuration?: Configurati
123
171
  * @throws {RequiredError}
124
172
  */
125
173
  getBid: (bidId: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
174
+ /**
175
+ * 공고의 납품·검수·계약완료 진행 상태를 조회합니다. 검수완료 전송의 읽기 카운터파트입니다. **세 축은 서로 다른 사건입니다.** - `delivered`: 낙찰 공급사가 납품(결과확인)을 보고했습니다. - `confirmed`/`confirmedAt`: 발주기관이 검수를 확인했습니다. - `contractCompletedAt`: 검수완료 전송이 원장에 반영된 시각입니다. 검수완료 전송(`POST /v2/bids/{bidId}/acceptance`)이 성사되었는지는 `contractCompletedAt` 이 채워졌는지로 확인하세요. **필수 스코프:** `contracts:read`
176
+ * @summary 검수 현황 조회
177
+ * @param {string} bidId 공고 ID(&#x3D; backend bidId &#x3D; 등록 응답의 bidNo).
178
+ * @param {*} [options] Override http request option.
179
+ * @throws {RequiredError}
180
+ */
181
+ getBidAcceptance: (bidId: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
126
182
  /**
127
183
  * 공고의 응찰 참여 업체·순위·낙찰 여부를 조회한다. scope bids:read.
128
184
  * @summary 입찰 결과 조회
@@ -132,7 +188,7 @@ export declare const PartnerV2ApiAxiosParamCreator: (configuration?: Configurati
132
188
  */
133
189
  getBidResults: (bidId: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
134
190
  /**
135
- * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회한다. scope bids:read. 가시성 마스킹과 직교한 정산 데이터 — read-only.
191
+ * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 가시성 마스킹과는 직교한 정산 데이터이며 읽기 전용입니다. **필수 스코프:** `invoices:read` 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
136
192
  * @summary 입찰결과 정산정보 조회
137
193
  * @param {string} bidId
138
194
  * @param {*} [options] Override http request option.
@@ -140,7 +196,7 @@ export declare const PartnerV2ApiAxiosParamCreator: (configuration?: Configurati
140
196
  */
141
197
  getBidSettlement: (bidId: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
142
198
  /**
143
- * 낙찰 계약의 거래명세서(문서·품목 라인)를 조회한다. scope contracts:read.
199
+ * 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
144
200
  * @summary 거래명세서 조회
145
201
  * @param {string} bidId
146
202
  * @param {number} [paperCode]
@@ -148,6 +204,14 @@ export declare const PartnerV2ApiAxiosParamCreator: (configuration?: Configurati
148
204
  * @throws {RequiredError}
149
205
  */
150
206
  getBidStatement: (bidId: string, paperCode?: number, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
207
+ /**
208
+ * 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **구 경로:** 버전 없는 `GET /files/{fileKey}` 는 만료 없는 안정 주소이고 파트너 응답의 `fileUrl`/`fullUrl` 이 그 값을 가리킵니다. 인증도 스코프도 없는 옛 표면이라 신규 연동은 이 엔드포인트를 쓰세요. 구 경로는 당분간 유지됩니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** 하이픈 없는 16진수 32자가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. **필수 스코프:** `files:read`
209
+ * @summary 파일 조회(메타 + 내려받기 주소)
210
+ * @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(하이픈 없는 16진수 32자).
211
+ * @param {*} [options] Override http request option.
212
+ * @throws {RequiredError}
213
+ */
214
+ getFileMeta: (fileKey: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
151
215
  /**
152
216
  * 등록한 계약의 계산서 발행 상태를 확인합니다. **언제 쓰나:** 씨마켓이 보내는 발행완료 통지를 놓쳤을 때의 **복구 경로**입니다. 평상시에는 통지를 받아 처리하고, 상태가 어긋난 것 같을 때 이 API 로 되읽으세요. **필수 스코프:** `contracts:read`
153
217
  * @summary 계산서 발행 상태 조회
@@ -157,13 +221,29 @@ export declare const PartnerV2ApiAxiosParamCreator: (configuration?: Configurati
157
221
  */
158
222
  getSemoContractTaxinvoiceStatus: (externalContractId: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
159
223
  /**
160
- * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write`
224
+ * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
161
225
  * @summary 공급사 카드결제 가능 여부
162
226
  * @param {string} memberId 계약업체 회원 ID
163
227
  * @param {*} [options] Override http request option.
164
228
  * @throws {RequiredError}
165
229
  */
166
230
  getSupplierCardPayable: (memberId: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
231
+ /**
232
+ * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
233
+ * @summary 공급사 카드결제 가능 여부
234
+ * @param {string} memberId 계약업체 회원 ID
235
+ * @param {*} [options] Override http request option.
236
+ * @throws {RequiredError}
237
+ */
238
+ getSupplierCardPayableV2: (memberId: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
239
+ /**
240
+ * 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
241
+ * @summary 웹훅 구독 단건 조회
242
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
243
+ * @param {*} [options] Override http request option.
244
+ * @throws {RequiredError}
245
+ */
246
+ getWebhookEndpoint: (endpointId: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
167
247
  /**
168
248
  * ERP 연동 직전 회선·인증 endpoint 동작 확인용.
169
249
  * @summary Partner API 헬스체크
@@ -172,15 +252,29 @@ export declare const PartnerV2ApiAxiosParamCreator: (configuration?: Configurati
172
252
  */
173
253
  healthControllerCheck: (options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
174
254
  /**
175
- * 낙찰 공급사가 확정된 공고에 대해 세금계산서를 발행합니다. **호출 시점:** 낙찰자 선정(계약진행) 이후. 과세/면세를 자동 분리해 발행합니다. **부수효과:** - 세금계산서가 국세청에 발행되고 공고가 발행 완료로 마킹됩니다. - 이미 발행됐거나 분할 청구가 진행 중이면 409 거절됩니다. **소유권:** 발행 대상 공고가 API 키에 바인딩된 발주처 소유가 아니면 403. **분할 청구:** 세금계산서 **분할 발급**은 `/v2` 제공되지 않습니다 `/v1` 전용(`POST /v1/invoices/split-requests`)입니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 + 동일 body 재전송 24시간 캐시 응답 반환.
176
- * @summary 세금계산서 발행
255
+ * 공고의 계약서류 목록과 내려받기 주소를 조회합니다. **목록에 실리는 것:** 공고 전체에 공통인 서류(약관·자동생성 공통본) 낙찰자에게 귀속된 서류를 함께 싣습니다. 낙찰자 귀속 서류는 `winnerSequence` 낙찰자의 응찰 순번이 들어갑니다. **아직 없는 서류도 실립니다.** 공고가 제출을 요구했지만 아직 올라오지 않은 서류는 `fileKey: null` 나타나므로, 제출 여부는 값으로 판정하세요. **자동생성 서류:** `autoGenerated: true` 서류는 c-market 만들어 줍니다. 만드는 중이면 `generationState` `QUEUED`/`PROCESSING` 이고 `downloadUrl` 아직 없습니다. `DEAD_LETTER` 는 생성이 실패해 멈춘 상태이며, 같은 경로의 POST(재생성)로 다시 큐에 올립니다. **내려받기:** `downloadUrl` 유효기간 1시간의 서명 주소입니다. 저장해 두고 재사용하지 마시고 필요할 엔드포인트를 다시 호출하세요. 기간에 얽매이지 않으려면 `fileKey` 를 보관하시고 파일 내려받기 경로를 사용하세요. **보이는 범위:** 서버가 공고 낙찰방법과 진행 단계로 결정합니다. 응답을 그대로 사용하시고 클라이언트에서 다시 거르지 마세요. **필수 스코프:** `contracts:read`
256
+ * @summary 계약서류 목록 조회
257
+ * @param {string} bidId 공고번호(buy_idx, 예 CM…) 또는 외부 구매번호(bid_puchase_no).
258
+ * @param {*} [options] Override http request option.
259
+ * @throws {RequiredError}
260
+ */
261
+ listBidContractDocuments: (bidId: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
262
+ /**
263
+ * 공고에 응찰한 업체 목록을 조회합니다. 스코프 `bids:read` 필수. **보이는 범위는 공고의 낙찰방법과 진행 단계가 결정합니다.** 개찰 전에는 업체명이 가려지고 (`companyName: null`), 순위는 산정 전까지 `null` 입니다. 이 판정은 서버가 소유하므로 응답을 그대로 사용하시고 클라이언트에서 다시 계산하지 마세요. 같은 목록이 `GET /v2/bids/{bidId}` 응답의 `participants` 에도 실립니다 — 응찰 현황만 필요하면 이 엔드포인트가 가볍습니다.
264
+ * @summary 응찰 현황 조회
177
265
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
178
- * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
179
- * @param {IssueTaxInvoiceRequestDto} issueTaxInvoiceRequestDto
180
266
  * @param {*} [options] Override http request option.
181
267
  * @throws {RequiredError}
182
268
  */
183
- issueTaxInvoice: (bidId: string, idempotencyKey: string, issueTaxInvoiceRequestDto: IssueTaxInvoiceRequestDto, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
269
+ listBidParticipants: (bidId: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
270
+ /**
271
+ * 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에는 `ETag` 가 실리므로, 다음 요청에 `If-None-Match` 로 되보내면 결과가 그대로일 때 `304` 를 본문 없이 받습니다 — 마감을 기다리는 동안의 전송량이 사라집니다. **식별자 전달:** `?bidIds=A,B,C`(쉼표) 또는 `?bidIds=A&bidIds=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다 — 요청한 건수와 받은 건수가 다를 수 있으니 `bidId` 로 대조하세요. **목록이 길어 URL 이 부담되면** `POST /v2/bid-results/query` 를 쓰세요. 응답은 같습니다.
272
+ * @summary 입찰 결과 배치 조회
273
+ * @param {string} bidIds 조회할 공고 식별자 목록. 쉼표로 구분하거나 &#x60;bidIds&#x60; 를 반복해 전달합니다. 최대 100건.
274
+ * @param {*} [options] Override http request option.
275
+ * @throws {RequiredError}
276
+ */
277
+ listBidResults: (bidIds: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
184
278
  /**
185
279
  * 발주처(API 키 바인딩)의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(쿼리에 buyerId 를 넣지 않습니다). **페이지네이션(cursor):** `limit`(1~100, 기본 100) + `cursor`(불투명 토큰). 응답의 `nextCursor` 를 다음 요청 `cursor` 로 전달하면 다음 페이지를 받습니다. `nextCursor=null` 이면 마지막 페이지입니다. **상태·낙찰방법:** 공개값(의미 문자열)으로 반환됩니다. 낙찰 여부는 상태가 아니라 낙찰 결과 조회의 `participants[].isWinner` 로 관측합니다(AWARDED 상태는 없습니다).
186
280
  * @summary 공고 목록 조회
@@ -194,7 +288,7 @@ export declare const PartnerV2ApiAxiosParamCreator: (configuration?: Configurati
194
288
  */
195
289
  listBids: (limit?: number, cursor?: string, bidIds?: Array<string>, status?: Array<BidPublicStatus>, include?: Array<ListBidsIncludeEnum>, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
196
290
  /**
197
- * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read`
291
+ * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidId}/contract-documents` 가 v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
198
292
  * @summary 거래에 필요한 계약서류 목록 조회
199
293
  * @param {string} buyerId 발주기관 회원 ID(c-market memberId).
200
294
  * @param {ListExternalContractDocumentsBidTypeEnum} bidType 거래유형.
@@ -202,6 +296,31 @@ export declare const PartnerV2ApiAxiosParamCreator: (configuration?: Configurati
202
296
  * @throws {RequiredError}
203
297
  */
204
298
  listExternalContractDocuments: (buyerId: string, bidType: ListExternalContractDocumentsBidTypeEnum, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
299
+ /**
300
+ * 기관에 공유된 물품 중 **아직 전송되지 않은 것**을 조회합니다. **증분 피드입니다.** 가져간 물품을 `POST /v2/products/receipts` 로 수신확인하면 다음 조회 결과에서 빠집니다. 수신확인을 하지 않으면 같은 물품이 계속 내려옵니다. **권장 흐름:** 조회 → 자기 시스템에 저장 → 저장에 성공한 물품 코드만 수신확인. 저장 전에 수신확인하면 그 물품은 다시 받을 수 없습니다. **조회 범위:** 요청 키가 대행하는 기관 그룹입니다. 기관 그룹이 설정되지 않은 키는 403 입니다. **필수 스코프:** `products:read`
301
+ * @summary 물품 카탈로그 조회
302
+ * @param {*} [options] Override http request option.
303
+ * @throws {RequiredError}
304
+ */
305
+ listProducts: (options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
306
+ /**
307
+ * 이 API 키의 웹훅 발송 시도를 최신순으로 조회합니다. 보낸 본문·수신측 응답 상태· 다음 재시도 예정 시각이 함께 실립니다. **호출 시점:** - 수신측 장애로 놓친 이벤트를 메울 때. 이 엔드포인트가 웹훅의 **폴링 대체 경로**입니다 — `status=EXHAUSTED` 로 걸러 다시 처리하면 됩니다. - \"이벤트가 안 온다\" 를 진단할 때. 발송 시도 자체가 없는지(구독·이벤트 타입 문제), 시도했지만 실패했는지(`responseStatus`·`responseBodyExcerpt`)를 여기서 가릅니다. **같은 이벤트가 여러 행으로 보입니다.** 재시도마다 한 행이며 `eventId` 가 같고 `attempt` 만 올라갑니다. 처리 여부는 `eventId` 기준으로 판단하세요. **페이지네이션:** `nextCursor` 를 다음 요청의 `cursor` 로 전달합니다. null 이면 마지막 페이지입니다. **`400`:** `status` 가 허용 값 밖이거나 `limit` 이 범위를 벗어났습니다 — 값을 고쳐 재시도하세요. **필수 스코프:** `webhooks:read`
308
+ * @summary 웹훅 전송 이력 조회
309
+ * @param {string} [endpointId] 이 구독의 전송만 조회합니다. 미지정이면 이 키의 모든 구독을 함께 조회합니다.
310
+ * @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
311
+ * @param {number} [limit] 페이지 크기(1~200, 기본 50).
312
+ * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달합니다. 미지정 시 첫 페이지.
313
+ * @param {*} [options] Override http request option.
314
+ * @throws {RequiredError}
315
+ */
316
+ listWebhookDeliveries: (endpointId?: string, status?: PartnerWebhookDeliveryStatus, limit?: number, cursor?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
317
+ /**
318
+ * 이 API 키가 등록한 웹훅 구독을 모두 조회합니다. **호출 시점:** 연동 상태를 점검할 때, 또는 발송이 멈춘 이유(`status`·`consecutiveFailures`)를 확인할 때. 서명 시크릿은 여기에 실리지 않습니다. **필수 스코프:** `webhooks:read` ### 서명 검증 (필수) 발송 요청마다 헤더 `X-CMarket-Signature` 가 실립니다. ``` X-CMarket-Signature: t=<unix초>,v1=<hex> ``` `v1` 은 `HMAC-SHA256(secret, \"${t}.${요청 본문 원문}\")` 의 소문자 hex 입니다. 1. 헤더를 `t` 와 `v1` 로 나눕니다. 2. `\"${t}.${본문}\"` 을 만듭니다. **본문은 파싱 전 원문 바이트**여야 합니다 — JSON 을 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. 등록 시 받은 시크릿으로 HMAC-SHA256 을 계산해 `v1` 과 비교합니다. 비교는 **상수 시간** 비교 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `t` 가 현재 시각으로부터 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). ### 중복 제거 `X-CMarket-Event-Id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. ### 응답과 재시도 2xx 를 돌려주면 성공입니다. 그 외(또는 무응답)는 실패로 보고 최대 7회 재시도합니다 — 간격은 10초 → 1분 → 5분 → 30분 → 2시간 → 6시간 → 24시간 입니다. 처리 시간이 길면 먼저 2xx 를 돌려주고 비동기로 처리하세요. 연속 실패가 20회에 닿으면 구독이 자동으로 `DISABLED` 로 내려가고 발송이 멈춥니다. 수신측을 고친 뒤 `PATCH /v2/webhook-endpoints/{endpointId}` 에 `{\"status\":\"ACTIVE\"}` 로 되살리세요. ### 구독 가능한 이벤트 `bid.closed` · `bid.awarded` · `bid.failed` · `bid.canceled` · `bid.award_reverted` `ping` 은 연결 확인 전용이라 구독할 수 없습니다 — 테스트 발송 경로에서만 나갑니다. ### 놓친 이벤트 확인 `GET /v2/webhook-deliveries` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
319
+ * @summary 웹훅 구독 목록 조회
320
+ * @param {*} [options] Override http request option.
321
+ * @throws {RequiredError}
322
+ */
323
+ listWebhookEndpoints: (options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
205
324
  /**
206
325
  * 공고를 유찰 상태로 전환합니다. **호출 시점:** 입찰 마감 후 유찰 사유가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 공고 상태가 유찰(FAILED)로 전환됩니다. - 유찰사유 코드와 상세가 기록됩니다. **유찰사유 값 목록(failureReasonCode — 공개값):** | 값 | 의미 | |------|------| | `ABOVE_TARGET_PRICE` | 예정가격 초과 | | `DEPT_MISMATCH` | 자격 미달 | | `NEEDS_EXPERTISE` | 전문성 필요 | | `OTHER` | 기타 (`failureReasonDetail` 필수) | | `NO_PARTICIPANT` | 참가자 없음 | | `SINGLE_PARTICIPANT` | 단독 참가 | | `LESS_THAN_TWO` | 2인 미만 | | `BELOW_MINIMUM` | 최저가 미달 | **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body 에 buyerId 를 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수.
207
326
  * @summary 유찰 처리
@@ -221,6 +340,14 @@ export declare const PartnerV2ApiAxiosParamCreator: (configuration?: Configurati
221
340
  * @throws {RequiredError}
222
341
  */
223
342
  publishBid: (bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
343
+ /**
344
+ * `GET /v2/bid-results` 와 **완전히 같은 조회**이며, 식별자 목록을 본문으로 받습니다. 스코프 `bids:read`. 공고 식별자 100건이면 URL 이 1KB를 넘습니다 — 중간 프록시가 긴 URL 을 자르는 환경을 위한 대체 경로입니다. **부수효과가 없으므로 `Idempotency-Key` 는 필요하지 않습니다.** POST 인 것은 전송 형태의 문제일 뿐이며, 가능하면 캐시·`ETag` 가 동작하는 `GET` 쪽을 쓰세요.
345
+ * @summary 입찰 결과 배치 조회 (본문 전달)
346
+ * @param {BidResultsBatchRequestDto} bidResultsBatchRequestDto
347
+ * @param {*} [options] Override http request option.
348
+ * @throws {RequiredError}
349
+ */
350
+ queryBidResults: (bidResultsBatchRequestDto: BidResultsBatchRequestDto, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
224
351
  /**
225
352
  * 공고의 자동생성 계약서류(발주서·공고결과·표준계약서 등)를 생성/재생성합니다. **V6 대응:** `RegenerateAllContractPdfsCommand` — 웹 어드민의 \"계약 서류 일괄 재생성\"과 동일 경로. **호출 시점:** 낙찰(계약 시작) 후 계약서류가 필요하거나, 생성에 실패한 서류를 다시 만들 때. **부수효과:** - 생성 실패(DEAD_LETTER) 상태의 자동생성 PDF 가 재생성 큐에 등록됩니다(비동기). - 승낙사항(ACCEPTANCE) 계열은 운영자 승인 워크플로가 필요해 이 경로에서 제외됩니다. **응답:** 즉시 파일이 아니라 큐 등록 결과(`enqueuedCount`/`skippedCount`)를 반환합니다. 잠시 후 자동 생성됩니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
226
353
  * @summary 계약서류 생성(재생성)
@@ -243,11 +370,12 @@ export declare const PartnerV2ApiAxiosParamCreator: (configuration?: Configurati
243
370
  /**
244
371
  * 입찰 정보 등록. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수.
245
372
  * @summary 입찰 정보 전송(등록)
373
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
246
374
  * @param {CreateBidRequestDto} createBidRequestDto
247
375
  * @param {*} [options] Override http request option.
248
376
  * @throws {RequiredError}
249
377
  */
250
- registerBid: (createBidRequestDto: CreateBidRequestDto, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
378
+ registerBid: (idempotencyKey: string, createBidRequestDto: CreateBidRequestDto, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
251
379
  /**
252
380
  * 외부에서 맺어진 계약 1건을 씨마켓의 **세금계산서 발행 대상**으로 등록합니다. **등록 후 동선:** 발주기관이 씨마켓 [나의 계약 관리] 에서 계산서 발급을 요청하고, 공급기업이 같은 화면에서 발행합니다. 계산서의 **공급자는 공급기업, 공급받는자는 발주기관**입니다. **대금 흐름:** 씨마켓은 이 거래의 대금을 받지 않습니다 — 발행 경로만 제공합니다. **금액:** `supplyPrice` 는 **부가세를 뺀 과세 공급가액**입니다(결제창 API 가 부가세 포함가를 받는 것과 다릅니다). 과세·면세 공급가액이 모두 0 이면 400 입니다. **사전 조건:** 두 회원 ID 가 씨마켓에 실재해야 합니다. 회원 ID 가 곧 소유권이라, 없는 회원으로 등록하면 아무도 열 수 없는 계산서 대상이 됩니다. **필수 스코프:** `contracts:write`. 바인딩된 발주처 외의 발주기관을 대신하려면 대행 범위에 그 회원이 있어야 합니다. **멱등성:** `externalContractId` 가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 대상을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
253
381
  * @summary 계약 발행대상 등록
@@ -258,25 +386,57 @@ export declare const PartnerV2ApiAxiosParamCreator: (configuration?: Configurati
258
386
  */
259
387
  registerSemoContract: (idempotencyKey: string, registerSemoContractRequestDto: RegisterSemoContractRequestDto, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
260
388
  /**
261
- * 협상방식(NEGOTIATION/NEGOTIATION_AUTO) 공고의 응찰자별 점수를 입력합니다. **호출 시점:** 입찰 마감 낙찰(`POST /v2/bids/{bidId}/award`) 전. 협상방식 공고는 평가를 완료해야 낙찰에 진입할 수 있습니다. **부수효과:** - 응찰자별 기술점수(및 선택적 가격점수 override)가 기록됩니다. - `complete=true` 평가완료 게이트까지 적용돼 낙찰 진입이 가능해집니다. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body buyerId 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 + 동일 body 재전송 24시간 캐시 응답 반환.
262
- * @summary 협상 점수평가
389
+ * 확정된 낙찰을 되돌려 공고를 낙찰대기(PENDING_AWARD) 상태로 보냅니다. 스코프 `awards:write` + `Idempotency-Key` 헤더 필수. **호출 시점:** 낙찰자가 계약을 포기했거나 낙찰 처리 자체가 잘못됐을 때. 되돌린 같은 공고에 다시 낙찰을 등록할 수 있습니다. **되돌릴 없는 경우 409:** - 수수료 결제가 이미 완료된 공고 - 세금계산서가 이미 발행된 공고 - 수입권공매 계열 낙찰방법(다수 낙찰자 구조라 되돌리기 단위가 다릅니다) **사유는 필수입니다** 감사 대상 행위이며 공고 이력에 남습니다. **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
390
+ * @summary 낙찰 되돌리기
263
391
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
392
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
393
+ * @param {RevertAwardRequestDto} revertAwardRequestDto
394
+ * @param {*} [options] Override http request option.
395
+ * @throws {RequiredError}
396
+ */
397
+ revertAward: (bidId: string, idempotencyKey: string, revertAwardRequestDto: RevertAwardRequestDto, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
398
+ /**
399
+ * 서명 시크릿을 새로 발급합니다. 응답의 `secretVersion` 이 1 올라갑니다. **호출 시점:** 시크릿을 분실했거나 유출이 의심될 때, 또는 주기적 교체 정책이 있을 때. **새 시크릿은 이 응답에서 한 번만 나갑니다.** 조회로 다시 받을 수 없습니다. **옛 시크릿은 즉시 무효입니다.** 유예 기간이 없으므로, 수신측이 새 값을 반영하기 전에 도착한 이벤트는 서명 검증에 실패합니다. 배포 순서를 이렇게 잡으세요 — ① 수신측이 옛 값과 새 값을 **둘 다** 받아들이도록 배포 → ② 이 엔드포인트 호출 → ③ 응답의 새 값을 반영 → ④ 옛 값 제거. 검증 실패로 non-2xx 를 돌려주면 실패로 집계되어 20회 연속 시 구독이 중지됩니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 같은 키로 재전송하면 **새로 발급하지 않고** 처음 발급한 값을 그대로 돌려줍니다(24시간) — 네트워크 오류로 응답을 놓쳤을 때 같은 키로 다시 부르세요.
400
+ * @summary 웹훅 서명 시크릿 재발급
401
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
264
402
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
265
- * @param {SubmitNegotiationScoresRequestDto} submitNegotiationScoresRequestDto
266
403
  * @param {*} [options] Override http request option.
267
404
  * @throws {RequiredError}
268
405
  */
269
- submitNegotiationScores: (bidId: string, idempotencyKey: string, submitNegotiationScoresRequestDto: SubmitNegotiationScoresRequestDto, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
406
+ rotateWebhookSecret: (endpointId: string, idempotencyKey: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
407
+ /**
408
+ * 등록된 주소로 `ping` 이벤트를 즉시 1회 보내고 그 결과를 돌려줍니다. **호출 시점:** 구독을 등록한 직후, 수신 주소를 바꾼 직후, 방화벽·인증서를 손본 뒤. **응답은 발송 결과이지 요청 실패가 아닙니다.** 수신측이 받지 못해도 HTTP `200` 에 `delivered: false` 로 옵니다 — `responseStatus`(수신측 상태)와 `error`(연결 거부·타임아웃· TLS 오류)를 보고 원인을 좁히세요. 이 발송에도 실제 이벤트와 **똑같은 서명 헤더**가 실리므로 검증 코드를 그대로 시험할 수 있습니다. `ping` 은 구독 목록에 넣을 수 없는 타입이니, 수신측이 모르는 `eventType` 을 만나면 버리도록 짜여 있다면 이 확인만 실패할 수 있습니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 다시 보내려면 **새 키**를 쓰세요 — 같은 키는 24시간 동안 직전 결과를 그대로 돌려줍니다(재발송하지 않습니다).
409
+ * @summary 웹훅 연결 확인 발송
410
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
411
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
412
+ * @param {*} [options] Override http request option.
413
+ * @throws {RequiredError}
414
+ */
415
+ sendWebhookTestEvent: (endpointId: string, idempotencyKey: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
270
416
  /**
271
417
  * 등록된 공고의 내용을 수정합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. 진행중/초안 상태의 공고만 수정할 수 있습니다. **부수효과:** - 변경 내용이 반영되고 수정이력이 기록됩니다. - `hideEdit=true` 면 변경이력을 비공개 처리하고 노출 카운터 증가를 생략합니다. **수정 제약:** - 낙찰방법(awardMethod)은 수정 불가(잠금). - 참여자가 있으면 입찰방식/면허/예산/품목 일부가 잠깁니다. - 마감/취소된 공고는 수정할 수 없습니다. 한 섹션을 수정하려면 해당 섹션의 필수 필드를 함께 보내야 합니다(부분 섹션은 거부됨).
272
418
  * @summary 입찰 공고 수정
273
419
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
420
+ * @param {string} ifMatch
421
+ * @param {string} ifMatch2 수정하려는 공고의 ETag(필수). 직전 &#x60;GET /v2/bids/{bidId}&#x60; 응답의 &#x60;ETag&#x60; 헤더 값을 그대로 실어 보내세요. 누락하면 428, 그 사이 공고가 바뀌었으면 412 로 거절되며 아무것도 수정되지 않습니다.
274
422
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
275
423
  * @param {UpdateBidRequestDto} updateBidRequestDto
276
424
  * @param {*} [options] Override http request option.
277
425
  * @throws {RequiredError}
278
426
  */
279
- updateBid: (bidId: string, idempotencyKey: string, updateBidRequestDto: UpdateBidRequestDto, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
427
+ updateBid: (bidId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, updateBidRequestDto: UpdateBidRequestDto, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
428
+ /**
429
+ * 수신 주소·구독 이벤트·상태를 수정합니다. 보낸 필드만 바뀝니다. **호출 시점:** 수신 주소가 바뀌었을 때, 구독 이벤트를 늘리거나 줄일 때, 연속 실패로 자동 중지된 구독을 고친 뒤 되살릴 때(`{\"status\":\"ACTIVE\"}`). **`eventTypes` 는 치환입니다** — 보낸 목록이 곧 새 구독 목록입니다. 하나를 더하려면 기존 목록에 더한 **전체**를 보내세요. **`If-Match` 가 필수입니다.** 먼저 `GET /v2/webhook-endpoints/{endpointId}` 로 현재 `ETag` 를 받아 그대로 실어 보내세요. 이 헤더가 없으면 두 요청이 앞서거니 뒤서거니 하며 먼저 한 수정을 조용히 덮어씁니다. - `428` — 헤더를 빼먹었습니다. 조회 후 `ETag` 를 실어 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다. 다시 조회해 최신 `ETag` 로 재시도하세요. 아무것도 수정되지 않았습니다. **시크릿은 이 경로로 바뀌지 않습니다** — 재발급은 `rotate-secret` 입니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
430
+ * @summary 웹훅 구독 수정
431
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
432
+ * @param {string} ifMatch
433
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
434
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
435
+ * @param {UpdateWebhookEndpointRequestDto} updateWebhookEndpointRequestDto
436
+ * @param {*} [options] Override http request option.
437
+ * @throws {RequiredError}
438
+ */
439
+ updateWebhookEndpoint: (endpointId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, updateWebhookEndpointRequestDto: UpdateWebhookEndpointRequestDto, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
280
440
  /**
281
441
  * 스코프 `files:write` + `Idempotency-Key` 헤더 필수. base64 또는 url 중 정확히 하나를 제출한다.
282
442
  * @summary 입찰 첨부파일 업로드(base64 또는 url) → fileKey
@@ -291,13 +451,24 @@ export declare const PartnerV2ApiAxiosParamCreator: (configuration?: Configurati
291
451
  */
292
452
  export declare const PartnerV2ApiFp: (configuration?: Configuration) => {
293
453
  /**
294
- * 샌드박스 공고를 마감하는 **영업 데모 전용** 엔드포인트입니다. **가짜 상태 주입이 아닙니다.** backend 스케줄러가 부르는 것과 동일한 실제 `CloseBidCommand` dispatch 합니다 개찰이 실제로 수행되고, `status=\'B\'` 커밋 직전 투찰가 동기 복호화가 실제로 일어납니다(복호화 실패 마감이 중단됩니다). 엔드포인트는 데모인 동시에 살아있는 e2e 스모크입니다. **데모 공고 전용:** backend 공고 명의 == 데모 발주처인 공고에 한해서만 마감합니다. 실 발주처 공고는 절대 마감하지 않습니다. **마감 불가:** 이미 마감됐거나 마감 불가 상태면 409(`type: …/upstream-conflict`)를 반환합니다. **필수 스코프:** `bids:write`
295
- * @summary 샌드박스 공고 마감 (영업 데모 전용)
296
- * @param {string} bidId 샌드박스 공고 ID(&#x3D; backend bidId).
454
+ * 저장을 마친 물품을 전송완료로 표시해 다음 조회에서 제외합니다. **되돌릴 없습니다.** 표시한 물품은 `GET /v2/products` 다시 내려오지 않으므로, 자기 시스템에 저장이 끝난 뒤에 호출하세요. **표시 범위는 기관 그룹으로 잠깁니다.** 다른 기관의 물품 코드를 섞어 보내면 건은 표시되지 않고 `acknowledged`요청 수보다 작게 돌아옵니다. **필수 스코프:** `products:write` **멱등성:** `Idempotency-Key` 헤더 필수.
455
+ * @summary 물품 수신확인
456
+ * @param {string} idempotencyKey 멱등성 (1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
457
+ * @param {AcknowledgeProductsRequestDto} acknowledgeProductsRequestDto
297
458
  * @param {*} [options] Override http request option.
298
459
  * @throws {RequiredError}
299
460
  */
300
- closeSandboxBid(bidId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CloseSandboxBidResponseDto>>;
461
+ acknowledgeProductReceipt(idempotencyKey: string, acknowledgeProductsRequestDto: AcknowledgeProductsRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AcknowledgeProductReceipt200Response>>;
462
+ /**
463
+ * 진행중인 공고를 취소합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. **되돌릴 수 없습니다.** 취소 사유는 필수이며 공고 이력에 남습니다. **전제조건:** 진행중(ONGOING) 상태여야 합니다. **거부:** 진행중이 아니거나 이미 취소된 공고 → 409. 타 발주처 공고 → 403. **마감과의 차이:** 취소는 공고를 무효로 되돌리는 것이고, 유찰(`POST /v2/bids/{bidId}/fail`)은 응찰을 받았으나 낙찰자를 정하지 못한 종료입니다.
464
+ * @summary 공고 취소
465
+ * @param {string} bidId 공고 식별자(등록 응답의 bidId).
466
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
467
+ * @param {CancelBidRequestDto} cancelBidRequestDto
468
+ * @param {*} [options] Override http request option.
469
+ * @throws {RequiredError}
470
+ */
471
+ cancelBid(bidId: string, idempotencyKey: string, cancelBidRequestDto: CancelBidRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CancelBid200Response>>;
301
472
  /**
302
473
  * 낙찰 공고의 검수(납품 검수)가 완료되었음을 기록합니다. **V5 대응:** `acceptanceCompleteSend` — BidApi.xml `acceptanceComplete` 액션의 V6 후속. **호출 시점:** 낙찰자(공급사)가 납품을 완료하고 구매자가 검수를 확인한 시점. 공고 상태가 낙찰(AWARDED) 상태여야 합니다. **부수효과:** - 검수완료 상태가 기록됩니다. - 응답은 204가 아닌 200입니다 — 멱등성 인터셉터가 구체 바디를 캐시하고 SDK 가 타입드 응답을 필요로 하기 때문. **V5-compat 안내:** 거래명세서·검수보고서에 찍힐 구매사 사업자정보·담당자·작성일자 override(11종)는 modern v2 표면에서 제거됐습니다. 필요 시 V5 충실 카운터파트 `POST /v1/bids/{bidId}/acceptance`(`CompleteAcceptanceV1RequestDto`)를 사용하세요. **낙찰자 식별:** `winnerMemberId`(공급사 memberId). 내부 joinSeq 해소는 backend 가 처리합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
303
474
  * @summary 검수완료 전송
@@ -307,7 +478,7 @@ export declare const PartnerV2ApiFp: (configuration?: Configuration) => {
307
478
  * @param {*} [options] Override http request option.
308
479
  * @throws {RequiredError}
309
480
  */
310
- completeAcceptance(bidId: string, idempotencyKey: string, completeAcceptanceRequestDto: CompleteAcceptanceRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AcceptanceResultResponseDto>>;
481
+ completeAcceptance(bidId: string, idempotencyKey: string, completeAcceptanceRequestDto: CompleteAcceptanceRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CompleteAcceptance200Response>>;
311
482
  /**
312
483
  * 공급사로부터 계산서를 수령한 뒤, 계약을 완료처리 상태로 강제 전환합니다. **호출 시점:** 낙찰·계약 완료 후 공급사 계산서를 오프라인으로 수령했을 때. **부수효과:** - 결제완료·계산서 발급 상태가 기록되고 발급일자가 현재 시각으로 설정됩니다. **소유권:** 공고는 요청 파트너 키가 소유한 발주처 명의여야 합니다(타 발주처 공고 → 403). **이미 완료:** 이미 완료처리된 공고 재호출 → 409. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
313
484
  * @summary 정산 마감(송장 강제완료)
@@ -316,26 +487,27 @@ export declare const PartnerV2ApiFp: (configuration?: Configuration) => {
316
487
  * @param {*} [options] Override http request option.
317
488
  * @throws {RequiredError}
318
489
  */
319
- completeInvoice(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<InvoiceCompletedResponseDto>>;
490
+ completeInvoice(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CompleteInvoice200Response>>;
320
491
  /**
321
- * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인(APPROVED)되어 바로 결제 가능합니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. 거기서 카드를 골라 결제합니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/card-payment-requests/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
492
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인되어 바로 결제할 수 있습니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 도메인 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
322
493
  * @summary 결제창 발행
323
494
  * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
324
495
  * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
325
496
  * @param {*} [options] Override http request option.
326
497
  * @throws {RequiredError}
327
498
  */
328
- createCardPaymentRequest(idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CardPaymentRequestResponseDto>>;
499
+ createCardPayment(idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CreateCardPayment200Response>>;
329
500
  /**
330
- * 스코프 `embed:launch` 필수. 발주기관 담당자(memberId) 일회성 launch code(60초 TTL) 발급한다. code URL 싣지 말고 @cmarket/embed SDK postMessage 핸드셰이크로만 iframe 전달할 것. memberId API 키의 발주처 소속이 아니면 403, 미허용 screen 400.
331
- * @summary 임베드 launch code 발급 (iframe SSO)
332
- * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
501
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인(APPROVED)되어 바로 결제 가능합니다. **사용자 동선:** 응답의 `payUrl` 발주기관을 보내면 결제창 건만 걸러진 화면이 열립니다. 거기서 카드를 골라 결제합니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/card-payment-requests/suppliers/{memberId}/card-payable` 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요. --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
502
+ * @summary 결제창 발행
503
+ * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
504
+ * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
333
505
  * @param {*} [options] Override http request option.
334
506
  * @throws {RequiredError}
335
507
  */
336
- createEmbedLaunch(embedLaunchRequestDto: EmbedLaunchRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<EmbedLaunchResponseDto>>;
508
+ createCardPaymentRequest(idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CardPaymentRequestResponseDto>>;
337
509
  /**
338
- * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `paperCodes` 와 같은 순서로 같은 개수가 돌아옵니다.** 각 항목의 `fileUrl` 을 그대로 쓰면 되고, `paperCode` 로 어느 요청에 대한 결과인지 대응시킬 수 있습니다. **`name` 의 출처는 서류에 따라 다릅니다.** 시스템이 렌더한 서류는 계약서류명이고, 공급사 사전등록 3종(11·12·13)은 **공급사가 등록한 원본 파일명**입니다 — 채팅 첨부 라벨로 그대로 쓰세요. **필요한 입력:** 발주기관·공급사는 회원 ID 만 주면 됩니다. 상호·사업자번호·대표자·주소·직인은 c-market 이 회원 정보에서 직접 채웁니다. **전부 성공 또는 전부 실패입니다.** 지원하지 않는 서류가 하나라도 섞이면(400) 아무것도 만들지 않습니다. 렌더가 필요한 서류를 요청하면서 `contract` 를 빠뜨려도 마찬가지입니다(422). **135(수의계약체결제한여부확인서)를 요청하면 추가 입력이 필요합니다.** `contract.subject`(발주내용)·`contract.category`(계약구분)·`contract.buyerDepartment`(발주부서)가 필수이고, `documentInputs.contractRestrictionConfirm.answers`에 서식 ①~⑧에 대한 **계약상대자**의 답변 8개를 순서대로 담아야 합니다(c-market 이 대신 만들어낼 수 없는 값입니다). ⑨(발주자 확인사항)는 `documentInputs.contractRestrictionConfirm.buyerConfirmation`으로 선택 전달하며, 생략하면 서식에 빈칸으로 인쇄됩니다. 문항 ①~⑧의 원문은 `answers` 필드 설명을 참고하세요. **164(퇴직자영입현황확인서)를 요청하면 퇴직자 명단이 필요합니다.** `contract.subject`(서식의 \"수의계약 대상건명\")가 필수이고, `documentInputs.retireeRoster.rows` 에 명단을 넣습니다(성명·직급 필수, 직급·입사일·근무기간·비고 선택, 최대 50행). **퇴직자가 없으면 `rows` 를 빈 배열로 보내세요** — 서식에 \"해당사항 없음\"으로 인쇄됩니다. 블록 자체를 생략하면 422 입니다(\"퇴직자 없음\"과 \"확인하지 않음\"을 구분할 수 없기 때문입니다). **승낙사항(4·184·185·186·189·197·208)을 요청하면 `contract.subject`(계약건명)가 필수입니다.** 서식 상단 \"건명\" 칸에 인쇄되는 값이라 비면 어느 계약의 승낙인지 알 수 없습니다. 그 외 추가 입력은 없습니다 — 갑(발주기관) 서명란은 `buyerId` 로, 을(공급사) 서명란은 `supplierId` 로 c-market 이 채웁니다. 발주기관이 기관 전용 승낙사항 서식을 쓰면 요청한 코드 그대로 응답하되 PDF 는 그 기관 서식으로 발급됩니다. **응답의 `fileUrl` 은 만료되지 않습니다.** 채팅 메시지 등에 그대로 저장해 두어도 됩니다. **생성 가능한 회원 범위:** 조회와 같습니다 — 이 API 키에 설정된 대행 범위 안의 회원만 가능합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
510
+ * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `paperCodes` 와 같은 순서로 같은 개수가 돌아옵니다.** 각 항목의 `fileUrl` 을 그대로 쓰면 되고, `paperCode` 로 어느 요청에 대한 결과인지 대응시킬 수 있습니다. **`name` 의 출처는 서류에 따라 다릅니다.** 시스템이 렌더한 서류는 계약서류명이고, 공급사 사전등록 3종(11·12·13)은 **공급사가 등록한 원본 파일명**입니다 — 채팅 첨부 라벨로 그대로 쓰세요. **필요한 입력:** 발주기관·공급사는 회원 ID 만 주면 됩니다. 상호·사업자번호·대표자·주소·직인은 c-market 이 회원 정보에서 직접 채웁니다. **전부 성공 또는 전부 실패입니다.** 지원하지 않는 서류가 하나라도 섞이면(400) 아무것도 만들지 않습니다. 렌더가 필요한 서류를 요청하면서 `contract` 를 빠뜨려도 마찬가지입니다(422). **135(수의계약체결제한여부확인서)를 요청하면 추가 입력이 필요합니다.** `contract.subject`(발주내용)·`contract.category`(계약구분)·`contract.buyerDepartment`(발주부서)가 필수이고, `documentInputs.contractRestrictionConfirm.answers`에 서식 ①~⑧에 대한 **계약상대자**의 답변 8개를 순서대로 담아야 합니다(c-market 이 대신 만들어낼 수 없는 값입니다). ⑨(발주자 확인사항)는 `documentInputs.contractRestrictionConfirm.buyerConfirmation`으로 선택 전달하며, 생략하면 서식에 빈칸으로 인쇄됩니다. 문항 ①~⑧의 원문은 `answers` 필드 설명을 참고하세요. **164(퇴직자영입현황확인서)를 요청하면 퇴직자 명단이 필요합니다.** `contract.subject`(서식의 \"수의계약 대상건명\")가 필수이고, `documentInputs.retireeRoster.rows` 에 명단을 넣습니다(성명·직급 필수, 직급·입사일·근무기간·비고 선택, 최대 50행). **퇴직자가 없으면 `rows` 를 빈 배열로 보내세요** — 서식에 \"해당사항 없음\"으로 인쇄됩니다. 블록 자체를 생략하면 422 입니다(\"퇴직자 없음\"과 \"확인하지 않음\"을 구분할 수 없기 때문입니다). **승낙사항(4·184·185·186·189·197·208)을 요청하면 `contract.subject`(계약건명)가 필수입니다.** 서식 상단 \"건명\" 칸에 인쇄되는 값이라 비면 어느 계약의 승낙인지 알 수 없습니다. 그 외 추가 입력은 없습니다 — 갑(발주기관) 서명란은 `buyerId` 로, 을(공급사) 서명란은 `supplierId` 로 c-market 이 채웁니다. 발주기관이 기관 전용 승낙사항 서식을 쓰면 요청한 코드 그대로 응답하되 PDF 는 그 기관 서식으로 발급됩니다. **응답의 `fileUrl` 은 만료되지 않습니다.** 채팅 메시지 등에 그대로 저장해 두어도 됩니다. **생성 가능한 회원 범위:** 조회와 같습니다 — 이 API 키에 설정된 대행 범위 안의 회원만 가능합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수. --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidId}/contract-documents` 가 v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
339
511
  * @summary 계약서류 생성
340
512
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
341
513
  * @param {CreateExternalContractDocumentsRequestDto} createExternalContractDocumentsRequestDto
@@ -344,7 +516,27 @@ export declare const PartnerV2ApiFp: (configuration?: Configuration) => {
344
516
  */
345
517
  createExternalContractDocuments(idempotencyKey: string, createExternalContractDocumentsRequestDto: CreateExternalContractDocumentsRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CreateExternalContractDocumentsResponseDto>>;
346
518
  /**
347
- * 무인증 — `fileKey` 자체가 capability 다(V5 `/download/{fileKey}` 같은 보안 모델). 파트너 응답의 `fileUrl`/`fullUrl` URL 가리킨다. 요청 시점에 서명하므로 URL저장해 두어도 만료되지 않는다. 응답은 실제 저장소 URL 로의 302 리다이렉트이며 리다이렉트 타깃은 1시간 만료되므로 302 자체를 캐시하지 것(`Cache-Control: no-store`).
519
+ * 수신 주소와 구독할 이벤트를 등록합니다. **호출 시점:** 연동 초기 1회. 수신 주소가 바뀌면 새로 만들지 말고 `PATCH` 로 고치세요 그래야 시크릿과 전송 이력이 유지됩니다. **서명 시크릿은 이 응답에서 한 번만 나갑니다.** 서버는 해시만 보관하므로 조회로 다시 받을 수 없습니다. 응답의 `secret` 즉시 안전한 곳에 보관하세요. 잃어버렸다면 복구가 아니라 `POST /v2/webhook-endpoints/{endpointId}/rotate-secret` 으로 **재발급**해야 합니다. **거절되는 경우와 고치는 법:** - `400` — `url` 이 HTTPS 가 아니거나 형식이 잘못됨, `eventTypes` 가 비었거나 목록 밖 값 (`ping` 은 구독 불가). 값을 고쳐 재시도하세요. - `400` `Idempotency-Key` 헤더 누락/형식 오류. UUID v4 를 실어 보내세요. - `403` — 토큰에 `webhooks:write` 스코프가 없음. 키 발급 설정을 넓혀야 합니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. ### 서명 검증 (필수) 발송 요청마다 헤더 `X-CMarket-Signature` 가 실립니다. ``` X-CMarket-Signature: t=<unix초>,v1=<hex> ``` `v1` 은 `HMAC-SHA256(secret, \"${t}.${요청 본문 원문}\")` 소문자 hex 입니다. 1. 헤더를 `t` 와 `v1` 로 나눕니다. 2. `\"${t}.${본문}\"` 만듭니다. **본문은 파싱 원문 바이트**여야 합니다 JSON 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. 등록 시 받은 시크릿으로 HMAC-SHA256 을 계산해 `v1` 과 비교합니다. 비교는 **상수 시간** 비교 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `t` 가 현재 시각으로부터 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). ### 중복 제거 `X-CMarket-Event-Id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. ### 응답과 재시도 2xx 를 돌려주면 성공입니다. 그 외(또는 무응답)는 실패로 보고 최대 7회 재시도합니다 — 간격은 10초 → 1분 → 5분 → 30분 → 2시간 6시간 24시간 입니다. 처리 시간이 길면 먼저 2xx 를 돌려주고 비동기로 처리하세요. 연속 실패가 20회에 닿으면 구독이 자동으로 `DISABLED` 로 내려가고 발송이 멈춥니다. 수신측을 고친 뒤 `PATCH /v2/webhook-endpoints/{endpointId}` 에 `{\"status\":\"ACTIVE\"}` 로 되살리세요. ### 구독 가능한 이벤트 `bid.closed` · `bid.awarded` · `bid.failed` · `bid.canceled` · `bid.award_reverted` `ping` 은 연결 확인 전용이라 구독할 수 없습니다 — 테스트 발송 경로에서만 나갑니다. ### 놓친 이벤트 확인 `GET /v2/webhook-deliveries` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
520
+ * @summary 웹훅 구독 등록
521
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
522
+ * @param {CreateWebhookEndpointRequestDto} createWebhookEndpointRequestDto
523
+ * @param {*} [options] Override http request option.
524
+ * @throws {RequiredError}
525
+ */
526
+ createWebhookEndpoint(idempotencyKey: string, createWebhookEndpointRequestDto: CreateWebhookEndpointRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CreateWebhookEndpoint201Response>>;
527
+ /**
528
+ * 구독을 삭제합니다. 이후 그 주소로는 아무 이벤트도 발송되지 않습니다. **호출 시점:** 연동을 종료할 때. 잠시만 멈추려면 삭제하지 말고 `PATCH … {\"status\":\"DISABLED\"}` 를 쓰세요 — 시크릿과 이벤트 구성이 남아 그대로 되살릴 수 있습니다. **되돌릴 수 없습니다.** 다시 등록하면 새 구독이고 서명 시크릿도 새 값입니다. **`If-Match` 가 필수입니다.** `GET` 으로 받은 `ETag` 를 실어 보내세요. - `428` — 헤더 누락. 조회 후 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다(누군가 수정했거나 발송기가 상태를 내렸습니다). 다시 조회해 정말 지울 대상이 맞는지 확인하고 최신 `ETag` 로 재시도하세요. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
529
+ * @summary 웹훅 구독 삭제
530
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
531
+ * @param {string} ifMatch
532
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
533
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
534
+ * @param {*} [options] Override http request option.
535
+ * @throws {RequiredError}
536
+ */
537
+ deleteWebhookEndpoint(endpointId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>>;
538
+ /**
539
+ * 무인증 — `fileKey` 자체가 capability 다(V5 `/download/{fileKey}` 와 같은 보안 모델). 파트너 응답의 `fileUrl`/`fullUrl` 이 이 URL 을 가리킨다. 요청 시점에 서명하므로 URL 을 저장해 두어도 만료되지 않는다. 응답은 실제 저장소 URL 로의 302 리다이렉트이며 리다이렉트 타깃은 1시간 뒤 만료되므로 302 자체를 캐시하지 말 것(`Cache-Control: no-store`). --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — `GET /v2/files/{fileKey}` 가 파일 메타와 `downloadUrl` 을 v2 응답 규약으로 돌려줍니다. 이 안정 URL 은 파트너 응답의 `fileUrl`/`fullUrl` 이 가리키는 주소라 계속 유지되며 중단 일정은 없습니다.
348
540
  * @summary 파일 다운로드 — 안정 URL(302)
349
541
  * @param {string} fileKey 파일 키 — UUIDv4 hex 32자. 업로드(&#x60;POST /v1|/v2/files&#x60;) 응답에서 받은 값.
350
542
  * @param {*} [options] Override http request option.
@@ -358,7 +550,15 @@ export declare const PartnerV2ApiFp: (configuration?: Configuration) => {
358
550
  * @param {*} [options] Override http request option.
359
551
  * @throws {RequiredError}
360
552
  */
361
- getBid(bidId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<BidDetailResponseDto>>;
553
+ getBid(bidId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetBid200Response>>;
554
+ /**
555
+ * 공고의 납품·검수·계약완료 진행 상태를 조회합니다. 검수완료 전송의 읽기 카운터파트입니다. **세 축은 서로 다른 사건입니다.** - `delivered`: 낙찰 공급사가 납품(결과확인)을 보고했습니다. - `confirmed`/`confirmedAt`: 발주기관이 검수를 확인했습니다. - `contractCompletedAt`: 검수완료 전송이 원장에 반영된 시각입니다. 검수완료 전송(`POST /v2/bids/{bidId}/acceptance`)이 성사되었는지는 `contractCompletedAt` 이 채워졌는지로 확인하세요. **필수 스코프:** `contracts:read`
556
+ * @summary 검수 현황 조회
557
+ * @param {string} bidId 공고 ID(&#x3D; backend bidId &#x3D; 등록 응답의 bidNo).
558
+ * @param {*} [options] Override http request option.
559
+ * @throws {RequiredError}
560
+ */
561
+ getBidAcceptance(bidId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetBidAcceptance200Response>>;
362
562
  /**
363
563
  * 공고의 응찰 참여 업체·순위·낙찰 여부를 조회한다. scope bids:read.
364
564
  * @summary 입찰 결과 조회
@@ -366,24 +566,32 @@ export declare const PartnerV2ApiFp: (configuration?: Configuration) => {
366
566
  * @param {*} [options] Override http request option.
367
567
  * @throws {RequiredError}
368
568
  */
369
- getBidResults(bidId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<BidResultsResponseDto>>;
569
+ getBidResults(bidId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetBidResults200Response>>;
370
570
  /**
371
- * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회한다. scope bids:read. 가시성 마스킹과 직교한 정산 데이터 — read-only.
571
+ * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 가시성 마스킹과는 직교한 정산 데이터이며 읽기 전용입니다. **필수 스코프:** `invoices:read` 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
372
572
  * @summary 입찰결과 정산정보 조회
373
573
  * @param {string} bidId
374
574
  * @param {*} [options] Override http request option.
375
575
  * @throws {RequiredError}
376
576
  */
377
- getBidSettlement(bidId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<BidSettlementResponseDto>>;
577
+ getBidSettlement(bidId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetBidSettlement200Response>>;
378
578
  /**
379
- * 낙찰 계약의 거래명세서(문서·품목 라인)를 조회한다. scope contracts:read.
579
+ * 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
380
580
  * @summary 거래명세서 조회
381
581
  * @param {string} bidId
382
582
  * @param {number} [paperCode]
383
583
  * @param {*} [options] Override http request option.
384
584
  * @throws {RequiredError}
385
585
  */
386
- getBidStatement(bidId: string, paperCode?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<BidStatementResponseDto>>;
586
+ getBidStatement(bidId: string, paperCode?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetBidStatement200Response>>;
587
+ /**
588
+ * 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **구 경로:** 버전 없는 `GET /files/{fileKey}` 는 만료 없는 안정 주소이고 파트너 응답의 `fileUrl`/`fullUrl` 이 그 값을 가리킵니다. 인증도 스코프도 없는 옛 표면이라 신규 연동은 이 엔드포인트를 쓰세요. 구 경로는 당분간 유지됩니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** 하이픈 없는 16진수 32자가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. **필수 스코프:** `files:read`
589
+ * @summary 파일 조회(메타 + 내려받기 주소)
590
+ * @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(하이픈 없는 16진수 32자).
591
+ * @param {*} [options] Override http request option.
592
+ * @throws {RequiredError}
593
+ */
594
+ getFileMeta(fileKey: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetFileMeta200Response>>;
387
595
  /**
388
596
  * 등록한 계약의 계산서 발행 상태를 확인합니다. **언제 쓰나:** 씨마켓이 보내는 발행완료 통지를 놓쳤을 때의 **복구 경로**입니다. 평상시에는 통지를 받아 처리하고, 상태가 어긋난 것 같을 때 이 API 로 되읽으세요. **필수 스코프:** `contracts:read`
389
597
  * @summary 계산서 발행 상태 조회
@@ -393,30 +601,60 @@ export declare const PartnerV2ApiFp: (configuration?: Configuration) => {
393
601
  */
394
602
  getSemoContractTaxinvoiceStatus(externalContractId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SemoContractTaxinvoiceStatusResponseDto>>;
395
603
  /**
396
- * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write`
604
+ * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
397
605
  * @summary 공급사 카드결제 가능 여부
398
606
  * @param {string} memberId 계약업체 회원 ID
399
607
  * @param {*} [options] Override http request option.
400
608
  * @throws {RequiredError}
401
609
  */
402
610
  getSupplierCardPayable(memberId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SupplierCardPayableResponseDto>>;
611
+ /**
612
+ * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
613
+ * @summary 공급사 카드결제 가능 여부
614
+ * @param {string} memberId 계약업체 회원 ID
615
+ * @param {*} [options] Override http request option.
616
+ * @throws {RequiredError}
617
+ */
618
+ getSupplierCardPayableV2(memberId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetSupplierCardPayableV2200Response>>;
619
+ /**
620
+ * 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
621
+ * @summary 웹훅 구독 단건 조회
622
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
623
+ * @param {*} [options] Override http request option.
624
+ * @throws {RequiredError}
625
+ */
626
+ getWebhookEndpoint(endpointId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetWebhookEndpoint200Response>>;
403
627
  /**
404
628
  * ERP 연동 직전 회선·인증 endpoint 동작 확인용.
405
629
  * @summary Partner API 헬스체크
406
630
  * @param {*} [options] Override http request option.
407
631
  * @throws {RequiredError}
408
632
  */
409
- healthControllerCheck(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<HealthResponseDto>>;
633
+ healthControllerCheck(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<HealthControllerCheck200Response>>;
410
634
  /**
411
- * 낙찰 공급사가 확정된 공고에 대해 세금계산서를 발행합니다. **호출 시점:** 낙찰자 선정(계약진행) 이후. 과세/면세를 자동 분리해 발행합니다. **부수효과:** - 세금계산서가 국세청에 발행되고 공고가 발행 완료로 마킹됩니다. - 이미 발행됐거나 분할 청구가 진행 중이면 409 거절됩니다. **소유권:** 발행 대상 공고가 API 키에 바인딩된 발주처 소유가 아니면 403. **분할 청구:** 세금계산서 **분할 발급**은 `/v2` 제공되지 않습니다 `/v1` 전용(`POST /v1/invoices/split-requests`)입니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 + 동일 body 재전송 24시간 캐시 응답 반환.
412
- * @summary 세금계산서 발행
635
+ * 공고의 계약서류 목록과 내려받기 주소를 조회합니다. **목록에 실리는 것:** 공고 전체에 공통인 서류(약관·자동생성 공통본) 낙찰자에게 귀속된 서류를 함께 싣습니다. 낙찰자 귀속 서류는 `winnerSequence` 낙찰자의 응찰 순번이 들어갑니다. **아직 없는 서류도 실립니다.** 공고가 제출을 요구했지만 아직 올라오지 않은 서류는 `fileKey: null` 나타나므로, 제출 여부는 값으로 판정하세요. **자동생성 서류:** `autoGenerated: true` 서류는 c-market 만들어 줍니다. 만드는 중이면 `generationState` `QUEUED`/`PROCESSING` 이고 `downloadUrl` 아직 없습니다. `DEAD_LETTER` 는 생성이 실패해 멈춘 상태이며, 같은 경로의 POST(재생성)로 다시 큐에 올립니다. **내려받기:** `downloadUrl` 유효기간 1시간의 서명 주소입니다. 저장해 두고 재사용하지 마시고 필요할 엔드포인트를 다시 호출하세요. 기간에 얽매이지 않으려면 `fileKey` 를 보관하시고 파일 내려받기 경로를 사용하세요. **보이는 범위:** 서버가 공고 낙찰방법과 진행 단계로 결정합니다. 응답을 그대로 사용하시고 클라이언트에서 다시 거르지 마세요. **필수 스코프:** `contracts:read`
636
+ * @summary 계약서류 목록 조회
637
+ * @param {string} bidId 공고번호(buy_idx, 예 CM…) 또는 외부 구매번호(bid_puchase_no).
638
+ * @param {*} [options] Override http request option.
639
+ * @throws {RequiredError}
640
+ */
641
+ listBidContractDocuments(bidId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListBidContractDocuments200Response>>;
642
+ /**
643
+ * 공고에 응찰한 업체 목록을 조회합니다. 스코프 `bids:read` 필수. **보이는 범위는 공고의 낙찰방법과 진행 단계가 결정합니다.** 개찰 전에는 업체명이 가려지고 (`companyName: null`), 순위는 산정 전까지 `null` 입니다. 이 판정은 서버가 소유하므로 응답을 그대로 사용하시고 클라이언트에서 다시 계산하지 마세요. 같은 목록이 `GET /v2/bids/{bidId}` 응답의 `participants` 에도 실립니다 — 응찰 현황만 필요하면 이 엔드포인트가 가볍습니다.
644
+ * @summary 응찰 현황 조회
413
645
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
414
- * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
415
- * @param {IssueTaxInvoiceRequestDto} issueTaxInvoiceRequestDto
416
646
  * @param {*} [options] Override http request option.
417
647
  * @throws {RequiredError}
418
648
  */
419
- issueTaxInvoice(bidId: string, idempotencyKey: string, issueTaxInvoiceRequestDto: IssueTaxInvoiceRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<TaxInvoiceIssuedResponseDto>>;
649
+ listBidParticipants(bidId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListBidParticipants200Response>>;
650
+ /**
651
+ * 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에는 `ETag` 가 실리므로, 다음 요청에 `If-None-Match` 로 되보내면 결과가 그대로일 때 `304` 를 본문 없이 받습니다 — 마감을 기다리는 동안의 전송량이 사라집니다. **식별자 전달:** `?bidIds=A,B,C`(쉼표) 또는 `?bidIds=A&bidIds=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다 — 요청한 건수와 받은 건수가 다를 수 있으니 `bidId` 로 대조하세요. **목록이 길어 URL 이 부담되면** `POST /v2/bid-results/query` 를 쓰세요. 응답은 같습니다.
652
+ * @summary 입찰 결과 배치 조회
653
+ * @param {string} bidIds 조회할 공고 식별자 목록. 쉼표로 구분하거나 &#x60;bidIds&#x60; 를 반복해 전달합니다. 최대 100건.
654
+ * @param {*} [options] Override http request option.
655
+ * @throws {RequiredError}
656
+ */
657
+ listBidResults(bidIds: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListBidResults200Response>>;
420
658
  /**
421
659
  * 발주처(API 키 바인딩)의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(쿼리에 buyerId 를 넣지 않습니다). **페이지네이션(cursor):** `limit`(1~100, 기본 100) + `cursor`(불투명 토큰). 응답의 `nextCursor` 를 다음 요청 `cursor` 로 전달하면 다음 페이지를 받습니다. `nextCursor=null` 이면 마지막 페이지입니다. **상태·낙찰방법:** 공개값(의미 문자열)으로 반환됩니다. 낙찰 여부는 상태가 아니라 낙찰 결과 조회의 `participants[].isWinner` 로 관측합니다(AWARDED 상태는 없습니다).
422
660
  * @summary 공고 목록 조회
@@ -428,9 +666,9 @@ export declare const PartnerV2ApiFp: (configuration?: Configuration) => {
428
666
  * @param {*} [options] Override http request option.
429
667
  * @throws {RequiredError}
430
668
  */
431
- listBids(limit?: number, cursor?: string, bidIds?: Array<string>, status?: Array<BidPublicStatus>, include?: Array<ListBidsIncludeEnum>, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListBidsResponseDto>>;
669
+ listBids(limit?: number, cursor?: string, bidIds?: Array<string>, status?: Array<BidPublicStatus>, include?: Array<ListBidsIncludeEnum>, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListBids200Response>>;
432
670
  /**
433
- * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read`
671
+ * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidId}/contract-documents` 가 v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
434
672
  * @summary 거래에 필요한 계약서류 목록 조회
435
673
  * @param {string} buyerId 발주기관 회원 ID(c-market memberId).
436
674
  * @param {ListExternalContractDocumentsBidTypeEnum} bidType 거래유형.
@@ -438,6 +676,31 @@ export declare const PartnerV2ApiFp: (configuration?: Configuration) => {
438
676
  * @throws {RequiredError}
439
677
  */
440
678
  listExternalContractDocuments(buyerId: string, bidType: ListExternalContractDocumentsBidTypeEnum, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ExternalContractDocumentsResponseDto>>;
679
+ /**
680
+ * 기관에 공유된 물품 중 **아직 전송되지 않은 것**을 조회합니다. **증분 피드입니다.** 가져간 물품을 `POST /v2/products/receipts` 로 수신확인하면 다음 조회 결과에서 빠집니다. 수신확인을 하지 않으면 같은 물품이 계속 내려옵니다. **권장 흐름:** 조회 → 자기 시스템에 저장 → 저장에 성공한 물품 코드만 수신확인. 저장 전에 수신확인하면 그 물품은 다시 받을 수 없습니다. **조회 범위:** 요청 키가 대행하는 기관 그룹입니다. 기관 그룹이 설정되지 않은 키는 403 입니다. **필수 스코프:** `products:read`
681
+ * @summary 물품 카탈로그 조회
682
+ * @param {*} [options] Override http request option.
683
+ * @throws {RequiredError}
684
+ */
685
+ listProducts(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListProducts200Response>>;
686
+ /**
687
+ * 이 API 키의 웹훅 발송 시도를 최신순으로 조회합니다. 보낸 본문·수신측 응답 상태· 다음 재시도 예정 시각이 함께 실립니다. **호출 시점:** - 수신측 장애로 놓친 이벤트를 메울 때. 이 엔드포인트가 웹훅의 **폴링 대체 경로**입니다 — `status=EXHAUSTED` 로 걸러 다시 처리하면 됩니다. - \"이벤트가 안 온다\" 를 진단할 때. 발송 시도 자체가 없는지(구독·이벤트 타입 문제), 시도했지만 실패했는지(`responseStatus`·`responseBodyExcerpt`)를 여기서 가릅니다. **같은 이벤트가 여러 행으로 보입니다.** 재시도마다 한 행이며 `eventId` 가 같고 `attempt` 만 올라갑니다. 처리 여부는 `eventId` 기준으로 판단하세요. **페이지네이션:** `nextCursor` 를 다음 요청의 `cursor` 로 전달합니다. null 이면 마지막 페이지입니다. **`400`:** `status` 가 허용 값 밖이거나 `limit` 이 범위를 벗어났습니다 — 값을 고쳐 재시도하세요. **필수 스코프:** `webhooks:read`
688
+ * @summary 웹훅 전송 이력 조회
689
+ * @param {string} [endpointId] 이 구독의 전송만 조회합니다. 미지정이면 이 키의 모든 구독을 함께 조회합니다.
690
+ * @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
691
+ * @param {number} [limit] 페이지 크기(1~200, 기본 50).
692
+ * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달합니다. 미지정 시 첫 페이지.
693
+ * @param {*} [options] Override http request option.
694
+ * @throws {RequiredError}
695
+ */
696
+ listWebhookDeliveries(endpointId?: string, status?: PartnerWebhookDeliveryStatus, limit?: number, cursor?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListWebhookDeliveries200Response>>;
697
+ /**
698
+ * 이 API 키가 등록한 웹훅 구독을 모두 조회합니다. **호출 시점:** 연동 상태를 점검할 때, 또는 발송이 멈춘 이유(`status`·`consecutiveFailures`)를 확인할 때. 서명 시크릿은 여기에 실리지 않습니다. **필수 스코프:** `webhooks:read` ### 서명 검증 (필수) 발송 요청마다 헤더 `X-CMarket-Signature` 가 실립니다. ``` X-CMarket-Signature: t=<unix초>,v1=<hex> ``` `v1` 은 `HMAC-SHA256(secret, \"${t}.${요청 본문 원문}\")` 의 소문자 hex 입니다. 1. 헤더를 `t` 와 `v1` 로 나눕니다. 2. `\"${t}.${본문}\"` 을 만듭니다. **본문은 파싱 전 원문 바이트**여야 합니다 — JSON 을 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. 등록 시 받은 시크릿으로 HMAC-SHA256 을 계산해 `v1` 과 비교합니다. 비교는 **상수 시간** 비교 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `t` 가 현재 시각으로부터 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). ### 중복 제거 `X-CMarket-Event-Id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. ### 응답과 재시도 2xx 를 돌려주면 성공입니다. 그 외(또는 무응답)는 실패로 보고 최대 7회 재시도합니다 — 간격은 10초 → 1분 → 5분 → 30분 → 2시간 → 6시간 → 24시간 입니다. 처리 시간이 길면 먼저 2xx 를 돌려주고 비동기로 처리하세요. 연속 실패가 20회에 닿으면 구독이 자동으로 `DISABLED` 로 내려가고 발송이 멈춥니다. 수신측을 고친 뒤 `PATCH /v2/webhook-endpoints/{endpointId}` 에 `{\"status\":\"ACTIVE\"}` 로 되살리세요. ### 구독 가능한 이벤트 `bid.closed` · `bid.awarded` · `bid.failed` · `bid.canceled` · `bid.award_reverted` `ping` 은 연결 확인 전용이라 구독할 수 없습니다 — 테스트 발송 경로에서만 나갑니다. ### 놓친 이벤트 확인 `GET /v2/webhook-deliveries` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
699
+ * @summary 웹훅 구독 목록 조회
700
+ * @param {*} [options] Override http request option.
701
+ * @throws {RequiredError}
702
+ */
703
+ listWebhookEndpoints(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListWebhookEndpoints200Response>>;
441
704
  /**
442
705
  * 공고를 유찰 상태로 전환합니다. **호출 시점:** 입찰 마감 후 유찰 사유가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 공고 상태가 유찰(FAILED)로 전환됩니다. - 유찰사유 코드와 상세가 기록됩니다. **유찰사유 값 목록(failureReasonCode — 공개값):** | 값 | 의미 | |------|------| | `ABOVE_TARGET_PRICE` | 예정가격 초과 | | `DEPT_MISMATCH` | 자격 미달 | | `NEEDS_EXPERTISE` | 전문성 필요 | | `OTHER` | 기타 (`failureReasonDetail` 필수) | | `NO_PARTICIPANT` | 참가자 없음 | | `SINGLE_PARTICIPANT` | 단독 참가 | | `LESS_THAN_TWO` | 2인 미만 | | `BELOW_MINIMUM` | 최저가 미달 | **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body 에 buyerId 를 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수.
443
706
  * @summary 유찰 처리
@@ -447,7 +710,7 @@ export declare const PartnerV2ApiFp: (configuration?: Configuration) => {
447
710
  * @param {*} [options] Override http request option.
448
711
  * @throws {RequiredError}
449
712
  */
450
- markBidFailed(bidId: string, idempotencyKey: string, markBidFailedRequestDto: MarkBidFailedRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<BidFailedV2ResponseDto>>;
713
+ markBidFailed(bidId: string, idempotencyKey: string, markBidFailedRequestDto: MarkBidFailedRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<MarkBidFailed201Response>>;
451
714
  /**
452
715
  * 초안(DRAFT) 상태로 등록된 공고를 진행중(ONGOING)으로 게시합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. **호출 시점:** 연간/지명계약 등으로 초안 상태로 등록된 공고를 명시적으로 게시할 때. 등록 응답의 `status` 로 게시 필요 여부를 판별합니다. **전제조건:** 초안(DRAFT) 상태이고 마감(bidEndAt)이 미래여야 합니다. **거부:** 초안이 아니거나 마감이 지난 공고 → 409. 마감이 지났으면 먼저 마감일을 연장해야 합니다. **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403). **멱등성:** `Idempotency-Key` 헤더 필수.
453
716
  * @summary 공고 게시(초안 → 진행중)
@@ -456,7 +719,15 @@ export declare const PartnerV2ApiFp: (configuration?: Configuration) => {
456
719
  * @param {*} [options] Override http request option.
457
720
  * @throws {RequiredError}
458
721
  */
459
- publishBid(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<BidPublishedResponseDto>>;
722
+ publishBid(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PublishBid200Response>>;
723
+ /**
724
+ * `GET /v2/bid-results` 와 **완전히 같은 조회**이며, 식별자 목록을 본문으로 받습니다. 스코프 `bids:read`. 공고 식별자 100건이면 URL 이 1KB를 넘습니다 — 중간 프록시가 긴 URL 을 자르는 환경을 위한 대체 경로입니다. **부수효과가 없으므로 `Idempotency-Key` 는 필요하지 않습니다.** POST 인 것은 전송 형태의 문제일 뿐이며, 가능하면 캐시·`ETag` 가 동작하는 `GET` 쪽을 쓰세요.
725
+ * @summary 입찰 결과 배치 조회 (본문 전달)
726
+ * @param {BidResultsBatchRequestDto} bidResultsBatchRequestDto
727
+ * @param {*} [options] Override http request option.
728
+ * @throws {RequiredError}
729
+ */
730
+ queryBidResults(bidResultsBatchRequestDto: BidResultsBatchRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListBidResults200Response>>;
460
731
  /**
461
732
  * 공고의 자동생성 계약서류(발주서·공고결과·표준계약서 등)를 생성/재생성합니다. **V6 대응:** `RegenerateAllContractPdfsCommand` — 웹 어드민의 \"계약 서류 일괄 재생성\"과 동일 경로. **호출 시점:** 낙찰(계약 시작) 후 계약서류가 필요하거나, 생성에 실패한 서류를 다시 만들 때. **부수효과:** - 생성 실패(DEAD_LETTER) 상태의 자동생성 PDF 가 재생성 큐에 등록됩니다(비동기). - 승낙사항(ACCEPTANCE) 계열은 운영자 승인 워크플로가 필요해 이 경로에서 제외됩니다. **응답:** 즉시 파일이 아니라 큐 등록 결과(`enqueuedCount`/`skippedCount`)를 반환합니다. 잠시 후 자동 생성됩니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
462
733
  * @summary 계약서류 생성(재생성)
@@ -465,7 +736,7 @@ export declare const PartnerV2ApiFp: (configuration?: Configuration) => {
465
736
  * @param {*} [options] Override http request option.
466
737
  * @throws {RequiredError}
467
738
  */
468
- regenerateContractDocuments(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ContractDocumentsRegeneratedResponseDto>>;
739
+ regenerateContractDocuments(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<RegenerateContractDocuments201Response>>;
469
740
  /**
470
741
  * 낙찰 결과를 등록합니다. 이 요청의 응답은 처리 상태 `AWARDED` 를 반환합니다. **호출 시점:** 입찰 마감 후 낙찰자가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 낙찰자(공급사)의 응찰 건이 낙찰 처리됩니다. - 이후 **공고의 조회 상태(status)는 계약진행(CONTRACT_IN_PROGRESS)** 으로 진행합니다. `AWARDED` 라는 공고 status 는 존재하지 않으므로, 낙찰 여부는 `GET /v2/bids/{bidId}/results` 의 `participants[].isWinner` 또는 `GET /v2/bids/{bidId}` 의 status(=계약진행)로 관측하세요(`status === \'AWARDED\'` 폴링 금지). - 협상 방식(NEGOTIATION/NEGOTIATION_AUTO) 공고는 이 엔드포인트 전에 `POST /v2/bids/{bidId}/negotiation-scores`(협상 점수평가)로 평가를 완료해야 합니다. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body 에 buyerId 를 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 키 + 동일 body 재전송 시 24시간 내 캐시 응답 반환.
471
742
  * @summary 낙찰 결과 전송
@@ -475,15 +746,16 @@ export declare const PartnerV2ApiFp: (configuration?: Configuration) => {
475
746
  * @param {*} [options] Override http request option.
476
747
  * @throws {RequiredError}
477
748
  */
478
- registerAward(bidId: string, idempotencyKey: string, registerAwardRequestDto: RegisterAwardRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AwardRegisteredV2ResponseDto>>;
749
+ registerAward(bidId: string, idempotencyKey: string, registerAwardRequestDto: RegisterAwardRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<RegisterAward201Response>>;
479
750
  /**
480
751
  * 입찰 정보 등록. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수.
481
752
  * @summary 입찰 정보 전송(등록)
753
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
482
754
  * @param {CreateBidRequestDto} createBidRequestDto
483
755
  * @param {*} [options] Override http request option.
484
756
  * @throws {RequiredError}
485
757
  */
486
- registerBid(createBidRequestDto: CreateBidRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<BidRegisteredResponseDto>>;
758
+ registerBid(idempotencyKey: string, createBidRequestDto: CreateBidRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<RegisterBid201Response>>;
487
759
  /**
488
760
  * 외부에서 맺어진 계약 1건을 씨마켓의 **세금계산서 발행 대상**으로 등록합니다. **등록 후 동선:** 발주기관이 씨마켓 [나의 계약 관리] 에서 계산서 발급을 요청하고, 공급기업이 같은 화면에서 발행합니다. 계산서의 **공급자는 공급기업, 공급받는자는 발주기관**입니다. **대금 흐름:** 씨마켓은 이 거래의 대금을 받지 않습니다 — 발행 경로만 제공합니다. **금액:** `supplyPrice` 는 **부가세를 뺀 과세 공급가액**입니다(결제창 API 가 부가세 포함가를 받는 것과 다릅니다). 과세·면세 공급가액이 모두 0 이면 400 입니다. **사전 조건:** 두 회원 ID 가 씨마켓에 실재해야 합니다. 회원 ID 가 곧 소유권이라, 없는 회원으로 등록하면 아무도 열 수 없는 계산서 대상이 됩니다. **필수 스코프:** `contracts:write`. 바인딩된 발주처 외의 발주기관을 대신하려면 대행 범위에 그 회원이 있어야 합니다. **멱등성:** `externalContractId` 가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 대상을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
489
761
  * @summary 계약 발행대상 등록
@@ -494,25 +766,57 @@ export declare const PartnerV2ApiFp: (configuration?: Configuration) => {
494
766
  */
495
767
  registerSemoContract(idempotencyKey: string, registerSemoContractRequestDto: RegisterSemoContractRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SemoContractRegisteredResponseDto>>;
496
768
  /**
497
- * 협상방식(NEGOTIATION/NEGOTIATION_AUTO) 공고의 응찰자별 점수를 입력합니다. **호출 시점:** 입찰 마감 낙찰(`POST /v2/bids/{bidId}/award`) 전. 협상방식 공고는 평가를 완료해야 낙찰에 진입할 수 있습니다. **부수효과:** - 응찰자별 기술점수(및 선택적 가격점수 override)가 기록됩니다. - `complete=true` 평가완료 게이트까지 적용돼 낙찰 진입이 가능해집니다. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body buyerId 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 + 동일 body 재전송 24시간 캐시 응답 반환.
498
- * @summary 협상 점수평가
769
+ * 확정된 낙찰을 되돌려 공고를 낙찰대기(PENDING_AWARD) 상태로 보냅니다. 스코프 `awards:write` + `Idempotency-Key` 헤더 필수. **호출 시점:** 낙찰자가 계약을 포기했거나 낙찰 처리 자체가 잘못됐을 때. 되돌린 같은 공고에 다시 낙찰을 등록할 수 있습니다. **되돌릴 없는 경우 409:** - 수수료 결제가 이미 완료된 공고 - 세금계산서가 이미 발행된 공고 - 수입권공매 계열 낙찰방법(다수 낙찰자 구조라 되돌리기 단위가 다릅니다) **사유는 필수입니다** 감사 대상 행위이며 공고 이력에 남습니다. **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
770
+ * @summary 낙찰 되돌리기
499
771
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
772
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
773
+ * @param {RevertAwardRequestDto} revertAwardRequestDto
774
+ * @param {*} [options] Override http request option.
775
+ * @throws {RequiredError}
776
+ */
777
+ revertAward(bidId: string, idempotencyKey: string, revertAwardRequestDto: RevertAwardRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<RevertAward200Response>>;
778
+ /**
779
+ * 서명 시크릿을 새로 발급합니다. 응답의 `secretVersion` 이 1 올라갑니다. **호출 시점:** 시크릿을 분실했거나 유출이 의심될 때, 또는 주기적 교체 정책이 있을 때. **새 시크릿은 이 응답에서 한 번만 나갑니다.** 조회로 다시 받을 수 없습니다. **옛 시크릿은 즉시 무효입니다.** 유예 기간이 없으므로, 수신측이 새 값을 반영하기 전에 도착한 이벤트는 서명 검증에 실패합니다. 배포 순서를 이렇게 잡으세요 — ① 수신측이 옛 값과 새 값을 **둘 다** 받아들이도록 배포 → ② 이 엔드포인트 호출 → ③ 응답의 새 값을 반영 → ④ 옛 값 제거. 검증 실패로 non-2xx 를 돌려주면 실패로 집계되어 20회 연속 시 구독이 중지됩니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 같은 키로 재전송하면 **새로 발급하지 않고** 처음 발급한 값을 그대로 돌려줍니다(24시간) — 네트워크 오류로 응답을 놓쳤을 때 같은 키로 다시 부르세요.
780
+ * @summary 웹훅 서명 시크릿 재발급
781
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
500
782
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
501
- * @param {SubmitNegotiationScoresRequestDto} submitNegotiationScoresRequestDto
502
783
  * @param {*} [options] Override http request option.
503
784
  * @throws {RequiredError}
504
785
  */
505
- submitNegotiationScores(bidId: string, idempotencyKey: string, submitNegotiationScoresRequestDto: SubmitNegotiationScoresRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<NegotiationScoredV2ResponseDto>>;
786
+ rotateWebhookSecret(endpointId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CreateWebhookEndpoint201Response>>;
787
+ /**
788
+ * 등록된 주소로 `ping` 이벤트를 즉시 1회 보내고 그 결과를 돌려줍니다. **호출 시점:** 구독을 등록한 직후, 수신 주소를 바꾼 직후, 방화벽·인증서를 손본 뒤. **응답은 발송 결과이지 요청 실패가 아닙니다.** 수신측이 받지 못해도 HTTP `200` 에 `delivered: false` 로 옵니다 — `responseStatus`(수신측 상태)와 `error`(연결 거부·타임아웃· TLS 오류)를 보고 원인을 좁히세요. 이 발송에도 실제 이벤트와 **똑같은 서명 헤더**가 실리므로 검증 코드를 그대로 시험할 수 있습니다. `ping` 은 구독 목록에 넣을 수 없는 타입이니, 수신측이 모르는 `eventType` 을 만나면 버리도록 짜여 있다면 이 확인만 실패할 수 있습니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 다시 보내려면 **새 키**를 쓰세요 — 같은 키는 24시간 동안 직전 결과를 그대로 돌려줍니다(재발송하지 않습니다).
789
+ * @summary 웹훅 연결 확인 발송
790
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
791
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
792
+ * @param {*} [options] Override http request option.
793
+ * @throws {RequiredError}
794
+ */
795
+ sendWebhookTestEvent(endpointId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SendWebhookTestEvent200Response>>;
506
796
  /**
507
797
  * 등록된 공고의 내용을 수정합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. 진행중/초안 상태의 공고만 수정할 수 있습니다. **부수효과:** - 변경 내용이 반영되고 수정이력이 기록됩니다. - `hideEdit=true` 면 변경이력을 비공개 처리하고 노출 카운터 증가를 생략합니다. **수정 제약:** - 낙찰방법(awardMethod)은 수정 불가(잠금). - 참여자가 있으면 입찰방식/면허/예산/품목 일부가 잠깁니다. - 마감/취소된 공고는 수정할 수 없습니다. 한 섹션을 수정하려면 해당 섹션의 필수 필드를 함께 보내야 합니다(부분 섹션은 거부됨).
508
798
  * @summary 입찰 공고 수정
509
799
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
800
+ * @param {string} ifMatch
801
+ * @param {string} ifMatch2 수정하려는 공고의 ETag(필수). 직전 &#x60;GET /v2/bids/{bidId}&#x60; 응답의 &#x60;ETag&#x60; 헤더 값을 그대로 실어 보내세요. 누락하면 428, 그 사이 공고가 바뀌었으면 412 로 거절되며 아무것도 수정되지 않습니다.
510
802
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
511
803
  * @param {UpdateBidRequestDto} updateBidRequestDto
512
804
  * @param {*} [options] Override http request option.
513
805
  * @throws {RequiredError}
514
806
  */
515
- updateBid(bidId: string, idempotencyKey: string, updateBidRequestDto: UpdateBidRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<BidUpdatedResponseDto>>;
807
+ updateBid(bidId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, updateBidRequestDto: UpdateBidRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UpdateBid200Response>>;
808
+ /**
809
+ * 수신 주소·구독 이벤트·상태를 수정합니다. 보낸 필드만 바뀝니다. **호출 시점:** 수신 주소가 바뀌었을 때, 구독 이벤트를 늘리거나 줄일 때, 연속 실패로 자동 중지된 구독을 고친 뒤 되살릴 때(`{\"status\":\"ACTIVE\"}`). **`eventTypes` 는 치환입니다** — 보낸 목록이 곧 새 구독 목록입니다. 하나를 더하려면 기존 목록에 더한 **전체**를 보내세요. **`If-Match` 가 필수입니다.** 먼저 `GET /v2/webhook-endpoints/{endpointId}` 로 현재 `ETag` 를 받아 그대로 실어 보내세요. 이 헤더가 없으면 두 요청이 앞서거니 뒤서거니 하며 먼저 한 수정을 조용히 덮어씁니다. - `428` — 헤더를 빼먹었습니다. 조회 후 `ETag` 를 실어 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다. 다시 조회해 최신 `ETag` 로 재시도하세요. 아무것도 수정되지 않았습니다. **시크릿은 이 경로로 바뀌지 않습니다** — 재발급은 `rotate-secret` 입니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
810
+ * @summary 웹훅 구독 수정
811
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
812
+ * @param {string} ifMatch
813
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
814
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
815
+ * @param {UpdateWebhookEndpointRequestDto} updateWebhookEndpointRequestDto
816
+ * @param {*} [options] Override http request option.
817
+ * @throws {RequiredError}
818
+ */
819
+ updateWebhookEndpoint(endpointId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, updateWebhookEndpointRequestDto: UpdateWebhookEndpointRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetWebhookEndpoint200Response>>;
516
820
  /**
517
821
  * 스코프 `files:write` + `Idempotency-Key` 헤더 필수. base64 또는 url 중 정확히 하나를 제출한다.
518
822
  * @summary 입찰 첨부파일 업로드(base64 또는 url) → fileKey
@@ -520,20 +824,31 @@ export declare const PartnerV2ApiFp: (configuration?: Configuration) => {
520
824
  * @param {*} [options] Override http request option.
521
825
  * @throws {RequiredError}
522
826
  */
523
- uploadFile(uploadFileRequestDto: UploadFileRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<FileUploadedResponseDto>>;
827
+ uploadFile(uploadFileRequestDto: UploadFileRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UploadFile201Response>>;
524
828
  };
525
829
  /**
526
830
  * PartnerV2Api - factory interface
527
831
  */
528
832
  export declare const PartnerV2ApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
529
833
  /**
530
- * 샌드박스 공고를 마감하는 **영업 데모 전용** 엔드포인트입니다. **가짜 상태 주입이 아닙니다.** backend 스케줄러가 부르는 것과 동일한 실제 `CloseBidCommand` dispatch 합니다 개찰이 실제로 수행되고, `status=\'B\'` 커밋 직전 투찰가 동기 복호화가 실제로 일어납니다(복호화 실패 마감이 중단됩니다). 엔드포인트는 데모인 동시에 살아있는 e2e 스모크입니다. **데모 공고 전용:** backend 공고 명의 == 데모 발주처인 공고에 한해서만 마감합니다. 실 발주처 공고는 절대 마감하지 않습니다. **마감 불가:** 이미 마감됐거나 마감 불가 상태면 409(`type: …/upstream-conflict`)를 반환합니다. **필수 스코프:** `bids:write`
531
- * @summary 샌드박스 공고 마감 (영업 데모 전용)
532
- * @param {string} bidId 샌드박스 공고 ID(&#x3D; backend bidId).
834
+ * 저장을 마친 물품을 전송완료로 표시해 다음 조회에서 제외합니다. **되돌릴 없습니다.** 표시한 물품은 `GET /v2/products` 다시 내려오지 않으므로, 자기 시스템에 저장이 끝난 뒤에 호출하세요. **표시 범위는 기관 그룹으로 잠깁니다.** 다른 기관의 물품 코드를 섞어 보내면 건은 표시되지 않고 `acknowledged`요청 수보다 작게 돌아옵니다. **필수 스코프:** `products:write` **멱등성:** `Idempotency-Key` 헤더 필수.
835
+ * @summary 물품 수신확인
836
+ * @param {string} idempotencyKey 멱등성 (1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
837
+ * @param {AcknowledgeProductsRequestDto} acknowledgeProductsRequestDto
533
838
  * @param {*} [options] Override http request option.
534
839
  * @throws {RequiredError}
535
840
  */
536
- closeSandboxBid(bidId: string, options?: RawAxiosRequestConfig): AxiosPromise<CloseSandboxBidResponseDto>;
841
+ acknowledgeProductReceipt(idempotencyKey: string, acknowledgeProductsRequestDto: AcknowledgeProductsRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<AcknowledgeProductReceipt200Response>;
842
+ /**
843
+ * 진행중인 공고를 취소합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. **되돌릴 수 없습니다.** 취소 사유는 필수이며 공고 이력에 남습니다. **전제조건:** 진행중(ONGOING) 상태여야 합니다. **거부:** 진행중이 아니거나 이미 취소된 공고 → 409. 타 발주처 공고 → 403. **마감과의 차이:** 취소는 공고를 무효로 되돌리는 것이고, 유찰(`POST /v2/bids/{bidId}/fail`)은 응찰을 받았으나 낙찰자를 정하지 못한 종료입니다.
844
+ * @summary 공고 취소
845
+ * @param {string} bidId 공고 식별자(등록 응답의 bidId).
846
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
847
+ * @param {CancelBidRequestDto} cancelBidRequestDto
848
+ * @param {*} [options] Override http request option.
849
+ * @throws {RequiredError}
850
+ */
851
+ cancelBid(bidId: string, idempotencyKey: string, cancelBidRequestDto: CancelBidRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<CancelBid200Response>;
537
852
  /**
538
853
  * 낙찰 공고의 검수(납품 검수)가 완료되었음을 기록합니다. **V5 대응:** `acceptanceCompleteSend` — BidApi.xml `acceptanceComplete` 액션의 V6 후속. **호출 시점:** 낙찰자(공급사)가 납품을 완료하고 구매자가 검수를 확인한 시점. 공고 상태가 낙찰(AWARDED) 상태여야 합니다. **부수효과:** - 검수완료 상태가 기록됩니다. - 응답은 204가 아닌 200입니다 — 멱등성 인터셉터가 구체 바디를 캐시하고 SDK 가 타입드 응답을 필요로 하기 때문. **V5-compat 안내:** 거래명세서·검수보고서에 찍힐 구매사 사업자정보·담당자·작성일자 override(11종)는 modern v2 표면에서 제거됐습니다. 필요 시 V5 충실 카운터파트 `POST /v1/bids/{bidId}/acceptance`(`CompleteAcceptanceV1RequestDto`)를 사용하세요. **낙찰자 식별:** `winnerMemberId`(공급사 memberId). 내부 joinSeq 해소는 backend 가 처리합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
539
854
  * @summary 검수완료 전송
@@ -543,7 +858,7 @@ export declare const PartnerV2ApiFactory: (configuration?: Configuration, basePa
543
858
  * @param {*} [options] Override http request option.
544
859
  * @throws {RequiredError}
545
860
  */
546
- completeAcceptance(bidId: string, idempotencyKey: string, completeAcceptanceRequestDto: CompleteAcceptanceRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<AcceptanceResultResponseDto>;
861
+ completeAcceptance(bidId: string, idempotencyKey: string, completeAcceptanceRequestDto: CompleteAcceptanceRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<CompleteAcceptance200Response>;
547
862
  /**
548
863
  * 공급사로부터 계산서를 수령한 뒤, 계약을 완료처리 상태로 강제 전환합니다. **호출 시점:** 낙찰·계약 완료 후 공급사 계산서를 오프라인으로 수령했을 때. **부수효과:** - 결제완료·계산서 발급 상태가 기록되고 발급일자가 현재 시각으로 설정됩니다. **소유권:** 공고는 요청 파트너 키가 소유한 발주처 명의여야 합니다(타 발주처 공고 → 403). **이미 완료:** 이미 완료처리된 공고 재호출 → 409. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
549
864
  * @summary 정산 마감(송장 강제완료)
@@ -552,26 +867,27 @@ export declare const PartnerV2ApiFactory: (configuration?: Configuration, basePa
552
867
  * @param {*} [options] Override http request option.
553
868
  * @throws {RequiredError}
554
869
  */
555
- completeInvoice(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): AxiosPromise<InvoiceCompletedResponseDto>;
870
+ completeInvoice(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): AxiosPromise<CompleteInvoice200Response>;
556
871
  /**
557
- * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인(APPROVED)되어 바로 결제 가능합니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. 거기서 카드를 골라 결제합니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/card-payment-requests/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
872
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인되어 바로 결제할 수 있습니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 도메인 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
558
873
  * @summary 결제창 발행
559
874
  * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
560
875
  * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
561
876
  * @param {*} [options] Override http request option.
562
877
  * @throws {RequiredError}
563
878
  */
564
- createCardPaymentRequest(idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<CardPaymentRequestResponseDto>;
879
+ createCardPayment(idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<CreateCardPayment200Response>;
565
880
  /**
566
- * 스코프 `embed:launch` 필수. 발주기관 담당자(memberId) 일회성 launch code(60초 TTL) 발급한다. code URL 싣지 말고 @cmarket/embed SDK postMessage 핸드셰이크로만 iframe 전달할 것. memberId API 키의 발주처 소속이 아니면 403, 미허용 screen 400.
567
- * @summary 임베드 launch code 발급 (iframe SSO)
568
- * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
881
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인(APPROVED)되어 바로 결제 가능합니다. **사용자 동선:** 응답의 `payUrl` 발주기관을 보내면 결제창 건만 걸러진 화면이 열립니다. 거기서 카드를 골라 결제합니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/card-payment-requests/suppliers/{memberId}/card-payable` 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요. --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
882
+ * @summary 결제창 발행
883
+ * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
884
+ * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
569
885
  * @param {*} [options] Override http request option.
570
886
  * @throws {RequiredError}
571
887
  */
572
- createEmbedLaunch(embedLaunchRequestDto: EmbedLaunchRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<EmbedLaunchResponseDto>;
888
+ createCardPaymentRequest(idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<CardPaymentRequestResponseDto>;
573
889
  /**
574
- * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `paperCodes` 와 같은 순서로 같은 개수가 돌아옵니다.** 각 항목의 `fileUrl` 을 그대로 쓰면 되고, `paperCode` 로 어느 요청에 대한 결과인지 대응시킬 수 있습니다. **`name` 의 출처는 서류에 따라 다릅니다.** 시스템이 렌더한 서류는 계약서류명이고, 공급사 사전등록 3종(11·12·13)은 **공급사가 등록한 원본 파일명**입니다 — 채팅 첨부 라벨로 그대로 쓰세요. **필요한 입력:** 발주기관·공급사는 회원 ID 만 주면 됩니다. 상호·사업자번호·대표자·주소·직인은 c-market 이 회원 정보에서 직접 채웁니다. **전부 성공 또는 전부 실패입니다.** 지원하지 않는 서류가 하나라도 섞이면(400) 아무것도 만들지 않습니다. 렌더가 필요한 서류를 요청하면서 `contract` 를 빠뜨려도 마찬가지입니다(422). **135(수의계약체결제한여부확인서)를 요청하면 추가 입력이 필요합니다.** `contract.subject`(발주내용)·`contract.category`(계약구분)·`contract.buyerDepartment`(발주부서)가 필수이고, `documentInputs.contractRestrictionConfirm.answers`에 서식 ①~⑧에 대한 **계약상대자**의 답변 8개를 순서대로 담아야 합니다(c-market 이 대신 만들어낼 수 없는 값입니다). ⑨(발주자 확인사항)는 `documentInputs.contractRestrictionConfirm.buyerConfirmation`으로 선택 전달하며, 생략하면 서식에 빈칸으로 인쇄됩니다. 문항 ①~⑧의 원문은 `answers` 필드 설명을 참고하세요. **164(퇴직자영입현황확인서)를 요청하면 퇴직자 명단이 필요합니다.** `contract.subject`(서식의 \"수의계약 대상건명\")가 필수이고, `documentInputs.retireeRoster.rows` 에 명단을 넣습니다(성명·직급 필수, 직급·입사일·근무기간·비고 선택, 최대 50행). **퇴직자가 없으면 `rows` 를 빈 배열로 보내세요** — 서식에 \"해당사항 없음\"으로 인쇄됩니다. 블록 자체를 생략하면 422 입니다(\"퇴직자 없음\"과 \"확인하지 않음\"을 구분할 수 없기 때문입니다). **승낙사항(4·184·185·186·189·197·208)을 요청하면 `contract.subject`(계약건명)가 필수입니다.** 서식 상단 \"건명\" 칸에 인쇄되는 값이라 비면 어느 계약의 승낙인지 알 수 없습니다. 그 외 추가 입력은 없습니다 — 갑(발주기관) 서명란은 `buyerId` 로, 을(공급사) 서명란은 `supplierId` 로 c-market 이 채웁니다. 발주기관이 기관 전용 승낙사항 서식을 쓰면 요청한 코드 그대로 응답하되 PDF 는 그 기관 서식으로 발급됩니다. **응답의 `fileUrl` 은 만료되지 않습니다.** 채팅 메시지 등에 그대로 저장해 두어도 됩니다. **생성 가능한 회원 범위:** 조회와 같습니다 — 이 API 키에 설정된 대행 범위 안의 회원만 가능합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
890
+ * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `paperCodes` 와 같은 순서로 같은 개수가 돌아옵니다.** 각 항목의 `fileUrl` 을 그대로 쓰면 되고, `paperCode` 로 어느 요청에 대한 결과인지 대응시킬 수 있습니다. **`name` 의 출처는 서류에 따라 다릅니다.** 시스템이 렌더한 서류는 계약서류명이고, 공급사 사전등록 3종(11·12·13)은 **공급사가 등록한 원본 파일명**입니다 — 채팅 첨부 라벨로 그대로 쓰세요. **필요한 입력:** 발주기관·공급사는 회원 ID 만 주면 됩니다. 상호·사업자번호·대표자·주소·직인은 c-market 이 회원 정보에서 직접 채웁니다. **전부 성공 또는 전부 실패입니다.** 지원하지 않는 서류가 하나라도 섞이면(400) 아무것도 만들지 않습니다. 렌더가 필요한 서류를 요청하면서 `contract` 를 빠뜨려도 마찬가지입니다(422). **135(수의계약체결제한여부확인서)를 요청하면 추가 입력이 필요합니다.** `contract.subject`(발주내용)·`contract.category`(계약구분)·`contract.buyerDepartment`(발주부서)가 필수이고, `documentInputs.contractRestrictionConfirm.answers`에 서식 ①~⑧에 대한 **계약상대자**의 답변 8개를 순서대로 담아야 합니다(c-market 이 대신 만들어낼 수 없는 값입니다). ⑨(발주자 확인사항)는 `documentInputs.contractRestrictionConfirm.buyerConfirmation`으로 선택 전달하며, 생략하면 서식에 빈칸으로 인쇄됩니다. 문항 ①~⑧의 원문은 `answers` 필드 설명을 참고하세요. **164(퇴직자영입현황확인서)를 요청하면 퇴직자 명단이 필요합니다.** `contract.subject`(서식의 \"수의계약 대상건명\")가 필수이고, `documentInputs.retireeRoster.rows` 에 명단을 넣습니다(성명·직급 필수, 직급·입사일·근무기간·비고 선택, 최대 50행). **퇴직자가 없으면 `rows` 를 빈 배열로 보내세요** — 서식에 \"해당사항 없음\"으로 인쇄됩니다. 블록 자체를 생략하면 422 입니다(\"퇴직자 없음\"과 \"확인하지 않음\"을 구분할 수 없기 때문입니다). **승낙사항(4·184·185·186·189·197·208)을 요청하면 `contract.subject`(계약건명)가 필수입니다.** 서식 상단 \"건명\" 칸에 인쇄되는 값이라 비면 어느 계약의 승낙인지 알 수 없습니다. 그 외 추가 입력은 없습니다 — 갑(발주기관) 서명란은 `buyerId` 로, 을(공급사) 서명란은 `supplierId` 로 c-market 이 채웁니다. 발주기관이 기관 전용 승낙사항 서식을 쓰면 요청한 코드 그대로 응답하되 PDF 는 그 기관 서식으로 발급됩니다. **응답의 `fileUrl` 은 만료되지 않습니다.** 채팅 메시지 등에 그대로 저장해 두어도 됩니다. **생성 가능한 회원 범위:** 조회와 같습니다 — 이 API 키에 설정된 대행 범위 안의 회원만 가능합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수. --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidId}/contract-documents` 가 v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
575
891
  * @summary 계약서류 생성
576
892
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
577
893
  * @param {CreateExternalContractDocumentsRequestDto} createExternalContractDocumentsRequestDto
@@ -580,7 +896,27 @@ export declare const PartnerV2ApiFactory: (configuration?: Configuration, basePa
580
896
  */
581
897
  createExternalContractDocuments(idempotencyKey: string, createExternalContractDocumentsRequestDto: CreateExternalContractDocumentsRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<CreateExternalContractDocumentsResponseDto>;
582
898
  /**
583
- * 무인증 — `fileKey` 자체가 capability 다(V5 `/download/{fileKey}` 같은 보안 모델). 파트너 응답의 `fileUrl`/`fullUrl` URL 가리킨다. 요청 시점에 서명하므로 URL저장해 두어도 만료되지 않는다. 응답은 실제 저장소 URL 로의 302 리다이렉트이며 리다이렉트 타깃은 1시간 만료되므로 302 자체를 캐시하지 것(`Cache-Control: no-store`).
899
+ * 수신 주소와 구독할 이벤트를 등록합니다. **호출 시점:** 연동 초기 1회. 수신 주소가 바뀌면 새로 만들지 말고 `PATCH` 로 고치세요 그래야 시크릿과 전송 이력이 유지됩니다. **서명 시크릿은 이 응답에서 한 번만 나갑니다.** 서버는 해시만 보관하므로 조회로 다시 받을 수 없습니다. 응답의 `secret` 즉시 안전한 곳에 보관하세요. 잃어버렸다면 복구가 아니라 `POST /v2/webhook-endpoints/{endpointId}/rotate-secret` 으로 **재발급**해야 합니다. **거절되는 경우와 고치는 법:** - `400` — `url` 이 HTTPS 가 아니거나 형식이 잘못됨, `eventTypes` 가 비었거나 목록 밖 값 (`ping` 은 구독 불가). 값을 고쳐 재시도하세요. - `400` `Idempotency-Key` 헤더 누락/형식 오류. UUID v4 를 실어 보내세요. - `403` — 토큰에 `webhooks:write` 스코프가 없음. 키 발급 설정을 넓혀야 합니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. ### 서명 검증 (필수) 발송 요청마다 헤더 `X-CMarket-Signature` 가 실립니다. ``` X-CMarket-Signature: t=<unix초>,v1=<hex> ``` `v1` 은 `HMAC-SHA256(secret, \"${t}.${요청 본문 원문}\")` 소문자 hex 입니다. 1. 헤더를 `t` 와 `v1` 로 나눕니다. 2. `\"${t}.${본문}\"` 만듭니다. **본문은 파싱 원문 바이트**여야 합니다 JSON 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. 등록 시 받은 시크릿으로 HMAC-SHA256 을 계산해 `v1` 과 비교합니다. 비교는 **상수 시간** 비교 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `t` 가 현재 시각으로부터 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). ### 중복 제거 `X-CMarket-Event-Id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. ### 응답과 재시도 2xx 를 돌려주면 성공입니다. 그 외(또는 무응답)는 실패로 보고 최대 7회 재시도합니다 — 간격은 10초 → 1분 → 5분 → 30분 → 2시간 6시간 24시간 입니다. 처리 시간이 길면 먼저 2xx 를 돌려주고 비동기로 처리하세요. 연속 실패가 20회에 닿으면 구독이 자동으로 `DISABLED` 로 내려가고 발송이 멈춥니다. 수신측을 고친 뒤 `PATCH /v2/webhook-endpoints/{endpointId}` 에 `{\"status\":\"ACTIVE\"}` 로 되살리세요. ### 구독 가능한 이벤트 `bid.closed` · `bid.awarded` · `bid.failed` · `bid.canceled` · `bid.award_reverted` `ping` 은 연결 확인 전용이라 구독할 수 없습니다 — 테스트 발송 경로에서만 나갑니다. ### 놓친 이벤트 확인 `GET /v2/webhook-deliveries` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
900
+ * @summary 웹훅 구독 등록
901
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
902
+ * @param {CreateWebhookEndpointRequestDto} createWebhookEndpointRequestDto
903
+ * @param {*} [options] Override http request option.
904
+ * @throws {RequiredError}
905
+ */
906
+ createWebhookEndpoint(idempotencyKey: string, createWebhookEndpointRequestDto: CreateWebhookEndpointRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<CreateWebhookEndpoint201Response>;
907
+ /**
908
+ * 구독을 삭제합니다. 이후 그 주소로는 아무 이벤트도 발송되지 않습니다. **호출 시점:** 연동을 종료할 때. 잠시만 멈추려면 삭제하지 말고 `PATCH … {\"status\":\"DISABLED\"}` 를 쓰세요 — 시크릿과 이벤트 구성이 남아 그대로 되살릴 수 있습니다. **되돌릴 수 없습니다.** 다시 등록하면 새 구독이고 서명 시크릿도 새 값입니다. **`If-Match` 가 필수입니다.** `GET` 으로 받은 `ETag` 를 실어 보내세요. - `428` — 헤더 누락. 조회 후 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다(누군가 수정했거나 발송기가 상태를 내렸습니다). 다시 조회해 정말 지울 대상이 맞는지 확인하고 최신 `ETag` 로 재시도하세요. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
909
+ * @summary 웹훅 구독 삭제
910
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
911
+ * @param {string} ifMatch
912
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
913
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
914
+ * @param {*} [options] Override http request option.
915
+ * @throws {RequiredError}
916
+ */
917
+ deleteWebhookEndpoint(endpointId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, options?: RawAxiosRequestConfig): AxiosPromise<void>;
918
+ /**
919
+ * 무인증 — `fileKey` 자체가 capability 다(V5 `/download/{fileKey}` 와 같은 보안 모델). 파트너 응답의 `fileUrl`/`fullUrl` 이 이 URL 을 가리킨다. 요청 시점에 서명하므로 URL 을 저장해 두어도 만료되지 않는다. 응답은 실제 저장소 URL 로의 302 리다이렉트이며 리다이렉트 타깃은 1시간 뒤 만료되므로 302 자체를 캐시하지 말 것(`Cache-Control: no-store`). --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — `GET /v2/files/{fileKey}` 가 파일 메타와 `downloadUrl` 을 v2 응답 규약으로 돌려줍니다. 이 안정 URL 은 파트너 응답의 `fileUrl`/`fullUrl` 이 가리키는 주소라 계속 유지되며 중단 일정은 없습니다.
584
920
  * @summary 파일 다운로드 — 안정 URL(302)
585
921
  * @param {string} fileKey 파일 키 — UUIDv4 hex 32자. 업로드(&#x60;POST /v1|/v2/files&#x60;) 응답에서 받은 값.
586
922
  * @param {*} [options] Override http request option.
@@ -594,7 +930,15 @@ export declare const PartnerV2ApiFactory: (configuration?: Configuration, basePa
594
930
  * @param {*} [options] Override http request option.
595
931
  * @throws {RequiredError}
596
932
  */
597
- getBid(bidId: string, options?: RawAxiosRequestConfig): AxiosPromise<BidDetailResponseDto>;
933
+ getBid(bidId: string, options?: RawAxiosRequestConfig): AxiosPromise<GetBid200Response>;
934
+ /**
935
+ * 공고의 납품·검수·계약완료 진행 상태를 조회합니다. 검수완료 전송의 읽기 카운터파트입니다. **세 축은 서로 다른 사건입니다.** - `delivered`: 낙찰 공급사가 납품(결과확인)을 보고했습니다. - `confirmed`/`confirmedAt`: 발주기관이 검수를 확인했습니다. - `contractCompletedAt`: 검수완료 전송이 원장에 반영된 시각입니다. 검수완료 전송(`POST /v2/bids/{bidId}/acceptance`)이 성사되었는지는 `contractCompletedAt` 이 채워졌는지로 확인하세요. **필수 스코프:** `contracts:read`
936
+ * @summary 검수 현황 조회
937
+ * @param {string} bidId 공고 ID(&#x3D; backend bidId &#x3D; 등록 응답의 bidNo).
938
+ * @param {*} [options] Override http request option.
939
+ * @throws {RequiredError}
940
+ */
941
+ getBidAcceptance(bidId: string, options?: RawAxiosRequestConfig): AxiosPromise<GetBidAcceptance200Response>;
598
942
  /**
599
943
  * 공고의 응찰 참여 업체·순위·낙찰 여부를 조회한다. scope bids:read.
600
944
  * @summary 입찰 결과 조회
@@ -602,24 +946,32 @@ export declare const PartnerV2ApiFactory: (configuration?: Configuration, basePa
602
946
  * @param {*} [options] Override http request option.
603
947
  * @throws {RequiredError}
604
948
  */
605
- getBidResults(bidId: string, options?: RawAxiosRequestConfig): AxiosPromise<BidResultsResponseDto>;
949
+ getBidResults(bidId: string, options?: RawAxiosRequestConfig): AxiosPromise<GetBidResults200Response>;
606
950
  /**
607
- * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회한다. scope bids:read. 가시성 마스킹과 직교한 정산 데이터 — read-only.
951
+ * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 가시성 마스킹과는 직교한 정산 데이터이며 읽기 전용입니다. **필수 스코프:** `invoices:read` 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
608
952
  * @summary 입찰결과 정산정보 조회
609
953
  * @param {string} bidId
610
954
  * @param {*} [options] Override http request option.
611
955
  * @throws {RequiredError}
612
956
  */
613
- getBidSettlement(bidId: string, options?: RawAxiosRequestConfig): AxiosPromise<BidSettlementResponseDto>;
957
+ getBidSettlement(bidId: string, options?: RawAxiosRequestConfig): AxiosPromise<GetBidSettlement200Response>;
614
958
  /**
615
- * 낙찰 계약의 거래명세서(문서·품목 라인)를 조회한다. scope contracts:read.
959
+ * 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
616
960
  * @summary 거래명세서 조회
617
961
  * @param {string} bidId
618
962
  * @param {number} [paperCode]
619
963
  * @param {*} [options] Override http request option.
620
964
  * @throws {RequiredError}
621
965
  */
622
- getBidStatement(bidId: string, paperCode?: number, options?: RawAxiosRequestConfig): AxiosPromise<BidStatementResponseDto>;
966
+ getBidStatement(bidId: string, paperCode?: number, options?: RawAxiosRequestConfig): AxiosPromise<GetBidStatement200Response>;
967
+ /**
968
+ * 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **구 경로:** 버전 없는 `GET /files/{fileKey}` 는 만료 없는 안정 주소이고 파트너 응답의 `fileUrl`/`fullUrl` 이 그 값을 가리킵니다. 인증도 스코프도 없는 옛 표면이라 신규 연동은 이 엔드포인트를 쓰세요. 구 경로는 당분간 유지됩니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** 하이픈 없는 16진수 32자가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. **필수 스코프:** `files:read`
969
+ * @summary 파일 조회(메타 + 내려받기 주소)
970
+ * @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(하이픈 없는 16진수 32자).
971
+ * @param {*} [options] Override http request option.
972
+ * @throws {RequiredError}
973
+ */
974
+ getFileMeta(fileKey: string, options?: RawAxiosRequestConfig): AxiosPromise<GetFileMeta200Response>;
623
975
  /**
624
976
  * 등록한 계약의 계산서 발행 상태를 확인합니다. **언제 쓰나:** 씨마켓이 보내는 발행완료 통지를 놓쳤을 때의 **복구 경로**입니다. 평상시에는 통지를 받아 처리하고, 상태가 어긋난 것 같을 때 이 API 로 되읽으세요. **필수 스코프:** `contracts:read`
625
977
  * @summary 계산서 발행 상태 조회
@@ -629,30 +981,60 @@ export declare const PartnerV2ApiFactory: (configuration?: Configuration, basePa
629
981
  */
630
982
  getSemoContractTaxinvoiceStatus(externalContractId: string, options?: RawAxiosRequestConfig): AxiosPromise<SemoContractTaxinvoiceStatusResponseDto>;
631
983
  /**
632
- * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write`
984
+ * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
633
985
  * @summary 공급사 카드결제 가능 여부
634
986
  * @param {string} memberId 계약업체 회원 ID
635
987
  * @param {*} [options] Override http request option.
636
988
  * @throws {RequiredError}
637
989
  */
638
990
  getSupplierCardPayable(memberId: string, options?: RawAxiosRequestConfig): AxiosPromise<SupplierCardPayableResponseDto>;
991
+ /**
992
+ * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
993
+ * @summary 공급사 카드결제 가능 여부
994
+ * @param {string} memberId 계약업체 회원 ID
995
+ * @param {*} [options] Override http request option.
996
+ * @throws {RequiredError}
997
+ */
998
+ getSupplierCardPayableV2(memberId: string, options?: RawAxiosRequestConfig): AxiosPromise<GetSupplierCardPayableV2200Response>;
999
+ /**
1000
+ * 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
1001
+ * @summary 웹훅 구독 단건 조회
1002
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
1003
+ * @param {*} [options] Override http request option.
1004
+ * @throws {RequiredError}
1005
+ */
1006
+ getWebhookEndpoint(endpointId: string, options?: RawAxiosRequestConfig): AxiosPromise<GetWebhookEndpoint200Response>;
639
1007
  /**
640
1008
  * ERP 연동 직전 회선·인증 endpoint 동작 확인용.
641
1009
  * @summary Partner API 헬스체크
642
1010
  * @param {*} [options] Override http request option.
643
1011
  * @throws {RequiredError}
644
1012
  */
645
- healthControllerCheck(options?: RawAxiosRequestConfig): AxiosPromise<HealthResponseDto>;
1013
+ healthControllerCheck(options?: RawAxiosRequestConfig): AxiosPromise<HealthControllerCheck200Response>;
646
1014
  /**
647
- * 낙찰 공급사가 확정된 공고에 대해 세금계산서를 발행합니다. **호출 시점:** 낙찰자 선정(계약진행) 이후. 과세/면세를 자동 분리해 발행합니다. **부수효과:** - 세금계산서가 국세청에 발행되고 공고가 발행 완료로 마킹됩니다. - 이미 발행됐거나 분할 청구가 진행 중이면 409 거절됩니다. **소유권:** 발행 대상 공고가 API 키에 바인딩된 발주처 소유가 아니면 403. **분할 청구:** 세금계산서 **분할 발급**은 `/v2` 제공되지 않습니다 `/v1` 전용(`POST /v1/invoices/split-requests`)입니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 + 동일 body 재전송 24시간 캐시 응답 반환.
648
- * @summary 세금계산서 발행
1015
+ * 공고의 계약서류 목록과 내려받기 주소를 조회합니다. **목록에 실리는 것:** 공고 전체에 공통인 서류(약관·자동생성 공통본) 낙찰자에게 귀속된 서류를 함께 싣습니다. 낙찰자 귀속 서류는 `winnerSequence` 낙찰자의 응찰 순번이 들어갑니다. **아직 없는 서류도 실립니다.** 공고가 제출을 요구했지만 아직 올라오지 않은 서류는 `fileKey: null` 나타나므로, 제출 여부는 값으로 판정하세요. **자동생성 서류:** `autoGenerated: true` 서류는 c-market 만들어 줍니다. 만드는 중이면 `generationState` `QUEUED`/`PROCESSING` 이고 `downloadUrl` 아직 없습니다. `DEAD_LETTER` 는 생성이 실패해 멈춘 상태이며, 같은 경로의 POST(재생성)로 다시 큐에 올립니다. **내려받기:** `downloadUrl` 유효기간 1시간의 서명 주소입니다. 저장해 두고 재사용하지 마시고 필요할 엔드포인트를 다시 호출하세요. 기간에 얽매이지 않으려면 `fileKey` 를 보관하시고 파일 내려받기 경로를 사용하세요. **보이는 범위:** 서버가 공고 낙찰방법과 진행 단계로 결정합니다. 응답을 그대로 사용하시고 클라이언트에서 다시 거르지 마세요. **필수 스코프:** `contracts:read`
1016
+ * @summary 계약서류 목록 조회
1017
+ * @param {string} bidId 공고번호(buy_idx, 예 CM…) 또는 외부 구매번호(bid_puchase_no).
1018
+ * @param {*} [options] Override http request option.
1019
+ * @throws {RequiredError}
1020
+ */
1021
+ listBidContractDocuments(bidId: string, options?: RawAxiosRequestConfig): AxiosPromise<ListBidContractDocuments200Response>;
1022
+ /**
1023
+ * 공고에 응찰한 업체 목록을 조회합니다. 스코프 `bids:read` 필수. **보이는 범위는 공고의 낙찰방법과 진행 단계가 결정합니다.** 개찰 전에는 업체명이 가려지고 (`companyName: null`), 순위는 산정 전까지 `null` 입니다. 이 판정은 서버가 소유하므로 응답을 그대로 사용하시고 클라이언트에서 다시 계산하지 마세요. 같은 목록이 `GET /v2/bids/{bidId}` 응답의 `participants` 에도 실립니다 — 응찰 현황만 필요하면 이 엔드포인트가 가볍습니다.
1024
+ * @summary 응찰 현황 조회
649
1025
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
650
- * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
651
- * @param {IssueTaxInvoiceRequestDto} issueTaxInvoiceRequestDto
652
1026
  * @param {*} [options] Override http request option.
653
1027
  * @throws {RequiredError}
654
1028
  */
655
- issueTaxInvoice(bidId: string, idempotencyKey: string, issueTaxInvoiceRequestDto: IssueTaxInvoiceRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<TaxInvoiceIssuedResponseDto>;
1029
+ listBidParticipants(bidId: string, options?: RawAxiosRequestConfig): AxiosPromise<ListBidParticipants200Response>;
1030
+ /**
1031
+ * 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에는 `ETag` 가 실리므로, 다음 요청에 `If-None-Match` 로 되보내면 결과가 그대로일 때 `304` 를 본문 없이 받습니다 — 마감을 기다리는 동안의 전송량이 사라집니다. **식별자 전달:** `?bidIds=A,B,C`(쉼표) 또는 `?bidIds=A&bidIds=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다 — 요청한 건수와 받은 건수가 다를 수 있으니 `bidId` 로 대조하세요. **목록이 길어 URL 이 부담되면** `POST /v2/bid-results/query` 를 쓰세요. 응답은 같습니다.
1032
+ * @summary 입찰 결과 배치 조회
1033
+ * @param {string} bidIds 조회할 공고 식별자 목록. 쉼표로 구분하거나 &#x60;bidIds&#x60; 를 반복해 전달합니다. 최대 100건.
1034
+ * @param {*} [options] Override http request option.
1035
+ * @throws {RequiredError}
1036
+ */
1037
+ listBidResults(bidIds: string, options?: RawAxiosRequestConfig): AxiosPromise<ListBidResults200Response>;
656
1038
  /**
657
1039
  * 발주처(API 키 바인딩)의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(쿼리에 buyerId 를 넣지 않습니다). **페이지네이션(cursor):** `limit`(1~100, 기본 100) + `cursor`(불투명 토큰). 응답의 `nextCursor` 를 다음 요청 `cursor` 로 전달하면 다음 페이지를 받습니다. `nextCursor=null` 이면 마지막 페이지입니다. **상태·낙찰방법:** 공개값(의미 문자열)으로 반환됩니다. 낙찰 여부는 상태가 아니라 낙찰 결과 조회의 `participants[].isWinner` 로 관측합니다(AWARDED 상태는 없습니다).
658
1040
  * @summary 공고 목록 조회
@@ -664,9 +1046,9 @@ export declare const PartnerV2ApiFactory: (configuration?: Configuration, basePa
664
1046
  * @param {*} [options] Override http request option.
665
1047
  * @throws {RequiredError}
666
1048
  */
667
- listBids(limit?: number, cursor?: string, bidIds?: Array<string>, status?: Array<BidPublicStatus>, include?: Array<ListBidsIncludeEnum>, options?: RawAxiosRequestConfig): AxiosPromise<ListBidsResponseDto>;
1049
+ listBids(limit?: number, cursor?: string, bidIds?: Array<string>, status?: Array<BidPublicStatus>, include?: Array<ListBidsIncludeEnum>, options?: RawAxiosRequestConfig): AxiosPromise<ListBids200Response>;
668
1050
  /**
669
- * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read`
1051
+ * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidId}/contract-documents` 가 v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
670
1052
  * @summary 거래에 필요한 계약서류 목록 조회
671
1053
  * @param {string} buyerId 발주기관 회원 ID(c-market memberId).
672
1054
  * @param {ListExternalContractDocumentsBidTypeEnum} bidType 거래유형.
@@ -674,6 +1056,31 @@ export declare const PartnerV2ApiFactory: (configuration?: Configuration, basePa
674
1056
  * @throws {RequiredError}
675
1057
  */
676
1058
  listExternalContractDocuments(buyerId: string, bidType: ListExternalContractDocumentsBidTypeEnum, options?: RawAxiosRequestConfig): AxiosPromise<ExternalContractDocumentsResponseDto>;
1059
+ /**
1060
+ * 기관에 공유된 물품 중 **아직 전송되지 않은 것**을 조회합니다. **증분 피드입니다.** 가져간 물품을 `POST /v2/products/receipts` 로 수신확인하면 다음 조회 결과에서 빠집니다. 수신확인을 하지 않으면 같은 물품이 계속 내려옵니다. **권장 흐름:** 조회 → 자기 시스템에 저장 → 저장에 성공한 물품 코드만 수신확인. 저장 전에 수신확인하면 그 물품은 다시 받을 수 없습니다. **조회 범위:** 요청 키가 대행하는 기관 그룹입니다. 기관 그룹이 설정되지 않은 키는 403 입니다. **필수 스코프:** `products:read`
1061
+ * @summary 물품 카탈로그 조회
1062
+ * @param {*} [options] Override http request option.
1063
+ * @throws {RequiredError}
1064
+ */
1065
+ listProducts(options?: RawAxiosRequestConfig): AxiosPromise<ListProducts200Response>;
1066
+ /**
1067
+ * 이 API 키의 웹훅 발송 시도를 최신순으로 조회합니다. 보낸 본문·수신측 응답 상태· 다음 재시도 예정 시각이 함께 실립니다. **호출 시점:** - 수신측 장애로 놓친 이벤트를 메울 때. 이 엔드포인트가 웹훅의 **폴링 대체 경로**입니다 — `status=EXHAUSTED` 로 걸러 다시 처리하면 됩니다. - \"이벤트가 안 온다\" 를 진단할 때. 발송 시도 자체가 없는지(구독·이벤트 타입 문제), 시도했지만 실패했는지(`responseStatus`·`responseBodyExcerpt`)를 여기서 가릅니다. **같은 이벤트가 여러 행으로 보입니다.** 재시도마다 한 행이며 `eventId` 가 같고 `attempt` 만 올라갑니다. 처리 여부는 `eventId` 기준으로 판단하세요. **페이지네이션:** `nextCursor` 를 다음 요청의 `cursor` 로 전달합니다. null 이면 마지막 페이지입니다. **`400`:** `status` 가 허용 값 밖이거나 `limit` 이 범위를 벗어났습니다 — 값을 고쳐 재시도하세요. **필수 스코프:** `webhooks:read`
1068
+ * @summary 웹훅 전송 이력 조회
1069
+ * @param {string} [endpointId] 이 구독의 전송만 조회합니다. 미지정이면 이 키의 모든 구독을 함께 조회합니다.
1070
+ * @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
1071
+ * @param {number} [limit] 페이지 크기(1~200, 기본 50).
1072
+ * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달합니다. 미지정 시 첫 페이지.
1073
+ * @param {*} [options] Override http request option.
1074
+ * @throws {RequiredError}
1075
+ */
1076
+ listWebhookDeliveries(endpointId?: string, status?: PartnerWebhookDeliveryStatus, limit?: number, cursor?: string, options?: RawAxiosRequestConfig): AxiosPromise<ListWebhookDeliveries200Response>;
1077
+ /**
1078
+ * 이 API 키가 등록한 웹훅 구독을 모두 조회합니다. **호출 시점:** 연동 상태를 점검할 때, 또는 발송이 멈춘 이유(`status`·`consecutiveFailures`)를 확인할 때. 서명 시크릿은 여기에 실리지 않습니다. **필수 스코프:** `webhooks:read` ### 서명 검증 (필수) 발송 요청마다 헤더 `X-CMarket-Signature` 가 실립니다. ``` X-CMarket-Signature: t=<unix초>,v1=<hex> ``` `v1` 은 `HMAC-SHA256(secret, \"${t}.${요청 본문 원문}\")` 의 소문자 hex 입니다. 1. 헤더를 `t` 와 `v1` 로 나눕니다. 2. `\"${t}.${본문}\"` 을 만듭니다. **본문은 파싱 전 원문 바이트**여야 합니다 — JSON 을 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. 등록 시 받은 시크릿으로 HMAC-SHA256 을 계산해 `v1` 과 비교합니다. 비교는 **상수 시간** 비교 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `t` 가 현재 시각으로부터 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). ### 중복 제거 `X-CMarket-Event-Id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. ### 응답과 재시도 2xx 를 돌려주면 성공입니다. 그 외(또는 무응답)는 실패로 보고 최대 7회 재시도합니다 — 간격은 10초 → 1분 → 5분 → 30분 → 2시간 → 6시간 → 24시간 입니다. 처리 시간이 길면 먼저 2xx 를 돌려주고 비동기로 처리하세요. 연속 실패가 20회에 닿으면 구독이 자동으로 `DISABLED` 로 내려가고 발송이 멈춥니다. 수신측을 고친 뒤 `PATCH /v2/webhook-endpoints/{endpointId}` 에 `{\"status\":\"ACTIVE\"}` 로 되살리세요. ### 구독 가능한 이벤트 `bid.closed` · `bid.awarded` · `bid.failed` · `bid.canceled` · `bid.award_reverted` `ping` 은 연결 확인 전용이라 구독할 수 없습니다 — 테스트 발송 경로에서만 나갑니다. ### 놓친 이벤트 확인 `GET /v2/webhook-deliveries` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
1079
+ * @summary 웹훅 구독 목록 조회
1080
+ * @param {*} [options] Override http request option.
1081
+ * @throws {RequiredError}
1082
+ */
1083
+ listWebhookEndpoints(options?: RawAxiosRequestConfig): AxiosPromise<ListWebhookEndpoints200Response>;
677
1084
  /**
678
1085
  * 공고를 유찰 상태로 전환합니다. **호출 시점:** 입찰 마감 후 유찰 사유가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 공고 상태가 유찰(FAILED)로 전환됩니다. - 유찰사유 코드와 상세가 기록됩니다. **유찰사유 값 목록(failureReasonCode — 공개값):** | 값 | 의미 | |------|------| | `ABOVE_TARGET_PRICE` | 예정가격 초과 | | `DEPT_MISMATCH` | 자격 미달 | | `NEEDS_EXPERTISE` | 전문성 필요 | | `OTHER` | 기타 (`failureReasonDetail` 필수) | | `NO_PARTICIPANT` | 참가자 없음 | | `SINGLE_PARTICIPANT` | 단독 참가 | | `LESS_THAN_TWO` | 2인 미만 | | `BELOW_MINIMUM` | 최저가 미달 | **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body 에 buyerId 를 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수.
679
1086
  * @summary 유찰 처리
@@ -683,7 +1090,7 @@ export declare const PartnerV2ApiFactory: (configuration?: Configuration, basePa
683
1090
  * @param {*} [options] Override http request option.
684
1091
  * @throws {RequiredError}
685
1092
  */
686
- markBidFailed(bidId: string, idempotencyKey: string, markBidFailedRequestDto: MarkBidFailedRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<BidFailedV2ResponseDto>;
1093
+ markBidFailed(bidId: string, idempotencyKey: string, markBidFailedRequestDto: MarkBidFailedRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<MarkBidFailed201Response>;
687
1094
  /**
688
1095
  * 초안(DRAFT) 상태로 등록된 공고를 진행중(ONGOING)으로 게시합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. **호출 시점:** 연간/지명계약 등으로 초안 상태로 등록된 공고를 명시적으로 게시할 때. 등록 응답의 `status` 로 게시 필요 여부를 판별합니다. **전제조건:** 초안(DRAFT) 상태이고 마감(bidEndAt)이 미래여야 합니다. **거부:** 초안이 아니거나 마감이 지난 공고 → 409. 마감이 지났으면 먼저 마감일을 연장해야 합니다. **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403). **멱등성:** `Idempotency-Key` 헤더 필수.
689
1096
  * @summary 공고 게시(초안 → 진행중)
@@ -692,7 +1099,15 @@ export declare const PartnerV2ApiFactory: (configuration?: Configuration, basePa
692
1099
  * @param {*} [options] Override http request option.
693
1100
  * @throws {RequiredError}
694
1101
  */
695
- publishBid(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): AxiosPromise<BidPublishedResponseDto>;
1102
+ publishBid(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): AxiosPromise<PublishBid200Response>;
1103
+ /**
1104
+ * `GET /v2/bid-results` 와 **완전히 같은 조회**이며, 식별자 목록을 본문으로 받습니다. 스코프 `bids:read`. 공고 식별자 100건이면 URL 이 1KB를 넘습니다 — 중간 프록시가 긴 URL 을 자르는 환경을 위한 대체 경로입니다. **부수효과가 없으므로 `Idempotency-Key` 는 필요하지 않습니다.** POST 인 것은 전송 형태의 문제일 뿐이며, 가능하면 캐시·`ETag` 가 동작하는 `GET` 쪽을 쓰세요.
1105
+ * @summary 입찰 결과 배치 조회 (본문 전달)
1106
+ * @param {BidResultsBatchRequestDto} bidResultsBatchRequestDto
1107
+ * @param {*} [options] Override http request option.
1108
+ * @throws {RequiredError}
1109
+ */
1110
+ queryBidResults(bidResultsBatchRequestDto: BidResultsBatchRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<ListBidResults200Response>;
696
1111
  /**
697
1112
  * 공고의 자동생성 계약서류(발주서·공고결과·표준계약서 등)를 생성/재생성합니다. **V6 대응:** `RegenerateAllContractPdfsCommand` — 웹 어드민의 \"계약 서류 일괄 재생성\"과 동일 경로. **호출 시점:** 낙찰(계약 시작) 후 계약서류가 필요하거나, 생성에 실패한 서류를 다시 만들 때. **부수효과:** - 생성 실패(DEAD_LETTER) 상태의 자동생성 PDF 가 재생성 큐에 등록됩니다(비동기). - 승낙사항(ACCEPTANCE) 계열은 운영자 승인 워크플로가 필요해 이 경로에서 제외됩니다. **응답:** 즉시 파일이 아니라 큐 등록 결과(`enqueuedCount`/`skippedCount`)를 반환합니다. 잠시 후 자동 생성됩니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
698
1113
  * @summary 계약서류 생성(재생성)
@@ -701,7 +1116,7 @@ export declare const PartnerV2ApiFactory: (configuration?: Configuration, basePa
701
1116
  * @param {*} [options] Override http request option.
702
1117
  * @throws {RequiredError}
703
1118
  */
704
- regenerateContractDocuments(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): AxiosPromise<ContractDocumentsRegeneratedResponseDto>;
1119
+ regenerateContractDocuments(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): AxiosPromise<RegenerateContractDocuments201Response>;
705
1120
  /**
706
1121
  * 낙찰 결과를 등록합니다. 이 요청의 응답은 처리 상태 `AWARDED` 를 반환합니다. **호출 시점:** 입찰 마감 후 낙찰자가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 낙찰자(공급사)의 응찰 건이 낙찰 처리됩니다. - 이후 **공고의 조회 상태(status)는 계약진행(CONTRACT_IN_PROGRESS)** 으로 진행합니다. `AWARDED` 라는 공고 status 는 존재하지 않으므로, 낙찰 여부는 `GET /v2/bids/{bidId}/results` 의 `participants[].isWinner` 또는 `GET /v2/bids/{bidId}` 의 status(=계약진행)로 관측하세요(`status === \'AWARDED\'` 폴링 금지). - 협상 방식(NEGOTIATION/NEGOTIATION_AUTO) 공고는 이 엔드포인트 전에 `POST /v2/bids/{bidId}/negotiation-scores`(협상 점수평가)로 평가를 완료해야 합니다. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body 에 buyerId 를 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 키 + 동일 body 재전송 시 24시간 내 캐시 응답 반환.
707
1122
  * @summary 낙찰 결과 전송
@@ -711,15 +1126,16 @@ export declare const PartnerV2ApiFactory: (configuration?: Configuration, basePa
711
1126
  * @param {*} [options] Override http request option.
712
1127
  * @throws {RequiredError}
713
1128
  */
714
- registerAward(bidId: string, idempotencyKey: string, registerAwardRequestDto: RegisterAwardRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<AwardRegisteredV2ResponseDto>;
1129
+ registerAward(bidId: string, idempotencyKey: string, registerAwardRequestDto: RegisterAwardRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<RegisterAward201Response>;
715
1130
  /**
716
1131
  * 입찰 정보 등록. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수.
717
1132
  * @summary 입찰 정보 전송(등록)
1133
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
718
1134
  * @param {CreateBidRequestDto} createBidRequestDto
719
1135
  * @param {*} [options] Override http request option.
720
1136
  * @throws {RequiredError}
721
1137
  */
722
- registerBid(createBidRequestDto: CreateBidRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<BidRegisteredResponseDto>;
1138
+ registerBid(idempotencyKey: string, createBidRequestDto: CreateBidRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<RegisterBid201Response>;
723
1139
  /**
724
1140
  * 외부에서 맺어진 계약 1건을 씨마켓의 **세금계산서 발행 대상**으로 등록합니다. **등록 후 동선:** 발주기관이 씨마켓 [나의 계약 관리] 에서 계산서 발급을 요청하고, 공급기업이 같은 화면에서 발행합니다. 계산서의 **공급자는 공급기업, 공급받는자는 발주기관**입니다. **대금 흐름:** 씨마켓은 이 거래의 대금을 받지 않습니다 — 발행 경로만 제공합니다. **금액:** `supplyPrice` 는 **부가세를 뺀 과세 공급가액**입니다(결제창 API 가 부가세 포함가를 받는 것과 다릅니다). 과세·면세 공급가액이 모두 0 이면 400 입니다. **사전 조건:** 두 회원 ID 가 씨마켓에 실재해야 합니다. 회원 ID 가 곧 소유권이라, 없는 회원으로 등록하면 아무도 열 수 없는 계산서 대상이 됩니다. **필수 스코프:** `contracts:write`. 바인딩된 발주처 외의 발주기관을 대신하려면 대행 범위에 그 회원이 있어야 합니다. **멱등성:** `externalContractId` 가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 대상을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
725
1141
  * @summary 계약 발행대상 등록
@@ -730,25 +1146,57 @@ export declare const PartnerV2ApiFactory: (configuration?: Configuration, basePa
730
1146
  */
731
1147
  registerSemoContract(idempotencyKey: string, registerSemoContractRequestDto: RegisterSemoContractRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<SemoContractRegisteredResponseDto>;
732
1148
  /**
733
- * 협상방식(NEGOTIATION/NEGOTIATION_AUTO) 공고의 응찰자별 점수를 입력합니다. **호출 시점:** 입찰 마감 낙찰(`POST /v2/bids/{bidId}/award`) 전. 협상방식 공고는 평가를 완료해야 낙찰에 진입할 수 있습니다. **부수효과:** - 응찰자별 기술점수(및 선택적 가격점수 override)가 기록됩니다. - `complete=true` 평가완료 게이트까지 적용돼 낙찰 진입이 가능해집니다. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body buyerId 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 + 동일 body 재전송 24시간 캐시 응답 반환.
734
- * @summary 협상 점수평가
1149
+ * 확정된 낙찰을 되돌려 공고를 낙찰대기(PENDING_AWARD) 상태로 보냅니다. 스코프 `awards:write` + `Idempotency-Key` 헤더 필수. **호출 시점:** 낙찰자가 계약을 포기했거나 낙찰 처리 자체가 잘못됐을 때. 되돌린 같은 공고에 다시 낙찰을 등록할 수 있습니다. **되돌릴 없는 경우 409:** - 수수료 결제가 이미 완료된 공고 - 세금계산서가 이미 발행된 공고 - 수입권공매 계열 낙찰방법(다수 낙찰자 구조라 되돌리기 단위가 다릅니다) **사유는 필수입니다** 감사 대상 행위이며 공고 이력에 남습니다. **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
1150
+ * @summary 낙찰 되돌리기
735
1151
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
1152
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
1153
+ * @param {RevertAwardRequestDto} revertAwardRequestDto
1154
+ * @param {*} [options] Override http request option.
1155
+ * @throws {RequiredError}
1156
+ */
1157
+ revertAward(bidId: string, idempotencyKey: string, revertAwardRequestDto: RevertAwardRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<RevertAward200Response>;
1158
+ /**
1159
+ * 서명 시크릿을 새로 발급합니다. 응답의 `secretVersion` 이 1 올라갑니다. **호출 시점:** 시크릿을 분실했거나 유출이 의심될 때, 또는 주기적 교체 정책이 있을 때. **새 시크릿은 이 응답에서 한 번만 나갑니다.** 조회로 다시 받을 수 없습니다. **옛 시크릿은 즉시 무효입니다.** 유예 기간이 없으므로, 수신측이 새 값을 반영하기 전에 도착한 이벤트는 서명 검증에 실패합니다. 배포 순서를 이렇게 잡으세요 — ① 수신측이 옛 값과 새 값을 **둘 다** 받아들이도록 배포 → ② 이 엔드포인트 호출 → ③ 응답의 새 값을 반영 → ④ 옛 값 제거. 검증 실패로 non-2xx 를 돌려주면 실패로 집계되어 20회 연속 시 구독이 중지됩니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 같은 키로 재전송하면 **새로 발급하지 않고** 처음 발급한 값을 그대로 돌려줍니다(24시간) — 네트워크 오류로 응답을 놓쳤을 때 같은 키로 다시 부르세요.
1160
+ * @summary 웹훅 서명 시크릿 재발급
1161
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
736
1162
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
737
- * @param {SubmitNegotiationScoresRequestDto} submitNegotiationScoresRequestDto
738
1163
  * @param {*} [options] Override http request option.
739
1164
  * @throws {RequiredError}
740
1165
  */
741
- submitNegotiationScores(bidId: string, idempotencyKey: string, submitNegotiationScoresRequestDto: SubmitNegotiationScoresRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<NegotiationScoredV2ResponseDto>;
1166
+ rotateWebhookSecret(endpointId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): AxiosPromise<CreateWebhookEndpoint201Response>;
1167
+ /**
1168
+ * 등록된 주소로 `ping` 이벤트를 즉시 1회 보내고 그 결과를 돌려줍니다. **호출 시점:** 구독을 등록한 직후, 수신 주소를 바꾼 직후, 방화벽·인증서를 손본 뒤. **응답은 발송 결과이지 요청 실패가 아닙니다.** 수신측이 받지 못해도 HTTP `200` 에 `delivered: false` 로 옵니다 — `responseStatus`(수신측 상태)와 `error`(연결 거부·타임아웃· TLS 오류)를 보고 원인을 좁히세요. 이 발송에도 실제 이벤트와 **똑같은 서명 헤더**가 실리므로 검증 코드를 그대로 시험할 수 있습니다. `ping` 은 구독 목록에 넣을 수 없는 타입이니, 수신측이 모르는 `eventType` 을 만나면 버리도록 짜여 있다면 이 확인만 실패할 수 있습니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 다시 보내려면 **새 키**를 쓰세요 — 같은 키는 24시간 동안 직전 결과를 그대로 돌려줍니다(재발송하지 않습니다).
1169
+ * @summary 웹훅 연결 확인 발송
1170
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
1171
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1172
+ * @param {*} [options] Override http request option.
1173
+ * @throws {RequiredError}
1174
+ */
1175
+ sendWebhookTestEvent(endpointId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): AxiosPromise<SendWebhookTestEvent200Response>;
742
1176
  /**
743
1177
  * 등록된 공고의 내용을 수정합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. 진행중/초안 상태의 공고만 수정할 수 있습니다. **부수효과:** - 변경 내용이 반영되고 수정이력이 기록됩니다. - `hideEdit=true` 면 변경이력을 비공개 처리하고 노출 카운터 증가를 생략합니다. **수정 제약:** - 낙찰방법(awardMethod)은 수정 불가(잠금). - 참여자가 있으면 입찰방식/면허/예산/품목 일부가 잠깁니다. - 마감/취소된 공고는 수정할 수 없습니다. 한 섹션을 수정하려면 해당 섹션의 필수 필드를 함께 보내야 합니다(부분 섹션은 거부됨).
744
1178
  * @summary 입찰 공고 수정
745
1179
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
1180
+ * @param {string} ifMatch
1181
+ * @param {string} ifMatch2 수정하려는 공고의 ETag(필수). 직전 &#x60;GET /v2/bids/{bidId}&#x60; 응답의 &#x60;ETag&#x60; 헤더 값을 그대로 실어 보내세요. 누락하면 428, 그 사이 공고가 바뀌었으면 412 로 거절되며 아무것도 수정되지 않습니다.
746
1182
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
747
1183
  * @param {UpdateBidRequestDto} updateBidRequestDto
748
1184
  * @param {*} [options] Override http request option.
749
1185
  * @throws {RequiredError}
750
1186
  */
751
- updateBid(bidId: string, idempotencyKey: string, updateBidRequestDto: UpdateBidRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<BidUpdatedResponseDto>;
1187
+ updateBid(bidId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, updateBidRequestDto: UpdateBidRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<UpdateBid200Response>;
1188
+ /**
1189
+ * 수신 주소·구독 이벤트·상태를 수정합니다. 보낸 필드만 바뀝니다. **호출 시점:** 수신 주소가 바뀌었을 때, 구독 이벤트를 늘리거나 줄일 때, 연속 실패로 자동 중지된 구독을 고친 뒤 되살릴 때(`{\"status\":\"ACTIVE\"}`). **`eventTypes` 는 치환입니다** — 보낸 목록이 곧 새 구독 목록입니다. 하나를 더하려면 기존 목록에 더한 **전체**를 보내세요. **`If-Match` 가 필수입니다.** 먼저 `GET /v2/webhook-endpoints/{endpointId}` 로 현재 `ETag` 를 받아 그대로 실어 보내세요. 이 헤더가 없으면 두 요청이 앞서거니 뒤서거니 하며 먼저 한 수정을 조용히 덮어씁니다. - `428` — 헤더를 빼먹었습니다. 조회 후 `ETag` 를 실어 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다. 다시 조회해 최신 `ETag` 로 재시도하세요. 아무것도 수정되지 않았습니다. **시크릿은 이 경로로 바뀌지 않습니다** — 재발급은 `rotate-secret` 입니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
1190
+ * @summary 웹훅 구독 수정
1191
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
1192
+ * @param {string} ifMatch
1193
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
1194
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1195
+ * @param {UpdateWebhookEndpointRequestDto} updateWebhookEndpointRequestDto
1196
+ * @param {*} [options] Override http request option.
1197
+ * @throws {RequiredError}
1198
+ */
1199
+ updateWebhookEndpoint(endpointId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, updateWebhookEndpointRequestDto: UpdateWebhookEndpointRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<GetWebhookEndpoint200Response>;
752
1200
  /**
753
1201
  * 스코프 `files:write` + `Idempotency-Key` 헤더 필수. base64 또는 url 중 정확히 하나를 제출한다.
754
1202
  * @summary 입찰 첨부파일 업로드(base64 또는 url) → fileKey
@@ -756,20 +1204,31 @@ export declare const PartnerV2ApiFactory: (configuration?: Configuration, basePa
756
1204
  * @param {*} [options] Override http request option.
757
1205
  * @throws {RequiredError}
758
1206
  */
759
- uploadFile(uploadFileRequestDto: UploadFileRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<FileUploadedResponseDto>;
1207
+ uploadFile(uploadFileRequestDto: UploadFileRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<UploadFile201Response>;
760
1208
  };
761
1209
  /**
762
1210
  * PartnerV2Api - object-oriented interface
763
1211
  */
764
1212
  export declare class PartnerV2Api extends BaseAPI {
765
1213
  /**
766
- * 샌드박스 공고를 마감하는 **영업 데모 전용** 엔드포인트입니다. **가짜 상태 주입이 아닙니다.** backend 스케줄러가 부르는 것과 동일한 실제 `CloseBidCommand` dispatch 합니다 개찰이 실제로 수행되고, `status=\'B\'` 커밋 직전 투찰가 동기 복호화가 실제로 일어납니다(복호화 실패 마감이 중단됩니다). 엔드포인트는 데모인 동시에 살아있는 e2e 스모크입니다. **데모 공고 전용:** backend 공고 명의 == 데모 발주처인 공고에 한해서만 마감합니다. 실 발주처 공고는 절대 마감하지 않습니다. **마감 불가:** 이미 마감됐거나 마감 불가 상태면 409(`type: …/upstream-conflict`)를 반환합니다. **필수 스코프:** `bids:write`
767
- * @summary 샌드박스 공고 마감 (영업 데모 전용)
768
- * @param {string} bidId 샌드박스 공고 ID(&#x3D; backend bidId).
1214
+ * 저장을 마친 물품을 전송완료로 표시해 다음 조회에서 제외합니다. **되돌릴 없습니다.** 표시한 물품은 `GET /v2/products` 다시 내려오지 않으므로, 자기 시스템에 저장이 끝난 뒤에 호출하세요. **표시 범위는 기관 그룹으로 잠깁니다.** 다른 기관의 물품 코드를 섞어 보내면 건은 표시되지 않고 `acknowledged`요청 수보다 작게 돌아옵니다. **필수 스코프:** `products:write` **멱등성:** `Idempotency-Key` 헤더 필수.
1215
+ * @summary 물품 수신확인
1216
+ * @param {string} idempotencyKey 멱등성 (1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1217
+ * @param {AcknowledgeProductsRequestDto} acknowledgeProductsRequestDto
769
1218
  * @param {*} [options] Override http request option.
770
1219
  * @throws {RequiredError}
771
1220
  */
772
- closeSandboxBid(bidId: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<CloseSandboxBidResponseDto, any, {}>>;
1221
+ acknowledgeProductReceipt(idempotencyKey: string, acknowledgeProductsRequestDto: AcknowledgeProductsRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AcknowledgeProductReceipt200Response, any, {}>>;
1222
+ /**
1223
+ * 진행중인 공고를 취소합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. **되돌릴 수 없습니다.** 취소 사유는 필수이며 공고 이력에 남습니다. **전제조건:** 진행중(ONGOING) 상태여야 합니다. **거부:** 진행중이 아니거나 이미 취소된 공고 → 409. 타 발주처 공고 → 403. **마감과의 차이:** 취소는 공고를 무효로 되돌리는 것이고, 유찰(`POST /v2/bids/{bidId}/fail`)은 응찰을 받았으나 낙찰자를 정하지 못한 종료입니다.
1224
+ * @summary 공고 취소
1225
+ * @param {string} bidId 공고 식별자(등록 응답의 bidId).
1226
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
1227
+ * @param {CancelBidRequestDto} cancelBidRequestDto
1228
+ * @param {*} [options] Override http request option.
1229
+ * @throws {RequiredError}
1230
+ */
1231
+ cancelBid(bidId: string, idempotencyKey: string, cancelBidRequestDto: CancelBidRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<CancelBid200Response, any, {}>>;
773
1232
  /**
774
1233
  * 낙찰 공고의 검수(납품 검수)가 완료되었음을 기록합니다. **V5 대응:** `acceptanceCompleteSend` — BidApi.xml `acceptanceComplete` 액션의 V6 후속. **호출 시점:** 낙찰자(공급사)가 납품을 완료하고 구매자가 검수를 확인한 시점. 공고 상태가 낙찰(AWARDED) 상태여야 합니다. **부수효과:** - 검수완료 상태가 기록됩니다. - 응답은 204가 아닌 200입니다 — 멱등성 인터셉터가 구체 바디를 캐시하고 SDK 가 타입드 응답을 필요로 하기 때문. **V5-compat 안내:** 거래명세서·검수보고서에 찍힐 구매사 사업자정보·담당자·작성일자 override(11종)는 modern v2 표면에서 제거됐습니다. 필요 시 V5 충실 카운터파트 `POST /v1/bids/{bidId}/acceptance`(`CompleteAcceptanceV1RequestDto`)를 사용하세요. **낙찰자 식별:** `winnerMemberId`(공급사 memberId). 내부 joinSeq 해소는 backend 가 처리합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
775
1234
  * @summary 검수완료 전송
@@ -779,7 +1238,7 @@ export declare class PartnerV2Api extends BaseAPI {
779
1238
  * @param {*} [options] Override http request option.
780
1239
  * @throws {RequiredError}
781
1240
  */
782
- completeAcceptance(bidId: string, idempotencyKey: string, completeAcceptanceRequestDto: CompleteAcceptanceRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AcceptanceResultResponseDto, any, {}>>;
1241
+ completeAcceptance(bidId: string, idempotencyKey: string, completeAcceptanceRequestDto: CompleteAcceptanceRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<CompleteAcceptance200Response, any, {}>>;
783
1242
  /**
784
1243
  * 공급사로부터 계산서를 수령한 뒤, 계약을 완료처리 상태로 강제 전환합니다. **호출 시점:** 낙찰·계약 완료 후 공급사 계산서를 오프라인으로 수령했을 때. **부수효과:** - 결제완료·계산서 발급 상태가 기록되고 발급일자가 현재 시각으로 설정됩니다. **소유권:** 공고는 요청 파트너 키가 소유한 발주처 명의여야 합니다(타 발주처 공고 → 403). **이미 완료:** 이미 완료처리된 공고 재호출 → 409. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
785
1244
  * @summary 정산 마감(송장 강제완료)
@@ -788,26 +1247,27 @@ export declare class PartnerV2Api extends BaseAPI {
788
1247
  * @param {*} [options] Override http request option.
789
1248
  * @throws {RequiredError}
790
1249
  */
791
- completeInvoice(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<InvoiceCompletedResponseDto, any, {}>>;
1250
+ completeInvoice(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<CompleteInvoice200Response, any, {}>>;
792
1251
  /**
793
- * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인(APPROVED)되어 바로 결제 가능합니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. 거기서 카드를 골라 결제합니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/card-payment-requests/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
1252
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인되어 바로 결제할 수 있습니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 도메인 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
794
1253
  * @summary 결제창 발행
795
1254
  * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
796
1255
  * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
797
1256
  * @param {*} [options] Override http request option.
798
1257
  * @throws {RequiredError}
799
1258
  */
800
- createCardPaymentRequest(idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<CardPaymentRequestResponseDto, any, {}>>;
1259
+ createCardPayment(idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<CreateCardPayment200Response, any, {}>>;
801
1260
  /**
802
- * 스코프 `embed:launch` 필수. 발주기관 담당자(memberId) 일회성 launch code(60초 TTL) 발급한다. code URL 싣지 말고 @cmarket/embed SDK postMessage 핸드셰이크로만 iframe 전달할 것. memberId API 키의 발주처 소속이 아니면 403, 미허용 screen 400.
803
- * @summary 임베드 launch code 발급 (iframe SSO)
804
- * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
1261
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인(APPROVED)되어 바로 결제 가능합니다. **사용자 동선:** 응답의 `payUrl` 발주기관을 보내면 결제창 건만 걸러진 화면이 열립니다. 거기서 카드를 골라 결제합니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/card-payment-requests/suppliers/{memberId}/card-payable` 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요. --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
1262
+ * @summary 결제창 발행
1263
+ * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
1264
+ * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
805
1265
  * @param {*} [options] Override http request option.
806
1266
  * @throws {RequiredError}
807
1267
  */
808
- createEmbedLaunch(embedLaunchRequestDto: EmbedLaunchRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<EmbedLaunchResponseDto, any, {}>>;
1268
+ createCardPaymentRequest(idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<CardPaymentRequestResponseDto, any, {}>>;
809
1269
  /**
810
- * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `paperCodes` 와 같은 순서로 같은 개수가 돌아옵니다.** 각 항목의 `fileUrl` 을 그대로 쓰면 되고, `paperCode` 로 어느 요청에 대한 결과인지 대응시킬 수 있습니다. **`name` 의 출처는 서류에 따라 다릅니다.** 시스템이 렌더한 서류는 계약서류명이고, 공급사 사전등록 3종(11·12·13)은 **공급사가 등록한 원본 파일명**입니다 — 채팅 첨부 라벨로 그대로 쓰세요. **필요한 입력:** 발주기관·공급사는 회원 ID 만 주면 됩니다. 상호·사업자번호·대표자·주소·직인은 c-market 이 회원 정보에서 직접 채웁니다. **전부 성공 또는 전부 실패입니다.** 지원하지 않는 서류가 하나라도 섞이면(400) 아무것도 만들지 않습니다. 렌더가 필요한 서류를 요청하면서 `contract` 를 빠뜨려도 마찬가지입니다(422). **135(수의계약체결제한여부확인서)를 요청하면 추가 입력이 필요합니다.** `contract.subject`(발주내용)·`contract.category`(계약구분)·`contract.buyerDepartment`(발주부서)가 필수이고, `documentInputs.contractRestrictionConfirm.answers`에 서식 ①~⑧에 대한 **계약상대자**의 답변 8개를 순서대로 담아야 합니다(c-market 이 대신 만들어낼 수 없는 값입니다). ⑨(발주자 확인사항)는 `documentInputs.contractRestrictionConfirm.buyerConfirmation`으로 선택 전달하며, 생략하면 서식에 빈칸으로 인쇄됩니다. 문항 ①~⑧의 원문은 `answers` 필드 설명을 참고하세요. **164(퇴직자영입현황확인서)를 요청하면 퇴직자 명단이 필요합니다.** `contract.subject`(서식의 \"수의계약 대상건명\")가 필수이고, `documentInputs.retireeRoster.rows` 에 명단을 넣습니다(성명·직급 필수, 직급·입사일·근무기간·비고 선택, 최대 50행). **퇴직자가 없으면 `rows` 를 빈 배열로 보내세요** — 서식에 \"해당사항 없음\"으로 인쇄됩니다. 블록 자체를 생략하면 422 입니다(\"퇴직자 없음\"과 \"확인하지 않음\"을 구분할 수 없기 때문입니다). **승낙사항(4·184·185·186·189·197·208)을 요청하면 `contract.subject`(계약건명)가 필수입니다.** 서식 상단 \"건명\" 칸에 인쇄되는 값이라 비면 어느 계약의 승낙인지 알 수 없습니다. 그 외 추가 입력은 없습니다 — 갑(발주기관) 서명란은 `buyerId` 로, 을(공급사) 서명란은 `supplierId` 로 c-market 이 채웁니다. 발주기관이 기관 전용 승낙사항 서식을 쓰면 요청한 코드 그대로 응답하되 PDF 는 그 기관 서식으로 발급됩니다. **응답의 `fileUrl` 은 만료되지 않습니다.** 채팅 메시지 등에 그대로 저장해 두어도 됩니다. **생성 가능한 회원 범위:** 조회와 같습니다 — 이 API 키에 설정된 대행 범위 안의 회원만 가능합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
1270
+ * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `paperCodes` 와 같은 순서로 같은 개수가 돌아옵니다.** 각 항목의 `fileUrl` 을 그대로 쓰면 되고, `paperCode` 로 어느 요청에 대한 결과인지 대응시킬 수 있습니다. **`name` 의 출처는 서류에 따라 다릅니다.** 시스템이 렌더한 서류는 계약서류명이고, 공급사 사전등록 3종(11·12·13)은 **공급사가 등록한 원본 파일명**입니다 — 채팅 첨부 라벨로 그대로 쓰세요. **필요한 입력:** 발주기관·공급사는 회원 ID 만 주면 됩니다. 상호·사업자번호·대표자·주소·직인은 c-market 이 회원 정보에서 직접 채웁니다. **전부 성공 또는 전부 실패입니다.** 지원하지 않는 서류가 하나라도 섞이면(400) 아무것도 만들지 않습니다. 렌더가 필요한 서류를 요청하면서 `contract` 를 빠뜨려도 마찬가지입니다(422). **135(수의계약체결제한여부확인서)를 요청하면 추가 입력이 필요합니다.** `contract.subject`(발주내용)·`contract.category`(계약구분)·`contract.buyerDepartment`(발주부서)가 필수이고, `documentInputs.contractRestrictionConfirm.answers`에 서식 ①~⑧에 대한 **계약상대자**의 답변 8개를 순서대로 담아야 합니다(c-market 이 대신 만들어낼 수 없는 값입니다). ⑨(발주자 확인사항)는 `documentInputs.contractRestrictionConfirm.buyerConfirmation`으로 선택 전달하며, 생략하면 서식에 빈칸으로 인쇄됩니다. 문항 ①~⑧의 원문은 `answers` 필드 설명을 참고하세요. **164(퇴직자영입현황확인서)를 요청하면 퇴직자 명단이 필요합니다.** `contract.subject`(서식의 \"수의계약 대상건명\")가 필수이고, `documentInputs.retireeRoster.rows` 에 명단을 넣습니다(성명·직급 필수, 직급·입사일·근무기간·비고 선택, 최대 50행). **퇴직자가 없으면 `rows` 를 빈 배열로 보내세요** — 서식에 \"해당사항 없음\"으로 인쇄됩니다. 블록 자체를 생략하면 422 입니다(\"퇴직자 없음\"과 \"확인하지 않음\"을 구분할 수 없기 때문입니다). **승낙사항(4·184·185·186·189·197·208)을 요청하면 `contract.subject`(계약건명)가 필수입니다.** 서식 상단 \"건명\" 칸에 인쇄되는 값이라 비면 어느 계약의 승낙인지 알 수 없습니다. 그 외 추가 입력은 없습니다 — 갑(발주기관) 서명란은 `buyerId` 로, 을(공급사) 서명란은 `supplierId` 로 c-market 이 채웁니다. 발주기관이 기관 전용 승낙사항 서식을 쓰면 요청한 코드 그대로 응답하되 PDF 는 그 기관 서식으로 발급됩니다. **응답의 `fileUrl` 은 만료되지 않습니다.** 채팅 메시지 등에 그대로 저장해 두어도 됩니다. **생성 가능한 회원 범위:** 조회와 같습니다 — 이 API 키에 설정된 대행 범위 안의 회원만 가능합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수. --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidId}/contract-documents` 가 v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
811
1271
  * @summary 계약서류 생성
812
1272
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
813
1273
  * @param {CreateExternalContractDocumentsRequestDto} createExternalContractDocumentsRequestDto
@@ -816,7 +1276,27 @@ export declare class PartnerV2Api extends BaseAPI {
816
1276
  */
817
1277
  createExternalContractDocuments(idempotencyKey: string, createExternalContractDocumentsRequestDto: CreateExternalContractDocumentsRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<CreateExternalContractDocumentsResponseDto, any, {}>>;
818
1278
  /**
819
- * 무인증 — `fileKey` 자체가 capability 다(V5 `/download/{fileKey}` 같은 보안 모델). 파트너 응답의 `fileUrl`/`fullUrl` URL 가리킨다. 요청 시점에 서명하므로 URL저장해 두어도 만료되지 않는다. 응답은 실제 저장소 URL 로의 302 리다이렉트이며 리다이렉트 타깃은 1시간 만료되므로 302 자체를 캐시하지 것(`Cache-Control: no-store`).
1279
+ * 수신 주소와 구독할 이벤트를 등록합니다. **호출 시점:** 연동 초기 1회. 수신 주소가 바뀌면 새로 만들지 말고 `PATCH` 로 고치세요 그래야 시크릿과 전송 이력이 유지됩니다. **서명 시크릿은 이 응답에서 한 번만 나갑니다.** 서버는 해시만 보관하므로 조회로 다시 받을 수 없습니다. 응답의 `secret` 즉시 안전한 곳에 보관하세요. 잃어버렸다면 복구가 아니라 `POST /v2/webhook-endpoints/{endpointId}/rotate-secret` 으로 **재발급**해야 합니다. **거절되는 경우와 고치는 법:** - `400` — `url` 이 HTTPS 가 아니거나 형식이 잘못됨, `eventTypes` 가 비었거나 목록 밖 값 (`ping` 은 구독 불가). 값을 고쳐 재시도하세요. - `400` `Idempotency-Key` 헤더 누락/형식 오류. UUID v4 를 실어 보내세요. - `403` — 토큰에 `webhooks:write` 스코프가 없음. 키 발급 설정을 넓혀야 합니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. ### 서명 검증 (필수) 발송 요청마다 헤더 `X-CMarket-Signature` 가 실립니다. ``` X-CMarket-Signature: t=<unix초>,v1=<hex> ``` `v1` 은 `HMAC-SHA256(secret, \"${t}.${요청 본문 원문}\")` 소문자 hex 입니다. 1. 헤더를 `t` 와 `v1` 로 나눕니다. 2. `\"${t}.${본문}\"` 만듭니다. **본문은 파싱 원문 바이트**여야 합니다 JSON 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. 등록 시 받은 시크릿으로 HMAC-SHA256 을 계산해 `v1` 과 비교합니다. 비교는 **상수 시간** 비교 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `t` 가 현재 시각으로부터 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). ### 중복 제거 `X-CMarket-Event-Id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. ### 응답과 재시도 2xx 를 돌려주면 성공입니다. 그 외(또는 무응답)는 실패로 보고 최대 7회 재시도합니다 — 간격은 10초 → 1분 → 5분 → 30분 → 2시간 6시간 24시간 입니다. 처리 시간이 길면 먼저 2xx 를 돌려주고 비동기로 처리하세요. 연속 실패가 20회에 닿으면 구독이 자동으로 `DISABLED` 로 내려가고 발송이 멈춥니다. 수신측을 고친 뒤 `PATCH /v2/webhook-endpoints/{endpointId}` 에 `{\"status\":\"ACTIVE\"}` 로 되살리세요. ### 구독 가능한 이벤트 `bid.closed` · `bid.awarded` · `bid.failed` · `bid.canceled` · `bid.award_reverted` `ping` 은 연결 확인 전용이라 구독할 수 없습니다 — 테스트 발송 경로에서만 나갑니다. ### 놓친 이벤트 확인 `GET /v2/webhook-deliveries` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
1280
+ * @summary 웹훅 구독 등록
1281
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1282
+ * @param {CreateWebhookEndpointRequestDto} createWebhookEndpointRequestDto
1283
+ * @param {*} [options] Override http request option.
1284
+ * @throws {RequiredError}
1285
+ */
1286
+ createWebhookEndpoint(idempotencyKey: string, createWebhookEndpointRequestDto: CreateWebhookEndpointRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<CreateWebhookEndpoint201Response, any, {}>>;
1287
+ /**
1288
+ * 구독을 삭제합니다. 이후 그 주소로는 아무 이벤트도 발송되지 않습니다. **호출 시점:** 연동을 종료할 때. 잠시만 멈추려면 삭제하지 말고 `PATCH … {\"status\":\"DISABLED\"}` 를 쓰세요 — 시크릿과 이벤트 구성이 남아 그대로 되살릴 수 있습니다. **되돌릴 수 없습니다.** 다시 등록하면 새 구독이고 서명 시크릿도 새 값입니다. **`If-Match` 가 필수입니다.** `GET` 으로 받은 `ETag` 를 실어 보내세요. - `428` — 헤더 누락. 조회 후 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다(누군가 수정했거나 발송기가 상태를 내렸습니다). 다시 조회해 정말 지울 대상이 맞는지 확인하고 최신 `ETag` 로 재시도하세요. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
1289
+ * @summary 웹훅 구독 삭제
1290
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
1291
+ * @param {string} ifMatch
1292
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
1293
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1294
+ * @param {*} [options] Override http request option.
1295
+ * @throws {RequiredError}
1296
+ */
1297
+ deleteWebhookEndpoint(endpointId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<void, any, {}>>;
1298
+ /**
1299
+ * 무인증 — `fileKey` 자체가 capability 다(V5 `/download/{fileKey}` 와 같은 보안 모델). 파트너 응답의 `fileUrl`/`fullUrl` 이 이 URL 을 가리킨다. 요청 시점에 서명하므로 URL 을 저장해 두어도 만료되지 않는다. 응답은 실제 저장소 URL 로의 302 리다이렉트이며 리다이렉트 타깃은 1시간 뒤 만료되므로 302 자체를 캐시하지 말 것(`Cache-Control: no-store`). --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — `GET /v2/files/{fileKey}` 가 파일 메타와 `downloadUrl` 을 v2 응답 규약으로 돌려줍니다. 이 안정 URL 은 파트너 응답의 `fileUrl`/`fullUrl` 이 가리키는 주소라 계속 유지되며 중단 일정은 없습니다.
820
1300
  * @summary 파일 다운로드 — 안정 URL(302)
821
1301
  * @param {string} fileKey 파일 키 — UUIDv4 hex 32자. 업로드(&#x60;POST /v1|/v2/files&#x60;) 응답에서 받은 값.
822
1302
  * @param {*} [options] Override http request option.
@@ -830,7 +1310,15 @@ export declare class PartnerV2Api extends BaseAPI {
830
1310
  * @param {*} [options] Override http request option.
831
1311
  * @throws {RequiredError}
832
1312
  */
833
- getBid(bidId: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<BidDetailResponseDto, any, {}>>;
1313
+ getBid(bidId: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<GetBid200Response, any, {}>>;
1314
+ /**
1315
+ * 공고의 납품·검수·계약완료 진행 상태를 조회합니다. 검수완료 전송의 읽기 카운터파트입니다. **세 축은 서로 다른 사건입니다.** - `delivered`: 낙찰 공급사가 납품(결과확인)을 보고했습니다. - `confirmed`/`confirmedAt`: 발주기관이 검수를 확인했습니다. - `contractCompletedAt`: 검수완료 전송이 원장에 반영된 시각입니다. 검수완료 전송(`POST /v2/bids/{bidId}/acceptance`)이 성사되었는지는 `contractCompletedAt` 이 채워졌는지로 확인하세요. **필수 스코프:** `contracts:read`
1316
+ * @summary 검수 현황 조회
1317
+ * @param {string} bidId 공고 ID(&#x3D; backend bidId &#x3D; 등록 응답의 bidNo).
1318
+ * @param {*} [options] Override http request option.
1319
+ * @throws {RequiredError}
1320
+ */
1321
+ getBidAcceptance(bidId: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<GetBidAcceptance200Response, any, {}>>;
834
1322
  /**
835
1323
  * 공고의 응찰 참여 업체·순위·낙찰 여부를 조회한다. scope bids:read.
836
1324
  * @summary 입찰 결과 조회
@@ -838,24 +1326,32 @@ export declare class PartnerV2Api extends BaseAPI {
838
1326
  * @param {*} [options] Override http request option.
839
1327
  * @throws {RequiredError}
840
1328
  */
841
- getBidResults(bidId: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<BidResultsResponseDto, any, {}>>;
1329
+ getBidResults(bidId: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<GetBidResults200Response, any, {}>>;
842
1330
  /**
843
- * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회한다. scope bids:read. 가시성 마스킹과 직교한 정산 데이터 — read-only.
1331
+ * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 가시성 마스킹과는 직교한 정산 데이터이며 읽기 전용입니다. **필수 스코프:** `invoices:read` 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
844
1332
  * @summary 입찰결과 정산정보 조회
845
1333
  * @param {string} bidId
846
1334
  * @param {*} [options] Override http request option.
847
1335
  * @throws {RequiredError}
848
1336
  */
849
- getBidSettlement(bidId: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<BidSettlementResponseDto, any, {}>>;
1337
+ getBidSettlement(bidId: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<GetBidSettlement200Response, any, {}>>;
850
1338
  /**
851
- * 낙찰 계약의 거래명세서(문서·품목 라인)를 조회한다. scope contracts:read.
1339
+ * 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
852
1340
  * @summary 거래명세서 조회
853
1341
  * @param {string} bidId
854
1342
  * @param {number} [paperCode]
855
1343
  * @param {*} [options] Override http request option.
856
1344
  * @throws {RequiredError}
857
1345
  */
858
- getBidStatement(bidId: string, paperCode?: number, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<BidStatementResponseDto, any, {}>>;
1346
+ getBidStatement(bidId: string, paperCode?: number, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<GetBidStatement200Response, any, {}>>;
1347
+ /**
1348
+ * 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **구 경로:** 버전 없는 `GET /files/{fileKey}` 는 만료 없는 안정 주소이고 파트너 응답의 `fileUrl`/`fullUrl` 이 그 값을 가리킵니다. 인증도 스코프도 없는 옛 표면이라 신규 연동은 이 엔드포인트를 쓰세요. 구 경로는 당분간 유지됩니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** 하이픈 없는 16진수 32자가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. **필수 스코프:** `files:read`
1349
+ * @summary 파일 조회(메타 + 내려받기 주소)
1350
+ * @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(하이픈 없는 16진수 32자).
1351
+ * @param {*} [options] Override http request option.
1352
+ * @throws {RequiredError}
1353
+ */
1354
+ getFileMeta(fileKey: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<GetFileMeta200Response, any, {}>>;
859
1355
  /**
860
1356
  * 등록한 계약의 계산서 발행 상태를 확인합니다. **언제 쓰나:** 씨마켓이 보내는 발행완료 통지를 놓쳤을 때의 **복구 경로**입니다. 평상시에는 통지를 받아 처리하고, 상태가 어긋난 것 같을 때 이 API 로 되읽으세요. **필수 스코프:** `contracts:read`
861
1357
  * @summary 계산서 발행 상태 조회
@@ -865,30 +1361,60 @@ export declare class PartnerV2Api extends BaseAPI {
865
1361
  */
866
1362
  getSemoContractTaxinvoiceStatus(externalContractId: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<SemoContractTaxinvoiceStatusResponseDto, any, {}>>;
867
1363
  /**
868
- * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write`
1364
+ * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
869
1365
  * @summary 공급사 카드결제 가능 여부
870
1366
  * @param {string} memberId 계약업체 회원 ID
871
1367
  * @param {*} [options] Override http request option.
872
1368
  * @throws {RequiredError}
873
1369
  */
874
1370
  getSupplierCardPayable(memberId: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<SupplierCardPayableResponseDto, any, {}>>;
1371
+ /**
1372
+ * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
1373
+ * @summary 공급사 카드결제 가능 여부
1374
+ * @param {string} memberId 계약업체 회원 ID
1375
+ * @param {*} [options] Override http request option.
1376
+ * @throws {RequiredError}
1377
+ */
1378
+ getSupplierCardPayableV2(memberId: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<GetSupplierCardPayableV2200Response, any, {}>>;
1379
+ /**
1380
+ * 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
1381
+ * @summary 웹훅 구독 단건 조회
1382
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
1383
+ * @param {*} [options] Override http request option.
1384
+ * @throws {RequiredError}
1385
+ */
1386
+ getWebhookEndpoint(endpointId: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<GetWebhookEndpoint200Response, any, {}>>;
875
1387
  /**
876
1388
  * ERP 연동 직전 회선·인증 endpoint 동작 확인용.
877
1389
  * @summary Partner API 헬스체크
878
1390
  * @param {*} [options] Override http request option.
879
1391
  * @throws {RequiredError}
880
1392
  */
881
- healthControllerCheck(options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<HealthResponseDto, any, {}>>;
1393
+ healthControllerCheck(options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<HealthControllerCheck200Response, any, {}>>;
882
1394
  /**
883
- * 낙찰 공급사가 확정된 공고에 대해 세금계산서를 발행합니다. **호출 시점:** 낙찰자 선정(계약진행) 이후. 과세/면세를 자동 분리해 발행합니다. **부수효과:** - 세금계산서가 국세청에 발행되고 공고가 발행 완료로 마킹됩니다. - 이미 발행됐거나 분할 청구가 진행 중이면 409 거절됩니다. **소유권:** 발행 대상 공고가 API 키에 바인딩된 발주처 소유가 아니면 403. **분할 청구:** 세금계산서 **분할 발급**은 `/v2` 제공되지 않습니다 `/v1` 전용(`POST /v1/invoices/split-requests`)입니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 + 동일 body 재전송 24시간 캐시 응답 반환.
884
- * @summary 세금계산서 발행
1395
+ * 공고의 계약서류 목록과 내려받기 주소를 조회합니다. **목록에 실리는 것:** 공고 전체에 공통인 서류(약관·자동생성 공통본) 낙찰자에게 귀속된 서류를 함께 싣습니다. 낙찰자 귀속 서류는 `winnerSequence` 낙찰자의 응찰 순번이 들어갑니다. **아직 없는 서류도 실립니다.** 공고가 제출을 요구했지만 아직 올라오지 않은 서류는 `fileKey: null` 나타나므로, 제출 여부는 값으로 판정하세요. **자동생성 서류:** `autoGenerated: true` 서류는 c-market 만들어 줍니다. 만드는 중이면 `generationState` `QUEUED`/`PROCESSING` 이고 `downloadUrl` 아직 없습니다. `DEAD_LETTER` 는 생성이 실패해 멈춘 상태이며, 같은 경로의 POST(재생성)로 다시 큐에 올립니다. **내려받기:** `downloadUrl` 유효기간 1시간의 서명 주소입니다. 저장해 두고 재사용하지 마시고 필요할 엔드포인트를 다시 호출하세요. 기간에 얽매이지 않으려면 `fileKey` 를 보관하시고 파일 내려받기 경로를 사용하세요. **보이는 범위:** 서버가 공고 낙찰방법과 진행 단계로 결정합니다. 응답을 그대로 사용하시고 클라이언트에서 다시 거르지 마세요. **필수 스코프:** `contracts:read`
1396
+ * @summary 계약서류 목록 조회
1397
+ * @param {string} bidId 공고번호(buy_idx, 예 CM…) 또는 외부 구매번호(bid_puchase_no).
1398
+ * @param {*} [options] Override http request option.
1399
+ * @throws {RequiredError}
1400
+ */
1401
+ listBidContractDocuments(bidId: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ListBidContractDocuments200Response, any, {}>>;
1402
+ /**
1403
+ * 공고에 응찰한 업체 목록을 조회합니다. 스코프 `bids:read` 필수. **보이는 범위는 공고의 낙찰방법과 진행 단계가 결정합니다.** 개찰 전에는 업체명이 가려지고 (`companyName: null`), 순위는 산정 전까지 `null` 입니다. 이 판정은 서버가 소유하므로 응답을 그대로 사용하시고 클라이언트에서 다시 계산하지 마세요. 같은 목록이 `GET /v2/bids/{bidId}` 응답의 `participants` 에도 실립니다 — 응찰 현황만 필요하면 이 엔드포인트가 가볍습니다.
1404
+ * @summary 응찰 현황 조회
885
1405
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
886
- * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
887
- * @param {IssueTaxInvoiceRequestDto} issueTaxInvoiceRequestDto
888
1406
  * @param {*} [options] Override http request option.
889
1407
  * @throws {RequiredError}
890
1408
  */
891
- issueTaxInvoice(bidId: string, idempotencyKey: string, issueTaxInvoiceRequestDto: IssueTaxInvoiceRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<TaxInvoiceIssuedResponseDto, any, {}>>;
1409
+ listBidParticipants(bidId: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ListBidParticipants200Response, any, {}>>;
1410
+ /**
1411
+ * 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에는 `ETag` 가 실리므로, 다음 요청에 `If-None-Match` 로 되보내면 결과가 그대로일 때 `304` 를 본문 없이 받습니다 — 마감을 기다리는 동안의 전송량이 사라집니다. **식별자 전달:** `?bidIds=A,B,C`(쉼표) 또는 `?bidIds=A&bidIds=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다 — 요청한 건수와 받은 건수가 다를 수 있으니 `bidId` 로 대조하세요. **목록이 길어 URL 이 부담되면** `POST /v2/bid-results/query` 를 쓰세요. 응답은 같습니다.
1412
+ * @summary 입찰 결과 배치 조회
1413
+ * @param {string} bidIds 조회할 공고 식별자 목록. 쉼표로 구분하거나 &#x60;bidIds&#x60; 를 반복해 전달합니다. 최대 100건.
1414
+ * @param {*} [options] Override http request option.
1415
+ * @throws {RequiredError}
1416
+ */
1417
+ listBidResults(bidIds: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ListBidResults200Response, any, {}>>;
892
1418
  /**
893
1419
  * 발주처(API 키 바인딩)의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(쿼리에 buyerId 를 넣지 않습니다). **페이지네이션(cursor):** `limit`(1~100, 기본 100) + `cursor`(불투명 토큰). 응답의 `nextCursor` 를 다음 요청 `cursor` 로 전달하면 다음 페이지를 받습니다. `nextCursor=null` 이면 마지막 페이지입니다. **상태·낙찰방법:** 공개값(의미 문자열)으로 반환됩니다. 낙찰 여부는 상태가 아니라 낙찰 결과 조회의 `participants[].isWinner` 로 관측합니다(AWARDED 상태는 없습니다).
894
1420
  * @summary 공고 목록 조회
@@ -900,9 +1426,9 @@ export declare class PartnerV2Api extends BaseAPI {
900
1426
  * @param {*} [options] Override http request option.
901
1427
  * @throws {RequiredError}
902
1428
  */
903
- listBids(limit?: number, cursor?: string, bidIds?: Array<string>, status?: Array<BidPublicStatus>, include?: Array<ListBidsIncludeEnum>, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ListBidsResponseDto, any, {}>>;
1429
+ listBids(limit?: number, cursor?: string, bidIds?: Array<string>, status?: Array<BidPublicStatus>, include?: Array<ListBidsIncludeEnum>, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ListBids200Response, any, {}>>;
904
1430
  /**
905
- * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read`
1431
+ * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidId}/contract-documents` 가 v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
906
1432
  * @summary 거래에 필요한 계약서류 목록 조회
907
1433
  * @param {string} buyerId 발주기관 회원 ID(c-market memberId).
908
1434
  * @param {ListExternalContractDocumentsBidTypeEnum} bidType 거래유형.
@@ -910,6 +1436,31 @@ export declare class PartnerV2Api extends BaseAPI {
910
1436
  * @throws {RequiredError}
911
1437
  */
912
1438
  listExternalContractDocuments(buyerId: string, bidType: ListExternalContractDocumentsBidTypeEnum, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ExternalContractDocumentsResponseDto, any, {}>>;
1439
+ /**
1440
+ * 기관에 공유된 물품 중 **아직 전송되지 않은 것**을 조회합니다. **증분 피드입니다.** 가져간 물품을 `POST /v2/products/receipts` 로 수신확인하면 다음 조회 결과에서 빠집니다. 수신확인을 하지 않으면 같은 물품이 계속 내려옵니다. **권장 흐름:** 조회 → 자기 시스템에 저장 → 저장에 성공한 물품 코드만 수신확인. 저장 전에 수신확인하면 그 물품은 다시 받을 수 없습니다. **조회 범위:** 요청 키가 대행하는 기관 그룹입니다. 기관 그룹이 설정되지 않은 키는 403 입니다. **필수 스코프:** `products:read`
1441
+ * @summary 물품 카탈로그 조회
1442
+ * @param {*} [options] Override http request option.
1443
+ * @throws {RequiredError}
1444
+ */
1445
+ listProducts(options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ListProducts200Response, any, {}>>;
1446
+ /**
1447
+ * 이 API 키의 웹훅 발송 시도를 최신순으로 조회합니다. 보낸 본문·수신측 응답 상태· 다음 재시도 예정 시각이 함께 실립니다. **호출 시점:** - 수신측 장애로 놓친 이벤트를 메울 때. 이 엔드포인트가 웹훅의 **폴링 대체 경로**입니다 — `status=EXHAUSTED` 로 걸러 다시 처리하면 됩니다. - \"이벤트가 안 온다\" 를 진단할 때. 발송 시도 자체가 없는지(구독·이벤트 타입 문제), 시도했지만 실패했는지(`responseStatus`·`responseBodyExcerpt`)를 여기서 가릅니다. **같은 이벤트가 여러 행으로 보입니다.** 재시도마다 한 행이며 `eventId` 가 같고 `attempt` 만 올라갑니다. 처리 여부는 `eventId` 기준으로 판단하세요. **페이지네이션:** `nextCursor` 를 다음 요청의 `cursor` 로 전달합니다. null 이면 마지막 페이지입니다. **`400`:** `status` 가 허용 값 밖이거나 `limit` 이 범위를 벗어났습니다 — 값을 고쳐 재시도하세요. **필수 스코프:** `webhooks:read`
1448
+ * @summary 웹훅 전송 이력 조회
1449
+ * @param {string} [endpointId] 이 구독의 전송만 조회합니다. 미지정이면 이 키의 모든 구독을 함께 조회합니다.
1450
+ * @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
1451
+ * @param {number} [limit] 페이지 크기(1~200, 기본 50).
1452
+ * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달합니다. 미지정 시 첫 페이지.
1453
+ * @param {*} [options] Override http request option.
1454
+ * @throws {RequiredError}
1455
+ */
1456
+ listWebhookDeliveries(endpointId?: string, status?: PartnerWebhookDeliveryStatus, limit?: number, cursor?: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ListWebhookDeliveries200Response, any, {}>>;
1457
+ /**
1458
+ * 이 API 키가 등록한 웹훅 구독을 모두 조회합니다. **호출 시점:** 연동 상태를 점검할 때, 또는 발송이 멈춘 이유(`status`·`consecutiveFailures`)를 확인할 때. 서명 시크릿은 여기에 실리지 않습니다. **필수 스코프:** `webhooks:read` ### 서명 검증 (필수) 발송 요청마다 헤더 `X-CMarket-Signature` 가 실립니다. ``` X-CMarket-Signature: t=<unix초>,v1=<hex> ``` `v1` 은 `HMAC-SHA256(secret, \"${t}.${요청 본문 원문}\")` 의 소문자 hex 입니다. 1. 헤더를 `t` 와 `v1` 로 나눕니다. 2. `\"${t}.${본문}\"` 을 만듭니다. **본문은 파싱 전 원문 바이트**여야 합니다 — JSON 을 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. 등록 시 받은 시크릿으로 HMAC-SHA256 을 계산해 `v1` 과 비교합니다. 비교는 **상수 시간** 비교 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `t` 가 현재 시각으로부터 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). ### 중복 제거 `X-CMarket-Event-Id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. ### 응답과 재시도 2xx 를 돌려주면 성공입니다. 그 외(또는 무응답)는 실패로 보고 최대 7회 재시도합니다 — 간격은 10초 → 1분 → 5분 → 30분 → 2시간 → 6시간 → 24시간 입니다. 처리 시간이 길면 먼저 2xx 를 돌려주고 비동기로 처리하세요. 연속 실패가 20회에 닿으면 구독이 자동으로 `DISABLED` 로 내려가고 발송이 멈춥니다. 수신측을 고친 뒤 `PATCH /v2/webhook-endpoints/{endpointId}` 에 `{\"status\":\"ACTIVE\"}` 로 되살리세요. ### 구독 가능한 이벤트 `bid.closed` · `bid.awarded` · `bid.failed` · `bid.canceled` · `bid.award_reverted` `ping` 은 연결 확인 전용이라 구독할 수 없습니다 — 테스트 발송 경로에서만 나갑니다. ### 놓친 이벤트 확인 `GET /v2/webhook-deliveries` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
1459
+ * @summary 웹훅 구독 목록 조회
1460
+ * @param {*} [options] Override http request option.
1461
+ * @throws {RequiredError}
1462
+ */
1463
+ listWebhookEndpoints(options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ListWebhookEndpoints200Response, any, {}>>;
913
1464
  /**
914
1465
  * 공고를 유찰 상태로 전환합니다. **호출 시점:** 입찰 마감 후 유찰 사유가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 공고 상태가 유찰(FAILED)로 전환됩니다. - 유찰사유 코드와 상세가 기록됩니다. **유찰사유 값 목록(failureReasonCode — 공개값):** | 값 | 의미 | |------|------| | `ABOVE_TARGET_PRICE` | 예정가격 초과 | | `DEPT_MISMATCH` | 자격 미달 | | `NEEDS_EXPERTISE` | 전문성 필요 | | `OTHER` | 기타 (`failureReasonDetail` 필수) | | `NO_PARTICIPANT` | 참가자 없음 | | `SINGLE_PARTICIPANT` | 단독 참가 | | `LESS_THAN_TWO` | 2인 미만 | | `BELOW_MINIMUM` | 최저가 미달 | **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body 에 buyerId 를 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수.
915
1466
  * @summary 유찰 처리
@@ -919,7 +1470,7 @@ export declare class PartnerV2Api extends BaseAPI {
919
1470
  * @param {*} [options] Override http request option.
920
1471
  * @throws {RequiredError}
921
1472
  */
922
- markBidFailed(bidId: string, idempotencyKey: string, markBidFailedRequestDto: MarkBidFailedRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<BidFailedV2ResponseDto, any, {}>>;
1473
+ markBidFailed(bidId: string, idempotencyKey: string, markBidFailedRequestDto: MarkBidFailedRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<MarkBidFailed201Response, any, {}>>;
923
1474
  /**
924
1475
  * 초안(DRAFT) 상태로 등록된 공고를 진행중(ONGOING)으로 게시합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. **호출 시점:** 연간/지명계약 등으로 초안 상태로 등록된 공고를 명시적으로 게시할 때. 등록 응답의 `status` 로 게시 필요 여부를 판별합니다. **전제조건:** 초안(DRAFT) 상태이고 마감(bidEndAt)이 미래여야 합니다. **거부:** 초안이 아니거나 마감이 지난 공고 → 409. 마감이 지났으면 먼저 마감일을 연장해야 합니다. **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403). **멱등성:** `Idempotency-Key` 헤더 필수.
925
1476
  * @summary 공고 게시(초안 → 진행중)
@@ -928,7 +1479,15 @@ export declare class PartnerV2Api extends BaseAPI {
928
1479
  * @param {*} [options] Override http request option.
929
1480
  * @throws {RequiredError}
930
1481
  */
931
- publishBid(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<BidPublishedResponseDto, any, {}>>;
1482
+ publishBid(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PublishBid200Response, any, {}>>;
1483
+ /**
1484
+ * `GET /v2/bid-results` 와 **완전히 같은 조회**이며, 식별자 목록을 본문으로 받습니다. 스코프 `bids:read`. 공고 식별자 100건이면 URL 이 1KB를 넘습니다 — 중간 프록시가 긴 URL 을 자르는 환경을 위한 대체 경로입니다. **부수효과가 없으므로 `Idempotency-Key` 는 필요하지 않습니다.** POST 인 것은 전송 형태의 문제일 뿐이며, 가능하면 캐시·`ETag` 가 동작하는 `GET` 쪽을 쓰세요.
1485
+ * @summary 입찰 결과 배치 조회 (본문 전달)
1486
+ * @param {BidResultsBatchRequestDto} bidResultsBatchRequestDto
1487
+ * @param {*} [options] Override http request option.
1488
+ * @throws {RequiredError}
1489
+ */
1490
+ queryBidResults(bidResultsBatchRequestDto: BidResultsBatchRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ListBidResults200Response, any, {}>>;
932
1491
  /**
933
1492
  * 공고의 자동생성 계약서류(발주서·공고결과·표준계약서 등)를 생성/재생성합니다. **V6 대응:** `RegenerateAllContractPdfsCommand` — 웹 어드민의 \"계약 서류 일괄 재생성\"과 동일 경로. **호출 시점:** 낙찰(계약 시작) 후 계약서류가 필요하거나, 생성에 실패한 서류를 다시 만들 때. **부수효과:** - 생성 실패(DEAD_LETTER) 상태의 자동생성 PDF 가 재생성 큐에 등록됩니다(비동기). - 승낙사항(ACCEPTANCE) 계열은 운영자 승인 워크플로가 필요해 이 경로에서 제외됩니다. **응답:** 즉시 파일이 아니라 큐 등록 결과(`enqueuedCount`/`skippedCount`)를 반환합니다. 잠시 후 자동 생성됩니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
934
1493
  * @summary 계약서류 생성(재생성)
@@ -937,7 +1496,7 @@ export declare class PartnerV2Api extends BaseAPI {
937
1496
  * @param {*} [options] Override http request option.
938
1497
  * @throws {RequiredError}
939
1498
  */
940
- regenerateContractDocuments(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ContractDocumentsRegeneratedResponseDto, any, {}>>;
1499
+ regenerateContractDocuments(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<RegenerateContractDocuments201Response, any, {}>>;
941
1500
  /**
942
1501
  * 낙찰 결과를 등록합니다. 이 요청의 응답은 처리 상태 `AWARDED` 를 반환합니다. **호출 시점:** 입찰 마감 후 낙찰자가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 낙찰자(공급사)의 응찰 건이 낙찰 처리됩니다. - 이후 **공고의 조회 상태(status)는 계약진행(CONTRACT_IN_PROGRESS)** 으로 진행합니다. `AWARDED` 라는 공고 status 는 존재하지 않으므로, 낙찰 여부는 `GET /v2/bids/{bidId}/results` 의 `participants[].isWinner` 또는 `GET /v2/bids/{bidId}` 의 status(=계약진행)로 관측하세요(`status === \'AWARDED\'` 폴링 금지). - 협상 방식(NEGOTIATION/NEGOTIATION_AUTO) 공고는 이 엔드포인트 전에 `POST /v2/bids/{bidId}/negotiation-scores`(협상 점수평가)로 평가를 완료해야 합니다. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body 에 buyerId 를 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 키 + 동일 body 재전송 시 24시간 내 캐시 응답 반환.
943
1502
  * @summary 낙찰 결과 전송
@@ -947,15 +1506,16 @@ export declare class PartnerV2Api extends BaseAPI {
947
1506
  * @param {*} [options] Override http request option.
948
1507
  * @throws {RequiredError}
949
1508
  */
950
- registerAward(bidId: string, idempotencyKey: string, registerAwardRequestDto: RegisterAwardRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AwardRegisteredV2ResponseDto, any, {}>>;
1509
+ registerAward(bidId: string, idempotencyKey: string, registerAwardRequestDto: RegisterAwardRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<RegisterAward201Response, any, {}>>;
951
1510
  /**
952
1511
  * 입찰 정보 등록. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수.
953
1512
  * @summary 입찰 정보 전송(등록)
1513
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
954
1514
  * @param {CreateBidRequestDto} createBidRequestDto
955
1515
  * @param {*} [options] Override http request option.
956
1516
  * @throws {RequiredError}
957
1517
  */
958
- registerBid(createBidRequestDto: CreateBidRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<BidRegisteredResponseDto, any, {}>>;
1518
+ registerBid(idempotencyKey: string, createBidRequestDto: CreateBidRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<RegisterBid201Response, any, {}>>;
959
1519
  /**
960
1520
  * 외부에서 맺어진 계약 1건을 씨마켓의 **세금계산서 발행 대상**으로 등록합니다. **등록 후 동선:** 발주기관이 씨마켓 [나의 계약 관리] 에서 계산서 발급을 요청하고, 공급기업이 같은 화면에서 발행합니다. 계산서의 **공급자는 공급기업, 공급받는자는 발주기관**입니다. **대금 흐름:** 씨마켓은 이 거래의 대금을 받지 않습니다 — 발행 경로만 제공합니다. **금액:** `supplyPrice` 는 **부가세를 뺀 과세 공급가액**입니다(결제창 API 가 부가세 포함가를 받는 것과 다릅니다). 과세·면세 공급가액이 모두 0 이면 400 입니다. **사전 조건:** 두 회원 ID 가 씨마켓에 실재해야 합니다. 회원 ID 가 곧 소유권이라, 없는 회원으로 등록하면 아무도 열 수 없는 계산서 대상이 됩니다. **필수 스코프:** `contracts:write`. 바인딩된 발주처 외의 발주기관을 대신하려면 대행 범위에 그 회원이 있어야 합니다. **멱등성:** `externalContractId` 가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 대상을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
961
1521
  * @summary 계약 발행대상 등록
@@ -966,25 +1526,57 @@ export declare class PartnerV2Api extends BaseAPI {
966
1526
  */
967
1527
  registerSemoContract(idempotencyKey: string, registerSemoContractRequestDto: RegisterSemoContractRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<SemoContractRegisteredResponseDto, any, {}>>;
968
1528
  /**
969
- * 협상방식(NEGOTIATION/NEGOTIATION_AUTO) 공고의 응찰자별 점수를 입력합니다. **호출 시점:** 입찰 마감 낙찰(`POST /v2/bids/{bidId}/award`) 전. 협상방식 공고는 평가를 완료해야 낙찰에 진입할 수 있습니다. **부수효과:** - 응찰자별 기술점수(및 선택적 가격점수 override)가 기록됩니다. - `complete=true` 평가완료 게이트까지 적용돼 낙찰 진입이 가능해집니다. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body buyerId 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 + 동일 body 재전송 24시간 캐시 응답 반환.
970
- * @summary 협상 점수평가
1529
+ * 확정된 낙찰을 되돌려 공고를 낙찰대기(PENDING_AWARD) 상태로 보냅니다. 스코프 `awards:write` + `Idempotency-Key` 헤더 필수. **호출 시점:** 낙찰자가 계약을 포기했거나 낙찰 처리 자체가 잘못됐을 때. 되돌린 같은 공고에 다시 낙찰을 등록할 수 있습니다. **되돌릴 없는 경우 409:** - 수수료 결제가 이미 완료된 공고 - 세금계산서가 이미 발행된 공고 - 수입권공매 계열 낙찰방법(다수 낙찰자 구조라 되돌리기 단위가 다릅니다) **사유는 필수입니다** 감사 대상 행위이며 공고 이력에 남습니다. **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
1530
+ * @summary 낙찰 되돌리기
971
1531
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
1532
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
1533
+ * @param {RevertAwardRequestDto} revertAwardRequestDto
1534
+ * @param {*} [options] Override http request option.
1535
+ * @throws {RequiredError}
1536
+ */
1537
+ revertAward(bidId: string, idempotencyKey: string, revertAwardRequestDto: RevertAwardRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<RevertAward200Response, any, {}>>;
1538
+ /**
1539
+ * 서명 시크릿을 새로 발급합니다. 응답의 `secretVersion` 이 1 올라갑니다. **호출 시점:** 시크릿을 분실했거나 유출이 의심될 때, 또는 주기적 교체 정책이 있을 때. **새 시크릿은 이 응답에서 한 번만 나갑니다.** 조회로 다시 받을 수 없습니다. **옛 시크릿은 즉시 무효입니다.** 유예 기간이 없으므로, 수신측이 새 값을 반영하기 전에 도착한 이벤트는 서명 검증에 실패합니다. 배포 순서를 이렇게 잡으세요 — ① 수신측이 옛 값과 새 값을 **둘 다** 받아들이도록 배포 → ② 이 엔드포인트 호출 → ③ 응답의 새 값을 반영 → ④ 옛 값 제거. 검증 실패로 non-2xx 를 돌려주면 실패로 집계되어 20회 연속 시 구독이 중지됩니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 같은 키로 재전송하면 **새로 발급하지 않고** 처음 발급한 값을 그대로 돌려줍니다(24시간) — 네트워크 오류로 응답을 놓쳤을 때 같은 키로 다시 부르세요.
1540
+ * @summary 웹훅 서명 시크릿 재발급
1541
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
972
1542
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
973
- * @param {SubmitNegotiationScoresRequestDto} submitNegotiationScoresRequestDto
974
1543
  * @param {*} [options] Override http request option.
975
1544
  * @throws {RequiredError}
976
1545
  */
977
- submitNegotiationScores(bidId: string, idempotencyKey: string, submitNegotiationScoresRequestDto: SubmitNegotiationScoresRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<NegotiationScoredV2ResponseDto, any, {}>>;
1546
+ rotateWebhookSecret(endpointId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<CreateWebhookEndpoint201Response, any, {}>>;
1547
+ /**
1548
+ * 등록된 주소로 `ping` 이벤트를 즉시 1회 보내고 그 결과를 돌려줍니다. **호출 시점:** 구독을 등록한 직후, 수신 주소를 바꾼 직후, 방화벽·인증서를 손본 뒤. **응답은 발송 결과이지 요청 실패가 아닙니다.** 수신측이 받지 못해도 HTTP `200` 에 `delivered: false` 로 옵니다 — `responseStatus`(수신측 상태)와 `error`(연결 거부·타임아웃· TLS 오류)를 보고 원인을 좁히세요. 이 발송에도 실제 이벤트와 **똑같은 서명 헤더**가 실리므로 검증 코드를 그대로 시험할 수 있습니다. `ping` 은 구독 목록에 넣을 수 없는 타입이니, 수신측이 모르는 `eventType` 을 만나면 버리도록 짜여 있다면 이 확인만 실패할 수 있습니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 다시 보내려면 **새 키**를 쓰세요 — 같은 키는 24시간 동안 직전 결과를 그대로 돌려줍니다(재발송하지 않습니다).
1549
+ * @summary 웹훅 연결 확인 발송
1550
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
1551
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1552
+ * @param {*} [options] Override http request option.
1553
+ * @throws {RequiredError}
1554
+ */
1555
+ sendWebhookTestEvent(endpointId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<SendWebhookTestEvent200Response, any, {}>>;
978
1556
  /**
979
1557
  * 등록된 공고의 내용을 수정합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. 진행중/초안 상태의 공고만 수정할 수 있습니다. **부수효과:** - 변경 내용이 반영되고 수정이력이 기록됩니다. - `hideEdit=true` 면 변경이력을 비공개 처리하고 노출 카운터 증가를 생략합니다. **수정 제약:** - 낙찰방법(awardMethod)은 수정 불가(잠금). - 참여자가 있으면 입찰방식/면허/예산/품목 일부가 잠깁니다. - 마감/취소된 공고는 수정할 수 없습니다. 한 섹션을 수정하려면 해당 섹션의 필수 필드를 함께 보내야 합니다(부분 섹션은 거부됨).
980
1558
  * @summary 입찰 공고 수정
981
1559
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
1560
+ * @param {string} ifMatch
1561
+ * @param {string} ifMatch2 수정하려는 공고의 ETag(필수). 직전 &#x60;GET /v2/bids/{bidId}&#x60; 응답의 &#x60;ETag&#x60; 헤더 값을 그대로 실어 보내세요. 누락하면 428, 그 사이 공고가 바뀌었으면 412 로 거절되며 아무것도 수정되지 않습니다.
982
1562
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
983
1563
  * @param {UpdateBidRequestDto} updateBidRequestDto
984
1564
  * @param {*} [options] Override http request option.
985
1565
  * @throws {RequiredError}
986
1566
  */
987
- updateBid(bidId: string, idempotencyKey: string, updateBidRequestDto: UpdateBidRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<BidUpdatedResponseDto, any, {}>>;
1567
+ updateBid(bidId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, updateBidRequestDto: UpdateBidRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<UpdateBid200Response, any, {}>>;
1568
+ /**
1569
+ * 수신 주소·구독 이벤트·상태를 수정합니다. 보낸 필드만 바뀝니다. **호출 시점:** 수신 주소가 바뀌었을 때, 구독 이벤트를 늘리거나 줄일 때, 연속 실패로 자동 중지된 구독을 고친 뒤 되살릴 때(`{\"status\":\"ACTIVE\"}`). **`eventTypes` 는 치환입니다** — 보낸 목록이 곧 새 구독 목록입니다. 하나를 더하려면 기존 목록에 더한 **전체**를 보내세요. **`If-Match` 가 필수입니다.** 먼저 `GET /v2/webhook-endpoints/{endpointId}` 로 현재 `ETag` 를 받아 그대로 실어 보내세요. 이 헤더가 없으면 두 요청이 앞서거니 뒤서거니 하며 먼저 한 수정을 조용히 덮어씁니다. - `428` — 헤더를 빼먹었습니다. 조회 후 `ETag` 를 실어 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다. 다시 조회해 최신 `ETag` 로 재시도하세요. 아무것도 수정되지 않았습니다. **시크릿은 이 경로로 바뀌지 않습니다** — 재발급은 `rotate-secret` 입니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
1570
+ * @summary 웹훅 구독 수정
1571
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
1572
+ * @param {string} ifMatch
1573
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
1574
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1575
+ * @param {UpdateWebhookEndpointRequestDto} updateWebhookEndpointRequestDto
1576
+ * @param {*} [options] Override http request option.
1577
+ * @throws {RequiredError}
1578
+ */
1579
+ updateWebhookEndpoint(endpointId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, updateWebhookEndpointRequestDto: UpdateWebhookEndpointRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<GetWebhookEndpoint200Response, any, {}>>;
988
1580
  /**
989
1581
  * 스코프 `files:write` + `Idempotency-Key` 헤더 필수. base64 또는 url 중 정확히 하나를 제출한다.
990
1582
  * @summary 입찰 첨부파일 업로드(base64 또는 url) → fileKey
@@ -992,7 +1584,7 @@ export declare class PartnerV2Api extends BaseAPI {
992
1584
  * @param {*} [options] Override http request option.
993
1585
  * @throws {RequiredError}
994
1586
  */
995
- uploadFile(uploadFileRequestDto: UploadFileRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<FileUploadedResponseDto, any, {}>>;
1587
+ uploadFile(uploadFileRequestDto: UploadFileRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<UploadFile201Response, any, {}>>;
996
1588
  }
997
1589
  export declare const ListBidsIncludeEnum: {
998
1590
  readonly Results: "results";