@cmarket/partner-sdk 38.2.0 → 38.3.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 (814) hide show
  1. package/README.md +13 -4
  2. package/api/embed-api.ts +1 -1
  3. package/api/oauth-api.ts +1 -1
  4. package/api/partner-api-api.ts +155 -78
  5. package/api/products-api.ts +15 -8
  6. package/api/webhooks-api.ts +690 -0
  7. package/api/well-known-api.ts +1 -1
  8. package/api.ts +1 -1
  9. package/base.ts +1 -1
  10. package/common.ts +1 -1
  11. package/configuration.ts +1 -1
  12. package/dist/api/embed-api.d.ts +1 -1
  13. package/dist/api/embed-api.js +1 -1
  14. package/dist/api/oauth-api.d.ts +1 -1
  15. package/dist/api/oauth-api.js +1 -1
  16. package/dist/api/partner-api-api.d.ts +89 -45
  17. package/dist/api/partner-api-api.js +155 -78
  18. package/dist/api/products-api.d.ts +9 -5
  19. package/dist/api/products-api.js +15 -8
  20. package/dist/api/webhooks-api.d.ts +328 -0
  21. package/dist/api/webhooks-api.js +675 -0
  22. package/dist/api/well-known-api.d.ts +1 -1
  23. package/dist/api/well-known-api.js +1 -1
  24. package/dist/api.d.ts +1 -1
  25. package/dist/api.js +1 -1
  26. package/dist/base.d.ts +1 -1
  27. package/dist/base.js +1 -1
  28. package/dist/common.d.ts +1 -1
  29. package/dist/common.js +1 -1
  30. package/dist/configuration.d.ts +1 -1
  31. package/dist/configuration.js +1 -1
  32. package/dist/esm/api/embed-api.d.ts +1 -1
  33. package/dist/esm/api/embed-api.js +1 -1
  34. package/dist/esm/api/oauth-api.d.ts +1 -1
  35. package/dist/esm/api/oauth-api.js +1 -1
  36. package/dist/esm/api/partner-api-api.d.ts +89 -45
  37. package/dist/esm/api/partner-api-api.js +155 -78
  38. package/dist/esm/api/products-api.d.ts +9 -5
  39. package/dist/esm/api/products-api.js +15 -8
  40. package/dist/esm/api/webhooks-api.d.ts +328 -0
  41. package/dist/esm/api/webhooks-api.js +668 -0
  42. package/dist/esm/api/well-known-api.d.ts +1 -1
  43. package/dist/esm/api/well-known-api.js +1 -1
  44. package/dist/esm/api.d.ts +1 -1
  45. package/dist/esm/api.js +1 -1
  46. package/dist/esm/base.d.ts +1 -1
  47. package/dist/esm/base.js +1 -1
  48. package/dist/esm/common.d.ts +1 -1
  49. package/dist/esm/common.js +1 -1
  50. package/dist/esm/configuration.d.ts +1 -1
  51. package/dist/esm/configuration.js +1 -1
  52. package/dist/esm/index.d.ts +1 -1
  53. package/dist/esm/index.js +1 -1
  54. package/dist/esm/models/acceptance-result-response-dto.d.ts +1 -1
  55. package/dist/esm/models/acceptance-result-response-dto.js +1 -1
  56. package/dist/esm/models/acknowledge-product-receipt200-response.d.ts +1 -1
  57. package/dist/esm/models/acknowledge-product-receipt200-response.js +1 -1
  58. package/dist/esm/models/acknowledge-products-request-dto.d.ts +1 -1
  59. package/dist/esm/models/acknowledge-products-request-dto.js +1 -1
  60. package/dist/esm/models/api-catalog-dto.d.ts +1 -1
  61. package/dist/esm/models/api-catalog-dto.js +1 -1
  62. package/dist/esm/models/api-catalog-entry-dto.d.ts +1 -1
  63. package/dist/esm/models/api-catalog-entry-dto.js +1 -1
  64. package/dist/esm/models/api-catalog-link-dto.d.ts +1 -1
  65. package/dist/esm/models/api-catalog-link-dto.js +1 -1
  66. package/dist/esm/models/authorization-server-metadata-dto.d.ts +1 -1
  67. package/dist/esm/models/authorization-server-metadata-dto.js +1 -1
  68. package/dist/esm/models/award-method-public.d.ts +1 -1
  69. package/dist/esm/models/award-method-public.js +1 -1
  70. package/dist/esm/models/award-registered-v2-response-dto.d.ts +1 -1
  71. package/dist/esm/models/award-registered-v2-response-dto.js +1 -1
  72. package/dist/esm/models/award-reverted-v2-response-dto.d.ts +1 -1
  73. package/dist/esm/models/award-reverted-v2-response-dto.js +1 -1
  74. package/dist/esm/models/bid-acceptance-dto.d.ts +1 -1
  75. package/dist/esm/models/bid-acceptance-dto.js +1 -1
  76. package/dist/esm/models/bid-attachment-input-dto.d.ts +1 -1
  77. package/dist/esm/models/bid-attachment-input-dto.js +1 -1
  78. package/dist/esm/models/bid-bond-dto.d.ts +1 -1
  79. package/dist/esm/models/bid-bond-dto.js +1 -1
  80. package/dist/esm/models/bid-cancelled-response-dto.d.ts +1 -1
  81. package/dist/esm/models/bid-cancelled-response-dto.js +1 -1
  82. package/dist/esm/models/bid-contact-dto.d.ts +1 -1
  83. package/dist/esm/models/bid-contact-dto.js +1 -1
  84. package/dist/esm/models/bid-contacts-dto.d.ts +1 -1
  85. package/dist/esm/models/bid-contacts-dto.js +1 -1
  86. package/dist/esm/models/bid-contract-document-dto.d.ts +1 -1
  87. package/dist/esm/models/bid-contract-document-dto.js +1 -1
  88. package/dist/esm/models/bid-delivery-terms-dto.d.ts +1 -1
  89. package/dist/esm/models/bid-delivery-terms-dto.js +1 -1
  90. package/dist/esm/models/bid-detail-response-dto.d.ts +1 -1
  91. package/dist/esm/models/bid-detail-response-dto.js +1 -1
  92. package/dist/esm/models/bid-document-dto.d.ts +1 -1
  93. package/dist/esm/models/bid-document-dto.js +1 -1
  94. package/dist/esm/models/bid-failed-v2-response-dto.d.ts +1 -1
  95. package/dist/esm/models/bid-failed-v2-response-dto.js +1 -1
  96. package/dist/esm/models/bid-item-dto.d.ts +1 -1
  97. package/dist/esm/models/bid-item-dto.js +1 -1
  98. package/dist/esm/models/bid-lifecycle-dto.d.ts +1 -1
  99. package/dist/esm/models/bid-lifecycle-dto.js +1 -1
  100. package/dist/esm/models/bid-manager-dto.d.ts +1 -1
  101. package/dist/esm/models/bid-manager-dto.js +1 -1
  102. package/dist/esm/models/bid-payment-terms-dto.d.ts +1 -1
  103. package/dist/esm/models/bid-payment-terms-dto.js +1 -1
  104. package/dist/esm/models/bid-product-dto.d.ts +1 -1
  105. package/dist/esm/models/bid-product-dto.js +1 -1
  106. package/dist/esm/models/bid-public-status.d.ts +1 -1
  107. package/dist/esm/models/bid-public-status.js +1 -1
  108. package/dist/esm/models/bid-registered-response-dto.d.ts +1 -1
  109. package/dist/esm/models/bid-registered-response-dto.js +1 -1
  110. package/dist/esm/models/bid-result-participant-attachment-dto.d.ts +1 -1
  111. package/dist/esm/models/bid-result-participant-attachment-dto.js +1 -1
  112. package/dist/esm/models/bid-result-participant-dto.d.ts +1 -1
  113. package/dist/esm/models/bid-result-participant-dto.js +1 -1
  114. package/dist/esm/models/bid-results-response-dto.d.ts +1 -1
  115. package/dist/esm/models/bid-results-response-dto.js +1 -1
  116. package/dist/esm/models/bid-settlement-line-item-dto.d.ts +1 -1
  117. package/dist/esm/models/bid-settlement-line-item-dto.js +1 -1
  118. package/dist/esm/models/bid-settlement-participant-dto.d.ts +1 -1
  119. package/dist/esm/models/bid-settlement-participant-dto.js +1 -1
  120. package/dist/esm/models/bid-settlement-response-dto.d.ts +1 -1
  121. package/dist/esm/models/bid-settlement-response-dto.js +1 -1
  122. package/dist/esm/models/bid-statement-response-dto.d.ts +1 -1
  123. package/dist/esm/models/bid-statement-response-dto.js +1 -1
  124. package/dist/esm/models/bid-summary-dto.d.ts +1 -1
  125. package/dist/esm/models/bid-summary-dto.js +1 -1
  126. package/dist/esm/models/bid-type-public.d.ts +1 -1
  127. package/dist/esm/models/bid-type-public.js +1 -1
  128. package/dist/esm/models/bid-updated-response-dto.d.ts +1 -1
  129. package/dist/esm/models/bid-updated-response-dto.js +1 -1
  130. package/dist/esm/models/cancel-bid-request-dto.d.ts +1 -1
  131. package/dist/esm/models/cancel-bid-request-dto.js +1 -1
  132. package/dist/esm/models/cancel-bid200-response.d.ts +1 -1
  133. package/dist/esm/models/cancel-bid200-response.js +1 -1
  134. package/dist/esm/models/card-payment-request-response-dto.d.ts +1 -1
  135. package/dist/esm/models/card-payment-request-response-dto.js +1 -1
  136. package/dist/esm/models/complete-acceptance-request-dto.d.ts +1 -1
  137. package/dist/esm/models/complete-acceptance-request-dto.js +1 -1
  138. package/dist/esm/models/complete-acceptance200-response.d.ts +1 -1
  139. package/dist/esm/models/complete-acceptance200-response.js +1 -1
  140. package/dist/esm/models/complete-invoice200-response.d.ts +1 -1
  141. package/dist/esm/models/complete-invoice200-response.js +1 -1
  142. package/dist/esm/models/complete-upload-request-dto.d.ts +1 -1
  143. package/dist/esm/models/complete-upload-request-dto.js +1 -1
  144. package/dist/esm/models/contract-restriction-confirm-input-dto.d.ts +1 -1
  145. package/dist/esm/models/contract-restriction-confirm-input-dto.js +1 -1
  146. package/dist/esm/models/create-bid-request-dto.d.ts +1 -1
  147. package/dist/esm/models/create-bid-request-dto.js +1 -1
  148. package/dist/esm/models/create-card-payment-dto.d.ts +1 -1
  149. package/dist/esm/models/create-card-payment-dto.js +1 -1
  150. package/dist/esm/models/create-card-payment-request-dto.d.ts +1 -1
  151. package/dist/esm/models/create-card-payment-request-dto.js +1 -1
  152. package/dist/esm/models/create-card-payment200-response.d.ts +1 -1
  153. package/dist/esm/models/create-card-payment200-response.js +1 -1
  154. package/dist/esm/models/create-embed-launch201-response.d.ts +1 -1
  155. package/dist/esm/models/create-embed-launch201-response.js +1 -1
  156. package/dist/esm/models/create-external-contract-documents-request-dto.d.ts +1 -1
  157. package/dist/esm/models/create-external-contract-documents-request-dto.js +1 -1
  158. package/dist/esm/models/create-external-contract-documents-response-dto.d.ts +1 -1
  159. package/dist/esm/models/create-external-contract-documents-response-dto.js +1 -1
  160. package/dist/esm/models/create-file-upload-url201-response.d.ts +1 -1
  161. package/dist/esm/models/create-file-upload-url201-response.js +1 -1
  162. package/dist/esm/models/create-upload-url-request-dto.d.ts +1 -1
  163. package/dist/esm/models/create-upload-url-request-dto.js +1 -1
  164. package/dist/esm/models/create-webhook-endpoint-request-dto.d.ts +1 -1
  165. package/dist/esm/models/create-webhook-endpoint-request-dto.js +1 -1
  166. package/dist/esm/models/create-webhook-endpoint201-response.d.ts +1 -1
  167. package/dist/esm/models/create-webhook-endpoint201-response.js +1 -1
  168. package/dist/esm/models/delivery-date-type-public.d.ts +1 -1
  169. package/dist/esm/models/delivery-date-type-public.js +1 -1
  170. package/dist/esm/models/delivery-method-public.d.ts +1 -1
  171. package/dist/esm/models/delivery-method-public.js +1 -1
  172. package/dist/esm/models/embed-launch-request-dto.d.ts +1 -1
  173. package/dist/esm/models/embed-launch-request-dto.js +1 -1
  174. package/dist/esm/models/embed-launch-response-dto.d.ts +1 -1
  175. package/dist/esm/models/embed-launch-response-dto.js +1 -1
  176. package/dist/esm/models/excellent-procurement-public.d.ts +1 -1
  177. package/dist/esm/models/excellent-procurement-public.js +1 -1
  178. package/dist/esm/models/external-contract-document-item-dto.d.ts +1 -1
  179. package/dist/esm/models/external-contract-document-item-dto.js +1 -1
  180. package/dist/esm/models/external-contract-documents-response-dto.d.ts +1 -1
  181. package/dist/esm/models/external-contract-documents-response-dto.js +1 -1
  182. package/dist/esm/models/external-contract-item-dto.d.ts +1 -1
  183. package/dist/esm/models/external-contract-item-dto.js +1 -1
  184. package/dist/esm/models/external-contract-snapshot-dto.d.ts +1 -1
  185. package/dist/esm/models/external-contract-snapshot-dto.js +1 -1
  186. package/dist/esm/models/external-document-inputs-dto.d.ts +1 -1
  187. package/dist/esm/models/external-document-inputs-dto.js +1 -1
  188. package/dist/esm/models/file-meta-response-dto.d.ts +1 -1
  189. package/dist/esm/models/file-meta-response-dto.js +1 -1
  190. package/dist/esm/models/file-uploaded-response-dto.d.ts +1 -1
  191. package/dist/esm/models/file-uploaded-response-dto.js +1 -1
  192. package/dist/esm/models/generated-external-contract-document-dto.d.ts +1 -1
  193. package/dist/esm/models/generated-external-contract-document-dto.js +1 -1
  194. package/dist/esm/models/get-bid-settlement200-response.d.ts +1 -1
  195. package/dist/esm/models/get-bid-settlement200-response.js +1 -1
  196. package/dist/esm/models/get-bid-statement200-response.d.ts +1 -1
  197. package/dist/esm/models/get-bid-statement200-response.js +1 -1
  198. package/dist/esm/models/get-bid200-response.d.ts +1 -1
  199. package/dist/esm/models/get-bid200-response.js +1 -1
  200. package/dist/esm/models/get-file-meta200-response.d.ts +1 -1
  201. package/dist/esm/models/get-file-meta200-response.js +1 -1
  202. package/dist/esm/models/get-supplier-card-payable-v2200-response.d.ts +1 -1
  203. package/dist/esm/models/get-supplier-card-payable-v2200-response.js +1 -1
  204. package/dist/esm/models/get-webhook-endpoint200-response.d.ts +1 -1
  205. package/dist/esm/models/get-webhook-endpoint200-response.js +1 -1
  206. package/dist/esm/models/green-product-public.d.ts +1 -1
  207. package/dist/esm/models/green-product-public.js +1 -1
  208. package/dist/esm/models/health-controller-check200-response.d.ts +1 -1
  209. package/dist/esm/models/health-controller-check200-response.js +1 -1
  210. package/dist/esm/models/health-response-dto.d.ts +1 -1
  211. package/dist/esm/models/health-response-dto.js +1 -1
  212. package/dist/esm/models/hierarchical-region-dto.d.ts +1 -1
  213. package/dist/esm/models/hierarchical-region-dto.js +1 -1
  214. package/dist/esm/models/index.d.ts +9 -0
  215. package/dist/esm/models/index.js +9 -0
  216. package/dist/esm/models/introspect-request-dto.d.ts +1 -1
  217. package/dist/esm/models/introspect-request-dto.js +1 -1
  218. package/dist/esm/models/introspection-response-dto.d.ts +1 -1
  219. package/dist/esm/models/introspection-response-dto.js +1 -1
  220. package/dist/esm/models/invalid-param-dto.d.ts +1 -1
  221. package/dist/esm/models/invalid-param-dto.js +1 -1
  222. package/dist/esm/models/invoice-completed-response-dto.d.ts +1 -1
  223. package/dist/esm/models/invoice-completed-response-dto.js +1 -1
  224. package/dist/esm/models/invoice-split-response-dto.d.ts +1 -1
  225. package/dist/esm/models/invoice-split-response-dto.js +1 -1
  226. package/dist/esm/models/legal-mandatory-public.d.ts +1 -1
  227. package/dist/esm/models/legal-mandatory-public.js +1 -1
  228. package/dist/esm/models/list-bid-results200-response.d.ts +1 -1
  229. package/dist/esm/models/list-bid-results200-response.js +1 -1
  230. package/dist/esm/models/list-bids200-response-meta.d.ts +1 -1
  231. package/dist/esm/models/list-bids200-response-meta.js +1 -1
  232. package/dist/esm/models/list-bids200-response.d.ts +1 -1
  233. package/dist/esm/models/list-bids200-response.js +1 -1
  234. package/dist/esm/models/list-products200-response.d.ts +1 -1
  235. package/dist/esm/models/list-products200-response.js +1 -1
  236. package/dist/esm/models/list-webhook-deliveries-response-dto.d.ts +1 -1
  237. package/dist/esm/models/list-webhook-deliveries-response-dto.js +1 -1
  238. package/dist/esm/models/list-webhook-deliveries200-response.d.ts +1 -1
  239. package/dist/esm/models/list-webhook-deliveries200-response.js +1 -1
  240. package/dist/esm/models/list-webhook-endpoints200-response.d.ts +1 -1
  241. package/dist/esm/models/list-webhook-endpoints200-response.js +1 -1
  242. package/dist/esm/models/mark-bid-failed-request-dto.d.ts +1 -1
  243. package/dist/esm/models/mark-bid-failed-request-dto.js +1 -1
  244. package/dist/esm/models/mark-bid-failed201-response.d.ts +1 -1
  245. package/dist/esm/models/mark-bid-failed201-response.js +1 -1
  246. package/dist/esm/models/negotiation-score-dto.d.ts +1 -1
  247. package/dist/esm/models/negotiation-score-dto.js +1 -1
  248. package/dist/esm/models/negotiation-scored-v2-response-dto.d.ts +1 -1
  249. package/dist/esm/models/negotiation-scored-v2-response-dto.js +1 -1
  250. package/dist/esm/models/oauth-error-response-dto.d.ts +1 -1
  251. package/dist/esm/models/oauth-error-response-dto.js +1 -1
  252. package/dist/esm/models/on-bid-award-reverted-request.d.ts +16 -0
  253. package/dist/esm/models/on-bid-award-reverted-request.js +14 -0
  254. package/dist/esm/models/on-bid-awarded-request.d.ts +16 -0
  255. package/dist/esm/models/on-bid-awarded-request.js +14 -0
  256. package/dist/esm/models/on-bid-canceled-request.d.ts +16 -0
  257. package/dist/esm/models/on-bid-canceled-request.js +14 -0
  258. package/dist/esm/models/on-bid-closed-request.d.ts +16 -0
  259. package/dist/esm/models/on-bid-closed-request.js +14 -0
  260. package/dist/esm/models/on-bid-failed-request.d.ts +16 -0
  261. package/dist/esm/models/on-bid-failed-request.js +14 -0
  262. package/dist/esm/models/on-ping-request.d.ts +16 -0
  263. package/dist/esm/models/on-ping-request.js +14 -0
  264. package/dist/esm/models/partner-webhook-delivery-status.d.ts +1 -1
  265. package/dist/esm/models/partner-webhook-delivery-status.js +1 -1
  266. package/dist/esm/models/partner-webhook-endpoint-status.d.ts +1 -1
  267. package/dist/esm/models/partner-webhook-endpoint-status.js +1 -1
  268. package/dist/esm/models/partner-webhook-event-type.d.ts +1 -1
  269. package/dist/esm/models/partner-webhook-event-type.js +1 -1
  270. package/dist/esm/models/payment-method-public.d.ts +1 -1
  271. package/dist/esm/models/payment-method-public.js +1 -1
  272. package/dist/esm/models/preconditions-dto.d.ts +1 -1
  273. package/dist/esm/models/preconditions-dto.js +1 -1
  274. package/dist/esm/models/problem-details-dto.d.ts +1 -1
  275. package/dist/esm/models/problem-details-dto.js +1 -1
  276. package/dist/esm/models/product-receipt-response-dto.d.ts +1 -1
  277. package/dist/esm/models/product-receipt-response-dto.js +1 -1
  278. package/dist/esm/models/product-response-dto.d.ts +1 -1
  279. package/dist/esm/models/product-response-dto.js +1 -1
  280. package/dist/esm/models/protected-resource-metadata-dto.d.ts +1 -1
  281. package/dist/esm/models/protected-resource-metadata-dto.js +1 -1
  282. package/dist/esm/models/register-award-request-dto.d.ts +1 -1
  283. package/dist/esm/models/register-award-request-dto.js +1 -1
  284. package/dist/esm/models/register-award201-response.d.ts +1 -1
  285. package/dist/esm/models/register-award201-response.js +1 -1
  286. package/dist/esm/models/register-bid201-response.d.ts +1 -1
  287. package/dist/esm/models/register-bid201-response.js +1 -1
  288. package/dist/esm/models/register-semo-contract-request-dto.d.ts +1 -1
  289. package/dist/esm/models/register-semo-contract-request-dto.js +1 -1
  290. package/dist/esm/models/request-invoice-split-request-dto.d.ts +1 -1
  291. package/dist/esm/models/request-invoice-split-request-dto.js +1 -1
  292. package/dist/esm/models/request-invoice-split200-response.d.ts +1 -1
  293. package/dist/esm/models/request-invoice-split200-response.js +1 -1
  294. package/dist/esm/models/retiree-roster-input-dto.d.ts +1 -1
  295. package/dist/esm/models/retiree-roster-input-dto.js +1 -1
  296. package/dist/esm/models/retiree-roster-row-dto.d.ts +1 -1
  297. package/dist/esm/models/retiree-roster-row-dto.js +1 -1
  298. package/dist/esm/models/revert-award-request-dto.d.ts +1 -1
  299. package/dist/esm/models/revert-award-request-dto.js +1 -1
  300. package/dist/esm/models/revert-award200-response.d.ts +1 -1
  301. package/dist/esm/models/revert-award200-response.js +1 -1
  302. package/dist/esm/models/revoke-request-dto.d.ts +1 -1
  303. package/dist/esm/models/revoke-request-dto.js +1 -1
  304. package/dist/esm/models/semo-contract-registered-response-dto.d.ts +1 -1
  305. package/dist/esm/models/semo-contract-registered-response-dto.js +1 -1
  306. package/dist/esm/models/semo-contract-taxinvoice-status-response-dto.d.ts +1 -1
  307. package/dist/esm/models/semo-contract-taxinvoice-status-response-dto.js +1 -1
  308. package/dist/esm/models/send-webhook-test-event200-response.d.ts +1 -1
  309. package/dist/esm/models/send-webhook-test-event200-response.js +1 -1
  310. package/dist/esm/models/statement-document-dto.d.ts +1 -1
  311. package/dist/esm/models/statement-document-dto.js +1 -1
  312. package/dist/esm/models/statement-product-dto.d.ts +1 -1
  313. package/dist/esm/models/statement-product-dto.js +1 -1
  314. package/dist/esm/models/submit-negotiation-scores-request-dto.d.ts +1 -1
  315. package/dist/esm/models/submit-negotiation-scores-request-dto.js +1 -1
  316. package/dist/esm/models/submit-negotiation-scores201-response.d.ts +1 -1
  317. package/dist/esm/models/submit-negotiation-scores201-response.js +1 -1
  318. package/dist/esm/models/supplier-card-payable-response-dto.d.ts +1 -1
  319. package/dist/esm/models/supplier-card-payable-response-dto.js +1 -1
  320. package/dist/esm/models/supplier-tax-type.d.ts +1 -1
  321. package/dist/esm/models/supplier-tax-type.js +1 -1
  322. package/dist/esm/models/token-request-dto.d.ts +1 -1
  323. package/dist/esm/models/token-request-dto.js +1 -1
  324. package/dist/esm/models/token-response-dto.d.ts +1 -1
  325. package/dist/esm/models/token-response-dto.js +1 -1
  326. package/dist/esm/models/update-bid-request-dto.d.ts +1 -1
  327. package/dist/esm/models/update-bid-request-dto.js +1 -1
  328. package/dist/esm/models/update-bid200-response.d.ts +1 -1
  329. package/dist/esm/models/update-bid200-response.js +1 -1
  330. package/dist/esm/models/update-webhook-endpoint-request-dto.d.ts +1 -1
  331. package/dist/esm/models/update-webhook-endpoint-request-dto.js +1 -1
  332. package/dist/esm/models/upload-file-request-dto.d.ts +1 -1
  333. package/dist/esm/models/upload-file-request-dto.js +1 -1
  334. package/dist/esm/models/upload-file201-response.d.ts +1 -1
  335. package/dist/esm/models/upload-file201-response.js +1 -1
  336. package/dist/esm/models/upload-url-created-response-dto.d.ts +1 -1
  337. package/dist/esm/models/upload-url-created-response-dto.js +1 -1
  338. package/dist/esm/models/webhook-bid-event-data.d.ts +33 -0
  339. package/dist/esm/models/webhook-bid-event-data.js +14 -0
  340. package/dist/esm/models/webhook-delivery-dto.d.ts +1 -1
  341. package/dist/esm/models/webhook-delivery-dto.js +1 -1
  342. package/dist/esm/models/webhook-endpoint-dto.d.ts +1 -1
  343. package/dist/esm/models/webhook-endpoint-dto.js +1 -1
  344. package/dist/esm/models/webhook-endpoint-with-secret-dto.d.ts +1 -1
  345. package/dist/esm/models/webhook-endpoint-with-secret-dto.js +1 -1
  346. package/dist/esm/models/webhook-event-envelope.d.ts +34 -0
  347. package/dist/esm/models/webhook-event-envelope.js +14 -0
  348. package/dist/esm/models/webhook-ping-event-data.d.ts +20 -0
  349. package/dist/esm/models/webhook-ping-event-data.js +14 -0
  350. package/dist/esm/models/webhook-test-result-dto.d.ts +1 -1
  351. package/dist/esm/models/webhook-test-result-dto.js +1 -1
  352. package/dist/index.d.ts +1 -1
  353. package/dist/index.js +1 -1
  354. package/dist/models/acceptance-result-response-dto.d.ts +1 -1
  355. package/dist/models/acceptance-result-response-dto.js +1 -1
  356. package/dist/models/acknowledge-product-receipt200-response.d.ts +1 -1
  357. package/dist/models/acknowledge-product-receipt200-response.js +1 -1
  358. package/dist/models/acknowledge-products-request-dto.d.ts +1 -1
  359. package/dist/models/acknowledge-products-request-dto.js +1 -1
  360. package/dist/models/api-catalog-dto.d.ts +1 -1
  361. package/dist/models/api-catalog-dto.js +1 -1
  362. package/dist/models/api-catalog-entry-dto.d.ts +1 -1
  363. package/dist/models/api-catalog-entry-dto.js +1 -1
  364. package/dist/models/api-catalog-link-dto.d.ts +1 -1
  365. package/dist/models/api-catalog-link-dto.js +1 -1
  366. package/dist/models/authorization-server-metadata-dto.d.ts +1 -1
  367. package/dist/models/authorization-server-metadata-dto.js +1 -1
  368. package/dist/models/award-method-public.d.ts +1 -1
  369. package/dist/models/award-method-public.js +1 -1
  370. package/dist/models/award-registered-v2-response-dto.d.ts +1 -1
  371. package/dist/models/award-registered-v2-response-dto.js +1 -1
  372. package/dist/models/award-reverted-v2-response-dto.d.ts +1 -1
  373. package/dist/models/award-reverted-v2-response-dto.js +1 -1
  374. package/dist/models/bid-acceptance-dto.d.ts +1 -1
  375. package/dist/models/bid-acceptance-dto.js +1 -1
  376. package/dist/models/bid-attachment-input-dto.d.ts +1 -1
  377. package/dist/models/bid-attachment-input-dto.js +1 -1
  378. package/dist/models/bid-bond-dto.d.ts +1 -1
  379. package/dist/models/bid-bond-dto.js +1 -1
  380. package/dist/models/bid-cancelled-response-dto.d.ts +1 -1
  381. package/dist/models/bid-cancelled-response-dto.js +1 -1
  382. package/dist/models/bid-contact-dto.d.ts +1 -1
  383. package/dist/models/bid-contact-dto.js +1 -1
  384. package/dist/models/bid-contacts-dto.d.ts +1 -1
  385. package/dist/models/bid-contacts-dto.js +1 -1
  386. package/dist/models/bid-contract-document-dto.d.ts +1 -1
  387. package/dist/models/bid-contract-document-dto.js +1 -1
  388. package/dist/models/bid-delivery-terms-dto.d.ts +1 -1
  389. package/dist/models/bid-delivery-terms-dto.js +1 -1
  390. package/dist/models/bid-detail-response-dto.d.ts +1 -1
  391. package/dist/models/bid-detail-response-dto.js +1 -1
  392. package/dist/models/bid-document-dto.d.ts +1 -1
  393. package/dist/models/bid-document-dto.js +1 -1
  394. package/dist/models/bid-failed-v2-response-dto.d.ts +1 -1
  395. package/dist/models/bid-failed-v2-response-dto.js +1 -1
  396. package/dist/models/bid-item-dto.d.ts +1 -1
  397. package/dist/models/bid-item-dto.js +1 -1
  398. package/dist/models/bid-lifecycle-dto.d.ts +1 -1
  399. package/dist/models/bid-lifecycle-dto.js +1 -1
  400. package/dist/models/bid-manager-dto.d.ts +1 -1
  401. package/dist/models/bid-manager-dto.js +1 -1
  402. package/dist/models/bid-payment-terms-dto.d.ts +1 -1
  403. package/dist/models/bid-payment-terms-dto.js +1 -1
  404. package/dist/models/bid-product-dto.d.ts +1 -1
  405. package/dist/models/bid-product-dto.js +1 -1
  406. package/dist/models/bid-public-status.d.ts +1 -1
  407. package/dist/models/bid-public-status.js +1 -1
  408. package/dist/models/bid-registered-response-dto.d.ts +1 -1
  409. package/dist/models/bid-registered-response-dto.js +1 -1
  410. package/dist/models/bid-result-participant-attachment-dto.d.ts +1 -1
  411. package/dist/models/bid-result-participant-attachment-dto.js +1 -1
  412. package/dist/models/bid-result-participant-dto.d.ts +1 -1
  413. package/dist/models/bid-result-participant-dto.js +1 -1
  414. package/dist/models/bid-results-response-dto.d.ts +1 -1
  415. package/dist/models/bid-results-response-dto.js +1 -1
  416. package/dist/models/bid-settlement-line-item-dto.d.ts +1 -1
  417. package/dist/models/bid-settlement-line-item-dto.js +1 -1
  418. package/dist/models/bid-settlement-participant-dto.d.ts +1 -1
  419. package/dist/models/bid-settlement-participant-dto.js +1 -1
  420. package/dist/models/bid-settlement-response-dto.d.ts +1 -1
  421. package/dist/models/bid-settlement-response-dto.js +1 -1
  422. package/dist/models/bid-statement-response-dto.d.ts +1 -1
  423. package/dist/models/bid-statement-response-dto.js +1 -1
  424. package/dist/models/bid-summary-dto.d.ts +1 -1
  425. package/dist/models/bid-summary-dto.js +1 -1
  426. package/dist/models/bid-type-public.d.ts +1 -1
  427. package/dist/models/bid-type-public.js +1 -1
  428. package/dist/models/bid-updated-response-dto.d.ts +1 -1
  429. package/dist/models/bid-updated-response-dto.js +1 -1
  430. package/dist/models/cancel-bid-request-dto.d.ts +1 -1
  431. package/dist/models/cancel-bid-request-dto.js +1 -1
  432. package/dist/models/cancel-bid200-response.d.ts +1 -1
  433. package/dist/models/cancel-bid200-response.js +1 -1
  434. package/dist/models/card-payment-request-response-dto.d.ts +1 -1
  435. package/dist/models/card-payment-request-response-dto.js +1 -1
  436. package/dist/models/complete-acceptance-request-dto.d.ts +1 -1
  437. package/dist/models/complete-acceptance-request-dto.js +1 -1
  438. package/dist/models/complete-acceptance200-response.d.ts +1 -1
  439. package/dist/models/complete-acceptance200-response.js +1 -1
  440. package/dist/models/complete-invoice200-response.d.ts +1 -1
  441. package/dist/models/complete-invoice200-response.js +1 -1
  442. package/dist/models/complete-upload-request-dto.d.ts +1 -1
  443. package/dist/models/complete-upload-request-dto.js +1 -1
  444. package/dist/models/contract-restriction-confirm-input-dto.d.ts +1 -1
  445. package/dist/models/contract-restriction-confirm-input-dto.js +1 -1
  446. package/dist/models/create-bid-request-dto.d.ts +1 -1
  447. package/dist/models/create-bid-request-dto.js +1 -1
  448. package/dist/models/create-card-payment-dto.d.ts +1 -1
  449. package/dist/models/create-card-payment-dto.js +1 -1
  450. package/dist/models/create-card-payment-request-dto.d.ts +1 -1
  451. package/dist/models/create-card-payment-request-dto.js +1 -1
  452. package/dist/models/create-card-payment200-response.d.ts +1 -1
  453. package/dist/models/create-card-payment200-response.js +1 -1
  454. package/dist/models/create-embed-launch201-response.d.ts +1 -1
  455. package/dist/models/create-embed-launch201-response.js +1 -1
  456. package/dist/models/create-external-contract-documents-request-dto.d.ts +1 -1
  457. package/dist/models/create-external-contract-documents-request-dto.js +1 -1
  458. package/dist/models/create-external-contract-documents-response-dto.d.ts +1 -1
  459. package/dist/models/create-external-contract-documents-response-dto.js +1 -1
  460. package/dist/models/create-file-upload-url201-response.d.ts +1 -1
  461. package/dist/models/create-file-upload-url201-response.js +1 -1
  462. package/dist/models/create-upload-url-request-dto.d.ts +1 -1
  463. package/dist/models/create-upload-url-request-dto.js +1 -1
  464. package/dist/models/create-webhook-endpoint-request-dto.d.ts +1 -1
  465. package/dist/models/create-webhook-endpoint-request-dto.js +1 -1
  466. package/dist/models/create-webhook-endpoint201-response.d.ts +1 -1
  467. package/dist/models/create-webhook-endpoint201-response.js +1 -1
  468. package/dist/models/delivery-date-type-public.d.ts +1 -1
  469. package/dist/models/delivery-date-type-public.js +1 -1
  470. package/dist/models/delivery-method-public.d.ts +1 -1
  471. package/dist/models/delivery-method-public.js +1 -1
  472. package/dist/models/embed-launch-request-dto.d.ts +1 -1
  473. package/dist/models/embed-launch-request-dto.js +1 -1
  474. package/dist/models/embed-launch-response-dto.d.ts +1 -1
  475. package/dist/models/embed-launch-response-dto.js +1 -1
  476. package/dist/models/excellent-procurement-public.d.ts +1 -1
  477. package/dist/models/excellent-procurement-public.js +1 -1
  478. package/dist/models/external-contract-document-item-dto.d.ts +1 -1
  479. package/dist/models/external-contract-document-item-dto.js +1 -1
  480. package/dist/models/external-contract-documents-response-dto.d.ts +1 -1
  481. package/dist/models/external-contract-documents-response-dto.js +1 -1
  482. package/dist/models/external-contract-item-dto.d.ts +1 -1
  483. package/dist/models/external-contract-item-dto.js +1 -1
  484. package/dist/models/external-contract-snapshot-dto.d.ts +1 -1
  485. package/dist/models/external-contract-snapshot-dto.js +1 -1
  486. package/dist/models/external-document-inputs-dto.d.ts +1 -1
  487. package/dist/models/external-document-inputs-dto.js +1 -1
  488. package/dist/models/file-meta-response-dto.d.ts +1 -1
  489. package/dist/models/file-meta-response-dto.js +1 -1
  490. package/dist/models/file-uploaded-response-dto.d.ts +1 -1
  491. package/dist/models/file-uploaded-response-dto.js +1 -1
  492. package/dist/models/generated-external-contract-document-dto.d.ts +1 -1
  493. package/dist/models/generated-external-contract-document-dto.js +1 -1
  494. package/dist/models/get-bid-settlement200-response.d.ts +1 -1
  495. package/dist/models/get-bid-settlement200-response.js +1 -1
  496. package/dist/models/get-bid-statement200-response.d.ts +1 -1
  497. package/dist/models/get-bid-statement200-response.js +1 -1
  498. package/dist/models/get-bid200-response.d.ts +1 -1
  499. package/dist/models/get-bid200-response.js +1 -1
  500. package/dist/models/get-file-meta200-response.d.ts +1 -1
  501. package/dist/models/get-file-meta200-response.js +1 -1
  502. package/dist/models/get-supplier-card-payable-v2200-response.d.ts +1 -1
  503. package/dist/models/get-supplier-card-payable-v2200-response.js +1 -1
  504. package/dist/models/get-webhook-endpoint200-response.d.ts +1 -1
  505. package/dist/models/get-webhook-endpoint200-response.js +1 -1
  506. package/dist/models/green-product-public.d.ts +1 -1
  507. package/dist/models/green-product-public.js +1 -1
  508. package/dist/models/health-controller-check200-response.d.ts +1 -1
  509. package/dist/models/health-controller-check200-response.js +1 -1
  510. package/dist/models/health-response-dto.d.ts +1 -1
  511. package/dist/models/health-response-dto.js +1 -1
  512. package/dist/models/hierarchical-region-dto.d.ts +1 -1
  513. package/dist/models/hierarchical-region-dto.js +1 -1
  514. package/dist/models/index.d.ts +9 -0
  515. package/dist/models/index.js +9 -0
  516. package/dist/models/introspect-request-dto.d.ts +1 -1
  517. package/dist/models/introspect-request-dto.js +1 -1
  518. package/dist/models/introspection-response-dto.d.ts +1 -1
  519. package/dist/models/introspection-response-dto.js +1 -1
  520. package/dist/models/invalid-param-dto.d.ts +1 -1
  521. package/dist/models/invalid-param-dto.js +1 -1
  522. package/dist/models/invoice-completed-response-dto.d.ts +1 -1
  523. package/dist/models/invoice-completed-response-dto.js +1 -1
  524. package/dist/models/invoice-split-response-dto.d.ts +1 -1
  525. package/dist/models/invoice-split-response-dto.js +1 -1
  526. package/dist/models/legal-mandatory-public.d.ts +1 -1
  527. package/dist/models/legal-mandatory-public.js +1 -1
  528. package/dist/models/list-bid-results200-response.d.ts +1 -1
  529. package/dist/models/list-bid-results200-response.js +1 -1
  530. package/dist/models/list-bids200-response-meta.d.ts +1 -1
  531. package/dist/models/list-bids200-response-meta.js +1 -1
  532. package/dist/models/list-bids200-response.d.ts +1 -1
  533. package/dist/models/list-bids200-response.js +1 -1
  534. package/dist/models/list-products200-response.d.ts +1 -1
  535. package/dist/models/list-products200-response.js +1 -1
  536. package/dist/models/list-webhook-deliveries-response-dto.d.ts +1 -1
  537. package/dist/models/list-webhook-deliveries-response-dto.js +1 -1
  538. package/dist/models/list-webhook-deliveries200-response.d.ts +1 -1
  539. package/dist/models/list-webhook-deliveries200-response.js +1 -1
  540. package/dist/models/list-webhook-endpoints200-response.d.ts +1 -1
  541. package/dist/models/list-webhook-endpoints200-response.js +1 -1
  542. package/dist/models/mark-bid-failed-request-dto.d.ts +1 -1
  543. package/dist/models/mark-bid-failed-request-dto.js +1 -1
  544. package/dist/models/mark-bid-failed201-response.d.ts +1 -1
  545. package/dist/models/mark-bid-failed201-response.js +1 -1
  546. package/dist/models/negotiation-score-dto.d.ts +1 -1
  547. package/dist/models/negotiation-score-dto.js +1 -1
  548. package/dist/models/negotiation-scored-v2-response-dto.d.ts +1 -1
  549. package/dist/models/negotiation-scored-v2-response-dto.js +1 -1
  550. package/dist/models/oauth-error-response-dto.d.ts +1 -1
  551. package/dist/models/oauth-error-response-dto.js +1 -1
  552. package/dist/models/on-bid-award-reverted-request.d.ts +16 -0
  553. package/dist/models/on-bid-award-reverted-request.js +15 -0
  554. package/dist/models/on-bid-awarded-request.d.ts +16 -0
  555. package/dist/models/on-bid-awarded-request.js +15 -0
  556. package/dist/models/on-bid-canceled-request.d.ts +16 -0
  557. package/dist/models/on-bid-canceled-request.js +15 -0
  558. package/dist/models/on-bid-closed-request.d.ts +16 -0
  559. package/dist/models/on-bid-closed-request.js +15 -0
  560. package/dist/models/on-bid-failed-request.d.ts +16 -0
  561. package/dist/models/on-bid-failed-request.js +15 -0
  562. package/dist/models/on-ping-request.d.ts +16 -0
  563. package/dist/models/on-ping-request.js +15 -0
  564. package/dist/models/partner-webhook-delivery-status.d.ts +1 -1
  565. package/dist/models/partner-webhook-delivery-status.js +1 -1
  566. package/dist/models/partner-webhook-endpoint-status.d.ts +1 -1
  567. package/dist/models/partner-webhook-endpoint-status.js +1 -1
  568. package/dist/models/partner-webhook-event-type.d.ts +1 -1
  569. package/dist/models/partner-webhook-event-type.js +1 -1
  570. package/dist/models/payment-method-public.d.ts +1 -1
  571. package/dist/models/payment-method-public.js +1 -1
  572. package/dist/models/preconditions-dto.d.ts +1 -1
  573. package/dist/models/preconditions-dto.js +1 -1
  574. package/dist/models/problem-details-dto.d.ts +1 -1
  575. package/dist/models/problem-details-dto.js +1 -1
  576. package/dist/models/product-receipt-response-dto.d.ts +1 -1
  577. package/dist/models/product-receipt-response-dto.js +1 -1
  578. package/dist/models/product-response-dto.d.ts +1 -1
  579. package/dist/models/product-response-dto.js +1 -1
  580. package/dist/models/protected-resource-metadata-dto.d.ts +1 -1
  581. package/dist/models/protected-resource-metadata-dto.js +1 -1
  582. package/dist/models/register-award-request-dto.d.ts +1 -1
  583. package/dist/models/register-award-request-dto.js +1 -1
  584. package/dist/models/register-award201-response.d.ts +1 -1
  585. package/dist/models/register-award201-response.js +1 -1
  586. package/dist/models/register-bid201-response.d.ts +1 -1
  587. package/dist/models/register-bid201-response.js +1 -1
  588. package/dist/models/register-semo-contract-request-dto.d.ts +1 -1
  589. package/dist/models/register-semo-contract-request-dto.js +1 -1
  590. package/dist/models/request-invoice-split-request-dto.d.ts +1 -1
  591. package/dist/models/request-invoice-split-request-dto.js +1 -1
  592. package/dist/models/request-invoice-split200-response.d.ts +1 -1
  593. package/dist/models/request-invoice-split200-response.js +1 -1
  594. package/dist/models/retiree-roster-input-dto.d.ts +1 -1
  595. package/dist/models/retiree-roster-input-dto.js +1 -1
  596. package/dist/models/retiree-roster-row-dto.d.ts +1 -1
  597. package/dist/models/retiree-roster-row-dto.js +1 -1
  598. package/dist/models/revert-award-request-dto.d.ts +1 -1
  599. package/dist/models/revert-award-request-dto.js +1 -1
  600. package/dist/models/revert-award200-response.d.ts +1 -1
  601. package/dist/models/revert-award200-response.js +1 -1
  602. package/dist/models/revoke-request-dto.d.ts +1 -1
  603. package/dist/models/revoke-request-dto.js +1 -1
  604. package/dist/models/semo-contract-registered-response-dto.d.ts +1 -1
  605. package/dist/models/semo-contract-registered-response-dto.js +1 -1
  606. package/dist/models/semo-contract-taxinvoice-status-response-dto.d.ts +1 -1
  607. package/dist/models/semo-contract-taxinvoice-status-response-dto.js +1 -1
  608. package/dist/models/send-webhook-test-event200-response.d.ts +1 -1
  609. package/dist/models/send-webhook-test-event200-response.js +1 -1
  610. package/dist/models/statement-document-dto.d.ts +1 -1
  611. package/dist/models/statement-document-dto.js +1 -1
  612. package/dist/models/statement-product-dto.d.ts +1 -1
  613. package/dist/models/statement-product-dto.js +1 -1
  614. package/dist/models/submit-negotiation-scores-request-dto.d.ts +1 -1
  615. package/dist/models/submit-negotiation-scores-request-dto.js +1 -1
  616. package/dist/models/submit-negotiation-scores201-response.d.ts +1 -1
  617. package/dist/models/submit-negotiation-scores201-response.js +1 -1
  618. package/dist/models/supplier-card-payable-response-dto.d.ts +1 -1
  619. package/dist/models/supplier-card-payable-response-dto.js +1 -1
  620. package/dist/models/supplier-tax-type.d.ts +1 -1
  621. package/dist/models/supplier-tax-type.js +1 -1
  622. package/dist/models/token-request-dto.d.ts +1 -1
  623. package/dist/models/token-request-dto.js +1 -1
  624. package/dist/models/token-response-dto.d.ts +1 -1
  625. package/dist/models/token-response-dto.js +1 -1
  626. package/dist/models/update-bid-request-dto.d.ts +1 -1
  627. package/dist/models/update-bid-request-dto.js +1 -1
  628. package/dist/models/update-bid200-response.d.ts +1 -1
  629. package/dist/models/update-bid200-response.js +1 -1
  630. package/dist/models/update-webhook-endpoint-request-dto.d.ts +1 -1
  631. package/dist/models/update-webhook-endpoint-request-dto.js +1 -1
  632. package/dist/models/upload-file-request-dto.d.ts +1 -1
  633. package/dist/models/upload-file-request-dto.js +1 -1
  634. package/dist/models/upload-file201-response.d.ts +1 -1
  635. package/dist/models/upload-file201-response.js +1 -1
  636. package/dist/models/upload-url-created-response-dto.d.ts +1 -1
  637. package/dist/models/upload-url-created-response-dto.js +1 -1
  638. package/dist/models/webhook-bid-event-data.d.ts +33 -0
  639. package/dist/models/webhook-bid-event-data.js +15 -0
  640. package/dist/models/webhook-delivery-dto.d.ts +1 -1
  641. package/dist/models/webhook-delivery-dto.js +1 -1
  642. package/dist/models/webhook-endpoint-dto.d.ts +1 -1
  643. package/dist/models/webhook-endpoint-dto.js +1 -1
  644. package/dist/models/webhook-endpoint-with-secret-dto.d.ts +1 -1
  645. package/dist/models/webhook-endpoint-with-secret-dto.js +1 -1
  646. package/dist/models/webhook-event-envelope.d.ts +34 -0
  647. package/dist/models/webhook-event-envelope.js +15 -0
  648. package/dist/models/webhook-ping-event-data.d.ts +20 -0
  649. package/dist/models/webhook-ping-event-data.js +15 -0
  650. package/dist/models/webhook-test-result-dto.d.ts +1 -1
  651. package/dist/models/webhook-test-result-dto.js +1 -1
  652. package/docs/OnBidAwardRevertedRequest.md +26 -0
  653. package/docs/OnBidAwardedRequest.md +26 -0
  654. package/docs/OnBidCanceledRequest.md +26 -0
  655. package/docs/OnBidClosedRequest.md +26 -0
  656. package/docs/OnBidFailedRequest.md +26 -0
  657. package/docs/OnPingRequest.md +26 -0
  658. package/docs/PartnerApiApi.md +65 -13
  659. package/docs/ProductsApi.md +5 -1
  660. package/docs/WebhookBidEventData.md +27 -0
  661. package/docs/WebhookEventEnvelope.md +27 -0
  662. package/docs/WebhookPingEventData.md +21 -0
  663. package/docs/WebhooksApi.md +403 -0
  664. package/index.ts +1 -1
  665. package/models/acceptance-result-response-dto.ts +1 -1
  666. package/models/acknowledge-product-receipt200-response.ts +1 -1
  667. package/models/acknowledge-products-request-dto.ts +1 -1
  668. package/models/api-catalog-dto.ts +1 -1
  669. package/models/api-catalog-entry-dto.ts +1 -1
  670. package/models/api-catalog-link-dto.ts +1 -1
  671. package/models/authorization-server-metadata-dto.ts +1 -1
  672. package/models/award-method-public.ts +1 -1
  673. package/models/award-registered-v2-response-dto.ts +1 -1
  674. package/models/award-reverted-v2-response-dto.ts +1 -1
  675. package/models/bid-acceptance-dto.ts +1 -1
  676. package/models/bid-attachment-input-dto.ts +1 -1
  677. package/models/bid-bond-dto.ts +1 -1
  678. package/models/bid-cancelled-response-dto.ts +1 -1
  679. package/models/bid-contact-dto.ts +1 -1
  680. package/models/bid-contacts-dto.ts +1 -1
  681. package/models/bid-contract-document-dto.ts +1 -1
  682. package/models/bid-delivery-terms-dto.ts +1 -1
  683. package/models/bid-detail-response-dto.ts +1 -1
  684. package/models/bid-document-dto.ts +1 -1
  685. package/models/bid-failed-v2-response-dto.ts +1 -1
  686. package/models/bid-item-dto.ts +1 -1
  687. package/models/bid-lifecycle-dto.ts +1 -1
  688. package/models/bid-manager-dto.ts +1 -1
  689. package/models/bid-payment-terms-dto.ts +1 -1
  690. package/models/bid-product-dto.ts +1 -1
  691. package/models/bid-public-status.ts +1 -1
  692. package/models/bid-registered-response-dto.ts +1 -1
  693. package/models/bid-result-participant-attachment-dto.ts +1 -1
  694. package/models/bid-result-participant-dto.ts +1 -1
  695. package/models/bid-results-response-dto.ts +1 -1
  696. package/models/bid-settlement-line-item-dto.ts +1 -1
  697. package/models/bid-settlement-participant-dto.ts +1 -1
  698. package/models/bid-settlement-response-dto.ts +1 -1
  699. package/models/bid-statement-response-dto.ts +1 -1
  700. package/models/bid-summary-dto.ts +1 -1
  701. package/models/bid-type-public.ts +1 -1
  702. package/models/bid-updated-response-dto.ts +1 -1
  703. package/models/cancel-bid-request-dto.ts +1 -1
  704. package/models/cancel-bid200-response.ts +1 -1
  705. package/models/card-payment-request-response-dto.ts +1 -1
  706. package/models/complete-acceptance-request-dto.ts +1 -1
  707. package/models/complete-acceptance200-response.ts +1 -1
  708. package/models/complete-invoice200-response.ts +1 -1
  709. package/models/complete-upload-request-dto.ts +1 -1
  710. package/models/contract-restriction-confirm-input-dto.ts +1 -1
  711. package/models/create-bid-request-dto.ts +1 -1
  712. package/models/create-card-payment-dto.ts +1 -1
  713. package/models/create-card-payment-request-dto.ts +1 -1
  714. package/models/create-card-payment200-response.ts +1 -1
  715. package/models/create-embed-launch201-response.ts +1 -1
  716. package/models/create-external-contract-documents-request-dto.ts +1 -1
  717. package/models/create-external-contract-documents-response-dto.ts +1 -1
  718. package/models/create-file-upload-url201-response.ts +1 -1
  719. package/models/create-upload-url-request-dto.ts +1 -1
  720. package/models/create-webhook-endpoint-request-dto.ts +1 -1
  721. package/models/create-webhook-endpoint201-response.ts +1 -1
  722. package/models/delivery-date-type-public.ts +1 -1
  723. package/models/delivery-method-public.ts +1 -1
  724. package/models/embed-launch-request-dto.ts +1 -1
  725. package/models/embed-launch-response-dto.ts +1 -1
  726. package/models/excellent-procurement-public.ts +1 -1
  727. package/models/external-contract-document-item-dto.ts +1 -1
  728. package/models/external-contract-documents-response-dto.ts +1 -1
  729. package/models/external-contract-item-dto.ts +1 -1
  730. package/models/external-contract-snapshot-dto.ts +1 -1
  731. package/models/external-document-inputs-dto.ts +1 -1
  732. package/models/file-meta-response-dto.ts +1 -1
  733. package/models/file-uploaded-response-dto.ts +1 -1
  734. package/models/generated-external-contract-document-dto.ts +1 -1
  735. package/models/get-bid-settlement200-response.ts +1 -1
  736. package/models/get-bid-statement200-response.ts +1 -1
  737. package/models/get-bid200-response.ts +1 -1
  738. package/models/get-file-meta200-response.ts +1 -1
  739. package/models/get-supplier-card-payable-v2200-response.ts +1 -1
  740. package/models/get-webhook-endpoint200-response.ts +1 -1
  741. package/models/green-product-public.ts +1 -1
  742. package/models/health-controller-check200-response.ts +1 -1
  743. package/models/health-response-dto.ts +1 -1
  744. package/models/hierarchical-region-dto.ts +1 -1
  745. package/models/index.ts +9 -0
  746. package/models/introspect-request-dto.ts +1 -1
  747. package/models/introspection-response-dto.ts +1 -1
  748. package/models/invalid-param-dto.ts +1 -1
  749. package/models/invoice-completed-response-dto.ts +1 -1
  750. package/models/invoice-split-response-dto.ts +1 -1
  751. package/models/legal-mandatory-public.ts +1 -1
  752. package/models/list-bid-results200-response.ts +1 -1
  753. package/models/list-bids200-response-meta.ts +1 -1
  754. package/models/list-bids200-response.ts +1 -1
  755. package/models/list-products200-response.ts +1 -1
  756. package/models/list-webhook-deliveries-response-dto.ts +1 -1
  757. package/models/list-webhook-deliveries200-response.ts +1 -1
  758. package/models/list-webhook-endpoints200-response.ts +1 -1
  759. package/models/mark-bid-failed-request-dto.ts +1 -1
  760. package/models/mark-bid-failed201-response.ts +1 -1
  761. package/models/negotiation-score-dto.ts +1 -1
  762. package/models/negotiation-scored-v2-response-dto.ts +1 -1
  763. package/models/oauth-error-response-dto.ts +1 -1
  764. package/models/on-bid-award-reverted-request.ts +28 -0
  765. package/models/on-bid-awarded-request.ts +28 -0
  766. package/models/on-bid-canceled-request.ts +28 -0
  767. package/models/on-bid-closed-request.ts +28 -0
  768. package/models/on-bid-failed-request.ts +28 -0
  769. package/models/on-ping-request.ts +28 -0
  770. package/models/partner-webhook-delivery-status.ts +1 -1
  771. package/models/partner-webhook-endpoint-status.ts +1 -1
  772. package/models/partner-webhook-event-type.ts +1 -1
  773. package/models/payment-method-public.ts +1 -1
  774. package/models/preconditions-dto.ts +1 -1
  775. package/models/problem-details-dto.ts +1 -1
  776. package/models/product-receipt-response-dto.ts +1 -1
  777. package/models/product-response-dto.ts +1 -1
  778. package/models/protected-resource-metadata-dto.ts +1 -1
  779. package/models/register-award-request-dto.ts +1 -1
  780. package/models/register-award201-response.ts +1 -1
  781. package/models/register-bid201-response.ts +1 -1
  782. package/models/register-semo-contract-request-dto.ts +1 -1
  783. package/models/request-invoice-split-request-dto.ts +1 -1
  784. package/models/request-invoice-split200-response.ts +1 -1
  785. package/models/retiree-roster-input-dto.ts +1 -1
  786. package/models/retiree-roster-row-dto.ts +1 -1
  787. package/models/revert-award-request-dto.ts +1 -1
  788. package/models/revert-award200-response.ts +1 -1
  789. package/models/revoke-request-dto.ts +1 -1
  790. package/models/semo-contract-registered-response-dto.ts +1 -1
  791. package/models/semo-contract-taxinvoice-status-response-dto.ts +1 -1
  792. package/models/send-webhook-test-event200-response.ts +1 -1
  793. package/models/statement-document-dto.ts +1 -1
  794. package/models/statement-product-dto.ts +1 -1
  795. package/models/submit-negotiation-scores-request-dto.ts +1 -1
  796. package/models/submit-negotiation-scores201-response.ts +1 -1
  797. package/models/supplier-card-payable-response-dto.ts +1 -1
  798. package/models/supplier-tax-type.ts +1 -1
  799. package/models/token-request-dto.ts +1 -1
  800. package/models/token-response-dto.ts +1 -1
  801. package/models/update-bid-request-dto.ts +1 -1
  802. package/models/update-bid200-response.ts +1 -1
  803. package/models/update-webhook-endpoint-request-dto.ts +1 -1
  804. package/models/upload-file-request-dto.ts +1 -1
  805. package/models/upload-file201-response.ts +1 -1
  806. package/models/upload-url-created-response-dto.ts +1 -1
  807. package/models/webhook-bid-event-data.ts +43 -0
  808. package/models/webhook-delivery-dto.ts +1 -1
  809. package/models/webhook-endpoint-dto.ts +1 -1
  810. package/models/webhook-endpoint-with-secret-dto.ts +1 -1
  811. package/models/webhook-event-envelope.ts +38 -0
  812. package/models/webhook-ping-event-data.ts +26 -0
  813. package/models/webhook-test-result-dto.ts +1 -1
  814. package/package.json +1 -1
