@cmarket/partner-sdk 25.1.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 (975) hide show
  1. package/README.md +86 -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 +1627 -260
  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 +783 -172
  15. package/dist/api/partner-v2-api.js +1530 -254
  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 +783 -172
  31. package/dist/esm/api/partner-v2-api.js +1529 -253
  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 +25 -0
  75. package/dist/esm/models/bid-contact-dto.js +14 -0
  76. package/dist/esm/models/bid-contacts-dto.d.ts +22 -0
  77. package/dist/esm/models/bid-contacts-dto.js +14 -0
  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 +33 -0
  87. package/dist/esm/models/bid-delivery-terms-dto.js +14 -0
  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 +21 -0
  113. package/dist/esm/models/bid-payment-terms-dto.js +14 -0
  114. package/dist/esm/models/bid-product-dto.d.ts +37 -0
  115. package/dist/esm/models/bid-product-dto.js +14 -0
  116. package/dist/esm/models/bid-public-status.d.ts +2 -5
  117. package/dist/esm/models/bid-public-status.js +2 -5
  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 +39 -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 +59 -8
  237. package/dist/esm/models/index.js +59 -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 +25 -0
  403. package/dist/models/bid-contact-dto.js +15 -0
  404. package/dist/models/bid-contacts-dto.d.ts +22 -0
  405. package/dist/models/bid-contacts-dto.js +15 -0
  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 +33 -0
  415. package/dist/models/bid-delivery-terms-dto.js +15 -0
  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 +21 -0
  441. package/dist/models/bid-payment-terms-dto.js +15 -0
  442. package/dist/models/bid-product-dto.d.ts +37 -0
  443. package/dist/models/bid-product-dto.js +15 -0
  444. package/dist/models/bid-public-status.d.ts +2 -5
  445. package/dist/models/bid-public-status.js +2 -5
  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 +39 -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 +59 -8
  565. package/dist/models/index.js +59 -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/BidContactDto.md +24 -0
  705. package/docs/BidContactsDto.md +22 -0
  706. package/docs/BidContractDocumentDto.md +38 -0
  707. package/docs/BidDeliveryTermsDto.md +28 -0
  708. package/docs/BidPaymentTermsDto.md +22 -0
  709. package/docs/BidProductDto.md +30 -0
  710. package/docs/BidPublicStatus.md +0 -1
  711. package/docs/{IssueTaxInvoiceRequestDto.md → BidResultsBatchRequestDto.md} +5 -5
  712. package/docs/BidSummaryDto.md +16 -0
  713. package/docs/CancelBid200Response.md +22 -0
  714. package/docs/CancelBidRequestDto.md +20 -0
  715. package/docs/CompleteAcceptance200Response.md +22 -0
  716. package/docs/CompleteInvoice200Response.md +22 -0
  717. package/docs/CreateCardPayment200Response.md +22 -0
  718. package/docs/CreateWebhookEndpoint201Response.md +22 -0
  719. package/docs/CreateWebhookEndpointRequestDto.md +22 -0
  720. package/docs/FileMetaResponseDto.md +28 -0
  721. package/docs/GetBid200Response.md +22 -0
  722. package/docs/GetBidAcceptance200Response.md +22 -0
  723. package/docs/GetBidResults200Response.md +22 -0
  724. package/docs/GetBidSettlement200Response.md +22 -0
  725. package/docs/GetBidStatement200Response.md +22 -0
  726. package/docs/GetFileMeta200Response.md +22 -0
  727. package/docs/GetSupplierCardPayableV2200Response.md +22 -0
  728. package/docs/GetWebhookEndpoint200Response.md +22 -0
  729. package/docs/HealthControllerCheck200Response.md +22 -0
  730. package/docs/IntrospectRequestDto.md +30 -0
  731. package/docs/IntrospectionResponseDto.md +34 -0
  732. package/docs/ListBidContractDocuments200Response.md +22 -0
  733. package/docs/ListBidParticipants200Response.md +22 -0
  734. package/docs/ListBidResults200Response.md +22 -0
  735. package/docs/ListBids200Response.md +22 -0
  736. package/docs/ListProducts200Response.md +22 -0
  737. package/docs/ListWebhookDeliveries200Response.md +22 -0
  738. package/docs/ListWebhookDeliveriesResponseDto.md +22 -0
  739. package/docs/ListWebhookEndpoints200Response.md +22 -0
  740. package/docs/MarkBidFailed201Response.md +22 -0
  741. package/docs/OauthApi.md +54 -0
  742. package/docs/PartnerV1Api.md +12 -12
  743. package/docs/PartnerV2Api.md +1239 -225
  744. package/docs/PartnerWebhookDeliveryStatus.md +14 -0
  745. package/docs/PartnerWebhookEndpointStatus.md +11 -0
  746. package/docs/PartnerWebhookEventType.md +17 -0
  747. package/docs/ProblemDetailsDto.md +3 -1
  748. package/docs/ProductReceiptResponseDto.md +20 -0
  749. package/docs/ProductResponseDto.md +50 -0
  750. package/docs/PublishBid200Response.md +22 -0
  751. package/docs/RegenerateContractDocuments201Response.md +22 -0
  752. package/docs/RegisterAward201Response.md +22 -0
  753. package/docs/RegisterBid201Response.md +22 -0
  754. package/docs/RevertAward200Response.md +22 -0
  755. package/docs/RevertAwardRequestDto.md +20 -0
  756. package/docs/SendWebhookTestEvent200Response.md +22 -0
  757. package/docs/UpdateBid200Response.md +22 -0
  758. package/docs/UpdateWebhookEndpointRequestDto.md +24 -0
  759. package/docs/UploadFile201Response.md +22 -0
  760. package/docs/WebhookDeliveryDto.md +42 -0
  761. package/docs/WebhookEndpointDto.md +38 -0
  762. package/docs/WebhookEndpointWithSecretDto.md +40 -0
  763. package/docs/WebhookTestResultDto.md +24 -0
  764. package/index.ts +2 -2
  765. package/models/acceptance-result-response-dto.ts +2 -2
  766. package/models/acceptance-result-v1-response-dto.ts +2 -2
  767. package/models/acceptance-status-response-dto.ts +39 -0
  768. package/models/acknowledge-product-receipt200-response.ts +27 -0
  769. package/models/acknowledge-products-request-dto.ts +23 -0
  770. package/models/acknowledge-products-v1-request-dto.ts +2 -2
  771. package/models/authorization-server-metadata-dto.ts +6 -2
  772. package/models/award-method-public.ts +2 -2
  773. package/models/award-registered-response-dto.ts +2 -2
  774. package/models/award-registered-v2-response-dto.ts +2 -2
  775. package/models/award-reverted-v2-response-dto.ts +34 -0
  776. package/models/bid-attachment-v1-dto.ts +2 -2
  777. package/models/bid-bond-dto.ts +2 -2
  778. package/models/bid-bond-v1-dto.ts +2 -2
  779. package/models/bid-cancelled-response-dto.ts +34 -0
  780. package/models/bid-contact-dto.ts +31 -0
  781. package/models/bid-contacts-dto.ts +30 -0
  782. package/models/bid-contract-document-dto.ts +69 -0
  783. package/models/bid-contract-documents-batch-v1-request-dto.ts +2 -2
  784. package/models/bid-contract-documents-v1-response-dto.ts +2 -2
  785. package/models/bid-created-response-dto.ts +2 -2
  786. package/models/bid-delivery-terms-dto.ts +39 -0
  787. package/models/bid-detail-response-dto.ts +2 -2
  788. package/models/bid-document-dto.ts +2 -2
  789. package/models/bid-document-v1-dto.ts +2 -2
  790. package/models/bid-failed-response-dto.ts +2 -2
  791. package/models/bid-failed-v2-response-dto.ts +2 -2
  792. package/models/bid-failure-reason.ts +2 -2
  793. package/models/bid-item-dto.ts +2 -2
  794. package/models/bid-item-v1-dto.ts +2 -2
  795. package/models/bid-lifecycle-dto.ts +2 -2
  796. package/models/bid-manager-dto.ts +2 -2
  797. package/models/bid-manager-v1-dto.ts +2 -2
  798. package/models/bid-participant-summary-dto.ts +2 -2
  799. package/models/bid-payment-terms-dto.ts +27 -0
  800. package/models/bid-product-dto.ts +43 -0
  801. package/models/bid-public-status.ts +2 -5
  802. package/models/bid-published-response-dto.ts +2 -2
  803. package/models/bid-registered-response-dto.ts +2 -2
  804. package/models/bid-result-participant-attachment-dto.ts +2 -2
  805. package/models/bid-result-participant-dto.ts +2 -2
  806. package/models/bid-result-v1-attachment-dto.ts +2 -2
  807. package/models/bid-result-v1-bid-product-info-dto.ts +2 -2
  808. package/models/bid-result-v1-participant-dto.ts +2 -2
  809. package/models/bid-result-v1-product-dto.ts +2 -2
  810. package/models/bid-results-batch-request-dto.ts +23 -0
  811. package/models/bid-results-batch-v1-request-dto.ts +2 -2
  812. package/models/bid-results-response-dto.ts +2 -2
  813. package/models/bid-results-v1-response-dto.ts +2 -2
  814. package/models/bid-settlement-line-item-dto.ts +2 -2
  815. package/models/bid-settlement-participant-dto.ts +2 -2
  816. package/models/bid-settlement-response-dto.ts +2 -2
  817. package/models/bid-statement-response-dto.ts +2 -2
  818. package/models/bid-statement-v1-response-dto.ts +2 -2
  819. package/models/bid-status.ts +2 -2
  820. package/models/bid-summary-dto.ts +49 -2
  821. package/models/bid-updated-response-dto.ts +2 -2
  822. package/models/cancel-bid-request-dto.ts +23 -0
  823. package/models/cancel-bid200-response.ts +27 -0
  824. package/models/card-payment-request-response-dto.ts +2 -2
  825. package/models/complete-acceptance-request-dto.ts +2 -2
  826. package/models/complete-acceptance-v1-request-dto.ts +2 -2
  827. package/models/complete-acceptance200-response.ts +27 -0
  828. package/models/complete-invoice200-response.ts +27 -0
  829. package/models/contract-document-item-dto.ts +2 -2
  830. package/models/contract-documents-regenerated-response-dto.ts +2 -2
  831. package/models/contract-restriction-confirm-input-dto.ts +2 -2
  832. package/models/create-bid-request-dto.ts +2 -2
  833. package/models/create-bid-v1-request-dto.ts +2 -2
  834. package/models/create-card-payment-request-dto.ts +2 -2
  835. package/models/create-card-payment200-response.ts +27 -0
  836. package/models/create-external-contract-documents-request-dto.ts +2 -2
  837. package/models/create-external-contract-documents-response-dto.ts +2 -2
  838. package/models/create-webhook-endpoint-request-dto.ts +30 -0
  839. package/models/create-webhook-endpoint201-response.ts +27 -0
  840. package/models/external-contract-document-item-dto.ts +2 -2
  841. package/models/external-contract-documents-response-dto.ts +2 -2
  842. package/models/external-contract-item-dto.ts +2 -2
  843. package/models/external-contract-snapshot-dto.ts +2 -2
  844. package/models/external-document-inputs-dto.ts +2 -2
  845. package/models/file-meta-response-dto.ts +39 -0
  846. package/models/file-uploaded-response-dto.ts +2 -2
  847. package/models/file-uploaded-v1-response-dto.ts +2 -2
  848. package/models/generated-external-contract-document-dto.ts +2 -2
  849. package/models/get-bid-acceptance200-response.ts +27 -0
  850. package/models/get-bid-results200-response.ts +27 -0
  851. package/models/get-bid-settlement200-response.ts +27 -0
  852. package/models/get-bid-statement200-response.ts +27 -0
  853. package/models/get-bid200-response.ts +27 -0
  854. package/models/get-file-meta200-response.ts +27 -0
  855. package/models/get-supplier-card-payable-v2200-response.ts +27 -0
  856. package/models/get-webhook-endpoint200-response.ts +27 -0
  857. package/models/health-controller-check200-response.ts +27 -0
  858. package/models/health-response-dto.ts +2 -2
  859. package/models/hierarchical-region-dto.ts +2 -2
  860. package/models/hierarchical-region-v1-dto.ts +2 -2
  861. package/models/index.ts +59 -8
  862. package/models/introspect-request-dto.ts +56 -0
  863. package/models/introspection-response-dto.ts +51 -0
  864. package/models/invalid-param-dto.ts +2 -2
  865. package/models/invoice-completed-response-dto.ts +2 -2
  866. package/models/list-bid-contract-documents200-response.ts +27 -0
  867. package/models/list-bid-participants200-response.ts +27 -0
  868. package/models/list-bid-results200-response.ts +27 -0
  869. package/models/list-bids-response-dto.ts +2 -2
  870. package/models/list-bids200-response.ts +27 -0
  871. package/models/list-products200-response.ts +27 -0
  872. package/models/list-webhook-deliveries-response-dto.ts +30 -0
  873. package/models/list-webhook-deliveries200-response.ts +27 -0
  874. package/models/list-webhook-endpoints200-response.ts +27 -0
  875. package/models/mark-bid-failed-request-dto.ts +2 -2
  876. package/models/mark-bid-failed-v1-request-dto.ts +2 -2
  877. package/models/mark-bid-failed201-response.ts +27 -0
  878. package/models/negotiation-score-v1-dto.ts +2 -2
  879. package/models/negotiation-scored-response-dto.ts +2 -2
  880. package/models/oauth-error-response-dto.ts +2 -2
  881. package/models/partner-webhook-delivery-status.ts +28 -0
  882. package/models/partner-webhook-endpoint-status.ts +29 -0
  883. package/models/partner-webhook-event-type.ts +32 -0
  884. package/models/preconditions-dto.ts +2 -2
  885. package/models/preconditions-v1-dto.ts +2 -2
  886. package/models/problem-details-dto.ts +7 -3
  887. package/models/product-receipt-response-dto.ts +23 -0
  888. package/models/product-receipt-v1-response-dto.ts +2 -2
  889. package/models/product-response-dto.ts +83 -0
  890. package/models/product-v1-response-dto.ts +2 -2
  891. package/models/protected-resource-metadata-dto.ts +2 -2
  892. package/models/publish-bid200-response.ts +27 -0
  893. package/models/regenerate-contract-documents201-response.ts +27 -0
  894. package/models/register-award-request-dto.ts +2 -2
  895. package/models/register-award-v1-request-dto.ts +2 -2
  896. package/models/register-award201-response.ts +27 -0
  897. package/models/register-bid201-response.ts +27 -0
  898. package/models/register-semo-contract-request-dto.ts +2 -2
  899. package/models/request-split-invoice-v1-request-dto.ts +2 -2
  900. package/models/retiree-roster-input-dto.ts +2 -2
  901. package/models/retiree-roster-row-dto.ts +2 -2
  902. package/models/revert-award-request-dto.ts +23 -0
  903. package/models/revert-award200-response.ts +27 -0
  904. package/models/revoke-request-dto.ts +2 -2
  905. package/models/semo-contract-registered-response-dto.ts +2 -2
  906. package/models/semo-contract-taxinvoice-status-response-dto.ts +2 -2
  907. package/models/send-webhook-test-event200-response.ts +27 -0
  908. package/models/split-invoice-v1-response-dto.ts +2 -2
  909. package/models/statement-document-dto.ts +2 -2
  910. package/models/statement-product-dto.ts +2 -2
  911. package/models/statement-v1-document-dto.ts +2 -2
  912. package/models/statement-v1-product-dto.ts +2 -2
  913. package/models/submit-negotiation-scores-v1-request-dto.ts +2 -2
  914. package/models/supplier-card-payable-response-dto.ts +2 -2
  915. package/models/supplier-tax-type.ts +2 -2
  916. package/models/token-request-dto.ts +2 -2
  917. package/models/token-response-dto.ts +2 -2
  918. package/models/update-bid-request-dto.ts +2 -2
  919. package/models/update-bid200-response.ts +27 -0
  920. package/models/update-webhook-endpoint-request-dto.ts +39 -0
  921. package/models/upload-file-request-dto.ts +2 -2
  922. package/models/upload-file-v1-request-dto.ts +2 -2
  923. package/models/upload-file201-response.ts +27 -0
  924. package/models/webhook-delivery-dto.ts +82 -0
  925. package/models/webhook-endpoint-dto.ts +67 -0
  926. package/models/webhook-endpoint-with-secret-dto.ts +71 -0
  927. package/models/webhook-test-result-dto.ts +31 -0
  928. package/package.json +1 -1
  929. package/dist/esm/models/close-sandbox-bid-response-dto.d.ts +0 -34
  930. package/dist/esm/models/close-sandbox-bid-response-dto.js +0 -21
  931. package/dist/esm/models/embed-launch-request-dto.d.ts +0 -33
  932. package/dist/esm/models/embed-launch-request-dto.js +0 -20
  933. package/dist/esm/models/embed-launch-response-dto.d.ts +0 -21
  934. package/dist/esm/models/embed-launch-response-dto.js +0 -14
  935. package/dist/esm/models/issue-tax-invoice-request-dto.d.ts +0 -17
  936. package/dist/esm/models/issue-tax-invoice-request-dto.js +0 -14
  937. package/dist/esm/models/negotiation-score-dto.d.ts +0 -25
  938. package/dist/esm/models/negotiation-score-dto.js +0 -14
  939. package/dist/esm/models/negotiation-scored-v2-response-dto.d.ts +0 -29
  940. package/dist/esm/models/negotiation-scored-v2-response-dto.js +0 -16
  941. package/dist/esm/models/submit-negotiation-scores-request-dto.d.ts +0 -22
  942. package/dist/esm/models/submit-negotiation-scores-request-dto.js +0 -14
  943. package/dist/esm/models/tax-invoice-issued-response-dto.d.ts +0 -33
  944. package/dist/esm/models/tax-invoice-issued-response-dto.js +0 -14
  945. package/dist/models/close-sandbox-bid-response-dto.d.ts +0 -34
  946. package/dist/models/close-sandbox-bid-response-dto.js +0 -24
  947. package/dist/models/embed-launch-request-dto.d.ts +0 -33
  948. package/dist/models/embed-launch-request-dto.js +0 -23
  949. package/dist/models/embed-launch-response-dto.d.ts +0 -21
  950. package/dist/models/embed-launch-response-dto.js +0 -15
  951. package/dist/models/issue-tax-invoice-request-dto.d.ts +0 -17
  952. package/dist/models/issue-tax-invoice-request-dto.js +0 -15
  953. package/dist/models/negotiation-score-dto.d.ts +0 -25
  954. package/dist/models/negotiation-score-dto.js +0 -15
  955. package/dist/models/negotiation-scored-v2-response-dto.d.ts +0 -29
  956. package/dist/models/negotiation-scored-v2-response-dto.js +0 -19
  957. package/dist/models/submit-negotiation-scores-request-dto.d.ts +0 -22
  958. package/dist/models/submit-negotiation-scores-request-dto.js +0 -15
  959. package/dist/models/tax-invoice-issued-response-dto.d.ts +0 -33
  960. package/dist/models/tax-invoice-issued-response-dto.js +0 -15
  961. package/docs/CloseSandboxBidResponseDto.md +0 -24
  962. package/docs/EmbedLaunchRequestDto.md +0 -24
  963. package/docs/EmbedLaunchResponseDto.md +0 -22
  964. package/docs/NegotiationScoreDto.md +0 -24
  965. package/docs/NegotiationScoredV2ResponseDto.md +0 -24
  966. package/docs/SubmitNegotiationScoresRequestDto.md +0 -22
  967. package/docs/TaxInvoiceIssuedResponseDto.md +0 -28
  968. package/models/close-sandbox-bid-response-dto.ts +0 -43
  969. package/models/embed-launch-request-dto.ts +0 -42
  970. package/models/embed-launch-response-dto.ts +0 -27
  971. package/models/issue-tax-invoice-request-dto.ts +0 -23
  972. package/models/negotiation-score-dto.ts +0 -31
  973. package/models/negotiation-scored-v2-response-dto.ts +0 -38
  974. package/models/submit-negotiation-scores-request-dto.ts +0 -30
  975. package/models/tax-invoice-issued-response-dto.ts +0 -39
@@ -3,9 +3,9 @@
3
3
  /* eslint-disable */
4
4
  /**
5
5
  * CMARKET V6 Partner API
6
- * 외부 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` 헤더로 통지한다. 소비자는 이 헤더를 모니터링할 것.
6
+ * 외부 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` 헤더로 통지한다. 소비자는 이 헤더를 모니터링할 것.
7
7
  *
8
- * The version of the OpenAPI document: 25.1.0
8
+ * The version of the OpenAPI document: 31.1.0
9
9
  * Contact: semo.io.kr@gmail.com
10
10
  *
11
11
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -22,7 +22,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
22
22
  });
23
23
  };
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.ListExternalContractDocumentsBidTypeEnum = exports.PartnerV2Api = exports.PartnerV2ApiFactory = exports.PartnerV2ApiFp = exports.PartnerV2ApiAxiosParamCreator = void 0;
25
+ exports.ListExternalContractDocumentsBidTypeEnum = exports.ListBidsIncludeEnum = exports.PartnerV2Api = exports.PartnerV2ApiFactory = exports.PartnerV2ApiFp = exports.PartnerV2ApiAxiosParamCreator = void 0;
26
26
  const axios_1 = require("axios");
27
27
  // Some imports not used depending on template conditions
28
28
  // @ts-ignore
@@ -35,16 +35,62 @@ const base_1 = require("../base");
35
35
  const PartnerV2ApiAxiosParamCreator = function (configuration) {
36
36
  return {
37
37
  /**
38
- * 샌드박스 공고를 마감하는 **영업 데모 전용** 엔드포인트입니다. **가짜 상태 주입이 아닙니다.** backend 스케줄러가 부르는 것과 동일한 실제 `CloseBidCommand` dispatch 합니다 개찰이 실제로 수행되고, `status=\'B\'` 커밋 직전 투찰가 동기 복호화가 실제로 일어납니다(복호화 실패 마감이 중단됩니다). 엔드포인트는 데모인 동시에 살아있는 e2e 스모크입니다. **데모 공고 전용:** backend 공고 명의 == 데모 발주처인 공고에 한해서만 마감합니다. 실 발주처 공고는 절대 마감하지 않습니다. **마감 불가:** 이미 마감됐거나 마감 불가 상태면 409(`type: …/upstream-conflict`)를 반환합니다. **필수 스코프:** `bids:write`
39
- * @summary 샌드박스 공고 마감 (영업 데모 전용)
40
- * @param {string} bidId 샌드박스 공고 ID(&#x3D; backend bidId).
38
+ * 저장을 마친 물품을 전송완료로 표시해 다음 조회에서 제외합니다. **되돌릴 없습니다.** 표시한 물품은 `GET /v2/products` 다시 내려오지 않으므로, 자기 시스템에 저장이 끝난 뒤에 호출하세요. **표시 범위는 기관 그룹으로 잠깁니다.** 다른 기관의 물품 코드를 섞어 보내면 건은 표시되지 않고 `acknowledged`요청 수보다 작게 돌아옵니다. **필수 스코프:** `products:write` **멱등성:** `Idempotency-Key` 헤더 필수.
39
+ * @summary 물품 수신확인
40
+ * @param {string} idempotencyKey 멱등성 (1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
41
+ * @param {AcknowledgeProductsRequestDto} acknowledgeProductsRequestDto
42
+ * @param {*} [options] Override http request option.
43
+ * @throws {RequiredError}
44
+ */
45
+ acknowledgeProductReceipt: (idempotencyKey_1, acknowledgeProductsRequestDto_1, ...args_1) => __awaiter(this, [idempotencyKey_1, acknowledgeProductsRequestDto_1, ...args_1], void 0, function* (idempotencyKey, acknowledgeProductsRequestDto, options = {}) {
46
+ // verify required parameter 'idempotencyKey' is not null or undefined
47
+ (0, common_1.assertParamExists)('acknowledgeProductReceipt', 'idempotencyKey', idempotencyKey);
48
+ // verify required parameter 'acknowledgeProductsRequestDto' is not null or undefined
49
+ (0, common_1.assertParamExists)('acknowledgeProductReceipt', 'acknowledgeProductsRequestDto', acknowledgeProductsRequestDto);
50
+ const localVarPath = `/v2/products/receipts`;
51
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
52
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
53
+ let baseOptions;
54
+ if (configuration) {
55
+ baseOptions = configuration.baseOptions;
56
+ }
57
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
58
+ const localVarHeaderParameter = {};
59
+ const localVarQueryParameter = {};
60
+ // authentication partner-oauth2 required
61
+ // http bearer authentication required
62
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
63
+ localVarHeaderParameter['Content-Type'] = 'application/json';
64
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
65
+ if (idempotencyKey != null) {
66
+ localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
67
+ }
68
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
69
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
70
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
71
+ localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(acknowledgeProductsRequestDto, localVarRequestOptions, configuration);
72
+ return {
73
+ url: (0, common_1.toPathString)(localVarUrlObj),
74
+ options: localVarRequestOptions,
75
+ };
76
+ }),
77
+ /**
78
+ * 진행중인 공고를 취소합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. **되돌릴 수 없습니다.** 취소 사유는 필수이며 공고 이력에 남습니다. **전제조건:** 진행중(ONGOING) 상태여야 합니다. **거부:** 진행중이 아니거나 이미 취소된 공고 → 409. 타 발주처 공고 → 403. **마감과의 차이:** 취소는 공고를 무효로 되돌리는 것이고, 유찰(`POST /v2/bids/{bidId}/fail`)은 응찰을 받았으나 낙찰자를 정하지 못한 종료입니다.
79
+ * @summary 공고 취소
80
+ * @param {string} bidId 공고 식별자(등록 응답의 bidId).
81
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
82
+ * @param {CancelBidRequestDto} cancelBidRequestDto
41
83
  * @param {*} [options] Override http request option.
42
84
  * @throws {RequiredError}
43
85
  */
