@cmarket/partner-sdk 25.1.0 → 31.1.0

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