@@ -2,7 +2,7 @@
2
2
  * CMARKET V6 Partner API
3
3
  * 외부 ERP 연동용 RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` 플로우). `/oauth/token` 에서 토큰을 발급받아 `Authorization: Bearer <token>` 헤더로 실으세요. ## 권한 — 두 개의 독립된 축 `403` 을 만났다면 둘 중 어느 축에 걸린 것인지 먼저 구분하세요. - **스코프** = *무엇을 할 수 있나*. 토큰에 부여된 `bids:read`·`contracts:write` 등입니다. 미보유 시 `…/insufficient-scope`. - **대행 범위** = *누구의 데이터를 다룰 수 있나*. API 키 설정이며 스코프로 표현되지 않습니다. 범위 밖이면 스코프와 무관하게 403 입니다. 대행 범위는 키마다 둘 중 하나로 설정됩니다 — **소속 그룹 전원**(기관 키. 사업처·부서 계정이 새로 생겨도 자동 포함) 또는 **지정 발주처 목록**(계약으로 합의된 목록). 범위를 넓혀야 하면 스코프가 아니라 키 설정 변경을 요청하세요. ## 성공 응답 봉투 `/v2` 의 모든 2xx 본문은 `{ \"data\": … }` 입니다. 단일 리소스든 목록이든 같습니다. **목록은 `data` 가 배열이고 `meta` 가 항상 함께 실립니다** — `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 리소스 응답에는 `meta` 가 나가지 않습니다. 봉투를 쓰지 않는 표면은 둘입니다. `/oauth/_*` 와 `/.well-known/_*` 는 각각 RFC 6749·RFC 8414·RFC 9728 이 최상위 필드를 규정하고, 파일 내용 응답은 본문이 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 별로 적혀 있습니다. ### 멱등성 위반: 409 와 422 의 차이 - `409` `…/idempotency-key-conflict` — 같은 키의 **원 요청이 아직 처리 중**입니다. 잠시 뒤 같은 키로 다시 부르면 그 결과를 받습니다. - `422` `…/idempotency-key-reused` — 같은 키를 **다른 body** 로 보냈습니다. 재시도해도 영원히 같은 실패이니 새 키를 쓰거나 body 를 되돌리세요. ## Rate Limit 전역 **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` 가 실립니다. ## 전방호환 — 모르는 필드와 값에서 깨지지 않게 다음 셋은 breaking 변경으로 보지 않으며 minor 릴리스에서 예고 없이 일어납니다. 이 전제로 구현하세요. - **선택 필드 추가**: 모르는 필드는 무시하세요. 엄격 파서(unknown key 거부)를 쓰지 마세요. - **enum 값 추가**: 상태·낙찰방법 등에 새 값이 생깁니다. 모르는 값을 만나면 예외를 던지지 말고 원문 문자열을 보존하세요. - **problem `type` slug 추가**: 모르는 slug 은 **HTTP status 로 폴백**해 분기하세요. ## 버전 수명(deprecation/sunset) - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` 헤더로 통지합니다. 이 헤더를 모니터링하세요.
4
4
  *
5
- * The version of the OpenAPI document: 38.2.0
5
+ * The version of the OpenAPI document: 38.3.0
6
6
  * Contact: semo.io.kr@gmail.com
7
7
  *
8
8
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -162,35 +162,39 @@ export declare const PartnerApiApiAxiosParamCreator: (configuration?: Configurat
162
162
  * 공고의 모든 정보를 한 번에 조회합니다 — 기본 정보·납품/대금 조건·담당자·품목, 응찰 참여자(투찰가·순위·낙찰 여부), 계약서류, 검수 진행 상태, 라이프사이클 하위 상태. 스코프 `bids:read`. ERP 는 이 엔드포인트를 폴링해 async 처리(정산 마감 등)의 성사를 관측합니다. **낙찰 여부:** 이 응답의 `status` 가 아니라 `participants[].isWinner` 로 관측합니다. AWARDED 라는 공고 상태는 존재하지 않으며(낙찰 직후 공고는 CONTRACT_IN_PROGRESS 로 전이) `status === \'AWARDED\'` 를 기다리면 영원히 도달하지 않습니다. **여러 건을 한 번에:** 공고마다 이 조회를 반복하지 말고 `GET /v2/bid-results` 배치 조회를 쓰세요. **계약서류는 이 응답에 실립니다.** `contractDocuments[]` 가 서류별 `paperCode`·`paperName`· `fileKey`·`downloadUrl`·`uploadedAt`·`winnerSequence` 를 담습니다 — 계약서류만 따로 받는 엔드포인트는 두지 않습니다. `generationState` 는 **관측 전용**이며 `DEAD_LETTER` 가 보이면 자동 재시도가 소진된 상태라 API 로 되살릴 수 없습니다(운영에 문의하세요). **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
163
163
  * @summary 공고 상세 조회
164
164
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
165
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
165
166
  * @param {*} [options] Override http request option.
166
167
  * @throws {RequiredError}
167
168
  */
168
- getBid: (bidRef: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
169
+ getBid: (bidRef: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
169
170
  /**
170
171
  * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 다른 조회에서 일부 참가자 정보가 가려지는 경우와 무관하게, 이 정산 정보는 읽기 전용으로 항상 그대로 제공됩니다. **필수 스코프:** `invoices:read` — 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
171
172
  * @summary 정산 정보 조회
172
173
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
174
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
173
175
  * @param {*} [options] Override http request option.
174
176
  * @throws {RequiredError}
175
177
  */
176
- getBidSettlement: (bidRef: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
178
+ getBidSettlement: (bidRef: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
177
179
  /**
178
180
  * 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
179
181
  * @summary 거래명세서 조회
180
182
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
181
183
  * @param {number} [paperCode]
184
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
182
185
  * @param {*} [options] Override http request option.
183
186
  * @throws {RequiredError}
184
187
  */
185
- getBidStatement: (bidRef: string, paperCode?: number, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
188
+ getBidStatement: (bidRef: string, paperCode?: number, ifNoneMatch?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
186
189
  /**
187
190
  * 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **대부분은 이 조회가 필요 없습니다.** 공고·결과 응답의 첨부 항목에 파일명과 내려받기 주소 (`fileUrl`/`fullUrl`, 만료 없는 안정 주소)가 이미 실려 있습니다. 이 엔드포인트는 그 주소를 들고 있지 않고 `fileKey` 만 아는 경우(예: 업로드 직후 크기 확인)를 위한 것입니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** fileKey 는 **영문 대소문자·숫자 32자**이고, 그 형태가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. 키를 16진수(hex)로 가정해 클라이언트에서 걸러내지 마세요 — 업로드된 파일의 키에는 hex 가 아닌 문자가 들어갑니다. **필수 스코프:** `files:read`
188
191
  * @summary 파일 정보 조회
189
192
  * @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(영문 대소문자·숫자 32자).
193
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
190
194
  * @param {*} [options] Override http request option.
191
195
  * @throws {RequiredError}
192
196
  */
193
- getFileMeta: (fileKey: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
197
+ getFileMeta: (fileKey: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
194
198
  /**
195
199
  * 등록한 계약의 계산서 발행 상태를 확인합니다. **언제 쓰나:** 씨마켓이 보내는 발행완료 통지를 놓쳤을 때의 **복구 경로**입니다. 평상시에는 통지를 받아 처리하고, 상태가 어긋난 것 같을 때 이 API 로 되읽으세요. **필수 스코프:** `contracts:read`
196
200
  * @summary 계산서 발행 상태 조회
@@ -203,33 +207,37 @@ export declare const PartnerApiApiAxiosParamCreator: (configuration?: Configurat
203
207
  * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
204
208
  * @summary 공급사 카드결제 가능 여부
205
209
  * @param {string} memberId 계약업체 회원 ID
210
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
206
211
  * @param {*} [options] Override http request option.
207
212
  * @throws {RequiredError}
208
213
  */
209
- getSupplierCardPayableV2: (memberId: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
214
+ getSupplierCardPayableV2: (memberId: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
210
215
  /**
211
216
  * 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
212
217
  * @summary 웹훅 구독 단건 조회
213
218
  * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
219
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
214
220
  * @param {*} [options] Override http request option.
215
221
  * @throws {RequiredError}
216
222
  */
217
- getWebhookEndpoint: (endpointId: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
223
+ getWebhookEndpoint: (endpointId: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
218
224
  /**
219
225
  * ERP 연동 직전 회선·인증 endpoint 동작 확인용.
220
226
  * @summary Partner API 헬스체크
227
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
221
228
  * @param {*} [options] Override http request option.
222
229
  * @throws {RequiredError}
223
230
  */
224
- healthControllerCheck: (options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
231
+ healthControllerCheck: (ifNoneMatch?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
225
232
  /**
226
233
  * 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고를 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에 실린 `ETag` 를 다음 요청의 `If-None-Match` 로 되보내면, 결과가 그대로일 때 `304` 를 본문 없이 받습니다. **식별자 전달:** `?bidRefs=A,B,C`(쉼표) 또는 `?bidRefs=A&bidRefs=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다. 요청한 건수와 받은 건수가 다를 수 있으므로, 보낸 값이 공고번호였다면 `bidId` 로, 구매번호였다면 `purchaseNo` 로 대조하세요. **공고 하나만 볼 때도** `bidRefs` 에 하나만 넣으면 됩니다. 응찰 결과 외에 납품 조건·품목·계약서류까지 필요하면 `GET /v2/bids/{bidRef}` 상세 조회를 쓰세요.
227
234
  * @summary 공고 결과 조회
228
235
  * @param {string} bidRefs 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. 쉼표로 구분하거나 &#x60;bidRefs&#x60; 를 반복해 전달합니다. 최대 100건입니다.
236
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
229
237
  * @param {*} [options] Override http request option.
230
238
  * @throws {RequiredError}
231
239
  */
232
- listBidResults: (bidRefs: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
240
+ listBidResults: (bidRefs: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
233
241
  /**
234
242
  * 발주처(API 키 바인딩)의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(쿼리에 buyerId 를 넣지 않습니다). **페이지네이션(cursor):** `limit`(1~100, 기본 100) + `cursor`(불투명 토큰). 응답 `meta.nextCursor` 를 다음 요청 `cursor` 로 전달하면 다음 페이지를 받습니다. `meta.hasMore` 가 `false`(= `nextCursor` 가 `null`)이면 마지막 페이지입니다. 목록 자체는 `data` 에 배열로 실립니다. **상태·낙찰방법:** 공개값(의미 문자열)으로 반환됩니다. 낙찰 여부는 상태가 아니라 낙찰 결과 조회의 `participants[].isWinner` 로 관측합니다(AWARDED 상태는 없습니다).
235
243
  * @summary 공고 목록 조회
@@ -238,10 +246,11 @@ export declare const PartnerApiApiAxiosParamCreator: (configuration?: Configurat
238
246
  * @param {Array<string>} [bidRefs] 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. CSV 로 전달하며 최대 100건. 지정 시 그 공고만 조회합니다.
239
247
  * @param {Array<BidPublicStatus>} [status] 공고 상태 필터(공개값) CSV. 지정 시 그중 하나라도 일치하는 공고만 조회합니다.
240
248
  * @param {Array<ListBidsIncludeEnum>} [include] 행별 확장 부착 CSV. &#x60;results&#x60;&#x3D;응찰 참여자, &#x60;products&#x60;&#x3D;공고 등록 품목, &#x60;contacts&#x60;&#x3D;발주 담당자 성명·연락처·이메일. 미지정이면 부착하지 않는다(응답이 가볍고 조회 비용도 들지 않는다).
249
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
241
250
  * @param {*} [options] Override http request option.
242
251
  * @throws {RequiredError}
243
252
  */
244
- listBids: (limit?: number, cursor?: string, bidRefs?: Array<string>, status?: Array<BidPublicStatus>, include?: Array<ListBidsIncludeEnum>, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
253
+ listBids: (limit?: number, cursor?: string, bidRefs?: Array<string>, status?: Array<BidPublicStatus>, include?: Array<ListBidsIncludeEnum>, ifNoneMatch?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
245
254
  /**
246
255
  * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidRef}/contract-documents` 가 v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
247
256
  * @summary 거래에 필요한 계약서류 목록 조회
@@ -258,17 +267,19 @@ export declare const PartnerApiApiAxiosParamCreator: (configuration?: Configurat
258
267
  * @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
259
268
  * @param {number} [limit] 페이지 크기(1~200, 기본 50).
260
269
  * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달합니다. 미지정 시 첫 페이지.
270
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
261
271
  * @param {*} [options] Override http request option.
262
272
  * @throws {RequiredError}
263
273
  */
264
- listWebhookDeliveries: (endpointId?: string, status?: PartnerWebhookDeliveryStatus, limit?: number, cursor?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
274
+ listWebhookDeliveries: (endpointId?: string, status?: PartnerWebhookDeliveryStatus, limit?: number, cursor?: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
265
275
  /**
266
276
  * 이 API 키가 등록한 웹훅 구독을 모두 조회합니다. **호출 시점:** 연동 상태를 점검할 때, 또는 발송이 멈춘 이유(`status`·`consecutiveFailures`)를 확인할 때. 서명 시크릿은 여기에 실리지 않습니다. **필수 스코프:** `webhooks:read` ### 서명 검증 (필수) 서명은 **[Standard Webhooks](https://www.standardwebhooks.com)** 규약을 그대로 따릅니다. 직접 구현하지 말고 각 언어의 `standardwebhooks` 라이브러리에 등록 시 받은 시크릿 (`whsec_…`)을 그대로 넘기세요 — 그것이 이 형식을 쓰는 이유입니다. ```java // Java Webhook webhook = new Webhook(secret); // secret = \"whsec_…\" webhook.verify(rawBody, headers); // 실패하면 예외 ``` ```ts // Node / TypeScript import { Webhook } from \'standardwebhooks\'; new Webhook(secret).verify(rawBody, headers); ``` 라이브러리를 쓸 수 없다면 발송 요청에 실리는 헤더는 셋입니다. ``` webhook-id: evt_01J8Z7Q3K9 webhook-timestamp: 1774915200 webhook-signature: v1,K5oZfzN95Z9UVu1EsfQmfVNQhnkZ2pj9o9NDN/H/pI4= ``` 1. 시크릿에서 `whsec_` 접두어를 떼고 **base64 디코드**합니다 — 그 바이트가 HMAC 키입니다 (시크릿 문자열 자체가 아닙니다). 2. `\"${webhook-id}.${webhook-timestamp}.${본문 원문}\"` 을 만듭니다. **본문은 파싱 전 원문 바이트**여야 합니다 — JSON 을 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. HMAC-SHA256 을 계산해 **base64** 로 인코딩하고, `webhook-signature` 의 `v1,` 뒤 값과 비교합니다. 비교는 **상수 시간** 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `webhook-timestamp` 가 현재 시각에서 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). `webhook-signature` 는 공백으로 구분된 **여러 서명**을 실을 수 있는 형식입니다(키 회전용). 지금은 항상 하나지만, 검증기는 목록으로 읽고 **하나라도 맞으면 통과**하도록 짜세요. ### 중복 제거 `webhook-id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. 편의를 위해 `webhook-event-type` 헤더에 이벤트 타입(본문 `type` 과 같은 값)도 실립니다 — 본문을 파싱하기 전에 관심 없는 타입을 버릴 수 있습니다. 표준에는 없는 확장이라 검증 라이브러리는 이 헤더를 무시합니다. ### 응답과 재시도 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
267
277
  * @summary 웹훅 구독 목록 조회
278
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
268
279
  * @param {*} [options] Override http request option.
269
280
  * @throws {RequiredError}
270
281
  */
271
- listWebhookEndpoints: (options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
282
+ listWebhookEndpoints: (ifNoneMatch?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
272
283
  /**
273
284
  * 공고를 유찰 상태로 전환합니다. **호출 시점:** 입찰 마감 후 유찰 사유가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 공고 상태가 유찰(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` 헤더 필수.
274
285
  * @summary 유찰 처리
@@ -488,35 +499,39 @@ export declare const PartnerApiApiFp: (configuration?: Configuration) => {
488
499
  * 공고의 모든 정보를 한 번에 조회합니다 — 기본 정보·납품/대금 조건·담당자·품목, 응찰 참여자(투찰가·순위·낙찰 여부), 계약서류, 검수 진행 상태, 라이프사이클 하위 상태. 스코프 `bids:read`. ERP 는 이 엔드포인트를 폴링해 async 처리(정산 마감 등)의 성사를 관측합니다. **낙찰 여부:** 이 응답의 `status` 가 아니라 `participants[].isWinner` 로 관측합니다. AWARDED 라는 공고 상태는 존재하지 않으며(낙찰 직후 공고는 CONTRACT_IN_PROGRESS 로 전이) `status === \'AWARDED\'` 를 기다리면 영원히 도달하지 않습니다. **여러 건을 한 번에:** 공고마다 이 조회를 반복하지 말고 `GET /v2/bid-results` 배치 조회를 쓰세요. **계약서류는 이 응답에 실립니다.** `contractDocuments[]` 가 서류별 `paperCode`·`paperName`· `fileKey`·`downloadUrl`·`uploadedAt`·`winnerSequence` 를 담습니다 — 계약서류만 따로 받는 엔드포인트는 두지 않습니다. `generationState` 는 **관측 전용**이며 `DEAD_LETTER` 가 보이면 자동 재시도가 소진된 상태라 API 로 되살릴 수 없습니다(운영에 문의하세요). **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
489
500
  * @summary 공고 상세 조회
490
501
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
502
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
491
503
  * @param {*} [options] Override http request option.
492
504
  * @throws {RequiredError}
493
505
  */
494
- getBid(bidRef: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetBid200Response>>;
506
+ getBid(bidRef: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetBid200Response>>;
495
507
  /**
496
508
  * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 다른 조회에서 일부 참가자 정보가 가려지는 경우와 무관하게, 이 정산 정보는 읽기 전용으로 항상 그대로 제공됩니다. **필수 스코프:** `invoices:read` — 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
497
509
  * @summary 정산 정보 조회
498
510
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
511
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
499
512
  * @param {*} [options] Override http request option.
500
513
  * @throws {RequiredError}
501
514
  */
502
- getBidSettlement(bidRef: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetBidSettlement200Response>>;
515
+ getBidSettlement(bidRef: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetBidSettlement200Response>>;
503
516
  /**
504
517
  * 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
505
518
  * @summary 거래명세서 조회
506
519
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
507
520
  * @param {number} [paperCode]
521
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
508
522
  * @param {*} [options] Override http request option.
509
523
  * @throws {RequiredError}
510
524
  */
511
- getBidStatement(bidRef: string, paperCode?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetBidStatement200Response>>;
525
+ getBidStatement(bidRef: string, paperCode?: number, ifNoneMatch?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetBidStatement200Response>>;
512
526
  /**
513
527
  * 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **대부분은 이 조회가 필요 없습니다.** 공고·결과 응답의 첨부 항목에 파일명과 내려받기 주소 (`fileUrl`/`fullUrl`, 만료 없는 안정 주소)가 이미 실려 있습니다. 이 엔드포인트는 그 주소를 들고 있지 않고 `fileKey` 만 아는 경우(예: 업로드 직후 크기 확인)를 위한 것입니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** fileKey 는 **영문 대소문자·숫자 32자**이고, 그 형태가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. 키를 16진수(hex)로 가정해 클라이언트에서 걸러내지 마세요 — 업로드된 파일의 키에는 hex 가 아닌 문자가 들어갑니다. **필수 스코프:** `files:read`
514
528
  * @summary 파일 정보 조회
515
529
  * @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(영문 대소문자·숫자 32자).
530
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
516
531
  * @param {*} [options] Override http request option.
517
532
  * @throws {RequiredError}
518
533
  */
519
- getFileMeta(fileKey: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetFileMeta200Response>>;
534
+ getFileMeta(fileKey: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetFileMeta200Response>>;
520
535
  /**
521
536
  * 등록한 계약의 계산서 발행 상태를 확인합니다. **언제 쓰나:** 씨마켓이 보내는 발행완료 통지를 놓쳤을 때의 **복구 경로**입니다. 평상시에는 통지를 받아 처리하고, 상태가 어긋난 것 같을 때 이 API 로 되읽으세요. **필수 스코프:** `contracts:read`
522
537
  * @summary 계산서 발행 상태 조회
@@ -529,33 +544,37 @@ export declare const PartnerApiApiFp: (configuration?: Configuration) => {
529
544
  * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
530
545
  * @summary 공급사 카드결제 가능 여부
531
546
  * @param {string} memberId 계약업체 회원 ID
547
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
532
548
  * @param {*} [options] Override http request option.
533
549
  * @throws {RequiredError}
534
550
  */
535
- getSupplierCardPayableV2(memberId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetSupplierCardPayableV2200Response>>;
551
+ getSupplierCardPayableV2(memberId: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetSupplierCardPayableV2200Response>>;
536
552
  /**
537
553
  * 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
538
554
  * @summary 웹훅 구독 단건 조회
539
555
  * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
556
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
540
557
  * @param {*} [options] Override http request option.
541
558
  * @throws {RequiredError}
542
559
  */
543
- getWebhookEndpoint(endpointId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetWebhookEndpoint200Response>>;
560
+ getWebhookEndpoint(endpointId: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetWebhookEndpoint200Response>>;
544
561
  /**
545
562
  * ERP 연동 직전 회선·인증 endpoint 동작 확인용.
546
563
  * @summary Partner API 헬스체크
564
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
547
565
  * @param {*} [options] Override http request option.
548
566
  * @throws {RequiredError}
549
567
  */
550
- healthControllerCheck(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<HealthControllerCheck200Response>>;
568
+ healthControllerCheck(ifNoneMatch?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<HealthControllerCheck200Response>>;
551
569
  /**
552
570
  * 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고를 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에 실린 `ETag` 를 다음 요청의 `If-None-Match` 로 되보내면, 결과가 그대로일 때 `304` 를 본문 없이 받습니다. **식별자 전달:** `?bidRefs=A,B,C`(쉼표) 또는 `?bidRefs=A&bidRefs=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다. 요청한 건수와 받은 건수가 다를 수 있으므로, 보낸 값이 공고번호였다면 `bidId` 로, 구매번호였다면 `purchaseNo` 로 대조하세요. **공고 하나만 볼 때도** `bidRefs` 에 하나만 넣으면 됩니다. 응찰 결과 외에 납품 조건·품목·계약서류까지 필요하면 `GET /v2/bids/{bidRef}` 상세 조회를 쓰세요.
553
571
  * @summary 공고 결과 조회
554
572
  * @param {string} bidRefs 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. 쉼표로 구분하거나 &#x60;bidRefs&#x60; 를 반복해 전달합니다. 최대 100건입니다.
573
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
555
574
  * @param {*} [options] Override http request option.
556
575
  * @throws {RequiredError}
557
576
  */
558
- listBidResults(bidRefs: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListBidResults200Response>>;
577
+ listBidResults(bidRefs: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListBidResults200Response>>;
559
578
  /**
560
579
  * 발주처(API 키 바인딩)의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(쿼리에 buyerId 를 넣지 않습니다). **페이지네이션(cursor):** `limit`(1~100, 기본 100) + `cursor`(불투명 토큰). 응답 `meta.nextCursor` 를 다음 요청 `cursor` 로 전달하면 다음 페이지를 받습니다. `meta.hasMore` 가 `false`(= `nextCursor` 가 `null`)이면 마지막 페이지입니다. 목록 자체는 `data` 에 배열로 실립니다. **상태·낙찰방법:** 공개값(의미 문자열)으로 반환됩니다. 낙찰 여부는 상태가 아니라 낙찰 결과 조회의 `participants[].isWinner` 로 관측합니다(AWARDED 상태는 없습니다).
561
580
  * @summary 공고 목록 조회
@@ -564,10 +583,11 @@ export declare const PartnerApiApiFp: (configuration?: Configuration) => {
564
583
  * @param {Array<string>} [bidRefs] 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. CSV 로 전달하며 최대 100건. 지정 시 그 공고만 조회합니다.
565
584
  * @param {Array<BidPublicStatus>} [status] 공고 상태 필터(공개값) CSV. 지정 시 그중 하나라도 일치하는 공고만 조회합니다.
566
585
  * @param {Array<ListBidsIncludeEnum>} [include] 행별 확장 부착 CSV. &#x60;results&#x60;&#x3D;응찰 참여자, &#x60;products&#x60;&#x3D;공고 등록 품목, &#x60;contacts&#x60;&#x3D;발주 담당자 성명·연락처·이메일. 미지정이면 부착하지 않는다(응답이 가볍고 조회 비용도 들지 않는다).
586
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
567
587
  * @param {*} [options] Override http request option.
568
588
  * @throws {RequiredError}
569
589
  */
570
- listBids(limit?: number, cursor?: string, bidRefs?: Array<string>, status?: Array<BidPublicStatus>, include?: Array<ListBidsIncludeEnum>, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListBids200Response>>;
590
+ listBids(limit?: number, cursor?: string, bidRefs?: Array<string>, status?: Array<BidPublicStatus>, include?: Array<ListBidsIncludeEnum>, ifNoneMatch?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListBids200Response>>;
571
591
  /**
572
592
  * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidRef}/contract-documents` 가 v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
573
593
  * @summary 거래에 필요한 계약서류 목록 조회
@@ -584,17 +604,19 @@ export declare const PartnerApiApiFp: (configuration?: Configuration) => {
584
604
  * @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
585
605
  * @param {number} [limit] 페이지 크기(1~200, 기본 50).
586
606
  * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달합니다. 미지정 시 첫 페이지.
607
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
587
608
  * @param {*} [options] Override http request option.
588
609
  * @throws {RequiredError}
589
610
  */
590
- listWebhookDeliveries(endpointId?: string, status?: PartnerWebhookDeliveryStatus, limit?: number, cursor?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListWebhookDeliveries200Response>>;
611
+ listWebhookDeliveries(endpointId?: string, status?: PartnerWebhookDeliveryStatus, limit?: number, cursor?: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListWebhookDeliveries200Response>>;
591
612
  /**
592
613
  * 이 API 키가 등록한 웹훅 구독을 모두 조회합니다. **호출 시점:** 연동 상태를 점검할 때, 또는 발송이 멈춘 이유(`status`·`consecutiveFailures`)를 확인할 때. 서명 시크릿은 여기에 실리지 않습니다. **필수 스코프:** `webhooks:read` ### 서명 검증 (필수) 서명은 **[Standard Webhooks](https://www.standardwebhooks.com)** 규약을 그대로 따릅니다. 직접 구현하지 말고 각 언어의 `standardwebhooks` 라이브러리에 등록 시 받은 시크릿 (`whsec_…`)을 그대로 넘기세요 — 그것이 이 형식을 쓰는 이유입니다. ```java // Java Webhook webhook = new Webhook(secret); // secret = \"whsec_…\" webhook.verify(rawBody, headers); // 실패하면 예외 ``` ```ts // Node / TypeScript import { Webhook } from \'standardwebhooks\'; new Webhook(secret).verify(rawBody, headers); ``` 라이브러리를 쓸 수 없다면 발송 요청에 실리는 헤더는 셋입니다. ``` webhook-id: evt_01J8Z7Q3K9 webhook-timestamp: 1774915200 webhook-signature: v1,K5oZfzN95Z9UVu1EsfQmfVNQhnkZ2pj9o9NDN/H/pI4= ``` 1. 시크릿에서 `whsec_` 접두어를 떼고 **base64 디코드**합니다 — 그 바이트가 HMAC 키입니다 (시크릿 문자열 자체가 아닙니다). 2. `\"${webhook-id}.${webhook-timestamp}.${본문 원문}\"` 을 만듭니다. **본문은 파싱 전 원문 바이트**여야 합니다 — JSON 을 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. HMAC-SHA256 을 계산해 **base64** 로 인코딩하고, `webhook-signature` 의 `v1,` 뒤 값과 비교합니다. 비교는 **상수 시간** 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `webhook-timestamp` 가 현재 시각에서 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). `webhook-signature` 는 공백으로 구분된 **여러 서명**을 실을 수 있는 형식입니다(키 회전용). 지금은 항상 하나지만, 검증기는 목록으로 읽고 **하나라도 맞으면 통과**하도록 짜세요. ### 중복 제거 `webhook-id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. 편의를 위해 `webhook-event-type` 헤더에 이벤트 타입(본문 `type` 과 같은 값)도 실립니다 — 본문을 파싱하기 전에 관심 없는 타입을 버릴 수 있습니다. 표준에는 없는 확장이라 검증 라이브러리는 이 헤더를 무시합니다. ### 응답과 재시도 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
593
614
  * @summary 웹훅 구독 목록 조회
615
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
594
616
  * @param {*} [options] Override http request option.
595
617
  * @throws {RequiredError}
596
618
  */
597
- listWebhookEndpoints(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListWebhookEndpoints200Response>>;
619
+ listWebhookEndpoints(ifNoneMatch?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ListWebhookEndpoints200Response>>;
598
620
  /**
599
621
  * 공고를 유찰 상태로 전환합니다. **호출 시점:** 입찰 마감 후 유찰 사유가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 공고 상태가 유찰(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` 헤더 필수.
600
622
  * @summary 유찰 처리
@@ -814,35 +836,39 @@ export declare const PartnerApiApiFactory: (configuration?: Configuration, baseP
814
836
  * 공고의 모든 정보를 한 번에 조회합니다 — 기본 정보·납품/대금 조건·담당자·품목, 응찰 참여자(투찰가·순위·낙찰 여부), 계약서류, 검수 진행 상태, 라이프사이클 하위 상태. 스코프 `bids:read`. ERP 는 이 엔드포인트를 폴링해 async 처리(정산 마감 등)의 성사를 관측합니다. **낙찰 여부:** 이 응답의 `status` 가 아니라 `participants[].isWinner` 로 관측합니다. AWARDED 라는 공고 상태는 존재하지 않으며(낙찰 직후 공고는 CONTRACT_IN_PROGRESS 로 전이) `status === \'AWARDED\'` 를 기다리면 영원히 도달하지 않습니다. **여러 건을 한 번에:** 공고마다 이 조회를 반복하지 말고 `GET /v2/bid-results` 배치 조회를 쓰세요. **계약서류는 이 응답에 실립니다.** `contractDocuments[]` 가 서류별 `paperCode`·`paperName`· `fileKey`·`downloadUrl`·`uploadedAt`·`winnerSequence` 를 담습니다 — 계약서류만 따로 받는 엔드포인트는 두지 않습니다. `generationState` 는 **관측 전용**이며 `DEAD_LETTER` 가 보이면 자동 재시도가 소진된 상태라 API 로 되살릴 수 없습니다(운영에 문의하세요). **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
815
837
  * @summary 공고 상세 조회
816
838
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
839
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
817
840
  * @param {*} [options] Override http request option.
818
841
  * @throws {RequiredError}
819
842
  */
820
- getBid(bidRef: string, options?: RawAxiosRequestConfig): AxiosPromise<GetBid200Response>;
843
+ getBid(bidRef: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig): AxiosPromise<GetBid200Response>;
821
844
  /**
822
845
  * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 다른 조회에서 일부 참가자 정보가 가려지는 경우와 무관하게, 이 정산 정보는 읽기 전용으로 항상 그대로 제공됩니다. **필수 스코프:** `invoices:read` — 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
823
846
  * @summary 정산 정보 조회
824
847
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
848
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
825
849
  * @param {*} [options] Override http request option.
826
850
  * @throws {RequiredError}
827
851
  */
828
- getBidSettlement(bidRef: string, options?: RawAxiosRequestConfig): AxiosPromise<GetBidSettlement200Response>;
852
+ getBidSettlement(bidRef: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig): AxiosPromise<GetBidSettlement200Response>;
829
853
  /**
830
854
  * 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
831
855
  * @summary 거래명세서 조회
832
856
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
833
857
  * @param {number} [paperCode]
858
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
834
859
  * @param {*} [options] Override http request option.
835
860
  * @throws {RequiredError}
836
861
  */
837
- getBidStatement(bidRef: string, paperCode?: number, options?: RawAxiosRequestConfig): AxiosPromise<GetBidStatement200Response>;
862
+ getBidStatement(bidRef: string, paperCode?: number, ifNoneMatch?: string, options?: RawAxiosRequestConfig): AxiosPromise<GetBidStatement200Response>;
838
863
  /**
839
864
  * 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **대부분은 이 조회가 필요 없습니다.** 공고·결과 응답의 첨부 항목에 파일명과 내려받기 주소 (`fileUrl`/`fullUrl`, 만료 없는 안정 주소)가 이미 실려 있습니다. 이 엔드포인트는 그 주소를 들고 있지 않고 `fileKey` 만 아는 경우(예: 업로드 직후 크기 확인)를 위한 것입니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** fileKey 는 **영문 대소문자·숫자 32자**이고, 그 형태가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. 키를 16진수(hex)로 가정해 클라이언트에서 걸러내지 마세요 — 업로드된 파일의 키에는 hex 가 아닌 문자가 들어갑니다. **필수 스코프:** `files:read`
840
865
  * @summary 파일 정보 조회
841
866
  * @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(영문 대소문자·숫자 32자).
867
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
842
868
  * @param {*} [options] Override http request option.
843
869
  * @throws {RequiredError}
844
870
  */
845
- getFileMeta(fileKey: string, options?: RawAxiosRequestConfig): AxiosPromise<GetFileMeta200Response>;
871
+ getFileMeta(fileKey: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig): AxiosPromise<GetFileMeta200Response>;
846
872
  /**
847
873
  * 등록한 계약의 계산서 발행 상태를 확인합니다. **언제 쓰나:** 씨마켓이 보내는 발행완료 통지를 놓쳤을 때의 **복구 경로**입니다. 평상시에는 통지를 받아 처리하고, 상태가 어긋난 것 같을 때 이 API 로 되읽으세요. **필수 스코프:** `contracts:read`
848
874
  * @summary 계산서 발행 상태 조회
@@ -855,33 +881,37 @@ export declare const PartnerApiApiFactory: (configuration?: Configuration, baseP
855
881
  * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
856
882
  * @summary 공급사 카드결제 가능 여부
857
883
  * @param {string} memberId 계약업체 회원 ID
884
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
858
885
  * @param {*} [options] Override http request option.
859
886
  * @throws {RequiredError}
860
887
  */
861
- getSupplierCardPayableV2(memberId: string, options?: RawAxiosRequestConfig): AxiosPromise<GetSupplierCardPayableV2200Response>;
888
+ getSupplierCardPayableV2(memberId: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig): AxiosPromise<GetSupplierCardPayableV2200Response>;
862
889
  /**
863
890
  * 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
864
891
  * @summary 웹훅 구독 단건 조회
865
892
  * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
893
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
866
894
  * @param {*} [options] Override http request option.
867
895
  * @throws {RequiredError}
868
896
  */
869
- getWebhookEndpoint(endpointId: string, options?: RawAxiosRequestConfig): AxiosPromise<GetWebhookEndpoint200Response>;
897
+ getWebhookEndpoint(endpointId: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig): AxiosPromise<GetWebhookEndpoint200Response>;
870
898
  /**
871
899
  * ERP 연동 직전 회선·인증 endpoint 동작 확인용.
872
900
  * @summary Partner API 헬스체크
901
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
873
902
  * @param {*} [options] Override http request option.
874
903
  * @throws {RequiredError}
875
904
  */
876
- healthControllerCheck(options?: RawAxiosRequestConfig): AxiosPromise<HealthControllerCheck200Response>;
905
+ healthControllerCheck(ifNoneMatch?: string, options?: RawAxiosRequestConfig): AxiosPromise<HealthControllerCheck200Response>;
877
906
  /**
878
907
  * 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고를 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에 실린 `ETag` 를 다음 요청의 `If-None-Match` 로 되보내면, 결과가 그대로일 때 `304` 를 본문 없이 받습니다. **식별자 전달:** `?bidRefs=A,B,C`(쉼표) 또는 `?bidRefs=A&bidRefs=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다. 요청한 건수와 받은 건수가 다를 수 있으므로, 보낸 값이 공고번호였다면 `bidId` 로, 구매번호였다면 `purchaseNo` 로 대조하세요. **공고 하나만 볼 때도** `bidRefs` 에 하나만 넣으면 됩니다. 응찰 결과 외에 납품 조건·품목·계약서류까지 필요하면 `GET /v2/bids/{bidRef}` 상세 조회를 쓰세요.
879
908
  * @summary 공고 결과 조회
880
909
  * @param {string} bidRefs 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. 쉼표로 구분하거나 &#x60;bidRefs&#x60; 를 반복해 전달합니다. 최대 100건입니다.
910
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
881
911
  * @param {*} [options] Override http request option.
882
912
  * @throws {RequiredError}
883
913
  */
884
- listBidResults(bidRefs: string, options?: RawAxiosRequestConfig): AxiosPromise<ListBidResults200Response>;
914
+ listBidResults(bidRefs: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig): AxiosPromise<ListBidResults200Response>;
885
915
  /**
886
916
  * 발주처(API 키 바인딩)의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(쿼리에 buyerId 를 넣지 않습니다). **페이지네이션(cursor):** `limit`(1~100, 기본 100) + `cursor`(불투명 토큰). 응답 `meta.nextCursor` 를 다음 요청 `cursor` 로 전달하면 다음 페이지를 받습니다. `meta.hasMore` 가 `false`(= `nextCursor` 가 `null`)이면 마지막 페이지입니다. 목록 자체는 `data` 에 배열로 실립니다. **상태·낙찰방법:** 공개값(의미 문자열)으로 반환됩니다. 낙찰 여부는 상태가 아니라 낙찰 결과 조회의 `participants[].isWinner` 로 관측합니다(AWARDED 상태는 없습니다).
887
917
  * @summary 공고 목록 조회
@@ -890,10 +920,11 @@ export declare const PartnerApiApiFactory: (configuration?: Configuration, baseP
890
920
  * @param {Array<string>} [bidRefs] 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. CSV 로 전달하며 최대 100건. 지정 시 그 공고만 조회합니다.
891
921
  * @param {Array<BidPublicStatus>} [status] 공고 상태 필터(공개값) CSV. 지정 시 그중 하나라도 일치하는 공고만 조회합니다.
892
922
  * @param {Array<ListBidsIncludeEnum>} [include] 행별 확장 부착 CSV. &#x60;results&#x60;&#x3D;응찰 참여자, &#x60;products&#x60;&#x3D;공고 등록 품목, &#x60;contacts&#x60;&#x3D;발주 담당자 성명·연락처·이메일. 미지정이면 부착하지 않는다(응답이 가볍고 조회 비용도 들지 않는다).
923
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
893
924
  * @param {*} [options] Override http request option.
894
925
  * @throws {RequiredError}
895
926
  */
896
- listBids(limit?: number, cursor?: string, bidRefs?: Array<string>, status?: Array<BidPublicStatus>, include?: Array<ListBidsIncludeEnum>, options?: RawAxiosRequestConfig): AxiosPromise<ListBids200Response>;
927
+ listBids(limit?: number, cursor?: string, bidRefs?: Array<string>, status?: Array<BidPublicStatus>, include?: Array<ListBidsIncludeEnum>, ifNoneMatch?: string, options?: RawAxiosRequestConfig): AxiosPromise<ListBids200Response>;
897
928
  /**
898
929
  * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidRef}/contract-documents` 가 v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
899
930
  * @summary 거래에 필요한 계약서류 목록 조회
@@ -910,17 +941,19 @@ export declare const PartnerApiApiFactory: (configuration?: Configuration, baseP
910
941
  * @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
911
942
  * @param {number} [limit] 페이지 크기(1~200, 기본 50).
912
943
  * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달합니다. 미지정 시 첫 페이지.
944
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
913
945
  * @param {*} [options] Override http request option.
914
946
  * @throws {RequiredError}
915
947
  */
916
- listWebhookDeliveries(endpointId?: string, status?: PartnerWebhookDeliveryStatus, limit?: number, cursor?: string, options?: RawAxiosRequestConfig): AxiosPromise<ListWebhookDeliveries200Response>;
948
+ listWebhookDeliveries(endpointId?: string, status?: PartnerWebhookDeliveryStatus, limit?: number, cursor?: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig): AxiosPromise<ListWebhookDeliveries200Response>;
917
949
  /**
918
950
  * 이 API 키가 등록한 웹훅 구독을 모두 조회합니다. **호출 시점:** 연동 상태를 점검할 때, 또는 발송이 멈춘 이유(`status`·`consecutiveFailures`)를 확인할 때. 서명 시크릿은 여기에 실리지 않습니다. **필수 스코프:** `webhooks:read` ### 서명 검증 (필수) 서명은 **[Standard Webhooks](https://www.standardwebhooks.com)** 규약을 그대로 따릅니다. 직접 구현하지 말고 각 언어의 `standardwebhooks` 라이브러리에 등록 시 받은 시크릿 (`whsec_…`)을 그대로 넘기세요 — 그것이 이 형식을 쓰는 이유입니다. ```java // Java Webhook webhook = new Webhook(secret); // secret = \"whsec_…\" webhook.verify(rawBody, headers); // 실패하면 예외 ``` ```ts // Node / TypeScript import { Webhook } from \'standardwebhooks\'; new Webhook(secret).verify(rawBody, headers); ``` 라이브러리를 쓸 수 없다면 발송 요청에 실리는 헤더는 셋입니다. ``` webhook-id: evt_01J8Z7Q3K9 webhook-timestamp: 1774915200 webhook-signature: v1,K5oZfzN95Z9UVu1EsfQmfVNQhnkZ2pj9o9NDN/H/pI4= ``` 1. 시크릿에서 `whsec_` 접두어를 떼고 **base64 디코드**합니다 — 그 바이트가 HMAC 키입니다 (시크릿 문자열 자체가 아닙니다). 2. `\"${webhook-id}.${webhook-timestamp}.${본문 원문}\"` 을 만듭니다. **본문은 파싱 전 원문 바이트**여야 합니다 — JSON 을 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. HMAC-SHA256 을 계산해 **base64** 로 인코딩하고, `webhook-signature` 의 `v1,` 뒤 값과 비교합니다. 비교는 **상수 시간** 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `webhook-timestamp` 가 현재 시각에서 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). `webhook-signature` 는 공백으로 구분된 **여러 서명**을 실을 수 있는 형식입니다(키 회전용). 지금은 항상 하나지만, 검증기는 목록으로 읽고 **하나라도 맞으면 통과**하도록 짜세요. ### 중복 제거 `webhook-id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. 편의를 위해 `webhook-event-type` 헤더에 이벤트 타입(본문 `type` 과 같은 값)도 실립니다 — 본문을 파싱하기 전에 관심 없는 타입을 버릴 수 있습니다. 표준에는 없는 확장이라 검증 라이브러리는 이 헤더를 무시합니다. ### 응답과 재시도 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
919
951
  * @summary 웹훅 구독 목록 조회
952
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
920
953
  * @param {*} [options] Override http request option.
921
954
  * @throws {RequiredError}
922
955
  */
923
- listWebhookEndpoints(options?: RawAxiosRequestConfig): AxiosPromise<ListWebhookEndpoints200Response>;
956
+ listWebhookEndpoints(ifNoneMatch?: string, options?: RawAxiosRequestConfig): AxiosPromise<ListWebhookEndpoints200Response>;
924
957
  /**
925
958
  * 공고를 유찰 상태로 전환합니다. **호출 시점:** 입찰 마감 후 유찰 사유가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 공고 상태가 유찰(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` 헤더 필수.
926
959
  * @summary 유찰 처리
@@ -1140,35 +1173,39 @@ export declare class PartnerApiApi extends BaseAPI {
1140
1173
  * 공고의 모든 정보를 한 번에 조회합니다 — 기본 정보·납품/대금 조건·담당자·품목, 응찰 참여자(투찰가·순위·낙찰 여부), 계약서류, 검수 진행 상태, 라이프사이클 하위 상태. 스코프 `bids:read`. ERP 는 이 엔드포인트를 폴링해 async 처리(정산 마감 등)의 성사를 관측합니다. **낙찰 여부:** 이 응답의 `status` 가 아니라 `participants[].isWinner` 로 관측합니다. AWARDED 라는 공고 상태는 존재하지 않으며(낙찰 직후 공고는 CONTRACT_IN_PROGRESS 로 전이) `status === \'AWARDED\'` 를 기다리면 영원히 도달하지 않습니다. **여러 건을 한 번에:** 공고마다 이 조회를 반복하지 말고 `GET /v2/bid-results` 배치 조회를 쓰세요. **계약서류는 이 응답에 실립니다.** `contractDocuments[]` 가 서류별 `paperCode`·`paperName`· `fileKey`·`downloadUrl`·`uploadedAt`·`winnerSequence` 를 담습니다 — 계약서류만 따로 받는 엔드포인트는 두지 않습니다. `generationState` 는 **관측 전용**이며 `DEAD_LETTER` 가 보이면 자동 재시도가 소진된 상태라 API 로 되살릴 수 없습니다(운영에 문의하세요). **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
1141
1174
  * @summary 공고 상세 조회
1142
1175
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
1176
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
1143
1177
  * @param {*} [options] Override http request option.
1144
1178
  * @throws {RequiredError}
1145
1179
  */
1146
- getBid(bidRef: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<GetBid200Response, any, {}>>;
1180
+ getBid(bidRef: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<GetBid200Response, any, {}>>;
1147
1181
  /**
1148
1182
  * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 다른 조회에서 일부 참가자 정보가 가려지는 경우와 무관하게, 이 정산 정보는 읽기 전용으로 항상 그대로 제공됩니다. **필수 스코프:** `invoices:read` — 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
1149
1183
  * @summary 정산 정보 조회
1150
1184
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
1185
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
1151
1186
  * @param {*} [options] Override http request option.
1152
1187
  * @throws {RequiredError}
1153
1188
  */
1154
- getBidSettlement(bidRef: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<GetBidSettlement200Response, any, {}>>;
1189
+ getBidSettlement(bidRef: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<GetBidSettlement200Response, any, {}>>;
1155
1190
  /**
1156
1191
  * 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
1157
1192
  * @summary 거래명세서 조회
1158
1193
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
1159
1194
  * @param {number} [paperCode]
1195
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
1160
1196
  * @param {*} [options] Override http request option.
1161
1197
  * @throws {RequiredError}
1162
1198
  */
1163
- getBidStatement(bidRef: string, paperCode?: number, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<GetBidStatement200Response, any, {}>>;
1199
+ getBidStatement(bidRef: string, paperCode?: number, ifNoneMatch?: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<GetBidStatement200Response, any, {}>>;
1164
1200
  /**
1165
1201
  * 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **대부분은 이 조회가 필요 없습니다.** 공고·결과 응답의 첨부 항목에 파일명과 내려받기 주소 (`fileUrl`/`fullUrl`, 만료 없는 안정 주소)가 이미 실려 있습니다. 이 엔드포인트는 그 주소를 들고 있지 않고 `fileKey` 만 아는 경우(예: 업로드 직후 크기 확인)를 위한 것입니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** fileKey 는 **영문 대소문자·숫자 32자**이고, 그 형태가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. 키를 16진수(hex)로 가정해 클라이언트에서 걸러내지 마세요 — 업로드된 파일의 키에는 hex 가 아닌 문자가 들어갑니다. **필수 스코프:** `files:read`
1166
1202
  * @summary 파일 정보 조회
1167
1203
  * @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(영문 대소문자·숫자 32자).
1204
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
1168
1205
  * @param {*} [options] Override http request option.
1169
1206
  * @throws {RequiredError}
1170
1207
  */
1171
- getFileMeta(fileKey: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<GetFileMeta200Response, any, {}>>;
1208
+ getFileMeta(fileKey: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<GetFileMeta200Response, any, {}>>;
1172
1209
  /**
1173
1210
  * 등록한 계약의 계산서 발행 상태를 확인합니다. **언제 쓰나:** 씨마켓이 보내는 발행완료 통지를 놓쳤을 때의 **복구 경로**입니다. 평상시에는 통지를 받아 처리하고, 상태가 어긋난 것 같을 때 이 API 로 되읽으세요. **필수 스코프:** `contracts:read`
1174
1211
  * @summary 계산서 발행 상태 조회
@@ -1181,33 +1218,37 @@ export declare class PartnerApiApi extends BaseAPI {
1181
1218
  * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
1182
1219
  * @summary 공급사 카드결제 가능 여부
1183
1220
  * @param {string} memberId 계약업체 회원 ID
1221
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
1184
1222
  * @param {*} [options] Override http request option.
1185
1223
  * @throws {RequiredError}
1186
1224
  */
1187
- getSupplierCardPayableV2(memberId: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<GetSupplierCardPayableV2200Response, any, {}>>;
1225
+ getSupplierCardPayableV2(memberId: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<GetSupplierCardPayableV2200Response, any, {}>>;
1188
1226
  /**
1189
1227
  * 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
1190
1228
  * @summary 웹훅 구독 단건 조회
1191
1229
  * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
1230
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
1192
1231
  * @param {*} [options] Override http request option.
1193
1232
  * @throws {RequiredError}
1194
1233
  */
1195
- getWebhookEndpoint(endpointId: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<GetWebhookEndpoint200Response, any, {}>>;
1234
+ getWebhookEndpoint(endpointId: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<GetWebhookEndpoint200Response, any, {}>>;
1196
1235
  /**
1197
1236
  * ERP 연동 직전 회선·인증 endpoint 동작 확인용.
1198
1237
  * @summary Partner API 헬스체크
1238
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
1199
1239
  * @param {*} [options] Override http request option.
1200
1240
  * @throws {RequiredError}
1201
1241
  */
1202
- healthControllerCheck(options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<HealthControllerCheck200Response, any, {}>>;
1242
+ healthControllerCheck(ifNoneMatch?: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<HealthControllerCheck200Response, any, {}>>;
1203
1243
  /**
1204
1244
  * 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고를 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에 실린 `ETag` 를 다음 요청의 `If-None-Match` 로 되보내면, 결과가 그대로일 때 `304` 를 본문 없이 받습니다. **식별자 전달:** `?bidRefs=A,B,C`(쉼표) 또는 `?bidRefs=A&bidRefs=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다. 요청한 건수와 받은 건수가 다를 수 있으므로, 보낸 값이 공고번호였다면 `bidId` 로, 구매번호였다면 `purchaseNo` 로 대조하세요. **공고 하나만 볼 때도** `bidRefs` 에 하나만 넣으면 됩니다. 응찰 결과 외에 납품 조건·품목·계약서류까지 필요하면 `GET /v2/bids/{bidRef}` 상세 조회를 쓰세요.
1205
1245
  * @summary 공고 결과 조회
1206
1246
  * @param {string} bidRefs 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. 쉼표로 구분하거나 &#x60;bidRefs&#x60; 를 반복해 전달합니다. 최대 100건입니다.
1247
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
1207
1248
  * @param {*} [options] Override http request option.
1208
1249
  * @throws {RequiredError}
1209
1250
  */
1210
- listBidResults(bidRefs: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ListBidResults200Response, any, {}>>;
1251
+ listBidResults(bidRefs: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ListBidResults200Response, any, {}>>;
1211
1252
  /**
1212
1253
  * 발주처(API 키 바인딩)의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(쿼리에 buyerId 를 넣지 않습니다). **페이지네이션(cursor):** `limit`(1~100, 기본 100) + `cursor`(불투명 토큰). 응답 `meta.nextCursor` 를 다음 요청 `cursor` 로 전달하면 다음 페이지를 받습니다. `meta.hasMore` 가 `false`(= `nextCursor` 가 `null`)이면 마지막 페이지입니다. 목록 자체는 `data` 에 배열로 실립니다. **상태·낙찰방법:** 공개값(의미 문자열)으로 반환됩니다. 낙찰 여부는 상태가 아니라 낙찰 결과 조회의 `participants[].isWinner` 로 관측합니다(AWARDED 상태는 없습니다).
1213
1254
  * @summary 공고 목록 조회
@@ -1216,10 +1257,11 @@ export declare class PartnerApiApi extends BaseAPI {
1216
1257
  * @param {Array<string>} [bidRefs] 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. CSV 로 전달하며 최대 100건. 지정 시 그 공고만 조회합니다.
1217
1258
  * @param {Array<BidPublicStatus>} [status] 공고 상태 필터(공개값) CSV. 지정 시 그중 하나라도 일치하는 공고만 조회합니다.
1218
1259
  * @param {Array<ListBidsIncludeEnum>} [include] 행별 확장 부착 CSV. &#x60;results&#x60;&#x3D;응찰 참여자, &#x60;products&#x60;&#x3D;공고 등록 품목, &#x60;contacts&#x60;&#x3D;발주 담당자 성명·연락처·이메일. 미지정이면 부착하지 않는다(응답이 가볍고 조회 비용도 들지 않는다).
1260
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
1219
1261
  * @param {*} [options] Override http request option.
1220
1262
  * @throws {RequiredError}
1221
1263
  */
1222
- listBids(limit?: number, cursor?: string, bidRefs?: Array<string>, status?: Array<BidPublicStatus>, include?: Array<ListBidsIncludeEnum>, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ListBids200Response, any, {}>>;
1264
+ listBids(limit?: number, cursor?: string, bidRefs?: Array<string>, status?: Array<BidPublicStatus>, include?: Array<ListBidsIncludeEnum>, ifNoneMatch?: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ListBids200Response, any, {}>>;
1223
1265
  /**
1224
1266
  * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidRef}/contract-documents` 가 v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
1225
1267
  * @summary 거래에 필요한 계약서류 목록 조회
@@ -1236,17 +1278,19 @@ export declare class PartnerApiApi extends BaseAPI {
1236
1278
  * @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
1237
1279
  * @param {number} [limit] 페이지 크기(1~200, 기본 50).
1238
1280
  * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달합니다. 미지정 시 첫 페이지.
1281
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
1239
1282
  * @param {*} [options] Override http request option.
1240
1283
  * @throws {RequiredError}
1241
1284
  */
1242
- listWebhookDeliveries(endpointId?: string, status?: PartnerWebhookDeliveryStatus, limit?: number, cursor?: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ListWebhookDeliveries200Response, any, {}>>;
1285
+ listWebhookDeliveries(endpointId?: string, status?: PartnerWebhookDeliveryStatus, limit?: number, cursor?: string, ifNoneMatch?: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ListWebhookDeliveries200Response, any, {}>>;
1243
1286
  /**
1244
1287
  * 이 API 키가 등록한 웹훅 구독을 모두 조회합니다. **호출 시점:** 연동 상태를 점검할 때, 또는 발송이 멈춘 이유(`status`·`consecutiveFailures`)를 확인할 때. 서명 시크릿은 여기에 실리지 않습니다. **필수 스코프:** `webhooks:read` ### 서명 검증 (필수) 서명은 **[Standard Webhooks](https://www.standardwebhooks.com)** 규약을 그대로 따릅니다. 직접 구현하지 말고 각 언어의 `standardwebhooks` 라이브러리에 등록 시 받은 시크릿 (`whsec_…`)을 그대로 넘기세요 — 그것이 이 형식을 쓰는 이유입니다. ```java // Java Webhook webhook = new Webhook(secret); // secret = \"whsec_…\" webhook.verify(rawBody, headers); // 실패하면 예외 ``` ```ts // Node / TypeScript import { Webhook } from \'standardwebhooks\'; new Webhook(secret).verify(rawBody, headers); ``` 라이브러리를 쓸 수 없다면 발송 요청에 실리는 헤더는 셋입니다. ``` webhook-id: evt_01J8Z7Q3K9 webhook-timestamp: 1774915200 webhook-signature: v1,K5oZfzN95Z9UVu1EsfQmfVNQhnkZ2pj9o9NDN/H/pI4= ``` 1. 시크릿에서 `whsec_` 접두어를 떼고 **base64 디코드**합니다 — 그 바이트가 HMAC 키입니다 (시크릿 문자열 자체가 아닙니다). 2. `\"${webhook-id}.${webhook-timestamp}.${본문 원문}\"` 을 만듭니다. **본문은 파싱 전 원문 바이트**여야 합니다 — JSON 을 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. HMAC-SHA256 을 계산해 **base64** 로 인코딩하고, `webhook-signature` 의 `v1,` 뒤 값과 비교합니다. 비교는 **상수 시간** 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `webhook-timestamp` 가 현재 시각에서 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). `webhook-signature` 는 공백으로 구분된 **여러 서명**을 실을 수 있는 형식입니다(키 회전용). 지금은 항상 하나지만, 검증기는 목록으로 읽고 **하나라도 맞으면 통과**하도록 짜세요. ### 중복 제거 `webhook-id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. 편의를 위해 `webhook-event-type` 헤더에 이벤트 타입(본문 `type` 과 같은 값)도 실립니다 — 본문을 파싱하기 전에 관심 없는 타입을 버릴 수 있습니다. 표준에는 없는 확장이라 검증 라이브러리는 이 헤더를 무시합니다. ### 응답과 재시도 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
1245
1288
  * @summary 웹훅 구독 목록 조회
1289
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
1246
1290
  * @param {*} [options] Override http request option.
1247
1291
  * @throws {RequiredError}
1248
1292
  */
1249
- listWebhookEndpoints(options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ListWebhookEndpoints200Response, any, {}>>;
1293
+ listWebhookEndpoints(ifNoneMatch?: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ListWebhookEndpoints200Response, any, {}>>;
1250
1294
  /**
1251
1295
  * 공고를 유찰 상태로 전환합니다. **호출 시점:** 입찰 마감 후 유찰 사유가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 공고 상태가 유찰(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` 헤더 필수.
1252
1296
  * @summary 유찰 처리