@cmarket/partner-sdk 25.2.0 → 31.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (968) hide show
  1. package/README.md +81 -18
  2. package/api/oauth-api.ts +75 -2
  3. package/api/partner-v1-api.ts +14 -14
  4. package/api/partner-v2-api.ts +1593 -258
  5. package/api/well-known-api.ts +2 -2
  6. package/api.ts +2 -2
  7. package/base.ts +2 -2
  8. package/common.ts +2 -2
  9. package/configuration.ts +2 -2
  10. package/dist/api/oauth-api.d.ts +36 -2
  11. package/dist/api/oauth-api.js +69 -2
  12. package/dist/api/partner-v1-api.d.ts +2 -2
  13. package/dist/api/partner-v1-api.js +14 -14
  14. package/dist/api/partner-v2-api.d.ts +763 -171
  15. package/dist/api/partner-v2-api.js +1500 -250
  16. package/dist/api/well-known-api.d.ts +2 -2
  17. package/dist/api/well-known-api.js +2 -2
  18. package/dist/api.d.ts +2 -2
  19. package/dist/api.js +2 -2
  20. package/dist/base.d.ts +2 -2
  21. package/dist/base.js +2 -2
  22. package/dist/common.d.ts +2 -2
  23. package/dist/common.js +2 -2
  24. package/dist/configuration.d.ts +2 -2
  25. package/dist/configuration.js +2 -2
  26. package/dist/esm/api/oauth-api.d.ts +36 -2
  27. package/dist/esm/api/oauth-api.js +69 -2
  28. package/dist/esm/api/partner-v1-api.d.ts +2 -2
  29. package/dist/esm/api/partner-v1-api.js +14 -14
  30. package/dist/esm/api/partner-v2-api.d.ts +763 -171
  31. package/dist/esm/api/partner-v2-api.js +1500 -250
  32. package/dist/esm/api/well-known-api.d.ts +2 -2
  33. package/dist/esm/api/well-known-api.js +2 -2
  34. package/dist/esm/api.d.ts +2 -2
  35. package/dist/esm/api.js +2 -2
  36. package/dist/esm/base.d.ts +2 -2
  37. package/dist/esm/base.js +2 -2
  38. package/dist/esm/common.d.ts +2 -2
  39. package/dist/esm/common.js +2 -2
  40. package/dist/esm/configuration.d.ts +2 -2
  41. package/dist/esm/configuration.js +2 -2
  42. package/dist/esm/index.d.ts +2 -2
  43. package/dist/esm/index.js +2 -2
  44. package/dist/esm/models/acceptance-result-response-dto.d.ts +2 -2
  45. package/dist/esm/models/acceptance-result-response-dto.js +2 -2
  46. package/dist/esm/models/acceptance-result-v1-response-dto.d.ts +2 -2
  47. package/dist/esm/models/acceptance-result-v1-response-dto.js +2 -2
  48. package/dist/esm/models/acceptance-status-response-dto.d.ts +33 -0
  49. package/dist/esm/models/acceptance-status-response-dto.js +14 -0
  50. package/dist/esm/models/acknowledge-product-receipt200-response.d.ts +21 -0
  51. package/dist/esm/models/acknowledge-product-receipt200-response.js +14 -0
  52. package/dist/esm/models/acknowledge-products-request-dto.d.ts +17 -0
  53. package/dist/esm/models/acknowledge-products-request-dto.js +14 -0
  54. package/dist/esm/models/acknowledge-products-v1-request-dto.d.ts +2 -2
  55. package/dist/esm/models/acknowledge-products-v1-request-dto.js +2 -2
  56. package/dist/esm/models/authorization-server-metadata-dto.d.ts +6 -2
  57. package/dist/esm/models/authorization-server-metadata-dto.js +2 -2
  58. package/dist/esm/models/award-method-public.d.ts +2 -2
  59. package/dist/esm/models/award-method-public.js +2 -2
  60. package/dist/esm/models/award-registered-response-dto.d.ts +2 -2
  61. package/dist/esm/models/award-registered-response-dto.js +2 -2
  62. package/dist/esm/models/award-registered-v2-response-dto.d.ts +2 -2
  63. package/dist/esm/models/award-registered-v2-response-dto.js +2 -2
  64. package/dist/esm/models/award-reverted-v2-response-dto.d.ts +25 -0
  65. package/dist/esm/models/award-reverted-v2-response-dto.js +16 -0
  66. package/dist/esm/models/bid-attachment-v1-dto.d.ts +2 -2
  67. package/dist/esm/models/bid-attachment-v1-dto.js +2 -2
  68. package/dist/esm/models/bid-bond-dto.d.ts +2 -2
  69. package/dist/esm/models/bid-bond-dto.js +2 -2
  70. package/dist/esm/models/bid-bond-v1-dto.d.ts +2 -2
  71. package/dist/esm/models/bid-bond-v1-dto.js +2 -2
  72. package/dist/esm/models/bid-cancelled-response-dto.d.ts +25 -0
  73. package/dist/esm/models/bid-cancelled-response-dto.js +16 -0
  74. package/dist/esm/models/bid-contact-dto.d.ts +2 -2
  75. package/dist/esm/models/bid-contact-dto.js +2 -2
  76. package/dist/esm/models/bid-contacts-dto.d.ts +2 -2
  77. package/dist/esm/models/bid-contacts-dto.js +2 -2
  78. package/dist/esm/models/bid-contract-document-dto.d.ts +60 -0
  79. package/dist/esm/models/bid-contract-document-dto.js +19 -0
  80. package/dist/esm/models/bid-contract-documents-batch-v1-request-dto.d.ts +2 -2
  81. package/dist/esm/models/bid-contract-documents-batch-v1-request-dto.js +2 -2
  82. package/dist/esm/models/bid-contract-documents-v1-response-dto.d.ts +2 -2
  83. package/dist/esm/models/bid-contract-documents-v1-response-dto.js +2 -2
  84. package/dist/esm/models/bid-created-response-dto.d.ts +2 -2
  85. package/dist/esm/models/bid-created-response-dto.js +2 -2
  86. package/dist/esm/models/bid-delivery-terms-dto.d.ts +2 -2
  87. package/dist/esm/models/bid-delivery-terms-dto.js +2 -2
  88. package/dist/esm/models/bid-detail-response-dto.d.ts +2 -2
  89. package/dist/esm/models/bid-detail-response-dto.js +2 -2
  90. package/dist/esm/models/bid-document-dto.d.ts +2 -2
  91. package/dist/esm/models/bid-document-dto.js +2 -2
  92. package/dist/esm/models/bid-document-v1-dto.d.ts +2 -2
  93. package/dist/esm/models/bid-document-v1-dto.js +2 -2
  94. package/dist/esm/models/bid-failed-response-dto.d.ts +2 -2
  95. package/dist/esm/models/bid-failed-response-dto.js +2 -2
  96. package/dist/esm/models/bid-failed-v2-response-dto.d.ts +2 -2
  97. package/dist/esm/models/bid-failed-v2-response-dto.js +2 -2
  98. package/dist/esm/models/bid-failure-reason.d.ts +2 -2
  99. package/dist/esm/models/bid-failure-reason.js +2 -2
  100. package/dist/esm/models/bid-item-dto.d.ts +2 -2
  101. package/dist/esm/models/bid-item-dto.js +2 -2
  102. package/dist/esm/models/bid-item-v1-dto.d.ts +2 -2
  103. package/dist/esm/models/bid-item-v1-dto.js +2 -2
  104. package/dist/esm/models/bid-lifecycle-dto.d.ts +2 -2
  105. package/dist/esm/models/bid-lifecycle-dto.js +2 -2
  106. package/dist/esm/models/bid-manager-dto.d.ts +2 -2
  107. package/dist/esm/models/bid-manager-dto.js +2 -2
  108. package/dist/esm/models/bid-manager-v1-dto.d.ts +2 -2
  109. package/dist/esm/models/bid-manager-v1-dto.js +2 -2
  110. package/dist/esm/models/bid-participant-summary-dto.d.ts +2 -2
  111. package/dist/esm/models/bid-participant-summary-dto.js +2 -2
  112. package/dist/esm/models/bid-payment-terms-dto.d.ts +2 -2
  113. package/dist/esm/models/bid-payment-terms-dto.js +2 -2
  114. package/dist/esm/models/bid-product-dto.d.ts +2 -2
  115. package/dist/esm/models/bid-product-dto.js +2 -2
  116. package/dist/esm/models/bid-public-status.d.ts +2 -2
  117. package/dist/esm/models/bid-public-status.js +2 -2
  118. package/dist/esm/models/bid-published-response-dto.d.ts +2 -2
  119. package/dist/esm/models/bid-published-response-dto.js +2 -2
  120. package/dist/esm/models/bid-registered-response-dto.d.ts +2 -2
  121. package/dist/esm/models/bid-registered-response-dto.js +2 -2
  122. package/dist/esm/models/bid-result-participant-attachment-dto.d.ts +2 -2
  123. package/dist/esm/models/bid-result-participant-attachment-dto.js +2 -2
  124. package/dist/esm/models/bid-result-participant-dto.d.ts +2 -2
  125. package/dist/esm/models/bid-result-participant-dto.js +2 -2
  126. package/dist/esm/models/bid-result-v1-attachment-dto.d.ts +2 -2
  127. package/dist/esm/models/bid-result-v1-attachment-dto.js +2 -2
  128. package/dist/esm/models/bid-result-v1-bid-product-info-dto.d.ts +2 -2
  129. package/dist/esm/models/bid-result-v1-bid-product-info-dto.js +2 -2
  130. package/dist/esm/models/bid-result-v1-participant-dto.d.ts +2 -2
  131. package/dist/esm/models/bid-result-v1-participant-dto.js +2 -2
  132. package/dist/esm/models/bid-result-v1-product-dto.d.ts +2 -2
  133. package/dist/esm/models/bid-result-v1-product-dto.js +2 -2
  134. package/dist/esm/models/bid-results-batch-request-dto.d.ts +17 -0
  135. package/dist/esm/models/bid-results-batch-request-dto.js +14 -0
  136. package/dist/esm/models/bid-results-batch-v1-request-dto.d.ts +2 -2
  137. package/dist/esm/models/bid-results-batch-v1-request-dto.js +2 -2
  138. package/dist/esm/models/bid-results-response-dto.d.ts +2 -2
  139. package/dist/esm/models/bid-results-response-dto.js +2 -2
  140. package/dist/esm/models/bid-results-v1-response-dto.d.ts +2 -2
  141. package/dist/esm/models/bid-results-v1-response-dto.js +2 -2
  142. package/dist/esm/models/bid-settlement-line-item-dto.d.ts +2 -2
  143. package/dist/esm/models/bid-settlement-line-item-dto.js +2 -2
  144. package/dist/esm/models/bid-settlement-participant-dto.d.ts +2 -2
  145. package/dist/esm/models/bid-settlement-participant-dto.js +2 -2
  146. package/dist/esm/models/bid-settlement-response-dto.d.ts +2 -2
  147. package/dist/esm/models/bid-settlement-response-dto.js +2 -2
  148. package/dist/esm/models/bid-statement-response-dto.d.ts +2 -2
  149. package/dist/esm/models/bid-statement-response-dto.js +2 -2
  150. package/dist/esm/models/bid-statement-v1-response-dto.d.ts +2 -2
  151. package/dist/esm/models/bid-statement-v1-response-dto.js +2 -2
  152. package/dist/esm/models/bid-status.d.ts +2 -2
  153. package/dist/esm/models/bid-status.js +2 -2
  154. package/dist/esm/models/bid-summary-dto.d.ts +2 -2
  155. package/dist/esm/models/bid-summary-dto.js +2 -2
  156. package/dist/esm/models/bid-updated-response-dto.d.ts +2 -2
  157. package/dist/esm/models/bid-updated-response-dto.js +2 -2
  158. package/dist/esm/models/cancel-bid-request-dto.d.ts +17 -0
  159. package/dist/esm/models/cancel-bid-request-dto.js +14 -0
  160. package/dist/esm/models/cancel-bid200-response.d.ts +21 -0
  161. package/dist/esm/models/cancel-bid200-response.js +14 -0
  162. package/dist/esm/models/card-payment-request-response-dto.d.ts +2 -2
  163. package/dist/esm/models/card-payment-request-response-dto.js +2 -2
  164. package/dist/esm/models/complete-acceptance-request-dto.d.ts +2 -2
  165. package/dist/esm/models/complete-acceptance-request-dto.js +2 -2
  166. package/dist/esm/models/complete-acceptance-v1-request-dto.d.ts +2 -2
  167. package/dist/esm/models/complete-acceptance-v1-request-dto.js +2 -2
  168. package/dist/esm/models/complete-acceptance200-response.d.ts +21 -0
  169. package/dist/esm/models/complete-acceptance200-response.js +14 -0
  170. package/dist/esm/models/complete-invoice200-response.d.ts +21 -0
  171. package/dist/esm/models/complete-invoice200-response.js +14 -0
  172. package/dist/esm/models/contract-document-item-dto.d.ts +2 -2
  173. package/dist/esm/models/contract-document-item-dto.js +2 -2
  174. package/dist/esm/models/contract-documents-regenerated-response-dto.d.ts +2 -2
  175. package/dist/esm/models/contract-documents-regenerated-response-dto.js +2 -2
  176. package/dist/esm/models/contract-restriction-confirm-input-dto.d.ts +2 -2
  177. package/dist/esm/models/contract-restriction-confirm-input-dto.js +2 -2
  178. package/dist/esm/models/create-bid-request-dto.d.ts +2 -2
  179. package/dist/esm/models/create-bid-request-dto.js +2 -2
  180. package/dist/esm/models/create-bid-v1-request-dto.d.ts +2 -2
  181. package/dist/esm/models/create-bid-v1-request-dto.js +2 -2
  182. package/dist/esm/models/create-card-payment-request-dto.d.ts +2 -2
  183. package/dist/esm/models/create-card-payment-request-dto.js +2 -2
  184. package/dist/esm/models/create-card-payment200-response.d.ts +21 -0
  185. package/dist/esm/models/create-card-payment200-response.js +14 -0
  186. package/dist/esm/models/create-external-contract-documents-request-dto.d.ts +2 -2
  187. package/dist/esm/models/create-external-contract-documents-request-dto.js +2 -2
  188. package/dist/esm/models/create-external-contract-documents-response-dto.d.ts +2 -2
  189. package/dist/esm/models/create-external-contract-documents-response-dto.js +2 -2
  190. package/dist/esm/models/create-webhook-endpoint-request-dto.d.ts +22 -0
  191. package/dist/esm/models/create-webhook-endpoint-request-dto.js +14 -0
  192. package/dist/esm/models/create-webhook-endpoint201-response.d.ts +21 -0
  193. package/dist/esm/models/create-webhook-endpoint201-response.js +14 -0
  194. package/dist/esm/models/external-contract-document-item-dto.d.ts +2 -2
  195. package/dist/esm/models/external-contract-document-item-dto.js +2 -2
  196. package/dist/esm/models/external-contract-documents-response-dto.d.ts +2 -2
  197. package/dist/esm/models/external-contract-documents-response-dto.js +2 -2
  198. package/dist/esm/models/external-contract-item-dto.d.ts +2 -2
  199. package/dist/esm/models/external-contract-item-dto.js +2 -2
  200. package/dist/esm/models/external-contract-snapshot-dto.d.ts +2 -2
  201. package/dist/esm/models/external-contract-snapshot-dto.js +2 -2
  202. package/dist/esm/models/external-document-inputs-dto.d.ts +2 -2
  203. package/dist/esm/models/external-document-inputs-dto.js +2 -2
  204. package/dist/esm/models/file-meta-response-dto.d.ts +33 -0
  205. package/dist/esm/models/file-meta-response-dto.js +14 -0
  206. package/dist/esm/models/file-uploaded-response-dto.d.ts +2 -2
  207. package/dist/esm/models/file-uploaded-response-dto.js +2 -2
  208. package/dist/esm/models/file-uploaded-v1-response-dto.d.ts +2 -2
  209. package/dist/esm/models/file-uploaded-v1-response-dto.js +2 -2
  210. package/dist/esm/models/generated-external-contract-document-dto.d.ts +2 -2
  211. package/dist/esm/models/generated-external-contract-document-dto.js +2 -2
  212. package/dist/esm/models/get-bid-acceptance200-response.d.ts +21 -0
  213. package/dist/esm/models/get-bid-acceptance200-response.js +14 -0
  214. package/dist/esm/models/get-bid-results200-response.d.ts +21 -0
  215. package/dist/esm/models/get-bid-results200-response.js +14 -0
  216. package/dist/esm/models/get-bid-settlement200-response.d.ts +21 -0
  217. package/dist/esm/models/get-bid-settlement200-response.js +14 -0
  218. package/dist/esm/models/get-bid-statement200-response.d.ts +21 -0
  219. package/dist/esm/models/get-bid-statement200-response.js +14 -0
  220. package/dist/esm/models/get-bid200-response.d.ts +21 -0
  221. package/dist/esm/models/get-bid200-response.js +14 -0
  222. package/dist/esm/models/get-file-meta200-response.d.ts +21 -0
  223. package/dist/esm/models/get-file-meta200-response.js +14 -0
  224. package/dist/esm/models/get-supplier-card-payable-v2200-response.d.ts +21 -0
  225. package/dist/esm/models/get-supplier-card-payable-v2200-response.js +14 -0
  226. package/dist/esm/models/get-webhook-endpoint200-response.d.ts +21 -0
  227. package/dist/esm/models/get-webhook-endpoint200-response.js +14 -0
  228. package/dist/esm/models/health-controller-check200-response.d.ts +21 -0
  229. package/dist/esm/models/health-controller-check200-response.js +14 -0
  230. package/dist/esm/models/health-response-dto.d.ts +2 -2
  231. package/dist/esm/models/health-response-dto.js +2 -2
  232. package/dist/esm/models/hierarchical-region-dto.d.ts +2 -2
  233. package/dist/esm/models/hierarchical-region-dto.js +2 -2
  234. package/dist/esm/models/hierarchical-region-v1-dto.d.ts +2 -2
  235. package/dist/esm/models/hierarchical-region-v1-dto.js +2 -2
  236. package/dist/esm/models/index.d.ts +54 -8
  237. package/dist/esm/models/index.js +54 -8
  238. package/dist/esm/models/introspect-request-dto.d.ts +46 -0
  239. package/dist/esm/models/introspect-request-dto.js +20 -0
  240. package/dist/esm/models/introspection-response-dto.d.ts +45 -0
  241. package/dist/esm/models/introspection-response-dto.js +14 -0
  242. package/dist/esm/models/invalid-param-dto.d.ts +2 -2
  243. package/dist/esm/models/invalid-param-dto.js +2 -2
  244. package/dist/esm/models/invoice-completed-response-dto.d.ts +2 -2
  245. package/dist/esm/models/invoice-completed-response-dto.js +2 -2
  246. package/dist/esm/models/list-bid-contract-documents200-response.d.ts +21 -0
  247. package/dist/esm/models/list-bid-contract-documents200-response.js +14 -0
  248. package/dist/esm/models/list-bid-participants200-response.d.ts +21 -0
  249. package/dist/esm/models/list-bid-participants200-response.js +14 -0
  250. package/dist/esm/models/list-bid-results200-response.d.ts +21 -0
  251. package/dist/esm/models/list-bid-results200-response.js +14 -0
  252. package/dist/esm/models/list-bids-response-dto.d.ts +2 -2
  253. package/dist/esm/models/list-bids-response-dto.js +2 -2
  254. package/dist/esm/models/list-bids200-response.d.ts +21 -0
  255. package/dist/esm/models/list-bids200-response.js +14 -0
  256. package/dist/esm/models/list-products200-response.d.ts +21 -0
  257. package/dist/esm/models/list-products200-response.js +14 -0
  258. package/dist/esm/models/list-webhook-deliveries-response-dto.d.ts +22 -0
  259. package/dist/esm/models/list-webhook-deliveries-response-dto.js +14 -0
  260. package/dist/esm/models/list-webhook-deliveries200-response.d.ts +21 -0
  261. package/dist/esm/models/list-webhook-deliveries200-response.js +14 -0
  262. package/dist/esm/models/list-webhook-endpoints200-response.d.ts +21 -0
  263. package/dist/esm/models/list-webhook-endpoints200-response.js +14 -0
  264. package/dist/esm/models/mark-bid-failed-request-dto.d.ts +2 -2
  265. package/dist/esm/models/mark-bid-failed-request-dto.js +2 -2
  266. package/dist/esm/models/mark-bid-failed-v1-request-dto.d.ts +2 -2
  267. package/dist/esm/models/mark-bid-failed-v1-request-dto.js +2 -2
  268. package/dist/esm/models/mark-bid-failed201-response.d.ts +21 -0
  269. package/dist/esm/models/mark-bid-failed201-response.js +14 -0
  270. package/dist/esm/models/negotiation-score-v1-dto.d.ts +2 -2
  271. package/dist/esm/models/negotiation-score-v1-dto.js +2 -2
  272. package/dist/esm/models/negotiation-scored-response-dto.d.ts +2 -2
  273. package/dist/esm/models/negotiation-scored-response-dto.js +2 -2
  274. package/dist/esm/models/oauth-error-response-dto.d.ts +2 -2
  275. package/dist/esm/models/oauth-error-response-dto.js +2 -2
  276. package/dist/esm/models/partner-webhook-delivery-status.d.ts +18 -0
  277. package/dist/esm/models/partner-webhook-delivery-status.js +19 -0
  278. package/dist/esm/models/partner-webhook-endpoint-status.d.ts +19 -0
  279. package/dist/esm/models/partner-webhook-endpoint-status.js +20 -0
  280. package/dist/esm/models/partner-webhook-event-type.d.ts +22 -0
  281. package/dist/esm/models/partner-webhook-event-type.js +23 -0
  282. package/dist/esm/models/preconditions-dto.d.ts +2 -2
  283. package/dist/esm/models/preconditions-dto.js +2 -2
  284. package/dist/esm/models/preconditions-v1-dto.d.ts +2 -2
  285. package/dist/esm/models/preconditions-v1-dto.js +2 -2
  286. package/dist/esm/models/problem-details-dto.d.ts +7 -3
  287. package/dist/esm/models/problem-details-dto.js +2 -2
  288. package/dist/esm/models/product-receipt-response-dto.d.ts +17 -0
  289. package/dist/esm/models/product-receipt-response-dto.js +14 -0
  290. package/dist/esm/models/product-receipt-v1-response-dto.d.ts +2 -2
  291. package/dist/esm/models/product-receipt-v1-response-dto.js +2 -2
  292. package/dist/esm/models/product-response-dto.d.ts +77 -0
  293. package/dist/esm/models/product-response-dto.js +14 -0
  294. package/dist/esm/models/product-v1-response-dto.d.ts +2 -2
  295. package/dist/esm/models/product-v1-response-dto.js +2 -2
  296. package/dist/esm/models/protected-resource-metadata-dto.d.ts +2 -2
  297. package/dist/esm/models/protected-resource-metadata-dto.js +2 -2
  298. package/dist/esm/models/publish-bid200-response.d.ts +21 -0
  299. package/dist/esm/models/publish-bid200-response.js +14 -0
  300. package/dist/esm/models/regenerate-contract-documents201-response.d.ts +21 -0
  301. package/dist/esm/models/regenerate-contract-documents201-response.js +14 -0
  302. package/dist/esm/models/register-award-request-dto.d.ts +2 -2
  303. package/dist/esm/models/register-award-request-dto.js +2 -2
  304. package/dist/esm/models/register-award-v1-request-dto.d.ts +2 -2
  305. package/dist/esm/models/register-award-v1-request-dto.js +2 -2
  306. package/dist/esm/models/register-award201-response.d.ts +21 -0
  307. package/dist/esm/models/register-award201-response.js +14 -0
  308. package/dist/esm/models/register-bid201-response.d.ts +21 -0
  309. package/dist/esm/models/register-bid201-response.js +14 -0
  310. package/dist/esm/models/register-semo-contract-request-dto.d.ts +2 -2
  311. package/dist/esm/models/register-semo-contract-request-dto.js +2 -2
  312. package/dist/esm/models/request-split-invoice-v1-request-dto.d.ts +2 -2
  313. package/dist/esm/models/request-split-invoice-v1-request-dto.js +2 -2
  314. package/dist/esm/models/retiree-roster-input-dto.d.ts +2 -2
  315. package/dist/esm/models/retiree-roster-input-dto.js +2 -2
  316. package/dist/esm/models/retiree-roster-row-dto.d.ts +2 -2
  317. package/dist/esm/models/retiree-roster-row-dto.js +2 -2
  318. package/dist/esm/models/revert-award-request-dto.d.ts +17 -0
  319. package/dist/esm/models/revert-award-request-dto.js +14 -0
  320. package/dist/esm/models/revert-award200-response.d.ts +21 -0
  321. package/dist/esm/models/revert-award200-response.js +14 -0
  322. package/dist/esm/models/revoke-request-dto.d.ts +2 -2
  323. package/dist/esm/models/revoke-request-dto.js +2 -2
  324. package/dist/esm/models/semo-contract-registered-response-dto.d.ts +2 -2
  325. package/dist/esm/models/semo-contract-registered-response-dto.js +2 -2
  326. package/dist/esm/models/semo-contract-taxinvoice-status-response-dto.d.ts +2 -2
  327. package/dist/esm/models/semo-contract-taxinvoice-status-response-dto.js +2 -2
  328. package/dist/esm/models/send-webhook-test-event200-response.d.ts +21 -0
  329. package/dist/esm/models/send-webhook-test-event200-response.js +14 -0
  330. package/dist/esm/models/split-invoice-v1-response-dto.d.ts +2 -2
  331. package/dist/esm/models/split-invoice-v1-response-dto.js +2 -2
  332. package/dist/esm/models/statement-document-dto.d.ts +2 -2
  333. package/dist/esm/models/statement-document-dto.js +2 -2
  334. package/dist/esm/models/statement-product-dto.d.ts +2 -2
  335. package/dist/esm/models/statement-product-dto.js +2 -2
  336. package/dist/esm/models/statement-v1-document-dto.d.ts +2 -2
  337. package/dist/esm/models/statement-v1-document-dto.js +2 -2
  338. package/dist/esm/models/statement-v1-product-dto.d.ts +2 -2
  339. package/dist/esm/models/statement-v1-product-dto.js +2 -2
  340. package/dist/esm/models/submit-negotiation-scores-v1-request-dto.d.ts +2 -2
  341. package/dist/esm/models/submit-negotiation-scores-v1-request-dto.js +2 -2
  342. package/dist/esm/models/supplier-card-payable-response-dto.d.ts +2 -2
  343. package/dist/esm/models/supplier-card-payable-response-dto.js +2 -2
  344. package/dist/esm/models/supplier-tax-type.d.ts +2 -2
  345. package/dist/esm/models/supplier-tax-type.js +2 -2
  346. package/dist/esm/models/token-request-dto.d.ts +2 -2
  347. package/dist/esm/models/token-request-dto.js +2 -2
  348. package/dist/esm/models/token-response-dto.d.ts +2 -2
  349. package/dist/esm/models/token-response-dto.js +2 -2
  350. package/dist/esm/models/update-bid-request-dto.d.ts +2 -2
  351. package/dist/esm/models/update-bid-request-dto.js +2 -2
  352. package/dist/esm/models/update-bid200-response.d.ts +21 -0
  353. package/dist/esm/models/update-bid200-response.js +14 -0
  354. package/dist/esm/models/update-webhook-endpoint-request-dto.d.ts +27 -0
  355. package/dist/esm/models/update-webhook-endpoint-request-dto.js +14 -0
  356. package/dist/esm/models/upload-file-request-dto.d.ts +2 -2
  357. package/dist/esm/models/upload-file-request-dto.js +2 -2
  358. package/dist/esm/models/upload-file-v1-request-dto.d.ts +2 -2
  359. package/dist/esm/models/upload-file-v1-request-dto.js +2 -2
  360. package/dist/esm/models/upload-file201-response.d.ts +21 -0
  361. package/dist/esm/models/upload-file201-response.js +14 -0
  362. package/dist/esm/models/webhook-delivery-dto.d.ts +73 -0
  363. package/dist/esm/models/webhook-delivery-dto.js +21 -0
  364. package/dist/esm/models/webhook-endpoint-dto.d.ts +55 -0
  365. package/dist/esm/models/webhook-endpoint-dto.js +14 -0
  366. package/dist/esm/models/webhook-endpoint-with-secret-dto.d.ts +59 -0
  367. package/dist/esm/models/webhook-endpoint-with-secret-dto.js +14 -0
  368. package/dist/esm/models/webhook-test-result-dto.d.ts +25 -0
  369. package/dist/esm/models/webhook-test-result-dto.js +14 -0
  370. package/dist/index.d.ts +2 -2
  371. package/dist/index.js +2 -2
  372. package/dist/models/acceptance-result-response-dto.d.ts +2 -2
  373. package/dist/models/acceptance-result-response-dto.js +2 -2
  374. package/dist/models/acceptance-result-v1-response-dto.d.ts +2 -2
  375. package/dist/models/acceptance-result-v1-response-dto.js +2 -2
  376. package/dist/models/acceptance-status-response-dto.d.ts +33 -0
  377. package/dist/models/acceptance-status-response-dto.js +15 -0
  378. package/dist/models/acknowledge-product-receipt200-response.d.ts +21 -0
  379. package/dist/models/acknowledge-product-receipt200-response.js +15 -0
  380. package/dist/models/acknowledge-products-request-dto.d.ts +17 -0
  381. package/dist/models/acknowledge-products-request-dto.js +15 -0
  382. package/dist/models/acknowledge-products-v1-request-dto.d.ts +2 -2
  383. package/dist/models/acknowledge-products-v1-request-dto.js +2 -2
  384. package/dist/models/authorization-server-metadata-dto.d.ts +6 -2
  385. package/dist/models/authorization-server-metadata-dto.js +2 -2
  386. package/dist/models/award-method-public.d.ts +2 -2
  387. package/dist/models/award-method-public.js +2 -2
  388. package/dist/models/award-registered-response-dto.d.ts +2 -2
  389. package/dist/models/award-registered-response-dto.js +2 -2
  390. package/dist/models/award-registered-v2-response-dto.d.ts +2 -2
  391. package/dist/models/award-registered-v2-response-dto.js +2 -2
  392. package/dist/models/award-reverted-v2-response-dto.d.ts +25 -0
  393. package/dist/models/award-reverted-v2-response-dto.js +19 -0
  394. package/dist/models/bid-attachment-v1-dto.d.ts +2 -2
  395. package/dist/models/bid-attachment-v1-dto.js +2 -2
  396. package/dist/models/bid-bond-dto.d.ts +2 -2
  397. package/dist/models/bid-bond-dto.js +2 -2
  398. package/dist/models/bid-bond-v1-dto.d.ts +2 -2
  399. package/dist/models/bid-bond-v1-dto.js +2 -2
  400. package/dist/models/bid-cancelled-response-dto.d.ts +25 -0
  401. package/dist/models/bid-cancelled-response-dto.js +19 -0
  402. package/dist/models/bid-contact-dto.d.ts +2 -2
  403. package/dist/models/bid-contact-dto.js +2 -2
  404. package/dist/models/bid-contacts-dto.d.ts +2 -2
  405. package/dist/models/bid-contacts-dto.js +2 -2
  406. package/dist/models/bid-contract-document-dto.d.ts +60 -0
  407. package/dist/models/bid-contract-document-dto.js +22 -0
  408. package/dist/models/bid-contract-documents-batch-v1-request-dto.d.ts +2 -2
  409. package/dist/models/bid-contract-documents-batch-v1-request-dto.js +2 -2
  410. package/dist/models/bid-contract-documents-v1-response-dto.d.ts +2 -2
  411. package/dist/models/bid-contract-documents-v1-response-dto.js +2 -2
  412. package/dist/models/bid-created-response-dto.d.ts +2 -2
  413. package/dist/models/bid-created-response-dto.js +2 -2
  414. package/dist/models/bid-delivery-terms-dto.d.ts +2 -2
  415. package/dist/models/bid-delivery-terms-dto.js +2 -2
  416. package/dist/models/bid-detail-response-dto.d.ts +2 -2
  417. package/dist/models/bid-detail-response-dto.js +2 -2
  418. package/dist/models/bid-document-dto.d.ts +2 -2
  419. package/dist/models/bid-document-dto.js +2 -2
  420. package/dist/models/bid-document-v1-dto.d.ts +2 -2
  421. package/dist/models/bid-document-v1-dto.js +2 -2
  422. package/dist/models/bid-failed-response-dto.d.ts +2 -2
  423. package/dist/models/bid-failed-response-dto.js +2 -2
  424. package/dist/models/bid-failed-v2-response-dto.d.ts +2 -2
  425. package/dist/models/bid-failed-v2-response-dto.js +2 -2
  426. package/dist/models/bid-failure-reason.d.ts +2 -2
  427. package/dist/models/bid-failure-reason.js +2 -2
  428. package/dist/models/bid-item-dto.d.ts +2 -2
  429. package/dist/models/bid-item-dto.js +2 -2
  430. package/dist/models/bid-item-v1-dto.d.ts +2 -2
  431. package/dist/models/bid-item-v1-dto.js +2 -2
  432. package/dist/models/bid-lifecycle-dto.d.ts +2 -2
  433. package/dist/models/bid-lifecycle-dto.js +2 -2
  434. package/dist/models/bid-manager-dto.d.ts +2 -2
  435. package/dist/models/bid-manager-dto.js +2 -2
  436. package/dist/models/bid-manager-v1-dto.d.ts +2 -2
  437. package/dist/models/bid-manager-v1-dto.js +2 -2
  438. package/dist/models/bid-participant-summary-dto.d.ts +2 -2
  439. package/dist/models/bid-participant-summary-dto.js +2 -2
  440. package/dist/models/bid-payment-terms-dto.d.ts +2 -2
  441. package/dist/models/bid-payment-terms-dto.js +2 -2
  442. package/dist/models/bid-product-dto.d.ts +2 -2
  443. package/dist/models/bid-product-dto.js +2 -2
  444. package/dist/models/bid-public-status.d.ts +2 -2
  445. package/dist/models/bid-public-status.js +2 -2
  446. package/dist/models/bid-published-response-dto.d.ts +2 -2
  447. package/dist/models/bid-published-response-dto.js +2 -2
  448. package/dist/models/bid-registered-response-dto.d.ts +2 -2
  449. package/dist/models/bid-registered-response-dto.js +2 -2
  450. package/dist/models/bid-result-participant-attachment-dto.d.ts +2 -2
  451. package/dist/models/bid-result-participant-attachment-dto.js +2 -2
  452. package/dist/models/bid-result-participant-dto.d.ts +2 -2
  453. package/dist/models/bid-result-participant-dto.js +2 -2
  454. package/dist/models/bid-result-v1-attachment-dto.d.ts +2 -2
  455. package/dist/models/bid-result-v1-attachment-dto.js +2 -2
  456. package/dist/models/bid-result-v1-bid-product-info-dto.d.ts +2 -2
  457. package/dist/models/bid-result-v1-bid-product-info-dto.js +2 -2
  458. package/dist/models/bid-result-v1-participant-dto.d.ts +2 -2
  459. package/dist/models/bid-result-v1-participant-dto.js +2 -2
  460. package/dist/models/bid-result-v1-product-dto.d.ts +2 -2
  461. package/dist/models/bid-result-v1-product-dto.js +2 -2
  462. package/dist/models/bid-results-batch-request-dto.d.ts +17 -0
  463. package/dist/models/bid-results-batch-request-dto.js +15 -0
  464. package/dist/models/bid-results-batch-v1-request-dto.d.ts +2 -2
  465. package/dist/models/bid-results-batch-v1-request-dto.js +2 -2
  466. package/dist/models/bid-results-response-dto.d.ts +2 -2
  467. package/dist/models/bid-results-response-dto.js +2 -2
  468. package/dist/models/bid-results-v1-response-dto.d.ts +2 -2
  469. package/dist/models/bid-results-v1-response-dto.js +2 -2
  470. package/dist/models/bid-settlement-line-item-dto.d.ts +2 -2
  471. package/dist/models/bid-settlement-line-item-dto.js +2 -2
  472. package/dist/models/bid-settlement-participant-dto.d.ts +2 -2
  473. package/dist/models/bid-settlement-participant-dto.js +2 -2
  474. package/dist/models/bid-settlement-response-dto.d.ts +2 -2
  475. package/dist/models/bid-settlement-response-dto.js +2 -2
  476. package/dist/models/bid-statement-response-dto.d.ts +2 -2
  477. package/dist/models/bid-statement-response-dto.js +2 -2
  478. package/dist/models/bid-statement-v1-response-dto.d.ts +2 -2
  479. package/dist/models/bid-statement-v1-response-dto.js +2 -2
  480. package/dist/models/bid-status.d.ts +2 -2
  481. package/dist/models/bid-status.js +2 -2
  482. package/dist/models/bid-summary-dto.d.ts +2 -2
  483. package/dist/models/bid-summary-dto.js +2 -2
  484. package/dist/models/bid-updated-response-dto.d.ts +2 -2
  485. package/dist/models/bid-updated-response-dto.js +2 -2
  486. package/dist/models/cancel-bid-request-dto.d.ts +17 -0
  487. package/dist/models/cancel-bid-request-dto.js +15 -0
  488. package/dist/models/cancel-bid200-response.d.ts +21 -0
  489. package/dist/models/cancel-bid200-response.js +15 -0
  490. package/dist/models/card-payment-request-response-dto.d.ts +2 -2
  491. package/dist/models/card-payment-request-response-dto.js +2 -2
  492. package/dist/models/complete-acceptance-request-dto.d.ts +2 -2
  493. package/dist/models/complete-acceptance-request-dto.js +2 -2
  494. package/dist/models/complete-acceptance-v1-request-dto.d.ts +2 -2
  495. package/dist/models/complete-acceptance-v1-request-dto.js +2 -2
  496. package/dist/models/complete-acceptance200-response.d.ts +21 -0
  497. package/dist/models/complete-acceptance200-response.js +15 -0
  498. package/dist/models/complete-invoice200-response.d.ts +21 -0
  499. package/dist/models/complete-invoice200-response.js +15 -0
  500. package/dist/models/contract-document-item-dto.d.ts +2 -2
  501. package/dist/models/contract-document-item-dto.js +2 -2
  502. package/dist/models/contract-documents-regenerated-response-dto.d.ts +2 -2
  503. package/dist/models/contract-documents-regenerated-response-dto.js +2 -2
  504. package/dist/models/contract-restriction-confirm-input-dto.d.ts +2 -2
  505. package/dist/models/contract-restriction-confirm-input-dto.js +2 -2
  506. package/dist/models/create-bid-request-dto.d.ts +2 -2
  507. package/dist/models/create-bid-request-dto.js +2 -2
  508. package/dist/models/create-bid-v1-request-dto.d.ts +2 -2
  509. package/dist/models/create-bid-v1-request-dto.js +2 -2
  510. package/dist/models/create-card-payment-request-dto.d.ts +2 -2
  511. package/dist/models/create-card-payment-request-dto.js +2 -2
  512. package/dist/models/create-card-payment200-response.d.ts +21 -0
  513. package/dist/models/create-card-payment200-response.js +15 -0
  514. package/dist/models/create-external-contract-documents-request-dto.d.ts +2 -2
  515. package/dist/models/create-external-contract-documents-request-dto.js +2 -2
  516. package/dist/models/create-external-contract-documents-response-dto.d.ts +2 -2
  517. package/dist/models/create-external-contract-documents-response-dto.js +2 -2
  518. package/dist/models/create-webhook-endpoint-request-dto.d.ts +22 -0
  519. package/dist/models/create-webhook-endpoint-request-dto.js +15 -0
  520. package/dist/models/create-webhook-endpoint201-response.d.ts +21 -0
  521. package/dist/models/create-webhook-endpoint201-response.js +15 -0
  522. package/dist/models/external-contract-document-item-dto.d.ts +2 -2
  523. package/dist/models/external-contract-document-item-dto.js +2 -2
  524. package/dist/models/external-contract-documents-response-dto.d.ts +2 -2
  525. package/dist/models/external-contract-documents-response-dto.js +2 -2
  526. package/dist/models/external-contract-item-dto.d.ts +2 -2
  527. package/dist/models/external-contract-item-dto.js +2 -2
  528. package/dist/models/external-contract-snapshot-dto.d.ts +2 -2
  529. package/dist/models/external-contract-snapshot-dto.js +2 -2
  530. package/dist/models/external-document-inputs-dto.d.ts +2 -2
  531. package/dist/models/external-document-inputs-dto.js +2 -2
  532. package/dist/models/file-meta-response-dto.d.ts +33 -0
  533. package/dist/models/file-meta-response-dto.js +15 -0
  534. package/dist/models/file-uploaded-response-dto.d.ts +2 -2
  535. package/dist/models/file-uploaded-response-dto.js +2 -2
  536. package/dist/models/file-uploaded-v1-response-dto.d.ts +2 -2
  537. package/dist/models/file-uploaded-v1-response-dto.js +2 -2
  538. package/dist/models/generated-external-contract-document-dto.d.ts +2 -2
  539. package/dist/models/generated-external-contract-document-dto.js +2 -2
  540. package/dist/models/get-bid-acceptance200-response.d.ts +21 -0
  541. package/dist/models/get-bid-acceptance200-response.js +15 -0
  542. package/dist/models/get-bid-results200-response.d.ts +21 -0
  543. package/dist/models/get-bid-results200-response.js +15 -0
  544. package/dist/models/get-bid-settlement200-response.d.ts +21 -0
  545. package/dist/models/get-bid-settlement200-response.js +15 -0
  546. package/dist/models/get-bid-statement200-response.d.ts +21 -0
  547. package/dist/models/get-bid-statement200-response.js +15 -0
  548. package/dist/models/get-bid200-response.d.ts +21 -0
  549. package/dist/models/get-bid200-response.js +15 -0
  550. package/dist/models/get-file-meta200-response.d.ts +21 -0
  551. package/dist/models/get-file-meta200-response.js +15 -0
  552. package/dist/models/get-supplier-card-payable-v2200-response.d.ts +21 -0
  553. package/dist/models/get-supplier-card-payable-v2200-response.js +15 -0
  554. package/dist/models/get-webhook-endpoint200-response.d.ts +21 -0
  555. package/dist/models/get-webhook-endpoint200-response.js +15 -0
  556. package/dist/models/health-controller-check200-response.d.ts +21 -0
  557. package/dist/models/health-controller-check200-response.js +15 -0
  558. package/dist/models/health-response-dto.d.ts +2 -2
  559. package/dist/models/health-response-dto.js +2 -2
  560. package/dist/models/hierarchical-region-dto.d.ts +2 -2
  561. package/dist/models/hierarchical-region-dto.js +2 -2
  562. package/dist/models/hierarchical-region-v1-dto.d.ts +2 -2
  563. package/dist/models/hierarchical-region-v1-dto.js +2 -2
  564. package/dist/models/index.d.ts +54 -8
  565. package/dist/models/index.js +54 -8
  566. package/dist/models/introspect-request-dto.d.ts +46 -0
  567. package/dist/models/introspect-request-dto.js +23 -0
  568. package/dist/models/introspection-response-dto.d.ts +45 -0
  569. package/dist/models/introspection-response-dto.js +15 -0
  570. package/dist/models/invalid-param-dto.d.ts +2 -2
  571. package/dist/models/invalid-param-dto.js +2 -2
  572. package/dist/models/invoice-completed-response-dto.d.ts +2 -2
  573. package/dist/models/invoice-completed-response-dto.js +2 -2
  574. package/dist/models/list-bid-contract-documents200-response.d.ts +21 -0
  575. package/dist/models/list-bid-contract-documents200-response.js +15 -0
  576. package/dist/models/list-bid-participants200-response.d.ts +21 -0
  577. package/dist/models/list-bid-participants200-response.js +15 -0
  578. package/dist/models/list-bid-results200-response.d.ts +21 -0
  579. package/dist/models/list-bid-results200-response.js +15 -0
  580. package/dist/models/list-bids-response-dto.d.ts +2 -2
  581. package/dist/models/list-bids-response-dto.js +2 -2
  582. package/dist/models/list-bids200-response.d.ts +21 -0
  583. package/dist/models/list-bids200-response.js +15 -0
  584. package/dist/models/list-products200-response.d.ts +21 -0
  585. package/dist/models/list-products200-response.js +15 -0
  586. package/dist/models/list-webhook-deliveries-response-dto.d.ts +22 -0
  587. package/dist/models/list-webhook-deliveries-response-dto.js +15 -0
  588. package/dist/models/list-webhook-deliveries200-response.d.ts +21 -0
  589. package/dist/models/list-webhook-deliveries200-response.js +15 -0
  590. package/dist/models/list-webhook-endpoints200-response.d.ts +21 -0
  591. package/dist/models/list-webhook-endpoints200-response.js +15 -0
  592. package/dist/models/mark-bid-failed-request-dto.d.ts +2 -2
  593. package/dist/models/mark-bid-failed-request-dto.js +2 -2
  594. package/dist/models/mark-bid-failed-v1-request-dto.d.ts +2 -2
  595. package/dist/models/mark-bid-failed-v1-request-dto.js +2 -2
  596. package/dist/models/mark-bid-failed201-response.d.ts +21 -0
  597. package/dist/models/mark-bid-failed201-response.js +15 -0
  598. package/dist/models/negotiation-score-v1-dto.d.ts +2 -2
  599. package/dist/models/negotiation-score-v1-dto.js +2 -2
  600. package/dist/models/negotiation-scored-response-dto.d.ts +2 -2
  601. package/dist/models/negotiation-scored-response-dto.js +2 -2
  602. package/dist/models/oauth-error-response-dto.d.ts +2 -2
  603. package/dist/models/oauth-error-response-dto.js +2 -2
  604. package/dist/models/partner-webhook-delivery-status.d.ts +18 -0
  605. package/dist/models/partner-webhook-delivery-status.js +22 -0
  606. package/dist/models/partner-webhook-endpoint-status.d.ts +19 -0
  607. package/dist/models/partner-webhook-endpoint-status.js +23 -0
  608. package/dist/models/partner-webhook-event-type.d.ts +22 -0
  609. package/dist/models/partner-webhook-event-type.js +26 -0
  610. package/dist/models/preconditions-dto.d.ts +2 -2
  611. package/dist/models/preconditions-dto.js +2 -2
  612. package/dist/models/preconditions-v1-dto.d.ts +2 -2
  613. package/dist/models/preconditions-v1-dto.js +2 -2
  614. package/dist/models/problem-details-dto.d.ts +7 -3
  615. package/dist/models/problem-details-dto.js +2 -2
  616. package/dist/models/product-receipt-response-dto.d.ts +17 -0
  617. package/dist/models/product-receipt-response-dto.js +15 -0
  618. package/dist/models/product-receipt-v1-response-dto.d.ts +2 -2
  619. package/dist/models/product-receipt-v1-response-dto.js +2 -2
  620. package/dist/models/product-response-dto.d.ts +77 -0
  621. package/dist/models/product-response-dto.js +15 -0
  622. package/dist/models/product-v1-response-dto.d.ts +2 -2
  623. package/dist/models/product-v1-response-dto.js +2 -2
  624. package/dist/models/protected-resource-metadata-dto.d.ts +2 -2
  625. package/dist/models/protected-resource-metadata-dto.js +2 -2
  626. package/dist/models/publish-bid200-response.d.ts +21 -0
  627. package/dist/models/publish-bid200-response.js +15 -0
  628. package/dist/models/regenerate-contract-documents201-response.d.ts +21 -0
  629. package/dist/models/regenerate-contract-documents201-response.js +15 -0
  630. package/dist/models/register-award-request-dto.d.ts +2 -2
  631. package/dist/models/register-award-request-dto.js +2 -2
  632. package/dist/models/register-award-v1-request-dto.d.ts +2 -2
  633. package/dist/models/register-award-v1-request-dto.js +2 -2
  634. package/dist/models/register-award201-response.d.ts +21 -0
  635. package/dist/models/register-award201-response.js +15 -0
  636. package/dist/models/register-bid201-response.d.ts +21 -0
  637. package/dist/models/register-bid201-response.js +15 -0
  638. package/dist/models/register-semo-contract-request-dto.d.ts +2 -2
  639. package/dist/models/register-semo-contract-request-dto.js +2 -2
  640. package/dist/models/request-split-invoice-v1-request-dto.d.ts +2 -2
  641. package/dist/models/request-split-invoice-v1-request-dto.js +2 -2
  642. package/dist/models/retiree-roster-input-dto.d.ts +2 -2
  643. package/dist/models/retiree-roster-input-dto.js +2 -2
  644. package/dist/models/retiree-roster-row-dto.d.ts +2 -2
  645. package/dist/models/retiree-roster-row-dto.js +2 -2
  646. package/dist/models/revert-award-request-dto.d.ts +17 -0
  647. package/dist/models/revert-award-request-dto.js +15 -0
  648. package/dist/models/revert-award200-response.d.ts +21 -0
  649. package/dist/models/revert-award200-response.js +15 -0
  650. package/dist/models/revoke-request-dto.d.ts +2 -2
  651. package/dist/models/revoke-request-dto.js +2 -2
  652. package/dist/models/semo-contract-registered-response-dto.d.ts +2 -2
  653. package/dist/models/semo-contract-registered-response-dto.js +2 -2
  654. package/dist/models/semo-contract-taxinvoice-status-response-dto.d.ts +2 -2
  655. package/dist/models/semo-contract-taxinvoice-status-response-dto.js +2 -2
  656. package/dist/models/send-webhook-test-event200-response.d.ts +21 -0
  657. package/dist/models/send-webhook-test-event200-response.js +15 -0
  658. package/dist/models/split-invoice-v1-response-dto.d.ts +2 -2
  659. package/dist/models/split-invoice-v1-response-dto.js +2 -2
  660. package/dist/models/statement-document-dto.d.ts +2 -2
  661. package/dist/models/statement-document-dto.js +2 -2
  662. package/dist/models/statement-product-dto.d.ts +2 -2
  663. package/dist/models/statement-product-dto.js +2 -2
  664. package/dist/models/statement-v1-document-dto.d.ts +2 -2
  665. package/dist/models/statement-v1-document-dto.js +2 -2
  666. package/dist/models/statement-v1-product-dto.d.ts +2 -2
  667. package/dist/models/statement-v1-product-dto.js +2 -2
  668. package/dist/models/submit-negotiation-scores-v1-request-dto.d.ts +2 -2
  669. package/dist/models/submit-negotiation-scores-v1-request-dto.js +2 -2
  670. package/dist/models/supplier-card-payable-response-dto.d.ts +2 -2
  671. package/dist/models/supplier-card-payable-response-dto.js +2 -2
  672. package/dist/models/supplier-tax-type.d.ts +2 -2
  673. package/dist/models/supplier-tax-type.js +2 -2
  674. package/dist/models/token-request-dto.d.ts +2 -2
  675. package/dist/models/token-request-dto.js +2 -2
  676. package/dist/models/token-response-dto.d.ts +2 -2
  677. package/dist/models/token-response-dto.js +2 -2
  678. package/dist/models/update-bid-request-dto.d.ts +2 -2
  679. package/dist/models/update-bid-request-dto.js +2 -2
  680. package/dist/models/update-bid200-response.d.ts +21 -0
  681. package/dist/models/update-bid200-response.js +15 -0
  682. package/dist/models/update-webhook-endpoint-request-dto.d.ts +27 -0
  683. package/dist/models/update-webhook-endpoint-request-dto.js +15 -0
  684. package/dist/models/upload-file-request-dto.d.ts +2 -2
  685. package/dist/models/upload-file-request-dto.js +2 -2
  686. package/dist/models/upload-file-v1-request-dto.d.ts +2 -2
  687. package/dist/models/upload-file-v1-request-dto.js +2 -2
  688. package/dist/models/upload-file201-response.d.ts +21 -0
  689. package/dist/models/upload-file201-response.js +15 -0
  690. package/dist/models/webhook-delivery-dto.d.ts +73 -0
  691. package/dist/models/webhook-delivery-dto.js +24 -0
  692. package/dist/models/webhook-endpoint-dto.d.ts +55 -0
  693. package/dist/models/webhook-endpoint-dto.js +15 -0
  694. package/dist/models/webhook-endpoint-with-secret-dto.d.ts +59 -0
  695. package/dist/models/webhook-endpoint-with-secret-dto.js +15 -0
  696. package/dist/models/webhook-test-result-dto.d.ts +25 -0
  697. package/dist/models/webhook-test-result-dto.js +15 -0
  698. package/docs/AcceptanceStatusResponseDto.md +28 -0
  699. package/docs/AcknowledgeProductReceipt200Response.md +22 -0
  700. package/docs/AcknowledgeProductsRequestDto.md +20 -0
  701. package/docs/AuthorizationServerMetadataDto.md +2 -0
  702. package/docs/AwardRevertedV2ResponseDto.md +22 -0
  703. package/docs/BidCancelledResponseDto.md +22 -0
  704. package/docs/BidContractDocumentDto.md +38 -0
  705. package/docs/{IssueTaxInvoiceRequestDto.md → BidResultsBatchRequestDto.md} +5 -5
  706. package/docs/CancelBid200Response.md +22 -0
  707. package/docs/CancelBidRequestDto.md +20 -0
  708. package/docs/CompleteAcceptance200Response.md +22 -0
  709. package/docs/CompleteInvoice200Response.md +22 -0
  710. package/docs/CreateCardPayment200Response.md +22 -0
  711. package/docs/CreateWebhookEndpoint201Response.md +22 -0
  712. package/docs/CreateWebhookEndpointRequestDto.md +22 -0
  713. package/docs/FileMetaResponseDto.md +28 -0
  714. package/docs/GetBid200Response.md +22 -0
  715. package/docs/GetBidAcceptance200Response.md +22 -0
  716. package/docs/GetBidResults200Response.md +22 -0
  717. package/docs/GetBidSettlement200Response.md +22 -0
  718. package/docs/GetBidStatement200Response.md +22 -0
  719. package/docs/GetFileMeta200Response.md +22 -0
  720. package/docs/GetSupplierCardPayableV2200Response.md +22 -0
  721. package/docs/GetWebhookEndpoint200Response.md +22 -0
  722. package/docs/HealthControllerCheck200Response.md +22 -0
  723. package/docs/IntrospectRequestDto.md +30 -0
  724. package/docs/IntrospectionResponseDto.md +34 -0
  725. package/docs/ListBidContractDocuments200Response.md +22 -0
  726. package/docs/ListBidParticipants200Response.md +22 -0
  727. package/docs/ListBidResults200Response.md +22 -0
  728. package/docs/ListBids200Response.md +22 -0
  729. package/docs/ListProducts200Response.md +22 -0
  730. package/docs/ListWebhookDeliveries200Response.md +22 -0
  731. package/docs/ListWebhookDeliveriesResponseDto.md +22 -0
  732. package/docs/ListWebhookEndpoints200Response.md +22 -0
  733. package/docs/MarkBidFailed201Response.md +22 -0
  734. package/docs/OauthApi.md +54 -0
  735. package/docs/PartnerV1Api.md +12 -12
  736. package/docs/PartnerV2Api.md +1233 -228
  737. package/docs/PartnerWebhookDeliveryStatus.md +14 -0
  738. package/docs/PartnerWebhookEndpointStatus.md +11 -0
  739. package/docs/PartnerWebhookEventType.md +17 -0
  740. package/docs/ProblemDetailsDto.md +3 -1
  741. package/docs/ProductReceiptResponseDto.md +20 -0
  742. package/docs/ProductResponseDto.md +50 -0
  743. package/docs/PublishBid200Response.md +22 -0
  744. package/docs/RegenerateContractDocuments201Response.md +22 -0
  745. package/docs/RegisterAward201Response.md +22 -0
  746. package/docs/RegisterBid201Response.md +22 -0
  747. package/docs/RevertAward200Response.md +22 -0
  748. package/docs/RevertAwardRequestDto.md +20 -0
  749. package/docs/SendWebhookTestEvent200Response.md +22 -0
  750. package/docs/UpdateBid200Response.md +22 -0
  751. package/docs/UpdateWebhookEndpointRequestDto.md +24 -0
  752. package/docs/UploadFile201Response.md +22 -0
  753. package/docs/WebhookDeliveryDto.md +42 -0
  754. package/docs/WebhookEndpointDto.md +38 -0
  755. package/docs/WebhookEndpointWithSecretDto.md +40 -0
  756. package/docs/WebhookTestResultDto.md +24 -0
  757. package/index.ts +2 -2
  758. package/models/acceptance-result-response-dto.ts +2 -2
  759. package/models/acceptance-result-v1-response-dto.ts +2 -2
  760. package/models/acceptance-status-response-dto.ts +39 -0
  761. package/models/acknowledge-product-receipt200-response.ts +27 -0
  762. package/models/acknowledge-products-request-dto.ts +23 -0
  763. package/models/acknowledge-products-v1-request-dto.ts +2 -2
  764. package/models/authorization-server-metadata-dto.ts +6 -2
  765. package/models/award-method-public.ts +2 -2
  766. package/models/award-registered-response-dto.ts +2 -2
  767. package/models/award-registered-v2-response-dto.ts +2 -2
  768. package/models/award-reverted-v2-response-dto.ts +34 -0
  769. package/models/bid-attachment-v1-dto.ts +2 -2
  770. package/models/bid-bond-dto.ts +2 -2
  771. package/models/bid-bond-v1-dto.ts +2 -2
  772. package/models/bid-cancelled-response-dto.ts +34 -0
  773. package/models/bid-contact-dto.ts +2 -2
  774. package/models/bid-contacts-dto.ts +2 -2
  775. package/models/bid-contract-document-dto.ts +69 -0
  776. package/models/bid-contract-documents-batch-v1-request-dto.ts +2 -2
  777. package/models/bid-contract-documents-v1-response-dto.ts +2 -2
  778. package/models/bid-created-response-dto.ts +2 -2
  779. package/models/bid-delivery-terms-dto.ts +2 -2
  780. package/models/bid-detail-response-dto.ts +2 -2
  781. package/models/bid-document-dto.ts +2 -2
  782. package/models/bid-document-v1-dto.ts +2 -2
  783. package/models/bid-failed-response-dto.ts +2 -2
  784. package/models/bid-failed-v2-response-dto.ts +2 -2
  785. package/models/bid-failure-reason.ts +2 -2
  786. package/models/bid-item-dto.ts +2 -2
  787. package/models/bid-item-v1-dto.ts +2 -2
  788. package/models/bid-lifecycle-dto.ts +2 -2
  789. package/models/bid-manager-dto.ts +2 -2
  790. package/models/bid-manager-v1-dto.ts +2 -2
  791. package/models/bid-participant-summary-dto.ts +2 -2
  792. package/models/bid-payment-terms-dto.ts +2 -2
  793. package/models/bid-product-dto.ts +2 -2
  794. package/models/bid-public-status.ts +2 -2
  795. package/models/bid-published-response-dto.ts +2 -2
  796. package/models/bid-registered-response-dto.ts +2 -2
  797. package/models/bid-result-participant-attachment-dto.ts +2 -2
  798. package/models/bid-result-participant-dto.ts +2 -2
  799. package/models/bid-result-v1-attachment-dto.ts +2 -2
  800. package/models/bid-result-v1-bid-product-info-dto.ts +2 -2
  801. package/models/bid-result-v1-participant-dto.ts +2 -2
  802. package/models/bid-result-v1-product-dto.ts +2 -2
  803. package/models/bid-results-batch-request-dto.ts +23 -0
  804. package/models/bid-results-batch-v1-request-dto.ts +2 -2
  805. package/models/bid-results-response-dto.ts +2 -2
  806. package/models/bid-results-v1-response-dto.ts +2 -2
  807. package/models/bid-settlement-line-item-dto.ts +2 -2
  808. package/models/bid-settlement-participant-dto.ts +2 -2
  809. package/models/bid-settlement-response-dto.ts +2 -2
  810. package/models/bid-statement-response-dto.ts +2 -2
  811. package/models/bid-statement-v1-response-dto.ts +2 -2
  812. package/models/bid-status.ts +2 -2
  813. package/models/bid-summary-dto.ts +2 -2
  814. package/models/bid-updated-response-dto.ts +2 -2
  815. package/models/cancel-bid-request-dto.ts +23 -0
  816. package/models/cancel-bid200-response.ts +27 -0
  817. package/models/card-payment-request-response-dto.ts +2 -2
  818. package/models/complete-acceptance-request-dto.ts +2 -2
  819. package/models/complete-acceptance-v1-request-dto.ts +2 -2
  820. package/models/complete-acceptance200-response.ts +27 -0
  821. package/models/complete-invoice200-response.ts +27 -0
  822. package/models/contract-document-item-dto.ts +2 -2
  823. package/models/contract-documents-regenerated-response-dto.ts +2 -2
  824. package/models/contract-restriction-confirm-input-dto.ts +2 -2
  825. package/models/create-bid-request-dto.ts +2 -2
  826. package/models/create-bid-v1-request-dto.ts +2 -2
  827. package/models/create-card-payment-request-dto.ts +2 -2
  828. package/models/create-card-payment200-response.ts +27 -0
  829. package/models/create-external-contract-documents-request-dto.ts +2 -2
  830. package/models/create-external-contract-documents-response-dto.ts +2 -2
  831. package/models/create-webhook-endpoint-request-dto.ts +30 -0
  832. package/models/create-webhook-endpoint201-response.ts +27 -0
  833. package/models/external-contract-document-item-dto.ts +2 -2
  834. package/models/external-contract-documents-response-dto.ts +2 -2
  835. package/models/external-contract-item-dto.ts +2 -2
  836. package/models/external-contract-snapshot-dto.ts +2 -2
  837. package/models/external-document-inputs-dto.ts +2 -2
  838. package/models/file-meta-response-dto.ts +39 -0
  839. package/models/file-uploaded-response-dto.ts +2 -2
  840. package/models/file-uploaded-v1-response-dto.ts +2 -2
  841. package/models/generated-external-contract-document-dto.ts +2 -2
  842. package/models/get-bid-acceptance200-response.ts +27 -0
  843. package/models/get-bid-results200-response.ts +27 -0
  844. package/models/get-bid-settlement200-response.ts +27 -0
  845. package/models/get-bid-statement200-response.ts +27 -0
  846. package/models/get-bid200-response.ts +27 -0
  847. package/models/get-file-meta200-response.ts +27 -0
  848. package/models/get-supplier-card-payable-v2200-response.ts +27 -0
  849. package/models/get-webhook-endpoint200-response.ts +27 -0
  850. package/models/health-controller-check200-response.ts +27 -0
  851. package/models/health-response-dto.ts +2 -2
  852. package/models/hierarchical-region-dto.ts +2 -2
  853. package/models/hierarchical-region-v1-dto.ts +2 -2
  854. package/models/index.ts +54 -8
  855. package/models/introspect-request-dto.ts +56 -0
  856. package/models/introspection-response-dto.ts +51 -0
  857. package/models/invalid-param-dto.ts +2 -2
  858. package/models/invoice-completed-response-dto.ts +2 -2
  859. package/models/list-bid-contract-documents200-response.ts +27 -0
  860. package/models/list-bid-participants200-response.ts +27 -0
  861. package/models/list-bid-results200-response.ts +27 -0
  862. package/models/list-bids-response-dto.ts +2 -2
  863. package/models/list-bids200-response.ts +27 -0
  864. package/models/list-products200-response.ts +27 -0
  865. package/models/list-webhook-deliveries-response-dto.ts +30 -0
  866. package/models/list-webhook-deliveries200-response.ts +27 -0
  867. package/models/list-webhook-endpoints200-response.ts +27 -0
  868. package/models/mark-bid-failed-request-dto.ts +2 -2
  869. package/models/mark-bid-failed-v1-request-dto.ts +2 -2
  870. package/models/mark-bid-failed201-response.ts +27 -0
  871. package/models/negotiation-score-v1-dto.ts +2 -2
  872. package/models/negotiation-scored-response-dto.ts +2 -2
  873. package/models/oauth-error-response-dto.ts +2 -2
  874. package/models/partner-webhook-delivery-status.ts +28 -0
  875. package/models/partner-webhook-endpoint-status.ts +29 -0
  876. package/models/partner-webhook-event-type.ts +32 -0
  877. package/models/preconditions-dto.ts +2 -2
  878. package/models/preconditions-v1-dto.ts +2 -2
  879. package/models/problem-details-dto.ts +7 -3
  880. package/models/product-receipt-response-dto.ts +23 -0
  881. package/models/product-receipt-v1-response-dto.ts +2 -2
  882. package/models/product-response-dto.ts +83 -0
  883. package/models/product-v1-response-dto.ts +2 -2
  884. package/models/protected-resource-metadata-dto.ts +2 -2
  885. package/models/publish-bid200-response.ts +27 -0
  886. package/models/regenerate-contract-documents201-response.ts +27 -0
  887. package/models/register-award-request-dto.ts +2 -2
  888. package/models/register-award-v1-request-dto.ts +2 -2
  889. package/models/register-award201-response.ts +27 -0
  890. package/models/register-bid201-response.ts +27 -0
  891. package/models/register-semo-contract-request-dto.ts +2 -2
  892. package/models/request-split-invoice-v1-request-dto.ts +2 -2
  893. package/models/retiree-roster-input-dto.ts +2 -2
  894. package/models/retiree-roster-row-dto.ts +2 -2
  895. package/models/revert-award-request-dto.ts +23 -0
  896. package/models/revert-award200-response.ts +27 -0
  897. package/models/revoke-request-dto.ts +2 -2
  898. package/models/semo-contract-registered-response-dto.ts +2 -2
  899. package/models/semo-contract-taxinvoice-status-response-dto.ts +2 -2
  900. package/models/send-webhook-test-event200-response.ts +27 -0
  901. package/models/split-invoice-v1-response-dto.ts +2 -2
  902. package/models/statement-document-dto.ts +2 -2
  903. package/models/statement-product-dto.ts +2 -2
  904. package/models/statement-v1-document-dto.ts +2 -2
  905. package/models/statement-v1-product-dto.ts +2 -2
  906. package/models/submit-negotiation-scores-v1-request-dto.ts +2 -2
  907. package/models/supplier-card-payable-response-dto.ts +2 -2
  908. package/models/supplier-tax-type.ts +2 -2
  909. package/models/token-request-dto.ts +2 -2
  910. package/models/token-response-dto.ts +2 -2
  911. package/models/update-bid-request-dto.ts +2 -2
  912. package/models/update-bid200-response.ts +27 -0
  913. package/models/update-webhook-endpoint-request-dto.ts +39 -0
  914. package/models/upload-file-request-dto.ts +2 -2
  915. package/models/upload-file-v1-request-dto.ts +2 -2
  916. package/models/upload-file201-response.ts +27 -0
  917. package/models/webhook-delivery-dto.ts +82 -0
  918. package/models/webhook-endpoint-dto.ts +67 -0
  919. package/models/webhook-endpoint-with-secret-dto.ts +71 -0
  920. package/models/webhook-test-result-dto.ts +31 -0
  921. package/package.json +1 -1
  922. package/dist/esm/models/close-sandbox-bid-response-dto.d.ts +0 -34
  923. package/dist/esm/models/close-sandbox-bid-response-dto.js +0 -21
  924. package/dist/esm/models/embed-launch-request-dto.d.ts +0 -33
  925. package/dist/esm/models/embed-launch-request-dto.js +0 -20
  926. package/dist/esm/models/embed-launch-response-dto.d.ts +0 -21
  927. package/dist/esm/models/embed-launch-response-dto.js +0 -14
  928. package/dist/esm/models/issue-tax-invoice-request-dto.d.ts +0 -17
  929. package/dist/esm/models/issue-tax-invoice-request-dto.js +0 -14
  930. package/dist/esm/models/negotiation-score-dto.d.ts +0 -25
  931. package/dist/esm/models/negotiation-score-dto.js +0 -14
  932. package/dist/esm/models/negotiation-scored-v2-response-dto.d.ts +0 -29
  933. package/dist/esm/models/negotiation-scored-v2-response-dto.js +0 -16
  934. package/dist/esm/models/submit-negotiation-scores-request-dto.d.ts +0 -22
  935. package/dist/esm/models/submit-negotiation-scores-request-dto.js +0 -14
  936. package/dist/esm/models/tax-invoice-issued-response-dto.d.ts +0 -33
  937. package/dist/esm/models/tax-invoice-issued-response-dto.js +0 -14
  938. package/dist/models/close-sandbox-bid-response-dto.d.ts +0 -34
  939. package/dist/models/close-sandbox-bid-response-dto.js +0 -24
  940. package/dist/models/embed-launch-request-dto.d.ts +0 -33
  941. package/dist/models/embed-launch-request-dto.js +0 -23
  942. package/dist/models/embed-launch-response-dto.d.ts +0 -21
  943. package/dist/models/embed-launch-response-dto.js +0 -15
  944. package/dist/models/issue-tax-invoice-request-dto.d.ts +0 -17
  945. package/dist/models/issue-tax-invoice-request-dto.js +0 -15
  946. package/dist/models/negotiation-score-dto.d.ts +0 -25
  947. package/dist/models/negotiation-score-dto.js +0 -15
  948. package/dist/models/negotiation-scored-v2-response-dto.d.ts +0 -29
  949. package/dist/models/negotiation-scored-v2-response-dto.js +0 -19
  950. package/dist/models/submit-negotiation-scores-request-dto.d.ts +0 -22
  951. package/dist/models/submit-negotiation-scores-request-dto.js +0 -15
  952. package/dist/models/tax-invoice-issued-response-dto.d.ts +0 -33
  953. package/dist/models/tax-invoice-issued-response-dto.js +0 -15
  954. package/docs/CloseSandboxBidResponseDto.md +0 -24
  955. package/docs/EmbedLaunchRequestDto.md +0 -24
  956. package/docs/EmbedLaunchResponseDto.md +0 -22
  957. package/docs/NegotiationScoreDto.md +0 -24
  958. package/docs/NegotiationScoredV2ResponseDto.md +0 -24
  959. package/docs/SubmitNegotiationScoresRequestDto.md +0 -22
  960. package/docs/TaxInvoiceIssuedResponseDto.md +0 -28
  961. package/models/close-sandbox-bid-response-dto.ts +0 -43
  962. package/models/embed-launch-request-dto.ts +0 -42
  963. package/models/embed-launch-response-dto.ts +0 -27
  964. package/models/issue-tax-invoice-request-dto.ts +0 -23
  965. package/models/negotiation-score-dto.ts +0 -31
  966. package/models/negotiation-scored-v2-response-dto.ts +0 -38
  967. package/models/submit-negotiation-scores-request-dto.ts +0 -30
  968. package/models/tax-invoice-issued-response-dto.ts +0 -39