44
- closeSandboxBid: (bidId_1, ...args_1) => __awaiter(this, [bidId_1, ...args_1], void 0, function* (bidId, options = {}) {
86
+ cancelBid: (bidId_1, idempotencyKey_1, cancelBidRequestDto_1, ...args_1) => __awaiter(this, [bidId_1, idempotencyKey_1, cancelBidRequestDto_1, ...args_1], void 0, function* (bidId, idempotencyKey, cancelBidRequestDto, options = {}) {
45
87
  // verify required parameter 'bidId' is not null or undefined
46
- (0, common_1.assertParamExists)('closeSandboxBid', 'bidId', bidId);
47
- const localVarPath = `/v2/sandbox/bids/{bidId}/close`
88
+ (0, common_1.assertParamExists)('cancelBid', 'bidId', bidId);
89
+ // verify required parameter 'idempotencyKey' is not null or undefined
90
+ (0, common_1.assertParamExists)('cancelBid', 'idempotencyKey', idempotencyKey);
91
+ // verify required parameter 'cancelBidRequestDto' is not null or undefined
92
+ (0, common_1.assertParamExists)('cancelBid', 'cancelBidRequestDto', cancelBidRequestDto);
93
+ const localVarPath = `/v2/bids/{bidId}/cancel`
48
94
  .replace('{bidId}', encodeURIComponent(String(bidId)));
49
95
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
50
96
  const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
@@ -58,10 +104,15 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
58
104
  // authentication partner-oauth2 required
59
105
  // http bearer authentication required
60
106
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
61
- localVarHeaderParameter['Accept'] = 'application/json';
107
+ localVarHeaderParameter['Content-Type'] = 'application/json';
108
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
109
+ if (idempotencyKey != null) {
110
+ localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
111
+ }
62
112
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
63
113
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
64
114
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
115
+ localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(cancelBidRequestDto, localVarRequestOptions, configuration);
65
116
  return {
66
117
  url: (0, common_1.toPathString)(localVarUrlObj),
67
118
  options: localVarRequestOptions,
@@ -98,7 +149,7 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
98
149
  // http bearer authentication required
99
150
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
100
151
  localVarHeaderParameter['Content-Type'] = 'application/json';
101
- localVarHeaderParameter['Accept'] = 'application/json';
152
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
102
153
  if (idempotencyKey != null) {
103
154
  localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
104
155
  }
@@ -138,7 +189,7 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
138
189
  // authentication partner-oauth2 required
139
190
  // http bearer authentication required
140
191
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
141
- localVarHeaderParameter['Accept'] = 'application/json';
192
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
142
193
  if (idempotencyKey != null) {
143
194
  localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
144
195
  }
@@ -151,19 +202,19 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
151
202
  };
152
203
  }),
153
204
  /**
154
- * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인(APPROVED)되어 바로 결제 가능합니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. 거기서 카드를 골라 결제합니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/card-payment-requests/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
205
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인되어 바로 결제할 수 있습니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 도메인 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
155
206
  * @summary 결제창 발행
156
207
  * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
157
208
  * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
158
209
  * @param {*} [options] Override http request option.
159
210
  * @throws {RequiredError}
160
211
  */
161
- createCardPaymentRequest: (idempotencyKey_1, createCardPaymentRequestDto_1, ...args_1) => __awaiter(this, [idempotencyKey_1, createCardPaymentRequestDto_1, ...args_1], void 0, function* (idempotencyKey, createCardPaymentRequestDto, options = {}) {
212
+ createCardPayment: (idempotencyKey_1, createCardPaymentRequestDto_1, ...args_1) => __awaiter(this, [idempotencyKey_1, createCardPaymentRequestDto_1, ...args_1], void 0, function* (idempotencyKey, createCardPaymentRequestDto, options = {}) {
162
213
  // verify required parameter 'idempotencyKey' is not null or undefined
163
- (0, common_1.assertParamExists)('createCardPaymentRequest', 'idempotencyKey', idempotencyKey);
214
+ (0, common_1.assertParamExists)('createCardPayment', 'idempotencyKey', idempotencyKey);
164
215
  // verify required parameter 'createCardPaymentRequestDto' is not null or undefined
165
- (0, common_1.assertParamExists)('createCardPaymentRequest', 'createCardPaymentRequestDto', createCardPaymentRequestDto);
166
- const localVarPath = `/v2/card-payment-requests`;
216
+ (0, common_1.assertParamExists)('createCardPayment', 'createCardPaymentRequestDto', createCardPaymentRequestDto);
217
+ const localVarPath = `/v2/card-payments`;
167
218
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
168
219
  const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
169
220
  let baseOptions;
@@ -177,7 +228,7 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
177
228
  // http bearer authentication required
178
229
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
179
230
  localVarHeaderParameter['Content-Type'] = 'application/json';
180
- localVarHeaderParameter['Accept'] = 'application/json';
231
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
181
232
  if (idempotencyKey != null) {
182
233
  localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
183
234
  }
@@ -191,16 +242,19 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
191
242
  };
192
243
  }),
193
244
  /**
194
- * 스코프 `embed:launch` 필수. 발주기관 담당자(memberId) 일회성 launch code(60초 TTL) 발급한다. code URL 싣지 말고 @cmarket/embed SDK postMessage 핸드셰이크로만 iframe 전달할 것. memberId API 키의 발주처 소속이 아니면 403, 미허용 screen 400.
195
- * @summary 임베드 launch code 발급 (iframe SSO)
196
- * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
245
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 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` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
246
+ * @summary 결제창 발행
247
+ * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
248
+ * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
197
249
  * @param {*} [options] Override http request option.
198
250
  * @throws {RequiredError}
199
251
  */
200
- createEmbedLaunch: (embedLaunchRequestDto_1, ...args_1) => __awaiter(this, [embedLaunchRequestDto_1, ...args_1], void 0, function* (embedLaunchRequestDto, options = {}) {
201
- // verify required parameter 'embedLaunchRequestDto' is not null or undefined
202
- (0, common_1.assertParamExists)('createEmbedLaunch', 'embedLaunchRequestDto', embedLaunchRequestDto);
203
- const localVarPath = `/v2/embed/launch`;
252
+ createCardPaymentRequest: (idempotencyKey_1, createCardPaymentRequestDto_1, ...args_1) => __awaiter(this, [idempotencyKey_1, createCardPaymentRequestDto_1, ...args_1], void 0, function* (idempotencyKey, createCardPaymentRequestDto, options = {}) {
253
+ // verify required parameter 'idempotencyKey' is not null or undefined
254
+ (0, common_1.assertParamExists)('createCardPaymentRequest', 'idempotencyKey', idempotencyKey);
255
+ // verify required parameter 'createCardPaymentRequestDto' is not null or undefined
256
+ (0, common_1.assertParamExists)('createCardPaymentRequest', 'createCardPaymentRequestDto', createCardPaymentRequestDto);
257
+ const localVarPath = `/v2/card-payment-requests`;
204
258
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
205
259
  const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
206
260
  let baseOptions;
@@ -214,18 +268,21 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
214
268
  // http bearer authentication required
215
269
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
216
270
  localVarHeaderParameter['Content-Type'] = 'application/json';
217
- localVarHeaderParameter['Accept'] = 'application/json';
271
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
272
+ if (idempotencyKey != null) {
273
+ localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
274
+ }
218
275
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
219
276
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
220
277
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
221
- localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(embedLaunchRequestDto, localVarRequestOptions, configuration);
278
+ localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(createCardPaymentRequestDto, localVarRequestOptions, configuration);
222
279
  return {
223
280
  url: (0, common_1.toPathString)(localVarUrlObj),
224
281
  options: localVarRequestOptions,
225
282
  };
226
283
  }),
227
284
  /**
228
- * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `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` 헤더 필수.
285
+ * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `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 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
229
286
  * @summary 계약서류 생성
230
287
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
231
288
  * @param {CreateExternalContractDocumentsRequestDto} createExternalContractDocumentsRequestDto
@@ -251,7 +308,7 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
251
308
  // http bearer authentication required
252
309
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
253
310
  localVarHeaderParameter['Content-Type'] = 'application/json';
254
- localVarHeaderParameter['Accept'] = 'application/json';
311
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
255
312
  if (idempotencyKey != null) {
256
313
  localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
257
314
  }
@@ -265,7 +322,98 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
265
322
  };
266
323
  }),
267
324
  /**
268
- * 무인증 — `fileKey` 자체가 capability 다(V5 `/download/{fileKey}` 같은 보안 모델). 파트너 응답의 `fileUrl`/`fullUrl` URL 가리킨다. 요청 시점에 서명하므로 URL저장해 두어도 만료되지 않는다. 응답은 실제 저장소 URL 로의 302 리다이렉트이며 리다이렉트 타깃은 1시간 만료되므로 302 자체를 캐시하지 것(`Cache-Control: no-store`).
325
+ * 수신 주소와 구독할 이벤트를 등록합니다. **호출 시점:** 연동 초기 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
326
+ * @summary 웹훅 구독 등록
327
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
328
+ * @param {CreateWebhookEndpointRequestDto} createWebhookEndpointRequestDto
329
+ * @param {*} [options] Override http request option.
330
+ * @throws {RequiredError}
331
+ */
332
+ createWebhookEndpoint: (idempotencyKey_1, createWebhookEndpointRequestDto_1, ...args_1) => __awaiter(this, [idempotencyKey_1, createWebhookEndpointRequestDto_1, ...args_1], void 0, function* (idempotencyKey, createWebhookEndpointRequestDto, options = {}) {
333
+ // verify required parameter 'idempotencyKey' is not null or undefined
334
+ (0, common_1.assertParamExists)('createWebhookEndpoint', 'idempotencyKey', idempotencyKey);
335
+ // verify required parameter 'createWebhookEndpointRequestDto' is not null or undefined
336
+ (0, common_1.assertParamExists)('createWebhookEndpoint', 'createWebhookEndpointRequestDto', createWebhookEndpointRequestDto);
337
+ const localVarPath = `/v2/webhook-endpoints`;
338
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
339
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
340
+ let baseOptions;
341
+ if (configuration) {
342
+ baseOptions = configuration.baseOptions;
343
+ }
344
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
345
+ const localVarHeaderParameter = {};
346
+ const localVarQueryParameter = {};
347
+ // authentication partner-oauth2 required
348
+ // http bearer authentication required
349
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
350
+ localVarHeaderParameter['Content-Type'] = 'application/json';
351
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
352
+ if (idempotencyKey != null) {
353
+ localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
354
+ }
355
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
356
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
357
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
358
+ localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(createWebhookEndpointRequestDto, localVarRequestOptions, configuration);
359
+ return {
360
+ url: (0, common_1.toPathString)(localVarUrlObj),
361
+ options: localVarRequestOptions,
362
+ };
363
+ }),
364
+ /**
365
+ * 구독을 삭제합니다. 이후 그 주소로는 아무 이벤트도 발송되지 않습니다. **호출 시점:** 연동을 종료할 때. 잠시만 멈추려면 삭제하지 말고 `PATCH … {\"status\":\"DISABLED\"}` 를 쓰세요 — 시크릿과 이벤트 구성이 남아 그대로 되살릴 수 있습니다. **되돌릴 수 없습니다.** 다시 등록하면 새 구독이고 서명 시크릿도 새 값입니다. **`If-Match` 가 필수입니다.** `GET` 으로 받은 `ETag` 를 실어 보내세요. - `428` — 헤더 누락. 조회 후 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다(누군가 수정했거나 발송기가 상태를 내렸습니다). 다시 조회해 정말 지울 대상이 맞는지 확인하고 최신 `ETag` 로 재시도하세요. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
366
+ * @summary 웹훅 구독 삭제
367
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
368
+ * @param {string} ifMatch
369
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
370
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
371
+ * @param {*} [options] Override http request option.
372
+ * @throws {RequiredError}
373
+ */
374
+ deleteWebhookEndpoint: (endpointId_1, ifMatch_1, ifMatch2_1, idempotencyKey_1, ...args_1) => __awaiter(this, [endpointId_1, ifMatch_1, ifMatch2_1, idempotencyKey_1, ...args_1], void 0, function* (endpointId, ifMatch, ifMatch2, idempotencyKey, options = {}) {
375
+ // verify required parameter 'endpointId' is not null or undefined
376
+ (0, common_1.assertParamExists)('deleteWebhookEndpoint', 'endpointId', endpointId);
377
+ // verify required parameter 'ifMatch' is not null or undefined
378
+ (0, common_1.assertParamExists)('deleteWebhookEndpoint', 'ifMatch', ifMatch);
379
+ // verify required parameter 'ifMatch2' is not null or undefined
380
+ (0, common_1.assertParamExists)('deleteWebhookEndpoint', 'ifMatch2', ifMatch2);
381
+ // verify required parameter 'idempotencyKey' is not null or undefined
382
+ (0, common_1.assertParamExists)('deleteWebhookEndpoint', 'idempotencyKey', idempotencyKey);
383
+ const localVarPath = `/v2/webhook-endpoints/{endpointId}`
384
+ .replace('{endpointId}', encodeURIComponent(String(endpointId)));
385
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
386
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
387
+ let baseOptions;
388
+ if (configuration) {
389
+ baseOptions = configuration.baseOptions;
390
+ }
391
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'DELETE' }, baseOptions), options);
392
+ const localVarHeaderParameter = {};
393
+ const localVarQueryParameter = {};
394
+ // authentication partner-oauth2 required
395
+ // http bearer authentication required
396
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
397
+ localVarHeaderParameter['Accept'] = 'application/problem+json';
398
+ if (ifMatch != null) {
399
+ localVarHeaderParameter['if-match'] = String(ifMatch);
400
+ }
401
+ if (ifMatch2 != null) {
402
+ localVarHeaderParameter['If-Match'] = String(ifMatch2);
403
+ }
404
+ if (idempotencyKey != null) {
405
+ localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
406
+ }
407
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
408
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
409
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
410
+ return {
411
+ url: (0, common_1.toPathString)(localVarUrlObj),
412
+ options: localVarRequestOptions,
413
+ };
414
+ }),
415
+ /**
416
+ * 무인증 — `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` 이 가리키는 주소라 계속 유지되며 중단 일정은 없습니다.
269
417
  * @summary 파일 다운로드 — 안정 URL(302)
270
418
  * @param {string} fileKey 파일 키 — UUIDv4 hex 32자. 업로드(&#x60;POST /v1|/v2/files&#x60;) 응답에서 받은 값.
271
419
  * @param {*} [options] Override http request option.
@@ -317,7 +465,40 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
317
465
  // authentication partner-oauth2 required
318
466
  // http bearer authentication required
319
467
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
320
- localVarHeaderParameter['Accept'] = 'application/json';
468
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
469
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
470
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
471
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
472
+ return {
473
+ url: (0, common_1.toPathString)(localVarUrlObj),
474
+ options: localVarRequestOptions,
475
+ };
476
+ }),
477
+ /**
478
+ * 공고의 납품·검수·계약완료 진행 상태를 조회합니다. 검수완료 전송의 읽기 카운터파트입니다. **세 축은 서로 다른 사건입니다.** - `delivered`: 낙찰 공급사가 납품(결과확인)을 보고했습니다. - `confirmed`/`confirmedAt`: 발주기관이 검수를 확인했습니다. - `contractCompletedAt`: 검수완료 전송이 원장에 반영된 시각입니다. 검수완료 전송(`POST /v2/bids/{bidId}/acceptance`)이 성사되었는지는 `contractCompletedAt` 이 채워졌는지로 확인하세요. **필수 스코프:** `contracts:read`
479
+ * @summary 검수 현황 조회
480
+ * @param {string} bidId 공고 ID(&#x3D; backend bidId &#x3D; 등록 응답의 bidNo).
481
+ * @param {*} [options] Override http request option.
482
+ * @throws {RequiredError}
483
+ */
484
+ getBidAcceptance: (bidId_1, ...args_1) => __awaiter(this, [bidId_1, ...args_1], void 0, function* (bidId, options = {}) {
485
+ // verify required parameter 'bidId' is not null or undefined
486
+ (0, common_1.assertParamExists)('getBidAcceptance', 'bidId', bidId);
487
+ const localVarPath = `/v2/bids/{bidId}/acceptance`
488
+ .replace('{bidId}', encodeURIComponent(String(bidId)));
489
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
490
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
491
+ let baseOptions;
492
+ if (configuration) {
493
+ baseOptions = configuration.baseOptions;
494
+ }
495
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
496
+ const localVarHeaderParameter = {};
497
+ const localVarQueryParameter = {};
498
+ // authentication partner-oauth2 required
499
+ // http bearer authentication required
500
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
501
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
321
502
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
322
503
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
323
504
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -336,7 +517,7 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
336
517
  getBidResults: (bidId_1, ...args_1) => __awaiter(this, [bidId_1, ...args_1], void 0, function* (bidId, options = {}) {
337
518
  // verify required parameter 'bidId' is not null or undefined
338
519
  (0, common_1.assertParamExists)('getBidResults', 'bidId', bidId);
339
- const localVarPath = `/v2/bids/{bidId}/results`
520
+ const localVarPath = `/v2/bids/{bidId}/result`
340
521
  .replace('{bidId}', encodeURIComponent(String(bidId)));
341
522
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
342
523
  const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
@@ -350,7 +531,7 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
350
531
  // authentication partner-oauth2 required
351
532
  // http bearer authentication required
352
533
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
353
- localVarHeaderParameter['Accept'] = 'application/json';
534
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
354
535
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
355
536
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
356
537
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -360,7 +541,7 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
360
541
  };
361
542
  }),
362
543
  /**
363
- * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회한다. scope bids:read. 가시성 마스킹과 직교한 정산 데이터 — read-only.
544
+ * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 가시성 마스킹과는 직교한 정산 데이터이며 읽기 전용입니다. **필수 스코프:** `invoices:read` 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
364
545
  * @summary 입찰결과 정산정보 조회
365
546
  * @param {string} bidId
366
547
  * @param {*} [options] Override http request option.
@@ -383,7 +564,7 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
383
564
  // authentication partner-oauth2 required
384
565
  // http bearer authentication required
385
566
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
386
- localVarHeaderParameter['Accept'] = 'application/json';
567
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
387
568
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
388
569
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
389
570
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -393,7 +574,7 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
393
574
  };
394
575
  }),
395
576
  /**
396
- * 낙찰 계약의 거래명세서(문서·품목 라인)를 조회한다. scope contracts:read.
577
+ * 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
397
578
  * @summary 거래명세서 조회
398
579
  * @param {string} bidId
399
580
  * @param {number} [paperCode]
@@ -420,7 +601,40 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
420
601
  if (paperCode !== undefined) {
421
602
  localVarQueryParameter['paperCode'] = paperCode;
422
603
  }
423
- localVarHeaderParameter['Accept'] = 'application/json';
604
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
605
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
606
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
607
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
608
+ return {
609
+ url: (0, common_1.toPathString)(localVarUrlObj),
610
+ options: localVarRequestOptions,
611
+ };
612
+ }),
613
+ /**
614
+ * 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **구 경로:** 버전 없는 `GET /files/{fileKey}` 는 만료 없는 안정 주소이고 파트너 응답의 `fileUrl`/`fullUrl` 이 그 값을 가리킵니다. 인증도 스코프도 없는 옛 표면이라 신규 연동은 이 엔드포인트를 쓰세요. 구 경로는 당분간 유지됩니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** 하이픈 없는 16진수 32자가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. **필수 스코프:** `files:read`
615
+ * @summary 파일 조회(메타 + 내려받기 주소)
616
+ * @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(하이픈 없는 16진수 32자).
617
+ * @param {*} [options] Override http request option.
618
+ * @throws {RequiredError}
619
+ */
620
+ getFileMeta: (fileKey_1, ...args_1) => __awaiter(this, [fileKey_1, ...args_1], void 0, function* (fileKey, options = {}) {
621
+ // verify required parameter 'fileKey' is not null or undefined
622
+ (0, common_1.assertParamExists)('getFileMeta', 'fileKey', fileKey);
623
+ const localVarPath = `/v2/files/{fileKey}`
624
+ .replace('{fileKey}', encodeURIComponent(String(fileKey)));
625
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
626
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
627
+ let baseOptions;
628
+ if (configuration) {
629
+ baseOptions = configuration.baseOptions;
630
+ }
631
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
632
+ const localVarHeaderParameter = {};
633
+ const localVarQueryParameter = {};
634
+ // authentication partner-oauth2 required
635
+ // http bearer authentication required
636
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
637
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
424
638
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
425
639
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
426
640
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -463,7 +677,7 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
463
677
  };
464
678
  }),
465
679
  /**
466
- * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write`
680
+ * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
467
681
  * @summary 공급사 카드결제 가능 여부
468
682
  * @param {string} memberId 계약업체 회원 ID
469
683
  * @param {*} [options] Override http request option.
@@ -496,13 +710,17 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
496
710
  };
497
711
  }),
498
712
  /**
499
- * ERP 연동 직전 회선·인증 endpoint 동작 확인용.
500
- * @summary Partner API 헬스체크
713
+ * 계약업체가 카드결제로 대금을 받을 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
714
+ * @summary 공급사 카드결제 가능 여부
715
+ * @param {string} memberId 계약업체 회원 ID
501
716
  * @param {*} [options] Override http request option.
502
717
  * @throws {RequiredError}
503
718
  */
504
- healthControllerCheck: (...args_1) => __awaiter(this, [...args_1], void 0, function* (options = {}) {
505
- const localVarPath = `/health`;
719
+ getSupplierCardPayableV2: (memberId_1, ...args_1) => __awaiter(this, [memberId_1, ...args_1], void 0, function* (memberId, options = {}) {
720
+ // verify required parameter 'memberId' is not null or undefined
721
+ (0, common_1.assertParamExists)('getSupplierCardPayableV2', 'memberId', memberId);
722
+ const localVarPath = `/v2/suppliers/{memberId}/card-payable`
723
+ .replace('{memberId}', encodeURIComponent(String(memberId)));
506
724
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
507
725
  const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
508
726
  let baseOptions;
@@ -512,7 +730,10 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
512
730
  const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
513
731
  const localVarHeaderParameter = {};
514
732
  const localVarQueryParameter = {};
515
- localVarHeaderParameter['Accept'] = 'application/json';
733
+ // authentication partner-oauth2 required
734
+ // http bearer authentication required
735
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
736
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
516
737
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
517
738
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
518
739
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -522,59 +743,46 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
522
743
  };
523
744
  }),
524
745
  /**
525
- * 낙찰 공급사가 확정된 공고에 대해 세금계산서를 발행합니다. **호출 시점:** 낙찰자 선정(계약진행) 이후. 과세/면세를 자동 분리해 발행합니다. **부수효과:** - 세금계산서가 국세청에 발행되고 공고가 발행 완료로 마킹됩니다. - 이미 발행됐거나 분할 청구가 진행 중이면 409 로 거절됩니다. **소유권:** 발행 대상 공고가 API 키에 바인딩된 발주처 소유가 아니면 403. **분할 청구:** 세금계산서 **분할 발급**은 `/v2` 에 제공되지 않습니다 `/v1` 전용(`POST /v1/invoices/split-requests`)입니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 키 + 동일 body 재전송 시 24시간 내 캐시 응답 반환.
526
- * @summary 세금계산서 발행
527
- * @param {string} bidId 공고 식별자(등록 응답의 bidId).
528
- * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
529
- * @param {IssueTaxInvoiceRequestDto} issueTaxInvoiceRequestDto
746
+ * 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` `If-Match` 그대로 실어야 `PATCH`/`DELETE` 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
747
+ * @summary 웹훅 구독 단건 조회
748
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
530
749
  * @param {*} [options] Override http request option.
531
750
  * @throws {RequiredError}
532
751
  */
533
- issueTaxInvoice: (bidId_1, idempotencyKey_1, issueTaxInvoiceRequestDto_1, ...args_1) => __awaiter(this, [bidId_1, idempotencyKey_1, issueTaxInvoiceRequestDto_1, ...args_1], void 0, function* (bidId, idempotencyKey, issueTaxInvoiceRequestDto, options = {}) {
534
- // verify required parameter 'bidId' is not null or undefined
535
- (0, common_1.assertParamExists)('issueTaxInvoice', 'bidId', bidId);
536
- // verify required parameter 'idempotencyKey' is not null or undefined
537
- (0, common_1.assertParamExists)('issueTaxInvoice', 'idempotencyKey', idempotencyKey);
538
- // verify required parameter 'issueTaxInvoiceRequestDto' is not null or undefined
539
- (0, common_1.assertParamExists)('issueTaxInvoice', 'issueTaxInvoiceRequestDto', issueTaxInvoiceRequestDto);
540
- const localVarPath = `/v2/bids/{bidId}/tax-invoice`
541
- .replace('{bidId}', encodeURIComponent(String(bidId)));
752
+ getWebhookEndpoint: (endpointId_1, ...args_1) => __awaiter(this, [endpointId_1, ...args_1], void 0, function* (endpointId, options = {}) {
753
+ // verify required parameter 'endpointId' is not null or undefined
754
+ (0, common_1.assertParamExists)('getWebhookEndpoint', 'endpointId', endpointId);
755
+ const localVarPath = `/v2/webhook-endpoints/{endpointId}`
756
+ .replace('{endpointId}', encodeURIComponent(String(endpointId)));
542
757
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
543
758
  const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
544
759
  let baseOptions;
545
760
  if (configuration) {
546
761
  baseOptions = configuration.baseOptions;
547
762
  }
548
- const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
763
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
549
764
  const localVarHeaderParameter = {};
550
765
  const localVarQueryParameter = {};
551
766
  // authentication partner-oauth2 required
552
767
  // http bearer authentication required
553
768
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
554
- localVarHeaderParameter['Content-Type'] = 'application/json';
555
- localVarHeaderParameter['Accept'] = 'application/json';
556
- if (idempotencyKey != null) {
557
- localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
558
- }
769
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
559
770
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
560
771
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
561
772
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
562
- localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(issueTaxInvoiceRequestDto, localVarRequestOptions, configuration);
563
773
  return {
564
774
  url: (0, common_1.toPathString)(localVarUrlObj),
565
775
  options: localVarRequestOptions,
566
776
  };
567
777
  }),
568
778
  /**
569
- * 발주처(API 바인딩)의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(쿼리에 buyerId 를 넣지 않습니다). **페이지네이션(cursor):** `limit`(1~100, 기본 100) + `cursor`(불투명 토큰). 응답의 `nextCursor` 를 다음 요청 `cursor` 로 전달하면 다음 페이지를 받습니다. `nextCursor=null` 이면 마지막 페이지입니다. **상태·낙찰방법:** 공개값(의미 문자열)으로 반환됩니다. 낙찰 여부는 상태가 아니라 낙찰 결과 조회의 `participants[].isWinner` 로 관측합니다(AWARDED 상태는 없습니다).
570
- * @summary 공고 목록 조회
571
- * @param {number} [limit] 페이지 크기(1~100, 기본 100).
572
- * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달한다. 미지정 시 첫 페이지. &#x60;nextCursor&#x3D;null&#x60; 이면 마지막 페이지다.
779
+ * ERP 연동 직전 회선·인증 endpoint 동작 확인용.
780
+ * @summary Partner API 헬스체크
573
781
  * @param {*} [options] Override http request option.
574
782
  * @throws {RequiredError}
575
783
  */
576
- listBids: (limit_1, cursor_1, ...args_1) => __awaiter(this, [limit_1, cursor_1, ...args_1], void 0, function* (limit, cursor, options = {}) {
577
- const localVarPath = `/v2/bids`;
784
+ healthControllerCheck: (...args_1) => __awaiter(this, [...args_1], void 0, function* (options = {}) {
785
+ const localVarPath = `/health`;
578
786
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
579
787
  const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
580
788
  let baseOptions;
@@ -584,16 +792,7 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
584
792
  const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
585
793
  const localVarHeaderParameter = {};
586
794
  const localVarQueryParameter = {};
587
- // authentication partner-oauth2 required
588
- // http bearer authentication required
589
- yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
590
- if (limit !== undefined) {
591
- localVarQueryParameter['limit'] = limit;
592
- }
593
- if (cursor !== undefined) {
594
- localVarQueryParameter['cursor'] = cursor;
595
- }
596
- localVarHeaderParameter['Accept'] = 'application/json';
795
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
597
796
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
598
797
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
599
798
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -603,19 +802,17 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
603
802
  };
604
803
  }),
605
804
  /**
606
- * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 예: 채팅 기반 견적 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 거래유형에 적용되는 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` 운영자가 기본값(★)으로 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API `paperCodes` 넣을 있습니다. - `autoGenerated=false` API 로는 만들 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 있습니다. 범위 밖이면 403 입니다. 대행 범위는 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read`
607
- * @summary 거래에 필요한 계약서류 목록 조회
608
- * @param {string} buyerId 발주기관 회원 ID(c-market memberId).
609
- * @param {ListExternalContractDocumentsBidTypeEnum} bidType 거래유형.
805
+ * 공고의 계약서류 목록과 내려받기 주소를 조회합니다. **목록에 실리는 것:** 공고 전체에 공통인 서류(약관·자동생성 공통본)와 낙찰자에게 귀속된 서류를 함께 싣습니다. 낙찰자 귀속 서류는 `winnerSequence` 낙찰자의 응찰 순번이 들어갑니다. **아직 없는 서류도 실립니다.** 공고가 제출을 요구했지만 아직 올라오지 않은 서류는 `fileKey: null` 나타나므로, 제출 여부는 이 값으로 판정하세요. **자동생성 서류:** `autoGenerated: true` 서류는 c-market 이 만들어 줍니다. 만드는 중이면 `generationState` `QUEUED`/`PROCESSING` 이고 `downloadUrl` 아직 없습니다. `DEAD_LETTER` 생성이 실패해 멈춘 상태이며, 같은 경로의 POST(재생성)로 다시 큐에 올립니다. **내려받기:** `downloadUrl` 유효기간 1시간의 서명 주소입니다. 저장해 두고 재사용하지 마시고 필요할 엔드포인트를 다시 호출하세요. 기간에 얽매이지 않으려면 `fileKey` 보관하시고 파일 내려받기 경로를 사용하세요. **보이는 범위:** 서버가 공고 낙찰방법과 진행 단계로 결정합니다. 응답을 그대로 사용하시고 클라이언트에서 다시 거르지 마세요. **필수 스코프:** `contracts:read`
806
+ * @summary 계약서류 목록 조회
807
+ * @param {string} bidId 공고번호(buy_idx, CM…) 또는 외부 구매번호(bid_puchase_no).
610
808
  * @param {*} [options] Override http request option.
611
809
  * @throws {RequiredError}
612
810
  */
613
- listExternalContractDocuments: (buyerId_1, bidType_1, ...args_1) => __awaiter(this, [buyerId_1, bidType_1, ...args_1], void 0, function* (buyerId, bidType, options = {}) {
614
- // verify required parameter 'buyerId' is not null or undefined
615
- (0, common_1.assertParamExists)('listExternalContractDocuments', 'buyerId', buyerId);
616
- // verify required parameter 'bidType' is not null or undefined
617
- (0, common_1.assertParamExists)('listExternalContractDocuments', 'bidType', bidType);
618
- const localVarPath = `/v2/contract-documents`;
811
+ listBidContractDocuments: (bidId_1, ...args_1) => __awaiter(this, [bidId_1, ...args_1], void 0, function* (bidId, options = {}) {
812
+ // verify required parameter 'bidId' is not null or undefined
813
+ (0, common_1.assertParamExists)('listBidContractDocuments', 'bidId', bidId);
814
+ const localVarPath = `/v2/bids/{bidId}/contract-documents`
815
+ .replace('{bidId}', encodeURIComponent(String(bidId)));
619
816
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
620
817
  const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
621
818
  let baseOptions;
@@ -628,13 +825,7 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
628
825
  // authentication partner-oauth2 required
629
826
  // http bearer authentication required
630
827
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
631
- if (buyerId !== undefined) {
632
- localVarQueryParameter['buyerId'] = buyerId;
633
- }
634
- if (bidType !== undefined) {
635
- localVarQueryParameter['bidType'] = bidType;
636
- }
637
- localVarHeaderParameter['Accept'] = 'application/json';
828
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
638
829
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
639
830
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
640
831
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -644,22 +835,16 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
644
835
  };
645
836
  }),
646
837
  /**
647
- * 공고를 유찰 상태로 전환합니다. **호출 시점:** 입찰 마감 후 유찰 사유가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 공고 상태가 유찰(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` 헤더 필수.
648
- * @summary 유찰 처리
838
+ * 공고에 응찰한 업체 목록을 조회합니다. 스코프 `bids:read` 필수. **보이는 범위는 공고의 낙찰방법과 진행 단계가 결정합니다.** 개찰 전에는 업체명이 가려지고 (`companyName: null`), 순위는 산정 전까지 `null` 입니다. 판정은 서버가 소유하므로 응답을 그대로 사용하시고 클라이언트에서 다시 계산하지 마세요. 같은 목록이 `GET /v2/bids/{bidId}` 응답의 `participants` 에도 실립니다 응찰 현황만 필요하면 엔드포인트가 가볍습니다.
839
+ * @summary 응찰 현황 조회
649
840
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
650
- * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
651
- * @param {MarkBidFailedRequestDto} markBidFailedRequestDto
652
841
  * @param {*} [options] Override http request option.
653
842
  * @throws {RequiredError}
654
843
  */
655
- markBidFailed: (bidId_1, idempotencyKey_1, markBidFailedRequestDto_1, ...args_1) => __awaiter(this, [bidId_1, idempotencyKey_1, markBidFailedRequestDto_1, ...args_1], void 0, function* (bidId, idempotencyKey, markBidFailedRequestDto, options = {}) {
844
+ listBidParticipants: (bidId_1, ...args_1) => __awaiter(this, [bidId_1, ...args_1], void 0, function* (bidId, options = {}) {
656
845
  // verify required parameter 'bidId' is not null or undefined
657
- (0, common_1.assertParamExists)('markBidFailed', 'bidId', bidId);
658
- // verify required parameter 'idempotencyKey' is not null or undefined
659
- (0, common_1.assertParamExists)('markBidFailed', 'idempotencyKey', idempotencyKey);
660
- // verify required parameter 'markBidFailedRequestDto' is not null or undefined
661
- (0, common_1.assertParamExists)('markBidFailed', 'markBidFailedRequestDto', markBidFailedRequestDto);
662
- const localVarPath = `/v2/bids/{bidId}/award/fail`
846
+ (0, common_1.assertParamExists)('listBidParticipants', 'bidId', bidId);
847
+ const localVarPath = `/v2/bids/{bidId}/participants`
663
848
  .replace('{bidId}', encodeURIComponent(String(bidId)));
664
849
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
665
850
  const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
@@ -667,15 +852,282 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
667
852
  if (configuration) {
668
853
  baseOptions = configuration.baseOptions;
669
854
  }
670
- const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
855
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
671
856
  const localVarHeaderParameter = {};
672
857
  const localVarQueryParameter = {};
673
858
  // authentication partner-oauth2 required
674
859
  // http bearer authentication required
675
860
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
676
- localVarHeaderParameter['Content-Type'] = 'application/json';
677
- localVarHeaderParameter['Accept'] = 'application/json';
678
- if (idempotencyKey != null) {
861
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
862
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
863
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
864
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
865
+ return {
866
+ url: (0, common_1.toPathString)(localVarUrlObj),
867
+ options: localVarRequestOptions,
868
+ };
869
+ }),
870
+ /**
871
+ * 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에는 `ETag` 가 실리므로, 다음 요청에 `If-None-Match` 로 되보내면 결과가 그대로일 때 `304` 를 본문 없이 받습니다 — 마감을 기다리는 동안의 전송량이 사라집니다. **식별자 전달:** `?bidIds=A,B,C`(쉼표) 또는 `?bidIds=A&bidIds=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다 — 요청한 건수와 받은 건수가 다를 수 있으니 `bidId` 로 대조하세요. **목록이 길어 URL 이 부담되면** `POST /v2/bid-results/query` 를 쓰세요. 응답은 같습니다.
872
+ * @summary 입찰 결과 배치 조회
873
+ * @param {string} bidIds 조회할 공고 식별자 목록. 쉼표로 구분하거나 &#x60;bidIds&#x60; 를 반복해 전달합니다. 최대 100건.
874
+ * @param {*} [options] Override http request option.
875
+ * @throws {RequiredError}
876
+ */
877
+ listBidResults: (bidIds_1, ...args_1) => __awaiter(this, [bidIds_1, ...args_1], void 0, function* (bidIds, options = {}) {
878
+ // verify required parameter 'bidIds' is not null or undefined
879
+ (0, common_1.assertParamExists)('listBidResults', 'bidIds', bidIds);
880
+ const localVarPath = `/v2/bid-results`;
881
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
882
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
883
+ let baseOptions;
884
+ if (configuration) {
885
+ baseOptions = configuration.baseOptions;
886
+ }
887
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
888
+ const localVarHeaderParameter = {};
889
+ const localVarQueryParameter = {};
890
+ // authentication partner-oauth2 required
891
+ // http bearer authentication required
892
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
893
+ if (bidIds !== undefined) {
894
+ localVarQueryParameter['bidIds'] = bidIds;
895
+ }
896
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
897
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
898
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
899
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
900
+ return {
901
+ url: (0, common_1.toPathString)(localVarUrlObj),
902
+ options: localVarRequestOptions,
903
+ };
904
+ }),
905
+ /**
906
+ * 발주처(API 키 바인딩)의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(쿼리에 buyerId 를 넣지 않습니다). **페이지네이션(cursor):** `limit`(1~100, 기본 100) + `cursor`(불투명 토큰). 응답의 `nextCursor` 를 다음 요청 `cursor` 로 전달하면 다음 페이지를 받습니다. `nextCursor=null` 이면 마지막 페이지입니다. **상태·낙찰방법:** 공개값(의미 문자열)으로 반환됩니다. 낙찰 여부는 상태가 아니라 낙찰 결과 조회의 `participants[].isWinner` 로 관측합니다(AWARDED 상태는 없습니다).
907
+ * @summary 공고 목록 조회
908
+ * @param {number} [limit] 페이지 크기(1~100, 기본 100).
909
+ * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달한다. 미지정 시 첫 페이지. &#x60;nextCursor&#x3D;null&#x60; 이면 마지막 페이지다.
910
+ * @param {Array<string>} [bidIds] 조회할 공고 식별자 CSV(최대 100건). 지정 시 그 공고만 조회한다.
911
+ * @param {Array<BidPublicStatus>} [status] 공고 상태 필터(공개값) CSV. 지정 시 그중 하나라도 일치하는 공고만 조회한다.
912
+ * @param {Array<ListBidsIncludeEnum>} [include] 행별 확장 부착 CSV. &#x60;results&#x60;&#x3D;응찰 참여자, &#x60;products&#x60;&#x3D;공고 등록 품목, &#x60;contacts&#x60;&#x3D;발주 담당자 성명·연락처·이메일. 미지정이면 부착하지 않는다(응답이 가볍고 조회 비용도 들지 않는다).
913
+ * @param {*} [options] Override http request option.
914
+ * @throws {RequiredError}
915
+ */
916
+ listBids: (limit_1, cursor_1, bidIds_1, status_1, include_1, ...args_1) => __awaiter(this, [limit_1, cursor_1, bidIds_1, status_1, include_1, ...args_1], void 0, function* (limit, cursor, bidIds, status, include, options = {}) {
917
+ const localVarPath = `/v2/bids`;
918
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
919
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
920
+ let baseOptions;
921
+ if (configuration) {
922
+ baseOptions = configuration.baseOptions;
923
+ }
924
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
925
+ const localVarHeaderParameter = {};
926
+ const localVarQueryParameter = {};
927
+ // authentication partner-oauth2 required
928
+ // http bearer authentication required
929
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
930
+ if (limit !== undefined) {
931
+ localVarQueryParameter['limit'] = limit;
932
+ }
933
+ if (cursor !== undefined) {
934
+ localVarQueryParameter['cursor'] = cursor;
935
+ }
936
+ if (bidIds) {
937
+ localVarQueryParameter['bidIds'] = bidIds;
938
+ }
939
+ if (status) {
940
+ localVarQueryParameter['status'] = status;
941
+ }
942
+ if (include) {
943
+ localVarQueryParameter['include'] = include;
944
+ }
945
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
946
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
947
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
948
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
949
+ return {
950
+ url: (0, common_1.toPathString)(localVarUrlObj),
951
+ options: localVarRequestOptions,
952
+ };
953
+ }),
954
+ /**
955
+ * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `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 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
956
+ * @summary 거래에 필요한 계약서류 목록 조회
957
+ * @param {string} buyerId 발주기관 회원 ID(c-market memberId).
958
+ * @param {ListExternalContractDocumentsBidTypeEnum} bidType 거래유형.
959
+ * @param {*} [options] Override http request option.
960
+ * @throws {RequiredError}
961
+ */
962
+ listExternalContractDocuments: (buyerId_1, bidType_1, ...args_1) => __awaiter(this, [buyerId_1, bidType_1, ...args_1], void 0, function* (buyerId, bidType, options = {}) {
963
+ // verify required parameter 'buyerId' is not null or undefined
964
+ (0, common_1.assertParamExists)('listExternalContractDocuments', 'buyerId', buyerId);
965
+ // verify required parameter 'bidType' is not null or undefined
966
+ (0, common_1.assertParamExists)('listExternalContractDocuments', 'bidType', bidType);
967
+ const localVarPath = `/v2/contract-documents`;
968
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
969
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
970
+ let baseOptions;
971
+ if (configuration) {
972
+ baseOptions = configuration.baseOptions;
973
+ }
974
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
975
+ const localVarHeaderParameter = {};
976
+ const localVarQueryParameter = {};
977
+ // authentication partner-oauth2 required
978
+ // http bearer authentication required
979
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
980
+ if (buyerId !== undefined) {
981
+ localVarQueryParameter['buyerId'] = buyerId;
982
+ }
983
+ if (bidType !== undefined) {
984
+ localVarQueryParameter['bidType'] = bidType;
985
+ }
986
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
987
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
988
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
989
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
990
+ return {
991
+ url: (0, common_1.toPathString)(localVarUrlObj),
992
+ options: localVarRequestOptions,
993
+ };
994
+ }),
995
+ /**
996
+ * 기관에 공유된 물품 중 **아직 전송되지 않은 것**을 조회합니다. **증분 피드입니다.** 가져간 물품을 `POST /v2/products/receipts` 로 수신확인하면 다음 조회 결과에서 빠집니다. 수신확인을 하지 않으면 같은 물품이 계속 내려옵니다. **권장 흐름:** 조회 → 자기 시스템에 저장 → 저장에 성공한 물품 코드만 수신확인. 저장 전에 수신확인하면 그 물품은 다시 받을 수 없습니다. **조회 범위:** 요청 키가 대행하는 기관 그룹입니다. 기관 그룹이 설정되지 않은 키는 403 입니다. **필수 스코프:** `products:read`
997
+ * @summary 물품 카탈로그 조회
998
+ * @param {*} [options] Override http request option.
999
+ * @throws {RequiredError}
1000
+ */
1001
+ listProducts: (...args_1) => __awaiter(this, [...args_1], void 0, function* (options = {}) {
1002
+ const localVarPath = `/v2/products`;
1003
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1004
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
1005
+ let baseOptions;
1006
+ if (configuration) {
1007
+ baseOptions = configuration.baseOptions;
1008
+ }
1009
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
1010
+ const localVarHeaderParameter = {};
1011
+ const localVarQueryParameter = {};
1012
+ // authentication partner-oauth2 required
1013
+ // http bearer authentication required
1014
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
1015
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1016
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
1017
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1018
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
1019
+ return {
1020
+ url: (0, common_1.toPathString)(localVarUrlObj),
1021
+ options: localVarRequestOptions,
1022
+ };
1023
+ }),
1024
+ /**
1025
+ * 이 API 키의 웹훅 발송 시도를 최신순으로 조회합니다. 보낸 본문·수신측 응답 상태· 다음 재시도 예정 시각이 함께 실립니다. **호출 시점:** - 수신측 장애로 놓친 이벤트를 메울 때. 이 엔드포인트가 웹훅의 **폴링 대체 경로**입니다 — `status=EXHAUSTED` 로 걸러 다시 처리하면 됩니다. - \"이벤트가 안 온다\" 를 진단할 때. 발송 시도 자체가 없는지(구독·이벤트 타입 문제), 시도했지만 실패했는지(`responseStatus`·`responseBodyExcerpt`)를 여기서 가릅니다. **같은 이벤트가 여러 행으로 보입니다.** 재시도마다 한 행이며 `eventId` 가 같고 `attempt` 만 올라갑니다. 처리 여부는 `eventId` 기준으로 판단하세요. **페이지네이션:** `nextCursor` 를 다음 요청의 `cursor` 로 전달합니다. null 이면 마지막 페이지입니다. **`400`:** `status` 가 허용 값 밖이거나 `limit` 이 범위를 벗어났습니다 — 값을 고쳐 재시도하세요. **필수 스코프:** `webhooks:read`
1026
+ * @summary 웹훅 전송 이력 조회
1027
+ * @param {string} [endpointId] 이 구독의 전송만 조회합니다. 미지정이면 이 키의 모든 구독을 함께 조회합니다.
1028
+ * @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
1029
+ * @param {number} [limit] 페이지 크기(1~200, 기본 50).
1030
+ * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달합니다. 미지정 시 첫 페이지.
1031
+ * @param {*} [options] Override http request option.
1032
+ * @throws {RequiredError}
1033
+ */
1034
+ listWebhookDeliveries: (endpointId_1, status_1, limit_1, cursor_1, ...args_1) => __awaiter(this, [endpointId_1, status_1, limit_1, cursor_1, ...args_1], void 0, function* (endpointId, status, limit, cursor, options = {}) {
1035
+ const localVarPath = `/v2/webhook-deliveries`;
1036
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1037
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
1038
+ let baseOptions;
1039
+ if (configuration) {
1040
+ baseOptions = configuration.baseOptions;
1041
+ }
1042
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
1043
+ const localVarHeaderParameter = {};
1044
+ const localVarQueryParameter = {};
1045
+ // authentication partner-oauth2 required
1046
+ // http bearer authentication required
1047
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
1048
+ if (endpointId !== undefined) {
1049
+ localVarQueryParameter['endpointId'] = endpointId;
1050
+ }
1051
+ if (status !== undefined) {
1052
+ localVarQueryParameter['status'] = status;
1053
+ }
1054
+ if (limit !== undefined) {
1055
+ localVarQueryParameter['limit'] = limit;
1056
+ }
1057
+ if (cursor !== undefined) {
1058
+ localVarQueryParameter['cursor'] = cursor;
1059
+ }
1060
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1061
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
1062
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1063
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
1064
+ return {
1065
+ url: (0, common_1.toPathString)(localVarUrlObj),
1066
+ options: localVarRequestOptions,
1067
+ };
1068
+ }),
1069
+ /**
1070
+ * 이 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
1071
+ * @summary 웹훅 구독 목록 조회
1072
+ * @param {*} [options] Override http request option.
1073
+ * @throws {RequiredError}
1074
+ */
1075
+ listWebhookEndpoints: (...args_1) => __awaiter(this, [...args_1], void 0, function* (options = {}) {
1076
+ const localVarPath = `/v2/webhook-endpoints`;
1077
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1078
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
1079
+ let baseOptions;
1080
+ if (configuration) {
1081
+ baseOptions = configuration.baseOptions;
1082
+ }
1083
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
1084
+ const localVarHeaderParameter = {};
1085
+ const localVarQueryParameter = {};
1086
+ // authentication partner-oauth2 required
1087
+ // http bearer authentication required
1088
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
1089
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1090
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
1091
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1092
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
1093
+ return {
1094
+ url: (0, common_1.toPathString)(localVarUrlObj),
1095
+ options: localVarRequestOptions,
1096
+ };
1097
+ }),
1098
+ /**
1099
+ * 공고를 유찰 상태로 전환합니다. **호출 시점:** 입찰 마감 후 유찰 사유가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 공고 상태가 유찰(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` 헤더 필수.
1100
+ * @summary 유찰 처리
1101
+ * @param {string} bidId 공고 식별자(등록 응답의 bidId).
1102
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1103
+ * @param {MarkBidFailedRequestDto} markBidFailedRequestDto
1104
+ * @param {*} [options] Override http request option.
1105
+ * @throws {RequiredError}
1106
+ */
1107
+ markBidFailed: (bidId_1, idempotencyKey_1, markBidFailedRequestDto_1, ...args_1) => __awaiter(this, [bidId_1, idempotencyKey_1, markBidFailedRequestDto_1, ...args_1], void 0, function* (bidId, idempotencyKey, markBidFailedRequestDto, options = {}) {
1108
+ // verify required parameter 'bidId' is not null or undefined
1109
+ (0, common_1.assertParamExists)('markBidFailed', 'bidId', bidId);
1110
+ // verify required parameter 'idempotencyKey' is not null or undefined
1111
+ (0, common_1.assertParamExists)('markBidFailed', 'idempotencyKey', idempotencyKey);
1112
+ // verify required parameter 'markBidFailedRequestDto' is not null or undefined
1113
+ (0, common_1.assertParamExists)('markBidFailed', 'markBidFailedRequestDto', markBidFailedRequestDto);
1114
+ const localVarPath = `/v2/bids/{bidId}/fail`
1115
+ .replace('{bidId}', encodeURIComponent(String(bidId)));
1116
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1117
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
1118
+ let baseOptions;
1119
+ if (configuration) {
1120
+ baseOptions = configuration.baseOptions;
1121
+ }
1122
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
1123
+ const localVarHeaderParameter = {};
1124
+ const localVarQueryParameter = {};
1125
+ // authentication partner-oauth2 required
1126
+ // http bearer authentication required
1127
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
1128
+ localVarHeaderParameter['Content-Type'] = 'application/json';
1129
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1130
+ if (idempotencyKey != null) {
679
1131
  localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
680
1132
  }
681
1133
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
@@ -714,7 +1166,7 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
714
1166
  // authentication partner-oauth2 required
715
1167
  // http bearer authentication required
716
1168
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
717
- localVarHeaderParameter['Accept'] = 'application/json';
1169
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
718
1170
  if (idempotencyKey != null) {
719
1171
  localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
720
1172
  }
@@ -726,6 +1178,40 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
726
1178
  options: localVarRequestOptions,
727
1179
  };
728
1180
  }),
1181
+ /**
1182
+ * `GET /v2/bid-results` 와 **완전히 같은 조회**이며, 식별자 목록을 본문으로 받습니다. 스코프 `bids:read`. 공고 식별자 100건이면 URL 이 1KB를 넘습니다 — 중간 프록시가 긴 URL 을 자르는 환경을 위한 대체 경로입니다. **부수효과가 없으므로 `Idempotency-Key` 는 필요하지 않습니다.** POST 인 것은 전송 형태의 문제일 뿐이며, 가능하면 캐시·`ETag` 가 동작하는 `GET` 쪽을 쓰세요.
1183
+ * @summary 입찰 결과 배치 조회 (본문 전달)
1184
+ * @param {BidResultsBatchRequestDto} bidResultsBatchRequestDto
1185
+ * @param {*} [options] Override http request option.
1186
+ * @throws {RequiredError}
1187
+ */
1188
+ queryBidResults: (bidResultsBatchRequestDto_1, ...args_1) => __awaiter(this, [bidResultsBatchRequestDto_1, ...args_1], void 0, function* (bidResultsBatchRequestDto, options = {}) {
1189
+ // verify required parameter 'bidResultsBatchRequestDto' is not null or undefined
1190
+ (0, common_1.assertParamExists)('queryBidResults', 'bidResultsBatchRequestDto', bidResultsBatchRequestDto);
1191
+ const localVarPath = `/v2/bid-results/query`;
1192
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1193
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
1194
+ let baseOptions;
1195
+ if (configuration) {
1196
+ baseOptions = configuration.baseOptions;
1197
+ }
1198
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
1199
+ const localVarHeaderParameter = {};
1200
+ const localVarQueryParameter = {};
1201
+ // authentication partner-oauth2 required
1202
+ // http bearer authentication required
1203
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
1204
+ localVarHeaderParameter['Content-Type'] = 'application/json';
1205
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1206
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
1207
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1208
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
1209
+ localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(bidResultsBatchRequestDto, localVarRequestOptions, configuration);
1210
+ return {
1211
+ url: (0, common_1.toPathString)(localVarUrlObj),
1212
+ options: localVarRequestOptions,
1213
+ };
1214
+ }),
729
1215
  /**
730
1216
  * 공고의 자동생성 계약서류(발주서·공고결과·표준계약서 등)를 생성/재생성합니다. **V6 대응:** `RegenerateAllContractPdfsCommand` — 웹 어드민의 \"계약 서류 일괄 재생성\"과 동일 경로. **호출 시점:** 낙찰(계약 시작) 후 계약서류가 필요하거나, 생성에 실패한 서류를 다시 만들 때. **부수효과:** - 생성 실패(DEAD_LETTER) 상태의 자동생성 PDF 가 재생성 큐에 등록됩니다(비동기). - 승낙사항(ACCEPTANCE) 계열은 운영자 승인 워크플로가 필요해 이 경로에서 제외됩니다. **응답:** 즉시 파일이 아니라 큐 등록 결과(`enqueuedCount`/`skippedCount`)를 반환합니다. 잠시 후 자동 생성됩니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
731
1217
  * @summary 계약서류 생성(재생성)
@@ -753,7 +1239,7 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
753
1239
  // authentication partner-oauth2 required
754
1240
  // http bearer authentication required
755
1241
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
756
- localVarHeaderParameter['Accept'] = 'application/json';
1242
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
757
1243
  if (idempotencyKey != null) {
758
1244
  localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
759
1245
  }
@@ -796,7 +1282,7 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
796
1282
  // http bearer authentication required
797
1283
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
798
1284
  localVarHeaderParameter['Content-Type'] = 'application/json';
799
- localVarHeaderParameter['Accept'] = 'application/json';
1285
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
800
1286
  if (idempotencyKey != null) {
801
1287
  localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
802
1288
  }
@@ -812,11 +1298,14 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
812
1298
  /**
813
1299
  * 입찰 정보 등록. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수.
814
1300
  * @summary 입찰 정보 전송(등록)
1301
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
815
1302
  * @param {CreateBidRequestDto} createBidRequestDto
816
1303
  * @param {*} [options] Override http request option.
817
1304
  * @throws {RequiredError}
818
1305
  */
819
- registerBid: (createBidRequestDto_1, ...args_1) => __awaiter(this, [createBidRequestDto_1, ...args_1], void 0, function* (createBidRequestDto, options = {}) {
1306
+ registerBid: (idempotencyKey_1, createBidRequestDto_1, ...args_1) => __awaiter(this, [idempotencyKey_1, createBidRequestDto_1, ...args_1], void 0, function* (idempotencyKey, createBidRequestDto, options = {}) {
1307
+ // verify required parameter 'idempotencyKey' is not null or undefined
1308
+ (0, common_1.assertParamExists)('registerBid', 'idempotencyKey', idempotencyKey);
820
1309
  // verify required parameter 'createBidRequestDto' is not null or undefined
821
1310
  (0, common_1.assertParamExists)('registerBid', 'createBidRequestDto', createBidRequestDto);
822
1311
  const localVarPath = `/v2/bids`;
@@ -833,7 +1322,10 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
833
1322
  // http bearer authentication required
834
1323
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
835
1324
  localVarHeaderParameter['Content-Type'] = 'application/json';
836
- localVarHeaderParameter['Accept'] = 'application/json';
1325
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1326
+ if (idempotencyKey != null) {
1327
+ localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
1328
+ }
837
1329
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
838
1330
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
839
1331
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -870,7 +1362,7 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
870
1362
  // http bearer authentication required
871
1363
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
872
1364
  localVarHeaderParameter['Content-Type'] = 'application/json';
873
- localVarHeaderParameter['Accept'] = 'application/json';
1365
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
874
1366
  if (idempotencyKey != null) {
875
1367
  localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
876
1368
  }
@@ -884,22 +1376,22 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
884
1376
  };
885
1377
  }),
886
1378
  /**
887
- * 협상방식(NEGOTIATION/NEGOTIATION_AUTO) 공고의 응찰자별 점수를 입력합니다. **호출 시점:** 입찰 마감 낙찰(`POST /v2/bids/{bidId}/award`) 전. 협상방식 공고는 평가를 완료해야 낙찰에 진입할 수 있습니다. **부수효과:** - 응찰자별 기술점수(및 선택적 가격점수 override)가 기록됩니다. - `complete=true` 평가완료 게이트까지 적용돼 낙찰 진입이 가능해집니다. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body buyerId 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 + 동일 body 재전송 24시간 캐시 응답 반환.
888
- * @summary 협상 점수평가
1379
+ * 확정된 낙찰을 되돌려 공고를 낙찰대기(PENDING_AWARD) 상태로 보냅니다. 스코프 `awards:write` + `Idempotency-Key` 헤더 필수. **호출 시점:** 낙찰자가 계약을 포기했거나 낙찰 처리 자체가 잘못됐을 때. 되돌린 같은 공고에 다시 낙찰을 등록할 수 있습니다. **되돌릴 없는 경우 409:** - 수수료 결제가 이미 완료된 공고 - 세금계산서가 이미 발행된 공고 - 수입권공매 계열 낙찰방법(다수 낙찰자 구조라 되돌리기 단위가 다릅니다) **사유는 필수입니다** 감사 대상 행위이며 공고 이력에 남습니다. **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
1380
+ * @summary 낙찰 되돌리기
889
1381
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
890
- * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
891
- * @param {SubmitNegotiationScoresRequestDto} submitNegotiationScoresRequestDto
1382
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
1383
+ * @param {RevertAwardRequestDto} revertAwardRequestDto
892
1384
  * @param {*} [options] Override http request option.
893
1385
  * @throws {RequiredError}
894
1386
  */
895
- submitNegotiationScores: (bidId_1, idempotencyKey_1, submitNegotiationScoresRequestDto_1, ...args_1) => __awaiter(this, [bidId_1, idempotencyKey_1, submitNegotiationScoresRequestDto_1, ...args_1], void 0, function* (bidId, idempotencyKey, submitNegotiationScoresRequestDto, options = {}) {
1387
+ revertAward: (bidId_1, idempotencyKey_1, revertAwardRequestDto_1, ...args_1) => __awaiter(this, [bidId_1, idempotencyKey_1, revertAwardRequestDto_1, ...args_1], void 0, function* (bidId, idempotencyKey, revertAwardRequestDto, options = {}) {
896
1388
  // verify required parameter 'bidId' is not null or undefined
897
- (0, common_1.assertParamExists)('submitNegotiationScores', 'bidId', bidId);
1389
+ (0, common_1.assertParamExists)('revertAward', 'bidId', bidId);
898
1390
  // verify required parameter 'idempotencyKey' is not null or undefined
899
- (0, common_1.assertParamExists)('submitNegotiationScores', 'idempotencyKey', idempotencyKey);
900
- // verify required parameter 'submitNegotiationScoresRequestDto' is not null or undefined
901
- (0, common_1.assertParamExists)('submitNegotiationScores', 'submitNegotiationScoresRequestDto', submitNegotiationScoresRequestDto);
902
- const localVarPath = `/v2/bids/{bidId}/negotiation-scores`
1391
+ (0, common_1.assertParamExists)('revertAward', 'idempotencyKey', idempotencyKey);
1392
+ // verify required parameter 'revertAwardRequestDto' is not null or undefined
1393
+ (0, common_1.assertParamExists)('revertAward', 'revertAwardRequestDto', revertAwardRequestDto);
1394
+ const localVarPath = `/v2/bids/{bidId}/award`
903
1395
  .replace('{bidId}', encodeURIComponent(String(bidId)));
904
1396
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
905
1397
  const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
@@ -907,21 +1399,99 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
907
1399
  if (configuration) {
908
1400
  baseOptions = configuration.baseOptions;
909
1401
  }
910
- const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
1402
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'DELETE' }, baseOptions), options);
911
1403
  const localVarHeaderParameter = {};
912
1404
  const localVarQueryParameter = {};
913
1405
  // authentication partner-oauth2 required
914
1406
  // http bearer authentication required
915
1407
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
916
1408
  localVarHeaderParameter['Content-Type'] = 'application/json';
917
- localVarHeaderParameter['Accept'] = 'application/json';
1409
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1410
+ if (idempotencyKey != null) {
1411
+ localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
1412
+ }
1413
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
1414
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1415
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
1416
+ localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(revertAwardRequestDto, localVarRequestOptions, configuration);
1417
+ return {
1418
+ url: (0, common_1.toPathString)(localVarUrlObj),
1419
+ options: localVarRequestOptions,
1420
+ };
1421
+ }),
1422
+ /**
1423
+ * 서명 시크릿을 새로 발급합니다. 응답의 `secretVersion` 이 1 올라갑니다. **호출 시점:** 시크릿을 분실했거나 유출이 의심될 때, 또는 주기적 교체 정책이 있을 때. **새 시크릿은 이 응답에서 한 번만 나갑니다.** 조회로 다시 받을 수 없습니다. **옛 시크릿은 즉시 무효입니다.** 유예 기간이 없으므로, 수신측이 새 값을 반영하기 전에 도착한 이벤트는 서명 검증에 실패합니다. 배포 순서를 이렇게 잡으세요 — ① 수신측이 옛 값과 새 값을 **둘 다** 받아들이도록 배포 → ② 이 엔드포인트 호출 → ③ 응답의 새 값을 반영 → ④ 옛 값 제거. 검증 실패로 non-2xx 를 돌려주면 실패로 집계되어 20회 연속 시 구독이 중지됩니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 같은 키로 재전송하면 **새로 발급하지 않고** 처음 발급한 값을 그대로 돌려줍니다(24시간) — 네트워크 오류로 응답을 놓쳤을 때 같은 키로 다시 부르세요.
1424
+ * @summary 웹훅 서명 시크릿 재발급
1425
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
1426
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1427
+ * @param {*} [options] Override http request option.
1428
+ * @throws {RequiredError}
1429
+ */
1430
+ rotateWebhookSecret: (endpointId_1, idempotencyKey_1, ...args_1) => __awaiter(this, [endpointId_1, idempotencyKey_1, ...args_1], void 0, function* (endpointId, idempotencyKey, options = {}) {
1431
+ // verify required parameter 'endpointId' is not null or undefined
1432
+ (0, common_1.assertParamExists)('rotateWebhookSecret', 'endpointId', endpointId);
1433
+ // verify required parameter 'idempotencyKey' is not null or undefined
1434
+ (0, common_1.assertParamExists)('rotateWebhookSecret', 'idempotencyKey', idempotencyKey);
1435
+ const localVarPath = `/v2/webhook-endpoints/{endpointId}/rotate-secret`
1436
+ .replace('{endpointId}', encodeURIComponent(String(endpointId)));
1437
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1438
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
1439
+ let baseOptions;
1440
+ if (configuration) {
1441
+ baseOptions = configuration.baseOptions;
1442
+ }
1443
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
1444
+ const localVarHeaderParameter = {};
1445
+ const localVarQueryParameter = {};
1446
+ // authentication partner-oauth2 required
1447
+ // http bearer authentication required
1448
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
1449
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1450
+ if (idempotencyKey != null) {
1451
+ localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
1452
+ }
1453
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
1454
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1455
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
1456
+ return {
1457
+ url: (0, common_1.toPathString)(localVarUrlObj),
1458
+ options: localVarRequestOptions,
1459
+ };
1460
+ }),
1461
+ /**
1462
+ * 등록된 주소로 `ping` 이벤트를 즉시 1회 보내고 그 결과를 돌려줍니다. **호출 시점:** 구독을 등록한 직후, 수신 주소를 바꾼 직후, 방화벽·인증서를 손본 뒤. **응답은 발송 결과이지 요청 실패가 아닙니다.** 수신측이 받지 못해도 HTTP `200` 에 `delivered: false` 로 옵니다 — `responseStatus`(수신측 상태)와 `error`(연결 거부·타임아웃· TLS 오류)를 보고 원인을 좁히세요. 이 발송에도 실제 이벤트와 **똑같은 서명 헤더**가 실리므로 검증 코드를 그대로 시험할 수 있습니다. `ping` 은 구독 목록에 넣을 수 없는 타입이니, 수신측이 모르는 `eventType` 을 만나면 버리도록 짜여 있다면 이 확인만 실패할 수 있습니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 다시 보내려면 **새 키**를 쓰세요 — 같은 키는 24시간 동안 직전 결과를 그대로 돌려줍니다(재발송하지 않습니다).
1463
+ * @summary 웹훅 연결 확인 발송
1464
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
1465
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1466
+ * @param {*} [options] Override http request option.
1467
+ * @throws {RequiredError}
1468
+ */
1469
+ sendWebhookTestEvent: (endpointId_1, idempotencyKey_1, ...args_1) => __awaiter(this, [endpointId_1, idempotencyKey_1, ...args_1], void 0, function* (endpointId, idempotencyKey, options = {}) {
1470
+ // verify required parameter 'endpointId' is not null or undefined
1471
+ (0, common_1.assertParamExists)('sendWebhookTestEvent', 'endpointId', endpointId);
1472
+ // verify required parameter 'idempotencyKey' is not null or undefined
1473
+ (0, common_1.assertParamExists)('sendWebhookTestEvent', 'idempotencyKey', idempotencyKey);
1474
+ const localVarPath = `/v2/webhook-endpoints/{endpointId}/test`
1475
+ .replace('{endpointId}', encodeURIComponent(String(endpointId)));
1476
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1477
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
1478
+ let baseOptions;
1479
+ if (configuration) {
1480
+ baseOptions = configuration.baseOptions;
1481
+ }
1482
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
1483
+ const localVarHeaderParameter = {};
1484
+ const localVarQueryParameter = {};
1485
+ // authentication partner-oauth2 required
1486
+ // http bearer authentication required
1487
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
1488
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
918
1489
  if (idempotencyKey != null) {
919
1490
  localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
920
1491
  }
921
1492
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
922
1493
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
923
1494
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
924
- localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(submitNegotiationScoresRequestDto, localVarRequestOptions, configuration);
925
1495
  return {
926
1496
  url: (0, common_1.toPathString)(localVarUrlObj),
927
1497
  options: localVarRequestOptions,
@@ -931,14 +1501,20 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
931
1501
  * 등록된 공고의 내용을 수정합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. 진행중/초안 상태의 공고만 수정할 수 있습니다. **부수효과:** - 변경 내용이 반영되고 수정이력이 기록됩니다. - `hideEdit=true` 면 변경이력을 비공개 처리하고 노출 카운터 증가를 생략합니다. **수정 제약:** - 낙찰방법(awardMethod)은 수정 불가(잠금). - 참여자가 있으면 입찰방식/면허/예산/품목 일부가 잠깁니다. - 마감/취소된 공고는 수정할 수 없습니다. 한 섹션을 수정하려면 해당 섹션의 필수 필드를 함께 보내야 합니다(부분 섹션은 거부됨).
932
1502
  * @summary 입찰 공고 수정
933
1503
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
1504
+ * @param {string} ifMatch
1505
+ * @param {string} ifMatch2 수정하려는 공고의 ETag(필수). 직전 &#x60;GET /v2/bids/{bidId}&#x60; 응답의 &#x60;ETag&#x60; 헤더 값을 그대로 실어 보내세요. 누락하면 428, 그 사이 공고가 바뀌었으면 412 로 거절되며 아무것도 수정되지 않습니다.
934
1506
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
935
1507
  * @param {UpdateBidRequestDto} updateBidRequestDto
936
1508
  * @param {*} [options] Override http request option.
937
1509
  * @throws {RequiredError}
938
1510
  */
939
- updateBid: (bidId_1, idempotencyKey_1, updateBidRequestDto_1, ...args_1) => __awaiter(this, [bidId_1, idempotencyKey_1, updateBidRequestDto_1, ...args_1], void 0, function* (bidId, idempotencyKey, updateBidRequestDto, options = {}) {
1511
+ updateBid: (bidId_1, ifMatch_1, ifMatch2_1, idempotencyKey_1, updateBidRequestDto_1, ...args_1) => __awaiter(this, [bidId_1, ifMatch_1, ifMatch2_1, idempotencyKey_1, updateBidRequestDto_1, ...args_1], void 0, function* (bidId, ifMatch, ifMatch2, idempotencyKey, updateBidRequestDto, options = {}) {
940
1512
  // verify required parameter 'bidId' is not null or undefined
941
1513
  (0, common_1.assertParamExists)('updateBid', 'bidId', bidId);
1514
+ // verify required parameter 'ifMatch' is not null or undefined
1515
+ (0, common_1.assertParamExists)('updateBid', 'ifMatch', ifMatch);
1516
+ // verify required parameter 'ifMatch2' is not null or undefined
1517
+ (0, common_1.assertParamExists)('updateBid', 'ifMatch2', ifMatch2);
942
1518
  // verify required parameter 'idempotencyKey' is not null or undefined
943
1519
  (0, common_1.assertParamExists)('updateBid', 'idempotencyKey', idempotencyKey);
944
1520
  // verify required parameter 'updateBidRequestDto' is not null or undefined
@@ -958,7 +1534,13 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
958
1534
  // http bearer authentication required
959
1535
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
960
1536
  localVarHeaderParameter['Content-Type'] = 'application/json';
961
- localVarHeaderParameter['Accept'] = 'application/json';
1537
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1538
+ if (ifMatch != null) {
1539
+ localVarHeaderParameter['if-match'] = String(ifMatch);
1540
+ }
1541
+ if (ifMatch2 != null) {
1542
+ localVarHeaderParameter['If-Match'] = String(ifMatch2);
1543
+ }
962
1544
  if (idempotencyKey != null) {
963
1545
  localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
964
1546
  }
@@ -971,6 +1553,62 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
971
1553
  options: localVarRequestOptions,
972
1554
  };
973
1555
  }),
1556
+ /**
1557
+ * 수신 주소·구독 이벤트·상태를 수정합니다. 보낸 필드만 바뀝니다. **호출 시점:** 수신 주소가 바뀌었을 때, 구독 이벤트를 늘리거나 줄일 때, 연속 실패로 자동 중지된 구독을 고친 뒤 되살릴 때(`{\"status\":\"ACTIVE\"}`). **`eventTypes` 는 치환입니다** — 보낸 목록이 곧 새 구독 목록입니다. 하나를 더하려면 기존 목록에 더한 **전체**를 보내세요. **`If-Match` 가 필수입니다.** 먼저 `GET /v2/webhook-endpoints/{endpointId}` 로 현재 `ETag` 를 받아 그대로 실어 보내세요. 이 헤더가 없으면 두 요청이 앞서거니 뒤서거니 하며 먼저 한 수정을 조용히 덮어씁니다. - `428` — 헤더를 빼먹었습니다. 조회 후 `ETag` 를 실어 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다. 다시 조회해 최신 `ETag` 로 재시도하세요. 아무것도 수정되지 않았습니다. **시크릿은 이 경로로 바뀌지 않습니다** — 재발급은 `rotate-secret` 입니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
1558
+ * @summary 웹훅 구독 수정
1559
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
1560
+ * @param {string} ifMatch
1561
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
1562
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1563
+ * @param {UpdateWebhookEndpointRequestDto} updateWebhookEndpointRequestDto
1564
+ * @param {*} [options] Override http request option.
1565
+ * @throws {RequiredError}
1566
+ */
1567
+ updateWebhookEndpoint: (endpointId_1, ifMatch_1, ifMatch2_1, idempotencyKey_1, updateWebhookEndpointRequestDto_1, ...args_1) => __awaiter(this, [endpointId_1, ifMatch_1, ifMatch2_1, idempotencyKey_1, updateWebhookEndpointRequestDto_1, ...args_1], void 0, function* (endpointId, ifMatch, ifMatch2, idempotencyKey, updateWebhookEndpointRequestDto, options = {}) {
1568
+ // verify required parameter 'endpointId' is not null or undefined
1569
+ (0, common_1.assertParamExists)('updateWebhookEndpoint', 'endpointId', endpointId);
1570
+ // verify required parameter 'ifMatch' is not null or undefined
1571
+ (0, common_1.assertParamExists)('updateWebhookEndpoint', 'ifMatch', ifMatch);
1572
+ // verify required parameter 'ifMatch2' is not null or undefined
1573
+ (0, common_1.assertParamExists)('updateWebhookEndpoint', 'ifMatch2', ifMatch2);
1574
+ // verify required parameter 'idempotencyKey' is not null or undefined
1575
+ (0, common_1.assertParamExists)('updateWebhookEndpoint', 'idempotencyKey', idempotencyKey);
1576
+ // verify required parameter 'updateWebhookEndpointRequestDto' is not null or undefined
1577
+ (0, common_1.assertParamExists)('updateWebhookEndpoint', 'updateWebhookEndpointRequestDto', updateWebhookEndpointRequestDto);
1578
+ const localVarPath = `/v2/webhook-endpoints/{endpointId}`
1579
+ .replace('{endpointId}', encodeURIComponent(String(endpointId)));
1580
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1581
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
1582
+ let baseOptions;
1583
+ if (configuration) {
1584
+ baseOptions = configuration.baseOptions;
1585
+ }
1586
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'PATCH' }, baseOptions), options);
1587
+ const localVarHeaderParameter = {};
1588
+ const localVarQueryParameter = {};
1589
+ // authentication partner-oauth2 required
1590
+ // http bearer authentication required
1591
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
1592
+ localVarHeaderParameter['Content-Type'] = 'application/json';
1593
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1594
+ if (ifMatch != null) {
1595
+ localVarHeaderParameter['if-match'] = String(ifMatch);
1596
+ }
1597
+ if (ifMatch2 != null) {
1598
+ localVarHeaderParameter['If-Match'] = String(ifMatch2);
1599
+ }
1600
+ if (idempotencyKey != null) {
1601
+ localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
1602
+ }
1603
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
1604
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1605
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
1606
+ localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(updateWebhookEndpointRequestDto, localVarRequestOptions, configuration);
1607
+ return {
1608
+ url: (0, common_1.toPathString)(localVarUrlObj),
1609
+ options: localVarRequestOptions,
1610
+ };
1611
+ }),
974
1612
  /**
975
1613
  * 스코프 `files:write` + `Idempotency-Key` 헤더 필수. base64 또는 url 중 정확히 하나를 제출한다.
976
1614
  * @summary 입찰 첨부파일 업로드(base64 또는 url) → fileKey
@@ -995,7 +1633,7 @@ const PartnerV2ApiAxiosParamCreator = function (configuration) {
995
1633
  // http bearer authentication required
996
1634
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
997
1635
  localVarHeaderParameter['Content-Type'] = 'application/json';
998
- localVarHeaderParameter['Accept'] = 'application/json';
1636
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
999
1637
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
1000
1638
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1001
1639
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -1015,18 +1653,37 @@ const PartnerV2ApiFp = function (configuration) {
1015
1653
  const localVarAxiosParamCreator = (0, exports.PartnerV2ApiAxiosParamCreator)(configuration);
1016
1654
  return {
1017
1655
  /**
1018
- * 샌드박스 공고를 마감하는 **영업 데모 전용** 엔드포인트입니다. **가짜 상태 주입이 아닙니다.** backend 스케줄러가 부르는 것과 동일한 실제 `CloseBidCommand` dispatch 합니다 개찰이 실제로 수행되고, `status=\'B\'` 커밋 직전 투찰가 동기 복호화가 실제로 일어납니다(복호화 실패 마감이 중단됩니다). 엔드포인트는 데모인 동시에 살아있는 e2e 스모크입니다. **데모 공고 전용:** backend 공고 명의 == 데모 발주처인 공고에 한해서만 마감합니다. 실 발주처 공고는 절대 마감하지 않습니다. **마감 불가:** 이미 마감됐거나 마감 불가 상태면 409(`type: …/upstream-conflict`)를 반환합니다. **필수 스코프:** `bids:write`
1019
- * @summary 샌드박스 공고 마감 (영업 데모 전용)
1020
- * @param {string} bidId 샌드박스 공고 ID(&#x3D; backend bidId).
1656
+ * 저장을 마친 물품을 전송완료로 표시해 다음 조회에서 제외합니다. **되돌릴 없습니다.** 표시한 물품은 `GET /v2/products` 다시 내려오지 않으므로, 자기 시스템에 저장이 끝난 뒤에 호출하세요. **표시 범위는 기관 그룹으로 잠깁니다.** 다른 기관의 물품 코드를 섞어 보내면 건은 표시되지 않고 `acknowledged`요청 수보다 작게 돌아옵니다. **필수 스코프:** `products:write` **멱등성:** `Idempotency-Key` 헤더 필수.
1657
+ * @summary 물품 수신확인
1658
+ * @param {string} idempotencyKey 멱등성 (1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1659
+ * @param {AcknowledgeProductsRequestDto} acknowledgeProductsRequestDto
1021
1660
  * @param {*} [options] Override http request option.
1022
1661
  * @throws {RequiredError}
1023
1662
  */
1024
- closeSandboxBid(bidId, options) {
1663
+ acknowledgeProductReceipt(idempotencyKey, acknowledgeProductsRequestDto, options) {
1025
1664
  return __awaiter(this, void 0, void 0, function* () {
1026
1665
  var _a, _b, _c;
1027
- const localVarAxiosArgs = yield localVarAxiosParamCreator.closeSandboxBid(bidId, options);
1666
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.acknowledgeProductReceipt(idempotencyKey, acknowledgeProductsRequestDto, options);
1028
1667
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1029
- const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.closeSandboxBid']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1668
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.acknowledgeProductReceipt']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1669
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1670
+ });
1671
+ },
1672
+ /**
1673
+ * 진행중인 공고를 취소합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. **되돌릴 수 없습니다.** 취소 사유는 필수이며 공고 이력에 남습니다. **전제조건:** 진행중(ONGOING) 상태여야 합니다. **거부:** 진행중이 아니거나 이미 취소된 공고 → 409. 타 발주처 공고 → 403. **마감과의 차이:** 취소는 공고를 무효로 되돌리는 것이고, 유찰(`POST /v2/bids/{bidId}/fail`)은 응찰을 받았으나 낙찰자를 정하지 못한 종료입니다.
1674
+ * @summary 공고 취소
1675
+ * @param {string} bidId 공고 식별자(등록 응답의 bidId).
1676
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
1677
+ * @param {CancelBidRequestDto} cancelBidRequestDto
1678
+ * @param {*} [options] Override http request option.
1679
+ * @throws {RequiredError}
1680
+ */
1681
+ cancelBid(bidId, idempotencyKey, cancelBidRequestDto, options) {
1682
+ return __awaiter(this, void 0, void 0, function* () {
1683
+ var _a, _b, _c;
1684
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.cancelBid(bidId, idempotencyKey, cancelBidRequestDto, options);
1685
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1686
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.cancelBid']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1030
1687
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1031
1688
  });
1032
1689
  },
@@ -1066,40 +1723,41 @@ const PartnerV2ApiFp = function (configuration) {
1066
1723
  });
1067
1724
  },
1068
1725
  /**
1069
- * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인(APPROVED)되어 바로 결제 가능합니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. 거기서 카드를 골라 결제합니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/card-payment-requests/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
1726
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인되어 바로 결제할 수 있습니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 도메인 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
1070
1727
  * @summary 결제창 발행
1071
1728
  * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
1072
1729
  * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
1073
1730
  * @param {*} [options] Override http request option.
1074
1731
  * @throws {RequiredError}
1075
1732
  */
1076
- createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options) {
1733
+ createCardPayment(idempotencyKey, createCardPaymentRequestDto, options) {
1077
1734
  return __awaiter(this, void 0, void 0, function* () {
1078
1735
  var _a, _b, _c;
1079
- const localVarAxiosArgs = yield localVarAxiosParamCreator.createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options);
1736
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.createCardPayment(idempotencyKey, createCardPaymentRequestDto, options);
1080
1737
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1081
- const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.createCardPaymentRequest']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1738
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.createCardPayment']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1082
1739
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1083
1740
  });
1084
1741
  },
1085
1742
  /**
1086
- * 스코프 `embed:launch` 필수. 발주기관 담당자(memberId) 일회성 launch code(60초 TTL) 발급한다. code URL 싣지 말고 @cmarket/embed SDK postMessage 핸드셰이크로만 iframe 전달할 것. memberId API 키의 발주처 소속이 아니면 403, 미허용 screen 400.
1087
- * @summary 임베드 launch code 발급 (iframe SSO)
1088
- * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
1743
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 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` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
1744
+ * @summary 결제창 발행
1745
+ * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
1746
+ * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
1089
1747
  * @param {*} [options] Override http request option.
1090
1748
  * @throws {RequiredError}
1091
1749
  */
1092
- createEmbedLaunch(embedLaunchRequestDto, options) {
1750
+ createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options) {
1093
1751
  return __awaiter(this, void 0, void 0, function* () {
1094
1752
  var _a, _b, _c;
1095
- const localVarAxiosArgs = yield localVarAxiosParamCreator.createEmbedLaunch(embedLaunchRequestDto, options);
1753
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options);
1096
1754
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1097
- const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.createEmbedLaunch']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1755
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.createCardPaymentRequest']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1098
1756
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1099
1757
  });
1100
1758
  },
1101
1759
  /**
1102
- * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `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` 헤더 필수.
1760
+ * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `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 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
1103
1761
  * @summary 계약서류 생성
1104
1762
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1105
1763
  * @param {CreateExternalContractDocumentsRequestDto} createExternalContractDocumentsRequestDto
@@ -1116,7 +1774,43 @@ const PartnerV2ApiFp = function (configuration) {
1116
1774
  });
1117
1775
  },
1118
1776
  /**
1119
- * 무인증 — `fileKey` 자체가 capability 다(V5 `/download/{fileKey}` 같은 보안 모델). 파트너 응답의 `fileUrl`/`fullUrl` URL 가리킨다. 요청 시점에 서명하므로 URL저장해 두어도 만료되지 않는다. 응답은 실제 저장소 URL 로의 302 리다이렉트이며 리다이렉트 타깃은 1시간 만료되므로 302 자체를 캐시하지 것(`Cache-Control: no-store`).
1777
+ * 수신 주소와 구독할 이벤트를 등록합니다. **호출 시점:** 연동 초기 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
1778
+ * @summary 웹훅 구독 등록
1779
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1780
+ * @param {CreateWebhookEndpointRequestDto} createWebhookEndpointRequestDto
1781
+ * @param {*} [options] Override http request option.
1782
+ * @throws {RequiredError}
1783
+ */
1784
+ createWebhookEndpoint(idempotencyKey, createWebhookEndpointRequestDto, options) {
1785
+ return __awaiter(this, void 0, void 0, function* () {
1786
+ var _a, _b, _c;
1787
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.createWebhookEndpoint(idempotencyKey, createWebhookEndpointRequestDto, options);
1788
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1789
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.createWebhookEndpoint']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1790
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1791
+ });
1792
+ },
1793
+ /**
1794
+ * 구독을 삭제합니다. 이후 그 주소로는 아무 이벤트도 발송되지 않습니다. **호출 시점:** 연동을 종료할 때. 잠시만 멈추려면 삭제하지 말고 `PATCH … {\"status\":\"DISABLED\"}` 를 쓰세요 — 시크릿과 이벤트 구성이 남아 그대로 되살릴 수 있습니다. **되돌릴 수 없습니다.** 다시 등록하면 새 구독이고 서명 시크릿도 새 값입니다. **`If-Match` 가 필수입니다.** `GET` 으로 받은 `ETag` 를 실어 보내세요. - `428` — 헤더 누락. 조회 후 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다(누군가 수정했거나 발송기가 상태를 내렸습니다). 다시 조회해 정말 지울 대상이 맞는지 확인하고 최신 `ETag` 로 재시도하세요. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
1795
+ * @summary 웹훅 구독 삭제
1796
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
1797
+ * @param {string} ifMatch
1798
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
1799
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1800
+ * @param {*} [options] Override http request option.
1801
+ * @throws {RequiredError}
1802
+ */
1803
+ deleteWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, options) {
1804
+ return __awaiter(this, void 0, void 0, function* () {
1805
+ var _a, _b, _c;
1806
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.deleteWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, options);
1807
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1808
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.deleteWebhookEndpoint']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1809
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1810
+ });
1811
+ },
1812
+ /**
1813
+ * 무인증 — `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` 이 가리키는 주소라 계속 유지되며 중단 일정은 없습니다.
1120
1814
  * @summary 파일 다운로드 — 안정 URL(302)
1121
1815
  * @param {string} fileKey 파일 키 — UUIDv4 hex 32자. 업로드(&#x60;POST /v1|/v2/files&#x60;) 응답에서 받은 값.
1122
1816
  * @param {*} [options] Override http request option.
@@ -1147,6 +1841,22 @@ const PartnerV2ApiFp = function (configuration) {
1147
1841
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1148
1842
  });
1149
1843
  },
1844
+ /**
1845
+ * 공고의 납품·검수·계약완료 진행 상태를 조회합니다. 검수완료 전송의 읽기 카운터파트입니다. **세 축은 서로 다른 사건입니다.** - `delivered`: 낙찰 공급사가 납품(결과확인)을 보고했습니다. - `confirmed`/`confirmedAt`: 발주기관이 검수를 확인했습니다. - `contractCompletedAt`: 검수완료 전송이 원장에 반영된 시각입니다. 검수완료 전송(`POST /v2/bids/{bidId}/acceptance`)이 성사되었는지는 `contractCompletedAt` 이 채워졌는지로 확인하세요. **필수 스코프:** `contracts:read`
1846
+ * @summary 검수 현황 조회
1847
+ * @param {string} bidId 공고 ID(&#x3D; backend bidId &#x3D; 등록 응답의 bidNo).
1848
+ * @param {*} [options] Override http request option.
1849
+ * @throws {RequiredError}
1850
+ */
1851
+ getBidAcceptance(bidId, options) {
1852
+ return __awaiter(this, void 0, void 0, function* () {
1853
+ var _a, _b, _c;
1854
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getBidAcceptance(bidId, options);
1855
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1856
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.getBidAcceptance']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1857
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1858
+ });
1859
+ },
1150
1860
  /**
1151
1861
  * 공고의 응찰 참여 업체·순위·낙찰 여부를 조회한다. scope bids:read.
1152
1862
  * @summary 입찰 결과 조회
@@ -1164,7 +1874,7 @@ const PartnerV2ApiFp = function (configuration) {
1164
1874
  });
1165
1875
  },
1166
1876
  /**
1167
- * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회한다. scope bids:read. 가시성 마스킹과 직교한 정산 데이터 — read-only.
1877
+ * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 가시성 마스킹과는 직교한 정산 데이터이며 읽기 전용입니다. **필수 스코프:** `invoices:read` 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
1168
1878
  * @summary 입찰결과 정산정보 조회
1169
1879
  * @param {string} bidId
1170
1880
  * @param {*} [options] Override http request option.
@@ -1180,7 +1890,7 @@ const PartnerV2ApiFp = function (configuration) {
1180
1890
  });
1181
1891
  },
1182
1892
  /**
1183
- * 낙찰 계약의 거래명세서(문서·품목 라인)를 조회한다. scope contracts:read.
1893
+ * 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
1184
1894
  * @summary 거래명세서 조회
1185
1895
  * @param {string} bidId
1186
1896
  * @param {number} [paperCode]
@@ -1196,6 +1906,22 @@ const PartnerV2ApiFp = function (configuration) {
1196
1906
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1197
1907
  });
1198
1908
  },
1909
+ /**
1910
+ * 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **구 경로:** 버전 없는 `GET /files/{fileKey}` 는 만료 없는 안정 주소이고 파트너 응답의 `fileUrl`/`fullUrl` 이 그 값을 가리킵니다. 인증도 스코프도 없는 옛 표면이라 신규 연동은 이 엔드포인트를 쓰세요. 구 경로는 당분간 유지됩니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** 하이픈 없는 16진수 32자가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. **필수 스코프:** `files:read`
1911
+ * @summary 파일 조회(메타 + 내려받기 주소)
1912
+ * @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(하이픈 없는 16진수 32자).
1913
+ * @param {*} [options] Override http request option.
1914
+ * @throws {RequiredError}
1915
+ */
1916
+ getFileMeta(fileKey, options) {
1917
+ return __awaiter(this, void 0, void 0, function* () {
1918
+ var _a, _b, _c;
1919
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getFileMeta(fileKey, options);
1920
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1921
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.getFileMeta']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1922
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1923
+ });
1924
+ },
1199
1925
  /**
1200
1926
  * 등록한 계약의 계산서 발행 상태를 확인합니다. **언제 쓰나:** 씨마켓이 보내는 발행완료 통지를 놓쳤을 때의 **복구 경로**입니다. 평상시에는 통지를 받아 처리하고, 상태가 어긋난 것 같을 때 이 API 로 되읽으세요. **필수 스코프:** `contracts:read`
1201
1927
  * @summary 계산서 발행 상태 조회
@@ -1213,7 +1939,7 @@ const PartnerV2ApiFp = function (configuration) {
1213
1939
  });
1214
1940
  },
1215
1941
  /**
1216
- * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write`
1942
+ * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
1217
1943
  * @summary 공급사 카드결제 가능 여부
1218
1944
  * @param {string} memberId 계약업체 회원 ID
1219
1945
  * @param {*} [options] Override http request option.
@@ -1228,6 +1954,38 @@ const PartnerV2ApiFp = function (configuration) {
1228
1954
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1229
1955
  });
1230
1956
  },
1957
+ /**
1958
+ * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
1959
+ * @summary 공급사 카드결제 가능 여부
1960
+ * @param {string} memberId 계약업체 회원 ID
1961
+ * @param {*} [options] Override http request option.
1962
+ * @throws {RequiredError}
1963
+ */
1964
+ getSupplierCardPayableV2(memberId, options) {
1965
+ return __awaiter(this, void 0, void 0, function* () {
1966
+ var _a, _b, _c;
1967
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getSupplierCardPayableV2(memberId, options);
1968
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1969
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.getSupplierCardPayableV2']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1970
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1971
+ });
1972
+ },
1973
+ /**
1974
+ * 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
1975
+ * @summary 웹훅 구독 단건 조회
1976
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
1977
+ * @param {*} [options] Override http request option.
1978
+ * @throws {RequiredError}
1979
+ */
1980
+ getWebhookEndpoint(endpointId, options) {
1981
+ return __awaiter(this, void 0, void 0, function* () {
1982
+ var _a, _b, _c;
1983
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getWebhookEndpoint(endpointId, options);
1984
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1985
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.getWebhookEndpoint']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1986
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1987
+ });
1988
+ },
1231
1989
  /**
1232
1990
  * ERP 연동 직전 회선·인증 endpoint 동작 확인용.
1233
1991
  * @summary Partner API 헬스체크
@@ -1244,20 +2002,50 @@ const PartnerV2ApiFp = function (configuration) {
1244
2002
  });
1245
2003
  },
1246
2004
  /**
1247
- * 낙찰 공급사가 확정된 공고에 대해 세금계산서를 발행합니다. **호출 시점:** 낙찰자 선정(계약진행) 이후. 과세/면세를 자동 분리해 발행합니다. **부수효과:** - 세금계산서가 국세청에 발행되고 공고가 발행 완료로 마킹됩니다. - 이미 발행됐거나 분할 청구가 진행 중이면 409 거절됩니다. **소유권:** 발행 대상 공고가 API 키에 바인딩된 발주처 소유가 아니면 403. **분할 청구:** 세금계산서 **분할 발급**은 `/v2` 제공되지 않습니다 `/v1` 전용(`POST /v1/invoices/split-requests`)입니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 + 동일 body 재전송 24시간 캐시 응답 반환.
1248
- * @summary 세금계산서 발행
2005
+ * 공고의 계약서류 목록과 내려받기 주소를 조회합니다. **목록에 실리는 것:** 공고 전체에 공통인 서류(약관·자동생성 공통본) 낙찰자에게 귀속된 서류를 함께 싣습니다. 낙찰자 귀속 서류는 `winnerSequence` 낙찰자의 응찰 순번이 들어갑니다. **아직 없는 서류도 실립니다.** 공고가 제출을 요구했지만 아직 올라오지 않은 서류는 `fileKey: null` 나타나므로, 제출 여부는 값으로 판정하세요. **자동생성 서류:** `autoGenerated: true` 서류는 c-market 만들어 줍니다. 만드는 중이면 `generationState` `QUEUED`/`PROCESSING` 이고 `downloadUrl` 아직 없습니다. `DEAD_LETTER` 는 생성이 실패해 멈춘 상태이며, 같은 경로의 POST(재생성)로 다시 큐에 올립니다. **내려받기:** `downloadUrl` 유효기간 1시간의 서명 주소입니다. 저장해 두고 재사용하지 마시고 필요할 엔드포인트를 다시 호출하세요. 기간에 얽매이지 않으려면 `fileKey` 를 보관하시고 파일 내려받기 경로를 사용하세요. **보이는 범위:** 서버가 공고 낙찰방법과 진행 단계로 결정합니다. 응답을 그대로 사용하시고 클라이언트에서 다시 거르지 마세요. **필수 스코프:** `contracts:read`
2006
+ * @summary 계약서류 목록 조회
2007
+ * @param {string} bidId 공고번호(buy_idx, 예 CM…) 또는 외부 구매번호(bid_puchase_no).
2008
+ * @param {*} [options] Override http request option.
2009
+ * @throws {RequiredError}
2010
+ */
2011
+ listBidContractDocuments(bidId, options) {
2012
+ return __awaiter(this, void 0, void 0, function* () {
2013
+ var _a, _b, _c;
2014
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listBidContractDocuments(bidId, options);
2015
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2016
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.listBidContractDocuments']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2017
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2018
+ });
2019
+ },
2020
+ /**
2021
+ * 공고에 응찰한 업체 목록을 조회합니다. 스코프 `bids:read` 필수. **보이는 범위는 공고의 낙찰방법과 진행 단계가 결정합니다.** 개찰 전에는 업체명이 가려지고 (`companyName: null`), 순위는 산정 전까지 `null` 입니다. 이 판정은 서버가 소유하므로 응답을 그대로 사용하시고 클라이언트에서 다시 계산하지 마세요. 같은 목록이 `GET /v2/bids/{bidId}` 응답의 `participants` 에도 실립니다 — 응찰 현황만 필요하면 이 엔드포인트가 가볍습니다.
2022
+ * @summary 응찰 현황 조회
1249
2023
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
1250
- * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1251
- * @param {IssueTaxInvoiceRequestDto} issueTaxInvoiceRequestDto
1252
2024
  * @param {*} [options] Override http request option.
1253
2025
  * @throws {RequiredError}
1254
2026
  */
1255
- issueTaxInvoice(bidId, idempotencyKey, issueTaxInvoiceRequestDto, options) {
2027
+ listBidParticipants(bidId, options) {
1256
2028
  return __awaiter(this, void 0, void 0, function* () {
1257
2029
  var _a, _b, _c;
1258
- const localVarAxiosArgs = yield localVarAxiosParamCreator.issueTaxInvoice(bidId, idempotencyKey, issueTaxInvoiceRequestDto, options);
2030
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listBidParticipants(bidId, options);
1259
2031
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1260
- const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.issueTaxInvoice']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2032
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.listBidParticipants']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2033
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2034
+ });
2035
+ },
2036
+ /**
2037
+ * 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에는 `ETag` 가 실리므로, 다음 요청에 `If-None-Match` 로 되보내면 결과가 그대로일 때 `304` 를 본문 없이 받습니다 — 마감을 기다리는 동안의 전송량이 사라집니다. **식별자 전달:** `?bidIds=A,B,C`(쉼표) 또는 `?bidIds=A&bidIds=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다 — 요청한 건수와 받은 건수가 다를 수 있으니 `bidId` 로 대조하세요. **목록이 길어 URL 이 부담되면** `POST /v2/bid-results/query` 를 쓰세요. 응답은 같습니다.
2038
+ * @summary 입찰 결과 배치 조회
2039
+ * @param {string} bidIds 조회할 공고 식별자 목록. 쉼표로 구분하거나 &#x60;bidIds&#x60; 를 반복해 전달합니다. 최대 100건.
2040
+ * @param {*} [options] Override http request option.
2041
+ * @throws {RequiredError}
2042
+ */
2043
+ listBidResults(bidIds, options) {
2044
+ return __awaiter(this, void 0, void 0, function* () {
2045
+ var _a, _b, _c;
2046
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listBidResults(bidIds, options);
2047
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2048
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.listBidResults']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1261
2049
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1262
2050
  });
1263
2051
  },
@@ -1266,32 +2054,84 @@ const PartnerV2ApiFp = function (configuration) {
1266
2054
  * @summary 공고 목록 조회
1267
2055
  * @param {number} [limit] 페이지 크기(1~100, 기본 100).
1268
2056
  * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달한다. 미지정 시 첫 페이지. &#x60;nextCursor&#x3D;null&#x60; 이면 마지막 페이지다.
2057
+ * @param {Array<string>} [bidIds] 조회할 공고 식별자 CSV(최대 100건). 지정 시 그 공고만 조회한다.
2058
+ * @param {Array<BidPublicStatus>} [status] 공고 상태 필터(공개값) CSV. 지정 시 그중 하나라도 일치하는 공고만 조회한다.
2059
+ * @param {Array<ListBidsIncludeEnum>} [include] 행별 확장 부착 CSV. &#x60;results&#x60;&#x3D;응찰 참여자, &#x60;products&#x60;&#x3D;공고 등록 품목, &#x60;contacts&#x60;&#x3D;발주 담당자 성명·연락처·이메일. 미지정이면 부착하지 않는다(응답이 가볍고 조회 비용도 들지 않는다).
2060
+ * @param {*} [options] Override http request option.
2061
+ * @throws {RequiredError}
2062
+ */
2063
+ listBids(limit, cursor, bidIds, status, include, options) {
2064
+ return __awaiter(this, void 0, void 0, function* () {
2065
+ var _a, _b, _c;
2066
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listBids(limit, cursor, bidIds, status, include, options);
2067
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2068
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.listBids']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2069
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2070
+ });
2071
+ },
2072
+ /**
2073
+ * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `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 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
2074
+ * @summary 거래에 필요한 계약서류 목록 조회
2075
+ * @param {string} buyerId 발주기관 회원 ID(c-market memberId).
2076
+ * @param {ListExternalContractDocumentsBidTypeEnum} bidType 거래유형.
2077
+ * @param {*} [options] Override http request option.
2078
+ * @throws {RequiredError}
2079
+ */
2080
+ listExternalContractDocuments(buyerId, bidType, options) {
2081
+ return __awaiter(this, void 0, void 0, function* () {
2082
+ var _a, _b, _c;
2083
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listExternalContractDocuments(buyerId, bidType, options);
2084
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2085
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.listExternalContractDocuments']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2086
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2087
+ });
2088
+ },
2089
+ /**
2090
+ * 기관에 공유된 물품 중 **아직 전송되지 않은 것**을 조회합니다. **증분 피드입니다.** 가져간 물품을 `POST /v2/products/receipts` 로 수신확인하면 다음 조회 결과에서 빠집니다. 수신확인을 하지 않으면 같은 물품이 계속 내려옵니다. **권장 흐름:** 조회 → 자기 시스템에 저장 → 저장에 성공한 물품 코드만 수신확인. 저장 전에 수신확인하면 그 물품은 다시 받을 수 없습니다. **조회 범위:** 요청 키가 대행하는 기관 그룹입니다. 기관 그룹이 설정되지 않은 키는 403 입니다. **필수 스코프:** `products:read`
2091
+ * @summary 물품 카탈로그 조회
2092
+ * @param {*} [options] Override http request option.
2093
+ * @throws {RequiredError}
2094
+ */
2095
+ listProducts(options) {
2096
+ return __awaiter(this, void 0, void 0, function* () {
2097
+ var _a, _b, _c;
2098
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listProducts(options);
2099
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2100
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.listProducts']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2101
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2102
+ });
2103
+ },
2104
+ /**
2105
+ * 이 API 키의 웹훅 발송 시도를 최신순으로 조회합니다. 보낸 본문·수신측 응답 상태· 다음 재시도 예정 시각이 함께 실립니다. **호출 시점:** - 수신측 장애로 놓친 이벤트를 메울 때. 이 엔드포인트가 웹훅의 **폴링 대체 경로**입니다 — `status=EXHAUSTED` 로 걸러 다시 처리하면 됩니다. - \"이벤트가 안 온다\" 를 진단할 때. 발송 시도 자체가 없는지(구독·이벤트 타입 문제), 시도했지만 실패했는지(`responseStatus`·`responseBodyExcerpt`)를 여기서 가릅니다. **같은 이벤트가 여러 행으로 보입니다.** 재시도마다 한 행이며 `eventId` 가 같고 `attempt` 만 올라갑니다. 처리 여부는 `eventId` 기준으로 판단하세요. **페이지네이션:** `nextCursor` 를 다음 요청의 `cursor` 로 전달합니다. null 이면 마지막 페이지입니다. **`400`:** `status` 가 허용 값 밖이거나 `limit` 이 범위를 벗어났습니다 — 값을 고쳐 재시도하세요. **필수 스코프:** `webhooks:read`
2106
+ * @summary 웹훅 전송 이력 조회
2107
+ * @param {string} [endpointId] 이 구독의 전송만 조회합니다. 미지정이면 이 키의 모든 구독을 함께 조회합니다.
2108
+ * @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
2109
+ * @param {number} [limit] 페이지 크기(1~200, 기본 50).
2110
+ * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달합니다. 미지정 시 첫 페이지.
1269
2111
  * @param {*} [options] Override http request option.
1270
2112
  * @throws {RequiredError}
1271
2113
  */
1272
- listBids(limit, cursor, options) {
2114
+ listWebhookDeliveries(endpointId, status, limit, cursor, options) {
1273
2115
  return __awaiter(this, void 0, void 0, function* () {
1274
2116
  var _a, _b, _c;
1275
- const localVarAxiosArgs = yield localVarAxiosParamCreator.listBids(limit, cursor, options);
2117
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listWebhookDeliveries(endpointId, status, limit, cursor, options);
1276
2118
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1277
- const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.listBids']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2119
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.listWebhookDeliveries']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1278
2120
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1279
2121
  });
1280
2122
  },
1281
2123
  /**
1282
- * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 예: 채팅 기반 견적 에서 계약 전에 \"어떤 서류가 필요한가\" 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 거래유형에 적용되는 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` 운영자가 기본값(★)으로 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true`c-market 데이터를 채워 PDF 만들어 주는 서류입니다. 생성 API `paperCodes` 넣을 있습니다. - `autoGenerated=false` API 로는 만들 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 있습니다. 범위 밖이면 403 입니다. 대행 범위는 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read`
1283
- * @summary 거래에 필요한 계약서류 목록 조회
1284
- * @param {string} buyerId 발주기관 회원 ID(c-market memberId).
1285
- * @param {ListExternalContractDocumentsBidTypeEnum} bidType 거래유형.
2124
+ * 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
2125
+ * @summary 웹훅 구독 목록 조회
1286
2126
  * @param {*} [options] Override http request option.
1287
2127
  * @throws {RequiredError}
1288
2128
  */
1289
- listExternalContractDocuments(buyerId, bidType, options) {
2129
+ listWebhookEndpoints(options) {
1290
2130
  return __awaiter(this, void 0, void 0, function* () {
1291
2131
  var _a, _b, _c;
1292
- const localVarAxiosArgs = yield localVarAxiosParamCreator.listExternalContractDocuments(buyerId, bidType, options);
2132
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listWebhookEndpoints(options);
1293
2133
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1294
- const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.listExternalContractDocuments']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2134
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.listWebhookEndpoints']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1295
2135
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1296
2136
  });
1297
2137
  },
@@ -1330,6 +2170,22 @@ const PartnerV2ApiFp = function (configuration) {
1330
2170
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1331
2171
  });
1332
2172
  },
2173
+ /**
2174
+ * `GET /v2/bid-results` 와 **완전히 같은 조회**이며, 식별자 목록을 본문으로 받습니다. 스코프 `bids:read`. 공고 식별자 100건이면 URL 이 1KB를 넘습니다 — 중간 프록시가 긴 URL 을 자르는 환경을 위한 대체 경로입니다. **부수효과가 없으므로 `Idempotency-Key` 는 필요하지 않습니다.** POST 인 것은 전송 형태의 문제일 뿐이며, 가능하면 캐시·`ETag` 가 동작하는 `GET` 쪽을 쓰세요.
2175
+ * @summary 입찰 결과 배치 조회 (본문 전달)
2176
+ * @param {BidResultsBatchRequestDto} bidResultsBatchRequestDto
2177
+ * @param {*} [options] Override http request option.
2178
+ * @throws {RequiredError}
2179
+ */
2180
+ queryBidResults(bidResultsBatchRequestDto, options) {
2181
+ return __awaiter(this, void 0, void 0, function* () {
2182
+ var _a, _b, _c;
2183
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.queryBidResults(bidResultsBatchRequestDto, options);
2184
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2185
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.queryBidResults']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2186
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2187
+ });
2188
+ },
1333
2189
  /**
1334
2190
  * 공고의 자동생성 계약서류(발주서·공고결과·표준계약서 등)를 생성/재생성합니다. **V6 대응:** `RegenerateAllContractPdfsCommand` — 웹 어드민의 \"계약 서류 일괄 재생성\"과 동일 경로. **호출 시점:** 낙찰(계약 시작) 후 계약서류가 필요하거나, 생성에 실패한 서류를 다시 만들 때. **부수효과:** - 생성 실패(DEAD_LETTER) 상태의 자동생성 PDF 가 재생성 큐에 등록됩니다(비동기). - 승낙사항(ACCEPTANCE) 계열은 운영자 승인 워크플로가 필요해 이 경로에서 제외됩니다. **응답:** 즉시 파일이 아니라 큐 등록 결과(`enqueuedCount`/`skippedCount`)를 반환합니다. 잠시 후 자동 생성됩니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
1335
2191
  * @summary 계약서류 생성(재생성)
@@ -1368,14 +2224,15 @@ const PartnerV2ApiFp = function (configuration) {
1368
2224
  /**
1369
2225
  * 입찰 정보 등록. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수.
1370
2226
  * @summary 입찰 정보 전송(등록)
2227
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
1371
2228
  * @param {CreateBidRequestDto} createBidRequestDto
1372
2229
  * @param {*} [options] Override http request option.
1373
2230
  * @throws {RequiredError}
1374
2231
  */
1375
- registerBid(createBidRequestDto, options) {
2232
+ registerBid(idempotencyKey, createBidRequestDto, options) {
1376
2233
  return __awaiter(this, void 0, void 0, function* () {
1377
2234
  var _a, _b, _c;
1378
- const localVarAxiosArgs = yield localVarAxiosParamCreator.registerBid(createBidRequestDto, options);
2235
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.registerBid(idempotencyKey, createBidRequestDto, options);
1379
2236
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1380
2237
  const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.registerBid']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1381
2238
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -1399,20 +2256,54 @@ const PartnerV2ApiFp = function (configuration) {
1399
2256
  });
1400
2257
  },
1401
2258
  /**
1402
- * 협상방식(NEGOTIATION/NEGOTIATION_AUTO) 공고의 응찰자별 점수를 입력합니다. **호출 시점:** 입찰 마감 낙찰(`POST /v2/bids/{bidId}/award`) 전. 협상방식 공고는 평가를 완료해야 낙찰에 진입할 수 있습니다. **부수효과:** - 응찰자별 기술점수(및 선택적 가격점수 override)가 기록됩니다. - `complete=true` 평가완료 게이트까지 적용돼 낙찰 진입이 가능해집니다. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body buyerId 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 + 동일 body 재전송 24시간 캐시 응답 반환.
1403
- * @summary 협상 점수평가
2259
+ * 확정된 낙찰을 되돌려 공고를 낙찰대기(PENDING_AWARD) 상태로 보냅니다. 스코프 `awards:write` + `Idempotency-Key` 헤더 필수. **호출 시점:** 낙찰자가 계약을 포기했거나 낙찰 처리 자체가 잘못됐을 때. 되돌린 같은 공고에 다시 낙찰을 등록할 수 있습니다. **되돌릴 없는 경우 409:** - 수수료 결제가 이미 완료된 공고 - 세금계산서가 이미 발행된 공고 - 수입권공매 계열 낙찰방법(다수 낙찰자 구조라 되돌리기 단위가 다릅니다) **사유는 필수입니다** 감사 대상 행위이며 공고 이력에 남습니다. **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
2260
+ * @summary 낙찰 되돌리기
1404
2261
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
2262
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
2263
+ * @param {RevertAwardRequestDto} revertAwardRequestDto
2264
+ * @param {*} [options] Override http request option.
2265
+ * @throws {RequiredError}
2266
+ */
2267
+ revertAward(bidId, idempotencyKey, revertAwardRequestDto, options) {
2268
+ return __awaiter(this, void 0, void 0, function* () {
2269
+ var _a, _b, _c;
2270
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.revertAward(bidId, idempotencyKey, revertAwardRequestDto, options);
2271
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2272
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.revertAward']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2273
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2274
+ });
2275
+ },
2276
+ /**
2277
+ * 서명 시크릿을 새로 발급합니다. 응답의 `secretVersion` 이 1 올라갑니다. **호출 시점:** 시크릿을 분실했거나 유출이 의심될 때, 또는 주기적 교체 정책이 있을 때. **새 시크릿은 이 응답에서 한 번만 나갑니다.** 조회로 다시 받을 수 없습니다. **옛 시크릿은 즉시 무효입니다.** 유예 기간이 없으므로, 수신측이 새 값을 반영하기 전에 도착한 이벤트는 서명 검증에 실패합니다. 배포 순서를 이렇게 잡으세요 — ① 수신측이 옛 값과 새 값을 **둘 다** 받아들이도록 배포 → ② 이 엔드포인트 호출 → ③ 응답의 새 값을 반영 → ④ 옛 값 제거. 검증 실패로 non-2xx 를 돌려주면 실패로 집계되어 20회 연속 시 구독이 중지됩니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 같은 키로 재전송하면 **새로 발급하지 않고** 처음 발급한 값을 그대로 돌려줍니다(24시간) — 네트워크 오류로 응답을 놓쳤을 때 같은 키로 다시 부르세요.
2278
+ * @summary 웹훅 서명 시크릿 재발급
2279
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
2280
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
2281
+ * @param {*} [options] Override http request option.
2282
+ * @throws {RequiredError}
2283
+ */
2284
+ rotateWebhookSecret(endpointId, idempotencyKey, options) {
2285
+ return __awaiter(this, void 0, void 0, function* () {
2286
+ var _a, _b, _c;
2287
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.rotateWebhookSecret(endpointId, idempotencyKey, options);
2288
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2289
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.rotateWebhookSecret']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2290
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2291
+ });
2292
+ },
2293
+ /**
2294
+ * 등록된 주소로 `ping` 이벤트를 즉시 1회 보내고 그 결과를 돌려줍니다. **호출 시점:** 구독을 등록한 직후, 수신 주소를 바꾼 직후, 방화벽·인증서를 손본 뒤. **응답은 발송 결과이지 요청 실패가 아닙니다.** 수신측이 받지 못해도 HTTP `200` 에 `delivered: false` 로 옵니다 — `responseStatus`(수신측 상태)와 `error`(연결 거부·타임아웃· TLS 오류)를 보고 원인을 좁히세요. 이 발송에도 실제 이벤트와 **똑같은 서명 헤더**가 실리므로 검증 코드를 그대로 시험할 수 있습니다. `ping` 은 구독 목록에 넣을 수 없는 타입이니, 수신측이 모르는 `eventType` 을 만나면 버리도록 짜여 있다면 이 확인만 실패할 수 있습니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 다시 보내려면 **새 키**를 쓰세요 — 같은 키는 24시간 동안 직전 결과를 그대로 돌려줍니다(재발송하지 않습니다).
2295
+ * @summary 웹훅 연결 확인 발송
2296
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
1405
2297
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1406
- * @param {SubmitNegotiationScoresRequestDto} submitNegotiationScoresRequestDto
1407
2298
  * @param {*} [options] Override http request option.
1408
2299
  * @throws {RequiredError}
1409
2300
  */
1410
- submitNegotiationScores(bidId, idempotencyKey, submitNegotiationScoresRequestDto, options) {
2301
+ sendWebhookTestEvent(endpointId, idempotencyKey, options) {
1411
2302
  return __awaiter(this, void 0, void 0, function* () {
1412
2303
  var _a, _b, _c;
1413
- const localVarAxiosArgs = yield localVarAxiosParamCreator.submitNegotiationScores(bidId, idempotencyKey, submitNegotiationScoresRequestDto, options);
2304
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.sendWebhookTestEvent(endpointId, idempotencyKey, options);
1414
2305
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1415
- const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.submitNegotiationScores']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2306
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.sendWebhookTestEvent']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1416
2307
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1417
2308
  });
1418
2309
  },
@@ -1420,20 +2311,42 @@ const PartnerV2ApiFp = function (configuration) {
1420
2311
  * 등록된 공고의 내용을 수정합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. 진행중/초안 상태의 공고만 수정할 수 있습니다. **부수효과:** - 변경 내용이 반영되고 수정이력이 기록됩니다. - `hideEdit=true` 면 변경이력을 비공개 처리하고 노출 카운터 증가를 생략합니다. **수정 제약:** - 낙찰방법(awardMethod)은 수정 불가(잠금). - 참여자가 있으면 입찰방식/면허/예산/품목 일부가 잠깁니다. - 마감/취소된 공고는 수정할 수 없습니다. 한 섹션을 수정하려면 해당 섹션의 필수 필드를 함께 보내야 합니다(부분 섹션은 거부됨).
1421
2312
  * @summary 입찰 공고 수정
1422
2313
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
2314
+ * @param {string} ifMatch
2315
+ * @param {string} ifMatch2 수정하려는 공고의 ETag(필수). 직전 &#x60;GET /v2/bids/{bidId}&#x60; 응답의 &#x60;ETag&#x60; 헤더 값을 그대로 실어 보내세요. 누락하면 428, 그 사이 공고가 바뀌었으면 412 로 거절되며 아무것도 수정되지 않습니다.
1423
2316
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
1424
2317
  * @param {UpdateBidRequestDto} updateBidRequestDto
1425
2318
  * @param {*} [options] Override http request option.
1426
2319
  * @throws {RequiredError}
1427
2320
  */
1428
- updateBid(bidId, idempotencyKey, updateBidRequestDto, options) {
2321
+ updateBid(bidId, ifMatch, ifMatch2, idempotencyKey, updateBidRequestDto, options) {
1429
2322
  return __awaiter(this, void 0, void 0, function* () {
1430
2323
  var _a, _b, _c;
1431
- const localVarAxiosArgs = yield localVarAxiosParamCreator.updateBid(bidId, idempotencyKey, updateBidRequestDto, options);
2324
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.updateBid(bidId, ifMatch, ifMatch2, idempotencyKey, updateBidRequestDto, options);
1432
2325
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1433
2326
  const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.updateBid']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1434
2327
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1435
2328
  });
1436
2329
  },
2330
+ /**
2331
+ * 수신 주소·구독 이벤트·상태를 수정합니다. 보낸 필드만 바뀝니다. **호출 시점:** 수신 주소가 바뀌었을 때, 구독 이벤트를 늘리거나 줄일 때, 연속 실패로 자동 중지된 구독을 고친 뒤 되살릴 때(`{\"status\":\"ACTIVE\"}`). **`eventTypes` 는 치환입니다** — 보낸 목록이 곧 새 구독 목록입니다. 하나를 더하려면 기존 목록에 더한 **전체**를 보내세요. **`If-Match` 가 필수입니다.** 먼저 `GET /v2/webhook-endpoints/{endpointId}` 로 현재 `ETag` 를 받아 그대로 실어 보내세요. 이 헤더가 없으면 두 요청이 앞서거니 뒤서거니 하며 먼저 한 수정을 조용히 덮어씁니다. - `428` — 헤더를 빼먹었습니다. 조회 후 `ETag` 를 실어 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다. 다시 조회해 최신 `ETag` 로 재시도하세요. 아무것도 수정되지 않았습니다. **시크릿은 이 경로로 바뀌지 않습니다** — 재발급은 `rotate-secret` 입니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
2332
+ * @summary 웹훅 구독 수정
2333
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
2334
+ * @param {string} ifMatch
2335
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
2336
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
2337
+ * @param {UpdateWebhookEndpointRequestDto} updateWebhookEndpointRequestDto
2338
+ * @param {*} [options] Override http request option.
2339
+ * @throws {RequiredError}
2340
+ */
2341
+ updateWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, updateWebhookEndpointRequestDto, options) {
2342
+ return __awaiter(this, void 0, void 0, function* () {
2343
+ var _a, _b, _c;
2344
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.updateWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, updateWebhookEndpointRequestDto, options);
2345
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2346
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerV2Api.updateWebhookEndpoint']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2347
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2348
+ });
2349
+ },
1437
2350
  /**
1438
2351
  * 스코프 `files:write` + `Idempotency-Key` 헤더 필수. base64 또는 url 중 정확히 하나를 제출한다.
1439
2352
  * @summary 입찰 첨부파일 업로드(base64 또는 url) → fileKey
@@ -1460,14 +2373,27 @@ const PartnerV2ApiFactory = function (configuration, basePath, axios) {
1460
2373
  const localVarFp = (0, exports.PartnerV2ApiFp)(configuration);
1461
2374
  return {
1462
2375
  /**
1463
- * 샌드박스 공고를 마감하는 **영업 데모 전용** 엔드포인트입니다. **가짜 상태 주입이 아닙니다.** backend 스케줄러가 부르는 것과 동일한 실제 `CloseBidCommand` dispatch 합니다 개찰이 실제로 수행되고, `status=\'B\'` 커밋 직전 투찰가 동기 복호화가 실제로 일어납니다(복호화 실패 마감이 중단됩니다). 엔드포인트는 데모인 동시에 살아있는 e2e 스모크입니다. **데모 공고 전용:** backend 공고 명의 == 데모 발주처인 공고에 한해서만 마감합니다. 실 발주처 공고는 절대 마감하지 않습니다. **마감 불가:** 이미 마감됐거나 마감 불가 상태면 409(`type: …/upstream-conflict`)를 반환합니다. **필수 스코프:** `bids:write`
1464
- * @summary 샌드박스 공고 마감 (영업 데모 전용)
1465
- * @param {string} bidId 샌드박스 공고 ID(&#x3D; backend bidId).
2376
+ * 저장을 마친 물품을 전송완료로 표시해 다음 조회에서 제외합니다. **되돌릴 없습니다.** 표시한 물품은 `GET /v2/products` 다시 내려오지 않으므로, 자기 시스템에 저장이 끝난 뒤에 호출하세요. **표시 범위는 기관 그룹으로 잠깁니다.** 다른 기관의 물품 코드를 섞어 보내면 건은 표시되지 않고 `acknowledged`요청 수보다 작게 돌아옵니다. **필수 스코프:** `products:write` **멱등성:** `Idempotency-Key` 헤더 필수.
2377
+ * @summary 물품 수신확인
2378
+ * @param {string} idempotencyKey 멱등성 (1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
2379
+ * @param {AcknowledgeProductsRequestDto} acknowledgeProductsRequestDto
2380
+ * @param {*} [options] Override http request option.
2381
+ * @throws {RequiredError}
2382
+ */
2383
+ acknowledgeProductReceipt(idempotencyKey, acknowledgeProductsRequestDto, options) {
2384
+ return localVarFp.acknowledgeProductReceipt(idempotencyKey, acknowledgeProductsRequestDto, options).then((request) => request(axios, basePath));
2385
+ },
2386
+ /**
2387
+ * 진행중인 공고를 취소합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. **되돌릴 수 없습니다.** 취소 사유는 필수이며 공고 이력에 남습니다. **전제조건:** 진행중(ONGOING) 상태여야 합니다. **거부:** 진행중이 아니거나 이미 취소된 공고 → 409. 타 발주처 공고 → 403. **마감과의 차이:** 취소는 공고를 무효로 되돌리는 것이고, 유찰(`POST /v2/bids/{bidId}/fail`)은 응찰을 받았으나 낙찰자를 정하지 못한 종료입니다.
2388
+ * @summary 공고 취소
2389
+ * @param {string} bidId 공고 식별자(등록 응답의 bidId).
2390
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
2391
+ * @param {CancelBidRequestDto} cancelBidRequestDto
1466
2392
  * @param {*} [options] Override http request option.
1467
2393
  * @throws {RequiredError}
1468
2394
  */
1469
- closeSandboxBid(bidId, options) {
1470
- return localVarFp.closeSandboxBid(bidId, options).then((request) => request(axios, basePath));
2395
+ cancelBid(bidId, idempotencyKey, cancelBidRequestDto, options) {
2396
+ return localVarFp.cancelBid(bidId, idempotencyKey, cancelBidRequestDto, options).then((request) => request(axios, basePath));
1471
2397
  },
1472
2398
  /**
1473
2399
  * 낙찰 공고의 검수(납품 검수)가 완료되었음을 기록합니다. **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` 헤더 필수.
@@ -1493,28 +2419,29 @@ const PartnerV2ApiFactory = function (configuration, basePath, axios) {
1493
2419
  return localVarFp.completeInvoice(bidId, idempotencyKey, options).then((request) => request(axios, basePath));
1494
2420
  },
1495
2421
  /**
1496
- * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인(APPROVED)되어 바로 결제 가능합니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. 거기서 카드를 골라 결제합니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/card-payment-requests/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
2422
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인되어 바로 결제할 수 있습니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 도메인 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
1497
2423
  * @summary 결제창 발행
1498
2424
  * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
1499
2425
  * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
1500
2426
  * @param {*} [options] Override http request option.
1501
2427
  * @throws {RequiredError}
1502
2428
  */
1503
- createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options) {
1504
- return localVarFp.createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options).then((request) => request(axios, basePath));
2429
+ createCardPayment(idempotencyKey, createCardPaymentRequestDto, options) {
2430
+ return localVarFp.createCardPayment(idempotencyKey, createCardPaymentRequestDto, options).then((request) => request(axios, basePath));
1505
2431
  },
1506
2432
  /**
1507
- * 스코프 `embed:launch` 필수. 발주기관 담당자(memberId) 일회성 launch code(60초 TTL) 발급한다. code URL 싣지 말고 @cmarket/embed SDK postMessage 핸드셰이크로만 iframe 전달할 것. memberId API 키의 발주처 소속이 아니면 403, 미허용 screen 400.
1508
- * @summary 임베드 launch code 발급 (iframe SSO)
1509
- * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
2433
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 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` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
2434
+ * @summary 결제창 발행
2435
+ * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
2436
+ * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
1510
2437
  * @param {*} [options] Override http request option.
1511
2438
  * @throws {RequiredError}
1512
2439
  */
1513
- createEmbedLaunch(embedLaunchRequestDto, options) {
1514
- return localVarFp.createEmbedLaunch(embedLaunchRequestDto, options).then((request) => request(axios, basePath));
2440
+ createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options) {
2441
+ return localVarFp.createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options).then((request) => request(axios, basePath));
1515
2442
  },
1516
2443
  /**
1517
- * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `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` 헤더 필수.
2444
+ * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `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 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
1518
2445
  * @summary 계약서류 생성
1519
2446
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1520
2447
  * @param {CreateExternalContractDocumentsRequestDto} createExternalContractDocumentsRequestDto
@@ -1525,7 +2452,31 @@ const PartnerV2ApiFactory = function (configuration, basePath, axios) {
1525
2452
  return localVarFp.createExternalContractDocuments(idempotencyKey, createExternalContractDocumentsRequestDto, options).then((request) => request(axios, basePath));
1526
2453
  },
1527
2454
  /**
1528
- * 무인증 — `fileKey` 자체가 capability 다(V5 `/download/{fileKey}` 같은 보안 모델). 파트너 응답의 `fileUrl`/`fullUrl` URL 가리킨다. 요청 시점에 서명하므로 URL저장해 두어도 만료되지 않는다. 응답은 실제 저장소 URL 로의 302 리다이렉트이며 리다이렉트 타깃은 1시간 만료되므로 302 자체를 캐시하지 것(`Cache-Control: no-store`).
2455
+ * 수신 주소와 구독할 이벤트를 등록합니다. **호출 시점:** 연동 초기 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
2456
+ * @summary 웹훅 구독 등록
2457
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
2458
+ * @param {CreateWebhookEndpointRequestDto} createWebhookEndpointRequestDto
2459
+ * @param {*} [options] Override http request option.
2460
+ * @throws {RequiredError}
2461
+ */
2462
+ createWebhookEndpoint(idempotencyKey, createWebhookEndpointRequestDto, options) {
2463
+ return localVarFp.createWebhookEndpoint(idempotencyKey, createWebhookEndpointRequestDto, options).then((request) => request(axios, basePath));
2464
+ },
2465
+ /**
2466
+ * 구독을 삭제합니다. 이후 그 주소로는 아무 이벤트도 발송되지 않습니다. **호출 시점:** 연동을 종료할 때. 잠시만 멈추려면 삭제하지 말고 `PATCH … {\"status\":\"DISABLED\"}` 를 쓰세요 — 시크릿과 이벤트 구성이 남아 그대로 되살릴 수 있습니다. **되돌릴 수 없습니다.** 다시 등록하면 새 구독이고 서명 시크릿도 새 값입니다. **`If-Match` 가 필수입니다.** `GET` 으로 받은 `ETag` 를 실어 보내세요. - `428` — 헤더 누락. 조회 후 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다(누군가 수정했거나 발송기가 상태를 내렸습니다). 다시 조회해 정말 지울 대상이 맞는지 확인하고 최신 `ETag` 로 재시도하세요. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
2467
+ * @summary 웹훅 구독 삭제
2468
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
2469
+ * @param {string} ifMatch
2470
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
2471
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
2472
+ * @param {*} [options] Override http request option.
2473
+ * @throws {RequiredError}
2474
+ */
2475
+ deleteWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, options) {
2476
+ return localVarFp.deleteWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, options).then((request) => request(axios, basePath));
2477
+ },
2478
+ /**
2479
+ * 무인증 — `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` 이 가리키는 주소라 계속 유지되며 중단 일정은 없습니다.
1529
2480
  * @summary 파일 다운로드 — 안정 URL(302)
1530
2481
  * @param {string} fileKey 파일 키 — UUIDv4 hex 32자. 업로드(&#x60;POST /v1|/v2/files&#x60;) 응답에서 받은 값.
1531
2482
  * @param {*} [options] Override http request option.
@@ -1544,6 +2495,16 @@ const PartnerV2ApiFactory = function (configuration, basePath, axios) {
1544
2495
  getBid(bidId, options) {
1545
2496
  return localVarFp.getBid(bidId, options).then((request) => request(axios, basePath));
1546
2497
  },
2498
+ /**
2499
+ * 공고의 납품·검수·계약완료 진행 상태를 조회합니다. 검수완료 전송의 읽기 카운터파트입니다. **세 축은 서로 다른 사건입니다.** - `delivered`: 낙찰 공급사가 납품(결과확인)을 보고했습니다. - `confirmed`/`confirmedAt`: 발주기관이 검수를 확인했습니다. - `contractCompletedAt`: 검수완료 전송이 원장에 반영된 시각입니다. 검수완료 전송(`POST /v2/bids/{bidId}/acceptance`)이 성사되었는지는 `contractCompletedAt` 이 채워졌는지로 확인하세요. **필수 스코프:** `contracts:read`
2500
+ * @summary 검수 현황 조회
2501
+ * @param {string} bidId 공고 ID(&#x3D; backend bidId &#x3D; 등록 응답의 bidNo).
2502
+ * @param {*} [options] Override http request option.
2503
+ * @throws {RequiredError}
2504
+ */
2505
+ getBidAcceptance(bidId, options) {
2506
+ return localVarFp.getBidAcceptance(bidId, options).then((request) => request(axios, basePath));
2507
+ },
1547
2508
  /**
1548
2509
  * 공고의 응찰 참여 업체·순위·낙찰 여부를 조회한다. scope bids:read.
1549
2510
  * @summary 입찰 결과 조회
@@ -1555,7 +2516,7 @@ const PartnerV2ApiFactory = function (configuration, basePath, axios) {
1555
2516
  return localVarFp.getBidResults(bidId, options).then((request) => request(axios, basePath));
1556
2517
  },
1557
2518
  /**
1558
- * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회한다. scope bids:read. 가시성 마스킹과 직교한 정산 데이터 — read-only.
2519
+ * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 가시성 마스킹과는 직교한 정산 데이터이며 읽기 전용입니다. **필수 스코프:** `invoices:read` 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
1559
2520
  * @summary 입찰결과 정산정보 조회
1560
2521
  * @param {string} bidId
1561
2522
  * @param {*} [options] Override http request option.
@@ -1565,7 +2526,7 @@ const PartnerV2ApiFactory = function (configuration, basePath, axios) {
1565
2526
  return localVarFp.getBidSettlement(bidId, options).then((request) => request(axios, basePath));
1566
2527
  },
1567
2528
  /**
1568
- * 낙찰 계약의 거래명세서(문서·품목 라인)를 조회한다. scope contracts:read.
2529
+ * 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
1569
2530
  * @summary 거래명세서 조회
1570
2531
  * @param {string} bidId
1571
2532
  * @param {number} [paperCode]
@@ -1575,6 +2536,16 @@ const PartnerV2ApiFactory = function (configuration, basePath, axios) {
1575
2536
  getBidStatement(bidId, paperCode, options) {
1576
2537
  return localVarFp.getBidStatement(bidId, paperCode, options).then((request) => request(axios, basePath));
1577
2538
  },
2539
+ /**
2540
+ * 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **구 경로:** 버전 없는 `GET /files/{fileKey}` 는 만료 없는 안정 주소이고 파트너 응답의 `fileUrl`/`fullUrl` 이 그 값을 가리킵니다. 인증도 스코프도 없는 옛 표면이라 신규 연동은 이 엔드포인트를 쓰세요. 구 경로는 당분간 유지됩니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** 하이픈 없는 16진수 32자가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. **필수 스코프:** `files:read`
2541
+ * @summary 파일 조회(메타 + 내려받기 주소)
2542
+ * @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(하이픈 없는 16진수 32자).
2543
+ * @param {*} [options] Override http request option.
2544
+ * @throws {RequiredError}
2545
+ */
2546
+ getFileMeta(fileKey, options) {
2547
+ return localVarFp.getFileMeta(fileKey, options).then((request) => request(axios, basePath));
2548
+ },
1578
2549
  /**
1579
2550
  * 등록한 계약의 계산서 발행 상태를 확인합니다. **언제 쓰나:** 씨마켓이 보내는 발행완료 통지를 놓쳤을 때의 **복구 경로**입니다. 평상시에는 통지를 받아 처리하고, 상태가 어긋난 것 같을 때 이 API 로 되읽으세요. **필수 스코프:** `contracts:read`
1580
2551
  * @summary 계산서 발행 상태 조회
@@ -1586,7 +2557,7 @@ const PartnerV2ApiFactory = function (configuration, basePath, axios) {
1586
2557
  return localVarFp.getSemoContractTaxinvoiceStatus(externalContractId, options).then((request) => request(axios, basePath));
1587
2558
  },
1588
2559
  /**
1589
- * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write`
2560
+ * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
1590
2561
  * @summary 공급사 카드결제 가능 여부
1591
2562
  * @param {string} memberId 계약업체 회원 ID
1592
2563
  * @param {*} [options] Override http request option.
@@ -1595,6 +2566,26 @@ const PartnerV2ApiFactory = function (configuration, basePath, axios) {
1595
2566
  getSupplierCardPayable(memberId, options) {
1596
2567
  return localVarFp.getSupplierCardPayable(memberId, options).then((request) => request(axios, basePath));
1597
2568
  },
2569
+ /**
2570
+ * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
2571
+ * @summary 공급사 카드결제 가능 여부
2572
+ * @param {string} memberId 계약업체 회원 ID
2573
+ * @param {*} [options] Override http request option.
2574
+ * @throws {RequiredError}
2575
+ */
2576
+ getSupplierCardPayableV2(memberId, options) {
2577
+ return localVarFp.getSupplierCardPayableV2(memberId, options).then((request) => request(axios, basePath));
2578
+ },
2579
+ /**
2580
+ * 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
2581
+ * @summary 웹훅 구독 단건 조회
2582
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
2583
+ * @param {*} [options] Override http request option.
2584
+ * @throws {RequiredError}
2585
+ */
2586
+ getWebhookEndpoint(endpointId, options) {
2587
+ return localVarFp.getWebhookEndpoint(endpointId, options).then((request) => request(axios, basePath));
2588
+ },
1598
2589
  /**
1599
2590
  * ERP 연동 직전 회선·인증 endpoint 동작 확인용.
1600
2591
  * @summary Partner API 헬스체크
@@ -1605,30 +2596,51 @@ const PartnerV2ApiFactory = function (configuration, basePath, axios) {
1605
2596
  return localVarFp.healthControllerCheck(options).then((request) => request(axios, basePath));
1606
2597
  },
1607
2598
  /**
1608
- * 낙찰 공급사가 확정된 공고에 대해 세금계산서를 발행합니다. **호출 시점:** 낙찰자 선정(계약진행) 이후. 과세/면세를 자동 분리해 발행합니다. **부수효과:** - 세금계산서가 국세청에 발행되고 공고가 발행 완료로 마킹됩니다. - 이미 발행됐거나 분할 청구가 진행 중이면 409 거절됩니다. **소유권:** 발행 대상 공고가 API 키에 바인딩된 발주처 소유가 아니면 403. **분할 청구:** 세금계산서 **분할 발급**은 `/v2` 제공되지 않습니다 `/v1` 전용(`POST /v1/invoices/split-requests`)입니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 + 동일 body 재전송 24시간 캐시 응답 반환.
1609
- * @summary 세금계산서 발행
2599
+ * 공고의 계약서류 목록과 내려받기 주소를 조회합니다. **목록에 실리는 것:** 공고 전체에 공통인 서류(약관·자동생성 공통본) 낙찰자에게 귀속된 서류를 함께 싣습니다. 낙찰자 귀속 서류는 `winnerSequence` 낙찰자의 응찰 순번이 들어갑니다. **아직 없는 서류도 실립니다.** 공고가 제출을 요구했지만 아직 올라오지 않은 서류는 `fileKey: null` 나타나므로, 제출 여부는 값으로 판정하세요. **자동생성 서류:** `autoGenerated: true` 서류는 c-market 만들어 줍니다. 만드는 중이면 `generationState` `QUEUED`/`PROCESSING` 이고 `downloadUrl` 아직 없습니다. `DEAD_LETTER` 는 생성이 실패해 멈춘 상태이며, 같은 경로의 POST(재생성)로 다시 큐에 올립니다. **내려받기:** `downloadUrl` 유효기간 1시간의 서명 주소입니다. 저장해 두고 재사용하지 마시고 필요할 엔드포인트를 다시 호출하세요. 기간에 얽매이지 않으려면 `fileKey` 를 보관하시고 파일 내려받기 경로를 사용하세요. **보이는 범위:** 서버가 공고 낙찰방법과 진행 단계로 결정합니다. 응답을 그대로 사용하시고 클라이언트에서 다시 거르지 마세요. **필수 스코프:** `contracts:read`
2600
+ * @summary 계약서류 목록 조회
2601
+ * @param {string} bidId 공고번호(buy_idx, 예 CM…) 또는 외부 구매번호(bid_puchase_no).
2602
+ * @param {*} [options] Override http request option.
2603
+ * @throws {RequiredError}
2604
+ */
2605
+ listBidContractDocuments(bidId, options) {
2606
+ return localVarFp.listBidContractDocuments(bidId, options).then((request) => request(axios, basePath));
2607
+ },
2608
+ /**
2609
+ * 공고에 응찰한 업체 목록을 조회합니다. 스코프 `bids:read` 필수. **보이는 범위는 공고의 낙찰방법과 진행 단계가 결정합니다.** 개찰 전에는 업체명이 가려지고 (`companyName: null`), 순위는 산정 전까지 `null` 입니다. 이 판정은 서버가 소유하므로 응답을 그대로 사용하시고 클라이언트에서 다시 계산하지 마세요. 같은 목록이 `GET /v2/bids/{bidId}` 응답의 `participants` 에도 실립니다 — 응찰 현황만 필요하면 이 엔드포인트가 가볍습니다.
2610
+ * @summary 응찰 현황 조회
1610
2611
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
1611
- * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1612
- * @param {IssueTaxInvoiceRequestDto} issueTaxInvoiceRequestDto
1613
2612
  * @param {*} [options] Override http request option.
1614
2613
  * @throws {RequiredError}
1615
2614
  */
1616
- issueTaxInvoice(bidId, idempotencyKey, issueTaxInvoiceRequestDto, options) {
1617
- return localVarFp.issueTaxInvoice(bidId, idempotencyKey, issueTaxInvoiceRequestDto, options).then((request) => request(axios, basePath));
2615
+ listBidParticipants(bidId, options) {
2616
+ return localVarFp.listBidParticipants(bidId, options).then((request) => request(axios, basePath));
2617
+ },
2618
+ /**
2619
+ * 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에는 `ETag` 가 실리므로, 다음 요청에 `If-None-Match` 로 되보내면 결과가 그대로일 때 `304` 를 본문 없이 받습니다 — 마감을 기다리는 동안의 전송량이 사라집니다. **식별자 전달:** `?bidIds=A,B,C`(쉼표) 또는 `?bidIds=A&bidIds=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다 — 요청한 건수와 받은 건수가 다를 수 있으니 `bidId` 로 대조하세요. **목록이 길어 URL 이 부담되면** `POST /v2/bid-results/query` 를 쓰세요. 응답은 같습니다.
2620
+ * @summary 입찰 결과 배치 조회
2621
+ * @param {string} bidIds 조회할 공고 식별자 목록. 쉼표로 구분하거나 &#x60;bidIds&#x60; 를 반복해 전달합니다. 최대 100건.
2622
+ * @param {*} [options] Override http request option.
2623
+ * @throws {RequiredError}
2624
+ */
2625
+ listBidResults(bidIds, options) {
2626
+ return localVarFp.listBidResults(bidIds, options).then((request) => request(axios, basePath));
1618
2627
  },
1619
2628
  /**
1620
2629
  * 발주처(API 키 바인딩)의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(쿼리에 buyerId 를 넣지 않습니다). **페이지네이션(cursor):** `limit`(1~100, 기본 100) + `cursor`(불투명 토큰). 응답의 `nextCursor` 를 다음 요청 `cursor` 로 전달하면 다음 페이지를 받습니다. `nextCursor=null` 이면 마지막 페이지입니다. **상태·낙찰방법:** 공개값(의미 문자열)으로 반환됩니다. 낙찰 여부는 상태가 아니라 낙찰 결과 조회의 `participants[].isWinner` 로 관측합니다(AWARDED 상태는 없습니다).
1621
2630
  * @summary 공고 목록 조회
1622
2631
  * @param {number} [limit] 페이지 크기(1~100, 기본 100).
1623
2632
  * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달한다. 미지정 시 첫 페이지. &#x60;nextCursor&#x3D;null&#x60; 이면 마지막 페이지다.
2633
+ * @param {Array<string>} [bidIds] 조회할 공고 식별자 CSV(최대 100건). 지정 시 그 공고만 조회한다.
2634
+ * @param {Array<BidPublicStatus>} [status] 공고 상태 필터(공개값) CSV. 지정 시 그중 하나라도 일치하는 공고만 조회한다.
2635
+ * @param {Array<ListBidsIncludeEnum>} [include] 행별 확장 부착 CSV. &#x60;results&#x60;&#x3D;응찰 참여자, &#x60;products&#x60;&#x3D;공고 등록 품목, &#x60;contacts&#x60;&#x3D;발주 담당자 성명·연락처·이메일. 미지정이면 부착하지 않는다(응답이 가볍고 조회 비용도 들지 않는다).
1624
2636
  * @param {*} [options] Override http request option.
1625
2637
  * @throws {RequiredError}
1626
2638
  */
1627
- listBids(limit, cursor, options) {
1628
- return localVarFp.listBids(limit, cursor, options).then((request) => request(axios, basePath));
2639
+ listBids(limit, cursor, bidIds, status, include, options) {
2640
+ return localVarFp.listBids(limit, cursor, bidIds, status, include, options).then((request) => request(axios, basePath));
1629
2641
  },
1630
2642
  /**
1631
- * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read`
2643
+ * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `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 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
1632
2644
  * @summary 거래에 필요한 계약서류 목록 조회
1633
2645
  * @param {string} buyerId 발주기관 회원 ID(c-market memberId).
1634
2646
  * @param {ListExternalContractDocumentsBidTypeEnum} bidType 거래유형.
@@ -1638,6 +2650,37 @@ const PartnerV2ApiFactory = function (configuration, basePath, axios) {
1638
2650
  listExternalContractDocuments(buyerId, bidType, options) {
1639
2651
  return localVarFp.listExternalContractDocuments(buyerId, bidType, options).then((request) => request(axios, basePath));
1640
2652
  },
2653
+ /**
2654
+ * 기관에 공유된 물품 중 **아직 전송되지 않은 것**을 조회합니다. **증분 피드입니다.** 가져간 물품을 `POST /v2/products/receipts` 로 수신확인하면 다음 조회 결과에서 빠집니다. 수신확인을 하지 않으면 같은 물품이 계속 내려옵니다. **권장 흐름:** 조회 → 자기 시스템에 저장 → 저장에 성공한 물품 코드만 수신확인. 저장 전에 수신확인하면 그 물품은 다시 받을 수 없습니다. **조회 범위:** 요청 키가 대행하는 기관 그룹입니다. 기관 그룹이 설정되지 않은 키는 403 입니다. **필수 스코프:** `products:read`
2655
+ * @summary 물품 카탈로그 조회
2656
+ * @param {*} [options] Override http request option.
2657
+ * @throws {RequiredError}
2658
+ */
2659
+ listProducts(options) {
2660
+ return localVarFp.listProducts(options).then((request) => request(axios, basePath));
2661
+ },
2662
+ /**
2663
+ * 이 API 키의 웹훅 발송 시도를 최신순으로 조회합니다. 보낸 본문·수신측 응답 상태· 다음 재시도 예정 시각이 함께 실립니다. **호출 시점:** - 수신측 장애로 놓친 이벤트를 메울 때. 이 엔드포인트가 웹훅의 **폴링 대체 경로**입니다 — `status=EXHAUSTED` 로 걸러 다시 처리하면 됩니다. - \"이벤트가 안 온다\" 를 진단할 때. 발송 시도 자체가 없는지(구독·이벤트 타입 문제), 시도했지만 실패했는지(`responseStatus`·`responseBodyExcerpt`)를 여기서 가릅니다. **같은 이벤트가 여러 행으로 보입니다.** 재시도마다 한 행이며 `eventId` 가 같고 `attempt` 만 올라갑니다. 처리 여부는 `eventId` 기준으로 판단하세요. **페이지네이션:** `nextCursor` 를 다음 요청의 `cursor` 로 전달합니다. null 이면 마지막 페이지입니다. **`400`:** `status` 가 허용 값 밖이거나 `limit` 이 범위를 벗어났습니다 — 값을 고쳐 재시도하세요. **필수 스코프:** `webhooks:read`
2664
+ * @summary 웹훅 전송 이력 조회
2665
+ * @param {string} [endpointId] 이 구독의 전송만 조회합니다. 미지정이면 이 키의 모든 구독을 함께 조회합니다.
2666
+ * @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
2667
+ * @param {number} [limit] 페이지 크기(1~200, 기본 50).
2668
+ * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달합니다. 미지정 시 첫 페이지.
2669
+ * @param {*} [options] Override http request option.
2670
+ * @throws {RequiredError}
2671
+ */
2672
+ listWebhookDeliveries(endpointId, status, limit, cursor, options) {
2673
+ return localVarFp.listWebhookDeliveries(endpointId, status, limit, cursor, options).then((request) => request(axios, basePath));
2674
+ },
2675
+ /**
2676
+ * 이 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
2677
+ * @summary 웹훅 구독 목록 조회
2678
+ * @param {*} [options] Override http request option.
2679
+ * @throws {RequiredError}
2680
+ */
2681
+ listWebhookEndpoints(options) {
2682
+ return localVarFp.listWebhookEndpoints(options).then((request) => request(axios, basePath));
2683
+ },
1641
2684
  /**
1642
2685
  * 공고를 유찰 상태로 전환합니다. **호출 시점:** 입찰 마감 후 유찰 사유가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 공고 상태가 유찰(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` 헤더 필수.
1643
2686
  * @summary 유찰 처리
@@ -1661,6 +2704,16 @@ const PartnerV2ApiFactory = function (configuration, basePath, axios) {
1661
2704
  publishBid(bidId, idempotencyKey, options) {
1662
2705
  return localVarFp.publishBid(bidId, idempotencyKey, options).then((request) => request(axios, basePath));
1663
2706
  },
2707
+ /**
2708
+ * `GET /v2/bid-results` 와 **완전히 같은 조회**이며, 식별자 목록을 본문으로 받습니다. 스코프 `bids:read`. 공고 식별자 100건이면 URL 이 1KB를 넘습니다 — 중간 프록시가 긴 URL 을 자르는 환경을 위한 대체 경로입니다. **부수효과가 없으므로 `Idempotency-Key` 는 필요하지 않습니다.** POST 인 것은 전송 형태의 문제일 뿐이며, 가능하면 캐시·`ETag` 가 동작하는 `GET` 쪽을 쓰세요.
2709
+ * @summary 입찰 결과 배치 조회 (본문 전달)
2710
+ * @param {BidResultsBatchRequestDto} bidResultsBatchRequestDto
2711
+ * @param {*} [options] Override http request option.
2712
+ * @throws {RequiredError}
2713
+ */
2714
+ queryBidResults(bidResultsBatchRequestDto, options) {
2715
+ return localVarFp.queryBidResults(bidResultsBatchRequestDto, options).then((request) => request(axios, basePath));
2716
+ },
1664
2717
  /**
1665
2718
  * 공고의 자동생성 계약서류(발주서·공고결과·표준계약서 등)를 생성/재생성합니다. **V6 대응:** `RegenerateAllContractPdfsCommand` — 웹 어드민의 \"계약 서류 일괄 재생성\"과 동일 경로. **호출 시점:** 낙찰(계약 시작) 후 계약서류가 필요하거나, 생성에 실패한 서류를 다시 만들 때. **부수효과:** - 생성 실패(DEAD_LETTER) 상태의 자동생성 PDF 가 재생성 큐에 등록됩니다(비동기). - 승낙사항(ACCEPTANCE) 계열은 운영자 승인 워크플로가 필요해 이 경로에서 제외됩니다. **응답:** 즉시 파일이 아니라 큐 등록 결과(`enqueuedCount`/`skippedCount`)를 반환합니다. 잠시 후 자동 생성됩니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
1666
2719
  * @summary 계약서류 생성(재생성)
@@ -1687,12 +2740,13 @@ const PartnerV2ApiFactory = function (configuration, basePath, axios) {
1687
2740
  /**
1688
2741
  * 입찰 정보 등록. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수.
1689
2742
  * @summary 입찰 정보 전송(등록)
2743
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
1690
2744
  * @param {CreateBidRequestDto} createBidRequestDto
1691
2745
  * @param {*} [options] Override http request option.
1692
2746
  * @throws {RequiredError}
1693
2747
  */
1694
- registerBid(createBidRequestDto, options) {
1695
- return localVarFp.registerBid(createBidRequestDto, options).then((request) => request(axios, basePath));
2748
+ registerBid(idempotencyKey, createBidRequestDto, options) {
2749
+ return localVarFp.registerBid(idempotencyKey, createBidRequestDto, options).then((request) => request(axios, basePath));
1696
2750
  },
1697
2751
  /**
1698
2752
  * 외부에서 맺어진 계약 1건을 씨마켓의 **세금계산서 발행 대상**으로 등록합니다. **등록 후 동선:** 발주기관이 씨마켓 [나의 계약 관리] 에서 계산서 발급을 요청하고, 공급기업이 같은 화면에서 발행합니다. 계산서의 **공급자는 공급기업, 공급받는자는 발주기관**입니다. **대금 흐름:** 씨마켓은 이 거래의 대금을 받지 않습니다 — 발행 경로만 제공합니다. **금액:** `supplyPrice` 는 **부가세를 뺀 과세 공급가액**입니다(결제창 API 가 부가세 포함가를 받는 것과 다릅니다). 과세·면세 공급가액이 모두 0 이면 400 입니다. **사전 조건:** 두 회원 ID 가 씨마켓에 실재해야 합니다. 회원 ID 가 곧 소유권이라, 없는 회원으로 등록하면 아무도 열 수 없는 계산서 대상이 됩니다. **필수 스코프:** `contracts:write`. 바인딩된 발주처 외의 발주기관을 대신하려면 대행 범위에 그 회원이 있어야 합니다. **멱등성:** `externalContractId` 가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 대상을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
@@ -1706,28 +2760,66 @@ const PartnerV2ApiFactory = function (configuration, basePath, axios) {
1706
2760
  return localVarFp.registerSemoContract(idempotencyKey, registerSemoContractRequestDto, options).then((request) => request(axios, basePath));
1707
2761
  },
1708
2762
  /**
1709
- * 협상방식(NEGOTIATION/NEGOTIATION_AUTO) 공고의 응찰자별 점수를 입력합니다. **호출 시점:** 입찰 마감 낙찰(`POST /v2/bids/{bidId}/award`) 전. 협상방식 공고는 평가를 완료해야 낙찰에 진입할 수 있습니다. **부수효과:** - 응찰자별 기술점수(및 선택적 가격점수 override)가 기록됩니다. - `complete=true` 평가완료 게이트까지 적용돼 낙찰 진입이 가능해집니다. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body buyerId 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 + 동일 body 재전송 24시간 캐시 응답 반환.
1710
- * @summary 협상 점수평가
2763
+ * 확정된 낙찰을 되돌려 공고를 낙찰대기(PENDING_AWARD) 상태로 보냅니다. 스코프 `awards:write` + `Idempotency-Key` 헤더 필수. **호출 시점:** 낙찰자가 계약을 포기했거나 낙찰 처리 자체가 잘못됐을 때. 되돌린 같은 공고에 다시 낙찰을 등록할 수 있습니다. **되돌릴 없는 경우 409:** - 수수료 결제가 이미 완료된 공고 - 세금계산서가 이미 발행된 공고 - 수입권공매 계열 낙찰방법(다수 낙찰자 구조라 되돌리기 단위가 다릅니다) **사유는 필수입니다** 감사 대상 행위이며 공고 이력에 남습니다. **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
2764
+ * @summary 낙찰 되돌리기
1711
2765
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
2766
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
2767
+ * @param {RevertAwardRequestDto} revertAwardRequestDto
2768
+ * @param {*} [options] Override http request option.
2769
+ * @throws {RequiredError}
2770
+ */
2771
+ revertAward(bidId, idempotencyKey, revertAwardRequestDto, options) {
2772
+ return localVarFp.revertAward(bidId, idempotencyKey, revertAwardRequestDto, options).then((request) => request(axios, basePath));
2773
+ },
2774
+ /**
2775
+ * 서명 시크릿을 새로 발급합니다. 응답의 `secretVersion` 이 1 올라갑니다. **호출 시점:** 시크릿을 분실했거나 유출이 의심될 때, 또는 주기적 교체 정책이 있을 때. **새 시크릿은 이 응답에서 한 번만 나갑니다.** 조회로 다시 받을 수 없습니다. **옛 시크릿은 즉시 무효입니다.** 유예 기간이 없으므로, 수신측이 새 값을 반영하기 전에 도착한 이벤트는 서명 검증에 실패합니다. 배포 순서를 이렇게 잡으세요 — ① 수신측이 옛 값과 새 값을 **둘 다** 받아들이도록 배포 → ② 이 엔드포인트 호출 → ③ 응답의 새 값을 반영 → ④ 옛 값 제거. 검증 실패로 non-2xx 를 돌려주면 실패로 집계되어 20회 연속 시 구독이 중지됩니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 같은 키로 재전송하면 **새로 발급하지 않고** 처음 발급한 값을 그대로 돌려줍니다(24시간) — 네트워크 오류로 응답을 놓쳤을 때 같은 키로 다시 부르세요.
2776
+ * @summary 웹훅 서명 시크릿 재발급
2777
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
2778
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
2779
+ * @param {*} [options] Override http request option.
2780
+ * @throws {RequiredError}
2781
+ */
2782
+ rotateWebhookSecret(endpointId, idempotencyKey, options) {
2783
+ return localVarFp.rotateWebhookSecret(endpointId, idempotencyKey, options).then((request) => request(axios, basePath));
2784
+ },
2785
+ /**
2786
+ * 등록된 주소로 `ping` 이벤트를 즉시 1회 보내고 그 결과를 돌려줍니다. **호출 시점:** 구독을 등록한 직후, 수신 주소를 바꾼 직후, 방화벽·인증서를 손본 뒤. **응답은 발송 결과이지 요청 실패가 아닙니다.** 수신측이 받지 못해도 HTTP `200` 에 `delivered: false` 로 옵니다 — `responseStatus`(수신측 상태)와 `error`(연결 거부·타임아웃· TLS 오류)를 보고 원인을 좁히세요. 이 발송에도 실제 이벤트와 **똑같은 서명 헤더**가 실리므로 검증 코드를 그대로 시험할 수 있습니다. `ping` 은 구독 목록에 넣을 수 없는 타입이니, 수신측이 모르는 `eventType` 을 만나면 버리도록 짜여 있다면 이 확인만 실패할 수 있습니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 다시 보내려면 **새 키**를 쓰세요 — 같은 키는 24시간 동안 직전 결과를 그대로 돌려줍니다(재발송하지 않습니다).
2787
+ * @summary 웹훅 연결 확인 발송
2788
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
1712
2789
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1713
- * @param {SubmitNegotiationScoresRequestDto} submitNegotiationScoresRequestDto
1714
2790
  * @param {*} [options] Override http request option.
1715
2791
  * @throws {RequiredError}
1716
2792
  */
1717
- submitNegotiationScores(bidId, idempotencyKey, submitNegotiationScoresRequestDto, options) {
1718
- return localVarFp.submitNegotiationScores(bidId, idempotencyKey, submitNegotiationScoresRequestDto, options).then((request) => request(axios, basePath));
2793
+ sendWebhookTestEvent(endpointId, idempotencyKey, options) {
2794
+ return localVarFp.sendWebhookTestEvent(endpointId, idempotencyKey, options).then((request) => request(axios, basePath));
1719
2795
  },
1720
2796
  /**
1721
2797
  * 등록된 공고의 내용을 수정합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. 진행중/초안 상태의 공고만 수정할 수 있습니다. **부수효과:** - 변경 내용이 반영되고 수정이력이 기록됩니다. - `hideEdit=true` 면 변경이력을 비공개 처리하고 노출 카운터 증가를 생략합니다. **수정 제약:** - 낙찰방법(awardMethod)은 수정 불가(잠금). - 참여자가 있으면 입찰방식/면허/예산/품목 일부가 잠깁니다. - 마감/취소된 공고는 수정할 수 없습니다. 한 섹션을 수정하려면 해당 섹션의 필수 필드를 함께 보내야 합니다(부분 섹션은 거부됨).
1722
2798
  * @summary 입찰 공고 수정
1723
2799
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
2800
+ * @param {string} ifMatch
2801
+ * @param {string} ifMatch2 수정하려는 공고의 ETag(필수). 직전 &#x60;GET /v2/bids/{bidId}&#x60; 응답의 &#x60;ETag&#x60; 헤더 값을 그대로 실어 보내세요. 누락하면 428, 그 사이 공고가 바뀌었으면 412 로 거절되며 아무것도 수정되지 않습니다.
1724
2802
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
1725
2803
  * @param {UpdateBidRequestDto} updateBidRequestDto
1726
2804
  * @param {*} [options] Override http request option.
1727
2805
  * @throws {RequiredError}
1728
2806
  */
1729
- updateBid(bidId, idempotencyKey, updateBidRequestDto, options) {
1730
- return localVarFp.updateBid(bidId, idempotencyKey, updateBidRequestDto, options).then((request) => request(axios, basePath));
2807
+ updateBid(bidId, ifMatch, ifMatch2, idempotencyKey, updateBidRequestDto, options) {
2808
+ return localVarFp.updateBid(bidId, ifMatch, ifMatch2, idempotencyKey, updateBidRequestDto, options).then((request) => request(axios, basePath));
2809
+ },
2810
+ /**
2811
+ * 수신 주소·구독 이벤트·상태를 수정합니다. 보낸 필드만 바뀝니다. **호출 시점:** 수신 주소가 바뀌었을 때, 구독 이벤트를 늘리거나 줄일 때, 연속 실패로 자동 중지된 구독을 고친 뒤 되살릴 때(`{\"status\":\"ACTIVE\"}`). **`eventTypes` 는 치환입니다** — 보낸 목록이 곧 새 구독 목록입니다. 하나를 더하려면 기존 목록에 더한 **전체**를 보내세요. **`If-Match` 가 필수입니다.** 먼저 `GET /v2/webhook-endpoints/{endpointId}` 로 현재 `ETag` 를 받아 그대로 실어 보내세요. 이 헤더가 없으면 두 요청이 앞서거니 뒤서거니 하며 먼저 한 수정을 조용히 덮어씁니다. - `428` — 헤더를 빼먹었습니다. 조회 후 `ETag` 를 실어 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다. 다시 조회해 최신 `ETag` 로 재시도하세요. 아무것도 수정되지 않았습니다. **시크릿은 이 경로로 바뀌지 않습니다** — 재발급은 `rotate-secret` 입니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
2812
+ * @summary 웹훅 구독 수정
2813
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
2814
+ * @param {string} ifMatch
2815
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
2816
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
2817
+ * @param {UpdateWebhookEndpointRequestDto} updateWebhookEndpointRequestDto
2818
+ * @param {*} [options] Override http request option.
2819
+ * @throws {RequiredError}
2820
+ */
2821
+ updateWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, updateWebhookEndpointRequestDto, options) {
2822
+ return localVarFp.updateWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, updateWebhookEndpointRequestDto, options).then((request) => request(axios, basePath));
1731
2823
  },
1732
2824
  /**
1733
2825
  * 스코프 `files:write` + `Idempotency-Key` 헤더 필수. base64 또는 url 중 정확히 하나를 제출한다.
@@ -1747,14 +2839,27 @@ exports.PartnerV2ApiFactory = PartnerV2ApiFactory;
1747
2839
  */
1748
2840
  class PartnerV2Api extends base_1.BaseAPI {
1749
2841
  /**
1750
- * 샌드박스 공고를 마감하는 **영업 데모 전용** 엔드포인트입니다. **가짜 상태 주입이 아닙니다.** backend 스케줄러가 부르는 것과 동일한 실제 `CloseBidCommand` dispatch 합니다 개찰이 실제로 수행되고, `status=\'B\'` 커밋 직전 투찰가 동기 복호화가 실제로 일어납니다(복호화 실패 마감이 중단됩니다). 엔드포인트는 데모인 동시에 살아있는 e2e 스모크입니다. **데모 공고 전용:** backend 공고 명의 == 데모 발주처인 공고에 한해서만 마감합니다. 실 발주처 공고는 절대 마감하지 않습니다. **마감 불가:** 이미 마감됐거나 마감 불가 상태면 409(`type: …/upstream-conflict`)를 반환합니다. **필수 스코프:** `bids:write`
1751
- * @summary 샌드박스 공고 마감 (영업 데모 전용)
1752
- * @param {string} bidId 샌드박스 공고 ID(&#x3D; backend bidId).
2842
+ * 저장을 마친 물품을 전송완료로 표시해 다음 조회에서 제외합니다. **되돌릴 없습니다.** 표시한 물품은 `GET /v2/products` 다시 내려오지 않으므로, 자기 시스템에 저장이 끝난 뒤에 호출하세요. **표시 범위는 기관 그룹으로 잠깁니다.** 다른 기관의 물품 코드를 섞어 보내면 건은 표시되지 않고 `acknowledged`요청 수보다 작게 돌아옵니다. **필수 스코프:** `products:write` **멱등성:** `Idempotency-Key` 헤더 필수.
2843
+ * @summary 물품 수신확인
2844
+ * @param {string} idempotencyKey 멱등성 (1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
2845
+ * @param {AcknowledgeProductsRequestDto} acknowledgeProductsRequestDto
2846
+ * @param {*} [options] Override http request option.
2847
+ * @throws {RequiredError}
2848
+ */
2849
+ acknowledgeProductReceipt(idempotencyKey, acknowledgeProductsRequestDto, options) {
2850
+ return (0, exports.PartnerV2ApiFp)(this.configuration).acknowledgeProductReceipt(idempotencyKey, acknowledgeProductsRequestDto, options).then((request) => request(this.axios, this.basePath));
2851
+ }
2852
+ /**
2853
+ * 진행중인 공고를 취소합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. **되돌릴 수 없습니다.** 취소 사유는 필수이며 공고 이력에 남습니다. **전제조건:** 진행중(ONGOING) 상태여야 합니다. **거부:** 진행중이 아니거나 이미 취소된 공고 → 409. 타 발주처 공고 → 403. **마감과의 차이:** 취소는 공고를 무효로 되돌리는 것이고, 유찰(`POST /v2/bids/{bidId}/fail`)은 응찰을 받았으나 낙찰자를 정하지 못한 종료입니다.
2854
+ * @summary 공고 취소
2855
+ * @param {string} bidId 공고 식별자(등록 응답의 bidId).
2856
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
2857
+ * @param {CancelBidRequestDto} cancelBidRequestDto
1753
2858
  * @param {*} [options] Override http request option.
1754
2859
  * @throws {RequiredError}
1755
2860
  */
1756
- closeSandboxBid(bidId, options) {
1757
- return (0, exports.PartnerV2ApiFp)(this.configuration).closeSandboxBid(bidId, options).then((request) => request(this.axios, this.basePath));
2861
+ cancelBid(bidId, idempotencyKey, cancelBidRequestDto, options) {
2862
+ return (0, exports.PartnerV2ApiFp)(this.configuration).cancelBid(bidId, idempotencyKey, cancelBidRequestDto, options).then((request) => request(this.axios, this.basePath));
1758
2863
  }
1759
2864
  /**
1760
2865
  * 낙찰 공고의 검수(납품 검수)가 완료되었음을 기록합니다. **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` 헤더 필수.
@@ -1780,28 +2885,29 @@ class PartnerV2Api extends base_1.BaseAPI {
1780
2885
  return (0, exports.PartnerV2ApiFp)(this.configuration).completeInvoice(bidId, idempotencyKey, options).then((request) => request(this.axios, this.basePath));
1781
2886
  }
1782
2887
  /**
1783
- * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인(APPROVED)되어 바로 결제 가능합니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. 거기서 카드를 골라 결제합니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/card-payment-requests/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
2888
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인되어 바로 결제할 수 있습니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 도메인 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
1784
2889
  * @summary 결제창 발행
1785
2890
  * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
1786
2891
  * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
1787
2892
  * @param {*} [options] Override http request option.
1788
2893
  * @throws {RequiredError}
1789
2894
  */
1790
- createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options) {
1791
- return (0, exports.PartnerV2ApiFp)(this.configuration).createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options).then((request) => request(this.axios, this.basePath));
2895
+ createCardPayment(idempotencyKey, createCardPaymentRequestDto, options) {
2896
+ return (0, exports.PartnerV2ApiFp)(this.configuration).createCardPayment(idempotencyKey, createCardPaymentRequestDto, options).then((request) => request(this.axios, this.basePath));
1792
2897
  }
1793
2898
  /**
1794
- * 스코프 `embed:launch` 필수. 발주기관 담당자(memberId) 일회성 launch code(60초 TTL) 발급한다. code URL 싣지 말고 @cmarket/embed SDK postMessage 핸드셰이크로만 iframe 전달할 것. memberId API 키의 발주처 소속이 아니면 403, 미허용 screen 400.
1795
- * @summary 임베드 launch code 발급 (iframe SSO)
1796
- * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
2899
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 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` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
2900
+ * @summary 결제창 발행
2901
+ * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
2902
+ * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
1797
2903
  * @param {*} [options] Override http request option.
1798
2904
  * @throws {RequiredError}
1799
2905
  */
1800
- createEmbedLaunch(embedLaunchRequestDto, options) {
1801
- return (0, exports.PartnerV2ApiFp)(this.configuration).createEmbedLaunch(embedLaunchRequestDto, options).then((request) => request(this.axios, this.basePath));
2906
+ createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options) {
2907
+ return (0, exports.PartnerV2ApiFp)(this.configuration).createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options).then((request) => request(this.axios, this.basePath));
1802
2908
  }
1803
2909
  /**
1804
- * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `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` 헤더 필수.
2910
+ * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `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 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
1805
2911
  * @summary 계약서류 생성
1806
2912
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1807
2913
  * @param {CreateExternalContractDocumentsRequestDto} createExternalContractDocumentsRequestDto
@@ -1812,7 +2918,31 @@ class PartnerV2Api extends base_1.BaseAPI {
1812
2918
  return (0, exports.PartnerV2ApiFp)(this.configuration).createExternalContractDocuments(idempotencyKey, createExternalContractDocumentsRequestDto, options).then((request) => request(this.axios, this.basePath));
1813
2919
  }
1814
2920
  /**
1815
- * 무인증 — `fileKey` 자체가 capability 다(V5 `/download/{fileKey}` 같은 보안 모델). 파트너 응답의 `fileUrl`/`fullUrl` URL 가리킨다. 요청 시점에 서명하므로 URL저장해 두어도 만료되지 않는다. 응답은 실제 저장소 URL 로의 302 리다이렉트이며 리다이렉트 타깃은 1시간 만료되므로 302 자체를 캐시하지 것(`Cache-Control: no-store`).
2921
+ * 수신 주소와 구독할 이벤트를 등록합니다. **호출 시점:** 연동 초기 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
2922
+ * @summary 웹훅 구독 등록
2923
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
2924
+ * @param {CreateWebhookEndpointRequestDto} createWebhookEndpointRequestDto
2925
+ * @param {*} [options] Override http request option.
2926
+ * @throws {RequiredError}
2927
+ */
2928
+ createWebhookEndpoint(idempotencyKey, createWebhookEndpointRequestDto, options) {
2929
+ return (0, exports.PartnerV2ApiFp)(this.configuration).createWebhookEndpoint(idempotencyKey, createWebhookEndpointRequestDto, options).then((request) => request(this.axios, this.basePath));
2930
+ }
2931
+ /**
2932
+ * 구독을 삭제합니다. 이후 그 주소로는 아무 이벤트도 발송되지 않습니다. **호출 시점:** 연동을 종료할 때. 잠시만 멈추려면 삭제하지 말고 `PATCH … {\"status\":\"DISABLED\"}` 를 쓰세요 — 시크릿과 이벤트 구성이 남아 그대로 되살릴 수 있습니다. **되돌릴 수 없습니다.** 다시 등록하면 새 구독이고 서명 시크릿도 새 값입니다. **`If-Match` 가 필수입니다.** `GET` 으로 받은 `ETag` 를 실어 보내세요. - `428` — 헤더 누락. 조회 후 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다(누군가 수정했거나 발송기가 상태를 내렸습니다). 다시 조회해 정말 지울 대상이 맞는지 확인하고 최신 `ETag` 로 재시도하세요. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
2933
+ * @summary 웹훅 구독 삭제
2934
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
2935
+ * @param {string} ifMatch
2936
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
2937
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
2938
+ * @param {*} [options] Override http request option.
2939
+ * @throws {RequiredError}
2940
+ */
2941
+ deleteWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, options) {
2942
+ return (0, exports.PartnerV2ApiFp)(this.configuration).deleteWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, options).then((request) => request(this.axios, this.basePath));
2943
+ }
2944
+ /**
2945
+ * 무인증 — `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` 이 가리키는 주소라 계속 유지되며 중단 일정은 없습니다.
1816
2946
  * @summary 파일 다운로드 — 안정 URL(302)
1817
2947
  * @param {string} fileKey 파일 키 — UUIDv4 hex 32자. 업로드(&#x60;POST /v1|/v2/files&#x60;) 응답에서 받은 값.
1818
2948
  * @param {*} [options] Override http request option.
@@ -1831,6 +2961,16 @@ class PartnerV2Api extends base_1.BaseAPI {
1831
2961
  getBid(bidId, options) {
1832
2962
  return (0, exports.PartnerV2ApiFp)(this.configuration).getBid(bidId, options).then((request) => request(this.axios, this.basePath));
1833
2963
  }
2964
+ /**
2965
+ * 공고의 납품·검수·계약완료 진행 상태를 조회합니다. 검수완료 전송의 읽기 카운터파트입니다. **세 축은 서로 다른 사건입니다.** - `delivered`: 낙찰 공급사가 납품(결과확인)을 보고했습니다. - `confirmed`/`confirmedAt`: 발주기관이 검수를 확인했습니다. - `contractCompletedAt`: 검수완료 전송이 원장에 반영된 시각입니다. 검수완료 전송(`POST /v2/bids/{bidId}/acceptance`)이 성사되었는지는 `contractCompletedAt` 이 채워졌는지로 확인하세요. **필수 스코프:** `contracts:read`
2966
+ * @summary 검수 현황 조회
2967
+ * @param {string} bidId 공고 ID(&#x3D; backend bidId &#x3D; 등록 응답의 bidNo).
2968
+ * @param {*} [options] Override http request option.
2969
+ * @throws {RequiredError}
2970
+ */
2971
+ getBidAcceptance(bidId, options) {
2972
+ return (0, exports.PartnerV2ApiFp)(this.configuration).getBidAcceptance(bidId, options).then((request) => request(this.axios, this.basePath));
2973
+ }
1834
2974
  /**
1835
2975
  * 공고의 응찰 참여 업체·순위·낙찰 여부를 조회한다. scope bids:read.
1836
2976
  * @summary 입찰 결과 조회
@@ -1842,7 +2982,7 @@ class PartnerV2Api extends base_1.BaseAPI {
1842
2982
  return (0, exports.PartnerV2ApiFp)(this.configuration).getBidResults(bidId, options).then((request) => request(this.axios, this.basePath));
1843
2983
  }
1844
2984
  /**
1845
- * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회한다. scope bids:read. 가시성 마스킹과 직교한 정산 데이터 — read-only.
2985
+ * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 가시성 마스킹과는 직교한 정산 데이터이며 읽기 전용입니다. **필수 스코프:** `invoices:read` 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
1846
2986
  * @summary 입찰결과 정산정보 조회
1847
2987
  * @param {string} bidId
1848
2988
  * @param {*} [options] Override http request option.
@@ -1852,7 +2992,7 @@ class PartnerV2Api extends base_1.BaseAPI {
1852
2992
  return (0, exports.PartnerV2ApiFp)(this.configuration).getBidSettlement(bidId, options).then((request) => request(this.axios, this.basePath));
1853
2993
  }
1854
2994
  /**
1855
- * 낙찰 계약의 거래명세서(문서·품목 라인)를 조회한다. scope contracts:read.
2995
+ * 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
1856
2996
  * @summary 거래명세서 조회
1857
2997
  * @param {string} bidId
1858
2998
  * @param {number} [paperCode]
@@ -1862,6 +3002,16 @@ class PartnerV2Api extends base_1.BaseAPI {
1862
3002
  getBidStatement(bidId, paperCode, options) {
1863
3003
  return (0, exports.PartnerV2ApiFp)(this.configuration).getBidStatement(bidId, paperCode, options).then((request) => request(this.axios, this.basePath));
1864
3004
  }
3005
+ /**
3006
+ * 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **구 경로:** 버전 없는 `GET /files/{fileKey}` 는 만료 없는 안정 주소이고 파트너 응답의 `fileUrl`/`fullUrl` 이 그 값을 가리킵니다. 인증도 스코프도 없는 옛 표면이라 신규 연동은 이 엔드포인트를 쓰세요. 구 경로는 당분간 유지됩니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** 하이픈 없는 16진수 32자가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. **필수 스코프:** `files:read`
3007
+ * @summary 파일 조회(메타 + 내려받기 주소)
3008
+ * @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(하이픈 없는 16진수 32자).
3009
+ * @param {*} [options] Override http request option.
3010
+ * @throws {RequiredError}
3011
+ */
3012
+ getFileMeta(fileKey, options) {
3013
+ return (0, exports.PartnerV2ApiFp)(this.configuration).getFileMeta(fileKey, options).then((request) => request(this.axios, this.basePath));
3014
+ }
1865
3015
  /**
1866
3016
  * 등록한 계약의 계산서 발행 상태를 확인합니다. **언제 쓰나:** 씨마켓이 보내는 발행완료 통지를 놓쳤을 때의 **복구 경로**입니다. 평상시에는 통지를 받아 처리하고, 상태가 어긋난 것 같을 때 이 API 로 되읽으세요. **필수 스코프:** `contracts:read`
1867
3017
  * @summary 계산서 발행 상태 조회
@@ -1873,7 +3023,7 @@ class PartnerV2Api extends base_1.BaseAPI {
1873
3023
  return (0, exports.PartnerV2ApiFp)(this.configuration).getSemoContractTaxinvoiceStatus(externalContractId, options).then((request) => request(this.axios, this.basePath));
1874
3024
  }
1875
3025
  /**
1876
- * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write`
3026
+ * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
1877
3027
  * @summary 공급사 카드결제 가능 여부
1878
3028
  * @param {string} memberId 계약업체 회원 ID
1879
3029
  * @param {*} [options] Override http request option.
@@ -1882,6 +3032,26 @@ class PartnerV2Api extends base_1.BaseAPI {
1882
3032
  getSupplierCardPayable(memberId, options) {
1883
3033
  return (0, exports.PartnerV2ApiFp)(this.configuration).getSupplierCardPayable(memberId, options).then((request) => request(this.axios, this.basePath));
1884
3034
  }
3035
+ /**
3036
+ * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
3037
+ * @summary 공급사 카드결제 가능 여부
3038
+ * @param {string} memberId 계약업체 회원 ID
3039
+ * @param {*} [options] Override http request option.
3040
+ * @throws {RequiredError}
3041
+ */
3042
+ getSupplierCardPayableV2(memberId, options) {
3043
+ return (0, exports.PartnerV2ApiFp)(this.configuration).getSupplierCardPayableV2(memberId, options).then((request) => request(this.axios, this.basePath));
3044
+ }
3045
+ /**
3046
+ * 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
3047
+ * @summary 웹훅 구독 단건 조회
3048
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
3049
+ * @param {*} [options] Override http request option.
3050
+ * @throws {RequiredError}
3051
+ */
3052
+ getWebhookEndpoint(endpointId, options) {
3053
+ return (0, exports.PartnerV2ApiFp)(this.configuration).getWebhookEndpoint(endpointId, options).then((request) => request(this.axios, this.basePath));
3054
+ }
1885
3055
  /**
1886
3056
  * ERP 연동 직전 회선·인증 endpoint 동작 확인용.
1887
3057
  * @summary Partner API 헬스체크
@@ -1892,30 +3062,51 @@ class PartnerV2Api extends base_1.BaseAPI {
1892
3062
  return (0, exports.PartnerV2ApiFp)(this.configuration).healthControllerCheck(options).then((request) => request(this.axios, this.basePath));
1893
3063
  }
1894
3064
  /**
1895
- * 낙찰 공급사가 확정된 공고에 대해 세금계산서를 발행합니다. **호출 시점:** 낙찰자 선정(계약진행) 이후. 과세/면세를 자동 분리해 발행합니다. **부수효과:** - 세금계산서가 국세청에 발행되고 공고가 발행 완료로 마킹됩니다. - 이미 발행됐거나 분할 청구가 진행 중이면 409 거절됩니다. **소유권:** 발행 대상 공고가 API 키에 바인딩된 발주처 소유가 아니면 403. **분할 청구:** 세금계산서 **분할 발급**은 `/v2` 제공되지 않습니다 `/v1` 전용(`POST /v1/invoices/split-requests`)입니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 + 동일 body 재전송 24시간 캐시 응답 반환.
1896
- * @summary 세금계산서 발행
3065
+ * 공고의 계약서류 목록과 내려받기 주소를 조회합니다. **목록에 실리는 것:** 공고 전체에 공통인 서류(약관·자동생성 공통본) 낙찰자에게 귀속된 서류를 함께 싣습니다. 낙찰자 귀속 서류는 `winnerSequence` 낙찰자의 응찰 순번이 들어갑니다. **아직 없는 서류도 실립니다.** 공고가 제출을 요구했지만 아직 올라오지 않은 서류는 `fileKey: null` 나타나므로, 제출 여부는 값으로 판정하세요. **자동생성 서류:** `autoGenerated: true` 서류는 c-market 만들어 줍니다. 만드는 중이면 `generationState` `QUEUED`/`PROCESSING` 이고 `downloadUrl` 아직 없습니다. `DEAD_LETTER` 는 생성이 실패해 멈춘 상태이며, 같은 경로의 POST(재생성)로 다시 큐에 올립니다. **내려받기:** `downloadUrl` 유효기간 1시간의 서명 주소입니다. 저장해 두고 재사용하지 마시고 필요할 엔드포인트를 다시 호출하세요. 기간에 얽매이지 않으려면 `fileKey` 를 보관하시고 파일 내려받기 경로를 사용하세요. **보이는 범위:** 서버가 공고 낙찰방법과 진행 단계로 결정합니다. 응답을 그대로 사용하시고 클라이언트에서 다시 거르지 마세요. **필수 스코프:** `contracts:read`
3066
+ * @summary 계약서류 목록 조회
3067
+ * @param {string} bidId 공고번호(buy_idx, 예 CM…) 또는 외부 구매번호(bid_puchase_no).
3068
+ * @param {*} [options] Override http request option.
3069
+ * @throws {RequiredError}
3070
+ */
3071
+ listBidContractDocuments(bidId, options) {
3072
+ return (0, exports.PartnerV2ApiFp)(this.configuration).listBidContractDocuments(bidId, options).then((request) => request(this.axios, this.basePath));
3073
+ }
3074
+ /**
3075
+ * 공고에 응찰한 업체 목록을 조회합니다. 스코프 `bids:read` 필수. **보이는 범위는 공고의 낙찰방법과 진행 단계가 결정합니다.** 개찰 전에는 업체명이 가려지고 (`companyName: null`), 순위는 산정 전까지 `null` 입니다. 이 판정은 서버가 소유하므로 응답을 그대로 사용하시고 클라이언트에서 다시 계산하지 마세요. 같은 목록이 `GET /v2/bids/{bidId}` 응답의 `participants` 에도 실립니다 — 응찰 현황만 필요하면 이 엔드포인트가 가볍습니다.
3076
+ * @summary 응찰 현황 조회
1897
3077
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
1898
- * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1899
- * @param {IssueTaxInvoiceRequestDto} issueTaxInvoiceRequestDto
1900
3078
  * @param {*} [options] Override http request option.
1901
3079
  * @throws {RequiredError}
1902
3080
  */
1903
- issueTaxInvoice(bidId, idempotencyKey, issueTaxInvoiceRequestDto, options) {
1904
- return (0, exports.PartnerV2ApiFp)(this.configuration).issueTaxInvoice(bidId, idempotencyKey, issueTaxInvoiceRequestDto, options).then((request) => request(this.axios, this.basePath));
3081
+ listBidParticipants(bidId, options) {
3082
+ return (0, exports.PartnerV2ApiFp)(this.configuration).listBidParticipants(bidId, options).then((request) => request(this.axios, this.basePath));
3083
+ }
3084
+ /**
3085
+ * 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에는 `ETag` 가 실리므로, 다음 요청에 `If-None-Match` 로 되보내면 결과가 그대로일 때 `304` 를 본문 없이 받습니다 — 마감을 기다리는 동안의 전송량이 사라집니다. **식별자 전달:** `?bidIds=A,B,C`(쉼표) 또는 `?bidIds=A&bidIds=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다 — 요청한 건수와 받은 건수가 다를 수 있으니 `bidId` 로 대조하세요. **목록이 길어 URL 이 부담되면** `POST /v2/bid-results/query` 를 쓰세요. 응답은 같습니다.
3086
+ * @summary 입찰 결과 배치 조회
3087
+ * @param {string} bidIds 조회할 공고 식별자 목록. 쉼표로 구분하거나 &#x60;bidIds&#x60; 를 반복해 전달합니다. 최대 100건.
3088
+ * @param {*} [options] Override http request option.
3089
+ * @throws {RequiredError}
3090
+ */
3091
+ listBidResults(bidIds, options) {
3092
+ return (0, exports.PartnerV2ApiFp)(this.configuration).listBidResults(bidIds, options).then((request) => request(this.axios, this.basePath));
1905
3093
  }
1906
3094
  /**
1907
3095
  * 발주처(API 키 바인딩)의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(쿼리에 buyerId 를 넣지 않습니다). **페이지네이션(cursor):** `limit`(1~100, 기본 100) + `cursor`(불투명 토큰). 응답의 `nextCursor` 를 다음 요청 `cursor` 로 전달하면 다음 페이지를 받습니다. `nextCursor=null` 이면 마지막 페이지입니다. **상태·낙찰방법:** 공개값(의미 문자열)으로 반환됩니다. 낙찰 여부는 상태가 아니라 낙찰 결과 조회의 `participants[].isWinner` 로 관측합니다(AWARDED 상태는 없습니다).
1908
3096
  * @summary 공고 목록 조회
1909
3097
  * @param {number} [limit] 페이지 크기(1~100, 기본 100).
1910
3098
  * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달한다. 미지정 시 첫 페이지. &#x60;nextCursor&#x3D;null&#x60; 이면 마지막 페이지다.
3099
+ * @param {Array<string>} [bidIds] 조회할 공고 식별자 CSV(최대 100건). 지정 시 그 공고만 조회한다.
3100
+ * @param {Array<BidPublicStatus>} [status] 공고 상태 필터(공개값) CSV. 지정 시 그중 하나라도 일치하는 공고만 조회한다.
3101
+ * @param {Array<ListBidsIncludeEnum>} [include] 행별 확장 부착 CSV. &#x60;results&#x60;&#x3D;응찰 참여자, &#x60;products&#x60;&#x3D;공고 등록 품목, &#x60;contacts&#x60;&#x3D;발주 담당자 성명·연락처·이메일. 미지정이면 부착하지 않는다(응답이 가볍고 조회 비용도 들지 않는다).
1911
3102
  * @param {*} [options] Override http request option.
1912
3103
  * @throws {RequiredError}
1913
3104
  */
1914
- listBids(limit, cursor, options) {
1915
- return (0, exports.PartnerV2ApiFp)(this.configuration).listBids(limit, cursor, options).then((request) => request(this.axios, this.basePath));
3105
+ listBids(limit, cursor, bidIds, status, include, options) {
3106
+ return (0, exports.PartnerV2ApiFp)(this.configuration).listBids(limit, cursor, bidIds, status, include, options).then((request) => request(this.axios, this.basePath));
1916
3107
  }
1917
3108
  /**
1918
- * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read`
3109
+ * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `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 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
1919
3110
  * @summary 거래에 필요한 계약서류 목록 조회
1920
3111
  * @param {string} buyerId 발주기관 회원 ID(c-market memberId).
1921
3112
  * @param {ListExternalContractDocumentsBidTypeEnum} bidType 거래유형.
@@ -1925,6 +3116,37 @@ class PartnerV2Api extends base_1.BaseAPI {
1925
3116
  listExternalContractDocuments(buyerId, bidType, options) {
1926
3117
  return (0, exports.PartnerV2ApiFp)(this.configuration).listExternalContractDocuments(buyerId, bidType, options).then((request) => request(this.axios, this.basePath));
1927
3118
  }
3119
+ /**
3120
+ * 기관에 공유된 물품 중 **아직 전송되지 않은 것**을 조회합니다. **증분 피드입니다.** 가져간 물품을 `POST /v2/products/receipts` 로 수신확인하면 다음 조회 결과에서 빠집니다. 수신확인을 하지 않으면 같은 물품이 계속 내려옵니다. **권장 흐름:** 조회 → 자기 시스템에 저장 → 저장에 성공한 물품 코드만 수신확인. 저장 전에 수신확인하면 그 물품은 다시 받을 수 없습니다. **조회 범위:** 요청 키가 대행하는 기관 그룹입니다. 기관 그룹이 설정되지 않은 키는 403 입니다. **필수 스코프:** `products:read`
3121
+ * @summary 물품 카탈로그 조회
3122
+ * @param {*} [options] Override http request option.
3123
+ * @throws {RequiredError}
3124
+ */
3125
+ listProducts(options) {
3126
+ return (0, exports.PartnerV2ApiFp)(this.configuration).listProducts(options).then((request) => request(this.axios, this.basePath));
3127
+ }
3128
+ /**
3129
+ * 이 API 키의 웹훅 발송 시도를 최신순으로 조회합니다. 보낸 본문·수신측 응답 상태· 다음 재시도 예정 시각이 함께 실립니다. **호출 시점:** - 수신측 장애로 놓친 이벤트를 메울 때. 이 엔드포인트가 웹훅의 **폴링 대체 경로**입니다 — `status=EXHAUSTED` 로 걸러 다시 처리하면 됩니다. - \"이벤트가 안 온다\" 를 진단할 때. 발송 시도 자체가 없는지(구독·이벤트 타입 문제), 시도했지만 실패했는지(`responseStatus`·`responseBodyExcerpt`)를 여기서 가릅니다. **같은 이벤트가 여러 행으로 보입니다.** 재시도마다 한 행이며 `eventId` 가 같고 `attempt` 만 올라갑니다. 처리 여부는 `eventId` 기준으로 판단하세요. **페이지네이션:** `nextCursor` 를 다음 요청의 `cursor` 로 전달합니다. null 이면 마지막 페이지입니다. **`400`:** `status` 가 허용 값 밖이거나 `limit` 이 범위를 벗어났습니다 — 값을 고쳐 재시도하세요. **필수 스코프:** `webhooks:read`
3130
+ * @summary 웹훅 전송 이력 조회
3131
+ * @param {string} [endpointId] 이 구독의 전송만 조회합니다. 미지정이면 이 키의 모든 구독을 함께 조회합니다.
3132
+ * @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
3133
+ * @param {number} [limit] 페이지 크기(1~200, 기본 50).
3134
+ * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달합니다. 미지정 시 첫 페이지.
3135
+ * @param {*} [options] Override http request option.
3136
+ * @throws {RequiredError}
3137
+ */
3138
+ listWebhookDeliveries(endpointId, status, limit, cursor, options) {
3139
+ return (0, exports.PartnerV2ApiFp)(this.configuration).listWebhookDeliveries(endpointId, status, limit, cursor, options).then((request) => request(this.axios, this.basePath));
3140
+ }
3141
+ /**
3142
+ * 이 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
3143
+ * @summary 웹훅 구독 목록 조회
3144
+ * @param {*} [options] Override http request option.
3145
+ * @throws {RequiredError}
3146
+ */
3147
+ listWebhookEndpoints(options) {
3148
+ return (0, exports.PartnerV2ApiFp)(this.configuration).listWebhookEndpoints(options).then((request) => request(this.axios, this.basePath));
3149
+ }
1928
3150
  /**
1929
3151
  * 공고를 유찰 상태로 전환합니다. **호출 시점:** 입찰 마감 후 유찰 사유가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 공고 상태가 유찰(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` 헤더 필수.
1930
3152
  * @summary 유찰 처리
@@ -1948,6 +3170,16 @@ class PartnerV2Api extends base_1.BaseAPI {
1948
3170
  publishBid(bidId, idempotencyKey, options) {
1949
3171
  return (0, exports.PartnerV2ApiFp)(this.configuration).publishBid(bidId, idempotencyKey, options).then((request) => request(this.axios, this.basePath));
1950
3172
  }
3173
+ /**
3174
+ * `GET /v2/bid-results` 와 **완전히 같은 조회**이며, 식별자 목록을 본문으로 받습니다. 스코프 `bids:read`. 공고 식별자 100건이면 URL 이 1KB를 넘습니다 — 중간 프록시가 긴 URL 을 자르는 환경을 위한 대체 경로입니다. **부수효과가 없으므로 `Idempotency-Key` 는 필요하지 않습니다.** POST 인 것은 전송 형태의 문제일 뿐이며, 가능하면 캐시·`ETag` 가 동작하는 `GET` 쪽을 쓰세요.
3175
+ * @summary 입찰 결과 배치 조회 (본문 전달)
3176
+ * @param {BidResultsBatchRequestDto} bidResultsBatchRequestDto
3177
+ * @param {*} [options] Override http request option.
3178
+ * @throws {RequiredError}
3179
+ */
3180
+ queryBidResults(bidResultsBatchRequestDto, options) {
3181
+ return (0, exports.PartnerV2ApiFp)(this.configuration).queryBidResults(bidResultsBatchRequestDto, options).then((request) => request(this.axios, this.basePath));
3182
+ }
1951
3183
  /**
1952
3184
  * 공고의 자동생성 계약서류(발주서·공고결과·표준계약서 등)를 생성/재생성합니다. **V6 대응:** `RegenerateAllContractPdfsCommand` — 웹 어드민의 \"계약 서류 일괄 재생성\"과 동일 경로. **호출 시점:** 낙찰(계약 시작) 후 계약서류가 필요하거나, 생성에 실패한 서류를 다시 만들 때. **부수효과:** - 생성 실패(DEAD_LETTER) 상태의 자동생성 PDF 가 재생성 큐에 등록됩니다(비동기). - 승낙사항(ACCEPTANCE) 계열은 운영자 승인 워크플로가 필요해 이 경로에서 제외됩니다. **응답:** 즉시 파일이 아니라 큐 등록 결과(`enqueuedCount`/`skippedCount`)를 반환합니다. 잠시 후 자동 생성됩니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
1953
3185
  * @summary 계약서류 생성(재생성)
@@ -1974,12 +3206,13 @@ class PartnerV2Api extends base_1.BaseAPI {
1974
3206
  /**
1975
3207
  * 입찰 정보 등록. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수.
1976
3208
  * @summary 입찰 정보 전송(등록)
3209
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
1977
3210
  * @param {CreateBidRequestDto} createBidRequestDto
1978
3211
  * @param {*} [options] Override http request option.
1979
3212
  * @throws {RequiredError}
1980
3213
  */
1981
- registerBid(createBidRequestDto, options) {
1982
- return (0, exports.PartnerV2ApiFp)(this.configuration).registerBid(createBidRequestDto, options).then((request) => request(this.axios, this.basePath));
3214
+ registerBid(idempotencyKey, createBidRequestDto, options) {
3215
+ return (0, exports.PartnerV2ApiFp)(this.configuration).registerBid(idempotencyKey, createBidRequestDto, options).then((request) => request(this.axios, this.basePath));
1983
3216
  }
1984
3217
  /**
1985
3218
  * 외부에서 맺어진 계약 1건을 씨마켓의 **세금계산서 발행 대상**으로 등록합니다. **등록 후 동선:** 발주기관이 씨마켓 [나의 계약 관리] 에서 계산서 발급을 요청하고, 공급기업이 같은 화면에서 발행합니다. 계산서의 **공급자는 공급기업, 공급받는자는 발주기관**입니다. **대금 흐름:** 씨마켓은 이 거래의 대금을 받지 않습니다 — 발행 경로만 제공합니다. **금액:** `supplyPrice` 는 **부가세를 뺀 과세 공급가액**입니다(결제창 API 가 부가세 포함가를 받는 것과 다릅니다). 과세·면세 공급가액이 모두 0 이면 400 입니다. **사전 조건:** 두 회원 ID 가 씨마켓에 실재해야 합니다. 회원 ID 가 곧 소유권이라, 없는 회원으로 등록하면 아무도 열 수 없는 계산서 대상이 됩니다. **필수 스코프:** `contracts:write`. 바인딩된 발주처 외의 발주기관을 대신하려면 대행 범위에 그 회원이 있어야 합니다. **멱등성:** `externalContractId` 가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 대상을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
@@ -1993,28 +3226,66 @@ class PartnerV2Api extends base_1.BaseAPI {
1993
3226
  return (0, exports.PartnerV2ApiFp)(this.configuration).registerSemoContract(idempotencyKey, registerSemoContractRequestDto, options).then((request) => request(this.axios, this.basePath));
1994
3227
  }
1995
3228
  /**
1996
- * 협상방식(NEGOTIATION/NEGOTIATION_AUTO) 공고의 응찰자별 점수를 입력합니다. **호출 시점:** 입찰 마감 낙찰(`POST /v2/bids/{bidId}/award`) 전. 협상방식 공고는 평가를 완료해야 낙찰에 진입할 수 있습니다. **부수효과:** - 응찰자별 기술점수(및 선택적 가격점수 override)가 기록됩니다. - `complete=true` 평가완료 게이트까지 적용돼 낙찰 진입이 가능해집니다. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body buyerId 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 + 동일 body 재전송 24시간 캐시 응답 반환.
1997
- * @summary 협상 점수평가
3229
+ * 확정된 낙찰을 되돌려 공고를 낙찰대기(PENDING_AWARD) 상태로 보냅니다. 스코프 `awards:write` + `Idempotency-Key` 헤더 필수. **호출 시점:** 낙찰자가 계약을 포기했거나 낙찰 처리 자체가 잘못됐을 때. 되돌린 같은 공고에 다시 낙찰을 등록할 수 있습니다. **되돌릴 없는 경우 409:** - 수수료 결제가 이미 완료된 공고 - 세금계산서가 이미 발행된 공고 - 수입권공매 계열 낙찰방법(다수 낙찰자 구조라 되돌리기 단위가 다릅니다) **사유는 필수입니다** 감사 대상 행위이며 공고 이력에 남습니다. **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
3230
+ * @summary 낙찰 되돌리기
1998
3231
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
3232
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
3233
+ * @param {RevertAwardRequestDto} revertAwardRequestDto
3234
+ * @param {*} [options] Override http request option.
3235
+ * @throws {RequiredError}
3236
+ */
3237
+ revertAward(bidId, idempotencyKey, revertAwardRequestDto, options) {
3238
+ return (0, exports.PartnerV2ApiFp)(this.configuration).revertAward(bidId, idempotencyKey, revertAwardRequestDto, options).then((request) => request(this.axios, this.basePath));
3239
+ }
3240
+ /**
3241
+ * 서명 시크릿을 새로 발급합니다. 응답의 `secretVersion` 이 1 올라갑니다. **호출 시점:** 시크릿을 분실했거나 유출이 의심될 때, 또는 주기적 교체 정책이 있을 때. **새 시크릿은 이 응답에서 한 번만 나갑니다.** 조회로 다시 받을 수 없습니다. **옛 시크릿은 즉시 무효입니다.** 유예 기간이 없으므로, 수신측이 새 값을 반영하기 전에 도착한 이벤트는 서명 검증에 실패합니다. 배포 순서를 이렇게 잡으세요 — ① 수신측이 옛 값과 새 값을 **둘 다** 받아들이도록 배포 → ② 이 엔드포인트 호출 → ③ 응답의 새 값을 반영 → ④ 옛 값 제거. 검증 실패로 non-2xx 를 돌려주면 실패로 집계되어 20회 연속 시 구독이 중지됩니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 같은 키로 재전송하면 **새로 발급하지 않고** 처음 발급한 값을 그대로 돌려줍니다(24시간) — 네트워크 오류로 응답을 놓쳤을 때 같은 키로 다시 부르세요.
3242
+ * @summary 웹훅 서명 시크릿 재발급
3243
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
3244
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
3245
+ * @param {*} [options] Override http request option.
3246
+ * @throws {RequiredError}
3247
+ */
3248
+ rotateWebhookSecret(endpointId, idempotencyKey, options) {
3249
+ return (0, exports.PartnerV2ApiFp)(this.configuration).rotateWebhookSecret(endpointId, idempotencyKey, options).then((request) => request(this.axios, this.basePath));
3250
+ }
3251
+ /**
3252
+ * 등록된 주소로 `ping` 이벤트를 즉시 1회 보내고 그 결과를 돌려줍니다. **호출 시점:** 구독을 등록한 직후, 수신 주소를 바꾼 직후, 방화벽·인증서를 손본 뒤. **응답은 발송 결과이지 요청 실패가 아닙니다.** 수신측이 받지 못해도 HTTP `200` 에 `delivered: false` 로 옵니다 — `responseStatus`(수신측 상태)와 `error`(연결 거부·타임아웃· TLS 오류)를 보고 원인을 좁히세요. 이 발송에도 실제 이벤트와 **똑같은 서명 헤더**가 실리므로 검증 코드를 그대로 시험할 수 있습니다. `ping` 은 구독 목록에 넣을 수 없는 타입이니, 수신측이 모르는 `eventType` 을 만나면 버리도록 짜여 있다면 이 확인만 실패할 수 있습니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 다시 보내려면 **새 키**를 쓰세요 — 같은 키는 24시간 동안 직전 결과를 그대로 돌려줍니다(재발송하지 않습니다).
3253
+ * @summary 웹훅 연결 확인 발송
3254
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
1999
3255
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
2000
- * @param {SubmitNegotiationScoresRequestDto} submitNegotiationScoresRequestDto
2001
3256
  * @param {*} [options] Override http request option.
2002
3257
  * @throws {RequiredError}
2003
3258
  */
2004
- submitNegotiationScores(bidId, idempotencyKey, submitNegotiationScoresRequestDto, options) {
2005
- return (0, exports.PartnerV2ApiFp)(this.configuration).submitNegotiationScores(bidId, idempotencyKey, submitNegotiationScoresRequestDto, options).then((request) => request(this.axios, this.basePath));
3259
+ sendWebhookTestEvent(endpointId, idempotencyKey, options) {
3260
+ return (0, exports.PartnerV2ApiFp)(this.configuration).sendWebhookTestEvent(endpointId, idempotencyKey, options).then((request) => request(this.axios, this.basePath));
2006
3261
  }
2007
3262
  /**
2008
3263
  * 등록된 공고의 내용을 수정합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. 진행중/초안 상태의 공고만 수정할 수 있습니다. **부수효과:** - 변경 내용이 반영되고 수정이력이 기록됩니다. - `hideEdit=true` 면 변경이력을 비공개 처리하고 노출 카운터 증가를 생략합니다. **수정 제약:** - 낙찰방법(awardMethod)은 수정 불가(잠금). - 참여자가 있으면 입찰방식/면허/예산/품목 일부가 잠깁니다. - 마감/취소된 공고는 수정할 수 없습니다. 한 섹션을 수정하려면 해당 섹션의 필수 필드를 함께 보내야 합니다(부분 섹션은 거부됨).
2009
3264
  * @summary 입찰 공고 수정
2010
3265
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
3266
+ * @param {string} ifMatch
3267
+ * @param {string} ifMatch2 수정하려는 공고의 ETag(필수). 직전 &#x60;GET /v2/bids/{bidId}&#x60; 응답의 &#x60;ETag&#x60; 헤더 값을 그대로 실어 보내세요. 누락하면 428, 그 사이 공고가 바뀌었으면 412 로 거절되며 아무것도 수정되지 않습니다.
2011
3268
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
2012
3269
  * @param {UpdateBidRequestDto} updateBidRequestDto
2013
3270
  * @param {*} [options] Override http request option.
2014
3271
  * @throws {RequiredError}
2015
3272
  */
2016
- updateBid(bidId, idempotencyKey, updateBidRequestDto, options) {
2017
- return (0, exports.PartnerV2ApiFp)(this.configuration).updateBid(bidId, idempotencyKey, updateBidRequestDto, options).then((request) => request(this.axios, this.basePath));
3273
+ updateBid(bidId, ifMatch, ifMatch2, idempotencyKey, updateBidRequestDto, options) {
3274
+ return (0, exports.PartnerV2ApiFp)(this.configuration).updateBid(bidId, ifMatch, ifMatch2, idempotencyKey, updateBidRequestDto, options).then((request) => request(this.axios, this.basePath));
3275
+ }
3276
+ /**
3277
+ * 수신 주소·구독 이벤트·상태를 수정합니다. 보낸 필드만 바뀝니다. **호출 시점:** 수신 주소가 바뀌었을 때, 구독 이벤트를 늘리거나 줄일 때, 연속 실패로 자동 중지된 구독을 고친 뒤 되살릴 때(`{\"status\":\"ACTIVE\"}`). **`eventTypes` 는 치환입니다** — 보낸 목록이 곧 새 구독 목록입니다. 하나를 더하려면 기존 목록에 더한 **전체**를 보내세요. **`If-Match` 가 필수입니다.** 먼저 `GET /v2/webhook-endpoints/{endpointId}` 로 현재 `ETag` 를 받아 그대로 실어 보내세요. 이 헤더가 없으면 두 요청이 앞서거니 뒤서거니 하며 먼저 한 수정을 조용히 덮어씁니다. - `428` — 헤더를 빼먹었습니다. 조회 후 `ETag` 를 실어 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다. 다시 조회해 최신 `ETag` 로 재시도하세요. 아무것도 수정되지 않았습니다. **시크릿은 이 경로로 바뀌지 않습니다** — 재발급은 `rotate-secret` 입니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
3278
+ * @summary 웹훅 구독 수정
3279
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
3280
+ * @param {string} ifMatch
3281
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
3282
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
3283
+ * @param {UpdateWebhookEndpointRequestDto} updateWebhookEndpointRequestDto
3284
+ * @param {*} [options] Override http request option.
3285
+ * @throws {RequiredError}
3286
+ */
3287
+ updateWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, updateWebhookEndpointRequestDto, options) {
3288
+ return (0, exports.PartnerV2ApiFp)(this.configuration).updateWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, updateWebhookEndpointRequestDto, options).then((request) => request(this.axios, this.basePath));
2018
3289
  }
2019
3290
  /**
2020
3291
  * 스코프 `files:write` + `Idempotency-Key` 헤더 필수. base64 또는 url 중 정확히 하나를 제출한다.
@@ -2028,6 +3299,11 @@ class PartnerV2Api extends base_1.BaseAPI {
2028
3299
  }
2029
3300
  }
2030
3301
  exports.PartnerV2Api = PartnerV2Api;
3302
+ exports.ListBidsIncludeEnum = {
3303
+ Results: 'results',
3304
+ Products: 'products',
3305
+ Contacts: 'contacts',
3306
+ };
2031
3307
  exports.ListExternalContractDocumentsBidTypeEnum = {
2032
3308
  Goods: 'goods',
2033
3309
  Service: 'service',