@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
@@ -4,7 +4,7 @@
4
4
  * CMARKET V6 Partner API
5
5
  * 외부 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` 헤더로 통지합니다. 이 헤더를 모니터링하세요.
6
6
  *
7
- * The version of the OpenAPI document: 38.2.0
7
+ * The version of the OpenAPI document: 38.3.0
8
8
  * Contact: semo.io.kr@gmail.com
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -440,10 +440,11 @@ export const PartnerApiApiAxiosParamCreator = function (configuration) {
440
440
  * 공고의 모든 정보를 한 번에 조회합니다 — 기본 정보·납품/대금 조건·담당자·품목, 응찰 참여자(투찰가·순위·낙찰 여부), 계약서류, 검수 진행 상태, 라이프사이클 하위 상태. 스코프 `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).
441
441
  * @summary 공고 상세 조회
442
442
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
443
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
443
444
  * @param {*} [options] Override http request option.
444
445
  * @throws {RequiredError}
445
446
  */
446
- getBid: (bidRef_1, ...args_1) => __awaiter(this, [bidRef_1, ...args_1], void 0, function* (bidRef, options = {}) {
447
+ getBid: (bidRef_1, ifNoneMatch_1, ...args_1) => __awaiter(this, [bidRef_1, ifNoneMatch_1, ...args_1], void 0, function* (bidRef, ifNoneMatch, options = {}) {
447
448
  // verify required parameter 'bidRef' is not null or undefined
448
449
  assertParamExists('getBid', 'bidRef', bidRef);
449
450
  const localVarPath = `/v2/bids/{bidRef}`
@@ -461,6 +462,9 @@ export const PartnerApiApiAxiosParamCreator = function (configuration) {
461
462
  // oauth required
462
463
  yield setOAuthToObject(localVarHeaderParameter, "partner-oauth2", ["bids:read"], configuration);
463
464
  localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
465
+ if (ifNoneMatch != null) {
466
+ localVarHeaderParameter['If-None-Match'] = String(ifNoneMatch);
467
+ }
464
468
  setSearchParams(localVarUrlObj, localVarQueryParameter);
465
469
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
466
470
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -473,10 +477,11 @@ export const PartnerApiApiAxiosParamCreator = function (configuration) {
473
477
  * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 다른 조회에서 일부 참가자 정보가 가려지는 경우와 무관하게, 이 정산 정보는 읽기 전용으로 항상 그대로 제공됩니다. **필수 스코프:** `invoices:read` — 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
474
478
  * @summary 정산 정보 조회
475
479
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
480
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
476
481
  * @param {*} [options] Override http request option.
477
482
  * @throws {RequiredError}
478
483
  */
479
- getBidSettlement: (bidRef_1, ...args_1) => __awaiter(this, [bidRef_1, ...args_1], void 0, function* (bidRef, options = {}) {
484
+ getBidSettlement: (bidRef_1, ifNoneMatch_1, ...args_1) => __awaiter(this, [bidRef_1, ifNoneMatch_1, ...args_1], void 0, function* (bidRef, ifNoneMatch, options = {}) {
480
485
  // verify required parameter 'bidRef' is not null or undefined
481
486
  assertParamExists('getBidSettlement', 'bidRef', bidRef);
482
487
  const localVarPath = `/v2/bids/{bidRef}/settlement`
@@ -494,6 +499,9 @@ export const PartnerApiApiAxiosParamCreator = function (configuration) {
494
499
  // oauth required
495
500
  yield setOAuthToObject(localVarHeaderParameter, "partner-oauth2", ["invoices:read"], configuration);
496
501
  localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
502
+ if (ifNoneMatch != null) {
503
+ localVarHeaderParameter['If-None-Match'] = String(ifNoneMatch);
504
+ }
497
505
  setSearchParams(localVarUrlObj, localVarQueryParameter);
498
506
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
499
507
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -507,10 +515,11 @@ export const PartnerApiApiAxiosParamCreator = function (configuration) {
507
515
  * @summary 거래명세서 조회
508
516
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
509
517
  * @param {number} [paperCode]
518
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
510
519
  * @param {*} [options] Override http request option.
511
520
  * @throws {RequiredError}
512
521
  */
513
- getBidStatement: (bidRef_1, paperCode_1, ...args_1) => __awaiter(this, [bidRef_1, paperCode_1, ...args_1], void 0, function* (bidRef, paperCode, options = {}) {
522
+ getBidStatement: (bidRef_1, paperCode_1, ifNoneMatch_1, ...args_1) => __awaiter(this, [bidRef_1, paperCode_1, ifNoneMatch_1, ...args_1], void 0, function* (bidRef, paperCode, ifNoneMatch, options = {}) {
514
523
  // verify required parameter 'bidRef' is not null or undefined
515
524
  assertParamExists('getBidStatement', 'bidRef', bidRef);
516
525
  const localVarPath = `/v2/bids/{bidRef}/statement`
@@ -531,6 +540,9 @@ export const PartnerApiApiAxiosParamCreator = function (configuration) {
531
540
  localVarQueryParameter['paperCode'] = paperCode;
532
541
  }
533
542
  localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
543
+ if (ifNoneMatch != null) {
544
+ localVarHeaderParameter['If-None-Match'] = String(ifNoneMatch);
545
+ }
534
546
  setSearchParams(localVarUrlObj, localVarQueryParameter);
535
547
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
536
548
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -543,10 +555,11 @@ export const PartnerApiApiAxiosParamCreator = function (configuration) {
543
555
  * 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **대부분은 이 조회가 필요 없습니다.** 공고·결과 응답의 첨부 항목에 파일명과 내려받기 주소 (`fileUrl`/`fullUrl`, 만료 없는 안정 주소)가 이미 실려 있습니다. 이 엔드포인트는 그 주소를 들고 있지 않고 `fileKey` 만 아는 경우(예: 업로드 직후 크기 확인)를 위한 것입니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** fileKey 는 **영문 대소문자·숫자 32자**이고, 그 형태가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. 키를 16진수(hex)로 가정해 클라이언트에서 걸러내지 마세요 — 업로드된 파일의 키에는 hex 가 아닌 문자가 들어갑니다. **필수 스코프:** `files:read`
544
556
  * @summary 파일 정보 조회
545
557
  * @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(영문 대소문자·숫자 32자).
558
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
546
559
  * @param {*} [options] Override http request option.
547
560
  * @throws {RequiredError}
548
561
  */
549
- getFileMeta: (fileKey_1, ...args_1) => __awaiter(this, [fileKey_1, ...args_1], void 0, function* (fileKey, options = {}) {
562
+ getFileMeta: (fileKey_1, ifNoneMatch_1, ...args_1) => __awaiter(this, [fileKey_1, ifNoneMatch_1, ...args_1], void 0, function* (fileKey, ifNoneMatch, options = {}) {
550
563
  // verify required parameter 'fileKey' is not null or undefined
551
564
  assertParamExists('getFileMeta', 'fileKey', fileKey);
552
565
  const localVarPath = `/v2/files/{fileKey}`
@@ -564,6 +577,9 @@ export const PartnerApiApiAxiosParamCreator = function (configuration) {
564
577
  // oauth required
565
578
  yield setOAuthToObject(localVarHeaderParameter, "partner-oauth2", ["files:read"], configuration);
566
579
  localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
580
+ if (ifNoneMatch != null) {
581
+ localVarHeaderParameter['If-None-Match'] = String(ifNoneMatch);
582
+ }
567
583
  setSearchParams(localVarUrlObj, localVarQueryParameter);
568
584
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
569
585
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -609,10 +625,11 @@ export const PartnerApiApiAxiosParamCreator = function (configuration) {
609
625
  * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
610
626
  * @summary 공급사 카드결제 가능 여부
611
627
  * @param {string} memberId 계약업체 회원 ID
628
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
612
629
  * @param {*} [options] Override http request option.
613
630
  * @throws {RequiredError}
614
631
  */
615
- getSupplierCardPayableV2: (memberId_1, ...args_1) => __awaiter(this, [memberId_1, ...args_1], void 0, function* (memberId, options = {}) {
632
+ getSupplierCardPayableV2: (memberId_1, ifNoneMatch_1, ...args_1) => __awaiter(this, [memberId_1, ifNoneMatch_1, ...args_1], void 0, function* (memberId, ifNoneMatch, options = {}) {
616
633
  // verify required parameter 'memberId' is not null or undefined
617
634
  assertParamExists('getSupplierCardPayableV2', 'memberId', memberId);
618
635
  const localVarPath = `/v2/suppliers/{memberId}/card-payable`
@@ -630,6 +647,9 @@ export const PartnerApiApiAxiosParamCreator = function (configuration) {
630
647
  // oauth required
631
648
  yield setOAuthToObject(localVarHeaderParameter, "partner-oauth2", ["payments:read"], configuration);
632
649
  localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
650
+ if (ifNoneMatch != null) {
651
+ localVarHeaderParameter['If-None-Match'] = String(ifNoneMatch);
652
+ }
633
653
  setSearchParams(localVarUrlObj, localVarQueryParameter);
634
654
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
635
655
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -642,10 +662,11 @@ export const PartnerApiApiAxiosParamCreator = function (configuration) {
642
662
  * 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
643
663
  * @summary 웹훅 구독 단건 조회
644
664
  * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
665
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
645
666
  * @param {*} [options] Override http request option.
646
667
  * @throws {RequiredError}
647
668
  */
648
- getWebhookEndpoint: (endpointId_1, ...args_1) => __awaiter(this, [endpointId_1, ...args_1], void 0, function* (endpointId, options = {}) {
669
+ getWebhookEndpoint: (endpointId_1, ifNoneMatch_1, ...args_1) => __awaiter(this, [endpointId_1, ifNoneMatch_1, ...args_1], void 0, function* (endpointId, ifNoneMatch, options = {}) {
649
670
  // verify required parameter 'endpointId' is not null or undefined
650
671
  assertParamExists('getWebhookEndpoint', 'endpointId', endpointId);
651
672
  const localVarPath = `/v2/webhook-endpoints/{endpointId}`
@@ -663,6 +684,9 @@ export const PartnerApiApiAxiosParamCreator = function (configuration) {
663
684
  // oauth required
664
685
  yield setOAuthToObject(localVarHeaderParameter, "partner-oauth2", ["webhooks:read"], configuration);
665
686
  localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
687
+ if (ifNoneMatch != null) {
688
+ localVarHeaderParameter['If-None-Match'] = String(ifNoneMatch);
689
+ }
666
690
  setSearchParams(localVarUrlObj, localVarQueryParameter);
667
691
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
668
692
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -674,10 +698,11 @@ export const PartnerApiApiAxiosParamCreator = function (configuration) {
674
698
  /**
675
699
  * ERP 연동 직전 회선·인증 endpoint 동작 확인용.
676
700
  * @summary Partner API 헬스체크
701
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
677
702
  * @param {*} [options] Override http request option.
678
703
  * @throws {RequiredError}
679
704
  */
680
- healthControllerCheck: (...args_1) => __awaiter(this, [...args_1], void 0, function* (options = {}) {
705
+ healthControllerCheck: (ifNoneMatch_1, ...args_1) => __awaiter(this, [ifNoneMatch_1, ...args_1], void 0, function* (ifNoneMatch, options = {}) {
681
706
  const localVarPath = `/health`;
682
707
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
683
708
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -689,6 +714,9 @@ export const PartnerApiApiAxiosParamCreator = function (configuration) {
689
714
  const localVarHeaderParameter = {};
690
715
  const localVarQueryParameter = {};
691
716
  localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
717
+ if (ifNoneMatch != null) {
718
+ localVarHeaderParameter['If-None-Match'] = String(ifNoneMatch);
719
+ }
692
720
  setSearchParams(localVarUrlObj, localVarQueryParameter);
693
721
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
694
722
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -701,10 +729,11 @@ export const PartnerApiApiAxiosParamCreator = function (configuration) {
701
729
  * 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고를 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에 실린 `ETag` 를 다음 요청의 `If-None-Match` 로 되보내면, 결과가 그대로일 때 `304` 를 본문 없이 받습니다. **식별자 전달:** `?bidRefs=A,B,C`(쉼표) 또는 `?bidRefs=A&bidRefs=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다. 요청한 건수와 받은 건수가 다를 수 있으므로, 보낸 값이 공고번호였다면 `bidId` 로, 구매번호였다면 `purchaseNo` 로 대조하세요. **공고 하나만 볼 때도** `bidRefs` 에 하나만 넣으면 됩니다. 응찰 결과 외에 납품 조건·품목·계약서류까지 필요하면 `GET /v2/bids/{bidRef}` 상세 조회를 쓰세요.
702
730
  * @summary 공고 결과 조회
703
731
  * @param {string} bidRefs 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. 쉼표로 구분하거나 &#x60;bidRefs&#x60; 를 반복해 전달합니다. 최대 100건입니다.
732
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
704
733
  * @param {*} [options] Override http request option.
705
734
  * @throws {RequiredError}
706
735
  */
707
- listBidResults: (bidRefs_1, ...args_1) => __awaiter(this, [bidRefs_1, ...args_1], void 0, function* (bidRefs, options = {}) {
736
+ listBidResults: (bidRefs_1, ifNoneMatch_1, ...args_1) => __awaiter(this, [bidRefs_1, ifNoneMatch_1, ...args_1], void 0, function* (bidRefs, ifNoneMatch, options = {}) {
708
737
  // verify required parameter 'bidRefs' is not null or undefined
709
738
  assertParamExists('listBidResults', 'bidRefs', bidRefs);
710
739
  const localVarPath = `/v2/bid-results`;
@@ -724,6 +753,9 @@ export const PartnerApiApiAxiosParamCreator = function (configuration) {
724
753
  localVarQueryParameter['bidRefs'] = bidRefs;
725
754
  }
726
755
  localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
756
+ if (ifNoneMatch != null) {
757
+ localVarHeaderParameter['If-None-Match'] = String(ifNoneMatch);
758
+ }
727
759
  setSearchParams(localVarUrlObj, localVarQueryParameter);
728
760
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
729
761
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -740,10 +772,11 @@ export const PartnerApiApiAxiosParamCreator = function (configuration) {
740
772
  * @param {Array<string>} [bidRefs] 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. CSV 로 전달하며 최대 100건. 지정 시 그 공고만 조회합니다.
741
773
  * @param {Array<BidPublicStatus>} [status] 공고 상태 필터(공개값) CSV. 지정 시 그중 하나라도 일치하는 공고만 조회합니다.
742
774
  * @param {Array<ListBidsIncludeEnum>} [include] 행별 확장 부착 CSV. &#x60;results&#x60;&#x3D;응찰 참여자, &#x60;products&#x60;&#x3D;공고 등록 품목, &#x60;contacts&#x60;&#x3D;발주 담당자 성명·연락처·이메일. 미지정이면 부착하지 않는다(응답이 가볍고 조회 비용도 들지 않는다).
775
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
743
776
  * @param {*} [options] Override http request option.
744
777
  * @throws {RequiredError}
745
778
  */
746
- listBids: (limit_1, cursor_1, bidRefs_1, status_1, include_1, ...args_1) => __awaiter(this, [limit_1, cursor_1, bidRefs_1, status_1, include_1, ...args_1], void 0, function* (limit, cursor, bidRefs, status, include, options = {}) {
779
+ listBids: (limit_1, cursor_1, bidRefs_1, status_1, include_1, ifNoneMatch_1, ...args_1) => __awaiter(this, [limit_1, cursor_1, bidRefs_1, status_1, include_1, ifNoneMatch_1, ...args_1], void 0, function* (limit, cursor, bidRefs, status, include, ifNoneMatch, options = {}) {
747
780
  const localVarPath = `/v2/bids`;
748
781
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
749
782
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -773,6 +806,9 @@ export const PartnerApiApiAxiosParamCreator = function (configuration) {
773
806
  localVarQueryParameter['include'] = include;
774
807
  }
775
808
  localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
809
+ if (ifNoneMatch != null) {
810
+ localVarHeaderParameter['If-None-Match'] = String(ifNoneMatch);
811
+ }
776
812
  setSearchParams(localVarUrlObj, localVarQueryParameter);
777
813
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
778
814
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -829,10 +865,11 @@ export const PartnerApiApiAxiosParamCreator = function (configuration) {
829
865
  * @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
830
866
  * @param {number} [limit] 페이지 크기(1~200, 기본 50).
831
867
  * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달합니다. 미지정 시 첫 페이지.
868
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
832
869
  * @param {*} [options] Override http request option.
833
870
  * @throws {RequiredError}
834
871
  */
835
- listWebhookDeliveries: (endpointId_1, status_1, limit_1, cursor_1, ...args_1) => __awaiter(this, [endpointId_1, status_1, limit_1, cursor_1, ...args_1], void 0, function* (endpointId, status, limit, cursor, options = {}) {
872
+ listWebhookDeliveries: (endpointId_1, status_1, limit_1, cursor_1, ifNoneMatch_1, ...args_1) => __awaiter(this, [endpointId_1, status_1, limit_1, cursor_1, ifNoneMatch_1, ...args_1], void 0, function* (endpointId, status, limit, cursor, ifNoneMatch, options = {}) {
836
873
  const localVarPath = `/v2/webhook-deliveries`;
837
874
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
838
875
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -859,6 +896,9 @@ export const PartnerApiApiAxiosParamCreator = function (configuration) {
859
896
  localVarQueryParameter['cursor'] = cursor;
860
897
  }
861
898
  localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
899
+ if (ifNoneMatch != null) {
900
+ localVarHeaderParameter['If-None-Match'] = String(ifNoneMatch);
901
+ }
862
902
  setSearchParams(localVarUrlObj, localVarQueryParameter);
863
903
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
864
904
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -870,10 +910,11 @@ export const PartnerApiApiAxiosParamCreator = function (configuration) {
870
910
  /**
871
911
  * 이 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
872
912
  * @summary 웹훅 구독 목록 조회
913
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
873
914
  * @param {*} [options] Override http request option.
874
915
  * @throws {RequiredError}
875
916
  */
876
- listWebhookEndpoints: (...args_1) => __awaiter(this, [...args_1], void 0, function* (options = {}) {
917
+ listWebhookEndpoints: (ifNoneMatch_1, ...args_1) => __awaiter(this, [ifNoneMatch_1, ...args_1], void 0, function* (ifNoneMatch, options = {}) {
877
918
  const localVarPath = `/v2/webhook-endpoints`;
878
919
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
879
920
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -888,6 +929,9 @@ export const PartnerApiApiAxiosParamCreator = function (configuration) {
888
929
  // oauth required
889
930
  yield setOAuthToObject(localVarHeaderParameter, "partner-oauth2", ["webhooks:read"], configuration);
890
931
  localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
932
+ if (ifNoneMatch != null) {
933
+ localVarHeaderParameter['If-None-Match'] = String(ifNoneMatch);
934
+ }
891
935
  setSearchParams(localVarUrlObj, localVarQueryParameter);
892
936
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
893
937
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -1599,13 +1643,14 @@ export const PartnerApiApiFp = function (configuration) {
1599
1643
  * 공고의 모든 정보를 한 번에 조회합니다 — 기본 정보·납품/대금 조건·담당자·품목, 응찰 참여자(투찰가·순위·낙찰 여부), 계약서류, 검수 진행 상태, 라이프사이클 하위 상태. 스코프 `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).
1600
1644
  * @summary 공고 상세 조회
1601
1645
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
1646
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
1602
1647
  * @param {*} [options] Override http request option.
1603
1648
  * @throws {RequiredError}
1604
1649
  */
1605
- getBid(bidRef, options) {
1650
+ getBid(bidRef, ifNoneMatch, options) {
1606
1651
  return __awaiter(this, void 0, void 0, function* () {
1607
1652
  var _a, _b, _c;
1608
- const localVarAxiosArgs = yield localVarAxiosParamCreator.getBid(bidRef, options);
1653
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getBid(bidRef, ifNoneMatch, options);
1609
1654
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1610
1655
  const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerApiApi.getBid']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1611
1656
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -1615,13 +1660,14 @@ export const PartnerApiApiFp = function (configuration) {
1615
1660
  * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 다른 조회에서 일부 참가자 정보가 가려지는 경우와 무관하게, 이 정산 정보는 읽기 전용으로 항상 그대로 제공됩니다. **필수 스코프:** `invoices:read` — 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
1616
1661
  * @summary 정산 정보 조회
1617
1662
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
1663
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
1618
1664
  * @param {*} [options] Override http request option.
1619
1665
  * @throws {RequiredError}
1620
1666
  */
1621
- getBidSettlement(bidRef, options) {
1667
+ getBidSettlement(bidRef, ifNoneMatch, options) {
1622
1668
  return __awaiter(this, void 0, void 0, function* () {
1623
1669
  var _a, _b, _c;
1624
- const localVarAxiosArgs = yield localVarAxiosParamCreator.getBidSettlement(bidRef, options);
1670
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getBidSettlement(bidRef, ifNoneMatch, options);
1625
1671
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1626
1672
  const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerApiApi.getBidSettlement']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1627
1673
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -1632,13 +1678,14 @@ export const PartnerApiApiFp = function (configuration) {
1632
1678
  * @summary 거래명세서 조회
1633
1679
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
1634
1680
  * @param {number} [paperCode]
1681
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
1635
1682
  * @param {*} [options] Override http request option.
1636
1683
  * @throws {RequiredError}
1637
1684
  */
1638
- getBidStatement(bidRef, paperCode, options) {
1685
+ getBidStatement(bidRef, paperCode, ifNoneMatch, options) {
1639
1686
  return __awaiter(this, void 0, void 0, function* () {
1640
1687
  var _a, _b, _c;
1641
- const localVarAxiosArgs = yield localVarAxiosParamCreator.getBidStatement(bidRef, paperCode, options);
1688
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getBidStatement(bidRef, paperCode, ifNoneMatch, options);
1642
1689
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1643
1690
  const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerApiApi.getBidStatement']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1644
1691
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -1648,13 +1695,14 @@ export const PartnerApiApiFp = function (configuration) {
1648
1695
  * 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **대부분은 이 조회가 필요 없습니다.** 공고·결과 응답의 첨부 항목에 파일명과 내려받기 주소 (`fileUrl`/`fullUrl`, 만료 없는 안정 주소)가 이미 실려 있습니다. 이 엔드포인트는 그 주소를 들고 있지 않고 `fileKey` 만 아는 경우(예: 업로드 직후 크기 확인)를 위한 것입니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** fileKey 는 **영문 대소문자·숫자 32자**이고, 그 형태가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. 키를 16진수(hex)로 가정해 클라이언트에서 걸러내지 마세요 — 업로드된 파일의 키에는 hex 가 아닌 문자가 들어갑니다. **필수 스코프:** `files:read`
1649
1696
  * @summary 파일 정보 조회
1650
1697
  * @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(영문 대소문자·숫자 32자).
1698
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
1651
1699
  * @param {*} [options] Override http request option.
1652
1700
  * @throws {RequiredError}
1653
1701
  */
1654
- getFileMeta(fileKey, options) {
1702
+ getFileMeta(fileKey, ifNoneMatch, options) {
1655
1703
  return __awaiter(this, void 0, void 0, function* () {
1656
1704
  var _a, _b, _c;
1657
- const localVarAxiosArgs = yield localVarAxiosParamCreator.getFileMeta(fileKey, options);
1705
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getFileMeta(fileKey, ifNoneMatch, options);
1658
1706
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1659
1707
  const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerApiApi.getFileMeta']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1660
1708
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -1680,13 +1728,14 @@ export const PartnerApiApiFp = function (configuration) {
1680
1728
  * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
1681
1729
  * @summary 공급사 카드결제 가능 여부
1682
1730
  * @param {string} memberId 계약업체 회원 ID
1731
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
1683
1732
  * @param {*} [options] Override http request option.
1684
1733
  * @throws {RequiredError}
1685
1734
  */
1686
- getSupplierCardPayableV2(memberId, options) {
1735
+ getSupplierCardPayableV2(memberId, ifNoneMatch, options) {
1687
1736
  return __awaiter(this, void 0, void 0, function* () {
1688
1737
  var _a, _b, _c;
1689
- const localVarAxiosArgs = yield localVarAxiosParamCreator.getSupplierCardPayableV2(memberId, options);
1738
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getSupplierCardPayableV2(memberId, ifNoneMatch, options);
1690
1739
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1691
1740
  const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerApiApi.getSupplierCardPayableV2']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1692
1741
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -1696,13 +1745,14 @@ export const PartnerApiApiFp = function (configuration) {
1696
1745
  * 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
1697
1746
  * @summary 웹훅 구독 단건 조회
1698
1747
  * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
1748
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
1699
1749
  * @param {*} [options] Override http request option.
1700
1750
  * @throws {RequiredError}
1701
1751
  */
1702
- getWebhookEndpoint(endpointId, options) {
1752
+ getWebhookEndpoint(endpointId, ifNoneMatch, options) {
1703
1753
  return __awaiter(this, void 0, void 0, function* () {
1704
1754
  var _a, _b, _c;
1705
- const localVarAxiosArgs = yield localVarAxiosParamCreator.getWebhookEndpoint(endpointId, options);
1755
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getWebhookEndpoint(endpointId, ifNoneMatch, options);
1706
1756
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1707
1757
  const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerApiApi.getWebhookEndpoint']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1708
1758
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -1711,13 +1761,14 @@ export const PartnerApiApiFp = function (configuration) {
1711
1761
  /**
1712
1762
  * ERP 연동 직전 회선·인증 endpoint 동작 확인용.
1713
1763
  * @summary Partner API 헬스체크
1764
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
1714
1765
  * @param {*} [options] Override http request option.
1715
1766
  * @throws {RequiredError}
1716
1767
  */
1717
- healthControllerCheck(options) {
1768
+ healthControllerCheck(ifNoneMatch, options) {
1718
1769
  return __awaiter(this, void 0, void 0, function* () {
1719
1770
  var _a, _b, _c;
1720
- const localVarAxiosArgs = yield localVarAxiosParamCreator.healthControllerCheck(options);
1771
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.healthControllerCheck(ifNoneMatch, options);
1721
1772
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1722
1773
  const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerApiApi.healthControllerCheck']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1723
1774
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -1727,13 +1778,14 @@ export const PartnerApiApiFp = function (configuration) {
1727
1778
  * 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고를 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에 실린 `ETag` 를 다음 요청의 `If-None-Match` 로 되보내면, 결과가 그대로일 때 `304` 를 본문 없이 받습니다. **식별자 전달:** `?bidRefs=A,B,C`(쉼표) 또는 `?bidRefs=A&bidRefs=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다. 요청한 건수와 받은 건수가 다를 수 있으므로, 보낸 값이 공고번호였다면 `bidId` 로, 구매번호였다면 `purchaseNo` 로 대조하세요. **공고 하나만 볼 때도** `bidRefs` 에 하나만 넣으면 됩니다. 응찰 결과 외에 납품 조건·품목·계약서류까지 필요하면 `GET /v2/bids/{bidRef}` 상세 조회를 쓰세요.
1728
1779
  * @summary 공고 결과 조회
1729
1780
  * @param {string} bidRefs 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. 쉼표로 구분하거나 &#x60;bidRefs&#x60; 를 반복해 전달합니다. 최대 100건입니다.
1781
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
1730
1782
  * @param {*} [options] Override http request option.
1731
1783
  * @throws {RequiredError}
1732
1784
  */
1733
- listBidResults(bidRefs, options) {
1785
+ listBidResults(bidRefs, ifNoneMatch, options) {
1734
1786
  return __awaiter(this, void 0, void 0, function* () {
1735
1787
  var _a, _b, _c;
1736
- const localVarAxiosArgs = yield localVarAxiosParamCreator.listBidResults(bidRefs, options);
1788
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listBidResults(bidRefs, ifNoneMatch, options);
1737
1789
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1738
1790
  const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerApiApi.listBidResults']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1739
1791
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -1747,13 +1799,14 @@ export const PartnerApiApiFp = function (configuration) {
1747
1799
  * @param {Array<string>} [bidRefs] 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. CSV 로 전달하며 최대 100건. 지정 시 그 공고만 조회합니다.
1748
1800
  * @param {Array<BidPublicStatus>} [status] 공고 상태 필터(공개값) CSV. 지정 시 그중 하나라도 일치하는 공고만 조회합니다.
1749
1801
  * @param {Array<ListBidsIncludeEnum>} [include] 행별 확장 부착 CSV. &#x60;results&#x60;&#x3D;응찰 참여자, &#x60;products&#x60;&#x3D;공고 등록 품목, &#x60;contacts&#x60;&#x3D;발주 담당자 성명·연락처·이메일. 미지정이면 부착하지 않는다(응답이 가볍고 조회 비용도 들지 않는다).
1802
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
1750
1803
  * @param {*} [options] Override http request option.
1751
1804
  * @throws {RequiredError}
1752
1805
  */
1753
- listBids(limit, cursor, bidRefs, status, include, options) {
1806
+ listBids(limit, cursor, bidRefs, status, include, ifNoneMatch, options) {
1754
1807
  return __awaiter(this, void 0, void 0, function* () {
1755
1808
  var _a, _b, _c;
1756
- const localVarAxiosArgs = yield localVarAxiosParamCreator.listBids(limit, cursor, bidRefs, status, include, options);
1809
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listBids(limit, cursor, bidRefs, status, include, ifNoneMatch, options);
1757
1810
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1758
1811
  const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerApiApi.listBids']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1759
1812
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -1783,13 +1836,14 @@ export const PartnerApiApiFp = function (configuration) {
1783
1836
  * @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
1784
1837
  * @param {number} [limit] 페이지 크기(1~200, 기본 50).
1785
1838
  * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달합니다. 미지정 시 첫 페이지.
1839
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
1786
1840
  * @param {*} [options] Override http request option.
1787
1841
  * @throws {RequiredError}
1788
1842
  */
1789
- listWebhookDeliveries(endpointId, status, limit, cursor, options) {
1843
+ listWebhookDeliveries(endpointId, status, limit, cursor, ifNoneMatch, options) {
1790
1844
  return __awaiter(this, void 0, void 0, function* () {
1791
1845
  var _a, _b, _c;
1792
- const localVarAxiosArgs = yield localVarAxiosParamCreator.listWebhookDeliveries(endpointId, status, limit, cursor, options);
1846
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listWebhookDeliveries(endpointId, status, limit, cursor, ifNoneMatch, options);
1793
1847
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1794
1848
  const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerApiApi.listWebhookDeliveries']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1795
1849
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -1798,13 +1852,14 @@ export const PartnerApiApiFp = function (configuration) {
1798
1852
  /**
1799
1853
  * 이 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
1800
1854
  * @summary 웹훅 구독 목록 조회
1855
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
1801
1856
  * @param {*} [options] Override http request option.
1802
1857
  * @throws {RequiredError}
1803
1858
  */
1804
- listWebhookEndpoints(options) {
1859
+ listWebhookEndpoints(ifNoneMatch, options) {
1805
1860
  return __awaiter(this, void 0, void 0, function* () {
1806
1861
  var _a, _b, _c;
1807
- const localVarAxiosArgs = yield localVarAxiosParamCreator.listWebhookEndpoints(options);
1862
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listWebhookEndpoints(ifNoneMatch, options);
1808
1863
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1809
1864
  const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerApiApi.listWebhookEndpoints']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1810
1865
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -2148,42 +2203,46 @@ export const PartnerApiApiFactory = function (configuration, basePath, axios) {
2148
2203
  * 공고의 모든 정보를 한 번에 조회합니다 — 기본 정보·납품/대금 조건·담당자·품목, 응찰 참여자(투찰가·순위·낙찰 여부), 계약서류, 검수 진행 상태, 라이프사이클 하위 상태. 스코프 `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).
2149
2204
  * @summary 공고 상세 조회
2150
2205
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
2206
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
2151
2207
  * @param {*} [options] Override http request option.
2152
2208
  * @throws {RequiredError}
2153
2209
  */
2154
- getBid(bidRef, options) {
2155
- return localVarFp.getBid(bidRef, options).then((request) => request(axios, basePath));
2210
+ getBid(bidRef, ifNoneMatch, options) {
2211
+ return localVarFp.getBid(bidRef, ifNoneMatch, options).then((request) => request(axios, basePath));
2156
2212
  },
2157
2213
  /**
2158
2214
  * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 다른 조회에서 일부 참가자 정보가 가려지는 경우와 무관하게, 이 정산 정보는 읽기 전용으로 항상 그대로 제공됩니다. **필수 스코프:** `invoices:read` — 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
2159
2215
  * @summary 정산 정보 조회
2160
2216
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
2217
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
2161
2218
  * @param {*} [options] Override http request option.
2162
2219
  * @throws {RequiredError}
2163
2220
  */
2164
- getBidSettlement(bidRef, options) {
2165
- return localVarFp.getBidSettlement(bidRef, options).then((request) => request(axios, basePath));
2221
+ getBidSettlement(bidRef, ifNoneMatch, options) {
2222
+ return localVarFp.getBidSettlement(bidRef, ifNoneMatch, options).then((request) => request(axios, basePath));
2166
2223
  },
2167
2224
  /**
2168
2225
  * 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
2169
2226
  * @summary 거래명세서 조회
2170
2227
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
2171
2228
  * @param {number} [paperCode]
2229
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
2172
2230
  * @param {*} [options] Override http request option.
2173
2231
  * @throws {RequiredError}
2174
2232
  */
2175
- getBidStatement(bidRef, paperCode, options) {
2176
- return localVarFp.getBidStatement(bidRef, paperCode, options).then((request) => request(axios, basePath));
2233
+ getBidStatement(bidRef, paperCode, ifNoneMatch, options) {
2234
+ return localVarFp.getBidStatement(bidRef, paperCode, ifNoneMatch, options).then((request) => request(axios, basePath));
2177
2235
  },
2178
2236
  /**
2179
2237
  * 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **대부분은 이 조회가 필요 없습니다.** 공고·결과 응답의 첨부 항목에 파일명과 내려받기 주소 (`fileUrl`/`fullUrl`, 만료 없는 안정 주소)가 이미 실려 있습니다. 이 엔드포인트는 그 주소를 들고 있지 않고 `fileKey` 만 아는 경우(예: 업로드 직후 크기 확인)를 위한 것입니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** fileKey 는 **영문 대소문자·숫자 32자**이고, 그 형태가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. 키를 16진수(hex)로 가정해 클라이언트에서 걸러내지 마세요 — 업로드된 파일의 키에는 hex 가 아닌 문자가 들어갑니다. **필수 스코프:** `files:read`
2180
2238
  * @summary 파일 정보 조회
2181
2239
  * @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(영문 대소문자·숫자 32자).
2240
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
2182
2241
  * @param {*} [options] Override http request option.
2183
2242
  * @throws {RequiredError}
2184
2243
  */
2185
- getFileMeta(fileKey, options) {
2186
- return localVarFp.getFileMeta(fileKey, options).then((request) => request(axios, basePath));
2244
+ getFileMeta(fileKey, ifNoneMatch, options) {
2245
+ return localVarFp.getFileMeta(fileKey, ifNoneMatch, options).then((request) => request(axios, basePath));
2187
2246
  },
2188
2247
  /**
2189
2248
  * 등록한 계약의 계산서 발행 상태를 확인합니다. **언제 쓰나:** 씨마켓이 보내는 발행완료 통지를 놓쳤을 때의 **복구 경로**입니다. 평상시에는 통지를 받아 처리하고, 상태가 어긋난 것 같을 때 이 API 로 되읽으세요. **필수 스코프:** `contracts:read`
@@ -2199,40 +2258,44 @@ export const PartnerApiApiFactory = function (configuration, basePath, axios) {
2199
2258
  * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
2200
2259
  * @summary 공급사 카드결제 가능 여부
2201
2260
  * @param {string} memberId 계약업체 회원 ID
2261
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
2202
2262
  * @param {*} [options] Override http request option.
2203
2263
  * @throws {RequiredError}
2204
2264
  */
2205
- getSupplierCardPayableV2(memberId, options) {
2206
- return localVarFp.getSupplierCardPayableV2(memberId, options).then((request) => request(axios, basePath));
2265
+ getSupplierCardPayableV2(memberId, ifNoneMatch, options) {
2266
+ return localVarFp.getSupplierCardPayableV2(memberId, ifNoneMatch, options).then((request) => request(axios, basePath));
2207
2267
  },
2208
2268
  /**
2209
2269
  * 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
2210
2270
  * @summary 웹훅 구독 단건 조회
2211
2271
  * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
2272
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
2212
2273
  * @param {*} [options] Override http request option.
2213
2274
  * @throws {RequiredError}
2214
2275
  */
2215
- getWebhookEndpoint(endpointId, options) {
2216
- return localVarFp.getWebhookEndpoint(endpointId, options).then((request) => request(axios, basePath));
2276
+ getWebhookEndpoint(endpointId, ifNoneMatch, options) {
2277
+ return localVarFp.getWebhookEndpoint(endpointId, ifNoneMatch, options).then((request) => request(axios, basePath));
2217
2278
  },
2218
2279
  /**
2219
2280
  * ERP 연동 직전 회선·인증 endpoint 동작 확인용.
2220
2281
  * @summary Partner API 헬스체크
2282
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
2221
2283
  * @param {*} [options] Override http request option.
2222
2284
  * @throws {RequiredError}
2223
2285
  */
2224
- healthControllerCheck(options) {
2225
- return localVarFp.healthControllerCheck(options).then((request) => request(axios, basePath));
2286
+ healthControllerCheck(ifNoneMatch, options) {
2287
+ return localVarFp.healthControllerCheck(ifNoneMatch, options).then((request) => request(axios, basePath));
2226
2288
  },
2227
2289
  /**
2228
2290
  * 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고를 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에 실린 `ETag` 를 다음 요청의 `If-None-Match` 로 되보내면, 결과가 그대로일 때 `304` 를 본문 없이 받습니다. **식별자 전달:** `?bidRefs=A,B,C`(쉼표) 또는 `?bidRefs=A&bidRefs=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다. 요청한 건수와 받은 건수가 다를 수 있으므로, 보낸 값이 공고번호였다면 `bidId` 로, 구매번호였다면 `purchaseNo` 로 대조하세요. **공고 하나만 볼 때도** `bidRefs` 에 하나만 넣으면 됩니다. 응찰 결과 외에 납품 조건·품목·계약서류까지 필요하면 `GET /v2/bids/{bidRef}` 상세 조회를 쓰세요.
2229
2291
  * @summary 공고 결과 조회
2230
2292
  * @param {string} bidRefs 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. 쉼표로 구분하거나 &#x60;bidRefs&#x60; 를 반복해 전달합니다. 최대 100건입니다.
2293
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
2231
2294
  * @param {*} [options] Override http request option.
2232
2295
  * @throws {RequiredError}
2233
2296
  */
2234
- listBidResults(bidRefs, options) {
2235
- return localVarFp.listBidResults(bidRefs, options).then((request) => request(axios, basePath));
2297
+ listBidResults(bidRefs, ifNoneMatch, options) {
2298
+ return localVarFp.listBidResults(bidRefs, ifNoneMatch, options).then((request) => request(axios, basePath));
2236
2299
  },
2237
2300
  /**
2238
2301
  * 발주처(API 키 바인딩)의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(쿼리에 buyerId 를 넣지 않습니다). **페이지네이션(cursor):** `limit`(1~100, 기본 100) + `cursor`(불투명 토큰). 응답 `meta.nextCursor` 를 다음 요청 `cursor` 로 전달하면 다음 페이지를 받습니다. `meta.hasMore` 가 `false`(= `nextCursor` 가 `null`)이면 마지막 페이지입니다. 목록 자체는 `data` 에 배열로 실립니다. **상태·낙찰방법:** 공개값(의미 문자열)으로 반환됩니다. 낙찰 여부는 상태가 아니라 낙찰 결과 조회의 `participants[].isWinner` 로 관측합니다(AWARDED 상태는 없습니다).
@@ -2242,11 +2305,12 @@ export const PartnerApiApiFactory = function (configuration, basePath, axios) {
2242
2305
  * @param {Array<string>} [bidRefs] 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. CSV 로 전달하며 최대 100건. 지정 시 그 공고만 조회합니다.
2243
2306
  * @param {Array<BidPublicStatus>} [status] 공고 상태 필터(공개값) CSV. 지정 시 그중 하나라도 일치하는 공고만 조회합니다.
2244
2307
  * @param {Array<ListBidsIncludeEnum>} [include] 행별 확장 부착 CSV. &#x60;results&#x60;&#x3D;응찰 참여자, &#x60;products&#x60;&#x3D;공고 등록 품목, &#x60;contacts&#x60;&#x3D;발주 담당자 성명·연락처·이메일. 미지정이면 부착하지 않는다(응답이 가볍고 조회 비용도 들지 않는다).
2308
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
2245
2309
  * @param {*} [options] Override http request option.
2246
2310
  * @throws {RequiredError}
2247
2311
  */
2248
- listBids(limit, cursor, bidRefs, status, include, options) {
2249
- return localVarFp.listBids(limit, cursor, bidRefs, status, include, options).then((request) => request(axios, basePath));
2312
+ listBids(limit, cursor, bidRefs, status, include, ifNoneMatch, options) {
2313
+ return localVarFp.listBids(limit, cursor, bidRefs, status, include, ifNoneMatch, options).then((request) => request(axios, basePath));
2250
2314
  },
2251
2315
  /**
2252
2316
  * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `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 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
@@ -2266,20 +2330,22 @@ export const PartnerApiApiFactory = function (configuration, basePath, axios) {
2266
2330
  * @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
2267
2331
  * @param {number} [limit] 페이지 크기(1~200, 기본 50).
2268
2332
  * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달합니다. 미지정 시 첫 페이지.
2333
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
2269
2334
  * @param {*} [options] Override http request option.
2270
2335
  * @throws {RequiredError}
2271
2336
  */
2272
- listWebhookDeliveries(endpointId, status, limit, cursor, options) {
2273
- return localVarFp.listWebhookDeliveries(endpointId, status, limit, cursor, options).then((request) => request(axios, basePath));
2337
+ listWebhookDeliveries(endpointId, status, limit, cursor, ifNoneMatch, options) {
2338
+ return localVarFp.listWebhookDeliveries(endpointId, status, limit, cursor, ifNoneMatch, options).then((request) => request(axios, basePath));
2274
2339
  },
2275
2340
  /**
2276
2341
  * 이 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
2277
2342
  * @summary 웹훅 구독 목록 조회
2343
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
2278
2344
  * @param {*} [options] Override http request option.
2279
2345
  * @throws {RequiredError}
2280
2346
  */
2281
- listWebhookEndpoints(options) {
2282
- return localVarFp.listWebhookEndpoints(options).then((request) => request(axios, basePath));
2347
+ listWebhookEndpoints(ifNoneMatch, options) {
2348
+ return localVarFp.listWebhookEndpoints(ifNoneMatch, options).then((request) => request(axios, basePath));
2283
2349
  },
2284
2350
  /**
2285
2351
  * 공고를 유찰 상태로 전환합니다. **호출 시점:** 입찰 마감 후 유찰 사유가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 공고 상태가 유찰(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` 헤더 필수.
@@ -2545,42 +2611,46 @@ export class PartnerApiApi extends BaseAPI {
2545
2611
  * 공고의 모든 정보를 한 번에 조회합니다 — 기본 정보·납품/대금 조건·담당자·품목, 응찰 참여자(투찰가·순위·낙찰 여부), 계약서류, 검수 진행 상태, 라이프사이클 하위 상태. 스코프 `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).
2546
2612
  * @summary 공고 상세 조회
2547
2613
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
2614
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
2548
2615
  * @param {*} [options] Override http request option.
2549
2616
  * @throws {RequiredError}
2550
2617
  */
2551
- getBid(bidRef, options) {
2552
- return PartnerApiApiFp(this.configuration).getBid(bidRef, options).then((request) => request(this.axios, this.basePath));
2618
+ getBid(bidRef, ifNoneMatch, options) {
2619
+ return PartnerApiApiFp(this.configuration).getBid(bidRef, ifNoneMatch, options).then((request) => request(this.axios, this.basePath));
2553
2620
  }
2554
2621
  /**
2555
2622
  * 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 다른 조회에서 일부 참가자 정보가 가려지는 경우와 무관하게, 이 정산 정보는 읽기 전용으로 항상 그대로 제공됩니다. **필수 스코프:** `invoices:read` — 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
2556
2623
  * @summary 정산 정보 조회
2557
2624
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
2625
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
2558
2626
  * @param {*} [options] Override http request option.
2559
2627
  * @throws {RequiredError}
2560
2628
  */
2561
- getBidSettlement(bidRef, options) {
2562
- return PartnerApiApiFp(this.configuration).getBidSettlement(bidRef, options).then((request) => request(this.axios, this.basePath));
2629
+ getBidSettlement(bidRef, ifNoneMatch, options) {
2630
+ return PartnerApiApiFp(this.configuration).getBidSettlement(bidRef, ifNoneMatch, options).then((request) => request(this.axios, this.basePath));
2563
2631
  }
2564
2632
  /**
2565
2633
  * 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
2566
2634
  * @summary 거래명세서 조회
2567
2635
  * @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
2568
2636
  * @param {number} [paperCode]
2637
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
2569
2638
  * @param {*} [options] Override http request option.
2570
2639
  * @throws {RequiredError}
2571
2640
  */
2572
- getBidStatement(bidRef, paperCode, options) {
2573
- return PartnerApiApiFp(this.configuration).getBidStatement(bidRef, paperCode, options).then((request) => request(this.axios, this.basePath));
2641
+ getBidStatement(bidRef, paperCode, ifNoneMatch, options) {
2642
+ return PartnerApiApiFp(this.configuration).getBidStatement(bidRef, paperCode, ifNoneMatch, options).then((request) => request(this.axios, this.basePath));
2574
2643
  }
2575
2644
  /**
2576
2645
  * 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **대부분은 이 조회가 필요 없습니다.** 공고·결과 응답의 첨부 항목에 파일명과 내려받기 주소 (`fileUrl`/`fullUrl`, 만료 없는 안정 주소)가 이미 실려 있습니다. 이 엔드포인트는 그 주소를 들고 있지 않고 `fileKey` 만 아는 경우(예: 업로드 직후 크기 확인)를 위한 것입니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** fileKey 는 **영문 대소문자·숫자 32자**이고, 그 형태가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. 키를 16진수(hex)로 가정해 클라이언트에서 걸러내지 마세요 — 업로드된 파일의 키에는 hex 가 아닌 문자가 들어갑니다. **필수 스코프:** `files:read`
2577
2646
  * @summary 파일 정보 조회
2578
2647
  * @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(영문 대소문자·숫자 32자).
2648
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
2579
2649
  * @param {*} [options] Override http request option.
2580
2650
  * @throws {RequiredError}
2581
2651
  */
2582
- getFileMeta(fileKey, options) {
2583
- return PartnerApiApiFp(this.configuration).getFileMeta(fileKey, options).then((request) => request(this.axios, this.basePath));
2652
+ getFileMeta(fileKey, ifNoneMatch, options) {
2653
+ return PartnerApiApiFp(this.configuration).getFileMeta(fileKey, ifNoneMatch, options).then((request) => request(this.axios, this.basePath));
2584
2654
  }
2585
2655
  /**
2586
2656
  * 등록한 계약의 계산서 발행 상태를 확인합니다. **언제 쓰나:** 씨마켓이 보내는 발행완료 통지를 놓쳤을 때의 **복구 경로**입니다. 평상시에는 통지를 받아 처리하고, 상태가 어긋난 것 같을 때 이 API 로 되읽으세요. **필수 스코프:** `contracts:read`
@@ -2596,40 +2666,44 @@ export class PartnerApiApi extends BaseAPI {
2596
2666
  * 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
2597
2667
  * @summary 공급사 카드결제 가능 여부
2598
2668
  * @param {string} memberId 계약업체 회원 ID
2669
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
2599
2670
  * @param {*} [options] Override http request option.
2600
2671
  * @throws {RequiredError}
2601
2672
  */
2602
- getSupplierCardPayableV2(memberId, options) {
2603
- return PartnerApiApiFp(this.configuration).getSupplierCardPayableV2(memberId, options).then((request) => request(this.axios, this.basePath));
2673
+ getSupplierCardPayableV2(memberId, ifNoneMatch, options) {
2674
+ return PartnerApiApiFp(this.configuration).getSupplierCardPayableV2(memberId, ifNoneMatch, options).then((request) => request(this.axios, this.basePath));
2604
2675
  }
2605
2676
  /**
2606
2677
  * 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
2607
2678
  * @summary 웹훅 구독 단건 조회
2608
2679
  * @param {string} endpointId 구독 식별자(등록 응답의 &#x60;endpointId&#x60;).
2680
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
2609
2681
  * @param {*} [options] Override http request option.
2610
2682
  * @throws {RequiredError}
2611
2683
  */
2612
- getWebhookEndpoint(endpointId, options) {
2613
- return PartnerApiApiFp(this.configuration).getWebhookEndpoint(endpointId, options).then((request) => request(this.axios, this.basePath));
2684
+ getWebhookEndpoint(endpointId, ifNoneMatch, options) {
2685
+ return PartnerApiApiFp(this.configuration).getWebhookEndpoint(endpointId, ifNoneMatch, options).then((request) => request(this.axios, this.basePath));
2614
2686
  }
2615
2687
  /**
2616
2688
  * ERP 연동 직전 회선·인증 endpoint 동작 확인용.
2617
2689
  * @summary Partner API 헬스체크
2690
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
2618
2691
  * @param {*} [options] Override http request option.
2619
2692
  * @throws {RequiredError}
2620
2693
  */
2621
- healthControllerCheck(options) {
2622
- return PartnerApiApiFp(this.configuration).healthControllerCheck(options).then((request) => request(this.axios, this.basePath));
2694
+ healthControllerCheck(ifNoneMatch, options) {
2695
+ return PartnerApiApiFp(this.configuration).healthControllerCheck(ifNoneMatch, options).then((request) => request(this.axios, this.basePath));
2623
2696
  }
2624
2697
  /**
2625
2698
  * 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고를 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에 실린 `ETag` 를 다음 요청의 `If-None-Match` 로 되보내면, 결과가 그대로일 때 `304` 를 본문 없이 받습니다. **식별자 전달:** `?bidRefs=A,B,C`(쉼표) 또는 `?bidRefs=A&bidRefs=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다. 요청한 건수와 받은 건수가 다를 수 있으므로, 보낸 값이 공고번호였다면 `bidId` 로, 구매번호였다면 `purchaseNo` 로 대조하세요. **공고 하나만 볼 때도** `bidRefs` 에 하나만 넣으면 됩니다. 응찰 결과 외에 납품 조건·품목·계약서류까지 필요하면 `GET /v2/bids/{bidRef}` 상세 조회를 쓰세요.
2626
2699
  * @summary 공고 결과 조회
2627
2700
  * @param {string} bidRefs 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. 쉼표로 구분하거나 &#x60;bidRefs&#x60; 를 반복해 전달합니다. 최대 100건입니다.
2701
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
2628
2702
  * @param {*} [options] Override http request option.
2629
2703
  * @throws {RequiredError}
2630
2704
  */
2631
- listBidResults(bidRefs, options) {
2632
- return PartnerApiApiFp(this.configuration).listBidResults(bidRefs, options).then((request) => request(this.axios, this.basePath));
2705
+ listBidResults(bidRefs, ifNoneMatch, options) {
2706
+ return PartnerApiApiFp(this.configuration).listBidResults(bidRefs, ifNoneMatch, options).then((request) => request(this.axios, this.basePath));
2633
2707
  }
2634
2708
  /**
2635
2709
  * 발주처(API 키 바인딩)의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(쿼리에 buyerId 를 넣지 않습니다). **페이지네이션(cursor):** `limit`(1~100, 기본 100) + `cursor`(불투명 토큰). 응답 `meta.nextCursor` 를 다음 요청 `cursor` 로 전달하면 다음 페이지를 받습니다. `meta.hasMore` 가 `false`(= `nextCursor` 가 `null`)이면 마지막 페이지입니다. 목록 자체는 `data` 에 배열로 실립니다. **상태·낙찰방법:** 공개값(의미 문자열)으로 반환됩니다. 낙찰 여부는 상태가 아니라 낙찰 결과 조회의 `participants[].isWinner` 로 관측합니다(AWARDED 상태는 없습니다).
@@ -2639,11 +2713,12 @@ export class PartnerApiApi extends BaseAPI {
2639
2713
  * @param {Array<string>} [bidRefs] 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. CSV 로 전달하며 최대 100건. 지정 시 그 공고만 조회합니다.
2640
2714
  * @param {Array<BidPublicStatus>} [status] 공고 상태 필터(공개값) CSV. 지정 시 그중 하나라도 일치하는 공고만 조회합니다.
2641
2715
  * @param {Array<ListBidsIncludeEnum>} [include] 행별 확장 부착 CSV. &#x60;results&#x60;&#x3D;응찰 참여자, &#x60;products&#x60;&#x3D;공고 등록 품목, &#x60;contacts&#x60;&#x3D;발주 담당자 성명·연락처·이메일. 미지정이면 부착하지 않는다(응답이 가볍고 조회 비용도 들지 않는다).
2716
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
2642
2717
  * @param {*} [options] Override http request option.
2643
2718
  * @throws {RequiredError}
2644
2719
  */
2645
- listBids(limit, cursor, bidRefs, status, include, options) {
2646
- return PartnerApiApiFp(this.configuration).listBids(limit, cursor, bidRefs, status, include, options).then((request) => request(this.axios, this.basePath));
2720
+ listBids(limit, cursor, bidRefs, status, include, ifNoneMatch, options) {
2721
+ return PartnerApiApiFp(this.configuration).listBids(limit, cursor, bidRefs, status, include, ifNoneMatch, options).then((request) => request(this.axios, this.basePath));
2647
2722
  }
2648
2723
  /**
2649
2724
  * 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `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 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
@@ -2663,20 +2738,22 @@ export class PartnerApiApi extends BaseAPI {
2663
2738
  * @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
2664
2739
  * @param {number} [limit] 페이지 크기(1~200, 기본 50).
2665
2740
  * @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 를 그대로 전달합니다. 미지정 시 첫 페이지.
2741
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
2666
2742
  * @param {*} [options] Override http request option.
2667
2743
  * @throws {RequiredError}
2668
2744
  */
2669
- listWebhookDeliveries(endpointId, status, limit, cursor, options) {
2670
- return PartnerApiApiFp(this.configuration).listWebhookDeliveries(endpointId, status, limit, cursor, options).then((request) => request(this.axios, this.basePath));
2745
+ listWebhookDeliveries(endpointId, status, limit, cursor, ifNoneMatch, options) {
2746
+ return PartnerApiApiFp(this.configuration).listWebhookDeliveries(endpointId, status, limit, cursor, ifNoneMatch, options).then((request) => request(this.axios, this.basePath));
2671
2747
  }
2672
2748
  /**
2673
2749
  * 이 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
2674
2750
  * @summary 웹훅 구독 목록 조회
2751
+ * @param {string} [ifNoneMatch] 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
2675
2752
  * @param {*} [options] Override http request option.
2676
2753
  * @throws {RequiredError}
2677
2754
  */
2678
- listWebhookEndpoints(options) {
2679
- return PartnerApiApiFp(this.configuration).listWebhookEndpoints(options).then((request) => request(this.axios, this.basePath));
2755
+ listWebhookEndpoints(ifNoneMatch, options) {
2756
+ return PartnerApiApiFp(this.configuration).listWebhookEndpoints(ifNoneMatch, options).then((request) => request(this.axios, this.basePath));
2680
2757
  }
2681
2758
  /**
2682
2759
  * 공고를 유찰 상태로 전환합니다. **호출 시점:** 입찰 마감 후 유찰 사유가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 공고 상태가 유찰(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` 헤더 필수.