@@ -2,9 +2,9 @@
2
2
  /* eslint-disable */
3
3
  /**
4
4
  * CMARKET V6 Partner API
5
- * 외부 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` 헤더로 통지한다. 소비자는 이 헤더를 모니터링할 것.
5
+ * 외부 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` 헤더로 통지한다. 소비자는 이 헤더를 모니터링할 것.
6
6
  *
7
- * The version of the OpenAPI document: 25.2.0
7
+ * The version of the OpenAPI document: 31.1.0
8
8
  * Contact: semo.io.kr@gmail.com
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -22,82 +22,114 @@ import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObj
22
22
  // @ts-ignore
23
23
  import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError, operationServerMap } from '../base';
24
24
  // @ts-ignore
25
- import type { AcceptanceResultResponseDto } from '../models';
25
+ import type { AcknowledgeProductReceipt200Response } from '../models';
26
26
  // @ts-ignore
27
- import type { AwardRegisteredV2ResponseDto } from '../models';
28
- // @ts-ignore
29
- import type { BidDetailResponseDto } from '../models';
30
- // @ts-ignore
31
- import type { BidFailedV2ResponseDto } from '../models';
27
+ import type { AcknowledgeProductsRequestDto } from '../models';
32
28
  // @ts-ignore
33
29
  import type { BidPublicStatus } from '../models';
34
30
  // @ts-ignore
35
- import type { BidPublishedResponseDto } from '../models';
36
- // @ts-ignore
37
- import type { BidRegisteredResponseDto } from '../models';
38
- // @ts-ignore
39
- import type { BidResultsResponseDto } from '../models';
31
+ import type { BidResultsBatchRequestDto } from '../models';
40
32
  // @ts-ignore
41
- import type { BidSettlementResponseDto } from '../models';
33
+ import type { CancelBid200Response } from '../models';
42
34
  // @ts-ignore
43
- import type { BidStatementResponseDto } from '../models';
44
- // @ts-ignore
45
- import type { BidUpdatedResponseDto } from '../models';
35
+ import type { CancelBidRequestDto } from '../models';
46
36
  // @ts-ignore
47
37
  import type { CardPaymentRequestResponseDto } from '../models';
48
38
  // @ts-ignore
49
- import type { CloseSandboxBidResponseDto } from '../models';
39
+ import type { CompleteAcceptance200Response } from '../models';
50
40
  // @ts-ignore
51
41
  import type { CompleteAcceptanceRequestDto } from '../models';
52
42
  // @ts-ignore
53
- import type { ContractDocumentsRegeneratedResponseDto } from '../models';
43
+ import type { CompleteInvoice200Response } from '../models';
54
44
  // @ts-ignore
55
45
  import type { CreateBidRequestDto } from '../models';
56
46
  // @ts-ignore
47
+ import type { CreateCardPayment200Response } from '../models';
48
+ // @ts-ignore
57
49
  import type { CreateCardPaymentRequestDto } from '../models';
58
50
  // @ts-ignore
59
51
  import type { CreateExternalContractDocumentsRequestDto } from '../models';
60
52
  // @ts-ignore
61
53
  import type { CreateExternalContractDocumentsResponseDto } from '../models';
62
54
  // @ts-ignore
63
- import type { EmbedLaunchRequestDto } from '../models';
55
+ import type { CreateWebhookEndpoint201Response } from '../models';
64
56
  // @ts-ignore
65
- import type { EmbedLaunchResponseDto } from '../models';
57
+ import type { CreateWebhookEndpointRequestDto } from '../models';
66
58
  // @ts-ignore
67
59
  import type { ExternalContractDocumentsResponseDto } from '../models';
68
60
  // @ts-ignore
69
- import type { FileUploadedResponseDto } from '../models';
61
+ import type { GetBid200Response } from '../models';
62
+ // @ts-ignore
63
+ import type { GetBidAcceptance200Response } from '../models';
64
+ // @ts-ignore
65
+ import type { GetBidResults200Response } from '../models';
66
+ // @ts-ignore
67
+ import type { GetBidSettlement200Response } from '../models';
68
+ // @ts-ignore
69
+ import type { GetBidStatement200Response } from '../models';
70
+ // @ts-ignore
71
+ import type { GetFileMeta200Response } from '../models';
72
+ // @ts-ignore
73
+ import type { GetSupplierCardPayableV2200Response } from '../models';
74
+ // @ts-ignore
75
+ import type { GetWebhookEndpoint200Response } from '../models';
76
+ // @ts-ignore
77
+ import type { HealthControllerCheck200Response } from '../models';
78
+ // @ts-ignore
79
+ import type { ListBidContractDocuments200Response } from '../models';
80
+ // @ts-ignore
81
+ import type { ListBidParticipants200Response } from '../models';
70
82
  // @ts-ignore
71
- import type { HealthResponseDto } from '../models';
83
+ import type { ListBidResults200Response } from '../models';
72
84
  // @ts-ignore
73
- import type { InvoiceCompletedResponseDto } from '../models';
85
+ import type { ListBids200Response } from '../models';
74
86
  // @ts-ignore
75
- import type { IssueTaxInvoiceRequestDto } from '../models';
87
+ import type { ListProducts200Response } from '../models';
76
88
  // @ts-ignore
77
- import type { ListBidsResponseDto } from '../models';
89
+ import type { ListWebhookDeliveries200Response } from '../models';
90
+ // @ts-ignore
91
+ import type { ListWebhookEndpoints200Response } from '../models';
92
+ // @ts-ignore
93
+ import type { MarkBidFailed201Response } from '../models';
78
94
  // @ts-ignore
79
95
  import type { MarkBidFailedRequestDto } from '../models';
80
96
  // @ts-ignore
81
- import type { NegotiationScoredV2ResponseDto } from '../models';
97
+ import type { PartnerWebhookDeliveryStatus } from '../models';
82
98
  // @ts-ignore
83
99
  import type { ProblemDetailsDto } from '../models';
84
100
  // @ts-ignore
101
+ import type { PublishBid200Response } from '../models';
102
+ // @ts-ignore
103
+ import type { RegenerateContractDocuments201Response } from '../models';
104
+ // @ts-ignore
105
+ import type { RegisterAward201Response } from '../models';
106
+ // @ts-ignore
85
107
  import type { RegisterAwardRequestDto } from '../models';
86
108
  // @ts-ignore
109
+ import type { RegisterBid201Response } from '../models';
110
+ // @ts-ignore
87
111
  import type { RegisterSemoContractRequestDto } from '../models';
88
112
  // @ts-ignore
113
+ import type { RevertAward200Response } from '../models';
114
+ // @ts-ignore
115
+ import type { RevertAwardRequestDto } from '../models';
116
+ // @ts-ignore
89
117
  import type { SemoContractRegisteredResponseDto } from '../models';
90
118
  // @ts-ignore
91
119
  import type { SemoContractTaxinvoiceStatusResponseDto } from '../models';
92
120
  // @ts-ignore
93
- import type { SubmitNegotiationScoresRequestDto } from '../models';
121
+ import type { SendWebhookTestEvent200Response } from '../models';
94
122
  // @ts-ignore
95
123
  import type { SupplierCardPayableResponseDto } from '../models';
96
124
  // @ts-ignore
97
- import type { TaxInvoiceIssuedResponseDto } from '../models';
125
+ import type { UpdateBid200Response } from '../models';
98
126
  // @ts-ignore
99
127
  import type { UpdateBidRequestDto } from '../models';
100
128
  // @ts-ignore
129
+ import type { UpdateWebhookEndpointRequestDto } from '../models';
130
+ // @ts-ignore
131
+ import type { UploadFile201Response } from '../models';
132
+ // @ts-ignore
101
133
  import type { UploadFileRequestDto } from '../models';
102
134
  /**
103
135
  * PartnerV2Api - axios parameter creator
@@ -105,16 +137,67 @@ import type { UploadFileRequestDto } from '../models';
105
137
  export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configuration) {
106
138
  return {
107
139
  /**
108
- * 샌드박스 공고를 마감하는 **영업 데모 전용** 엔드포인트입니다. **가짜 상태 주입이 아닙니다.** backend 스케줄러가 부르는 것과 동일한 실제 `CloseBidCommand` dispatch 합니다 개찰이 실제로 수행되고, `status=\'B\'` 커밋 직전 투찰가 동기 복호화가 실제로 일어납니다(복호화 실패 마감이 중단됩니다). 엔드포인트는 데모인 동시에 살아있는 e2e 스모크입니다. **데모 공고 전용:** backend 공고 명의 == 데모 발주처인 공고에 한해서만 마감합니다. 실 발주처 공고는 절대 마감하지 않습니다. **마감 불가:** 이미 마감됐거나 마감 불가 상태면 409(`type: …/upstream-conflict`)를 반환합니다. **필수 스코프:** `bids:write`
109
- * @summary 샌드박스 공고 마감 (영업 데모 전용)
110
- * @param {string} bidId 샌드박스 공고 ID(&#x3D; backend bidId).
140
+ * 저장을 마친 물품을 전송완료로 표시해 다음 조회에서 제외합니다. **되돌릴 없습니다.** 표시한 물품은 `GET /v2/products` 다시 내려오지 않으므로, 자기 시스템에 저장이 끝난 뒤에 호출하세요. **표시 범위는 기관 그룹으로 잠깁니다.** 다른 기관의 물품 코드를 섞어 보내면 건은 표시되지 않고 `acknowledged`요청 수보다 작게 돌아옵니다. **필수 스코프:** `products:write` **멱등성:** `Idempotency-Key` 헤더 필수.
141
+ * @summary 물품 수신확인
142
+ * @param {string} idempotencyKey 멱등성 (1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
143
+ * @param {AcknowledgeProductsRequestDto} acknowledgeProductsRequestDto
144
+ * @param {*} [options] Override http request option.
145
+ * @throws {RequiredError}
146
+ */
147
+ acknowledgeProductReceipt: async (idempotencyKey: string, acknowledgeProductsRequestDto: AcknowledgeProductsRequestDto, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
148
+ // verify required parameter 'idempotencyKey' is not null or undefined
149
+ assertParamExists('acknowledgeProductReceipt', 'idempotencyKey', idempotencyKey)
150
+ // verify required parameter 'acknowledgeProductsRequestDto' is not null or undefined
151
+ assertParamExists('acknowledgeProductReceipt', 'acknowledgeProductsRequestDto', acknowledgeProductsRequestDto)
152
+ const localVarPath = `/v2/products/receipts`;
153
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
154
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
155
+ let baseOptions;
156
+ if (configuration) {
157
+ baseOptions = configuration.baseOptions;
158
+ }
159
+
160
+ const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
161
+ const localVarHeaderParameter = {} as any;
162
+ const localVarQueryParameter = {} as any;
163
+
164
+ // authentication partner-oauth2 required
165
+ // http bearer authentication required
166
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
167
+
168
+ localVarHeaderParameter['Content-Type'] = 'application/json';
169
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
170
+
171
+ if (idempotencyKey != null) {
172
+ localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
173
+ }
174
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
175
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
176
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
177
+ localVarRequestOptions.data = serializeDataIfNeeded(acknowledgeProductsRequestDto, localVarRequestOptions, configuration)
178
+
179
+ return {
180
+ url: toPathString(localVarUrlObj),
181
+ options: localVarRequestOptions,
182
+ };
183
+ },
184
+ /**
185
+ * 진행중인 공고를 취소합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. **되돌릴 수 없습니다.** 취소 사유는 필수이며 공고 이력에 남습니다. **전제조건:** 진행중(ONGOING) 상태여야 합니다. **거부:** 진행중이 아니거나 이미 취소된 공고 → 409. 타 발주처 공고 → 403. **마감과의 차이:** 취소는 공고를 무효로 되돌리는 것이고, 유찰(`POST /v2/bids/{bidId}/fail`)은 응찰을 받았으나 낙찰자를 정하지 못한 종료입니다.
186
+ * @summary 공고 취소
187
+ * @param {string} bidId 공고 식별자(등록 응답의 bidId).
188
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
189
+ * @param {CancelBidRequestDto} cancelBidRequestDto
111
190
  * @param {*} [options] Override http request option.
112
191
  * @throws {RequiredError}
113
192
  */
114
- closeSandboxBid: async (bidId: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
193
+ cancelBid: async (bidId: string, idempotencyKey: string, cancelBidRequestDto: CancelBidRequestDto, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
115
194
  // verify required parameter 'bidId' is not null or undefined
116
- assertParamExists('closeSandboxBid', 'bidId', bidId)
117
- const localVarPath = `/v2/sandbox/bids/{bidId}/close`
195
+ assertParamExists('cancelBid', 'bidId', bidId)
196
+ // verify required parameter 'idempotencyKey' is not null or undefined
197
+ assertParamExists('cancelBid', 'idempotencyKey', idempotencyKey)
198
+ // verify required parameter 'cancelBidRequestDto' is not null or undefined
199
+ assertParamExists('cancelBid', 'cancelBidRequestDto', cancelBidRequestDto)
200
+ const localVarPath = `/v2/bids/{bidId}/cancel`
118
201
  .replace('{bidId}', encodeURIComponent(String(bidId)));
119
202
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
120
203
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -131,11 +214,16 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
131
214
  // http bearer authentication required
132
215
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
133
216
 
134
- localVarHeaderParameter['Accept'] = 'application/json';
217
+ localVarHeaderParameter['Content-Type'] = 'application/json';
218
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
135
219
 
220
+ if (idempotencyKey != null) {
221
+ localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
222
+ }
136
223
  setSearchParams(localVarUrlObj, localVarQueryParameter);
137
224
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
138
225
  localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
226
+ localVarRequestOptions.data = serializeDataIfNeeded(cancelBidRequestDto, localVarRequestOptions, configuration)
139
227
 
140
228
  return {
141
229
  url: toPathString(localVarUrlObj),
@@ -176,7 +264,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
176
264
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
177
265
 
178
266
  localVarHeaderParameter['Content-Type'] = 'application/json';
179
- localVarHeaderParameter['Accept'] = 'application/json';
267
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
180
268
 
181
269
  if (idempotencyKey != null) {
182
270
  localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
@@ -221,7 +309,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
221
309
  // http bearer authentication required
222
310
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
223
311
 
224
- localVarHeaderParameter['Accept'] = 'application/json';
312
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
225
313
 
226
314
  if (idempotencyKey != null) {
227
315
  localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
@@ -236,19 +324,19 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
236
324
  };
237
325
  },
238
326
  /**
239
- * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인(APPROVED)되어 바로 결제 가능합니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. 거기서 카드를 골라 결제합니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/card-payment-requests/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
327
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인되어 바로 결제할 수 있습니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 도메인 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
240
328
  * @summary 결제창 발행
241
329
  * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
242
330
  * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
243
331
  * @param {*} [options] Override http request option.
244
332
  * @throws {RequiredError}
245
333
  */
246
- createCardPaymentRequest: async (idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
334
+ createCardPayment: async (idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
247
335
  // verify required parameter 'idempotencyKey' is not null or undefined
248
- assertParamExists('createCardPaymentRequest', 'idempotencyKey', idempotencyKey)
336
+ assertParamExists('createCardPayment', 'idempotencyKey', idempotencyKey)
249
337
  // verify required parameter 'createCardPaymentRequestDto' is not null or undefined
250
- assertParamExists('createCardPaymentRequest', 'createCardPaymentRequestDto', createCardPaymentRequestDto)
251
- const localVarPath = `/v2/card-payment-requests`;
338
+ assertParamExists('createCardPayment', 'createCardPaymentRequestDto', createCardPaymentRequestDto)
339
+ const localVarPath = `/v2/card-payments`;
252
340
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
253
341
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
254
342
  let baseOptions;
@@ -265,7 +353,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
265
353
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
266
354
 
267
355
  localVarHeaderParameter['Content-Type'] = 'application/json';
268
- localVarHeaderParameter['Accept'] = 'application/json';
356
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
269
357
 
270
358
  if (idempotencyKey != null) {
271
359
  localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
@@ -281,16 +369,19 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
281
369
  };
282
370
  },
283
371
  /**
284
- * 스코프 `embed:launch` 필수. 발주기관 담당자(memberId) 일회성 launch code(60초 TTL) 발급한다. code URL 싣지 말고 @cmarket/embed SDK postMessage 핸드셰이크로만 iframe 전달할 것. memberId API 키의 발주처 소속이 아니면 403, 미허용 screen 400.
285
- * @summary 임베드 launch code 발급 (iframe SSO)
286
- * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
372
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 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` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
373
+ * @summary 결제창 발행
374
+ * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
375
+ * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
287
376
  * @param {*} [options] Override http request option.
288
377
  * @throws {RequiredError}
289
378
  */
290
- createEmbedLaunch: async (embedLaunchRequestDto: EmbedLaunchRequestDto, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
291
- // verify required parameter 'embedLaunchRequestDto' is not null or undefined
292
- assertParamExists('createEmbedLaunch', 'embedLaunchRequestDto', embedLaunchRequestDto)
293
- const localVarPath = `/v2/embed/launch`;
379
+ createCardPaymentRequest: async (idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
380
+ // verify required parameter 'idempotencyKey' is not null or undefined
381
+ assertParamExists('createCardPaymentRequest', 'idempotencyKey', idempotencyKey)
382
+ // verify required parameter 'createCardPaymentRequestDto' is not null or undefined
383
+ assertParamExists('createCardPaymentRequest', 'createCardPaymentRequestDto', createCardPaymentRequestDto)
384
+ const localVarPath = `/v2/card-payment-requests`;
294
385
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
295
386
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
296
387
  let baseOptions;
@@ -307,12 +398,15 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
307
398
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
308
399
 
309
400
  localVarHeaderParameter['Content-Type'] = 'application/json';
310
- localVarHeaderParameter['Accept'] = 'application/json';
401
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
311
402
 
403
+ if (idempotencyKey != null) {
404
+ localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
405
+ }
312
406
  setSearchParams(localVarUrlObj, localVarQueryParameter);
313
407
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
314
408
  localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
315
- localVarRequestOptions.data = serializeDataIfNeeded(embedLaunchRequestDto, localVarRequestOptions, configuration)
409
+ localVarRequestOptions.data = serializeDataIfNeeded(createCardPaymentRequestDto, localVarRequestOptions, configuration)
316
410
 
317
411
  return {
318
412
  url: toPathString(localVarUrlObj),
@@ -320,7 +414,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
320
414
  };
321
415
  },
322
416
  /**
323
- * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `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` 헤더 필수.
417
+ * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `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 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
324
418
  * @summary 계약서류 생성
325
419
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
326
420
  * @param {CreateExternalContractDocumentsRequestDto} createExternalContractDocumentsRequestDto
@@ -349,7 +443,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
349
443
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
350
444
 
351
445
  localVarHeaderParameter['Content-Type'] = 'application/json';
352
- localVarHeaderParameter['Accept'] = 'application/json';
446
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
353
447
 
354
448
  if (idempotencyKey != null) {
355
449
  localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
@@ -365,7 +459,108 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
365
459
  };
366
460
  },
367
461
  /**
368
- * 무인증 — `fileKey` 자체가 capability 다(V5 `/download/{fileKey}` 같은 보안 모델). 파트너 응답의 `fileUrl`/`fullUrl` URL 가리킨다. 요청 시점에 서명하므로 URL저장해 두어도 만료되지 않는다. 응답은 실제 저장소 URL 로의 302 리다이렉트이며 리다이렉트 타깃은 1시간 만료되므로 302 자체를 캐시하지 것(`Cache-Control: no-store`).
462
+ * 수신 주소와 구독할 이벤트를 등록합니다. **호출 시점:** 연동 초기 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
463
+ * @summary 웹훅 구독 등록
464
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
465
+ * @param {CreateWebhookEndpointRequestDto} createWebhookEndpointRequestDto
466
+ * @param {*} [options] Override http request option.
467
+ * @throws {RequiredError}
468
+ */
469
+ createWebhookEndpoint: async (idempotencyKey: string, createWebhookEndpointRequestDto: CreateWebhookEndpointRequestDto, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
470
+ // verify required parameter 'idempotencyKey' is not null or undefined
471
+ assertParamExists('createWebhookEndpoint', 'idempotencyKey', idempotencyKey)
472
+ // verify required parameter 'createWebhookEndpointRequestDto' is not null or undefined
473
+ assertParamExists('createWebhookEndpoint', 'createWebhookEndpointRequestDto', createWebhookEndpointRequestDto)
474
+ const localVarPath = `/v2/webhook-endpoints`;
475
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
476
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
477
+ let baseOptions;
478
+ if (configuration) {
479
+ baseOptions = configuration.baseOptions;
480
+ }
481
+
482
+ const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
483
+ const localVarHeaderParameter = {} as any;
484
+ const localVarQueryParameter = {} as any;
485
+
486
+ // authentication partner-oauth2 required
487
+ // http bearer authentication required
488
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
489
+
490
+ localVarHeaderParameter['Content-Type'] = 'application/json';
491
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
492
+
493
+ if (idempotencyKey != null) {
494
+ localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
495
+ }
496
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
497
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
498
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
499
+ localVarRequestOptions.data = serializeDataIfNeeded(createWebhookEndpointRequestDto, localVarRequestOptions, configuration)
500
+
501
+ return {
502
+ url: toPathString(localVarUrlObj),
503
+ options: localVarRequestOptions,
504
+ };
505
+ },
506
+ /**
507
+ * 구독을 삭제합니다. 이후 그 주소로는 아무 이벤트도 발송되지 않습니다. **호출 시점:** 연동을 종료할 때. 잠시만 멈추려면 삭제하지 말고 `PATCH … {\"status\":\"DISABLED\"}` 를 쓰세요 — 시크릿과 이벤트 구성이 남아 그대로 되살릴 수 있습니다. **되돌릴 수 없습니다.** 다시 등록하면 새 구독이고 서명 시크릿도 새 값입니다. **`If-Match` 가 필수입니다.** `GET` 으로 받은 `ETag` 를 실어 보내세요. - `428` — 헤더 누락. 조회 후 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다(누군가 수정했거나 발송기가 상태를 내렸습니다). 다시 조회해 정말 지울 대상이 맞는지 확인하고 최신 `ETag` 로 재시도하세요. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
508
+ * @summary 웹훅 구독 삭제
509
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
510
+ * @param {string} ifMatch
511
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
512
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
513
+ * @param {*} [options] Override http request option.
514
+ * @throws {RequiredError}
515
+ */
516
+ deleteWebhookEndpoint: async (endpointId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
517
+ // verify required parameter 'endpointId' is not null or undefined
518
+ assertParamExists('deleteWebhookEndpoint', 'endpointId', endpointId)
519
+ // verify required parameter 'ifMatch' is not null or undefined
520
+ assertParamExists('deleteWebhookEndpoint', 'ifMatch', ifMatch)
521
+ // verify required parameter 'ifMatch2' is not null or undefined
522
+ assertParamExists('deleteWebhookEndpoint', 'ifMatch2', ifMatch2)
523
+ // verify required parameter 'idempotencyKey' is not null or undefined
524
+ assertParamExists('deleteWebhookEndpoint', 'idempotencyKey', idempotencyKey)
525
+ const localVarPath = `/v2/webhook-endpoints/{endpointId}`
526
+ .replace('{endpointId}', encodeURIComponent(String(endpointId)));
527
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
528
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
529
+ let baseOptions;
530
+ if (configuration) {
531
+ baseOptions = configuration.baseOptions;
532
+ }
533
+
534
+ const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
535
+ const localVarHeaderParameter = {} as any;
536
+ const localVarQueryParameter = {} as any;
537
+
538
+ // authentication partner-oauth2 required
539
+ // http bearer authentication required
540
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
541
+
542
+ localVarHeaderParameter['Accept'] = 'application/problem+json';
543
+
544
+ if (ifMatch != null) {
545
+ localVarHeaderParameter['if-match'] = String(ifMatch);
546
+ }
547
+ if (ifMatch2 != null) {
548
+ localVarHeaderParameter['If-Match'] = String(ifMatch2);
549
+ }
550
+ if (idempotencyKey != null) {
551
+ localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
552
+ }
553
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
554
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
555
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
556
+
557
+ return {
558
+ url: toPathString(localVarUrlObj),
559
+ options: localVarRequestOptions,
560
+ };
561
+ },
562
+ /**
563
+ * 무인증 — `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` 이 가리키는 주소라 계속 유지되며 중단 일정은 없습니다.
369
564
  * @summary 파일 다운로드 — 안정 URL(302)
370
565
  * @param {string} fileKey 파일 키 — UUIDv4 hex 32자. 업로드(&#x60;POST /v1|/v2/files&#x60;) 응답에서 받은 값.
371
566
  * @param {*} [options] Override http request option.
@@ -424,7 +619,45 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
424
619
  // http bearer authentication required
425
620
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
426
621
 
427
- localVarHeaderParameter['Accept'] = 'application/json';
622
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
623
+
624
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
625
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
626
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
627
+
628
+ return {
629
+ url: toPathString(localVarUrlObj),
630
+ options: localVarRequestOptions,
631
+ };
632
+ },
633
+ /**
634
+ * 공고의 납품·검수·계약완료 진행 상태를 조회합니다. 검수완료 전송의 읽기 카운터파트입니다. **세 축은 서로 다른 사건입니다.** - `delivered`: 낙찰 공급사가 납품(결과확인)을 보고했습니다. - `confirmed`/`confirmedAt`: 발주기관이 검수를 확인했습니다. - `contractCompletedAt`: 검수완료 전송이 원장에 반영된 시각입니다. 검수완료 전송(`POST /v2/bids/{bidId}/acceptance`)이 성사되었는지는 `contractCompletedAt` 이 채워졌는지로 확인하세요. **필수 스코프:** `contracts:read`
635
+ * @summary 검수 현황 조회
636
+ * @param {string} bidId 공고 ID(&#x3D; backend bidId &#x3D; 등록 응답의 bidNo).
637
+ * @param {*} [options] Override http request option.
638
+ * @throws {RequiredError}
639
+ */
640
+ getBidAcceptance: async (bidId: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
641
+ // verify required parameter 'bidId' is not null or undefined
642
+ assertParamExists('getBidAcceptance', 'bidId', bidId)
643
+ const localVarPath = `/v2/bids/{bidId}/acceptance`
644
+ .replace('{bidId}', encodeURIComponent(String(bidId)));
645
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
646
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
647
+ let baseOptions;
648
+ if (configuration) {
649
+ baseOptions = configuration.baseOptions;
650
+ }
651
+
652
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
653
+ const localVarHeaderParameter = {} as any;
654
+ const localVarQueryParameter = {} as any;
655
+
656
+ // authentication partner-oauth2 required
657
+ // http bearer authentication required
658
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
659
+
660
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
428
661
 
429
662
  setSearchParams(localVarUrlObj, localVarQueryParameter);
430
663
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
@@ -445,7 +678,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
445
678
  getBidResults: async (bidId: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
446
679
  // verify required parameter 'bidId' is not null or undefined
447
680
  assertParamExists('getBidResults', 'bidId', bidId)
448
- const localVarPath = `/v2/bids/{bidId}/results`
681
+ const localVarPath = `/v2/bids/{bidId}/result`
449
682
  .replace('{bidId}', encodeURIComponent(String(bidId)));
450
683
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
451
684
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -462,7 +695,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
462
695
  // http bearer authentication required
463
696
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
464
697
 
465
- localVarHeaderParameter['Accept'] = 'application/json';
698
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
466
699
 
467
700
  setSearchParams(localVarUrlObj, localVarQueryParameter);
468
701
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
@@ -474,7 +707,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
474
707
  };
475
708
  },
476
709
  /**
477
- * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회한다. scope bids:read. 가시성 마스킹과 직교한 정산 데이터 — read-only.
710
+ * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 가시성 마스킹과는 직교한 정산 데이터이며 읽기 전용입니다. **필수 스코프:** `invoices:read` 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
478
711
  * @summary 입찰결과 정산정보 조회
479
712
  * @param {string} bidId
480
713
  * @param {*} [options] Override http request option.
@@ -500,7 +733,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
500
733
  // http bearer authentication required
501
734
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
502
735
 
503
- localVarHeaderParameter['Accept'] = 'application/json';
736
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
504
737
 
505
738
  setSearchParams(localVarUrlObj, localVarQueryParameter);
506
739
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
@@ -512,7 +745,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
512
745
  };
513
746
  },
514
747
  /**
515
- * 낙찰 계약의 거래명세서(문서·품목 라인)를 조회한다. scope contracts:read.
748
+ * 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
516
749
  * @summary 거래명세서 조회
517
750
  * @param {string} bidId
518
751
  * @param {number} [paperCode]
@@ -543,7 +776,45 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
543
776
  localVarQueryParameter['paperCode'] = paperCode;
544
777
  }
545
778
 
546
- localVarHeaderParameter['Accept'] = 'application/json';
779
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
780
+
781
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
782
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
783
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
784
+
785
+ return {
786
+ url: toPathString(localVarUrlObj),
787
+ options: localVarRequestOptions,
788
+ };
789
+ },
790
+ /**
791
+ * 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **구 경로:** 버전 없는 `GET /files/{fileKey}` 는 만료 없는 안정 주소이고 파트너 응답의 `fileUrl`/`fullUrl` 이 그 값을 가리킵니다. 인증도 스코프도 없는 옛 표면이라 신규 연동은 이 엔드포인트를 쓰세요. 구 경로는 당분간 유지됩니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** 하이픈 없는 16진수 32자가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. **필수 스코프:** `files:read`
792
+ * @summary 파일 조회(메타 + 내려받기 주소)
793
+ * @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(하이픈 없는 16진수 32자).
794
+ * @param {*} [options] Override http request option.
795
+ * @throws {RequiredError}
796
+ */
797
+ getFileMeta: async (fileKey: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
798
+ // verify required parameter 'fileKey' is not null or undefined
799
+ assertParamExists('getFileMeta', 'fileKey', fileKey)
800
+ const localVarPath = `/v2/files/{fileKey}`
801
+ .replace('{fileKey}', encodeURIComponent(String(fileKey)));
802
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
803
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
804
+ let baseOptions;
805
+ if (configuration) {
806
+ baseOptions = configuration.baseOptions;
807
+ }
808
+
809
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
810
+ const localVarHeaderParameter = {} as any;
811
+ const localVarQueryParameter = {} as any;
812
+
813
+ // authentication partner-oauth2 required
814
+ // http bearer authentication required
815
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
816
+
817
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
547
818
 
548
819
  setSearchParams(localVarUrlObj, localVarQueryParameter);
549
820
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
@@ -593,7 +864,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
593
864
  };
594
865
  },
595
866
  /**
596
- * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write`
867
+ * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
597
868
  * @summary 공급사 카드결제 가능 여부
598
869
  * @param {string} memberId 계약업체 회원 ID
599
870
  * @param {*} [options] Override http request option.
@@ -631,13 +902,17 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
631
902
  };
632
903
  },
633
904
  /**
634
- * ERP 연동 직전 회선·인증 endpoint 동작 확인용.
635
- * @summary Partner API 헬스체크
905
+ * 계약업체가 카드결제로 대금을 받을 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
906
+ * @summary 공급사 카드결제 가능 여부
907
+ * @param {string} memberId 계약업체 회원 ID
636
908
  * @param {*} [options] Override http request option.
637
909
  * @throws {RequiredError}
638
910
  */
639
- healthControllerCheck: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
640
- const localVarPath = `/health`;
911
+ getSupplierCardPayableV2: async (memberId: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
912
+ // verify required parameter 'memberId' is not null or undefined
913
+ assertParamExists('getSupplierCardPayableV2', 'memberId', memberId)
914
+ const localVarPath = `/v2/suppliers/{memberId}/card-payable`
915
+ .replace('{memberId}', encodeURIComponent(String(memberId)));
641
916
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
642
917
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
643
918
  let baseOptions;
@@ -649,7 +924,11 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
649
924
  const localVarHeaderParameter = {} as any;
650
925
  const localVarQueryParameter = {} as any;
651
926
 
652
- localVarHeaderParameter['Accept'] = 'application/json';
927
+ // authentication partner-oauth2 required
928
+ // http bearer authentication required
929
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
930
+
931
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
653
932
 
654
933
  setSearchParams(localVarUrlObj, localVarQueryParameter);
655
934
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
@@ -661,23 +940,17 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
661
940
  };
662
941
  },
663
942
  /**
664
- * 낙찰 공급사가 확정된 공고에 대해 세금계산서를 발행합니다. **호출 시점:** 낙찰자 선정(계약진행) 이후. 과세/면세를 자동 분리해 발행합니다. **부수효과:** - 세금계산서가 국세청에 발행되고 공고가 발행 완료로 마킹됩니다. - 이미 발행됐거나 분할 청구가 진행 중이면 409 로 거절됩니다. **소유권:** 발행 대상 공고가 API 키에 바인딩된 발주처 소유가 아니면 403. **분할 청구:** 세금계산서 **분할 발급**은 `/v2` 에 제공되지 않습니다 `/v1` 전용(`POST /v1/invoices/split-requests`)입니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 키 + 동일 body 재전송 시 24시간 내 캐시 응답 반환.
665
- * @summary 세금계산서 발행
666
- * @param {string} bidId 공고 식별자(등록 응답의 bidId).
667
- * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
668
- * @param {IssueTaxInvoiceRequestDto} issueTaxInvoiceRequestDto
943
+ * 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` `If-Match` 그대로 실어야 `PATCH`/`DELETE` 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
944
+ * @summary 웹훅 구독 단건 조회
945
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
669
946
  * @param {*} [options] Override http request option.
670
947
  * @throws {RequiredError}
671
948
  */
672
- issueTaxInvoice: async (bidId: string, idempotencyKey: string, issueTaxInvoiceRequestDto: IssueTaxInvoiceRequestDto, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
673
- // verify required parameter 'bidId' is not null or undefined
674
- assertParamExists('issueTaxInvoice', 'bidId', bidId)
675
- // verify required parameter 'idempotencyKey' is not null or undefined
676
- assertParamExists('issueTaxInvoice', 'idempotencyKey', idempotencyKey)
677
- // verify required parameter 'issueTaxInvoiceRequestDto' is not null or undefined
678
- assertParamExists('issueTaxInvoice', 'issueTaxInvoiceRequestDto', issueTaxInvoiceRequestDto)
679
- const localVarPath = `/v2/bids/{bidId}/tax-invoice`
680
- .replace('{bidId}', encodeURIComponent(String(bidId)));
949
+ getWebhookEndpoint: async (endpointId: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
950
+ // verify required parameter 'endpointId' is not null or undefined
951
+ assertParamExists('getWebhookEndpoint', 'endpointId', endpointId)
952
+ const localVarPath = `/v2/webhook-endpoints/{endpointId}`
953
+ .replace('{endpointId}', encodeURIComponent(String(endpointId)));
681
954
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
682
955
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
683
956
  let baseOptions;
@@ -685,7 +958,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
685
958
  baseOptions = configuration.baseOptions;
686
959
  }
687
960
 
688
- const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
961
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
689
962
  const localVarHeaderParameter = {} as any;
690
963
  const localVarQueryParameter = {} as any;
691
964
 
@@ -693,16 +966,11 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
693
966
  // http bearer authentication required
694
967
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
695
968
 
696
- localVarHeaderParameter['Content-Type'] = 'application/json';
697
- localVarHeaderParameter['Accept'] = 'application/json';
969
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
698
970
 
699
- if (idempotencyKey != null) {
700
- localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
701
- }
702
971
  setSearchParams(localVarUrlObj, localVarQueryParameter);
703
972
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
704
973
  localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
705
- localVarRequestOptions.data = serializeDataIfNeeded(issueTaxInvoiceRequestDto, localVarRequestOptions, configuration)
706
974
 
707
975
  return {
708
976
  url: toPathString(localVarUrlObj),
@@ -710,8 +978,155 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
710
978
  };
711
979
  },
712
980
  /**
713
- * 발주처(API 바인딩)의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(쿼리에 buyerId 를 넣지 않습니다). **페이지네이션(cursor):** `limit`(1~100, 기본 100) + `cursor`(불투명 토큰). 응답의 `nextCursor` 를 다음 요청 `cursor` 로 전달하면 다음 페이지를 받습니다. `nextCursor=null` 이면 마지막 페이지입니다. **상태·낙찰방법:** 공개값(의미 문자열)으로 반환됩니다. 낙찰 여부는 상태가 아니라 낙찰 결과 조회의 `participants[].isWinner` 로 관측합니다(AWARDED 상태는 없습니다).
714
- * @summary 공고 목록 조회
981
+ * ERP 연동 직전 회선·인증 endpoint 동작 확인용.
982
+ * @summary Partner API 헬스체크
983
+ * @param {*} [options] Override http request option.
984
+ * @throws {RequiredError}
985
+ */
986
+ healthControllerCheck: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
987
+ const localVarPath = `/health`;
988
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
989
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
990
+ let baseOptions;
991
+ if (configuration) {
992
+ baseOptions = configuration.baseOptions;
993
+ }
994
+
995
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
996
+ const localVarHeaderParameter = {} as any;
997
+ const localVarQueryParameter = {} as any;
998
+
999
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1000
+
1001
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
1002
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1003
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
1004
+
1005
+ return {
1006
+ url: toPathString(localVarUrlObj),
1007
+ options: localVarRequestOptions,
1008
+ };
1009
+ },
1010
+ /**
1011
+ * 공고의 계약서류 목록과 내려받기 주소를 조회합니다. **목록에 실리는 것:** 공고 전체에 공통인 서류(약관·자동생성 공통본)와 낙찰자에게 귀속된 서류를 함께 싣습니다. 낙찰자 귀속 서류는 `winnerSequence` 에 그 낙찰자의 응찰 순번이 들어갑니다. **아직 없는 서류도 실립니다.** 공고가 제출을 요구했지만 아직 올라오지 않은 서류는 `fileKey: null` 로 나타나므로, 제출 여부는 이 값으로 판정하세요. **자동생성 서류:** `autoGenerated: true` 인 서류는 c-market 이 만들어 줍니다. 만드는 중이면 `generationState` 가 `QUEUED`/`PROCESSING` 이고 `downloadUrl` 이 아직 없습니다. `DEAD_LETTER` 는 생성이 실패해 멈춘 상태이며, 같은 경로의 POST(재생성)로 다시 큐에 올립니다. **내려받기:** `downloadUrl` 은 유효기간 1시간의 서명 주소입니다. 저장해 두고 재사용하지 마시고 필요할 때 이 엔드포인트를 다시 호출하세요. 기간에 얽매이지 않으려면 `fileKey` 를 보관하시고 파일 내려받기 경로를 사용하세요. **보이는 범위:** 서버가 공고 낙찰방법과 진행 단계로 결정합니다. 응답을 그대로 사용하시고 클라이언트에서 다시 거르지 마세요. **필수 스코프:** `contracts:read`
1012
+ * @summary 계약서류 목록 조회
1013
+ * @param {string} bidId 공고번호(buy_idx, 예 CM…) 또는 외부 구매번호(bid_puchase_no).
1014
+ * @param {*} [options] Override http request option.
1015
+ * @throws {RequiredError}
1016
+ */
1017
+ listBidContractDocuments: async (bidId: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
1018
+ // verify required parameter 'bidId' is not null or undefined
1019
+ assertParamExists('listBidContractDocuments', 'bidId', bidId)
1020
+ const localVarPath = `/v2/bids/{bidId}/contract-documents`
1021
+ .replace('{bidId}', encodeURIComponent(String(bidId)));
1022
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1023
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
1024
+ let baseOptions;
1025
+ if (configuration) {
1026
+ baseOptions = configuration.baseOptions;
1027
+ }
1028
+
1029
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
1030
+ const localVarHeaderParameter = {} as any;
1031
+ const localVarQueryParameter = {} as any;
1032
+
1033
+ // authentication partner-oauth2 required
1034
+ // http bearer authentication required
1035
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
1036
+
1037
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1038
+
1039
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
1040
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1041
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
1042
+
1043
+ return {
1044
+ url: toPathString(localVarUrlObj),
1045
+ options: localVarRequestOptions,
1046
+ };
1047
+ },
1048
+ /**
1049
+ * 공고에 응찰한 업체 목록을 조회합니다. 스코프 `bids:read` 필수. **보이는 범위는 공고의 낙찰방법과 진행 단계가 결정합니다.** 개찰 전에는 업체명이 가려지고 (`companyName: null`), 순위는 산정 전까지 `null` 입니다. 이 판정은 서버가 소유하므로 응답을 그대로 사용하시고 클라이언트에서 다시 계산하지 마세요. 같은 목록이 `GET /v2/bids/{bidId}` 응답의 `participants` 에도 실립니다 — 응찰 현황만 필요하면 이 엔드포인트가 가볍습니다.
1050
+ * @summary 응찰 현황 조회
1051
+ * @param {string} bidId 공고 식별자(등록 응답의 bidId).
1052
+ * @param {*} [options] Override http request option.
1053
+ * @throws {RequiredError}
1054
+ */
1055
+ listBidParticipants: async (bidId: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
1056
+ // verify required parameter 'bidId' is not null or undefined
1057
+ assertParamExists('listBidParticipants', 'bidId', bidId)
1058
+ const localVarPath = `/v2/bids/{bidId}/participants`
1059
+ .replace('{bidId}', encodeURIComponent(String(bidId)));
1060
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1061
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
1062
+ let baseOptions;
1063
+ if (configuration) {
1064
+ baseOptions = configuration.baseOptions;
1065
+ }
1066
+
1067
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
1068
+ const localVarHeaderParameter = {} as any;
1069
+ const localVarQueryParameter = {} as any;
1070
+
1071
+ // authentication partner-oauth2 required
1072
+ // http bearer authentication required
1073
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
1074
+
1075
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1076
+
1077
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
1078
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1079
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
1080
+
1081
+ return {
1082
+ url: toPathString(localVarUrlObj),
1083
+ options: localVarRequestOptions,
1084
+ };
1085
+ },
1086
+ /**
1087
+ * 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에는 `ETag` 가 실리므로, 다음 요청에 `If-None-Match` 로 되보내면 결과가 그대로일 때 `304` 를 본문 없이 받습니다 — 마감을 기다리는 동안의 전송량이 사라집니다. **식별자 전달:** `?bidIds=A,B,C`(쉼표) 또는 `?bidIds=A&bidIds=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다 — 요청한 건수와 받은 건수가 다를 수 있으니 `bidId` 로 대조하세요. **목록이 길어 URL 이 부담되면** `POST /v2/bid-results/query` 를 쓰세요. 응답은 같습니다.
1088
+ * @summary 입찰 결과 배치 조회
1089
+ * @param {string} bidIds 조회할 공고 식별자 목록. 쉼표로 구분하거나 &#x60;bidIds&#x60; 를 반복해 전달합니다. 최대 100건.
1090
+ * @param {*} [options] Override http request option.
1091
+ * @throws {RequiredError}
1092
+ */
1093
+ listBidResults: async (bidIds: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
1094
+ // verify required parameter 'bidIds' is not null or undefined
1095
+ assertParamExists('listBidResults', 'bidIds', bidIds)
1096
+ const localVarPath = `/v2/bid-results`;
1097
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1098
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
1099
+ let baseOptions;
1100
+ if (configuration) {
1101
+ baseOptions = configuration.baseOptions;
1102
+ }
1103
+
1104
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
1105
+ const localVarHeaderParameter = {} as any;
1106
+ const localVarQueryParameter = {} as any;
1107
+
1108
+ // authentication partner-oauth2 required
1109
+ // http bearer authentication required
1110
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
1111
+
1112
+ if (bidIds !== undefined) {
1113
+ localVarQueryParameter['bidIds'] = bidIds;
1114
+ }
1115
+
1116
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1117
+
1118
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
1119
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1120
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
1121
+
1122
+ return {
1123
+ url: toPathString(localVarUrlObj),
1124
+ options: localVarRequestOptions,
1125
+ };
1126
+ },
1127
+ /**
1128
+ * 발주처(API 키 바인딩)의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(쿼리에 buyerId 를 넣지 않습니다). **페이지네이션(cursor):** `limit`(1~100, 기본 100) + `cursor`(불투명 토큰). 응답의 `nextCursor` 를 다음 요청 `cursor` 로 전달하면 다음 페이지를 받습니다. `nextCursor=null` 이면 마지막 페이지입니다. **상태·낙찰방법:** 공개값(의미 문자열)으로 반환됩니다. 낙찰 여부는 상태가 아니라 낙찰 결과 조회의 `participants[].isWinner` 로 관측합니다(AWARDED 상태는 없습니다).
1129
+ * @summary 공고 목록 조회
715
1130
  * @param {number} [limit] 페이지 크기(1~100, 기본 100).
716
1131
  * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달한다. 미지정 시 첫 페이지. &#x60;nextCursor&#x3D;null&#x60; 이면 마지막 페이지다.
717
1132
  * @param {Array<string>} [bidIds] 조회할 공고 식별자 CSV(최대 100건). 지정 시 그 공고만 조회한다.
@@ -757,7 +1172,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
757
1172
  localVarQueryParameter['include'] = include;
758
1173
  }
759
1174
 
760
- localVarHeaderParameter['Accept'] = 'application/json';
1175
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
761
1176
 
762
1177
  setSearchParams(localVarUrlObj, localVarQueryParameter);
763
1178
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
@@ -769,7 +1184,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
769
1184
  };
770
1185
  },
771
1186
  /**
772
- * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read`
1187
+ * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `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 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
773
1188
  * @summary 거래에 필요한 계약서류 목록 조회
774
1189
  * @param {string} buyerId 발주기관 회원 ID(c-market memberId).
775
1190
  * @param {ListExternalContractDocumentsBidTypeEnum} bidType 거래유형.
@@ -805,7 +1220,129 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
805
1220
  localVarQueryParameter['bidType'] = bidType;
806
1221
  }
807
1222
 
808
- localVarHeaderParameter['Accept'] = 'application/json';
1223
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1224
+
1225
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
1226
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1227
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
1228
+
1229
+ return {
1230
+ url: toPathString(localVarUrlObj),
1231
+ options: localVarRequestOptions,
1232
+ };
1233
+ },
1234
+ /**
1235
+ * 기관에 공유된 물품 중 **아직 전송되지 않은 것**을 조회합니다. **증분 피드입니다.** 가져간 물품을 `POST /v2/products/receipts` 로 수신확인하면 다음 조회 결과에서 빠집니다. 수신확인을 하지 않으면 같은 물품이 계속 내려옵니다. **권장 흐름:** 조회 → 자기 시스템에 저장 → 저장에 성공한 물품 코드만 수신확인. 저장 전에 수신확인하면 그 물품은 다시 받을 수 없습니다. **조회 범위:** 요청 키가 대행하는 기관 그룹입니다. 기관 그룹이 설정되지 않은 키는 403 입니다. **필수 스코프:** `products:read`
1236
+ * @summary 물품 카탈로그 조회
1237
+ * @param {*} [options] Override http request option.
1238
+ * @throws {RequiredError}
1239
+ */
1240
+ listProducts: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
1241
+ const localVarPath = `/v2/products`;
1242
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1243
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
1244
+ let baseOptions;
1245
+ if (configuration) {
1246
+ baseOptions = configuration.baseOptions;
1247
+ }
1248
+
1249
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
1250
+ const localVarHeaderParameter = {} as any;
1251
+ const localVarQueryParameter = {} as any;
1252
+
1253
+ // authentication partner-oauth2 required
1254
+ // http bearer authentication required
1255
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
1256
+
1257
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1258
+
1259
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
1260
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1261
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
1262
+
1263
+ return {
1264
+ url: toPathString(localVarUrlObj),
1265
+ options: localVarRequestOptions,
1266
+ };
1267
+ },
1268
+ /**
1269
+ * 이 API 키의 웹훅 발송 시도를 최신순으로 조회합니다. 보낸 본문·수신측 응답 상태· 다음 재시도 예정 시각이 함께 실립니다. **호출 시점:** - 수신측 장애로 놓친 이벤트를 메울 때. 이 엔드포인트가 웹훅의 **폴링 대체 경로**입니다 — `status=EXHAUSTED` 로 걸러 다시 처리하면 됩니다. - \"이벤트가 안 온다\" 를 진단할 때. 발송 시도 자체가 없는지(구독·이벤트 타입 문제), 시도했지만 실패했는지(`responseStatus`·`responseBodyExcerpt`)를 여기서 가릅니다. **같은 이벤트가 여러 행으로 보입니다.** 재시도마다 한 행이며 `eventId` 가 같고 `attempt` 만 올라갑니다. 처리 여부는 `eventId` 기준으로 판단하세요. **페이지네이션:** `nextCursor` 를 다음 요청의 `cursor` 로 전달합니다. null 이면 마지막 페이지입니다. **`400`:** `status` 가 허용 값 밖이거나 `limit` 이 범위를 벗어났습니다 — 값을 고쳐 재시도하세요. **필수 스코프:** `webhooks:read`
1270
+ * @summary 웹훅 전송 이력 조회
1271
+ * @param {string} [endpointId] 이 구독의 전송만 조회합니다. 미지정이면 이 키의 모든 구독을 함께 조회합니다.
1272
+ * @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
1273
+ * @param {number} [limit] 페이지 크기(1~200, 기본 50).
1274
+ * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달합니다. 미지정 시 첫 페이지.
1275
+ * @param {*} [options] Override http request option.
1276
+ * @throws {RequiredError}
1277
+ */
1278
+ listWebhookDeliveries: async (endpointId?: string, status?: PartnerWebhookDeliveryStatus, limit?: number, cursor?: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
1279
+ const localVarPath = `/v2/webhook-deliveries`;
1280
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1281
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
1282
+ let baseOptions;
1283
+ if (configuration) {
1284
+ baseOptions = configuration.baseOptions;
1285
+ }
1286
+
1287
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
1288
+ const localVarHeaderParameter = {} as any;
1289
+ const localVarQueryParameter = {} as any;
1290
+
1291
+ // authentication partner-oauth2 required
1292
+ // http bearer authentication required
1293
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
1294
+
1295
+ if (endpointId !== undefined) {
1296
+ localVarQueryParameter['endpointId'] = endpointId;
1297
+ }
1298
+
1299
+ if (status !== undefined) {
1300
+ localVarQueryParameter['status'] = status;
1301
+ }
1302
+
1303
+ if (limit !== undefined) {
1304
+ localVarQueryParameter['limit'] = limit;
1305
+ }
1306
+
1307
+ if (cursor !== undefined) {
1308
+ localVarQueryParameter['cursor'] = cursor;
1309
+ }
1310
+
1311
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1312
+
1313
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
1314
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1315
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
1316
+
1317
+ return {
1318
+ url: toPathString(localVarUrlObj),
1319
+ options: localVarRequestOptions,
1320
+ };
1321
+ },
1322
+ /**
1323
+ * 이 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
1324
+ * @summary 웹훅 구독 목록 조회
1325
+ * @param {*} [options] Override http request option.
1326
+ * @throws {RequiredError}
1327
+ */
1328
+ listWebhookEndpoints: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
1329
+ const localVarPath = `/v2/webhook-endpoints`;
1330
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1331
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
1332
+ let baseOptions;
1333
+ if (configuration) {
1334
+ baseOptions = configuration.baseOptions;
1335
+ }
1336
+
1337
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
1338
+ const localVarHeaderParameter = {} as any;
1339
+ const localVarQueryParameter = {} as any;
1340
+
1341
+ // authentication partner-oauth2 required
1342
+ // http bearer authentication required
1343
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
1344
+
1345
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
809
1346
 
810
1347
  setSearchParams(localVarUrlObj, localVarQueryParameter);
811
1348
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
@@ -832,7 +1369,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
832
1369
  assertParamExists('markBidFailed', 'idempotencyKey', idempotencyKey)
833
1370
  // verify required parameter 'markBidFailedRequestDto' is not null or undefined
834
1371
  assertParamExists('markBidFailed', 'markBidFailedRequestDto', markBidFailedRequestDto)
835
- const localVarPath = `/v2/bids/{bidId}/award/fail`
1372
+ const localVarPath = `/v2/bids/{bidId}/fail`
836
1373
  .replace('{bidId}', encodeURIComponent(String(bidId)));
837
1374
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
838
1375
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -850,7 +1387,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
850
1387
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
851
1388
 
852
1389
  localVarHeaderParameter['Content-Type'] = 'application/json';
853
- localVarHeaderParameter['Accept'] = 'application/json';
1390
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
854
1391
 
855
1392
  if (idempotencyKey != null) {
856
1393
  localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
@@ -895,7 +1432,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
895
1432
  // http bearer authentication required
896
1433
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
897
1434
 
898
- localVarHeaderParameter['Accept'] = 'application/json';
1435
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
899
1436
 
900
1437
  if (idempotencyKey != null) {
901
1438
  localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
@@ -909,6 +1446,45 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
909
1446
  options: localVarRequestOptions,
910
1447
  };
911
1448
  },
1449
+ /**
1450
+ * `GET /v2/bid-results` 와 **완전히 같은 조회**이며, 식별자 목록을 본문으로 받습니다. 스코프 `bids:read`. 공고 식별자 100건이면 URL 이 1KB를 넘습니다 — 중간 프록시가 긴 URL 을 자르는 환경을 위한 대체 경로입니다. **부수효과가 없으므로 `Idempotency-Key` 는 필요하지 않습니다.** POST 인 것은 전송 형태의 문제일 뿐이며, 가능하면 캐시·`ETag` 가 동작하는 `GET` 쪽을 쓰세요.
1451
+ * @summary 입찰 결과 배치 조회 (본문 전달)
1452
+ * @param {BidResultsBatchRequestDto} bidResultsBatchRequestDto
1453
+ * @param {*} [options] Override http request option.
1454
+ * @throws {RequiredError}
1455
+ */
1456
+ queryBidResults: async (bidResultsBatchRequestDto: BidResultsBatchRequestDto, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
1457
+ // verify required parameter 'bidResultsBatchRequestDto' is not null or undefined
1458
+ assertParamExists('queryBidResults', 'bidResultsBatchRequestDto', bidResultsBatchRequestDto)
1459
+ const localVarPath = `/v2/bid-results/query`;
1460
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1461
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
1462
+ let baseOptions;
1463
+ if (configuration) {
1464
+ baseOptions = configuration.baseOptions;
1465
+ }
1466
+
1467
+ const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
1468
+ const localVarHeaderParameter = {} as any;
1469
+ const localVarQueryParameter = {} as any;
1470
+
1471
+ // authentication partner-oauth2 required
1472
+ // http bearer authentication required
1473
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
1474
+
1475
+ localVarHeaderParameter['Content-Type'] = 'application/json';
1476
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1477
+
1478
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
1479
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1480
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
1481
+ localVarRequestOptions.data = serializeDataIfNeeded(bidResultsBatchRequestDto, localVarRequestOptions, configuration)
1482
+
1483
+ return {
1484
+ url: toPathString(localVarUrlObj),
1485
+ options: localVarRequestOptions,
1486
+ };
1487
+ },
912
1488
  /**
913
1489
  * 공고의 자동생성 계약서류(발주서·공고결과·표준계약서 등)를 생성/재생성합니다. **V6 대응:** `RegenerateAllContractPdfsCommand` — 웹 어드민의 \"계약 서류 일괄 재생성\"과 동일 경로. **호출 시점:** 낙찰(계약 시작) 후 계약서류가 필요하거나, 생성에 실패한 서류를 다시 만들 때. **부수효과:** - 생성 실패(DEAD_LETTER) 상태의 자동생성 PDF 가 재생성 큐에 등록됩니다(비동기). - 승낙사항(ACCEPTANCE) 계열은 운영자 승인 워크플로가 필요해 이 경로에서 제외됩니다. **응답:** 즉시 파일이 아니라 큐 등록 결과(`enqueuedCount`/`skippedCount`)를 반환합니다. 잠시 후 자동 생성됩니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
914
1490
  * @summary 계약서류 생성(재생성)
@@ -939,7 +1515,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
939
1515
  // http bearer authentication required
940
1516
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
941
1517
 
942
- localVarHeaderParameter['Accept'] = 'application/json';
1518
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
943
1519
 
944
1520
  if (idempotencyKey != null) {
945
1521
  localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
@@ -987,7 +1563,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
987
1563
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
988
1564
 
989
1565
  localVarHeaderParameter['Content-Type'] = 'application/json';
990
- localVarHeaderParameter['Accept'] = 'application/json';
1566
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
991
1567
 
992
1568
  if (idempotencyKey != null) {
993
1569
  localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
@@ -1005,11 +1581,14 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
1005
1581
  /**
1006
1582
  * 입찰 정보 등록. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수.
1007
1583
  * @summary 입찰 정보 전송(등록)
1584
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
1008
1585
  * @param {CreateBidRequestDto} createBidRequestDto
1009
1586
  * @param {*} [options] Override http request option.
1010
1587
  * @throws {RequiredError}
1011
1588
  */
1012
- registerBid: async (createBidRequestDto: CreateBidRequestDto, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
1589
+ registerBid: async (idempotencyKey: string, createBidRequestDto: CreateBidRequestDto, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
1590
+ // verify required parameter 'idempotencyKey' is not null or undefined
1591
+ assertParamExists('registerBid', 'idempotencyKey', idempotencyKey)
1013
1592
  // verify required parameter 'createBidRequestDto' is not null or undefined
1014
1593
  assertParamExists('registerBid', 'createBidRequestDto', createBidRequestDto)
1015
1594
  const localVarPath = `/v2/bids`;
@@ -1029,8 +1608,11 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
1029
1608
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
1030
1609
 
1031
1610
  localVarHeaderParameter['Content-Type'] = 'application/json';
1032
- localVarHeaderParameter['Accept'] = 'application/json';
1611
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1033
1612
 
1613
+ if (idempotencyKey != null) {
1614
+ localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
1615
+ }
1034
1616
  setSearchParams(localVarUrlObj, localVarQueryParameter);
1035
1617
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1036
1618
  localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
@@ -1071,7 +1653,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
1071
1653
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
1072
1654
 
1073
1655
  localVarHeaderParameter['Content-Type'] = 'application/json';
1074
- localVarHeaderParameter['Accept'] = 'application/json';
1656
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1075
1657
 
1076
1658
  if (idempotencyKey != null) {
1077
1659
  localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
@@ -1087,22 +1669,22 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
1087
1669
  };
1088
1670
  },
1089
1671
  /**
1090
- * 협상방식(NEGOTIATION/NEGOTIATION_AUTO) 공고의 응찰자별 점수를 입력합니다. **호출 시점:** 입찰 마감 낙찰(`POST /v2/bids/{bidId}/award`) 전. 협상방식 공고는 평가를 완료해야 낙찰에 진입할 수 있습니다. **부수효과:** - 응찰자별 기술점수(및 선택적 가격점수 override)가 기록됩니다. - `complete=true` 평가완료 게이트까지 적용돼 낙찰 진입이 가능해집니다. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body buyerId 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 + 동일 body 재전송 24시간 캐시 응답 반환.
1091
- * @summary 협상 점수평가
1672
+ * 확정된 낙찰을 되돌려 공고를 낙찰대기(PENDING_AWARD) 상태로 보냅니다. 스코프 `awards:write` + `Idempotency-Key` 헤더 필수. **호출 시점:** 낙찰자가 계약을 포기했거나 낙찰 처리 자체가 잘못됐을 때. 되돌린 같은 공고에 다시 낙찰을 등록할 수 있습니다. **되돌릴 없는 경우 409:** - 수수료 결제가 이미 완료된 공고 - 세금계산서가 이미 발행된 공고 - 수입권공매 계열 낙찰방법(다수 낙찰자 구조라 되돌리기 단위가 다릅니다) **사유는 필수입니다** 감사 대상 행위이며 공고 이력에 남습니다. **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
1673
+ * @summary 낙찰 되돌리기
1092
1674
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
1093
- * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1094
- * @param {SubmitNegotiationScoresRequestDto} submitNegotiationScoresRequestDto
1675
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
1676
+ * @param {RevertAwardRequestDto} revertAwardRequestDto
1095
1677
  * @param {*} [options] Override http request option.
1096
1678
  * @throws {RequiredError}
1097
1679
  */
1098
- submitNegotiationScores: async (bidId: string, idempotencyKey: string, submitNegotiationScoresRequestDto: SubmitNegotiationScoresRequestDto, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
1680
+ revertAward: async (bidId: string, idempotencyKey: string, revertAwardRequestDto: RevertAwardRequestDto, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
1099
1681
  // verify required parameter 'bidId' is not null or undefined
1100
- assertParamExists('submitNegotiationScores', 'bidId', bidId)
1682
+ assertParamExists('revertAward', 'bidId', bidId)
1101
1683
  // verify required parameter 'idempotencyKey' is not null or undefined
1102
- assertParamExists('submitNegotiationScores', 'idempotencyKey', idempotencyKey)
1103
- // verify required parameter 'submitNegotiationScoresRequestDto' is not null or undefined
1104
- assertParamExists('submitNegotiationScores', 'submitNegotiationScoresRequestDto', submitNegotiationScoresRequestDto)
1105
- const localVarPath = `/v2/bids/{bidId}/negotiation-scores`
1684
+ assertParamExists('revertAward', 'idempotencyKey', idempotencyKey)
1685
+ // verify required parameter 'revertAwardRequestDto' is not null or undefined
1686
+ assertParamExists('revertAward', 'revertAwardRequestDto', revertAwardRequestDto)
1687
+ const localVarPath = `/v2/bids/{bidId}/award`
1106
1688
  .replace('{bidId}', encodeURIComponent(String(bidId)));
1107
1689
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
1108
1690
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -1111,7 +1693,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
1111
1693
  baseOptions = configuration.baseOptions;
1112
1694
  }
1113
1695
 
1114
- const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
1696
+ const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
1115
1697
  const localVarHeaderParameter = {} as any;
1116
1698
  const localVarQueryParameter = {} as any;
1117
1699
 
@@ -1120,7 +1702,96 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
1120
1702
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
1121
1703
 
1122
1704
  localVarHeaderParameter['Content-Type'] = 'application/json';
1123
- localVarHeaderParameter['Accept'] = 'application/json';
1705
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1706
+
1707
+ if (idempotencyKey != null) {
1708
+ localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
1709
+ }
1710
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
1711
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1712
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
1713
+ localVarRequestOptions.data = serializeDataIfNeeded(revertAwardRequestDto, localVarRequestOptions, configuration)
1714
+
1715
+ return {
1716
+ url: toPathString(localVarUrlObj),
1717
+ options: localVarRequestOptions,
1718
+ };
1719
+ },
1720
+ /**
1721
+ * 서명 시크릿을 새로 발급합니다. 응답의 `secretVersion` 이 1 올라갑니다. **호출 시점:** 시크릿을 분실했거나 유출이 의심될 때, 또는 주기적 교체 정책이 있을 때. **새 시크릿은 이 응답에서 한 번만 나갑니다.** 조회로 다시 받을 수 없습니다. **옛 시크릿은 즉시 무효입니다.** 유예 기간이 없으므로, 수신측이 새 값을 반영하기 전에 도착한 이벤트는 서명 검증에 실패합니다. 배포 순서를 이렇게 잡으세요 — ① 수신측이 옛 값과 새 값을 **둘 다** 받아들이도록 배포 → ② 이 엔드포인트 호출 → ③ 응답의 새 값을 반영 → ④ 옛 값 제거. 검증 실패로 non-2xx 를 돌려주면 실패로 집계되어 20회 연속 시 구독이 중지됩니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 같은 키로 재전송하면 **새로 발급하지 않고** 처음 발급한 값을 그대로 돌려줍니다(24시간) — 네트워크 오류로 응답을 놓쳤을 때 같은 키로 다시 부르세요.
1722
+ * @summary 웹훅 서명 시크릿 재발급
1723
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
1724
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1725
+ * @param {*} [options] Override http request option.
1726
+ * @throws {RequiredError}
1727
+ */
1728
+ rotateWebhookSecret: async (endpointId: string, idempotencyKey: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
1729
+ // verify required parameter 'endpointId' is not null or undefined
1730
+ assertParamExists('rotateWebhookSecret', 'endpointId', endpointId)
1731
+ // verify required parameter 'idempotencyKey' is not null or undefined
1732
+ assertParamExists('rotateWebhookSecret', 'idempotencyKey', idempotencyKey)
1733
+ const localVarPath = `/v2/webhook-endpoints/{endpointId}/rotate-secret`
1734
+ .replace('{endpointId}', encodeURIComponent(String(endpointId)));
1735
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1736
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
1737
+ let baseOptions;
1738
+ if (configuration) {
1739
+ baseOptions = configuration.baseOptions;
1740
+ }
1741
+
1742
+ const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
1743
+ const localVarHeaderParameter = {} as any;
1744
+ const localVarQueryParameter = {} as any;
1745
+
1746
+ // authentication partner-oauth2 required
1747
+ // http bearer authentication required
1748
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
1749
+
1750
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1751
+
1752
+ if (idempotencyKey != null) {
1753
+ localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
1754
+ }
1755
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
1756
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1757
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
1758
+
1759
+ return {
1760
+ url: toPathString(localVarUrlObj),
1761
+ options: localVarRequestOptions,
1762
+ };
1763
+ },
1764
+ /**
1765
+ * 등록된 주소로 `ping` 이벤트를 즉시 1회 보내고 그 결과를 돌려줍니다. **호출 시점:** 구독을 등록한 직후, 수신 주소를 바꾼 직후, 방화벽·인증서를 손본 뒤. **응답은 발송 결과이지 요청 실패가 아닙니다.** 수신측이 받지 못해도 HTTP `200` 에 `delivered: false` 로 옵니다 — `responseStatus`(수신측 상태)와 `error`(연결 거부·타임아웃· TLS 오류)를 보고 원인을 좁히세요. 이 발송에도 실제 이벤트와 **똑같은 서명 헤더**가 실리므로 검증 코드를 그대로 시험할 수 있습니다. `ping` 은 구독 목록에 넣을 수 없는 타입이니, 수신측이 모르는 `eventType` 을 만나면 버리도록 짜여 있다면 이 확인만 실패할 수 있습니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 다시 보내려면 **새 키**를 쓰세요 — 같은 키는 24시간 동안 직전 결과를 그대로 돌려줍니다(재발송하지 않습니다).
1766
+ * @summary 웹훅 연결 확인 발송
1767
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
1768
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1769
+ * @param {*} [options] Override http request option.
1770
+ * @throws {RequiredError}
1771
+ */
1772
+ sendWebhookTestEvent: async (endpointId: string, idempotencyKey: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
1773
+ // verify required parameter 'endpointId' is not null or undefined
1774
+ assertParamExists('sendWebhookTestEvent', 'endpointId', endpointId)
1775
+ // verify required parameter 'idempotencyKey' is not null or undefined
1776
+ assertParamExists('sendWebhookTestEvent', 'idempotencyKey', idempotencyKey)
1777
+ const localVarPath = `/v2/webhook-endpoints/{endpointId}/test`
1778
+ .replace('{endpointId}', encodeURIComponent(String(endpointId)));
1779
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1780
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
1781
+ let baseOptions;
1782
+ if (configuration) {
1783
+ baseOptions = configuration.baseOptions;
1784
+ }
1785
+
1786
+ const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
1787
+ const localVarHeaderParameter = {} as any;
1788
+ const localVarQueryParameter = {} as any;
1789
+
1790
+ // authentication partner-oauth2 required
1791
+ // http bearer authentication required
1792
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
1793
+
1794
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1124
1795
 
1125
1796
  if (idempotencyKey != null) {
1126
1797
  localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
@@ -1128,7 +1799,6 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
1128
1799
  setSearchParams(localVarUrlObj, localVarQueryParameter);
1129
1800
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1130
1801
  localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
1131
- localVarRequestOptions.data = serializeDataIfNeeded(submitNegotiationScoresRequestDto, localVarRequestOptions, configuration)
1132
1802
 
1133
1803
  return {
1134
1804
  url: toPathString(localVarUrlObj),
@@ -1139,14 +1809,20 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
1139
1809
  * 등록된 공고의 내용을 수정합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. 진행중/초안 상태의 공고만 수정할 수 있습니다. **부수효과:** - 변경 내용이 반영되고 수정이력이 기록됩니다. - `hideEdit=true` 면 변경이력을 비공개 처리하고 노출 카운터 증가를 생략합니다. **수정 제약:** - 낙찰방법(awardMethod)은 수정 불가(잠금). - 참여자가 있으면 입찰방식/면허/예산/품목 일부가 잠깁니다. - 마감/취소된 공고는 수정할 수 없습니다. 한 섹션을 수정하려면 해당 섹션의 필수 필드를 함께 보내야 합니다(부분 섹션은 거부됨).
1140
1810
  * @summary 입찰 공고 수정
1141
1811
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
1812
+ * @param {string} ifMatch
1813
+ * @param {string} ifMatch2 수정하려는 공고의 ETag(필수). 직전 &#x60;GET /v2/bids/{bidId}&#x60; 응답의 &#x60;ETag&#x60; 헤더 값을 그대로 실어 보내세요. 누락하면 428, 그 사이 공고가 바뀌었으면 412 로 거절되며 아무것도 수정되지 않습니다.
1142
1814
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
1143
1815
  * @param {UpdateBidRequestDto} updateBidRequestDto
1144
1816
  * @param {*} [options] Override http request option.
1145
1817
  * @throws {RequiredError}
1146
1818
  */
1147
- updateBid: async (bidId: string, idempotencyKey: string, updateBidRequestDto: UpdateBidRequestDto, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
1819
+ updateBid: async (bidId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, updateBidRequestDto: UpdateBidRequestDto, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
1148
1820
  // verify required parameter 'bidId' is not null or undefined
1149
1821
  assertParamExists('updateBid', 'bidId', bidId)
1822
+ // verify required parameter 'ifMatch' is not null or undefined
1823
+ assertParamExists('updateBid', 'ifMatch', ifMatch)
1824
+ // verify required parameter 'ifMatch2' is not null or undefined
1825
+ assertParamExists('updateBid', 'ifMatch2', ifMatch2)
1150
1826
  // verify required parameter 'idempotencyKey' is not null or undefined
1151
1827
  assertParamExists('updateBid', 'idempotencyKey', idempotencyKey)
1152
1828
  // verify required parameter 'updateBidRequestDto' is not null or undefined
@@ -1169,8 +1845,14 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
1169
1845
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
1170
1846
 
1171
1847
  localVarHeaderParameter['Content-Type'] = 'application/json';
1172
- localVarHeaderParameter['Accept'] = 'application/json';
1848
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1173
1849
 
1850
+ if (ifMatch != null) {
1851
+ localVarHeaderParameter['if-match'] = String(ifMatch);
1852
+ }
1853
+ if (ifMatch2 != null) {
1854
+ localVarHeaderParameter['If-Match'] = String(ifMatch2);
1855
+ }
1174
1856
  if (idempotencyKey != null) {
1175
1857
  localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
1176
1858
  }
@@ -1184,6 +1866,67 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
1184
1866
  options: localVarRequestOptions,
1185
1867
  };
1186
1868
  },
1869
+ /**
1870
+ * 수신 주소·구독 이벤트·상태를 수정합니다. 보낸 필드만 바뀝니다. **호출 시점:** 수신 주소가 바뀌었을 때, 구독 이벤트를 늘리거나 줄일 때, 연속 실패로 자동 중지된 구독을 고친 뒤 되살릴 때(`{\"status\":\"ACTIVE\"}`). **`eventTypes` 는 치환입니다** — 보낸 목록이 곧 새 구독 목록입니다. 하나를 더하려면 기존 목록에 더한 **전체**를 보내세요. **`If-Match` 가 필수입니다.** 먼저 `GET /v2/webhook-endpoints/{endpointId}` 로 현재 `ETag` 를 받아 그대로 실어 보내세요. 이 헤더가 없으면 두 요청이 앞서거니 뒤서거니 하며 먼저 한 수정을 조용히 덮어씁니다. - `428` — 헤더를 빼먹었습니다. 조회 후 `ETag` 를 실어 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다. 다시 조회해 최신 `ETag` 로 재시도하세요. 아무것도 수정되지 않았습니다. **시크릿은 이 경로로 바뀌지 않습니다** — 재발급은 `rotate-secret` 입니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
1871
+ * @summary 웹훅 구독 수정
1872
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
1873
+ * @param {string} ifMatch
1874
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
1875
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1876
+ * @param {UpdateWebhookEndpointRequestDto} updateWebhookEndpointRequestDto
1877
+ * @param {*} [options] Override http request option.
1878
+ * @throws {RequiredError}
1879
+ */
1880
+ updateWebhookEndpoint: async (endpointId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, updateWebhookEndpointRequestDto: UpdateWebhookEndpointRequestDto, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
1881
+ // verify required parameter 'endpointId' is not null or undefined
1882
+ assertParamExists('updateWebhookEndpoint', 'endpointId', endpointId)
1883
+ // verify required parameter 'ifMatch' is not null or undefined
1884
+ assertParamExists('updateWebhookEndpoint', 'ifMatch', ifMatch)
1885
+ // verify required parameter 'ifMatch2' is not null or undefined
1886
+ assertParamExists('updateWebhookEndpoint', 'ifMatch2', ifMatch2)
1887
+ // verify required parameter 'idempotencyKey' is not null or undefined
1888
+ assertParamExists('updateWebhookEndpoint', 'idempotencyKey', idempotencyKey)
1889
+ // verify required parameter 'updateWebhookEndpointRequestDto' is not null or undefined
1890
+ assertParamExists('updateWebhookEndpoint', 'updateWebhookEndpointRequestDto', updateWebhookEndpointRequestDto)
1891
+ const localVarPath = `/v2/webhook-endpoints/{endpointId}`
1892
+ .replace('{endpointId}', encodeURIComponent(String(endpointId)));
1893
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1894
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
1895
+ let baseOptions;
1896
+ if (configuration) {
1897
+ baseOptions = configuration.baseOptions;
1898
+ }
1899
+
1900
+ const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options};
1901
+ const localVarHeaderParameter = {} as any;
1902
+ const localVarQueryParameter = {} as any;
1903
+
1904
+ // authentication partner-oauth2 required
1905
+ // http bearer authentication required
1906
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
1907
+
1908
+ localVarHeaderParameter['Content-Type'] = 'application/json';
1909
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1910
+
1911
+ if (ifMatch != null) {
1912
+ localVarHeaderParameter['if-match'] = String(ifMatch);
1913
+ }
1914
+ if (ifMatch2 != null) {
1915
+ localVarHeaderParameter['If-Match'] = String(ifMatch2);
1916
+ }
1917
+ if (idempotencyKey != null) {
1918
+ localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
1919
+ }
1920
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
1921
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1922
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
1923
+ localVarRequestOptions.data = serializeDataIfNeeded(updateWebhookEndpointRequestDto, localVarRequestOptions, configuration)
1924
+
1925
+ return {
1926
+ url: toPathString(localVarUrlObj),
1927
+ options: localVarRequestOptions,
1928
+ };
1929
+ },
1187
1930
  /**
1188
1931
  * 스코프 `files:write` + `Idempotency-Key` 헤더 필수. base64 또는 url 중 정확히 하나를 제출한다.
1189
1932
  * @summary 입찰 첨부파일 업로드(base64 또는 url) → fileKey
@@ -1211,7 +1954,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration?: Configura
1211
1954
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
1212
1955
 
1213
1956
  localVarHeaderParameter['Content-Type'] = 'application/json';
1214
- localVarHeaderParameter['Accept'] = 'application/json';
1957
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
1215
1958
 
1216
1959
  setSearchParams(localVarUrlObj, localVarQueryParameter);
1217
1960
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
@@ -1233,16 +1976,32 @@ export const PartnerV2ApiFp = function(configuration?: Configuration) {
1233
1976
  const localVarAxiosParamCreator = PartnerV2ApiAxiosParamCreator(configuration)
1234
1977
  return {
1235
1978
  /**
1236
- * 샌드박스 공고를 마감하는 **영업 데모 전용** 엔드포인트입니다. **가짜 상태 주입이 아닙니다.** backend 스케줄러가 부르는 것과 동일한 실제 `CloseBidCommand` dispatch 합니다 개찰이 실제로 수행되고, `status=\'B\'` 커밋 직전 투찰가 동기 복호화가 실제로 일어납니다(복호화 실패 마감이 중단됩니다). 엔드포인트는 데모인 동시에 살아있는 e2e 스모크입니다. **데모 공고 전용:** backend 공고 명의 == 데모 발주처인 공고에 한해서만 마감합니다. 실 발주처 공고는 절대 마감하지 않습니다. **마감 불가:** 이미 마감됐거나 마감 불가 상태면 409(`type: …/upstream-conflict`)를 반환합니다. **필수 스코프:** `bids:write`
1237
- * @summary 샌드박스 공고 마감 (영업 데모 전용)
1238
- * @param {string} bidId 샌드박스 공고 ID(&#x3D; backend bidId).
1979
+ * 저장을 마친 물품을 전송완료로 표시해 다음 조회에서 제외합니다. **되돌릴 없습니다.** 표시한 물품은 `GET /v2/products` 다시 내려오지 않으므로, 자기 시스템에 저장이 끝난 뒤에 호출하세요. **표시 범위는 기관 그룹으로 잠깁니다.** 다른 기관의 물품 코드를 섞어 보내면 건은 표시되지 않고 `acknowledged`요청 수보다 작게 돌아옵니다. **필수 스코프:** `products:write` **멱등성:** `Idempotency-Key` 헤더 필수.
1980
+ * @summary 물품 수신확인
1981
+ * @param {string} idempotencyKey 멱등성 (1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1982
+ * @param {AcknowledgeProductsRequestDto} acknowledgeProductsRequestDto
1239
1983
  * @param {*} [options] Override http request option.
1240
1984
  * @throws {RequiredError}
1241
1985
  */
1242
- async closeSandboxBid(bidId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CloseSandboxBidResponseDto>> {
1243
- const localVarAxiosArgs = await localVarAxiosParamCreator.closeSandboxBid(bidId, options);
1986
+ async acknowledgeProductReceipt(idempotencyKey: string, acknowledgeProductsRequestDto: AcknowledgeProductsRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AcknowledgeProductReceipt200Response>> {
1987
+ const localVarAxiosArgs = await localVarAxiosParamCreator.acknowledgeProductReceipt(idempotencyKey, acknowledgeProductsRequestDto, options);
1244
1988
  const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
1245
- const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.closeSandboxBid']?.[localVarOperationServerIndex]?.url;
1989
+ const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.acknowledgeProductReceipt']?.[localVarOperationServerIndex]?.url;
1990
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1991
+ },
1992
+ /**
1993
+ * 진행중인 공고를 취소합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. **되돌릴 수 없습니다.** 취소 사유는 필수이며 공고 이력에 남습니다. **전제조건:** 진행중(ONGOING) 상태여야 합니다. **거부:** 진행중이 아니거나 이미 취소된 공고 → 409. 타 발주처 공고 → 403. **마감과의 차이:** 취소는 공고를 무효로 되돌리는 것이고, 유찰(`POST /v2/bids/{bidId}/fail`)은 응찰을 받았으나 낙찰자를 정하지 못한 종료입니다.
1994
+ * @summary 공고 취소
1995
+ * @param {string} bidId 공고 식별자(등록 응답의 bidId).
1996
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
1997
+ * @param {CancelBidRequestDto} cancelBidRequestDto
1998
+ * @param {*} [options] Override http request option.
1999
+ * @throws {RequiredError}
2000
+ */
2001
+ async cancelBid(bidId: string, idempotencyKey: string, cancelBidRequestDto: CancelBidRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CancelBid200Response>> {
2002
+ const localVarAxiosArgs = await localVarAxiosParamCreator.cancelBid(bidId, idempotencyKey, cancelBidRequestDto, options);
2003
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
2004
+ const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.cancelBid']?.[localVarOperationServerIndex]?.url;
1246
2005
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1247
2006
  },
1248
2007
  /**
@@ -1254,7 +2013,7 @@ export const PartnerV2ApiFp = function(configuration?: Configuration) {
1254
2013
  * @param {*} [options] Override http request option.
1255
2014
  * @throws {RequiredError}
1256
2015
  */
1257
- async completeAcceptance(bidId: string, idempotencyKey: string, completeAcceptanceRequestDto: CompleteAcceptanceRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AcceptanceResultResponseDto>> {
2016
+ async completeAcceptance(bidId: string, idempotencyKey: string, completeAcceptanceRequestDto: CompleteAcceptanceRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CompleteAcceptance200Response>> {
1258
2017
  const localVarAxiosArgs = await localVarAxiosParamCreator.completeAcceptance(bidId, idempotencyKey, completeAcceptanceRequestDto, options);
1259
2018
  const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
1260
2019
  const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.completeAcceptance']?.[localVarOperationServerIndex]?.url;
@@ -1268,41 +2027,42 @@ export const PartnerV2ApiFp = function(configuration?: Configuration) {
1268
2027
  * @param {*} [options] Override http request option.
1269
2028
  * @throws {RequiredError}
1270
2029
  */
1271
- async completeInvoice(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<InvoiceCompletedResponseDto>> {
2030
+ async completeInvoice(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CompleteInvoice200Response>> {
1272
2031
  const localVarAxiosArgs = await localVarAxiosParamCreator.completeInvoice(bidId, idempotencyKey, options);
1273
2032
  const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
1274
2033
  const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.completeInvoice']?.[localVarOperationServerIndex]?.url;
1275
2034
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1276
2035
  },
1277
2036
  /**
1278
- * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인(APPROVED)되어 바로 결제 가능합니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. 거기서 카드를 골라 결제합니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/card-payment-requests/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
2037
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인되어 바로 결제할 수 있습니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 도메인 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
1279
2038
  * @summary 결제창 발행
1280
2039
  * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
1281
2040
  * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
1282
2041
  * @param {*} [options] Override http request option.
1283
2042
  * @throws {RequiredError}
1284
2043
  */
1285
- async createCardPaymentRequest(idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CardPaymentRequestResponseDto>> {
1286
- const localVarAxiosArgs = await localVarAxiosParamCreator.createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options);
2044
+ async createCardPayment(idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CreateCardPayment200Response>> {
2045
+ const localVarAxiosArgs = await localVarAxiosParamCreator.createCardPayment(idempotencyKey, createCardPaymentRequestDto, options);
1287
2046
  const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
1288
- const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.createCardPaymentRequest']?.[localVarOperationServerIndex]?.url;
2047
+ const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.createCardPayment']?.[localVarOperationServerIndex]?.url;
1289
2048
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1290
2049
  },
1291
2050
  /**
1292
- * 스코프 `embed:launch` 필수. 발주기관 담당자(memberId) 일회성 launch code(60초 TTL) 발급한다. code URL 싣지 말고 @cmarket/embed SDK postMessage 핸드셰이크로만 iframe 전달할 것. memberId API 키의 발주처 소속이 아니면 403, 미허용 screen 400.
1293
- * @summary 임베드 launch code 발급 (iframe SSO)
1294
- * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
2051
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 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` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
2052
+ * @summary 결제창 발행
2053
+ * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
2054
+ * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
1295
2055
  * @param {*} [options] Override http request option.
1296
2056
  * @throws {RequiredError}
1297
2057
  */
1298
- async createEmbedLaunch(embedLaunchRequestDto: EmbedLaunchRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<EmbedLaunchResponseDto>> {
1299
- const localVarAxiosArgs = await localVarAxiosParamCreator.createEmbedLaunch(embedLaunchRequestDto, options);
2058
+ async createCardPaymentRequest(idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CardPaymentRequestResponseDto>> {
2059
+ const localVarAxiosArgs = await localVarAxiosParamCreator.createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options);
1300
2060
  const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
1301
- const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.createEmbedLaunch']?.[localVarOperationServerIndex]?.url;
2061
+ const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.createCardPaymentRequest']?.[localVarOperationServerIndex]?.url;
1302
2062
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1303
2063
  },
1304
2064
  /**
1305
- * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `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` 헤더 필수.
2065
+ * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `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 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
1306
2066
  * @summary 계약서류 생성
1307
2067
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1308
2068
  * @param {CreateExternalContractDocumentsRequestDto} createExternalContractDocumentsRequestDto
@@ -1316,7 +2076,37 @@ export const PartnerV2ApiFp = function(configuration?: Configuration) {
1316
2076
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1317
2077
  },
1318
2078
  /**
1319
- * 무인증 — `fileKey` 자체가 capability 다(V5 `/download/{fileKey}` 같은 보안 모델). 파트너 응답의 `fileUrl`/`fullUrl` URL 가리킨다. 요청 시점에 서명하므로 URL저장해 두어도 만료되지 않는다. 응답은 실제 저장소 URL 로의 302 리다이렉트이며 리다이렉트 타깃은 1시간 만료되므로 302 자체를 캐시하지 것(`Cache-Control: no-store`).
2079
+ * 수신 주소와 구독할 이벤트를 등록합니다. **호출 시점:** 연동 초기 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
2080
+ * @summary 웹훅 구독 등록
2081
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
2082
+ * @param {CreateWebhookEndpointRequestDto} createWebhookEndpointRequestDto
2083
+ * @param {*} [options] Override http request option.
2084
+ * @throws {RequiredError}
2085
+ */
2086
+ async createWebhookEndpoint(idempotencyKey: string, createWebhookEndpointRequestDto: CreateWebhookEndpointRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CreateWebhookEndpoint201Response>> {
2087
+ const localVarAxiosArgs = await localVarAxiosParamCreator.createWebhookEndpoint(idempotencyKey, createWebhookEndpointRequestDto, options);
2088
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
2089
+ const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.createWebhookEndpoint']?.[localVarOperationServerIndex]?.url;
2090
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2091
+ },
2092
+ /**
2093
+ * 구독을 삭제합니다. 이후 그 주소로는 아무 이벤트도 발송되지 않습니다. **호출 시점:** 연동을 종료할 때. 잠시만 멈추려면 삭제하지 말고 `PATCH … {\"status\":\"DISABLED\"}` 를 쓰세요 — 시크릿과 이벤트 구성이 남아 그대로 되살릴 수 있습니다. **되돌릴 수 없습니다.** 다시 등록하면 새 구독이고 서명 시크릿도 새 값입니다. **`If-Match` 가 필수입니다.** `GET` 으로 받은 `ETag` 를 실어 보내세요. - `428` — 헤더 누락. 조회 후 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다(누군가 수정했거나 발송기가 상태를 내렸습니다). 다시 조회해 정말 지울 대상이 맞는지 확인하고 최신 `ETag` 로 재시도하세요. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
2094
+ * @summary 웹훅 구독 삭제
2095
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
2096
+ * @param {string} ifMatch
2097
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
2098
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
2099
+ * @param {*} [options] Override http request option.
2100
+ * @throws {RequiredError}
2101
+ */
2102
+ async deleteWebhookEndpoint(endpointId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
2103
+ const localVarAxiosArgs = await localVarAxiosParamCreator.deleteWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, options);
2104
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
2105
+ const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.deleteWebhookEndpoint']?.[localVarOperationServerIndex]?.url;
2106
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2107
+ },
2108
+ /**
2109
+ * 무인증 — `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` 이 가리키는 주소라 계속 유지되며 중단 일정은 없습니다.
1320
2110
  * @summary 파일 다운로드 — 안정 URL(302)
1321
2111
  * @param {string} fileKey 파일 키 — UUIDv4 hex 32자. 업로드(&#x60;POST /v1|/v2/files&#x60;) 응답에서 받은 값.
1322
2112
  * @param {*} [options] Override http request option.
@@ -1335,12 +2125,25 @@ export const PartnerV2ApiFp = function(configuration?: Configuration) {
1335
2125
  * @param {*} [options] Override http request option.
1336
2126
  * @throws {RequiredError}
1337
2127
  */
1338
- async getBid(bidId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<BidDetailResponseDto>> {
2128
+ async getBid(bidId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetBid200Response>> {
1339
2129
  const localVarAxiosArgs = await localVarAxiosParamCreator.getBid(bidId, options);
1340
2130
  const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
1341
2131
  const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.getBid']?.[localVarOperationServerIndex]?.url;
1342
2132
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1343
2133
  },
2134
+ /**
2135
+ * 공고의 납품·검수·계약완료 진행 상태를 조회합니다. 검수완료 전송의 읽기 카운터파트입니다. **세 축은 서로 다른 사건입니다.** - `delivered`: 낙찰 공급사가 납품(결과확인)을 보고했습니다. - `confirmed`/`confirmedAt`: 발주기관이 검수를 확인했습니다. - `contractCompletedAt`: 검수완료 전송이 원장에 반영된 시각입니다. 검수완료 전송(`POST /v2/bids/{bidId}/acceptance`)이 성사되었는지는 `contractCompletedAt` 이 채워졌는지로 확인하세요. **필수 스코프:** `contracts:read`
2136
+ * @summary 검수 현황 조회
2137
+ * @param {string} bidId 공고 ID(&#x3D; backend bidId &#x3D; 등록 응답의 bidNo).
2138
+ * @param {*} [options] Override http request option.
2139
+ * @throws {RequiredError}
2140
+ */
2141
+ async getBidAcceptance(bidId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetBidAcceptance200Response>> {
2142
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getBidAcceptance(bidId, options);
2143
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
2144
+ const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.getBidAcceptance']?.[localVarOperationServerIndex]?.url;
2145
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2146
+ },
1344
2147
  /**
1345
2148
  * 공고의 응찰 참여 업체·순위·낙찰 여부를 조회한다. scope bids:read.
1346
2149
  * @summary 입찰 결과 조회
@@ -1348,39 +2151,52 @@ export const PartnerV2ApiFp = function(configuration?: Configuration) {
1348
2151
  * @param {*} [options] Override http request option.
1349
2152
  * @throws {RequiredError}
1350
2153
  */
1351
- async getBidResults(bidId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<BidResultsResponseDto>> {
2154
+ async getBidResults(bidId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetBidResults200Response>> {
1352
2155
  const localVarAxiosArgs = await localVarAxiosParamCreator.getBidResults(bidId, options);
1353
2156
  const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
1354
2157
  const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.getBidResults']?.[localVarOperationServerIndex]?.url;
1355
2158
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1356
2159
  },
1357
2160
  /**
1358
- * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회한다. scope bids:read. 가시성 마스킹과 직교한 정산 데이터 — read-only.
2161
+ * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 가시성 마스킹과는 직교한 정산 데이터이며 읽기 전용입니다. **필수 스코프:** `invoices:read` 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
1359
2162
  * @summary 입찰결과 정산정보 조회
1360
2163
  * @param {string} bidId
1361
2164
  * @param {*} [options] Override http request option.
1362
2165
  * @throws {RequiredError}
1363
2166
  */
1364
- async getBidSettlement(bidId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<BidSettlementResponseDto>> {
2167
+ async getBidSettlement(bidId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetBidSettlement200Response>> {
1365
2168
  const localVarAxiosArgs = await localVarAxiosParamCreator.getBidSettlement(bidId, options);
1366
2169
  const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
1367
2170
  const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.getBidSettlement']?.[localVarOperationServerIndex]?.url;
1368
2171
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1369
2172
  },
1370
2173
  /**
1371
- * 낙찰 계약의 거래명세서(문서·품목 라인)를 조회한다. scope contracts:read.
2174
+ * 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
1372
2175
  * @summary 거래명세서 조회
1373
2176
  * @param {string} bidId
1374
2177
  * @param {number} [paperCode]
1375
2178
  * @param {*} [options] Override http request option.
1376
2179
  * @throws {RequiredError}
1377
2180
  */
1378
- async getBidStatement(bidId: string, paperCode?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<BidStatementResponseDto>> {
2181
+ async getBidStatement(bidId: string, paperCode?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetBidStatement200Response>> {
1379
2182
  const localVarAxiosArgs = await localVarAxiosParamCreator.getBidStatement(bidId, paperCode, options);
1380
2183
  const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
1381
2184
  const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.getBidStatement']?.[localVarOperationServerIndex]?.url;
1382
2185
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1383
2186
  },
2187
+ /**
2188
+ * 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **구 경로:** 버전 없는 `GET /files/{fileKey}` 는 만료 없는 안정 주소이고 파트너 응답의 `fileUrl`/`fullUrl` 이 그 값을 가리킵니다. 인증도 스코프도 없는 옛 표면이라 신규 연동은 이 엔드포인트를 쓰세요. 구 경로는 당분간 유지됩니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** 하이픈 없는 16진수 32자가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. **필수 스코프:** `files:read`
2189
+ * @summary 파일 조회(메타 + 내려받기 주소)
2190
+ * @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(하이픈 없는 16진수 32자).
2191
+ * @param {*} [options] Override http request option.
2192
+ * @throws {RequiredError}
2193
+ */
2194
+ async getFileMeta(fileKey: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetFileMeta200Response>> {
2195
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getFileMeta(fileKey, options);
2196
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
2197
+ const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.getFileMeta']?.[localVarOperationServerIndex]?.url;
2198
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2199
+ },
1384
2200
  /**
1385
2201
  * 등록한 계약의 계산서 발행 상태를 확인합니다. **언제 쓰나:** 씨마켓이 보내는 발행완료 통지를 놓쳤을 때의 **복구 경로**입니다. 평상시에는 통지를 받아 처리하고, 상태가 어긋난 것 같을 때 이 API 로 되읽으세요. **필수 스코프:** `contracts:read`
1386
2202
  * @summary 계산서 발행 상태 조회
@@ -1395,7 +2211,7 @@ export const PartnerV2ApiFp = function(configuration?: Configuration) {
1395
2211
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1396
2212
  },
1397
2213
  /**
1398
- * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write`
2214
+ * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
1399
2215
  * @summary 공급사 카드결제 가능 여부
1400
2216
  * @param {string} memberId 계약업체 회원 ID
1401
2217
  * @param {*} [options] Override http request option.
@@ -1407,31 +2223,81 @@ export const PartnerV2ApiFp = function(configuration?: Configuration) {
1407
2223
  const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.getSupplierCardPayable']?.[localVarOperationServerIndex]?.url;
1408
2224
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1409
2225
  },
2226
+ /**
2227
+ * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
2228
+ * @summary 공급사 카드결제 가능 여부
2229
+ * @param {string} memberId 계약업체 회원 ID
2230
+ * @param {*} [options] Override http request option.
2231
+ * @throws {RequiredError}
2232
+ */
2233
+ async getSupplierCardPayableV2(memberId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetSupplierCardPayableV2200Response>> {
2234
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getSupplierCardPayableV2(memberId, options);
2235
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
2236
+ const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.getSupplierCardPayableV2']?.[localVarOperationServerIndex]?.url;
2237
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2238
+ },
2239
+ /**
2240
+ * 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
2241
+ * @summary 웹훅 구독 단건 조회
2242
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
2243
+ * @param {*} [options] Override http request option.
2244
+ * @throws {RequiredError}
2245
+ */
2246
+ async getWebhookEndpoint(endpointId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetWebhookEndpoint200Response>> {
2247
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getWebhookEndpoint(endpointId, options);
2248
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
2249
+ const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.getWebhookEndpoint']?.[localVarOperationServerIndex]?.url;
2250
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2251
+ },
1410
2252
  /**
1411
2253
  * ERP 연동 직전 회선·인증 endpoint 동작 확인용.
1412
2254
  * @summary Partner API 헬스체크
1413
2255
  * @param {*} [options] Override http request option.
1414
2256
  * @throws {RequiredError}
1415
2257
  */
1416
- async healthControllerCheck(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<HealthResponseDto>> {
2258
+ async healthControllerCheck(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<HealthControllerCheck200Response>> {
1417
2259
  const localVarAxiosArgs = await localVarAxiosParamCreator.healthControllerCheck(options);
1418
2260
  const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
1419
2261
  const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.healthControllerCheck']?.[localVarOperationServerIndex]?.url;
1420
2262
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1421
2263
  },
1422
2264
  /**
1423
- * 낙찰 공급사가 확정된 공고에 대해 세금계산서를 발행합니다. **호출 시점:** 낙찰자 선정(계약진행) 이후. 과세/면세를 자동 분리해 발행합니다. **부수효과:** - 세금계산서가 국세청에 발행되고 공고가 발행 완료로 마킹됩니다. - 이미 발행됐거나 분할 청구가 진행 중이면 409 거절됩니다. **소유권:** 발행 대상 공고가 API 키에 바인딩된 발주처 소유가 아니면 403. **분할 청구:** 세금계산서 **분할 발급**은 `/v2` 제공되지 않습니다 `/v1` 전용(`POST /v1/invoices/split-requests`)입니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 + 동일 body 재전송 24시간 캐시 응답 반환.
1424
- * @summary 세금계산서 발행
2265
+ * 공고의 계약서류 목록과 내려받기 주소를 조회합니다. **목록에 실리는 것:** 공고 전체에 공통인 서류(약관·자동생성 공통본) 낙찰자에게 귀속된 서류를 함께 싣습니다. 낙찰자 귀속 서류는 `winnerSequence` 낙찰자의 응찰 순번이 들어갑니다. **아직 없는 서류도 실립니다.** 공고가 제출을 요구했지만 아직 올라오지 않은 서류는 `fileKey: null` 나타나므로, 제출 여부는 값으로 판정하세요. **자동생성 서류:** `autoGenerated: true` 서류는 c-market 만들어 줍니다. 만드는 중이면 `generationState` `QUEUED`/`PROCESSING` 이고 `downloadUrl` 아직 없습니다. `DEAD_LETTER` 는 생성이 실패해 멈춘 상태이며, 같은 경로의 POST(재생성)로 다시 큐에 올립니다. **내려받기:** `downloadUrl` 유효기간 1시간의 서명 주소입니다. 저장해 두고 재사용하지 마시고 필요할 엔드포인트를 다시 호출하세요. 기간에 얽매이지 않으려면 `fileKey` 를 보관하시고 파일 내려받기 경로를 사용하세요. **보이는 범위:** 서버가 공고 낙찰방법과 진행 단계로 결정합니다. 응답을 그대로 사용하시고 클라이언트에서 다시 거르지 마세요. **필수 스코프:** `contracts:read`
2266
+ * @summary 계약서류 목록 조회
2267
+ * @param {string} bidId 공고번호(buy_idx, 예 CM…) 또는 외부 구매번호(bid_puchase_no).
2268
+ * @param {*} [options] Override http request option.
2269
+ * @throws {RequiredError}
2270
+ */
2271
+ async listBidContractDocuments(bidId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListBidContractDocuments200Response>> {
2272
+ const localVarAxiosArgs = await localVarAxiosParamCreator.listBidContractDocuments(bidId, options);
2273
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
2274
+ const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.listBidContractDocuments']?.[localVarOperationServerIndex]?.url;
2275
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2276
+ },
2277
+ /**
2278
+ * 공고에 응찰한 업체 목록을 조회합니다. 스코프 `bids:read` 필수. **보이는 범위는 공고의 낙찰방법과 진행 단계가 결정합니다.** 개찰 전에는 업체명이 가려지고 (`companyName: null`), 순위는 산정 전까지 `null` 입니다. 이 판정은 서버가 소유하므로 응답을 그대로 사용하시고 클라이언트에서 다시 계산하지 마세요. 같은 목록이 `GET /v2/bids/{bidId}` 응답의 `participants` 에도 실립니다 — 응찰 현황만 필요하면 이 엔드포인트가 가볍습니다.
2279
+ * @summary 응찰 현황 조회
1425
2280
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
1426
- * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1427
- * @param {IssueTaxInvoiceRequestDto} issueTaxInvoiceRequestDto
1428
2281
  * @param {*} [options] Override http request option.
1429
2282
  * @throws {RequiredError}
1430
2283
  */
1431
- async issueTaxInvoice(bidId: string, idempotencyKey: string, issueTaxInvoiceRequestDto: IssueTaxInvoiceRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<TaxInvoiceIssuedResponseDto>> {
1432
- const localVarAxiosArgs = await localVarAxiosParamCreator.issueTaxInvoice(bidId, idempotencyKey, issueTaxInvoiceRequestDto, options);
2284
+ async listBidParticipants(bidId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListBidParticipants200Response>> {
2285
+ const localVarAxiosArgs = await localVarAxiosParamCreator.listBidParticipants(bidId, options);
1433
2286
  const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
1434
- const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.issueTaxInvoice']?.[localVarOperationServerIndex]?.url;
2287
+ const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.listBidParticipants']?.[localVarOperationServerIndex]?.url;
2288
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2289
+ },
2290
+ /**
2291
+ * 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에는 `ETag` 가 실리므로, 다음 요청에 `If-None-Match` 로 되보내면 결과가 그대로일 때 `304` 를 본문 없이 받습니다 — 마감을 기다리는 동안의 전송량이 사라집니다. **식별자 전달:** `?bidIds=A,B,C`(쉼표) 또는 `?bidIds=A&bidIds=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다 — 요청한 건수와 받은 건수가 다를 수 있으니 `bidId` 로 대조하세요. **목록이 길어 URL 이 부담되면** `POST /v2/bid-results/query` 를 쓰세요. 응답은 같습니다.
2292
+ * @summary 입찰 결과 배치 조회
2293
+ * @param {string} bidIds 조회할 공고 식별자 목록. 쉼표로 구분하거나 &#x60;bidIds&#x60; 를 반복해 전달합니다. 최대 100건.
2294
+ * @param {*} [options] Override http request option.
2295
+ * @throws {RequiredError}
2296
+ */
2297
+ async listBidResults(bidIds: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListBidResults200Response>> {
2298
+ const localVarAxiosArgs = await localVarAxiosParamCreator.listBidResults(bidIds, options);
2299
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
2300
+ const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.listBidResults']?.[localVarOperationServerIndex]?.url;
1435
2301
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1436
2302
  },
1437
2303
  /**
@@ -1445,24 +2311,64 @@ export const PartnerV2ApiFp = function(configuration?: Configuration) {
1445
2311
  * @param {*} [options] Override http request option.
1446
2312
  * @throws {RequiredError}
1447
2313
  */
1448
- async listBids(limit?: number, cursor?: string, bidIds?: Array<string>, status?: Array<BidPublicStatus>, include?: Array<ListBidsIncludeEnum>, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListBidsResponseDto>> {
2314
+ async listBids(limit?: number, cursor?: string, bidIds?: Array<string>, status?: Array<BidPublicStatus>, include?: Array<ListBidsIncludeEnum>, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListBids200Response>> {
1449
2315
  const localVarAxiosArgs = await localVarAxiosParamCreator.listBids(limit, cursor, bidIds, status, include, options);
1450
2316
  const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
1451
2317
  const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.listBids']?.[localVarOperationServerIndex]?.url;
1452
2318
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1453
2319
  },
1454
2320
  /**
1455
- * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read`
1456
- * @summary 거래에 필요한 계약서류 목록 조회
1457
- * @param {string} buyerId 발주기관 회원 ID(c-market memberId).
1458
- * @param {ListExternalContractDocumentsBidTypeEnum} bidType 거래유형.
2321
+ * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `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 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
2322
+ * @summary 거래에 필요한 계약서류 목록 조회
2323
+ * @param {string} buyerId 발주기관 회원 ID(c-market memberId).
2324
+ * @param {ListExternalContractDocumentsBidTypeEnum} bidType 거래유형.
2325
+ * @param {*} [options] Override http request option.
2326
+ * @throws {RequiredError}
2327
+ */
2328
+ async listExternalContractDocuments(buyerId: string, bidType: ListExternalContractDocumentsBidTypeEnum, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ExternalContractDocumentsResponseDto>> {
2329
+ const localVarAxiosArgs = await localVarAxiosParamCreator.listExternalContractDocuments(buyerId, bidType, options);
2330
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
2331
+ const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.listExternalContractDocuments']?.[localVarOperationServerIndex]?.url;
2332
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2333
+ },
2334
+ /**
2335
+ * 기관에 공유된 물품 중 **아직 전송되지 않은 것**을 조회합니다. **증분 피드입니다.** 가져간 물품을 `POST /v2/products/receipts` 로 수신확인하면 다음 조회 결과에서 빠집니다. 수신확인을 하지 않으면 같은 물품이 계속 내려옵니다. **권장 흐름:** 조회 → 자기 시스템에 저장 → 저장에 성공한 물품 코드만 수신확인. 저장 전에 수신확인하면 그 물품은 다시 받을 수 없습니다. **조회 범위:** 요청 키가 대행하는 기관 그룹입니다. 기관 그룹이 설정되지 않은 키는 403 입니다. **필수 스코프:** `products:read`
2336
+ * @summary 물품 카탈로그 조회
2337
+ * @param {*} [options] Override http request option.
2338
+ * @throws {RequiredError}
2339
+ */
2340
+ async listProducts(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListProducts200Response>> {
2341
+ const localVarAxiosArgs = await localVarAxiosParamCreator.listProducts(options);
2342
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
2343
+ const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.listProducts']?.[localVarOperationServerIndex]?.url;
2344
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2345
+ },
2346
+ /**
2347
+ * 이 API 키의 웹훅 발송 시도를 최신순으로 조회합니다. 보낸 본문·수신측 응답 상태· 다음 재시도 예정 시각이 함께 실립니다. **호출 시점:** - 수신측 장애로 놓친 이벤트를 메울 때. 이 엔드포인트가 웹훅의 **폴링 대체 경로**입니다 — `status=EXHAUSTED` 로 걸러 다시 처리하면 됩니다. - \"이벤트가 안 온다\" 를 진단할 때. 발송 시도 자체가 없는지(구독·이벤트 타입 문제), 시도했지만 실패했는지(`responseStatus`·`responseBodyExcerpt`)를 여기서 가릅니다. **같은 이벤트가 여러 행으로 보입니다.** 재시도마다 한 행이며 `eventId` 가 같고 `attempt` 만 올라갑니다. 처리 여부는 `eventId` 기준으로 판단하세요. **페이지네이션:** `nextCursor` 를 다음 요청의 `cursor` 로 전달합니다. null 이면 마지막 페이지입니다. **`400`:** `status` 가 허용 값 밖이거나 `limit` 이 범위를 벗어났습니다 — 값을 고쳐 재시도하세요. **필수 스코프:** `webhooks:read`
2348
+ * @summary 웹훅 전송 이력 조회
2349
+ * @param {string} [endpointId] 이 구독의 전송만 조회합니다. 미지정이면 이 키의 모든 구독을 함께 조회합니다.
2350
+ * @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
2351
+ * @param {number} [limit] 페이지 크기(1~200, 기본 50).
2352
+ * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달합니다. 미지정 시 첫 페이지.
2353
+ * @param {*} [options] Override http request option.
2354
+ * @throws {RequiredError}
2355
+ */
2356
+ async listWebhookDeliveries(endpointId?: string, status?: PartnerWebhookDeliveryStatus, limit?: number, cursor?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListWebhookDeliveries200Response>> {
2357
+ const localVarAxiosArgs = await localVarAxiosParamCreator.listWebhookDeliveries(endpointId, status, limit, cursor, options);
2358
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
2359
+ const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.listWebhookDeliveries']?.[localVarOperationServerIndex]?.url;
2360
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2361
+ },
2362
+ /**
2363
+ * 이 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
2364
+ * @summary 웹훅 구독 목록 조회
1459
2365
  * @param {*} [options] Override http request option.
1460
2366
  * @throws {RequiredError}
1461
2367
  */
1462
- async listExternalContractDocuments(buyerId: string, bidType: ListExternalContractDocumentsBidTypeEnum, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ExternalContractDocumentsResponseDto>> {
1463
- const localVarAxiosArgs = await localVarAxiosParamCreator.listExternalContractDocuments(buyerId, bidType, options);
2368
+ async listWebhookEndpoints(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListWebhookEndpoints200Response>> {
2369
+ const localVarAxiosArgs = await localVarAxiosParamCreator.listWebhookEndpoints(options);
1464
2370
  const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
1465
- const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.listExternalContractDocuments']?.[localVarOperationServerIndex]?.url;
2371
+ const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.listWebhookEndpoints']?.[localVarOperationServerIndex]?.url;
1466
2372
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1467
2373
  },
1468
2374
  /**
@@ -1474,7 +2380,7 @@ export const PartnerV2ApiFp = function(configuration?: Configuration) {
1474
2380
  * @param {*} [options] Override http request option.
1475
2381
  * @throws {RequiredError}
1476
2382
  */
1477
- async markBidFailed(bidId: string, idempotencyKey: string, markBidFailedRequestDto: MarkBidFailedRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<BidFailedV2ResponseDto>> {
2383
+ async markBidFailed(bidId: string, idempotencyKey: string, markBidFailedRequestDto: MarkBidFailedRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<MarkBidFailed201Response>> {
1478
2384
  const localVarAxiosArgs = await localVarAxiosParamCreator.markBidFailed(bidId, idempotencyKey, markBidFailedRequestDto, options);
1479
2385
  const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
1480
2386
  const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.markBidFailed']?.[localVarOperationServerIndex]?.url;
@@ -1488,12 +2394,25 @@ export const PartnerV2ApiFp = function(configuration?: Configuration) {
1488
2394
  * @param {*} [options] Override http request option.
1489
2395
  * @throws {RequiredError}
1490
2396
  */
1491
- async publishBid(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<BidPublishedResponseDto>> {
2397
+ async publishBid(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PublishBid200Response>> {
1492
2398
  const localVarAxiosArgs = await localVarAxiosParamCreator.publishBid(bidId, idempotencyKey, options);
1493
2399
  const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
1494
2400
  const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.publishBid']?.[localVarOperationServerIndex]?.url;
1495
2401
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1496
2402
  },
2403
+ /**
2404
+ * `GET /v2/bid-results` 와 **완전히 같은 조회**이며, 식별자 목록을 본문으로 받습니다. 스코프 `bids:read`. 공고 식별자 100건이면 URL 이 1KB를 넘습니다 — 중간 프록시가 긴 URL 을 자르는 환경을 위한 대체 경로입니다. **부수효과가 없으므로 `Idempotency-Key` 는 필요하지 않습니다.** POST 인 것은 전송 형태의 문제일 뿐이며, 가능하면 캐시·`ETag` 가 동작하는 `GET` 쪽을 쓰세요.
2405
+ * @summary 입찰 결과 배치 조회 (본문 전달)
2406
+ * @param {BidResultsBatchRequestDto} bidResultsBatchRequestDto
2407
+ * @param {*} [options] Override http request option.
2408
+ * @throws {RequiredError}
2409
+ */
2410
+ async queryBidResults(bidResultsBatchRequestDto: BidResultsBatchRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListBidResults200Response>> {
2411
+ const localVarAxiosArgs = await localVarAxiosParamCreator.queryBidResults(bidResultsBatchRequestDto, options);
2412
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
2413
+ const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.queryBidResults']?.[localVarOperationServerIndex]?.url;
2414
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2415
+ },
1497
2416
  /**
1498
2417
  * 공고의 자동생성 계약서류(발주서·공고결과·표준계약서 등)를 생성/재생성합니다. **V6 대응:** `RegenerateAllContractPdfsCommand` — 웹 어드민의 \"계약 서류 일괄 재생성\"과 동일 경로. **호출 시점:** 낙찰(계약 시작) 후 계약서류가 필요하거나, 생성에 실패한 서류를 다시 만들 때. **부수효과:** - 생성 실패(DEAD_LETTER) 상태의 자동생성 PDF 가 재생성 큐에 등록됩니다(비동기). - 승낙사항(ACCEPTANCE) 계열은 운영자 승인 워크플로가 필요해 이 경로에서 제외됩니다. **응답:** 즉시 파일이 아니라 큐 등록 결과(`enqueuedCount`/`skippedCount`)를 반환합니다. 잠시 후 자동 생성됩니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
1499
2418
  * @summary 계약서류 생성(재생성)
@@ -1502,7 +2421,7 @@ export const PartnerV2ApiFp = function(configuration?: Configuration) {
1502
2421
  * @param {*} [options] Override http request option.
1503
2422
  * @throws {RequiredError}
1504
2423
  */
1505
- async regenerateContractDocuments(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ContractDocumentsRegeneratedResponseDto>> {
2424
+ async regenerateContractDocuments(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<RegenerateContractDocuments201Response>> {
1506
2425
  const localVarAxiosArgs = await localVarAxiosParamCreator.regenerateContractDocuments(bidId, idempotencyKey, options);
1507
2426
  const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
1508
2427
  const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.regenerateContractDocuments']?.[localVarOperationServerIndex]?.url;
@@ -1517,7 +2436,7 @@ export const PartnerV2ApiFp = function(configuration?: Configuration) {
1517
2436
  * @param {*} [options] Override http request option.
1518
2437
  * @throws {RequiredError}
1519
2438
  */
1520
- async registerAward(bidId: string, idempotencyKey: string, registerAwardRequestDto: RegisterAwardRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AwardRegisteredV2ResponseDto>> {
2439
+ async registerAward(bidId: string, idempotencyKey: string, registerAwardRequestDto: RegisterAwardRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<RegisterAward201Response>> {
1521
2440
  const localVarAxiosArgs = await localVarAxiosParamCreator.registerAward(bidId, idempotencyKey, registerAwardRequestDto, options);
1522
2441
  const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
1523
2442
  const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.registerAward']?.[localVarOperationServerIndex]?.url;
@@ -1526,12 +2445,13 @@ export const PartnerV2ApiFp = function(configuration?: Configuration) {
1526
2445
  /**
1527
2446
  * 입찰 정보 등록. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수.
1528
2447
  * @summary 입찰 정보 전송(등록)
2448
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
1529
2449
  * @param {CreateBidRequestDto} createBidRequestDto
1530
2450
  * @param {*} [options] Override http request option.
1531
2451
  * @throws {RequiredError}
1532
2452
  */
1533
- async registerBid(createBidRequestDto: CreateBidRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<BidRegisteredResponseDto>> {
1534
- const localVarAxiosArgs = await localVarAxiosParamCreator.registerBid(createBidRequestDto, options);
2453
+ async registerBid(idempotencyKey: string, createBidRequestDto: CreateBidRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<RegisterBid201Response>> {
2454
+ const localVarAxiosArgs = await localVarAxiosParamCreator.registerBid(idempotencyKey, createBidRequestDto, options);
1535
2455
  const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
1536
2456
  const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.registerBid']?.[localVarOperationServerIndex]?.url;
1537
2457
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -1551,35 +2471,82 @@ export const PartnerV2ApiFp = function(configuration?: Configuration) {
1551
2471
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1552
2472
  },
1553
2473
  /**
1554
- * 협상방식(NEGOTIATION/NEGOTIATION_AUTO) 공고의 응찰자별 점수를 입력합니다. **호출 시점:** 입찰 마감 낙찰(`POST /v2/bids/{bidId}/award`) 전. 협상방식 공고는 평가를 완료해야 낙찰에 진입할 수 있습니다. **부수효과:** - 응찰자별 기술점수(및 선택적 가격점수 override)가 기록됩니다. - `complete=true` 평가완료 게이트까지 적용돼 낙찰 진입이 가능해집니다. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body buyerId 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 + 동일 body 재전송 24시간 캐시 응답 반환.
1555
- * @summary 협상 점수평가
2474
+ * 확정된 낙찰을 되돌려 공고를 낙찰대기(PENDING_AWARD) 상태로 보냅니다. 스코프 `awards:write` + `Idempotency-Key` 헤더 필수. **호출 시점:** 낙찰자가 계약을 포기했거나 낙찰 처리 자체가 잘못됐을 때. 되돌린 같은 공고에 다시 낙찰을 등록할 수 있습니다. **되돌릴 없는 경우 409:** - 수수료 결제가 이미 완료된 공고 - 세금계산서가 이미 발행된 공고 - 수입권공매 계열 낙찰방법(다수 낙찰자 구조라 되돌리기 단위가 다릅니다) **사유는 필수입니다** 감사 대상 행위이며 공고 이력에 남습니다. **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
2475
+ * @summary 낙찰 되돌리기
1556
2476
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
2477
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
2478
+ * @param {RevertAwardRequestDto} revertAwardRequestDto
2479
+ * @param {*} [options] Override http request option.
2480
+ * @throws {RequiredError}
2481
+ */
2482
+ async revertAward(bidId: string, idempotencyKey: string, revertAwardRequestDto: RevertAwardRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<RevertAward200Response>> {
2483
+ const localVarAxiosArgs = await localVarAxiosParamCreator.revertAward(bidId, idempotencyKey, revertAwardRequestDto, options);
2484
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
2485
+ const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.revertAward']?.[localVarOperationServerIndex]?.url;
2486
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2487
+ },
2488
+ /**
2489
+ * 서명 시크릿을 새로 발급합니다. 응답의 `secretVersion` 이 1 올라갑니다. **호출 시점:** 시크릿을 분실했거나 유출이 의심될 때, 또는 주기적 교체 정책이 있을 때. **새 시크릿은 이 응답에서 한 번만 나갑니다.** 조회로 다시 받을 수 없습니다. **옛 시크릿은 즉시 무효입니다.** 유예 기간이 없으므로, 수신측이 새 값을 반영하기 전에 도착한 이벤트는 서명 검증에 실패합니다. 배포 순서를 이렇게 잡으세요 — ① 수신측이 옛 값과 새 값을 **둘 다** 받아들이도록 배포 → ② 이 엔드포인트 호출 → ③ 응답의 새 값을 반영 → ④ 옛 값 제거. 검증 실패로 non-2xx 를 돌려주면 실패로 집계되어 20회 연속 시 구독이 중지됩니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 같은 키로 재전송하면 **새로 발급하지 않고** 처음 발급한 값을 그대로 돌려줍니다(24시간) — 네트워크 오류로 응답을 놓쳤을 때 같은 키로 다시 부르세요.
2490
+ * @summary 웹훅 서명 시크릿 재발급
2491
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
2492
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
2493
+ * @param {*} [options] Override http request option.
2494
+ * @throws {RequiredError}
2495
+ */
2496
+ async rotateWebhookSecret(endpointId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CreateWebhookEndpoint201Response>> {
2497
+ const localVarAxiosArgs = await localVarAxiosParamCreator.rotateWebhookSecret(endpointId, idempotencyKey, options);
2498
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
2499
+ const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.rotateWebhookSecret']?.[localVarOperationServerIndex]?.url;
2500
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2501
+ },
2502
+ /**
2503
+ * 등록된 주소로 `ping` 이벤트를 즉시 1회 보내고 그 결과를 돌려줍니다. **호출 시점:** 구독을 등록한 직후, 수신 주소를 바꾼 직후, 방화벽·인증서를 손본 뒤. **응답은 발송 결과이지 요청 실패가 아닙니다.** 수신측이 받지 못해도 HTTP `200` 에 `delivered: false` 로 옵니다 — `responseStatus`(수신측 상태)와 `error`(연결 거부·타임아웃· TLS 오류)를 보고 원인을 좁히세요. 이 발송에도 실제 이벤트와 **똑같은 서명 헤더**가 실리므로 검증 코드를 그대로 시험할 수 있습니다. `ping` 은 구독 목록에 넣을 수 없는 타입이니, 수신측이 모르는 `eventType` 을 만나면 버리도록 짜여 있다면 이 확인만 실패할 수 있습니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 다시 보내려면 **새 키**를 쓰세요 — 같은 키는 24시간 동안 직전 결과를 그대로 돌려줍니다(재발송하지 않습니다).
2504
+ * @summary 웹훅 연결 확인 발송
2505
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
1557
2506
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1558
- * @param {SubmitNegotiationScoresRequestDto} submitNegotiationScoresRequestDto
1559
2507
  * @param {*} [options] Override http request option.
1560
2508
  * @throws {RequiredError}
1561
2509
  */
1562
- async submitNegotiationScores(bidId: string, idempotencyKey: string, submitNegotiationScoresRequestDto: SubmitNegotiationScoresRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<NegotiationScoredV2ResponseDto>> {
1563
- const localVarAxiosArgs = await localVarAxiosParamCreator.submitNegotiationScores(bidId, idempotencyKey, submitNegotiationScoresRequestDto, options);
2510
+ async sendWebhookTestEvent(endpointId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SendWebhookTestEvent200Response>> {
2511
+ const localVarAxiosArgs = await localVarAxiosParamCreator.sendWebhookTestEvent(endpointId, idempotencyKey, options);
1564
2512
  const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
1565
- const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.submitNegotiationScores']?.[localVarOperationServerIndex]?.url;
2513
+ const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.sendWebhookTestEvent']?.[localVarOperationServerIndex]?.url;
1566
2514
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1567
2515
  },
1568
2516
  /**
1569
2517
  * 등록된 공고의 내용을 수정합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. 진행중/초안 상태의 공고만 수정할 수 있습니다. **부수효과:** - 변경 내용이 반영되고 수정이력이 기록됩니다. - `hideEdit=true` 면 변경이력을 비공개 처리하고 노출 카운터 증가를 생략합니다. **수정 제약:** - 낙찰방법(awardMethod)은 수정 불가(잠금). - 참여자가 있으면 입찰방식/면허/예산/품목 일부가 잠깁니다. - 마감/취소된 공고는 수정할 수 없습니다. 한 섹션을 수정하려면 해당 섹션의 필수 필드를 함께 보내야 합니다(부분 섹션은 거부됨).
1570
2518
  * @summary 입찰 공고 수정
1571
2519
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
2520
+ * @param {string} ifMatch
2521
+ * @param {string} ifMatch2 수정하려는 공고의 ETag(필수). 직전 &#x60;GET /v2/bids/{bidId}&#x60; 응답의 &#x60;ETag&#x60; 헤더 값을 그대로 실어 보내세요. 누락하면 428, 그 사이 공고가 바뀌었으면 412 로 거절되며 아무것도 수정되지 않습니다.
1572
2522
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
1573
2523
  * @param {UpdateBidRequestDto} updateBidRequestDto
1574
2524
  * @param {*} [options] Override http request option.
1575
2525
  * @throws {RequiredError}
1576
2526
  */
1577
- async updateBid(bidId: string, idempotencyKey: string, updateBidRequestDto: UpdateBidRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<BidUpdatedResponseDto>> {
1578
- const localVarAxiosArgs = await localVarAxiosParamCreator.updateBid(bidId, idempotencyKey, updateBidRequestDto, options);
2527
+ async updateBid(bidId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, updateBidRequestDto: UpdateBidRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UpdateBid200Response>> {
2528
+ const localVarAxiosArgs = await localVarAxiosParamCreator.updateBid(bidId, ifMatch, ifMatch2, idempotencyKey, updateBidRequestDto, options);
1579
2529
  const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
1580
2530
  const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.updateBid']?.[localVarOperationServerIndex]?.url;
1581
2531
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1582
2532
  },
2533
+ /**
2534
+ * 수신 주소·구독 이벤트·상태를 수정합니다. 보낸 필드만 바뀝니다. **호출 시점:** 수신 주소가 바뀌었을 때, 구독 이벤트를 늘리거나 줄일 때, 연속 실패로 자동 중지된 구독을 고친 뒤 되살릴 때(`{\"status\":\"ACTIVE\"}`). **`eventTypes` 는 치환입니다** — 보낸 목록이 곧 새 구독 목록입니다. 하나를 더하려면 기존 목록에 더한 **전체**를 보내세요. **`If-Match` 가 필수입니다.** 먼저 `GET /v2/webhook-endpoints/{endpointId}` 로 현재 `ETag` 를 받아 그대로 실어 보내세요. 이 헤더가 없으면 두 요청이 앞서거니 뒤서거니 하며 먼저 한 수정을 조용히 덮어씁니다. - `428` — 헤더를 빼먹었습니다. 조회 후 `ETag` 를 실어 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다. 다시 조회해 최신 `ETag` 로 재시도하세요. 아무것도 수정되지 않았습니다. **시크릿은 이 경로로 바뀌지 않습니다** — 재발급은 `rotate-secret` 입니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
2535
+ * @summary 웹훅 구독 수정
2536
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
2537
+ * @param {string} ifMatch
2538
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
2539
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
2540
+ * @param {UpdateWebhookEndpointRequestDto} updateWebhookEndpointRequestDto
2541
+ * @param {*} [options] Override http request option.
2542
+ * @throws {RequiredError}
2543
+ */
2544
+ async updateWebhookEndpoint(endpointId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, updateWebhookEndpointRequestDto: UpdateWebhookEndpointRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetWebhookEndpoint200Response>> {
2545
+ const localVarAxiosArgs = await localVarAxiosParamCreator.updateWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, updateWebhookEndpointRequestDto, options);
2546
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
2547
+ const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.updateWebhookEndpoint']?.[localVarOperationServerIndex]?.url;
2548
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2549
+ },
1583
2550
  /**
1584
2551
  * 스코프 `files:write` + `Idempotency-Key` 헤더 필수. base64 또는 url 중 정확히 하나를 제출한다.
1585
2552
  * @summary 입찰 첨부파일 업로드(base64 또는 url) → fileKey
@@ -1587,7 +2554,7 @@ export const PartnerV2ApiFp = function(configuration?: Configuration) {
1587
2554
  * @param {*} [options] Override http request option.
1588
2555
  * @throws {RequiredError}
1589
2556
  */
1590
- async uploadFile(uploadFileRequestDto: UploadFileRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<FileUploadedResponseDto>> {
2557
+ async uploadFile(uploadFileRequestDto: UploadFileRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UploadFile201Response>> {
1591
2558
  const localVarAxiosArgs = await localVarAxiosParamCreator.uploadFile(uploadFileRequestDto, options);
1592
2559
  const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
1593
2560
  const localVarOperationServerBasePath = operationServerMap['PartnerV2Api.uploadFile']?.[localVarOperationServerIndex]?.url;
@@ -1603,14 +2570,27 @@ export const PartnerV2ApiFactory = function (configuration?: Configuration, base
1603
2570
  const localVarFp = PartnerV2ApiFp(configuration)
1604
2571
  return {
1605
2572
  /**
1606
- * 샌드박스 공고를 마감하는 **영업 데모 전용** 엔드포인트입니다. **가짜 상태 주입이 아닙니다.** backend 스케줄러가 부르는 것과 동일한 실제 `CloseBidCommand` dispatch 합니다 개찰이 실제로 수행되고, `status=\'B\'` 커밋 직전 투찰가 동기 복호화가 실제로 일어납니다(복호화 실패 마감이 중단됩니다). 엔드포인트는 데모인 동시에 살아있는 e2e 스모크입니다. **데모 공고 전용:** backend 공고 명의 == 데모 발주처인 공고에 한해서만 마감합니다. 실 발주처 공고는 절대 마감하지 않습니다. **마감 불가:** 이미 마감됐거나 마감 불가 상태면 409(`type: …/upstream-conflict`)를 반환합니다. **필수 스코프:** `bids:write`
1607
- * @summary 샌드박스 공고 마감 (영업 데모 전용)
1608
- * @param {string} bidId 샌드박스 공고 ID(&#x3D; backend bidId).
2573
+ * 저장을 마친 물품을 전송완료로 표시해 다음 조회에서 제외합니다. **되돌릴 없습니다.** 표시한 물품은 `GET /v2/products` 다시 내려오지 않으므로, 자기 시스템에 저장이 끝난 뒤에 호출하세요. **표시 범위는 기관 그룹으로 잠깁니다.** 다른 기관의 물품 코드를 섞어 보내면 건은 표시되지 않고 `acknowledged`요청 수보다 작게 돌아옵니다. **필수 스코프:** `products:write` **멱등성:** `Idempotency-Key` 헤더 필수.
2574
+ * @summary 물품 수신확인
2575
+ * @param {string} idempotencyKey 멱등성 (1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
2576
+ * @param {AcknowledgeProductsRequestDto} acknowledgeProductsRequestDto
2577
+ * @param {*} [options] Override http request option.
2578
+ * @throws {RequiredError}
2579
+ */
2580
+ acknowledgeProductReceipt(idempotencyKey: string, acknowledgeProductsRequestDto: AcknowledgeProductsRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<AcknowledgeProductReceipt200Response> {
2581
+ return localVarFp.acknowledgeProductReceipt(idempotencyKey, acknowledgeProductsRequestDto, options).then((request) => request(axios, basePath));
2582
+ },
2583
+ /**
2584
+ * 진행중인 공고를 취소합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. **되돌릴 수 없습니다.** 취소 사유는 필수이며 공고 이력에 남습니다. **전제조건:** 진행중(ONGOING) 상태여야 합니다. **거부:** 진행중이 아니거나 이미 취소된 공고 → 409. 타 발주처 공고 → 403. **마감과의 차이:** 취소는 공고를 무효로 되돌리는 것이고, 유찰(`POST /v2/bids/{bidId}/fail`)은 응찰을 받았으나 낙찰자를 정하지 못한 종료입니다.
2585
+ * @summary 공고 취소
2586
+ * @param {string} bidId 공고 식별자(등록 응답의 bidId).
2587
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
2588
+ * @param {CancelBidRequestDto} cancelBidRequestDto
1609
2589
  * @param {*} [options] Override http request option.
1610
2590
  * @throws {RequiredError}
1611
2591
  */
1612
- closeSandboxBid(bidId: string, options?: RawAxiosRequestConfig): AxiosPromise<CloseSandboxBidResponseDto> {
1613
- return localVarFp.closeSandboxBid(bidId, options).then((request) => request(axios, basePath));
2592
+ cancelBid(bidId: string, idempotencyKey: string, cancelBidRequestDto: CancelBidRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<CancelBid200Response> {
2593
+ return localVarFp.cancelBid(bidId, idempotencyKey, cancelBidRequestDto, options).then((request) => request(axios, basePath));
1614
2594
  },
1615
2595
  /**
1616
2596
  * 낙찰 공고의 검수(납품 검수)가 완료되었음을 기록합니다. **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` 헤더 필수.
@@ -1621,7 +2601,7 @@ export const PartnerV2ApiFactory = function (configuration?: Configuration, base
1621
2601
  * @param {*} [options] Override http request option.
1622
2602
  * @throws {RequiredError}
1623
2603
  */
1624
- completeAcceptance(bidId: string, idempotencyKey: string, completeAcceptanceRequestDto: CompleteAcceptanceRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<AcceptanceResultResponseDto> {
2604
+ completeAcceptance(bidId: string, idempotencyKey: string, completeAcceptanceRequestDto: CompleteAcceptanceRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<CompleteAcceptance200Response> {
1625
2605
  return localVarFp.completeAcceptance(bidId, idempotencyKey, completeAcceptanceRequestDto, options).then((request) => request(axios, basePath));
1626
2606
  },
1627
2607
  /**
@@ -1632,32 +2612,33 @@ export const PartnerV2ApiFactory = function (configuration?: Configuration, base
1632
2612
  * @param {*} [options] Override http request option.
1633
2613
  * @throws {RequiredError}
1634
2614
  */
1635
- completeInvoice(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): AxiosPromise<InvoiceCompletedResponseDto> {
2615
+ completeInvoice(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): AxiosPromise<CompleteInvoice200Response> {
1636
2616
  return localVarFp.completeInvoice(bidId, idempotencyKey, options).then((request) => request(axios, basePath));
1637
2617
  },
1638
2618
  /**
1639
- * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인(APPROVED)되어 바로 결제 가능합니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. 거기서 카드를 골라 결제합니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/card-payment-requests/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
2619
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인되어 바로 결제할 수 있습니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 도메인 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
1640
2620
  * @summary 결제창 발행
1641
2621
  * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
1642
2622
  * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
1643
2623
  * @param {*} [options] Override http request option.
1644
2624
  * @throws {RequiredError}
1645
2625
  */
1646
- createCardPaymentRequest(idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<CardPaymentRequestResponseDto> {
1647
- return localVarFp.createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options).then((request) => request(axios, basePath));
2626
+ createCardPayment(idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<CreateCardPayment200Response> {
2627
+ return localVarFp.createCardPayment(idempotencyKey, createCardPaymentRequestDto, options).then((request) => request(axios, basePath));
1648
2628
  },
1649
2629
  /**
1650
- * 스코프 `embed:launch` 필수. 발주기관 담당자(memberId) 일회성 launch code(60초 TTL) 발급한다. code URL 싣지 말고 @cmarket/embed SDK postMessage 핸드셰이크로만 iframe 전달할 것. memberId API 키의 발주처 소속이 아니면 403, 미허용 screen 400.
1651
- * @summary 임베드 launch code 발급 (iframe SSO)
1652
- * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
2630
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 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` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
2631
+ * @summary 결제창 발행
2632
+ * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
2633
+ * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
1653
2634
  * @param {*} [options] Override http request option.
1654
2635
  * @throws {RequiredError}
1655
2636
  */
1656
- createEmbedLaunch(embedLaunchRequestDto: EmbedLaunchRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<EmbedLaunchResponseDto> {
1657
- return localVarFp.createEmbedLaunch(embedLaunchRequestDto, options).then((request) => request(axios, basePath));
2637
+ createCardPaymentRequest(idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<CardPaymentRequestResponseDto> {
2638
+ return localVarFp.createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options).then((request) => request(axios, basePath));
1658
2639
  },
1659
2640
  /**
1660
- * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `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` 헤더 필수.
2641
+ * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `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 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
1661
2642
  * @summary 계약서류 생성
1662
2643
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1663
2644
  * @param {CreateExternalContractDocumentsRequestDto} createExternalContractDocumentsRequestDto
@@ -1668,7 +2649,31 @@ export const PartnerV2ApiFactory = function (configuration?: Configuration, base
1668
2649
  return localVarFp.createExternalContractDocuments(idempotencyKey, createExternalContractDocumentsRequestDto, options).then((request) => request(axios, basePath));
1669
2650
  },
1670
2651
  /**
1671
- * 무인증 — `fileKey` 자체가 capability 다(V5 `/download/{fileKey}` 같은 보안 모델). 파트너 응답의 `fileUrl`/`fullUrl` URL 가리킨다. 요청 시점에 서명하므로 URL저장해 두어도 만료되지 않는다. 응답은 실제 저장소 URL 로의 302 리다이렉트이며 리다이렉트 타깃은 1시간 만료되므로 302 자체를 캐시하지 것(`Cache-Control: no-store`).
2652
+ * 수신 주소와 구독할 이벤트를 등록합니다. **호출 시점:** 연동 초기 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
2653
+ * @summary 웹훅 구독 등록
2654
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
2655
+ * @param {CreateWebhookEndpointRequestDto} createWebhookEndpointRequestDto
2656
+ * @param {*} [options] Override http request option.
2657
+ * @throws {RequiredError}
2658
+ */
2659
+ createWebhookEndpoint(idempotencyKey: string, createWebhookEndpointRequestDto: CreateWebhookEndpointRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<CreateWebhookEndpoint201Response> {
2660
+ return localVarFp.createWebhookEndpoint(idempotencyKey, createWebhookEndpointRequestDto, options).then((request) => request(axios, basePath));
2661
+ },
2662
+ /**
2663
+ * 구독을 삭제합니다. 이후 그 주소로는 아무 이벤트도 발송되지 않습니다. **호출 시점:** 연동을 종료할 때. 잠시만 멈추려면 삭제하지 말고 `PATCH … {\"status\":\"DISABLED\"}` 를 쓰세요 — 시크릿과 이벤트 구성이 남아 그대로 되살릴 수 있습니다. **되돌릴 수 없습니다.** 다시 등록하면 새 구독이고 서명 시크릿도 새 값입니다. **`If-Match` 가 필수입니다.** `GET` 으로 받은 `ETag` 를 실어 보내세요. - `428` — 헤더 누락. 조회 후 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다(누군가 수정했거나 발송기가 상태를 내렸습니다). 다시 조회해 정말 지울 대상이 맞는지 확인하고 최신 `ETag` 로 재시도하세요. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
2664
+ * @summary 웹훅 구독 삭제
2665
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
2666
+ * @param {string} ifMatch
2667
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
2668
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
2669
+ * @param {*} [options] Override http request option.
2670
+ * @throws {RequiredError}
2671
+ */
2672
+ deleteWebhookEndpoint(endpointId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, options?: RawAxiosRequestConfig): AxiosPromise<void> {
2673
+ return localVarFp.deleteWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, options).then((request) => request(axios, basePath));
2674
+ },
2675
+ /**
2676
+ * 무인증 — `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` 이 가리키는 주소라 계속 유지되며 중단 일정은 없습니다.
1672
2677
  * @summary 파일 다운로드 — 안정 URL(302)
1673
2678
  * @param {string} fileKey 파일 키 — UUIDv4 hex 32자. 업로드(&#x60;POST /v1|/v2/files&#x60;) 응답에서 받은 값.
1674
2679
  * @param {*} [options] Override http request option.
@@ -1684,9 +2689,19 @@ export const PartnerV2ApiFactory = function (configuration?: Configuration, base
1684
2689
  * @param {*} [options] Override http request option.
1685
2690
  * @throws {RequiredError}
1686
2691
  */
1687
- getBid(bidId: string, options?: RawAxiosRequestConfig): AxiosPromise<BidDetailResponseDto> {
2692
+ getBid(bidId: string, options?: RawAxiosRequestConfig): AxiosPromise<GetBid200Response> {
1688
2693
  return localVarFp.getBid(bidId, options).then((request) => request(axios, basePath));
1689
2694
  },
2695
+ /**
2696
+ * 공고의 납품·검수·계약완료 진행 상태를 조회합니다. 검수완료 전송의 읽기 카운터파트입니다. **세 축은 서로 다른 사건입니다.** - `delivered`: 낙찰 공급사가 납품(결과확인)을 보고했습니다. - `confirmed`/`confirmedAt`: 발주기관이 검수를 확인했습니다. - `contractCompletedAt`: 검수완료 전송이 원장에 반영된 시각입니다. 검수완료 전송(`POST /v2/bids/{bidId}/acceptance`)이 성사되었는지는 `contractCompletedAt` 이 채워졌는지로 확인하세요. **필수 스코프:** `contracts:read`
2697
+ * @summary 검수 현황 조회
2698
+ * @param {string} bidId 공고 ID(&#x3D; backend bidId &#x3D; 등록 응답의 bidNo).
2699
+ * @param {*} [options] Override http request option.
2700
+ * @throws {RequiredError}
2701
+ */
2702
+ getBidAcceptance(bidId: string, options?: RawAxiosRequestConfig): AxiosPromise<GetBidAcceptance200Response> {
2703
+ return localVarFp.getBidAcceptance(bidId, options).then((request) => request(axios, basePath));
2704
+ },
1690
2705
  /**
1691
2706
  * 공고의 응찰 참여 업체·순위·낙찰 여부를 조회한다. scope bids:read.
1692
2707
  * @summary 입찰 결과 조회
@@ -1694,30 +2709,40 @@ export const PartnerV2ApiFactory = function (configuration?: Configuration, base
1694
2709
  * @param {*} [options] Override http request option.
1695
2710
  * @throws {RequiredError}
1696
2711
  */
1697
- getBidResults(bidId: string, options?: RawAxiosRequestConfig): AxiosPromise<BidResultsResponseDto> {
2712
+ getBidResults(bidId: string, options?: RawAxiosRequestConfig): AxiosPromise<GetBidResults200Response> {
1698
2713
  return localVarFp.getBidResults(bidId, options).then((request) => request(axios, basePath));
1699
2714
  },
1700
2715
  /**
1701
- * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회한다. scope bids:read. 가시성 마스킹과 직교한 정산 데이터 — read-only.
2716
+ * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 가시성 마스킹과는 직교한 정산 데이터이며 읽기 전용입니다. **필수 스코프:** `invoices:read` 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
1702
2717
  * @summary 입찰결과 정산정보 조회
1703
2718
  * @param {string} bidId
1704
2719
  * @param {*} [options] Override http request option.
1705
2720
  * @throws {RequiredError}
1706
2721
  */
1707
- getBidSettlement(bidId: string, options?: RawAxiosRequestConfig): AxiosPromise<BidSettlementResponseDto> {
2722
+ getBidSettlement(bidId: string, options?: RawAxiosRequestConfig): AxiosPromise<GetBidSettlement200Response> {
1708
2723
  return localVarFp.getBidSettlement(bidId, options).then((request) => request(axios, basePath));
1709
2724
  },
1710
2725
  /**
1711
- * 낙찰 계약의 거래명세서(문서·품목 라인)를 조회한다. scope contracts:read.
2726
+ * 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
1712
2727
  * @summary 거래명세서 조회
1713
2728
  * @param {string} bidId
1714
2729
  * @param {number} [paperCode]
1715
2730
  * @param {*} [options] Override http request option.
1716
2731
  * @throws {RequiredError}
1717
2732
  */
1718
- getBidStatement(bidId: string, paperCode?: number, options?: RawAxiosRequestConfig): AxiosPromise<BidStatementResponseDto> {
2733
+ getBidStatement(bidId: string, paperCode?: number, options?: RawAxiosRequestConfig): AxiosPromise<GetBidStatement200Response> {
1719
2734
  return localVarFp.getBidStatement(bidId, paperCode, options).then((request) => request(axios, basePath));
1720
2735
  },
2736
+ /**
2737
+ * 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **구 경로:** 버전 없는 `GET /files/{fileKey}` 는 만료 없는 안정 주소이고 파트너 응답의 `fileUrl`/`fullUrl` 이 그 값을 가리킵니다. 인증도 스코프도 없는 옛 표면이라 신규 연동은 이 엔드포인트를 쓰세요. 구 경로는 당분간 유지됩니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** 하이픈 없는 16진수 32자가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. **필수 스코프:** `files:read`
2738
+ * @summary 파일 조회(메타 + 내려받기 주소)
2739
+ * @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(하이픈 없는 16진수 32자).
2740
+ * @param {*} [options] Override http request option.
2741
+ * @throws {RequiredError}
2742
+ */
2743
+ getFileMeta(fileKey: string, options?: RawAxiosRequestConfig): AxiosPromise<GetFileMeta200Response> {
2744
+ return localVarFp.getFileMeta(fileKey, options).then((request) => request(axios, basePath));
2745
+ },
1721
2746
  /**
1722
2747
  * 등록한 계약의 계산서 발행 상태를 확인합니다. **언제 쓰나:** 씨마켓이 보내는 발행완료 통지를 놓쳤을 때의 **복구 경로**입니다. 평상시에는 통지를 받아 처리하고, 상태가 어긋난 것 같을 때 이 API 로 되읽으세요. **필수 스코프:** `contracts:read`
1723
2748
  * @summary 계산서 발행 상태 조회
@@ -1729,7 +2754,7 @@ export const PartnerV2ApiFactory = function (configuration?: Configuration, base
1729
2754
  return localVarFp.getSemoContractTaxinvoiceStatus(externalContractId, options).then((request) => request(axios, basePath));
1730
2755
  },
1731
2756
  /**
1732
- * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write`
2757
+ * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
1733
2758
  * @summary 공급사 카드결제 가능 여부
1734
2759
  * @param {string} memberId 계약업체 회원 ID
1735
2760
  * @param {*} [options] Override http request option.
@@ -1738,26 +2763,64 @@ export const PartnerV2ApiFactory = function (configuration?: Configuration, base
1738
2763
  getSupplierCardPayable(memberId: string, options?: RawAxiosRequestConfig): AxiosPromise<SupplierCardPayableResponseDto> {
1739
2764
  return localVarFp.getSupplierCardPayable(memberId, options).then((request) => request(axios, basePath));
1740
2765
  },
2766
+ /**
2767
+ * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
2768
+ * @summary 공급사 카드결제 가능 여부
2769
+ * @param {string} memberId 계약업체 회원 ID
2770
+ * @param {*} [options] Override http request option.
2771
+ * @throws {RequiredError}
2772
+ */
2773
+ getSupplierCardPayableV2(memberId: string, options?: RawAxiosRequestConfig): AxiosPromise<GetSupplierCardPayableV2200Response> {
2774
+ return localVarFp.getSupplierCardPayableV2(memberId, options).then((request) => request(axios, basePath));
2775
+ },
2776
+ /**
2777
+ * 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
2778
+ * @summary 웹훅 구독 단건 조회
2779
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
2780
+ * @param {*} [options] Override http request option.
2781
+ * @throws {RequiredError}
2782
+ */
2783
+ getWebhookEndpoint(endpointId: string, options?: RawAxiosRequestConfig): AxiosPromise<GetWebhookEndpoint200Response> {
2784
+ return localVarFp.getWebhookEndpoint(endpointId, options).then((request) => request(axios, basePath));
2785
+ },
1741
2786
  /**
1742
2787
  * ERP 연동 직전 회선·인증 endpoint 동작 확인용.
1743
2788
  * @summary Partner API 헬스체크
1744
2789
  * @param {*} [options] Override http request option.
1745
2790
  * @throws {RequiredError}
1746
2791
  */
1747
- healthControllerCheck(options?: RawAxiosRequestConfig): AxiosPromise<HealthResponseDto> {
2792
+ healthControllerCheck(options?: RawAxiosRequestConfig): AxiosPromise<HealthControllerCheck200Response> {
1748
2793
  return localVarFp.healthControllerCheck(options).then((request) => request(axios, basePath));
1749
2794
  },
1750
2795
  /**
1751
- * 낙찰 공급사가 확정된 공고에 대해 세금계산서를 발행합니다. **호출 시점:** 낙찰자 선정(계약진행) 이후. 과세/면세를 자동 분리해 발행합니다. **부수효과:** - 세금계산서가 국세청에 발행되고 공고가 발행 완료로 마킹됩니다. - 이미 발행됐거나 분할 청구가 진행 중이면 409 거절됩니다. **소유권:** 발행 대상 공고가 API 키에 바인딩된 발주처 소유가 아니면 403. **분할 청구:** 세금계산서 **분할 발급**은 `/v2` 제공되지 않습니다 `/v1` 전용(`POST /v1/invoices/split-requests`)입니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 + 동일 body 재전송 24시간 캐시 응답 반환.
1752
- * @summary 세금계산서 발행
2796
+ * 공고의 계약서류 목록과 내려받기 주소를 조회합니다. **목록에 실리는 것:** 공고 전체에 공통인 서류(약관·자동생성 공통본) 낙찰자에게 귀속된 서류를 함께 싣습니다. 낙찰자 귀속 서류는 `winnerSequence` 낙찰자의 응찰 순번이 들어갑니다. **아직 없는 서류도 실립니다.** 공고가 제출을 요구했지만 아직 올라오지 않은 서류는 `fileKey: null` 나타나므로, 제출 여부는 값으로 판정하세요. **자동생성 서류:** `autoGenerated: true` 서류는 c-market 만들어 줍니다. 만드는 중이면 `generationState` `QUEUED`/`PROCESSING` 이고 `downloadUrl` 아직 없습니다. `DEAD_LETTER` 는 생성이 실패해 멈춘 상태이며, 같은 경로의 POST(재생성)로 다시 큐에 올립니다. **내려받기:** `downloadUrl` 유효기간 1시간의 서명 주소입니다. 저장해 두고 재사용하지 마시고 필요할 엔드포인트를 다시 호출하세요. 기간에 얽매이지 않으려면 `fileKey` 를 보관하시고 파일 내려받기 경로를 사용하세요. **보이는 범위:** 서버가 공고 낙찰방법과 진행 단계로 결정합니다. 응답을 그대로 사용하시고 클라이언트에서 다시 거르지 마세요. **필수 스코프:** `contracts:read`
2797
+ * @summary 계약서류 목록 조회
2798
+ * @param {string} bidId 공고번호(buy_idx, 예 CM…) 또는 외부 구매번호(bid_puchase_no).
2799
+ * @param {*} [options] Override http request option.
2800
+ * @throws {RequiredError}
2801
+ */
2802
+ listBidContractDocuments(bidId: string, options?: RawAxiosRequestConfig): AxiosPromise<ListBidContractDocuments200Response> {
2803
+ return localVarFp.listBidContractDocuments(bidId, options).then((request) => request(axios, basePath));
2804
+ },
2805
+ /**
2806
+ * 공고에 응찰한 업체 목록을 조회합니다. 스코프 `bids:read` 필수. **보이는 범위는 공고의 낙찰방법과 진행 단계가 결정합니다.** 개찰 전에는 업체명이 가려지고 (`companyName: null`), 순위는 산정 전까지 `null` 입니다. 이 판정은 서버가 소유하므로 응답을 그대로 사용하시고 클라이언트에서 다시 계산하지 마세요. 같은 목록이 `GET /v2/bids/{bidId}` 응답의 `participants` 에도 실립니다 — 응찰 현황만 필요하면 이 엔드포인트가 가볍습니다.
2807
+ * @summary 응찰 현황 조회
1753
2808
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
1754
- * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1755
- * @param {IssueTaxInvoiceRequestDto} issueTaxInvoiceRequestDto
1756
2809
  * @param {*} [options] Override http request option.
1757
2810
  * @throws {RequiredError}
1758
2811
  */
1759
- issueTaxInvoice(bidId: string, idempotencyKey: string, issueTaxInvoiceRequestDto: IssueTaxInvoiceRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<TaxInvoiceIssuedResponseDto> {
1760
- return localVarFp.issueTaxInvoice(bidId, idempotencyKey, issueTaxInvoiceRequestDto, options).then((request) => request(axios, basePath));
2812
+ listBidParticipants(bidId: string, options?: RawAxiosRequestConfig): AxiosPromise<ListBidParticipants200Response> {
2813
+ return localVarFp.listBidParticipants(bidId, options).then((request) => request(axios, basePath));
2814
+ },
2815
+ /**
2816
+ * 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에는 `ETag` 가 실리므로, 다음 요청에 `If-None-Match` 로 되보내면 결과가 그대로일 때 `304` 를 본문 없이 받습니다 — 마감을 기다리는 동안의 전송량이 사라집니다. **식별자 전달:** `?bidIds=A,B,C`(쉼표) 또는 `?bidIds=A&bidIds=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다 — 요청한 건수와 받은 건수가 다를 수 있으니 `bidId` 로 대조하세요. **목록이 길어 URL 이 부담되면** `POST /v2/bid-results/query` 를 쓰세요. 응답은 같습니다.
2817
+ * @summary 입찰 결과 배치 조회
2818
+ * @param {string} bidIds 조회할 공고 식별자 목록. 쉼표로 구분하거나 &#x60;bidIds&#x60; 를 반복해 전달합니다. 최대 100건.
2819
+ * @param {*} [options] Override http request option.
2820
+ * @throws {RequiredError}
2821
+ */
2822
+ listBidResults(bidIds: string, options?: RawAxiosRequestConfig): AxiosPromise<ListBidResults200Response> {
2823
+ return localVarFp.listBidResults(bidIds, options).then((request) => request(axios, basePath));
1761
2824
  },
1762
2825
  /**
1763
2826
  * 발주처(API 키 바인딩)의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(쿼리에 buyerId 를 넣지 않습니다). **페이지네이션(cursor):** `limit`(1~100, 기본 100) + `cursor`(불투명 토큰). 응답의 `nextCursor` 를 다음 요청 `cursor` 로 전달하면 다음 페이지를 받습니다. `nextCursor=null` 이면 마지막 페이지입니다. **상태·낙찰방법:** 공개값(의미 문자열)으로 반환됩니다. 낙찰 여부는 상태가 아니라 낙찰 결과 조회의 `participants[].isWinner` 로 관측합니다(AWARDED 상태는 없습니다).
@@ -1770,11 +2833,11 @@ export const PartnerV2ApiFactory = function (configuration?: Configuration, base
1770
2833
  * @param {*} [options] Override http request option.
1771
2834
  * @throws {RequiredError}
1772
2835
  */
1773
- listBids(limit?: number, cursor?: string, bidIds?: Array<string>, status?: Array<BidPublicStatus>, include?: Array<ListBidsIncludeEnum>, options?: RawAxiosRequestConfig): AxiosPromise<ListBidsResponseDto> {
2836
+ listBids(limit?: number, cursor?: string, bidIds?: Array<string>, status?: Array<BidPublicStatus>, include?: Array<ListBidsIncludeEnum>, options?: RawAxiosRequestConfig): AxiosPromise<ListBids200Response> {
1774
2837
  return localVarFp.listBids(limit, cursor, bidIds, status, include, options).then((request) => request(axios, basePath));
1775
2838
  },
1776
2839
  /**
1777
- * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read`
2840
+ * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `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 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
1778
2841
  * @summary 거래에 필요한 계약서류 목록 조회
1779
2842
  * @param {string} buyerId 발주기관 회원 ID(c-market memberId).
1780
2843
  * @param {ListExternalContractDocumentsBidTypeEnum} bidType 거래유형.
@@ -1784,6 +2847,37 @@ export const PartnerV2ApiFactory = function (configuration?: Configuration, base
1784
2847
  listExternalContractDocuments(buyerId: string, bidType: ListExternalContractDocumentsBidTypeEnum, options?: RawAxiosRequestConfig): AxiosPromise<ExternalContractDocumentsResponseDto> {
1785
2848
  return localVarFp.listExternalContractDocuments(buyerId, bidType, options).then((request) => request(axios, basePath));
1786
2849
  },
2850
+ /**
2851
+ * 기관에 공유된 물품 중 **아직 전송되지 않은 것**을 조회합니다. **증분 피드입니다.** 가져간 물품을 `POST /v2/products/receipts` 로 수신확인하면 다음 조회 결과에서 빠집니다. 수신확인을 하지 않으면 같은 물품이 계속 내려옵니다. **권장 흐름:** 조회 → 자기 시스템에 저장 → 저장에 성공한 물품 코드만 수신확인. 저장 전에 수신확인하면 그 물품은 다시 받을 수 없습니다. **조회 범위:** 요청 키가 대행하는 기관 그룹입니다. 기관 그룹이 설정되지 않은 키는 403 입니다. **필수 스코프:** `products:read`
2852
+ * @summary 물품 카탈로그 조회
2853
+ * @param {*} [options] Override http request option.
2854
+ * @throws {RequiredError}
2855
+ */
2856
+ listProducts(options?: RawAxiosRequestConfig): AxiosPromise<ListProducts200Response> {
2857
+ return localVarFp.listProducts(options).then((request) => request(axios, basePath));
2858
+ },
2859
+ /**
2860
+ * 이 API 키의 웹훅 발송 시도를 최신순으로 조회합니다. 보낸 본문·수신측 응답 상태· 다음 재시도 예정 시각이 함께 실립니다. **호출 시점:** - 수신측 장애로 놓친 이벤트를 메울 때. 이 엔드포인트가 웹훅의 **폴링 대체 경로**입니다 — `status=EXHAUSTED` 로 걸러 다시 처리하면 됩니다. - \"이벤트가 안 온다\" 를 진단할 때. 발송 시도 자체가 없는지(구독·이벤트 타입 문제), 시도했지만 실패했는지(`responseStatus`·`responseBodyExcerpt`)를 여기서 가릅니다. **같은 이벤트가 여러 행으로 보입니다.** 재시도마다 한 행이며 `eventId` 가 같고 `attempt` 만 올라갑니다. 처리 여부는 `eventId` 기준으로 판단하세요. **페이지네이션:** `nextCursor` 를 다음 요청의 `cursor` 로 전달합니다. null 이면 마지막 페이지입니다. **`400`:** `status` 가 허용 값 밖이거나 `limit` 이 범위를 벗어났습니다 — 값을 고쳐 재시도하세요. **필수 스코프:** `webhooks:read`
2861
+ * @summary 웹훅 전송 이력 조회
2862
+ * @param {string} [endpointId] 이 구독의 전송만 조회합니다. 미지정이면 이 키의 모든 구독을 함께 조회합니다.
2863
+ * @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
2864
+ * @param {number} [limit] 페이지 크기(1~200, 기본 50).
2865
+ * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달합니다. 미지정 시 첫 페이지.
2866
+ * @param {*} [options] Override http request option.
2867
+ * @throws {RequiredError}
2868
+ */
2869
+ listWebhookDeliveries(endpointId?: string, status?: PartnerWebhookDeliveryStatus, limit?: number, cursor?: string, options?: RawAxiosRequestConfig): AxiosPromise<ListWebhookDeliveries200Response> {
2870
+ return localVarFp.listWebhookDeliveries(endpointId, status, limit, cursor, options).then((request) => request(axios, basePath));
2871
+ },
2872
+ /**
2873
+ * 이 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
2874
+ * @summary 웹훅 구독 목록 조회
2875
+ * @param {*} [options] Override http request option.
2876
+ * @throws {RequiredError}
2877
+ */
2878
+ listWebhookEndpoints(options?: RawAxiosRequestConfig): AxiosPromise<ListWebhookEndpoints200Response> {
2879
+ return localVarFp.listWebhookEndpoints(options).then((request) => request(axios, basePath));
2880
+ },
1787
2881
  /**
1788
2882
  * 공고를 유찰 상태로 전환합니다. **호출 시점:** 입찰 마감 후 유찰 사유가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 공고 상태가 유찰(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` 헤더 필수.
1789
2883
  * @summary 유찰 처리
@@ -1793,7 +2887,7 @@ export const PartnerV2ApiFactory = function (configuration?: Configuration, base
1793
2887
  * @param {*} [options] Override http request option.
1794
2888
  * @throws {RequiredError}
1795
2889
  */
1796
- markBidFailed(bidId: string, idempotencyKey: string, markBidFailedRequestDto: MarkBidFailedRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<BidFailedV2ResponseDto> {
2890
+ markBidFailed(bidId: string, idempotencyKey: string, markBidFailedRequestDto: MarkBidFailedRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<MarkBidFailed201Response> {
1797
2891
  return localVarFp.markBidFailed(bidId, idempotencyKey, markBidFailedRequestDto, options).then((request) => request(axios, basePath));
1798
2892
  },
1799
2893
  /**
@@ -1804,9 +2898,19 @@ export const PartnerV2ApiFactory = function (configuration?: Configuration, base
1804
2898
  * @param {*} [options] Override http request option.
1805
2899
  * @throws {RequiredError}
1806
2900
  */
1807
- publishBid(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): AxiosPromise<BidPublishedResponseDto> {
2901
+ publishBid(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): AxiosPromise<PublishBid200Response> {
1808
2902
  return localVarFp.publishBid(bidId, idempotencyKey, options).then((request) => request(axios, basePath));
1809
2903
  },
2904
+ /**
2905
+ * `GET /v2/bid-results` 와 **완전히 같은 조회**이며, 식별자 목록을 본문으로 받습니다. 스코프 `bids:read`. 공고 식별자 100건이면 URL 이 1KB를 넘습니다 — 중간 프록시가 긴 URL 을 자르는 환경을 위한 대체 경로입니다. **부수효과가 없으므로 `Idempotency-Key` 는 필요하지 않습니다.** POST 인 것은 전송 형태의 문제일 뿐이며, 가능하면 캐시·`ETag` 가 동작하는 `GET` 쪽을 쓰세요.
2906
+ * @summary 입찰 결과 배치 조회 (본문 전달)
2907
+ * @param {BidResultsBatchRequestDto} bidResultsBatchRequestDto
2908
+ * @param {*} [options] Override http request option.
2909
+ * @throws {RequiredError}
2910
+ */
2911
+ queryBidResults(bidResultsBatchRequestDto: BidResultsBatchRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<ListBidResults200Response> {
2912
+ return localVarFp.queryBidResults(bidResultsBatchRequestDto, options).then((request) => request(axios, basePath));
2913
+ },
1810
2914
  /**
1811
2915
  * 공고의 자동생성 계약서류(발주서·공고결과·표준계약서 등)를 생성/재생성합니다. **V6 대응:** `RegenerateAllContractPdfsCommand` — 웹 어드민의 \"계약 서류 일괄 재생성\"과 동일 경로. **호출 시점:** 낙찰(계약 시작) 후 계약서류가 필요하거나, 생성에 실패한 서류를 다시 만들 때. **부수효과:** - 생성 실패(DEAD_LETTER) 상태의 자동생성 PDF 가 재생성 큐에 등록됩니다(비동기). - 승낙사항(ACCEPTANCE) 계열은 운영자 승인 워크플로가 필요해 이 경로에서 제외됩니다. **응답:** 즉시 파일이 아니라 큐 등록 결과(`enqueuedCount`/`skippedCount`)를 반환합니다. 잠시 후 자동 생성됩니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
1812
2916
  * @summary 계약서류 생성(재생성)
@@ -1815,7 +2919,7 @@ export const PartnerV2ApiFactory = function (configuration?: Configuration, base
1815
2919
  * @param {*} [options] Override http request option.
1816
2920
  * @throws {RequiredError}
1817
2921
  */
1818
- regenerateContractDocuments(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): AxiosPromise<ContractDocumentsRegeneratedResponseDto> {
2922
+ regenerateContractDocuments(bidId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): AxiosPromise<RegenerateContractDocuments201Response> {
1819
2923
  return localVarFp.regenerateContractDocuments(bidId, idempotencyKey, options).then((request) => request(axios, basePath));
1820
2924
  },
1821
2925
  /**
@@ -1827,18 +2931,19 @@ export const PartnerV2ApiFactory = function (configuration?: Configuration, base
1827
2931
  * @param {*} [options] Override http request option.
1828
2932
  * @throws {RequiredError}
1829
2933
  */
1830
- registerAward(bidId: string, idempotencyKey: string, registerAwardRequestDto: RegisterAwardRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<AwardRegisteredV2ResponseDto> {
2934
+ registerAward(bidId: string, idempotencyKey: string, registerAwardRequestDto: RegisterAwardRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<RegisterAward201Response> {
1831
2935
  return localVarFp.registerAward(bidId, idempotencyKey, registerAwardRequestDto, options).then((request) => request(axios, basePath));
1832
2936
  },
1833
2937
  /**
1834
2938
  * 입찰 정보 등록. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수.
1835
2939
  * @summary 입찰 정보 전송(등록)
2940
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
1836
2941
  * @param {CreateBidRequestDto} createBidRequestDto
1837
2942
  * @param {*} [options] Override http request option.
1838
2943
  * @throws {RequiredError}
1839
2944
  */
1840
- registerBid(createBidRequestDto: CreateBidRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<BidRegisteredResponseDto> {
1841
- return localVarFp.registerBid(createBidRequestDto, options).then((request) => request(axios, basePath));
2945
+ registerBid(idempotencyKey: string, createBidRequestDto: CreateBidRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<RegisterBid201Response> {
2946
+ return localVarFp.registerBid(idempotencyKey, createBidRequestDto, options).then((request) => request(axios, basePath));
1842
2947
  },
1843
2948
  /**
1844
2949
  * 외부에서 맺어진 계약 1건을 씨마켓의 **세금계산서 발행 대상**으로 등록합니다. **등록 후 동선:** 발주기관이 씨마켓 [나의 계약 관리] 에서 계산서 발급을 요청하고, 공급기업이 같은 화면에서 발행합니다. 계산서의 **공급자는 공급기업, 공급받는자는 발주기관**입니다. **대금 흐름:** 씨마켓은 이 거래의 대금을 받지 않습니다 — 발행 경로만 제공합니다. **금액:** `supplyPrice` 는 **부가세를 뺀 과세 공급가액**입니다(결제창 API 가 부가세 포함가를 받는 것과 다릅니다). 과세·면세 공급가액이 모두 0 이면 400 입니다. **사전 조건:** 두 회원 ID 가 씨마켓에 실재해야 합니다. 회원 ID 가 곧 소유권이라, 없는 회원으로 등록하면 아무도 열 수 없는 계산서 대상이 됩니다. **필수 스코프:** `contracts:write`. 바인딩된 발주처 외의 발주기관을 대신하려면 대행 범위에 그 회원이 있어야 합니다. **멱등성:** `externalContractId` 가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 대상을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
@@ -1852,28 +2957,66 @@ export const PartnerV2ApiFactory = function (configuration?: Configuration, base
1852
2957
  return localVarFp.registerSemoContract(idempotencyKey, registerSemoContractRequestDto, options).then((request) => request(axios, basePath));
1853
2958
  },
1854
2959
  /**
1855
- * 협상방식(NEGOTIATION/NEGOTIATION_AUTO) 공고의 응찰자별 점수를 입력합니다. **호출 시점:** 입찰 마감 낙찰(`POST /v2/bids/{bidId}/award`) 전. 협상방식 공고는 평가를 완료해야 낙찰에 진입할 수 있습니다. **부수효과:** - 응찰자별 기술점수(및 선택적 가격점수 override)가 기록됩니다. - `complete=true` 평가완료 게이트까지 적용돼 낙찰 진입이 가능해집니다. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body buyerId 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 + 동일 body 재전송 24시간 캐시 응답 반환.
1856
- * @summary 협상 점수평가
2960
+ * 확정된 낙찰을 되돌려 공고를 낙찰대기(PENDING_AWARD) 상태로 보냅니다. 스코프 `awards:write` + `Idempotency-Key` 헤더 필수. **호출 시점:** 낙찰자가 계약을 포기했거나 낙찰 처리 자체가 잘못됐을 때. 되돌린 같은 공고에 다시 낙찰을 등록할 수 있습니다. **되돌릴 없는 경우 409:** - 수수료 결제가 이미 완료된 공고 - 세금계산서가 이미 발행된 공고 - 수입권공매 계열 낙찰방법(다수 낙찰자 구조라 되돌리기 단위가 다릅니다) **사유는 필수입니다** 감사 대상 행위이며 공고 이력에 남습니다. **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
2961
+ * @summary 낙찰 되돌리기
1857
2962
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
2963
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
2964
+ * @param {RevertAwardRequestDto} revertAwardRequestDto
2965
+ * @param {*} [options] Override http request option.
2966
+ * @throws {RequiredError}
2967
+ */
2968
+ revertAward(bidId: string, idempotencyKey: string, revertAwardRequestDto: RevertAwardRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<RevertAward200Response> {
2969
+ return localVarFp.revertAward(bidId, idempotencyKey, revertAwardRequestDto, options).then((request) => request(axios, basePath));
2970
+ },
2971
+ /**
2972
+ * 서명 시크릿을 새로 발급합니다. 응답의 `secretVersion` 이 1 올라갑니다. **호출 시점:** 시크릿을 분실했거나 유출이 의심될 때, 또는 주기적 교체 정책이 있을 때. **새 시크릿은 이 응답에서 한 번만 나갑니다.** 조회로 다시 받을 수 없습니다. **옛 시크릿은 즉시 무효입니다.** 유예 기간이 없으므로, 수신측이 새 값을 반영하기 전에 도착한 이벤트는 서명 검증에 실패합니다. 배포 순서를 이렇게 잡으세요 — ① 수신측이 옛 값과 새 값을 **둘 다** 받아들이도록 배포 → ② 이 엔드포인트 호출 → ③ 응답의 새 값을 반영 → ④ 옛 값 제거. 검증 실패로 non-2xx 를 돌려주면 실패로 집계되어 20회 연속 시 구독이 중지됩니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 같은 키로 재전송하면 **새로 발급하지 않고** 처음 발급한 값을 그대로 돌려줍니다(24시간) — 네트워크 오류로 응답을 놓쳤을 때 같은 키로 다시 부르세요.
2973
+ * @summary 웹훅 서명 시크릿 재발급
2974
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
2975
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
2976
+ * @param {*} [options] Override http request option.
2977
+ * @throws {RequiredError}
2978
+ */
2979
+ rotateWebhookSecret(endpointId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): AxiosPromise<CreateWebhookEndpoint201Response> {
2980
+ return localVarFp.rotateWebhookSecret(endpointId, idempotencyKey, options).then((request) => request(axios, basePath));
2981
+ },
2982
+ /**
2983
+ * 등록된 주소로 `ping` 이벤트를 즉시 1회 보내고 그 결과를 돌려줍니다. **호출 시점:** 구독을 등록한 직후, 수신 주소를 바꾼 직후, 방화벽·인증서를 손본 뒤. **응답은 발송 결과이지 요청 실패가 아닙니다.** 수신측이 받지 못해도 HTTP `200` 에 `delivered: false` 로 옵니다 — `responseStatus`(수신측 상태)와 `error`(연결 거부·타임아웃· TLS 오류)를 보고 원인을 좁히세요. 이 발송에도 실제 이벤트와 **똑같은 서명 헤더**가 실리므로 검증 코드를 그대로 시험할 수 있습니다. `ping` 은 구독 목록에 넣을 수 없는 타입이니, 수신측이 모르는 `eventType` 을 만나면 버리도록 짜여 있다면 이 확인만 실패할 수 있습니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 다시 보내려면 **새 키**를 쓰세요 — 같은 키는 24시간 동안 직전 결과를 그대로 돌려줍니다(재발송하지 않습니다).
2984
+ * @summary 웹훅 연결 확인 발송
2985
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
1858
2986
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1859
- * @param {SubmitNegotiationScoresRequestDto} submitNegotiationScoresRequestDto
1860
2987
  * @param {*} [options] Override http request option.
1861
2988
  * @throws {RequiredError}
1862
2989
  */
1863
- submitNegotiationScores(bidId: string, idempotencyKey: string, submitNegotiationScoresRequestDto: SubmitNegotiationScoresRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<NegotiationScoredV2ResponseDto> {
1864
- return localVarFp.submitNegotiationScores(bidId, idempotencyKey, submitNegotiationScoresRequestDto, options).then((request) => request(axios, basePath));
2990
+ sendWebhookTestEvent(endpointId: string, idempotencyKey: string, options?: RawAxiosRequestConfig): AxiosPromise<SendWebhookTestEvent200Response> {
2991
+ return localVarFp.sendWebhookTestEvent(endpointId, idempotencyKey, options).then((request) => request(axios, basePath));
1865
2992
  },
1866
2993
  /**
1867
2994
  * 등록된 공고의 내용을 수정합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. 진행중/초안 상태의 공고만 수정할 수 있습니다. **부수효과:** - 변경 내용이 반영되고 수정이력이 기록됩니다. - `hideEdit=true` 면 변경이력을 비공개 처리하고 노출 카운터 증가를 생략합니다. **수정 제약:** - 낙찰방법(awardMethod)은 수정 불가(잠금). - 참여자가 있으면 입찰방식/면허/예산/품목 일부가 잠깁니다. - 마감/취소된 공고는 수정할 수 없습니다. 한 섹션을 수정하려면 해당 섹션의 필수 필드를 함께 보내야 합니다(부분 섹션은 거부됨).
1868
2995
  * @summary 입찰 공고 수정
1869
2996
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
2997
+ * @param {string} ifMatch
2998
+ * @param {string} ifMatch2 수정하려는 공고의 ETag(필수). 직전 &#x60;GET /v2/bids/{bidId}&#x60; 응답의 &#x60;ETag&#x60; 헤더 값을 그대로 실어 보내세요. 누락하면 428, 그 사이 공고가 바뀌었으면 412 로 거절되며 아무것도 수정되지 않습니다.
1870
2999
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
1871
3000
  * @param {UpdateBidRequestDto} updateBidRequestDto
1872
3001
  * @param {*} [options] Override http request option.
1873
3002
  * @throws {RequiredError}
1874
3003
  */
1875
- updateBid(bidId: string, idempotencyKey: string, updateBidRequestDto: UpdateBidRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<BidUpdatedResponseDto> {
1876
- return localVarFp.updateBid(bidId, idempotencyKey, updateBidRequestDto, options).then((request) => request(axios, basePath));
3004
+ updateBid(bidId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, updateBidRequestDto: UpdateBidRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<UpdateBid200Response> {
3005
+ return localVarFp.updateBid(bidId, ifMatch, ifMatch2, idempotencyKey, updateBidRequestDto, options).then((request) => request(axios, basePath));
3006
+ },
3007
+ /**
3008
+ * 수신 주소·구독 이벤트·상태를 수정합니다. 보낸 필드만 바뀝니다. **호출 시점:** 수신 주소가 바뀌었을 때, 구독 이벤트를 늘리거나 줄일 때, 연속 실패로 자동 중지된 구독을 고친 뒤 되살릴 때(`{\"status\":\"ACTIVE\"}`). **`eventTypes` 는 치환입니다** — 보낸 목록이 곧 새 구독 목록입니다. 하나를 더하려면 기존 목록에 더한 **전체**를 보내세요. **`If-Match` 가 필수입니다.** 먼저 `GET /v2/webhook-endpoints/{endpointId}` 로 현재 `ETag` 를 받아 그대로 실어 보내세요. 이 헤더가 없으면 두 요청이 앞서거니 뒤서거니 하며 먼저 한 수정을 조용히 덮어씁니다. - `428` — 헤더를 빼먹었습니다. 조회 후 `ETag` 를 실어 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다. 다시 조회해 최신 `ETag` 로 재시도하세요. 아무것도 수정되지 않았습니다. **시크릿은 이 경로로 바뀌지 않습니다** — 재발급은 `rotate-secret` 입니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
3009
+ * @summary 웹훅 구독 수정
3010
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
3011
+ * @param {string} ifMatch
3012
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
3013
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
3014
+ * @param {UpdateWebhookEndpointRequestDto} updateWebhookEndpointRequestDto
3015
+ * @param {*} [options] Override http request option.
3016
+ * @throws {RequiredError}
3017
+ */
3018
+ updateWebhookEndpoint(endpointId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, updateWebhookEndpointRequestDto: UpdateWebhookEndpointRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<GetWebhookEndpoint200Response> {
3019
+ return localVarFp.updateWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, updateWebhookEndpointRequestDto, options).then((request) => request(axios, basePath));
1877
3020
  },
1878
3021
  /**
1879
3022
  * 스코프 `files:write` + `Idempotency-Key` 헤더 필수. base64 또는 url 중 정확히 하나를 제출한다.
@@ -1882,7 +3025,7 @@ export const PartnerV2ApiFactory = function (configuration?: Configuration, base
1882
3025
  * @param {*} [options] Override http request option.
1883
3026
  * @throws {RequiredError}
1884
3027
  */
1885
- uploadFile(uploadFileRequestDto: UploadFileRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<FileUploadedResponseDto> {
3028
+ uploadFile(uploadFileRequestDto: UploadFileRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<UploadFile201Response> {
1886
3029
  return localVarFp.uploadFile(uploadFileRequestDto, options).then((request) => request(axios, basePath));
1887
3030
  },
1888
3031
  };
@@ -1893,14 +3036,28 @@ export const PartnerV2ApiFactory = function (configuration?: Configuration, base
1893
3036
  */
1894
3037
  export class PartnerV2Api extends BaseAPI {
1895
3038
  /**
1896
- * 샌드박스 공고를 마감하는 **영업 데모 전용** 엔드포인트입니다. **가짜 상태 주입이 아닙니다.** backend 스케줄러가 부르는 것과 동일한 실제 `CloseBidCommand` dispatch 합니다 개찰이 실제로 수행되고, `status=\'B\'` 커밋 직전 투찰가 동기 복호화가 실제로 일어납니다(복호화 실패 마감이 중단됩니다). 엔드포인트는 데모인 동시에 살아있는 e2e 스모크입니다. **데모 공고 전용:** backend 공고 명의 == 데모 발주처인 공고에 한해서만 마감합니다. 실 발주처 공고는 절대 마감하지 않습니다. **마감 불가:** 이미 마감됐거나 마감 불가 상태면 409(`type: …/upstream-conflict`)를 반환합니다. **필수 스코프:** `bids:write`
1897
- * @summary 샌드박스 공고 마감 (영업 데모 전용)
1898
- * @param {string} bidId 샌드박스 공고 ID(&#x3D; backend bidId).
3039
+ * 저장을 마친 물품을 전송완료로 표시해 다음 조회에서 제외합니다. **되돌릴 없습니다.** 표시한 물품은 `GET /v2/products` 다시 내려오지 않으므로, 자기 시스템에 저장이 끝난 뒤에 호출하세요. **표시 범위는 기관 그룹으로 잠깁니다.** 다른 기관의 물품 코드를 섞어 보내면 건은 표시되지 않고 `acknowledged`요청 수보다 작게 돌아옵니다. **필수 스코프:** `products:write` **멱등성:** `Idempotency-Key` 헤더 필수.
3040
+ * @summary 물품 수신확인
3041
+ * @param {string} idempotencyKey 멱등성 (1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
3042
+ * @param {AcknowledgeProductsRequestDto} acknowledgeProductsRequestDto
3043
+ * @param {*} [options] Override http request option.
3044
+ * @throws {RequiredError}
3045
+ */
3046
+ public acknowledgeProductReceipt(idempotencyKey: string, acknowledgeProductsRequestDto: AcknowledgeProductsRequestDto, options?: RawAxiosRequestConfig) {
3047
+ return PartnerV2ApiFp(this.configuration).acknowledgeProductReceipt(idempotencyKey, acknowledgeProductsRequestDto, options).then((request) => request(this.axios, this.basePath));
3048
+ }
3049
+
3050
+ /**
3051
+ * 진행중인 공고를 취소합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. **되돌릴 수 없습니다.** 취소 사유는 필수이며 공고 이력에 남습니다. **전제조건:** 진행중(ONGOING) 상태여야 합니다. **거부:** 진행중이 아니거나 이미 취소된 공고 → 409. 타 발주처 공고 → 403. **마감과의 차이:** 취소는 공고를 무효로 되돌리는 것이고, 유찰(`POST /v2/bids/{bidId}/fail`)은 응찰을 받았으나 낙찰자를 정하지 못한 종료입니다.
3052
+ * @summary 공고 취소
3053
+ * @param {string} bidId 공고 식별자(등록 응답의 bidId).
3054
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
3055
+ * @param {CancelBidRequestDto} cancelBidRequestDto
1899
3056
  * @param {*} [options] Override http request option.
1900
3057
  * @throws {RequiredError}
1901
3058
  */
1902
- public closeSandboxBid(bidId: string, options?: RawAxiosRequestConfig) {
1903
- return PartnerV2ApiFp(this.configuration).closeSandboxBid(bidId, options).then((request) => request(this.axios, this.basePath));
3059
+ public cancelBid(bidId: string, idempotencyKey: string, cancelBidRequestDto: CancelBidRequestDto, options?: RawAxiosRequestConfig) {
3060
+ return PartnerV2ApiFp(this.configuration).cancelBid(bidId, idempotencyKey, cancelBidRequestDto, options).then((request) => request(this.axios, this.basePath));
1904
3061
  }
1905
3062
 
1906
3063
  /**
@@ -1929,30 +3086,31 @@ export class PartnerV2Api extends BaseAPI {
1929
3086
  }
1930
3087
 
1931
3088
  /**
1932
- * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인(APPROVED)되어 바로 결제 가능합니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. 거기서 카드를 골라 결제합니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/card-payment-requests/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
3089
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인되어 바로 결제할 수 있습니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 도메인 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
1933
3090
  * @summary 결제창 발행
1934
3091
  * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
1935
3092
  * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
1936
3093
  * @param {*} [options] Override http request option.
1937
3094
  * @throws {RequiredError}
1938
3095
  */
1939
- public createCardPaymentRequest(idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options?: RawAxiosRequestConfig) {
1940
- return PartnerV2ApiFp(this.configuration).createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options).then((request) => request(this.axios, this.basePath));
3096
+ public createCardPayment(idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options?: RawAxiosRequestConfig) {
3097
+ return PartnerV2ApiFp(this.configuration).createCardPayment(idempotencyKey, createCardPaymentRequestDto, options).then((request) => request(this.axios, this.basePath));
1941
3098
  }
1942
3099
 
1943
3100
  /**
1944
- * 스코프 `embed:launch` 필수. 발주기관 담당자(memberId) 일회성 launch code(60초 TTL) 발급한다. code URL 싣지 말고 @cmarket/embed SDK postMessage 핸드셰이크로만 iframe 전달할 것. memberId API 키의 발주처 소속이 아니면 403, 미허용 screen 400.
1945
- * @summary 임베드 launch code 발급 (iframe SSO)
1946
- * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
3101
+ * 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 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` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
3102
+ * @summary 결제창 발행
3103
+ * @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
3104
+ * @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
1947
3105
  * @param {*} [options] Override http request option.
1948
3106
  * @throws {RequiredError}
1949
3107
  */
1950
- public createEmbedLaunch(embedLaunchRequestDto: EmbedLaunchRequestDto, options?: RawAxiosRequestConfig) {
1951
- return PartnerV2ApiFp(this.configuration).createEmbedLaunch(embedLaunchRequestDto, options).then((request) => request(this.axios, this.basePath));
3108
+ public createCardPaymentRequest(idempotencyKey: string, createCardPaymentRequestDto: CreateCardPaymentRequestDto, options?: RawAxiosRequestConfig) {
3109
+ return PartnerV2ApiFp(this.configuration).createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options).then((request) => request(this.axios, this.basePath));
1952
3110
  }
1953
3111
 
1954
3112
  /**
1955
- * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `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` 헤더 필수.
3113
+ * 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `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 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
1956
3114
  * @summary 계약서류 생성
1957
3115
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
1958
3116
  * @param {CreateExternalContractDocumentsRequestDto} createExternalContractDocumentsRequestDto
@@ -1964,7 +3122,33 @@ export class PartnerV2Api extends BaseAPI {
1964
3122
  }
1965
3123
 
1966
3124
  /**
1967
- * 무인증 — `fileKey` 자체가 capability 다(V5 `/download/{fileKey}` 같은 보안 모델). 파트너 응답의 `fileUrl`/`fullUrl` URL 가리킨다. 요청 시점에 서명하므로 URL저장해 두어도 만료되지 않는다. 응답은 실제 저장소 URL 로의 302 리다이렉트이며 리다이렉트 타깃은 1시간 만료되므로 302 자체를 캐시하지 것(`Cache-Control: no-store`).
3125
+ * 수신 주소와 구독할 이벤트를 등록합니다. **호출 시점:** 연동 초기 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
3126
+ * @summary 웹훅 구독 등록
3127
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
3128
+ * @param {CreateWebhookEndpointRequestDto} createWebhookEndpointRequestDto
3129
+ * @param {*} [options] Override http request option.
3130
+ * @throws {RequiredError}
3131
+ */
3132
+ public createWebhookEndpoint(idempotencyKey: string, createWebhookEndpointRequestDto: CreateWebhookEndpointRequestDto, options?: RawAxiosRequestConfig) {
3133
+ return PartnerV2ApiFp(this.configuration).createWebhookEndpoint(idempotencyKey, createWebhookEndpointRequestDto, options).then((request) => request(this.axios, this.basePath));
3134
+ }
3135
+
3136
+ /**
3137
+ * 구독을 삭제합니다. 이후 그 주소로는 아무 이벤트도 발송되지 않습니다. **호출 시점:** 연동을 종료할 때. 잠시만 멈추려면 삭제하지 말고 `PATCH … {\"status\":\"DISABLED\"}` 를 쓰세요 — 시크릿과 이벤트 구성이 남아 그대로 되살릴 수 있습니다. **되돌릴 수 없습니다.** 다시 등록하면 새 구독이고 서명 시크릿도 새 값입니다. **`If-Match` 가 필수입니다.** `GET` 으로 받은 `ETag` 를 실어 보내세요. - `428` — 헤더 누락. 조회 후 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다(누군가 수정했거나 발송기가 상태를 내렸습니다). 다시 조회해 정말 지울 대상이 맞는지 확인하고 최신 `ETag` 로 재시도하세요. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
3138
+ * @summary 웹훅 구독 삭제
3139
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
3140
+ * @param {string} ifMatch
3141
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
3142
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
3143
+ * @param {*} [options] Override http request option.
3144
+ * @throws {RequiredError}
3145
+ */
3146
+ public deleteWebhookEndpoint(endpointId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, options?: RawAxiosRequestConfig) {
3147
+ return PartnerV2ApiFp(this.configuration).deleteWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, options).then((request) => request(this.axios, this.basePath));
3148
+ }
3149
+
3150
+ /**
3151
+ * 무인증 — `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` 이 가리키는 주소라 계속 유지되며 중단 일정은 없습니다.
1968
3152
  * @summary 파일 다운로드 — 안정 URL(302)
1969
3153
  * @param {string} fileKey 파일 키 — UUIDv4 hex 32자. 업로드(&#x60;POST /v1|/v2/files&#x60;) 응답에서 받은 값.
1970
3154
  * @param {*} [options] Override http request option.
@@ -1985,6 +3169,17 @@ export class PartnerV2Api extends BaseAPI {
1985
3169
  return PartnerV2ApiFp(this.configuration).getBid(bidId, options).then((request) => request(this.axios, this.basePath));
1986
3170
  }
1987
3171
 
3172
+ /**
3173
+ * 공고의 납품·검수·계약완료 진행 상태를 조회합니다. 검수완료 전송의 읽기 카운터파트입니다. **세 축은 서로 다른 사건입니다.** - `delivered`: 낙찰 공급사가 납품(결과확인)을 보고했습니다. - `confirmed`/`confirmedAt`: 발주기관이 검수를 확인했습니다. - `contractCompletedAt`: 검수완료 전송이 원장에 반영된 시각입니다. 검수완료 전송(`POST /v2/bids/{bidId}/acceptance`)이 성사되었는지는 `contractCompletedAt` 이 채워졌는지로 확인하세요. **필수 스코프:** `contracts:read`
3174
+ * @summary 검수 현황 조회
3175
+ * @param {string} bidId 공고 ID(&#x3D; backend bidId &#x3D; 등록 응답의 bidNo).
3176
+ * @param {*} [options] Override http request option.
3177
+ * @throws {RequiredError}
3178
+ */
3179
+ public getBidAcceptance(bidId: string, options?: RawAxiosRequestConfig) {
3180
+ return PartnerV2ApiFp(this.configuration).getBidAcceptance(bidId, options).then((request) => request(this.axios, this.basePath));
3181
+ }
3182
+
1988
3183
  /**
1989
3184
  * 공고의 응찰 참여 업체·순위·낙찰 여부를 조회한다. scope bids:read.
1990
3185
  * @summary 입찰 결과 조회
@@ -1997,7 +3192,7 @@ export class PartnerV2Api extends BaseAPI {
1997
3192
  }
1998
3193
 
1999
3194
  /**
2000
- * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회한다. scope bids:read. 가시성 마스킹과 직교한 정산 데이터 — read-only.
3195
+ * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 가시성 마스킹과는 직교한 정산 데이터이며 읽기 전용입니다. **필수 스코프:** `invoices:read` 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
2001
3196
  * @summary 입찰결과 정산정보 조회
2002
3197
  * @param {string} bidId
2003
3198
  * @param {*} [options] Override http request option.
@@ -2008,7 +3203,7 @@ export class PartnerV2Api extends BaseAPI {
2008
3203
  }
2009
3204
 
2010
3205
  /**
2011
- * 낙찰 계약의 거래명세서(문서·품목 라인)를 조회한다. scope contracts:read.
3206
+ * 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
2012
3207
  * @summary 거래명세서 조회
2013
3208
  * @param {string} bidId
2014
3209
  * @param {number} [paperCode]
@@ -2019,6 +3214,17 @@ export class PartnerV2Api extends BaseAPI {
2019
3214
  return PartnerV2ApiFp(this.configuration).getBidStatement(bidId, paperCode, options).then((request) => request(this.axios, this.basePath));
2020
3215
  }
2021
3216
 
3217
+ /**
3218
+ * 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **구 경로:** 버전 없는 `GET /files/{fileKey}` 는 만료 없는 안정 주소이고 파트너 응답의 `fileUrl`/`fullUrl` 이 그 값을 가리킵니다. 인증도 스코프도 없는 옛 표면이라 신규 연동은 이 엔드포인트를 쓰세요. 구 경로는 당분간 유지됩니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** 하이픈 없는 16진수 32자가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. **필수 스코프:** `files:read`
3219
+ * @summary 파일 조회(메타 + 내려받기 주소)
3220
+ * @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(하이픈 없는 16진수 32자).
3221
+ * @param {*} [options] Override http request option.
3222
+ * @throws {RequiredError}
3223
+ */
3224
+ public getFileMeta(fileKey: string, options?: RawAxiosRequestConfig) {
3225
+ return PartnerV2ApiFp(this.configuration).getFileMeta(fileKey, options).then((request) => request(this.axios, this.basePath));
3226
+ }
3227
+
2022
3228
  /**
2023
3229
  * 등록한 계약의 계산서 발행 상태를 확인합니다. **언제 쓰나:** 씨마켓이 보내는 발행완료 통지를 놓쳤을 때의 **복구 경로**입니다. 평상시에는 통지를 받아 처리하고, 상태가 어긋난 것 같을 때 이 API 로 되읽으세요. **필수 스코프:** `contracts:read`
2024
3230
  * @summary 계산서 발행 상태 조회
@@ -2031,7 +3237,7 @@ export class PartnerV2Api extends BaseAPI {
2031
3237
  }
2032
3238
 
2033
3239
  /**
2034
- * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write`
3240
+ * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
2035
3241
  * @summary 공급사 카드결제 가능 여부
2036
3242
  * @param {string} memberId 계약업체 회원 ID
2037
3243
  * @param {*} [options] Override http request option.
@@ -2041,6 +3247,28 @@ export class PartnerV2Api extends BaseAPI {
2041
3247
  return PartnerV2ApiFp(this.configuration).getSupplierCardPayable(memberId, options).then((request) => request(this.axios, this.basePath));
2042
3248
  }
2043
3249
 
3250
+ /**
3251
+ * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
3252
+ * @summary 공급사 카드결제 가능 여부
3253
+ * @param {string} memberId 계약업체 회원 ID
3254
+ * @param {*} [options] Override http request option.
3255
+ * @throws {RequiredError}
3256
+ */
3257
+ public getSupplierCardPayableV2(memberId: string, options?: RawAxiosRequestConfig) {
3258
+ return PartnerV2ApiFp(this.configuration).getSupplierCardPayableV2(memberId, options).then((request) => request(this.axios, this.basePath));
3259
+ }
3260
+
3261
+ /**
3262
+ * 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
3263
+ * @summary 웹훅 구독 단건 조회
3264
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
3265
+ * @param {*} [options] Override http request option.
3266
+ * @throws {RequiredError}
3267
+ */
3268
+ public getWebhookEndpoint(endpointId: string, options?: RawAxiosRequestConfig) {
3269
+ return PartnerV2ApiFp(this.configuration).getWebhookEndpoint(endpointId, options).then((request) => request(this.axios, this.basePath));
3270
+ }
3271
+
2044
3272
  /**
2045
3273
  * ERP 연동 직전 회선·인증 endpoint 동작 확인용.
2046
3274
  * @summary Partner API 헬스체크
@@ -2052,16 +3280,36 @@ export class PartnerV2Api extends BaseAPI {
2052
3280
  }
2053
3281
 
2054
3282
  /**
2055
- * 낙찰 공급사가 확정된 공고에 대해 세금계산서를 발행합니다. **호출 시점:** 낙찰자 선정(계약진행) 이후. 과세/면세를 자동 분리해 발행합니다. **부수효과:** - 세금계산서가 국세청에 발행되고 공고가 발행 완료로 마킹됩니다. - 이미 발행됐거나 분할 청구가 진행 중이면 409 거절됩니다. **소유권:** 발행 대상 공고가 API 키에 바인딩된 발주처 소유가 아니면 403. **분할 청구:** 세금계산서 **분할 발급**은 `/v2` 제공되지 않습니다 `/v1` 전용(`POST /v1/invoices/split-requests`)입니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 + 동일 body 재전송 24시간 캐시 응답 반환.
2056
- * @summary 세금계산서 발행
3283
+ * 공고의 계약서류 목록과 내려받기 주소를 조회합니다. **목록에 실리는 것:** 공고 전체에 공통인 서류(약관·자동생성 공통본) 낙찰자에게 귀속된 서류를 함께 싣습니다. 낙찰자 귀속 서류는 `winnerSequence` 낙찰자의 응찰 순번이 들어갑니다. **아직 없는 서류도 실립니다.** 공고가 제출을 요구했지만 아직 올라오지 않은 서류는 `fileKey: null` 나타나므로, 제출 여부는 값으로 판정하세요. **자동생성 서류:** `autoGenerated: true` 서류는 c-market 만들어 줍니다. 만드는 중이면 `generationState` `QUEUED`/`PROCESSING` 이고 `downloadUrl` 아직 없습니다. `DEAD_LETTER` 는 생성이 실패해 멈춘 상태이며, 같은 경로의 POST(재생성)로 다시 큐에 올립니다. **내려받기:** `downloadUrl` 유효기간 1시간의 서명 주소입니다. 저장해 두고 재사용하지 마시고 필요할 엔드포인트를 다시 호출하세요. 기간에 얽매이지 않으려면 `fileKey` 를 보관하시고 파일 내려받기 경로를 사용하세요. **보이는 범위:** 서버가 공고 낙찰방법과 진행 단계로 결정합니다. 응답을 그대로 사용하시고 클라이언트에서 다시 거르지 마세요. **필수 스코프:** `contracts:read`
3284
+ * @summary 계약서류 목록 조회
3285
+ * @param {string} bidId 공고번호(buy_idx, 예 CM…) 또는 외부 구매번호(bid_puchase_no).
3286
+ * @param {*} [options] Override http request option.
3287
+ * @throws {RequiredError}
3288
+ */
3289
+ public listBidContractDocuments(bidId: string, options?: RawAxiosRequestConfig) {
3290
+ return PartnerV2ApiFp(this.configuration).listBidContractDocuments(bidId, options).then((request) => request(this.axios, this.basePath));
3291
+ }
3292
+
3293
+ /**
3294
+ * 공고에 응찰한 업체 목록을 조회합니다. 스코프 `bids:read` 필수. **보이는 범위는 공고의 낙찰방법과 진행 단계가 결정합니다.** 개찰 전에는 업체명이 가려지고 (`companyName: null`), 순위는 산정 전까지 `null` 입니다. 이 판정은 서버가 소유하므로 응답을 그대로 사용하시고 클라이언트에서 다시 계산하지 마세요. 같은 목록이 `GET /v2/bids/{bidId}` 응답의 `participants` 에도 실립니다 — 응찰 현황만 필요하면 이 엔드포인트가 가볍습니다.
3295
+ * @summary 응찰 현황 조회
2057
3296
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
2058
- * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
2059
- * @param {IssueTaxInvoiceRequestDto} issueTaxInvoiceRequestDto
2060
3297
  * @param {*} [options] Override http request option.
2061
3298
  * @throws {RequiredError}
2062
3299
  */
2063
- public issueTaxInvoice(bidId: string, idempotencyKey: string, issueTaxInvoiceRequestDto: IssueTaxInvoiceRequestDto, options?: RawAxiosRequestConfig) {
2064
- return PartnerV2ApiFp(this.configuration).issueTaxInvoice(bidId, idempotencyKey, issueTaxInvoiceRequestDto, options).then((request) => request(this.axios, this.basePath));
3300
+ public listBidParticipants(bidId: string, options?: RawAxiosRequestConfig) {
3301
+ return PartnerV2ApiFp(this.configuration).listBidParticipants(bidId, options).then((request) => request(this.axios, this.basePath));
3302
+ }
3303
+
3304
+ /**
3305
+ * 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에는 `ETag` 가 실리므로, 다음 요청에 `If-None-Match` 로 되보내면 결과가 그대로일 때 `304` 를 본문 없이 받습니다 — 마감을 기다리는 동안의 전송량이 사라집니다. **식별자 전달:** `?bidIds=A,B,C`(쉼표) 또는 `?bidIds=A&bidIds=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다 — 요청한 건수와 받은 건수가 다를 수 있으니 `bidId` 로 대조하세요. **목록이 길어 URL 이 부담되면** `POST /v2/bid-results/query` 를 쓰세요. 응답은 같습니다.
3306
+ * @summary 입찰 결과 배치 조회
3307
+ * @param {string} bidIds 조회할 공고 식별자 목록. 쉼표로 구분하거나 &#x60;bidIds&#x60; 를 반복해 전달합니다. 최대 100건.
3308
+ * @param {*} [options] Override http request option.
3309
+ * @throws {RequiredError}
3310
+ */
3311
+ public listBidResults(bidIds: string, options?: RawAxiosRequestConfig) {
3312
+ return PartnerV2ApiFp(this.configuration).listBidResults(bidIds, options).then((request) => request(this.axios, this.basePath));
2065
3313
  }
2066
3314
 
2067
3315
  /**
@@ -2080,7 +3328,7 @@ export class PartnerV2Api extends BaseAPI {
2080
3328
  }
2081
3329
 
2082
3330
  /**
2083
- * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read`
3331
+ * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `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 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
2084
3332
  * @summary 거래에 필요한 계약서류 목록 조회
2085
3333
  * @param {string} buyerId 발주기관 회원 ID(c-market memberId).
2086
3334
  * @param {ListExternalContractDocumentsBidTypeEnum} bidType 거래유형.
@@ -2091,6 +3339,40 @@ export class PartnerV2Api extends BaseAPI {
2091
3339
  return PartnerV2ApiFp(this.configuration).listExternalContractDocuments(buyerId, bidType, options).then((request) => request(this.axios, this.basePath));
2092
3340
  }
2093
3341
 
3342
+ /**
3343
+ * 기관에 공유된 물품 중 **아직 전송되지 않은 것**을 조회합니다. **증분 피드입니다.** 가져간 물품을 `POST /v2/products/receipts` 로 수신확인하면 다음 조회 결과에서 빠집니다. 수신확인을 하지 않으면 같은 물품이 계속 내려옵니다. **권장 흐름:** 조회 → 자기 시스템에 저장 → 저장에 성공한 물품 코드만 수신확인. 저장 전에 수신확인하면 그 물품은 다시 받을 수 없습니다. **조회 범위:** 요청 키가 대행하는 기관 그룹입니다. 기관 그룹이 설정되지 않은 키는 403 입니다. **필수 스코프:** `products:read`
3344
+ * @summary 물품 카탈로그 조회
3345
+ * @param {*} [options] Override http request option.
3346
+ * @throws {RequiredError}
3347
+ */
3348
+ public listProducts(options?: RawAxiosRequestConfig) {
3349
+ return PartnerV2ApiFp(this.configuration).listProducts(options).then((request) => request(this.axios, this.basePath));
3350
+ }
3351
+
3352
+ /**
3353
+ * 이 API 키의 웹훅 발송 시도를 최신순으로 조회합니다. 보낸 본문·수신측 응답 상태· 다음 재시도 예정 시각이 함께 실립니다. **호출 시점:** - 수신측 장애로 놓친 이벤트를 메울 때. 이 엔드포인트가 웹훅의 **폴링 대체 경로**입니다 — `status=EXHAUSTED` 로 걸러 다시 처리하면 됩니다. - \"이벤트가 안 온다\" 를 진단할 때. 발송 시도 자체가 없는지(구독·이벤트 타입 문제), 시도했지만 실패했는지(`responseStatus`·`responseBodyExcerpt`)를 여기서 가릅니다. **같은 이벤트가 여러 행으로 보입니다.** 재시도마다 한 행이며 `eventId` 가 같고 `attempt` 만 올라갑니다. 처리 여부는 `eventId` 기준으로 판단하세요. **페이지네이션:** `nextCursor` 를 다음 요청의 `cursor` 로 전달합니다. null 이면 마지막 페이지입니다. **`400`:** `status` 가 허용 값 밖이거나 `limit` 이 범위를 벗어났습니다 — 값을 고쳐 재시도하세요. **필수 스코프:** `webhooks:read`
3354
+ * @summary 웹훅 전송 이력 조회
3355
+ * @param {string} [endpointId] 이 구독의 전송만 조회합니다. 미지정이면 이 키의 모든 구독을 함께 조회합니다.
3356
+ * @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
3357
+ * @param {number} [limit] 페이지 크기(1~200, 기본 50).
3358
+ * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달합니다. 미지정 시 첫 페이지.
3359
+ * @param {*} [options] Override http request option.
3360
+ * @throws {RequiredError}
3361
+ */
3362
+ public listWebhookDeliveries(endpointId?: string, status?: PartnerWebhookDeliveryStatus, limit?: number, cursor?: string, options?: RawAxiosRequestConfig) {
3363
+ return PartnerV2ApiFp(this.configuration).listWebhookDeliveries(endpointId, status, limit, cursor, options).then((request) => request(this.axios, this.basePath));
3364
+ }
3365
+
3366
+ /**
3367
+ * 이 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
3368
+ * @summary 웹훅 구독 목록 조회
3369
+ * @param {*} [options] Override http request option.
3370
+ * @throws {RequiredError}
3371
+ */
3372
+ public listWebhookEndpoints(options?: RawAxiosRequestConfig) {
3373
+ return PartnerV2ApiFp(this.configuration).listWebhookEndpoints(options).then((request) => request(this.axios, this.basePath));
3374
+ }
3375
+
2094
3376
  /**
2095
3377
  * 공고를 유찰 상태로 전환합니다. **호출 시점:** 입찰 마감 후 유찰 사유가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 공고 상태가 유찰(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` 헤더 필수.
2096
3378
  * @summary 유찰 처리
@@ -2116,6 +3398,17 @@ export class PartnerV2Api extends BaseAPI {
2116
3398
  return PartnerV2ApiFp(this.configuration).publishBid(bidId, idempotencyKey, options).then((request) => request(this.axios, this.basePath));
2117
3399
  }
2118
3400
 
3401
+ /**
3402
+ * `GET /v2/bid-results` 와 **완전히 같은 조회**이며, 식별자 목록을 본문으로 받습니다. 스코프 `bids:read`. 공고 식별자 100건이면 URL 이 1KB를 넘습니다 — 중간 프록시가 긴 URL 을 자르는 환경을 위한 대체 경로입니다. **부수효과가 없으므로 `Idempotency-Key` 는 필요하지 않습니다.** POST 인 것은 전송 형태의 문제일 뿐이며, 가능하면 캐시·`ETag` 가 동작하는 `GET` 쪽을 쓰세요.
3403
+ * @summary 입찰 결과 배치 조회 (본문 전달)
3404
+ * @param {BidResultsBatchRequestDto} bidResultsBatchRequestDto
3405
+ * @param {*} [options] Override http request option.
3406
+ * @throws {RequiredError}
3407
+ */
3408
+ public queryBidResults(bidResultsBatchRequestDto: BidResultsBatchRequestDto, options?: RawAxiosRequestConfig) {
3409
+ return PartnerV2ApiFp(this.configuration).queryBidResults(bidResultsBatchRequestDto, options).then((request) => request(this.axios, this.basePath));
3410
+ }
3411
+
2119
3412
  /**
2120
3413
  * 공고의 자동생성 계약서류(발주서·공고결과·표준계약서 등)를 생성/재생성합니다. **V6 대응:** `RegenerateAllContractPdfsCommand` — 웹 어드민의 \"계약 서류 일괄 재생성\"과 동일 경로. **호출 시점:** 낙찰(계약 시작) 후 계약서류가 필요하거나, 생성에 실패한 서류를 다시 만들 때. **부수효과:** - 생성 실패(DEAD_LETTER) 상태의 자동생성 PDF 가 재생성 큐에 등록됩니다(비동기). - 승낙사항(ACCEPTANCE) 계열은 운영자 승인 워크플로가 필요해 이 경로에서 제외됩니다. **응답:** 즉시 파일이 아니라 큐 등록 결과(`enqueuedCount`/`skippedCount`)를 반환합니다. 잠시 후 자동 생성됩니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
2121
3414
  * @summary 계약서류 생성(재생성)
@@ -2144,12 +3437,13 @@ export class PartnerV2Api extends BaseAPI {
2144
3437
  /**
2145
3438
  * 입찰 정보 등록. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수.
2146
3439
  * @summary 입찰 정보 전송(등록)
3440
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
2147
3441
  * @param {CreateBidRequestDto} createBidRequestDto
2148
3442
  * @param {*} [options] Override http request option.
2149
3443
  * @throws {RequiredError}
2150
3444
  */
2151
- public registerBid(createBidRequestDto: CreateBidRequestDto, options?: RawAxiosRequestConfig) {
2152
- return PartnerV2ApiFp(this.configuration).registerBid(createBidRequestDto, options).then((request) => request(this.axios, this.basePath));
3445
+ public registerBid(idempotencyKey: string, createBidRequestDto: CreateBidRequestDto, options?: RawAxiosRequestConfig) {
3446
+ return PartnerV2ApiFp(this.configuration).registerBid(idempotencyKey, createBidRequestDto, options).then((request) => request(this.axios, this.basePath));
2153
3447
  }
2154
3448
 
2155
3449
  /**
@@ -2165,29 +3459,70 @@ export class PartnerV2Api extends BaseAPI {
2165
3459
  }
2166
3460
 
2167
3461
  /**
2168
- * 협상방식(NEGOTIATION/NEGOTIATION_AUTO) 공고의 응찰자별 점수를 입력합니다. **호출 시점:** 입찰 마감 낙찰(`POST /v2/bids/{bidId}/award`) 전. 협상방식 공고는 평가를 완료해야 낙찰에 진입할 수 있습니다. **부수효과:** - 응찰자별 기술점수(및 선택적 가격점수 override)가 기록됩니다. - `complete=true` 평가완료 게이트까지 적용돼 낙찰 진입이 가능해집니다. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body buyerId 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 + 동일 body 재전송 24시간 캐시 응답 반환.
2169
- * @summary 협상 점수평가
3462
+ * 확정된 낙찰을 되돌려 공고를 낙찰대기(PENDING_AWARD) 상태로 보냅니다. 스코프 `awards:write` + `Idempotency-Key` 헤더 필수. **호출 시점:** 낙찰자가 계약을 포기했거나 낙찰 처리 자체가 잘못됐을 때. 되돌린 같은 공고에 다시 낙찰을 등록할 수 있습니다. **되돌릴 없는 경우 409:** - 수수료 결제가 이미 완료된 공고 - 세금계산서가 이미 발행된 공고 - 수입권공매 계열 낙찰방법(다수 낙찰자 구조라 되돌리기 단위가 다릅니다) **사유는 필수입니다** 감사 대상 행위이며 공고 이력에 남습니다. **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
3463
+ * @summary 낙찰 되돌리기
2170
3464
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
3465
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
3466
+ * @param {RevertAwardRequestDto} revertAwardRequestDto
3467
+ * @param {*} [options] Override http request option.
3468
+ * @throws {RequiredError}
3469
+ */
3470
+ public revertAward(bidId: string, idempotencyKey: string, revertAwardRequestDto: RevertAwardRequestDto, options?: RawAxiosRequestConfig) {
3471
+ return PartnerV2ApiFp(this.configuration).revertAward(bidId, idempotencyKey, revertAwardRequestDto, options).then((request) => request(this.axios, this.basePath));
3472
+ }
3473
+
3474
+ /**
3475
+ * 서명 시크릿을 새로 발급합니다. 응답의 `secretVersion` 이 1 올라갑니다. **호출 시점:** 시크릿을 분실했거나 유출이 의심될 때, 또는 주기적 교체 정책이 있을 때. **새 시크릿은 이 응답에서 한 번만 나갑니다.** 조회로 다시 받을 수 없습니다. **옛 시크릿은 즉시 무효입니다.** 유예 기간이 없으므로, 수신측이 새 값을 반영하기 전에 도착한 이벤트는 서명 검증에 실패합니다. 배포 순서를 이렇게 잡으세요 — ① 수신측이 옛 값과 새 값을 **둘 다** 받아들이도록 배포 → ② 이 엔드포인트 호출 → ③ 응답의 새 값을 반영 → ④ 옛 값 제거. 검증 실패로 non-2xx 를 돌려주면 실패로 집계되어 20회 연속 시 구독이 중지됩니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 같은 키로 재전송하면 **새로 발급하지 않고** 처음 발급한 값을 그대로 돌려줍니다(24시간) — 네트워크 오류로 응답을 놓쳤을 때 같은 키로 다시 부르세요.
3476
+ * @summary 웹훅 서명 시크릿 재발급
3477
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
3478
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
3479
+ * @param {*} [options] Override http request option.
3480
+ * @throws {RequiredError}
3481
+ */
3482
+ public rotateWebhookSecret(endpointId: string, idempotencyKey: string, options?: RawAxiosRequestConfig) {
3483
+ return PartnerV2ApiFp(this.configuration).rotateWebhookSecret(endpointId, idempotencyKey, options).then((request) => request(this.axios, this.basePath));
3484
+ }
3485
+
3486
+ /**
3487
+ * 등록된 주소로 `ping` 이벤트를 즉시 1회 보내고 그 결과를 돌려줍니다. **호출 시점:** 구독을 등록한 직후, 수신 주소를 바꾼 직후, 방화벽·인증서를 손본 뒤. **응답은 발송 결과이지 요청 실패가 아닙니다.** 수신측이 받지 못해도 HTTP `200` 에 `delivered: false` 로 옵니다 — `responseStatus`(수신측 상태)와 `error`(연결 거부·타임아웃· TLS 오류)를 보고 원인을 좁히세요. 이 발송에도 실제 이벤트와 **똑같은 서명 헤더**가 실리므로 검증 코드를 그대로 시험할 수 있습니다. `ping` 은 구독 목록에 넣을 수 없는 타입이니, 수신측이 모르는 `eventType` 을 만나면 버리도록 짜여 있다면 이 확인만 실패할 수 있습니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 다시 보내려면 **새 키**를 쓰세요 — 같은 키는 24시간 동안 직전 결과를 그대로 돌려줍니다(재발송하지 않습니다).
3488
+ * @summary 웹훅 연결 확인 발송
3489
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
2171
3490
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
2172
- * @param {SubmitNegotiationScoresRequestDto} submitNegotiationScoresRequestDto
2173
3491
  * @param {*} [options] Override http request option.
2174
3492
  * @throws {RequiredError}
2175
3493
  */
2176
- public submitNegotiationScores(bidId: string, idempotencyKey: string, submitNegotiationScoresRequestDto: SubmitNegotiationScoresRequestDto, options?: RawAxiosRequestConfig) {
2177
- return PartnerV2ApiFp(this.configuration).submitNegotiationScores(bidId, idempotencyKey, submitNegotiationScoresRequestDto, options).then((request) => request(this.axios, this.basePath));
3494
+ public sendWebhookTestEvent(endpointId: string, idempotencyKey: string, options?: RawAxiosRequestConfig) {
3495
+ return PartnerV2ApiFp(this.configuration).sendWebhookTestEvent(endpointId, idempotencyKey, options).then((request) => request(this.axios, this.basePath));
2178
3496
  }
2179
3497
 
2180
3498
  /**
2181
3499
  * 등록된 공고의 내용을 수정합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. 진행중/초안 상태의 공고만 수정할 수 있습니다. **부수효과:** - 변경 내용이 반영되고 수정이력이 기록됩니다. - `hideEdit=true` 면 변경이력을 비공개 처리하고 노출 카운터 증가를 생략합니다. **수정 제약:** - 낙찰방법(awardMethod)은 수정 불가(잠금). - 참여자가 있으면 입찰방식/면허/예산/품목 일부가 잠깁니다. - 마감/취소된 공고는 수정할 수 없습니다. 한 섹션을 수정하려면 해당 섹션의 필수 필드를 함께 보내야 합니다(부분 섹션은 거부됨).
2182
3500
  * @summary 입찰 공고 수정
2183
3501
  * @param {string} bidId 공고 식별자(등록 응답의 bidId).
3502
+ * @param {string} ifMatch
3503
+ * @param {string} ifMatch2 수정하려는 공고의 ETag(필수). 직전 &#x60;GET /v2/bids/{bidId}&#x60; 응답의 &#x60;ETag&#x60; 헤더 값을 그대로 실어 보내세요. 누락하면 428, 그 사이 공고가 바뀌었으면 412 로 거절되며 아무것도 수정되지 않습니다.
2184
3504
  * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
2185
3505
  * @param {UpdateBidRequestDto} updateBidRequestDto
2186
3506
  * @param {*} [options] Override http request option.
2187
3507
  * @throws {RequiredError}
2188
3508
  */
2189
- public updateBid(bidId: string, idempotencyKey: string, updateBidRequestDto: UpdateBidRequestDto, options?: RawAxiosRequestConfig) {
2190
- return PartnerV2ApiFp(this.configuration).updateBid(bidId, idempotencyKey, updateBidRequestDto, options).then((request) => request(this.axios, this.basePath));
3509
+ public updateBid(bidId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, updateBidRequestDto: UpdateBidRequestDto, options?: RawAxiosRequestConfig) {
3510
+ return PartnerV2ApiFp(this.configuration).updateBid(bidId, ifMatch, ifMatch2, idempotencyKey, updateBidRequestDto, options).then((request) => request(this.axios, this.basePath));
3511
+ }
3512
+
3513
+ /**
3514
+ * 수신 주소·구독 이벤트·상태를 수정합니다. 보낸 필드만 바뀝니다. **호출 시점:** 수신 주소가 바뀌었을 때, 구독 이벤트를 늘리거나 줄일 때, 연속 실패로 자동 중지된 구독을 고친 뒤 되살릴 때(`{\"status\":\"ACTIVE\"}`). **`eventTypes` 는 치환입니다** — 보낸 목록이 곧 새 구독 목록입니다. 하나를 더하려면 기존 목록에 더한 **전체**를 보내세요. **`If-Match` 가 필수입니다.** 먼저 `GET /v2/webhook-endpoints/{endpointId}` 로 현재 `ETag` 를 받아 그대로 실어 보내세요. 이 헤더가 없으면 두 요청이 앞서거니 뒤서거니 하며 먼저 한 수정을 조용히 덮어씁니다. - `428` — 헤더를 빼먹었습니다. 조회 후 `ETag` 를 실어 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다. 다시 조회해 최신 `ETag` 로 재시도하세요. 아무것도 수정되지 않았습니다. **시크릿은 이 경로로 바뀌지 않습니다** — 재발급은 `rotate-secret` 입니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
3515
+ * @summary 웹훅 구독 수정
3516
+ * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
3517
+ * @param {string} ifMatch
3518
+ * @param {string} ifMatch2 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
3519
+ * @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
3520
+ * @param {UpdateWebhookEndpointRequestDto} updateWebhookEndpointRequestDto
3521
+ * @param {*} [options] Override http request option.
3522
+ * @throws {RequiredError}
3523
+ */
3524
+ public updateWebhookEndpoint(endpointId: string, ifMatch: string, ifMatch2: string, idempotencyKey: string, updateWebhookEndpointRequestDto: UpdateWebhookEndpointRequestDto, options?: RawAxiosRequestConfig) {
3525
+ return PartnerV2ApiFp(this.configuration).updateWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, updateWebhookEndpointRequestDto, options).then((request) => request(this.axios, this.basePath));
2191
3526
  }
2192
3527
 
2193
3528
  /**