@cmarket/partner-sdk 39.0.0 → 40.0.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 (878) hide show
  1. package/README.md +9 -6
  2. package/api/embed-api.ts +10 -10
  3. package/api/oauth-api.ts +18 -18
  4. package/api/partner-api-api.ts +334 -334
  5. package/api/products-api.ts +22 -22
  6. package/api/webhooks-api.ts +78 -78
  7. package/api/well-known-api.ts +10 -10
  8. package/api.ts +2 -2
  9. package/base.ts +2 -2
  10. package/common.ts +2 -2
  11. package/configuration.ts +2 -2
  12. package/dist/api/embed-api.d.ts +10 -10
  13. package/dist/api/embed-api.js +10 -10
  14. package/dist/api/oauth-api.d.ts +18 -18
  15. package/dist/api/oauth-api.js +18 -18
  16. package/dist/api/partner-api-api.d.ts +334 -334
  17. package/dist/api/partner-api-api.js +334 -334
  18. package/dist/api/products-api.d.ts +22 -22
  19. package/dist/api/products-api.js +22 -22
  20. package/dist/api/webhooks-api.d.ts +78 -78
  21. package/dist/api/webhooks-api.js +78 -78
  22. package/dist/api/well-known-api.d.ts +10 -10
  23. package/dist/api/well-known-api.js +10 -10
  24. package/dist/api.d.ts +2 -2
  25. package/dist/api.js +2 -2
  26. package/dist/base.d.ts +2 -2
  27. package/dist/base.js +2 -2
  28. package/dist/common.d.ts +2 -2
  29. package/dist/common.js +2 -2
  30. package/dist/configuration.d.ts +2 -2
  31. package/dist/configuration.js +2 -2
  32. package/dist/esm/api/embed-api.d.ts +10 -10
  33. package/dist/esm/api/embed-api.js +10 -10
  34. package/dist/esm/api/oauth-api.d.ts +18 -18
  35. package/dist/esm/api/oauth-api.js +18 -18
  36. package/dist/esm/api/partner-api-api.d.ts +334 -334
  37. package/dist/esm/api/partner-api-api.js +334 -334
  38. package/dist/esm/api/products-api.d.ts +22 -22
  39. package/dist/esm/api/products-api.js +22 -22
  40. package/dist/esm/api/webhooks-api.d.ts +78 -78
  41. package/dist/esm/api/webhooks-api.js +78 -78
  42. package/dist/esm/api/well-known-api.d.ts +10 -10
  43. package/dist/esm/api/well-known-api.js +10 -10
  44. package/dist/esm/api.d.ts +2 -2
  45. package/dist/esm/api.js +2 -2
  46. package/dist/esm/base.d.ts +2 -2
  47. package/dist/esm/base.js +2 -2
  48. package/dist/esm/common.d.ts +2 -2
  49. package/dist/esm/common.js +2 -2
  50. package/dist/esm/configuration.d.ts +2 -2
  51. package/dist/esm/configuration.js +2 -2
  52. package/dist/esm/index.d.ts +2 -2
  53. package/dist/esm/index.js +2 -2
  54. package/dist/esm/models/acceptance-result-response-dto.d.ts +2 -2
  55. package/dist/esm/models/acceptance-result-response-dto.js +2 -2
  56. package/dist/esm/models/acknowledge-product-receipt200-response.d.ts +2 -2
  57. package/dist/esm/models/acknowledge-product-receipt200-response.js +2 -2
  58. package/dist/esm/models/acknowledge-products-request-dto.d.ts +3 -3
  59. package/dist/esm/models/acknowledge-products-request-dto.js +2 -2
  60. package/dist/esm/models/api-catalog-dto.d.ts +2 -2
  61. package/dist/esm/models/api-catalog-dto.js +2 -2
  62. package/dist/esm/models/api-catalog-entry-dto.d.ts +4 -4
  63. package/dist/esm/models/api-catalog-entry-dto.js +2 -2
  64. package/dist/esm/models/api-catalog-link-dto.d.ts +2 -2
  65. package/dist/esm/models/api-catalog-link-dto.js +2 -2
  66. package/dist/esm/models/authorization-server-metadata-dto.d.ts +6 -6
  67. package/dist/esm/models/authorization-server-metadata-dto.js +2 -2
  68. package/dist/esm/models/award-method-public.d.ts +2 -2
  69. package/dist/esm/models/award-method-public.js +2 -2
  70. package/dist/esm/models/award-registered-v2-response-dto.d.ts +3 -3
  71. package/dist/esm/models/award-registered-v2-response-dto.js +2 -2
  72. package/dist/esm/models/award-reverted-v2-response-dto.d.ts +3 -3
  73. package/dist/esm/models/award-reverted-v2-response-dto.js +2 -2
  74. package/dist/esm/models/bid-acceptance-dto.d.ts +2 -2
  75. package/dist/esm/models/bid-acceptance-dto.js +2 -2
  76. package/dist/esm/models/bid-attachment-input-dto.d.ts +6 -6
  77. package/dist/esm/models/bid-attachment-input-dto.js +2 -2
  78. package/dist/esm/models/bid-bond-dto.d.ts +2 -2
  79. package/dist/esm/models/bid-bond-dto.js +2 -2
  80. package/dist/esm/models/bid-cancelled-response-dto.d.ts +3 -3
  81. package/dist/esm/models/bid-cancelled-response-dto.js +2 -2
  82. package/dist/esm/models/bid-contact-dto.d.ts +2 -2
  83. package/dist/esm/models/bid-contact-dto.js +2 -2
  84. package/dist/esm/models/bid-contacts-dto.d.ts +2 -2
  85. package/dist/esm/models/bid-contacts-dto.js +2 -2
  86. package/dist/esm/models/bid-contract-document-dto.d.ts +9 -9
  87. package/dist/esm/models/bid-contract-document-dto.js +2 -2
  88. package/dist/esm/models/bid-delivery-terms-dto.d.ts +2 -2
  89. package/dist/esm/models/bid-delivery-terms-dto.js +2 -2
  90. package/dist/esm/models/bid-detail-response-dto.d.ts +5 -5
  91. package/dist/esm/models/bid-detail-response-dto.js +2 -2
  92. package/dist/esm/models/bid-document-dto.d.ts +2 -2
  93. package/dist/esm/models/bid-document-dto.js +2 -2
  94. package/dist/esm/models/bid-failed-v2-response-dto.d.ts +3 -3
  95. package/dist/esm/models/bid-failed-v2-response-dto.js +2 -2
  96. package/dist/esm/models/bid-item-dto.d.ts +2 -2
  97. package/dist/esm/models/bid-item-dto.js +2 -2
  98. package/dist/esm/models/bid-lifecycle-dto.d.ts +2 -2
  99. package/dist/esm/models/bid-lifecycle-dto.js +2 -2
  100. package/dist/esm/models/bid-manager-dto.d.ts +2 -2
  101. package/dist/esm/models/bid-manager-dto.js +2 -2
  102. package/dist/esm/models/bid-payment-terms-dto.d.ts +2 -2
  103. package/dist/esm/models/bid-payment-terms-dto.js +2 -2
  104. package/dist/esm/models/bid-product-dto.d.ts +2 -2
  105. package/dist/esm/models/bid-product-dto.js +2 -2
  106. package/dist/esm/models/bid-public-status.d.ts +2 -2
  107. package/dist/esm/models/bid-public-status.js +2 -2
  108. package/dist/esm/models/bid-registered-response-dto.d.ts +3 -3
  109. package/dist/esm/models/bid-registered-response-dto.js +2 -2
  110. package/dist/esm/models/bid-result-participant-attachment-dto.d.ts +3 -3
  111. package/dist/esm/models/bid-result-participant-attachment-dto.js +2 -2
  112. package/dist/esm/models/bid-result-participant-dto.d.ts +3 -3
  113. package/dist/esm/models/bid-result-participant-dto.js +2 -2
  114. package/dist/esm/models/bid-results-response-dto.d.ts +5 -5
  115. package/dist/esm/models/bid-results-response-dto.js +2 -2
  116. package/dist/esm/models/bid-settlement-line-item-dto.d.ts +2 -2
  117. package/dist/esm/models/bid-settlement-line-item-dto.js +2 -2
  118. package/dist/esm/models/bid-settlement-participant-dto.d.ts +2 -2
  119. package/dist/esm/models/bid-settlement-participant-dto.js +2 -2
  120. package/dist/esm/models/bid-settlement-response-dto.d.ts +2 -2
  121. package/dist/esm/models/bid-settlement-response-dto.js +2 -2
  122. package/dist/esm/models/bid-statement-response-dto.d.ts +2 -2
  123. package/dist/esm/models/bid-statement-response-dto.js +2 -2
  124. package/dist/esm/models/bid-summary-dto.d.ts +3 -3
  125. package/dist/esm/models/bid-summary-dto.js +2 -2
  126. package/dist/esm/models/bid-type-public.d.ts +2 -2
  127. package/dist/esm/models/bid-type-public.js +2 -2
  128. package/dist/esm/models/bid-updated-response-dto.d.ts +2 -2
  129. package/dist/esm/models/bid-updated-response-dto.js +2 -2
  130. package/dist/esm/models/cancel-bid-request-dto.d.ts +2 -2
  131. package/dist/esm/models/cancel-bid-request-dto.js +2 -2
  132. package/dist/esm/models/cancel-bid200-response.d.ts +2 -2
  133. package/dist/esm/models/cancel-bid200-response.js +2 -2
  134. package/dist/esm/models/card-payment-request-response-dto.d.ts +2 -2
  135. package/dist/esm/models/card-payment-request-response-dto.js +2 -2
  136. package/dist/esm/models/complete-acceptance-request-dto.d.ts +4 -4
  137. package/dist/esm/models/complete-acceptance-request-dto.js +2 -2
  138. package/dist/esm/models/complete-acceptance200-response.d.ts +2 -2
  139. package/dist/esm/models/complete-acceptance200-response.js +2 -2
  140. package/dist/esm/models/complete-invoice200-response.d.ts +2 -2
  141. package/dist/esm/models/complete-invoice200-response.js +2 -2
  142. package/dist/esm/models/complete-upload-request-dto.d.ts +2 -2
  143. package/dist/esm/models/complete-upload-request-dto.js +2 -2
  144. package/dist/esm/models/contract-restriction-confirm-input-dto.d.ts +3 -3
  145. package/dist/esm/models/contract-restriction-confirm-input-dto.js +2 -2
  146. package/dist/esm/models/create-bid-request-dto.d.ts +5 -5
  147. package/dist/esm/models/create-bid-request-dto.js +2 -2
  148. package/dist/esm/models/create-card-payment-dto.d.ts +2 -2
  149. package/dist/esm/models/create-card-payment-dto.js +2 -2
  150. package/dist/esm/models/create-card-payment-request-dto.d.ts +2 -2
  151. package/dist/esm/models/create-card-payment-request-dto.js +2 -2
  152. package/dist/esm/models/create-card-payment200-response.d.ts +2 -2
  153. package/dist/esm/models/create-card-payment200-response.js +2 -2
  154. package/dist/esm/models/create-embed-launch201-response.d.ts +2 -2
  155. package/dist/esm/models/create-embed-launch201-response.js +2 -2
  156. package/dist/esm/models/create-external-contract-documents-request-dto.d.ts +4 -4
  157. package/dist/esm/models/create-external-contract-documents-request-dto.js +2 -2
  158. package/dist/esm/models/create-external-contract-documents-response-dto.d.ts +2 -2
  159. package/dist/esm/models/create-external-contract-documents-response-dto.js +2 -2
  160. package/dist/esm/models/create-file-upload-url201-response.d.ts +2 -2
  161. package/dist/esm/models/create-file-upload-url201-response.js +2 -2
  162. package/dist/esm/models/create-upload-url-request-dto.d.ts +2 -2
  163. package/dist/esm/models/create-upload-url-request-dto.js +2 -2
  164. package/dist/esm/models/create-webhook-endpoint-request-dto.d.ts +4 -4
  165. package/dist/esm/models/create-webhook-endpoint-request-dto.js +2 -2
  166. package/dist/esm/models/create-webhook-endpoint201-response.d.ts +2 -2
  167. package/dist/esm/models/create-webhook-endpoint201-response.js +2 -2
  168. package/dist/esm/models/delivery-date-type-public.d.ts +2 -2
  169. package/dist/esm/models/delivery-date-type-public.js +2 -2
  170. package/dist/esm/models/delivery-method-public.d.ts +2 -2
  171. package/dist/esm/models/delivery-method-public.js +2 -2
  172. package/dist/esm/models/embed-bid-prefill-dto.d.ts +83 -0
  173. package/dist/esm/models/embed-bid-prefill-dto.js +23 -0
  174. package/dist/esm/models/embed-bid-prefill-item-dto.d.ts +33 -0
  175. package/dist/esm/models/embed-bid-prefill-item-dto.js +14 -0
  176. package/dist/esm/models/embed-bid-prefill-manager-dto.d.ts +25 -0
  177. package/dist/esm/models/embed-bid-prefill-manager-dto.js +14 -0
  178. package/dist/esm/models/embed-launch-request-dto.d.ts +10 -9
  179. package/dist/esm/models/embed-launch-request-dto.js +2 -2
  180. package/dist/esm/models/embed-launch-response-dto.d.ts +4 -4
  181. package/dist/esm/models/embed-launch-response-dto.js +2 -2
  182. package/dist/esm/models/excellent-procurement-public.d.ts +2 -2
  183. package/dist/esm/models/excellent-procurement-public.js +2 -2
  184. package/dist/esm/models/external-contract-document-item-dto.d.ts +3 -3
  185. package/dist/esm/models/external-contract-document-item-dto.js +2 -2
  186. package/dist/esm/models/external-contract-documents-response-dto.d.ts +2 -2
  187. package/dist/esm/models/external-contract-documents-response-dto.js +2 -2
  188. package/dist/esm/models/external-contract-item-dto.d.ts +2 -2
  189. package/dist/esm/models/external-contract-item-dto.js +2 -2
  190. package/dist/esm/models/external-contract-snapshot-dto.d.ts +5 -5
  191. package/dist/esm/models/external-contract-snapshot-dto.js +2 -2
  192. package/dist/esm/models/external-document-inputs-dto.d.ts +2 -2
  193. package/dist/esm/models/external-document-inputs-dto.js +2 -2
  194. package/dist/esm/models/file-meta-response-dto.d.ts +2 -2
  195. package/dist/esm/models/file-meta-response-dto.js +2 -2
  196. package/dist/esm/models/file-uploaded-response-dto.d.ts +2 -2
  197. package/dist/esm/models/file-uploaded-response-dto.js +2 -2
  198. package/dist/esm/models/generated-external-contract-document-dto.d.ts +4 -4
  199. package/dist/esm/models/generated-external-contract-document-dto.js +2 -2
  200. package/dist/esm/models/get-bid-settlement200-response.d.ts +2 -2
  201. package/dist/esm/models/get-bid-settlement200-response.js +2 -2
  202. package/dist/esm/models/get-bid-statement200-response.d.ts +2 -2
  203. package/dist/esm/models/get-bid-statement200-response.js +2 -2
  204. package/dist/esm/models/get-bid200-response.d.ts +2 -2
  205. package/dist/esm/models/get-bid200-response.js +2 -2
  206. package/dist/esm/models/get-file-meta200-response.d.ts +2 -2
  207. package/dist/esm/models/get-file-meta200-response.js +2 -2
  208. package/dist/esm/models/get-supplier-card-payable-v2200-response.d.ts +2 -2
  209. package/dist/esm/models/get-supplier-card-payable-v2200-response.js +2 -2
  210. package/dist/esm/models/get-webhook-endpoint200-response.d.ts +2 -2
  211. package/dist/esm/models/get-webhook-endpoint200-response.js +2 -2
  212. package/dist/esm/models/green-product-public.d.ts +2 -2
  213. package/dist/esm/models/green-product-public.js +2 -2
  214. package/dist/esm/models/health-controller-check200-response.d.ts +2 -2
  215. package/dist/esm/models/health-controller-check200-response.js +2 -2
  216. package/dist/esm/models/health-response-dto.d.ts +2 -2
  217. package/dist/esm/models/health-response-dto.js +2 -2
  218. package/dist/esm/models/hierarchical-region-dto.d.ts +2 -2
  219. package/dist/esm/models/hierarchical-region-dto.js +2 -2
  220. package/dist/esm/models/index.d.ts +3 -0
  221. package/dist/esm/models/index.js +3 -0
  222. package/dist/esm/models/introspect-request-dto.d.ts +5 -5
  223. package/dist/esm/models/introspect-request-dto.js +2 -2
  224. package/dist/esm/models/introspection-response-dto.d.ts +4 -4
  225. package/dist/esm/models/introspection-response-dto.js +2 -2
  226. package/dist/esm/models/invalid-param-dto.d.ts +2 -2
  227. package/dist/esm/models/invalid-param-dto.js +2 -2
  228. package/dist/esm/models/invoice-completed-response-dto.d.ts +2 -2
  229. package/dist/esm/models/invoice-completed-response-dto.js +2 -2
  230. package/dist/esm/models/invoice-split-response-dto.d.ts +2 -2
  231. package/dist/esm/models/invoice-split-response-dto.js +2 -2
  232. package/dist/esm/models/legal-mandatory-public.d.ts +2 -2
  233. package/dist/esm/models/legal-mandatory-public.js +2 -2
  234. package/dist/esm/models/list-bid-results200-response.d.ts +2 -2
  235. package/dist/esm/models/list-bid-results200-response.js +2 -2
  236. package/dist/esm/models/list-bids200-response-meta.d.ts +3 -3
  237. package/dist/esm/models/list-bids200-response-meta.js +2 -2
  238. package/dist/esm/models/list-bids200-response.d.ts +2 -2
  239. package/dist/esm/models/list-bids200-response.js +2 -2
  240. package/dist/esm/models/list-products200-response.d.ts +2 -2
  241. package/dist/esm/models/list-products200-response.js +2 -2
  242. package/dist/esm/models/list-webhook-deliveries-response-dto.d.ts +3 -3
  243. package/dist/esm/models/list-webhook-deliveries-response-dto.js +2 -2
  244. package/dist/esm/models/list-webhook-deliveries200-response.d.ts +2 -2
  245. package/dist/esm/models/list-webhook-deliveries200-response.js +2 -2
  246. package/dist/esm/models/list-webhook-endpoints200-response.d.ts +2 -2
  247. package/dist/esm/models/list-webhook-endpoints200-response.js +2 -2
  248. package/dist/esm/models/mark-bid-failed-request-dto.d.ts +2 -2
  249. package/dist/esm/models/mark-bid-failed-request-dto.js +2 -2
  250. package/dist/esm/models/mark-bid-failed201-response.d.ts +2 -2
  251. package/dist/esm/models/mark-bid-failed201-response.js +2 -2
  252. package/dist/esm/models/negotiation-score-dto.d.ts +2 -2
  253. package/dist/esm/models/negotiation-score-dto.js +2 -2
  254. package/dist/esm/models/negotiation-scored-v2-response-dto.d.ts +3 -3
  255. package/dist/esm/models/negotiation-scored-v2-response-dto.js +2 -2
  256. package/dist/esm/models/oauth-error-response-dto.d.ts +2 -2
  257. package/dist/esm/models/oauth-error-response-dto.js +2 -2
  258. package/dist/esm/models/on-bid-award-reverted-request.d.ts +2 -2
  259. package/dist/esm/models/on-bid-award-reverted-request.js +2 -2
  260. package/dist/esm/models/on-bid-awarded-request.d.ts +2 -2
  261. package/dist/esm/models/on-bid-awarded-request.js +2 -2
  262. package/dist/esm/models/on-bid-canceled-request.d.ts +2 -2
  263. package/dist/esm/models/on-bid-canceled-request.js +2 -2
  264. package/dist/esm/models/on-bid-closed-request.d.ts +2 -2
  265. package/dist/esm/models/on-bid-closed-request.js +2 -2
  266. package/dist/esm/models/on-bid-failed-request.d.ts +2 -2
  267. package/dist/esm/models/on-bid-failed-request.js +2 -2
  268. package/dist/esm/models/on-ping-request.d.ts +2 -2
  269. package/dist/esm/models/on-ping-request.js +2 -2
  270. package/dist/esm/models/partner-webhook-delivery-status.d.ts +2 -2
  271. package/dist/esm/models/partner-webhook-delivery-status.js +2 -2
  272. package/dist/esm/models/partner-webhook-endpoint-status.d.ts +3 -3
  273. package/dist/esm/models/partner-webhook-endpoint-status.js +3 -3
  274. package/dist/esm/models/partner-webhook-event-type.d.ts +2 -2
  275. package/dist/esm/models/partner-webhook-event-type.js +2 -2
  276. package/dist/esm/models/payment-method-public.d.ts +2 -2
  277. package/dist/esm/models/payment-method-public.js +2 -2
  278. package/dist/esm/models/preconditions-dto.d.ts +2 -2
  279. package/dist/esm/models/preconditions-dto.js +2 -2
  280. package/dist/esm/models/problem-details-dto.d.ts +3 -3
  281. package/dist/esm/models/problem-details-dto.js +2 -2
  282. package/dist/esm/models/product-receipt-response-dto.d.ts +2 -2
  283. package/dist/esm/models/product-receipt-response-dto.js +2 -2
  284. package/dist/esm/models/product-response-dto.d.ts +3 -3
  285. package/dist/esm/models/product-response-dto.js +2 -2
  286. package/dist/esm/models/protected-resource-metadata-dto.d.ts +6 -6
  287. package/dist/esm/models/protected-resource-metadata-dto.js +2 -2
  288. package/dist/esm/models/register-award-request-dto.d.ts +5 -5
  289. package/dist/esm/models/register-award-request-dto.js +2 -2
  290. package/dist/esm/models/register-award201-response.d.ts +2 -2
  291. package/dist/esm/models/register-award201-response.js +2 -2
  292. package/dist/esm/models/register-bid201-response.d.ts +2 -2
  293. package/dist/esm/models/register-bid201-response.js +2 -2
  294. package/dist/esm/models/register-semo-contract-request-dto.d.ts +5 -5
  295. package/dist/esm/models/register-semo-contract-request-dto.js +2 -2
  296. package/dist/esm/models/request-invoice-split-request-dto.d.ts +4 -4
  297. package/dist/esm/models/request-invoice-split-request-dto.js +2 -2
  298. package/dist/esm/models/request-invoice-split200-response.d.ts +2 -2
  299. package/dist/esm/models/request-invoice-split200-response.js +2 -2
  300. package/dist/esm/models/retiree-roster-input-dto.d.ts +2 -2
  301. package/dist/esm/models/retiree-roster-input-dto.js +2 -2
  302. package/dist/esm/models/retiree-roster-row-dto.d.ts +2 -2
  303. package/dist/esm/models/retiree-roster-row-dto.js +2 -2
  304. package/dist/esm/models/revert-award-request-dto.d.ts +2 -2
  305. package/dist/esm/models/revert-award-request-dto.js +2 -2
  306. package/dist/esm/models/revert-award200-response.d.ts +2 -2
  307. package/dist/esm/models/revert-award200-response.js +2 -2
  308. package/dist/esm/models/revoke-request-dto.d.ts +5 -5
  309. package/dist/esm/models/revoke-request-dto.js +2 -2
  310. package/dist/esm/models/semo-contract-registered-response-dto.d.ts +3 -3
  311. package/dist/esm/models/semo-contract-registered-response-dto.js +2 -2
  312. package/dist/esm/models/semo-contract-taxinvoice-status-response-dto.d.ts +2 -2
  313. package/dist/esm/models/semo-contract-taxinvoice-status-response-dto.js +2 -2
  314. package/dist/esm/models/send-webhook-test-event200-response.d.ts +2 -2
  315. package/dist/esm/models/send-webhook-test-event200-response.js +2 -2
  316. package/dist/esm/models/statement-document-dto.d.ts +3 -3
  317. package/dist/esm/models/statement-document-dto.js +2 -2
  318. package/dist/esm/models/statement-product-dto.d.ts +2 -2
  319. package/dist/esm/models/statement-product-dto.js +2 -2
  320. package/dist/esm/models/submit-negotiation-scores-request-dto.d.ts +2 -2
  321. package/dist/esm/models/submit-negotiation-scores-request-dto.js +2 -2
  322. package/dist/esm/models/submit-negotiation-scores201-response.d.ts +2 -2
  323. package/dist/esm/models/submit-negotiation-scores201-response.js +2 -2
  324. package/dist/esm/models/supplier-card-payable-response-dto.d.ts +2 -2
  325. package/dist/esm/models/supplier-card-payable-response-dto.js +2 -2
  326. package/dist/esm/models/supplier-tax-type.d.ts +2 -2
  327. package/dist/esm/models/supplier-tax-type.js +2 -2
  328. package/dist/esm/models/token-request-dto.d.ts +5 -5
  329. package/dist/esm/models/token-request-dto.js +2 -2
  330. package/dist/esm/models/token-response-dto.d.ts +3 -3
  331. package/dist/esm/models/token-response-dto.js +2 -2
  332. package/dist/esm/models/update-bid-request-dto.d.ts +5 -5
  333. package/dist/esm/models/update-bid-request-dto.js +2 -2
  334. package/dist/esm/models/update-bid200-response.d.ts +2 -2
  335. package/dist/esm/models/update-bid200-response.js +2 -2
  336. package/dist/esm/models/update-webhook-endpoint-request-dto.d.ts +3 -3
  337. package/dist/esm/models/update-webhook-endpoint-request-dto.js +2 -2
  338. package/dist/esm/models/upload-file-request-dto.d.ts +4 -4
  339. package/dist/esm/models/upload-file-request-dto.js +2 -2
  340. package/dist/esm/models/upload-file201-response.d.ts +2 -2
  341. package/dist/esm/models/upload-file201-response.js +2 -2
  342. package/dist/esm/models/upload-url-created-response-dto.d.ts +5 -5
  343. package/dist/esm/models/upload-url-created-response-dto.js +2 -2
  344. package/dist/esm/models/webhook-bid-event-data.d.ts +3 -3
  345. package/dist/esm/models/webhook-bid-event-data.js +2 -2
  346. package/dist/esm/models/webhook-delivery-dto.d.ts +4 -4
  347. package/dist/esm/models/webhook-delivery-dto.js +2 -2
  348. package/dist/esm/models/webhook-endpoint-dto.d.ts +6 -6
  349. package/dist/esm/models/webhook-endpoint-dto.js +2 -2
  350. package/dist/esm/models/webhook-endpoint-with-secret-dto.d.ts +6 -6
  351. package/dist/esm/models/webhook-endpoint-with-secret-dto.js +2 -2
  352. package/dist/esm/models/webhook-event-envelope.d.ts +3 -3
  353. package/dist/esm/models/webhook-event-envelope.js +2 -2
  354. package/dist/esm/models/webhook-ping-event-data.d.ts +2 -2
  355. package/dist/esm/models/webhook-ping-event-data.js +2 -2
  356. package/dist/esm/models/webhook-test-result-dto.d.ts +3 -3
  357. package/dist/esm/models/webhook-test-result-dto.js +2 -2
  358. package/dist/index.d.ts +2 -2
  359. package/dist/index.js +2 -2
  360. package/dist/models/acceptance-result-response-dto.d.ts +2 -2
  361. package/dist/models/acceptance-result-response-dto.js +2 -2
  362. package/dist/models/acknowledge-product-receipt200-response.d.ts +2 -2
  363. package/dist/models/acknowledge-product-receipt200-response.js +2 -2
  364. package/dist/models/acknowledge-products-request-dto.d.ts +3 -3
  365. package/dist/models/acknowledge-products-request-dto.js +2 -2
  366. package/dist/models/api-catalog-dto.d.ts +2 -2
  367. package/dist/models/api-catalog-dto.js +2 -2
  368. package/dist/models/api-catalog-entry-dto.d.ts +4 -4
  369. package/dist/models/api-catalog-entry-dto.js +2 -2
  370. package/dist/models/api-catalog-link-dto.d.ts +2 -2
  371. package/dist/models/api-catalog-link-dto.js +2 -2
  372. package/dist/models/authorization-server-metadata-dto.d.ts +6 -6
  373. package/dist/models/authorization-server-metadata-dto.js +2 -2
  374. package/dist/models/award-method-public.d.ts +2 -2
  375. package/dist/models/award-method-public.js +2 -2
  376. package/dist/models/award-registered-v2-response-dto.d.ts +3 -3
  377. package/dist/models/award-registered-v2-response-dto.js +2 -2
  378. package/dist/models/award-reverted-v2-response-dto.d.ts +3 -3
  379. package/dist/models/award-reverted-v2-response-dto.js +2 -2
  380. package/dist/models/bid-acceptance-dto.d.ts +2 -2
  381. package/dist/models/bid-acceptance-dto.js +2 -2
  382. package/dist/models/bid-attachment-input-dto.d.ts +6 -6
  383. package/dist/models/bid-attachment-input-dto.js +2 -2
  384. package/dist/models/bid-bond-dto.d.ts +2 -2
  385. package/dist/models/bid-bond-dto.js +2 -2
  386. package/dist/models/bid-cancelled-response-dto.d.ts +3 -3
  387. package/dist/models/bid-cancelled-response-dto.js +2 -2
  388. package/dist/models/bid-contact-dto.d.ts +2 -2
  389. package/dist/models/bid-contact-dto.js +2 -2
  390. package/dist/models/bid-contacts-dto.d.ts +2 -2
  391. package/dist/models/bid-contacts-dto.js +2 -2
  392. package/dist/models/bid-contract-document-dto.d.ts +9 -9
  393. package/dist/models/bid-contract-document-dto.js +2 -2
  394. package/dist/models/bid-delivery-terms-dto.d.ts +2 -2
  395. package/dist/models/bid-delivery-terms-dto.js +2 -2
  396. package/dist/models/bid-detail-response-dto.d.ts +5 -5
  397. package/dist/models/bid-detail-response-dto.js +2 -2
  398. package/dist/models/bid-document-dto.d.ts +2 -2
  399. package/dist/models/bid-document-dto.js +2 -2
  400. package/dist/models/bid-failed-v2-response-dto.d.ts +3 -3
  401. package/dist/models/bid-failed-v2-response-dto.js +2 -2
  402. package/dist/models/bid-item-dto.d.ts +2 -2
  403. package/dist/models/bid-item-dto.js +2 -2
  404. package/dist/models/bid-lifecycle-dto.d.ts +2 -2
  405. package/dist/models/bid-lifecycle-dto.js +2 -2
  406. package/dist/models/bid-manager-dto.d.ts +2 -2
  407. package/dist/models/bid-manager-dto.js +2 -2
  408. package/dist/models/bid-payment-terms-dto.d.ts +2 -2
  409. package/dist/models/bid-payment-terms-dto.js +2 -2
  410. package/dist/models/bid-product-dto.d.ts +2 -2
  411. package/dist/models/bid-product-dto.js +2 -2
  412. package/dist/models/bid-public-status.d.ts +2 -2
  413. package/dist/models/bid-public-status.js +2 -2
  414. package/dist/models/bid-registered-response-dto.d.ts +3 -3
  415. package/dist/models/bid-registered-response-dto.js +2 -2
  416. package/dist/models/bid-result-participant-attachment-dto.d.ts +3 -3
  417. package/dist/models/bid-result-participant-attachment-dto.js +2 -2
  418. package/dist/models/bid-result-participant-dto.d.ts +3 -3
  419. package/dist/models/bid-result-participant-dto.js +2 -2
  420. package/dist/models/bid-results-response-dto.d.ts +5 -5
  421. package/dist/models/bid-results-response-dto.js +2 -2
  422. package/dist/models/bid-settlement-line-item-dto.d.ts +2 -2
  423. package/dist/models/bid-settlement-line-item-dto.js +2 -2
  424. package/dist/models/bid-settlement-participant-dto.d.ts +2 -2
  425. package/dist/models/bid-settlement-participant-dto.js +2 -2
  426. package/dist/models/bid-settlement-response-dto.d.ts +2 -2
  427. package/dist/models/bid-settlement-response-dto.js +2 -2
  428. package/dist/models/bid-statement-response-dto.d.ts +2 -2
  429. package/dist/models/bid-statement-response-dto.js +2 -2
  430. package/dist/models/bid-summary-dto.d.ts +3 -3
  431. package/dist/models/bid-summary-dto.js +2 -2
  432. package/dist/models/bid-type-public.d.ts +2 -2
  433. package/dist/models/bid-type-public.js +2 -2
  434. package/dist/models/bid-updated-response-dto.d.ts +2 -2
  435. package/dist/models/bid-updated-response-dto.js +2 -2
  436. package/dist/models/cancel-bid-request-dto.d.ts +2 -2
  437. package/dist/models/cancel-bid-request-dto.js +2 -2
  438. package/dist/models/cancel-bid200-response.d.ts +2 -2
  439. package/dist/models/cancel-bid200-response.js +2 -2
  440. package/dist/models/card-payment-request-response-dto.d.ts +2 -2
  441. package/dist/models/card-payment-request-response-dto.js +2 -2
  442. package/dist/models/complete-acceptance-request-dto.d.ts +4 -4
  443. package/dist/models/complete-acceptance-request-dto.js +2 -2
  444. package/dist/models/complete-acceptance200-response.d.ts +2 -2
  445. package/dist/models/complete-acceptance200-response.js +2 -2
  446. package/dist/models/complete-invoice200-response.d.ts +2 -2
  447. package/dist/models/complete-invoice200-response.js +2 -2
  448. package/dist/models/complete-upload-request-dto.d.ts +2 -2
  449. package/dist/models/complete-upload-request-dto.js +2 -2
  450. package/dist/models/contract-restriction-confirm-input-dto.d.ts +3 -3
  451. package/dist/models/contract-restriction-confirm-input-dto.js +2 -2
  452. package/dist/models/create-bid-request-dto.d.ts +5 -5
  453. package/dist/models/create-bid-request-dto.js +2 -2
  454. package/dist/models/create-card-payment-dto.d.ts +2 -2
  455. package/dist/models/create-card-payment-dto.js +2 -2
  456. package/dist/models/create-card-payment-request-dto.d.ts +2 -2
  457. package/dist/models/create-card-payment-request-dto.js +2 -2
  458. package/dist/models/create-card-payment200-response.d.ts +2 -2
  459. package/dist/models/create-card-payment200-response.js +2 -2
  460. package/dist/models/create-embed-launch201-response.d.ts +2 -2
  461. package/dist/models/create-embed-launch201-response.js +2 -2
  462. package/dist/models/create-external-contract-documents-request-dto.d.ts +4 -4
  463. package/dist/models/create-external-contract-documents-request-dto.js +2 -2
  464. package/dist/models/create-external-contract-documents-response-dto.d.ts +2 -2
  465. package/dist/models/create-external-contract-documents-response-dto.js +2 -2
  466. package/dist/models/create-file-upload-url201-response.d.ts +2 -2
  467. package/dist/models/create-file-upload-url201-response.js +2 -2
  468. package/dist/models/create-upload-url-request-dto.d.ts +2 -2
  469. package/dist/models/create-upload-url-request-dto.js +2 -2
  470. package/dist/models/create-webhook-endpoint-request-dto.d.ts +4 -4
  471. package/dist/models/create-webhook-endpoint-request-dto.js +2 -2
  472. package/dist/models/create-webhook-endpoint201-response.d.ts +2 -2
  473. package/dist/models/create-webhook-endpoint201-response.js +2 -2
  474. package/dist/models/delivery-date-type-public.d.ts +2 -2
  475. package/dist/models/delivery-date-type-public.js +2 -2
  476. package/dist/models/delivery-method-public.d.ts +2 -2
  477. package/dist/models/delivery-method-public.js +2 -2
  478. package/dist/models/embed-bid-prefill-dto.d.ts +83 -0
  479. package/dist/models/embed-bid-prefill-dto.js +26 -0
  480. package/dist/models/embed-bid-prefill-item-dto.d.ts +33 -0
  481. package/dist/models/embed-bid-prefill-item-dto.js +15 -0
  482. package/dist/models/embed-bid-prefill-manager-dto.d.ts +25 -0
  483. package/dist/models/embed-bid-prefill-manager-dto.js +15 -0
  484. package/dist/models/embed-launch-request-dto.d.ts +10 -9
  485. package/dist/models/embed-launch-request-dto.js +2 -2
  486. package/dist/models/embed-launch-response-dto.d.ts +4 -4
  487. package/dist/models/embed-launch-response-dto.js +2 -2
  488. package/dist/models/excellent-procurement-public.d.ts +2 -2
  489. package/dist/models/excellent-procurement-public.js +2 -2
  490. package/dist/models/external-contract-document-item-dto.d.ts +3 -3
  491. package/dist/models/external-contract-document-item-dto.js +2 -2
  492. package/dist/models/external-contract-documents-response-dto.d.ts +2 -2
  493. package/dist/models/external-contract-documents-response-dto.js +2 -2
  494. package/dist/models/external-contract-item-dto.d.ts +2 -2
  495. package/dist/models/external-contract-item-dto.js +2 -2
  496. package/dist/models/external-contract-snapshot-dto.d.ts +5 -5
  497. package/dist/models/external-contract-snapshot-dto.js +2 -2
  498. package/dist/models/external-document-inputs-dto.d.ts +2 -2
  499. package/dist/models/external-document-inputs-dto.js +2 -2
  500. package/dist/models/file-meta-response-dto.d.ts +2 -2
  501. package/dist/models/file-meta-response-dto.js +2 -2
  502. package/dist/models/file-uploaded-response-dto.d.ts +2 -2
  503. package/dist/models/file-uploaded-response-dto.js +2 -2
  504. package/dist/models/generated-external-contract-document-dto.d.ts +4 -4
  505. package/dist/models/generated-external-contract-document-dto.js +2 -2
  506. package/dist/models/get-bid-settlement200-response.d.ts +2 -2
  507. package/dist/models/get-bid-settlement200-response.js +2 -2
  508. package/dist/models/get-bid-statement200-response.d.ts +2 -2
  509. package/dist/models/get-bid-statement200-response.js +2 -2
  510. package/dist/models/get-bid200-response.d.ts +2 -2
  511. package/dist/models/get-bid200-response.js +2 -2
  512. package/dist/models/get-file-meta200-response.d.ts +2 -2
  513. package/dist/models/get-file-meta200-response.js +2 -2
  514. package/dist/models/get-supplier-card-payable-v2200-response.d.ts +2 -2
  515. package/dist/models/get-supplier-card-payable-v2200-response.js +2 -2
  516. package/dist/models/get-webhook-endpoint200-response.d.ts +2 -2
  517. package/dist/models/get-webhook-endpoint200-response.js +2 -2
  518. package/dist/models/green-product-public.d.ts +2 -2
  519. package/dist/models/green-product-public.js +2 -2
  520. package/dist/models/health-controller-check200-response.d.ts +2 -2
  521. package/dist/models/health-controller-check200-response.js +2 -2
  522. package/dist/models/health-response-dto.d.ts +2 -2
  523. package/dist/models/health-response-dto.js +2 -2
  524. package/dist/models/hierarchical-region-dto.d.ts +2 -2
  525. package/dist/models/hierarchical-region-dto.js +2 -2
  526. package/dist/models/index.d.ts +3 -0
  527. package/dist/models/index.js +3 -0
  528. package/dist/models/introspect-request-dto.d.ts +5 -5
  529. package/dist/models/introspect-request-dto.js +2 -2
  530. package/dist/models/introspection-response-dto.d.ts +4 -4
  531. package/dist/models/introspection-response-dto.js +2 -2
  532. package/dist/models/invalid-param-dto.d.ts +2 -2
  533. package/dist/models/invalid-param-dto.js +2 -2
  534. package/dist/models/invoice-completed-response-dto.d.ts +2 -2
  535. package/dist/models/invoice-completed-response-dto.js +2 -2
  536. package/dist/models/invoice-split-response-dto.d.ts +2 -2
  537. package/dist/models/invoice-split-response-dto.js +2 -2
  538. package/dist/models/legal-mandatory-public.d.ts +2 -2
  539. package/dist/models/legal-mandatory-public.js +2 -2
  540. package/dist/models/list-bid-results200-response.d.ts +2 -2
  541. package/dist/models/list-bid-results200-response.js +2 -2
  542. package/dist/models/list-bids200-response-meta.d.ts +3 -3
  543. package/dist/models/list-bids200-response-meta.js +2 -2
  544. package/dist/models/list-bids200-response.d.ts +2 -2
  545. package/dist/models/list-bids200-response.js +2 -2
  546. package/dist/models/list-products200-response.d.ts +2 -2
  547. package/dist/models/list-products200-response.js +2 -2
  548. package/dist/models/list-webhook-deliveries-response-dto.d.ts +3 -3
  549. package/dist/models/list-webhook-deliveries-response-dto.js +2 -2
  550. package/dist/models/list-webhook-deliveries200-response.d.ts +2 -2
  551. package/dist/models/list-webhook-deliveries200-response.js +2 -2
  552. package/dist/models/list-webhook-endpoints200-response.d.ts +2 -2
  553. package/dist/models/list-webhook-endpoints200-response.js +2 -2
  554. package/dist/models/mark-bid-failed-request-dto.d.ts +2 -2
  555. package/dist/models/mark-bid-failed-request-dto.js +2 -2
  556. package/dist/models/mark-bid-failed201-response.d.ts +2 -2
  557. package/dist/models/mark-bid-failed201-response.js +2 -2
  558. package/dist/models/negotiation-score-dto.d.ts +2 -2
  559. package/dist/models/negotiation-score-dto.js +2 -2
  560. package/dist/models/negotiation-scored-v2-response-dto.d.ts +3 -3
  561. package/dist/models/negotiation-scored-v2-response-dto.js +2 -2
  562. package/dist/models/oauth-error-response-dto.d.ts +2 -2
  563. package/dist/models/oauth-error-response-dto.js +2 -2
  564. package/dist/models/on-bid-award-reverted-request.d.ts +2 -2
  565. package/dist/models/on-bid-award-reverted-request.js +2 -2
  566. package/dist/models/on-bid-awarded-request.d.ts +2 -2
  567. package/dist/models/on-bid-awarded-request.js +2 -2
  568. package/dist/models/on-bid-canceled-request.d.ts +2 -2
  569. package/dist/models/on-bid-canceled-request.js +2 -2
  570. package/dist/models/on-bid-closed-request.d.ts +2 -2
  571. package/dist/models/on-bid-closed-request.js +2 -2
  572. package/dist/models/on-bid-failed-request.d.ts +2 -2
  573. package/dist/models/on-bid-failed-request.js +2 -2
  574. package/dist/models/on-ping-request.d.ts +2 -2
  575. package/dist/models/on-ping-request.js +2 -2
  576. package/dist/models/partner-webhook-delivery-status.d.ts +2 -2
  577. package/dist/models/partner-webhook-delivery-status.js +2 -2
  578. package/dist/models/partner-webhook-endpoint-status.d.ts +3 -3
  579. package/dist/models/partner-webhook-endpoint-status.js +3 -3
  580. package/dist/models/partner-webhook-event-type.d.ts +2 -2
  581. package/dist/models/partner-webhook-event-type.js +2 -2
  582. package/dist/models/payment-method-public.d.ts +2 -2
  583. package/dist/models/payment-method-public.js +2 -2
  584. package/dist/models/preconditions-dto.d.ts +2 -2
  585. package/dist/models/preconditions-dto.js +2 -2
  586. package/dist/models/problem-details-dto.d.ts +3 -3
  587. package/dist/models/problem-details-dto.js +2 -2
  588. package/dist/models/product-receipt-response-dto.d.ts +2 -2
  589. package/dist/models/product-receipt-response-dto.js +2 -2
  590. package/dist/models/product-response-dto.d.ts +3 -3
  591. package/dist/models/product-response-dto.js +2 -2
  592. package/dist/models/protected-resource-metadata-dto.d.ts +6 -6
  593. package/dist/models/protected-resource-metadata-dto.js +2 -2
  594. package/dist/models/register-award-request-dto.d.ts +5 -5
  595. package/dist/models/register-award-request-dto.js +2 -2
  596. package/dist/models/register-award201-response.d.ts +2 -2
  597. package/dist/models/register-award201-response.js +2 -2
  598. package/dist/models/register-bid201-response.d.ts +2 -2
  599. package/dist/models/register-bid201-response.js +2 -2
  600. package/dist/models/register-semo-contract-request-dto.d.ts +5 -5
  601. package/dist/models/register-semo-contract-request-dto.js +2 -2
  602. package/dist/models/request-invoice-split-request-dto.d.ts +4 -4
  603. package/dist/models/request-invoice-split-request-dto.js +2 -2
  604. package/dist/models/request-invoice-split200-response.d.ts +2 -2
  605. package/dist/models/request-invoice-split200-response.js +2 -2
  606. package/dist/models/retiree-roster-input-dto.d.ts +2 -2
  607. package/dist/models/retiree-roster-input-dto.js +2 -2
  608. package/dist/models/retiree-roster-row-dto.d.ts +2 -2
  609. package/dist/models/retiree-roster-row-dto.js +2 -2
  610. package/dist/models/revert-award-request-dto.d.ts +2 -2
  611. package/dist/models/revert-award-request-dto.js +2 -2
  612. package/dist/models/revert-award200-response.d.ts +2 -2
  613. package/dist/models/revert-award200-response.js +2 -2
  614. package/dist/models/revoke-request-dto.d.ts +5 -5
  615. package/dist/models/revoke-request-dto.js +2 -2
  616. package/dist/models/semo-contract-registered-response-dto.d.ts +3 -3
  617. package/dist/models/semo-contract-registered-response-dto.js +2 -2
  618. package/dist/models/semo-contract-taxinvoice-status-response-dto.d.ts +2 -2
  619. package/dist/models/semo-contract-taxinvoice-status-response-dto.js +2 -2
  620. package/dist/models/send-webhook-test-event200-response.d.ts +2 -2
  621. package/dist/models/send-webhook-test-event200-response.js +2 -2
  622. package/dist/models/statement-document-dto.d.ts +3 -3
  623. package/dist/models/statement-document-dto.js +2 -2
  624. package/dist/models/statement-product-dto.d.ts +2 -2
  625. package/dist/models/statement-product-dto.js +2 -2
  626. package/dist/models/submit-negotiation-scores-request-dto.d.ts +2 -2
  627. package/dist/models/submit-negotiation-scores-request-dto.js +2 -2
  628. package/dist/models/submit-negotiation-scores201-response.d.ts +2 -2
  629. package/dist/models/submit-negotiation-scores201-response.js +2 -2
  630. package/dist/models/supplier-card-payable-response-dto.d.ts +2 -2
  631. package/dist/models/supplier-card-payable-response-dto.js +2 -2
  632. package/dist/models/supplier-tax-type.d.ts +2 -2
  633. package/dist/models/supplier-tax-type.js +2 -2
  634. package/dist/models/token-request-dto.d.ts +5 -5
  635. package/dist/models/token-request-dto.js +2 -2
  636. package/dist/models/token-response-dto.d.ts +3 -3
  637. package/dist/models/token-response-dto.js +2 -2
  638. package/dist/models/update-bid-request-dto.d.ts +5 -5
  639. package/dist/models/update-bid-request-dto.js +2 -2
  640. package/dist/models/update-bid200-response.d.ts +2 -2
  641. package/dist/models/update-bid200-response.js +2 -2
  642. package/dist/models/update-webhook-endpoint-request-dto.d.ts +3 -3
  643. package/dist/models/update-webhook-endpoint-request-dto.js +2 -2
  644. package/dist/models/upload-file-request-dto.d.ts +4 -4
  645. package/dist/models/upload-file-request-dto.js +2 -2
  646. package/dist/models/upload-file201-response.d.ts +2 -2
  647. package/dist/models/upload-file201-response.js +2 -2
  648. package/dist/models/upload-url-created-response-dto.d.ts +5 -5
  649. package/dist/models/upload-url-created-response-dto.js +2 -2
  650. package/dist/models/webhook-bid-event-data.d.ts +3 -3
  651. package/dist/models/webhook-bid-event-data.js +2 -2
  652. package/dist/models/webhook-delivery-dto.d.ts +4 -4
  653. package/dist/models/webhook-delivery-dto.js +2 -2
  654. package/dist/models/webhook-endpoint-dto.d.ts +6 -6
  655. package/dist/models/webhook-endpoint-dto.js +2 -2
  656. package/dist/models/webhook-endpoint-with-secret-dto.d.ts +6 -6
  657. package/dist/models/webhook-endpoint-with-secret-dto.js +2 -2
  658. package/dist/models/webhook-event-envelope.d.ts +3 -3
  659. package/dist/models/webhook-event-envelope.js +2 -2
  660. package/dist/models/webhook-ping-event-data.d.ts +2 -2
  661. package/dist/models/webhook-ping-event-data.js +2 -2
  662. package/dist/models/webhook-test-result-dto.d.ts +3 -3
  663. package/dist/models/webhook-test-result-dto.js +2 -2
  664. package/docs/AcknowledgeProductsRequestDto.md +1 -1
  665. package/docs/ApiCatalogEntryDto.md +2 -2
  666. package/docs/AuthorizationServerMetadataDto.md +4 -4
  667. package/docs/AwardRegisteredV2ResponseDto.md +1 -1
  668. package/docs/AwardRevertedV2ResponseDto.md +1 -1
  669. package/docs/BidAttachmentInputDto.md +4 -4
  670. package/docs/BidCancelledResponseDto.md +1 -1
  671. package/docs/BidContractDocumentDto.md +7 -7
  672. package/docs/BidDetailResponseDto.md +3 -3
  673. package/docs/BidFailedV2ResponseDto.md +1 -1
  674. package/docs/BidRegisteredResponseDto.md +1 -1
  675. package/docs/BidResultParticipantAttachmentDto.md +1 -1
  676. package/docs/BidResultParticipantDto.md +1 -1
  677. package/docs/BidResultsResponseDto.md +3 -3
  678. package/docs/BidSummaryDto.md +1 -1
  679. package/docs/CompleteAcceptanceRequestDto.md +2 -2
  680. package/docs/ContractRestrictionConfirmInputDto.md +1 -1
  681. package/docs/CreateBidRequestDto.md +3 -3
  682. package/docs/CreateExternalContractDocumentsRequestDto.md +2 -2
  683. package/docs/CreateWebhookEndpointRequestDto.md +2 -2
  684. package/docs/EmbedApi.md +11 -11
  685. package/docs/EmbedBidPrefillDto.md +46 -0
  686. package/docs/EmbedBidPrefillItemDto.md +28 -0
  687. package/docs/EmbedBidPrefillManagerDto.md +24 -0
  688. package/docs/EmbedLaunchRequestDto.md +6 -6
  689. package/docs/EmbedLaunchResponseDto.md +2 -2
  690. package/docs/ExternalContractDocumentItemDto.md +1 -1
  691. package/docs/ExternalContractSnapshotDto.md +3 -3
  692. package/docs/GeneratedExternalContractDocumentDto.md +2 -2
  693. package/docs/IntrospectRequestDto.md +3 -3
  694. package/docs/IntrospectionResponseDto.md +2 -2
  695. package/docs/ListBids200ResponseMeta.md +1 -1
  696. package/docs/ListWebhookDeliveriesResponseDto.md +1 -1
  697. package/docs/NegotiationScoredV2ResponseDto.md +1 -1
  698. package/docs/OauthApi.md +7 -7
  699. package/docs/PartnerApiApi.md +467 -467
  700. package/docs/PartnerWebhookEndpointStatus.md +1 -1
  701. package/docs/ProblemDetailsDto.md +1 -1
  702. package/docs/ProductResponseDto.md +1 -1
  703. package/docs/ProductsApi.md +28 -28
  704. package/docs/ProtectedResourceMetadataDto.md +4 -4
  705. package/docs/RegisterAwardRequestDto.md +3 -3
  706. package/docs/RegisterSemoContractRequestDto.md +3 -3
  707. package/docs/RequestInvoiceSplitRequestDto.md +2 -2
  708. package/docs/RevokeRequestDto.md +3 -3
  709. package/docs/SemoContractRegisteredResponseDto.md +1 -1
  710. package/docs/StatementDocumentDto.md +1 -1
  711. package/docs/TokenRequestDto.md +3 -3
  712. package/docs/TokenResponseDto.md +1 -1
  713. package/docs/UpdateBidRequestDto.md +3 -3
  714. package/docs/UpdateWebhookEndpointRequestDto.md +1 -1
  715. package/docs/UploadFileRequestDto.md +2 -2
  716. package/docs/UploadUrlCreatedResponseDto.md +3 -3
  717. package/docs/WebhookBidEventData.md +1 -1
  718. package/docs/WebhookDeliveryDto.md +2 -2
  719. package/docs/WebhookEndpointDto.md +4 -4
  720. package/docs/WebhookEndpointWithSecretDto.md +4 -4
  721. package/docs/WebhookEventEnvelope.md +1 -1
  722. package/docs/WebhookTestResultDto.md +1 -1
  723. package/docs/WebhooksApi.md +43 -43
  724. package/docs/WellKnownApi.md +5 -5
  725. package/index.ts +2 -2
  726. package/models/acceptance-result-response-dto.ts +2 -2
  727. package/models/acknowledge-product-receipt200-response.ts +2 -2
  728. package/models/acknowledge-products-request-dto.ts +3 -3
  729. package/models/api-catalog-dto.ts +2 -2
  730. package/models/api-catalog-entry-dto.ts +4 -4
  731. package/models/api-catalog-link-dto.ts +2 -2
  732. package/models/authorization-server-metadata-dto.ts +6 -6
  733. package/models/award-method-public.ts +2 -2
  734. package/models/award-registered-v2-response-dto.ts +3 -3
  735. package/models/award-reverted-v2-response-dto.ts +3 -3
  736. package/models/bid-acceptance-dto.ts +2 -2
  737. package/models/bid-attachment-input-dto.ts +6 -6
  738. package/models/bid-bond-dto.ts +2 -2
  739. package/models/bid-cancelled-response-dto.ts +3 -3
  740. package/models/bid-contact-dto.ts +2 -2
  741. package/models/bid-contacts-dto.ts +2 -2
  742. package/models/bid-contract-document-dto.ts +9 -9
  743. package/models/bid-delivery-terms-dto.ts +2 -2
  744. package/models/bid-detail-response-dto.ts +5 -5
  745. package/models/bid-document-dto.ts +2 -2
  746. package/models/bid-failed-v2-response-dto.ts +3 -3
  747. package/models/bid-item-dto.ts +2 -2
  748. package/models/bid-lifecycle-dto.ts +2 -2
  749. package/models/bid-manager-dto.ts +2 -2
  750. package/models/bid-payment-terms-dto.ts +2 -2
  751. package/models/bid-product-dto.ts +2 -2
  752. package/models/bid-public-status.ts +2 -2
  753. package/models/bid-registered-response-dto.ts +3 -3
  754. package/models/bid-result-participant-attachment-dto.ts +3 -3
  755. package/models/bid-result-participant-dto.ts +3 -3
  756. package/models/bid-results-response-dto.ts +5 -5
  757. package/models/bid-settlement-line-item-dto.ts +2 -2
  758. package/models/bid-settlement-participant-dto.ts +2 -2
  759. package/models/bid-settlement-response-dto.ts +2 -2
  760. package/models/bid-statement-response-dto.ts +2 -2
  761. package/models/bid-summary-dto.ts +3 -3
  762. package/models/bid-type-public.ts +2 -2
  763. package/models/bid-updated-response-dto.ts +2 -2
  764. package/models/cancel-bid-request-dto.ts +2 -2
  765. package/models/cancel-bid200-response.ts +2 -2
  766. package/models/card-payment-request-response-dto.ts +2 -2
  767. package/models/complete-acceptance-request-dto.ts +4 -4
  768. package/models/complete-acceptance200-response.ts +2 -2
  769. package/models/complete-invoice200-response.ts +2 -2
  770. package/models/complete-upload-request-dto.ts +2 -2
  771. package/models/contract-restriction-confirm-input-dto.ts +3 -3
  772. package/models/create-bid-request-dto.ts +5 -5
  773. package/models/create-card-payment-dto.ts +2 -2
  774. package/models/create-card-payment-request-dto.ts +2 -2
  775. package/models/create-card-payment200-response.ts +2 -2
  776. package/models/create-embed-launch201-response.ts +2 -2
  777. package/models/create-external-contract-documents-request-dto.ts +4 -4
  778. package/models/create-external-contract-documents-response-dto.ts +2 -2
  779. package/models/create-file-upload-url201-response.ts +2 -2
  780. package/models/create-upload-url-request-dto.ts +2 -2
  781. package/models/create-webhook-endpoint-request-dto.ts +4 -4
  782. package/models/create-webhook-endpoint201-response.ts +2 -2
  783. package/models/delivery-date-type-public.ts +2 -2
  784. package/models/delivery-method-public.ts +2 -2
  785. package/models/embed-bid-prefill-dto.ts +97 -0
  786. package/models/embed-bid-prefill-item-dto.ts +39 -0
  787. package/models/embed-bid-prefill-manager-dto.ts +31 -0
  788. package/models/embed-launch-request-dto.ts +12 -9
  789. package/models/embed-launch-response-dto.ts +4 -4
  790. package/models/excellent-procurement-public.ts +2 -2
  791. package/models/external-contract-document-item-dto.ts +3 -3
  792. package/models/external-contract-documents-response-dto.ts +2 -2
  793. package/models/external-contract-item-dto.ts +2 -2
  794. package/models/external-contract-snapshot-dto.ts +5 -5
  795. package/models/external-document-inputs-dto.ts +2 -2
  796. package/models/file-meta-response-dto.ts +2 -2
  797. package/models/file-uploaded-response-dto.ts +2 -2
  798. package/models/generated-external-contract-document-dto.ts +4 -4
  799. package/models/get-bid-settlement200-response.ts +2 -2
  800. package/models/get-bid-statement200-response.ts +2 -2
  801. package/models/get-bid200-response.ts +2 -2
  802. package/models/get-file-meta200-response.ts +2 -2
  803. package/models/get-supplier-card-payable-v2200-response.ts +2 -2
  804. package/models/get-webhook-endpoint200-response.ts +2 -2
  805. package/models/green-product-public.ts +2 -2
  806. package/models/health-controller-check200-response.ts +2 -2
  807. package/models/health-response-dto.ts +2 -2
  808. package/models/hierarchical-region-dto.ts +2 -2
  809. package/models/index.ts +3 -0
  810. package/models/introspect-request-dto.ts +5 -5
  811. package/models/introspection-response-dto.ts +4 -4
  812. package/models/invalid-param-dto.ts +2 -2
  813. package/models/invoice-completed-response-dto.ts +2 -2
  814. package/models/invoice-split-response-dto.ts +2 -2
  815. package/models/legal-mandatory-public.ts +2 -2
  816. package/models/list-bid-results200-response.ts +2 -2
  817. package/models/list-bids200-response-meta.ts +3 -3
  818. package/models/list-bids200-response.ts +2 -2
  819. package/models/list-products200-response.ts +2 -2
  820. package/models/list-webhook-deliveries-response-dto.ts +3 -3
  821. package/models/list-webhook-deliveries200-response.ts +2 -2
  822. package/models/list-webhook-endpoints200-response.ts +2 -2
  823. package/models/mark-bid-failed-request-dto.ts +2 -2
  824. package/models/mark-bid-failed201-response.ts +2 -2
  825. package/models/negotiation-score-dto.ts +2 -2
  826. package/models/negotiation-scored-v2-response-dto.ts +3 -3
  827. package/models/oauth-error-response-dto.ts +2 -2
  828. package/models/on-bid-award-reverted-request.ts +2 -2
  829. package/models/on-bid-awarded-request.ts +2 -2
  830. package/models/on-bid-canceled-request.ts +2 -2
  831. package/models/on-bid-closed-request.ts +2 -2
  832. package/models/on-bid-failed-request.ts +2 -2
  833. package/models/on-ping-request.ts +2 -2
  834. package/models/partner-webhook-delivery-status.ts +2 -2
  835. package/models/partner-webhook-endpoint-status.ts +3 -3
  836. package/models/partner-webhook-event-type.ts +2 -2
  837. package/models/payment-method-public.ts +2 -2
  838. package/models/preconditions-dto.ts +2 -2
  839. package/models/problem-details-dto.ts +3 -3
  840. package/models/product-receipt-response-dto.ts +2 -2
  841. package/models/product-response-dto.ts +3 -3
  842. package/models/protected-resource-metadata-dto.ts +6 -6
  843. package/models/register-award-request-dto.ts +5 -5
  844. package/models/register-award201-response.ts +2 -2
  845. package/models/register-bid201-response.ts +2 -2
  846. package/models/register-semo-contract-request-dto.ts +5 -5
  847. package/models/request-invoice-split-request-dto.ts +4 -4
  848. package/models/request-invoice-split200-response.ts +2 -2
  849. package/models/retiree-roster-input-dto.ts +2 -2
  850. package/models/retiree-roster-row-dto.ts +2 -2
  851. package/models/revert-award-request-dto.ts +2 -2
  852. package/models/revert-award200-response.ts +2 -2
  853. package/models/revoke-request-dto.ts +5 -5
  854. package/models/semo-contract-registered-response-dto.ts +3 -3
  855. package/models/semo-contract-taxinvoice-status-response-dto.ts +2 -2
  856. package/models/send-webhook-test-event200-response.ts +2 -2
  857. package/models/statement-document-dto.ts +3 -3
  858. package/models/statement-product-dto.ts +2 -2
  859. package/models/submit-negotiation-scores-request-dto.ts +2 -2
  860. package/models/submit-negotiation-scores201-response.ts +2 -2
  861. package/models/supplier-card-payable-response-dto.ts +2 -2
  862. package/models/supplier-tax-type.ts +2 -2
  863. package/models/token-request-dto.ts +5 -5
  864. package/models/token-response-dto.ts +3 -3
  865. package/models/update-bid-request-dto.ts +5 -5
  866. package/models/update-bid200-response.ts +2 -2
  867. package/models/update-webhook-endpoint-request-dto.ts +3 -3
  868. package/models/upload-file-request-dto.ts +4 -4
  869. package/models/upload-file201-response.ts +2 -2
  870. package/models/upload-url-created-response-dto.ts +5 -5
  871. package/models/webhook-bid-event-data.ts +3 -3
  872. package/models/webhook-delivery-dto.ts +4 -4
  873. package/models/webhook-endpoint-dto.ts +6 -6
  874. package/models/webhook-endpoint-with-secret-dto.ts +6 -6
  875. package/models/webhook-event-envelope.ts +3 -3
  876. package/models/webhook-ping-event-data.ts +2 -2
  877. package/models/webhook-test-result-dto.ts +3 -3
  878. package/package.json +1 -1
@@ -43,7 +43,7 @@ All URIs are relative to *https://partner-api.c-market.net*
43
43
  # **cancelBid**
44
44
  > CancelBid200Response cancelBid(cancelBidRequestDto)
45
45
 
46
- 진행중인 공고를 취소합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. **되돌릴없습니다.** 취소 사유는 필수이며 공고 이력에 남습니다. **전제조건:** 진행중(ONGOING) 상태여야 합니다. **거부:** 진행중이 아니거나 이미 취소된 공고 409. 발주처 공고 403. **마감과의 차이:** 취소는 공고를 무효로 되돌리는 것이고, 유찰(`POST /v2/bids/{bidRef}/fail`)은 응찰을 받았으나 낙찰자를 정하지 못한 종료입니다.
46
+ 진행중(`ONGOING`) 공고를 취소합니다. 스코프 `bids:write` · `Idempotency-Key` 헤더 필수. - 되돌릴 없습니다. 취소 사유는 필수이고 공고 이력에 남습니다. - 진행중이 아니거나 이미 취소된 공고는 409, 다른 발주기관의 공고는 403입니다. - 응찰은 받았으나 낙찰자를 정하지 못한 종료는 취소가 아니라 유찰(`POST /v2/bids/{bidRef}/fail`)입니다.
47
47
 
48
48
  ### Example
49
49
 
@@ -57,8 +57,8 @@ import {
57
57
  const configuration = new Configuration();
58
58
  const apiInstance = new PartnerApiApi(configuration);
59
59
 
60
- let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
61
- let idempotencyKey: string; //멱등성 키(1~255자, `[A-Za-z0-9_-]`). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: `bid-create-{구매번호}`) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
60
+ let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
61
+ let idempotencyKey: string; //멱등키(1~255자, `[A-Za-z0-9_-]`). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: `bid-create-{구매번호}`). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
62
62
  let cancelBidRequestDto: CancelBidRequestDto; //
63
63
 
64
64
  const { status, data } = await apiInstance.cancelBid(
@@ -73,8 +73,8 @@ const { status, data } = await apiInstance.cancelBid(
73
73
  |Name | Type | Description | Notes|
74
74
  |------------- | ------------- | ------------- | -------------|
75
75
  | **cancelBidRequestDto** | **CancelBidRequestDto**| | |
76
- | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
77
- | **idempotencyKey** | [**string**] | 멱등성 키(1~255자, `[A-Za-z0-9_-]`). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: `bid-create-{구매번호}`) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
76
+ | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
77
+ | **idempotencyKey** | [**string**] | 멱등키(1~255자, `[A-Za-z0-9_-]`). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: `bid-create-{구매번호}`). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
78
78
 
79
79
 
80
80
  ### Return type
@@ -94,23 +94,23 @@ const { status, data } = await apiInstance.cancelBid(
94
94
  ### HTTP response details
95
95
  | Status code | Description | Response headers |
96
96
  |-------------|-------------|------------------|
97
- |**200** | 공고 취소 완료. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
98
- |**400** | 입력 검증 실패(&#x60;type: …/validation-failed&#x60;), Idempotency-Key 헤더 누락/형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 또는 요청 내용이 유효하지 않음(&#x60;…/upstream-invalid-input&#x60;). | - |
99
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
100
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
101
- |**409** | 원 요청이 아직 처리 중인 상태에서 같은 Idempotency-Key 재전송(&#x60;type: …/idempotency-key-conflict&#x60; — 잠시 뒤 같은 키로 재시도하면 결과를 받는다) 또는 현재 상태와 충돌하는 요청(&#x60;…/upstream-conflict&#x60;). | - |
102
- |**422** | 동일 Idempotency-Key **다른 body** 로 재전송(&#x60;type: …/idempotency-key-reused&#x60;). 재시도해도 동일 실패 — 새 키를 쓰거나 body 를 원래대로 되돌려야 한다. 형식은 맞지만 내용상 처리할 수 없는 요청(&#x60;…/upstream-unprocessable&#x60;) 상태다. | - |
103
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
104
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
105
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
106
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
97
+ |**200** | 공고 취소 완료. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
98
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;), &#x60;Idempotency-Key&#x60; 누락·형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 요청 내용 오류(&#x60;…/upstream-invalid-input&#x60;). | - |
99
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
100
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
101
+ |**409** | 같은 &#x60;Idempotency-Key&#x60;의 원 요청이 처리 (&#x60;…/idempotency-key-conflict&#x60;), 또는 현재 상태와 충돌(&#x60;…/upstream-conflict&#x60;). 앞의 경우 잠시 후 같은 키로 재시도하면 결과를 받습니다. | - |
102
+ |**422** | 같은 &#x60;Idempotency-Key&#x60;를 다른 body로 재전송(&#x60;…/idempotency-key-reused&#x60;), 또는 내용상 처리 불가(&#x60;…/upstream-unprocessable&#x60;). 재시도해도 같은 실패이므로 새 키를 쓰거나 body를 되돌립니다. | - |
103
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
104
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
105
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
106
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
107
107
 
108
108
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
109
109
 
110
110
  # **completeAcceptance**
111
111
  > CompleteAcceptance200Response completeAcceptance(completeAcceptanceRequestDto)
112
112
 
113
- 낙찰 공고의 검수(납품 검수)가 완료되었음을 기록합니다. **호출 시점:** 낙찰자(공급사)가 납품을 완료하고 구매자가 검수를 확인한 시점입니다. 공고 상태가 낙찰(AWARDED) 상태여야 합니다. **부수효과:** - 검수완료 상태가 기록됩니다. - 현금 결제 공고는 세금계산서 발행요청이 등록되고, 낙찰자(공급사)에게 발행요청 알림·문자가 발송됩니다. 카드 결제 공고는 발행요청 축이 없어 알림도 없습니다. - 거래명세서 발행이 예약됩니다. - 응답 코드는 200이며, 처리 결과가 본문에 담겨 반환됩니다. **부분계약(협의 감액):** 낙찰 후 협의로 계약금액이 줄었으면 `supplyAmount`+`vat` 함께 보내세요. 그 금액으로 계산서 발행이 요청됩니다. 생략하면 낙찰금액에서 파생합니다. 현금 결제 공고·낙찰자 1인·감액(증액 불가)일 때만 허용되며, 어긋나면 409 입니다. **문서에 찍히는 값:** 거래명세서·검수보고서의 구매사 사업자정보·담당자·작성일자는 등록된 발주처 정보에서 채워집니다. 요청으로 덮어쓸 수 없습니다. **낙찰자:** 공고의 낙찰 상태에서 결정되며 요청으로 지정하지 않습니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
113
+ 납품 검수 완료를 기록합니다. 낙찰 처리된 공고에서 호출합니다. 스코프 `contracts:write` · `Idempotency-Key` 헤더 필수. - 현금 결제 공고는 세금계산서 발행요청이 등록되고 낙찰자에게 알림·문자가 나갑니다. 카드 결제 공고는 발행요청이 없어 알림도 없습니다. - 거래명세서 발행이 예약됩니다. - 협의로 계약금액이 줄었으면 `supplyAmount`와 `vat`를 함께 보냅니다. 현금 결제·낙찰자 1인·감액일 때만 허용하며 어긋나면 409입니다. 생략하면 낙찰금액에서 파생합니다. - 문서에 찍히는 구매사 사업자정보·담당자·작성일자와 낙찰자는 등록된 값에서 채워지며 요청으로 바꿀 수 없습니다.
114
114
 
115
115
  ### Example
116
116
 
@@ -124,8 +124,8 @@ import {
124
124
  const configuration = new Configuration();
125
125
  const apiInstance = new PartnerApiApi(configuration);
126
126
 
127
- let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
128
- let idempotencyKey: string; //멱등성 키(1~255자, `[A-Za-z0-9_-]`). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: `bid-create-{구매번호}`) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
127
+ let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
128
+ let idempotencyKey: string; //멱등키(1~255자, `[A-Za-z0-9_-]`). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: `bid-create-{구매번호}`). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
129
129
  let completeAcceptanceRequestDto: CompleteAcceptanceRequestDto; //
130
130
 
131
131
  const { status, data } = await apiInstance.completeAcceptance(
@@ -140,8 +140,8 @@ const { status, data } = await apiInstance.completeAcceptance(
140
140
  |Name | Type | Description | Notes|
141
141
  |------------- | ------------- | ------------- | -------------|
142
142
  | **completeAcceptanceRequestDto** | **CompleteAcceptanceRequestDto**| | |
143
- | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
144
- | **idempotencyKey** | [**string**] | 멱등성 키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: &#x60;bid-create-{구매번호}&#x60;) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
143
+ | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
144
+ | **idempotencyKey** | [**string**] | 멱등키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: &#x60;bid-create-{구매번호}&#x60;). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
145
145
 
146
146
 
147
147
  ### Return type
@@ -161,23 +161,23 @@ const { status, data } = await apiInstance.completeAcceptance(
161
161
  ### HTTP response details
162
162
  | Status code | Description | Response headers |
163
163
  |-------------|-------------|------------------|
164
- |**200** | 검수완료 처리 결과. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
165
- |**400** | 입력 검증 실패(&#x60;type: …/validation-failed&#x60;), Idempotency-Key 헤더 누락/형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 또는 요청 내용이 유효하지 않음(&#x60;…/upstream-invalid-input&#x60;). | - |
166
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
167
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
168
- |**409** | 원 요청이 아직 처리 중인 상태에서 같은 Idempotency-Key 재전송(&#x60;type: …/idempotency-key-conflict&#x60; — 잠시 뒤 같은 키로 재시도하면 결과를 받는다) 또는 현재 상태와 충돌하는 요청(&#x60;…/upstream-conflict&#x60;). | - |
169
- |**422** | 동일 Idempotency-Key **다른 body** 로 재전송(&#x60;type: …/idempotency-key-reused&#x60;). 재시도해도 동일 실패 — 새 키를 쓰거나 body 를 원래대로 되돌려야 한다. 형식은 맞지만 내용상 처리할 수 없는 요청(&#x60;…/upstream-unprocessable&#x60;) 상태다. | - |
170
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
171
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
172
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
173
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
164
+ |**200** | 검수완료 처리 결과. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
165
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;), &#x60;Idempotency-Key&#x60; 누락·형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 요청 내용 오류(&#x60;…/upstream-invalid-input&#x60;). | - |
166
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
167
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
168
+ |**409** | 같은 &#x60;Idempotency-Key&#x60;의 원 요청이 처리 (&#x60;…/idempotency-key-conflict&#x60;), 또는 현재 상태와 충돌(&#x60;…/upstream-conflict&#x60;). 앞의 경우 잠시 후 같은 키로 재시도하면 결과를 받습니다. | - |
169
+ |**422** | 같은 &#x60;Idempotency-Key&#x60;를 다른 body로 재전송(&#x60;…/idempotency-key-reused&#x60;), 또는 내용상 처리 불가(&#x60;…/upstream-unprocessable&#x60;). 재시도해도 같은 실패이므로 새 키를 쓰거나 body를 되돌립니다. | - |
170
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
171
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
172
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
173
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
174
174
 
175
175
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
176
176
 
177
177
  # **completeFileUpload**
178
178
  > UploadFile201Response completeFileUpload(completeUploadRequestDto)
179
179
 
180
- `uploadUrl` 로의 `PUT` 이 끝난 뒤 호출합니다. 올라온 파일을 실측해 등록하고, 시점부터 `fileKey` 공고 첨부로 쓸 수 있습니다. **확정 `fileKey` 첨부로 없습니다** 공고 등록이 400 으로 거절됩니다. **신고한 크기가 아니라 실제 파일을 봅니다.** 발급 요청의 `fileSize` 와 다르면 실제 크기가 기록되고, 정책 상한을 넘으면 여기서 거절됩니다. **같은 `fileKey` 여러 번 호출해도 안전합니다**(멱등). **필수 스코프:** `files:write` **멱등성:** `Idempotency-Key` 헤더 필수.
180
+ `uploadUrl`로 올린 파일을 확정합니다. 시점부터 `fileKey`를 공고 첨부로 쓸 수 있습니다. 스코프 `files:write` · `Idempotency-Key` 헤더 필수. - 확정 `fileKey`를 첨부로 쓰면 공고 등록이 400입니다. - 신고한 `fileSize`가 아니라 실제 파일을 측정해 기록하며, 정책 상한을 넘으면 여기서 거절됩니다. - 같은 `fileKey`로 여러 번 호출해도 안전합니다.
181
181
 
182
182
  ### Example
183
183
 
@@ -192,7 +192,7 @@ const configuration = new Configuration();
192
192
  const apiInstance = new PartnerApiApi(configuration);
193
193
 
194
194
  let fileKey: string; //발급 응답의 fileKey(영문 대소문자·숫자 32자). (default to undefined)
195
- let idempotencyKey: string; //멱등성 키(1~255자, `[A-Za-z0-9_-]`). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: `bid-create-{구매번호}`) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
195
+ let idempotencyKey: string; //멱등키(1~255자, `[A-Za-z0-9_-]`). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: `bid-create-{구매번호}`). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
196
196
  let completeUploadRequestDto: CompleteUploadRequestDto; //
197
197
 
198
198
  const { status, data } = await apiInstance.completeFileUpload(
@@ -208,7 +208,7 @@ const { status, data } = await apiInstance.completeFileUpload(
208
208
  |------------- | ------------- | ------------- | -------------|
209
209
  | **completeUploadRequestDto** | **CompleteUploadRequestDto**| | |
210
210
  | **fileKey** | [**string**] | 발급 응답의 fileKey(영문 대소문자·숫자 32자). | defaults to undefined|
211
- | **idempotencyKey** | [**string**] | 멱등성 키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: &#x60;bid-create-{구매번호}&#x60;) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
211
+ | **idempotencyKey** | [**string**] | 멱등키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: &#x60;bid-create-{구매번호}&#x60;). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
212
212
 
213
213
 
214
214
  ### Return type
@@ -228,23 +228,23 @@ const { status, data } = await apiInstance.completeFileUpload(
228
228
  ### HTTP response details
229
229
  | Status code | Description | Response headers |
230
230
  |-------------|-------------|------------------|
231
- |**200** | 업로드 확정 완료. 이제 &#x60;fileKey&#x60; 공고 등록·수정의 첨부 필드에 실을 수 있습니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
232
- |**400** | 입력 검증 실패(&#x60;type: …/validation-failed&#x60;), Idempotency-Key 헤더 누락/형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 또는 요청 내용이 유효하지 않음(&#x60;…/upstream-invalid-input&#x60;). | - |
233
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
234
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
235
- |**409** | 원 요청이 아직 처리 중인 상태에서 같은 Idempotency-Key 재전송(&#x60;type: …/idempotency-key-conflict&#x60; — 잠시 뒤 같은 키로 재시도하면 결과를 받는다) 또는 현재 상태와 충돌하는 요청(&#x60;…/upstream-conflict&#x60;). | - |
236
- |**422** | 동일 Idempotency-Key **다른 body** 로 재전송(&#x60;type: …/idempotency-key-reused&#x60;). 재시도해도 동일 실패 — 새 키를 쓰거나 body 를 원래대로 되돌려야 한다. 형식은 맞지만 내용상 처리할 수 없는 요청(&#x60;…/upstream-unprocessable&#x60;) 상태다. | - |
237
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
238
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
239
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
240
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
231
+ |**200** | 업로드 확정 완료. 이제 &#x60;fileKey&#x60;를 공고 등록·수정의 첨부 필드에 실을 수 있습니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
232
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;), &#x60;Idempotency-Key&#x60; 누락·형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 요청 내용 오류(&#x60;…/upstream-invalid-input&#x60;). | - |
233
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
234
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
235
+ |**409** | 같은 &#x60;Idempotency-Key&#x60;의 원 요청이 처리 (&#x60;…/idempotency-key-conflict&#x60;), 또는 현재 상태와 충돌(&#x60;…/upstream-conflict&#x60;). 앞의 경우 잠시 후 같은 키로 재시도하면 결과를 받습니다. | - |
236
+ |**422** | 같은 &#x60;Idempotency-Key&#x60;를 다른 body로 재전송(&#x60;…/idempotency-key-reused&#x60;), 또는 내용상 처리 불가(&#x60;…/upstream-unprocessable&#x60;). 재시도해도 같은 실패이므로 새 키를 쓰거나 body를 되돌립니다. | - |
237
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
238
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
239
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
240
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
241
241
 
242
242
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
243
243
 
244
244
  # **completeInvoice**
245
245
  > CompleteInvoice200Response completeInvoice()
246
246
 
247
- 공급사로부터 계산서를 수령한 뒤, 계약을 완료처리 상태로 강제 전환합니다. **호출 시점:** 낙찰·계약 완료 후 공급사 계산서를 오프라인으로 수령했을 때. **부수효과:** - 결제완료·계산서 발급 상태가 기록되고 발급일자가 현재 시각으로 설정됩니다. **소유권:** 공고는 요청 파트너 키가 소유한 발주처 명의여야 합니다(타 발주처 공고 → 403). **이미 완료:** 이미 완료처리된 공고 재호출 → 409. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
247
+ 공급사에게 계산서를 수령한 계약을 완료처리합니다. 스코프 `contracts:write` · `Idempotency-Key` 헤더 필수. - 결제완료·계산서 발급 상태가 기록되고 발급일자는 현재 시각이 됩니다. - 이미 완료된 공고는 409, 다른 발주기관의 공고는 403입니다.
248
248
 
249
249
  ### Example
250
250
 
@@ -257,8 +257,8 @@ import {
257
257
  const configuration = new Configuration();
258
258
  const apiInstance = new PartnerApiApi(configuration);
259
259
 
260
- let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
261
- let idempotencyKey: string; //멱등성 키(1~255자, `[A-Za-z0-9_-]`). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: `bid-create-{구매번호}`) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
260
+ let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
261
+ let idempotencyKey: string; //멱등키(1~255자, `[A-Za-z0-9_-]`). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: `bid-create-{구매번호}`). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
262
262
 
263
263
  const { status, data } = await apiInstance.completeInvoice(
264
264
  bidRef,
@@ -270,8 +270,8 @@ const { status, data } = await apiInstance.completeInvoice(
270
270
 
271
271
  |Name | Type | Description | Notes|
272
272
  |------------- | ------------- | ------------- | -------------|
273
- | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
274
- | **idempotencyKey** | [**string**] | 멱등성 키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: &#x60;bid-create-{구매번호}&#x60;) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
273
+ | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
274
+ | **idempotencyKey** | [**string**] | 멱등키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: &#x60;bid-create-{구매번호}&#x60;). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
275
275
 
276
276
 
277
277
  ### Return type
@@ -291,23 +291,23 @@ const { status, data } = await apiInstance.completeInvoice(
291
291
  ### HTTP response details
292
292
  | Status code | Description | Response headers |
293
293
  |-------------|-------------|------------------|
294
- |**200** | 정산 마감 완료. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
295
- |**400** | 입력 검증 실패(&#x60;type: …/validation-failed&#x60;), Idempotency-Key 헤더 누락/형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 또는 요청 내용이 유효하지 않음(&#x60;…/upstream-invalid-input&#x60;). | - |
296
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
297
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
298
- |**409** | 원 요청이 아직 처리 중인 상태에서 같은 Idempotency-Key 재전송(&#x60;type: …/idempotency-key-conflict&#x60; — 잠시 뒤 같은 키로 재시도하면 결과를 받는다) 또는 현재 상태와 충돌하는 요청(&#x60;…/upstream-conflict&#x60;). | - |
299
- |**422** | 동일 Idempotency-Key **다른 body** 로 재전송(&#x60;type: …/idempotency-key-reused&#x60;). 재시도해도 동일 실패 — 새 키를 쓰거나 body 를 원래대로 되돌려야 한다. 형식은 맞지만 내용상 처리할 수 없는 요청(&#x60;…/upstream-unprocessable&#x60;) 상태다. | - |
300
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
301
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
302
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
303
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
294
+ |**200** | 정산 마감 완료. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
295
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;), &#x60;Idempotency-Key&#x60; 누락·형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 요청 내용 오류(&#x60;…/upstream-invalid-input&#x60;). | - |
296
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
297
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
298
+ |**409** | 같은 &#x60;Idempotency-Key&#x60;의 원 요청이 처리 (&#x60;…/idempotency-key-conflict&#x60;), 또는 현재 상태와 충돌(&#x60;…/upstream-conflict&#x60;). 앞의 경우 잠시 후 같은 키로 재시도하면 결과를 받습니다. | - |
299
+ |**422** | 같은 &#x60;Idempotency-Key&#x60;를 다른 body로 재전송(&#x60;…/idempotency-key-reused&#x60;), 또는 내용상 처리 불가(&#x60;…/upstream-unprocessable&#x60;). 재시도해도 같은 실패이므로 새 키를 쓰거나 body를 되돌립니다. | - |
300
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
301
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
302
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
303
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
304
304
 
305
305
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
306
306
 
307
307
  # **createCardPayment**
308
308
  > CreateCardPayment200Response createCardPayment(createCardPaymentDto)
309
309
 
310
- 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인되어 바로 결제할 수 있습니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/suppliers/{memberId}/card-payable` 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 도메인 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
310
+ 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인되어 바로 결제할 수 있습니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/suppliers/{memberId}/card-payable`로 미리 확인하세요. 미가입 업체로 발행하면 400입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 도메인 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
311
311
 
312
312
  ### Example
313
313
 
@@ -321,7 +321,7 @@ import {
321
321
  const configuration = new Configuration();
322
322
  const apiInstance = new PartnerApiApi(configuration);
323
323
 
324
- let idempotencyKey: string; //멱등성 키(1~255자, `[A-Za-z0-9_-]`). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: `bid-create-{구매번호}`) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
324
+ let idempotencyKey: string; //멱등키(1~255자, `[A-Za-z0-9_-]`). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: `bid-create-{구매번호}`). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
325
325
  let createCardPaymentDto: CreateCardPaymentDto; //
326
326
 
327
327
  const { status, data } = await apiInstance.createCardPayment(
@@ -335,7 +335,7 @@ const { status, data } = await apiInstance.createCardPayment(
335
335
  |Name | Type | Description | Notes|
336
336
  |------------- | ------------- | ------------- | -------------|
337
337
  | **createCardPaymentDto** | **CreateCardPaymentDto**| | |
338
- | **idempotencyKey** | [**string**] | 멱등성 키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: &#x60;bid-create-{구매번호}&#x60;) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
338
+ | **idempotencyKey** | [**string**] | 멱등키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: &#x60;bid-create-{구매번호}&#x60;). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
339
339
 
340
340
 
341
341
  ### Return type
@@ -355,23 +355,23 @@ const { status, data } = await apiInstance.createCardPayment(
355
355
  ### HTTP response details
356
356
  | Status code | Description | Response headers |
357
357
  |-------------|-------------|------------------|
358
- |**200** | 결제창 발행 완료. 반환된 주소로 결제자를 보내면 됩니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
359
- |**400** | 입력 검증 실패(&#x60;type: …/validation-failed&#x60;), Idempotency-Key 헤더 누락/형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 또는 요청 내용이 유효하지 않음(&#x60;…/upstream-invalid-input&#x60;). | - |
360
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
361
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
362
- |**409** | 원 요청이 아직 처리 중인 상태에서 같은 Idempotency-Key 재전송(&#x60;type: …/idempotency-key-conflict&#x60; — 잠시 뒤 같은 키로 재시도하면 결과를 받는다) 또는 현재 상태와 충돌하는 요청(&#x60;…/upstream-conflict&#x60;). | - |
363
- |**422** | 동일 Idempotency-Key **다른 body** 로 재전송(&#x60;type: …/idempotency-key-reused&#x60;). 재시도해도 동일 실패 — 새 키를 쓰거나 body 를 원래대로 되돌려야 한다. 형식은 맞지만 내용상 처리할 수 없는 요청(&#x60;…/upstream-unprocessable&#x60;) 상태다. | - |
364
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
365
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
366
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
367
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
358
+ |**200** | 결제창 발행 완료. 반환된 주소로 결제자를 보내면 됩니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
359
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;), &#x60;Idempotency-Key&#x60; 누락·형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 요청 내용 오류(&#x60;…/upstream-invalid-input&#x60;). | - |
360
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
361
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
362
+ |**409** | 같은 &#x60;Idempotency-Key&#x60;의 원 요청이 처리 (&#x60;…/idempotency-key-conflict&#x60;), 또는 현재 상태와 충돌(&#x60;…/upstream-conflict&#x60;). 앞의 경우 잠시 후 같은 키로 재시도하면 결과를 받습니다. | - |
363
+ |**422** | 같은 &#x60;Idempotency-Key&#x60;를 다른 body로 재전송(&#x60;…/idempotency-key-reused&#x60;), 또는 내용상 처리 불가(&#x60;…/upstream-unprocessable&#x60;). 재시도해도 같은 실패이므로 새 키를 쓰거나 body를 되돌립니다. | - |
364
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
365
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
366
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
367
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
368
368
 
369
369
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
370
370
 
371
371
  # **createExternalContractDocuments**
372
372
  > CreateExternalContractDocumentsResponseDto createExternalContractDocuments(createExternalContractDocumentsRequestDto)
373
373
 
374
- 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `paperCodes` 와 같은 순서로 같은 개수가 돌아옵니다.** 각 항목의 `fileUrl` 을 그대로 쓰면 되고, `paperCode` 로 어느 요청에 대한 결과인지 대응시킬 수 있습니다. **`name` 의 출처는 서류에 따라 다릅니다.** 시스템이 렌더한 서류는 계약서류명이고, 공급사 사전등록 3종(11·12·13)은 **공급사가 등록한 원본 파일명**입니다 — 채팅 첨부 라벨로 그대로 쓰세요. **필요한 입력:** 발주기관·공급사는 회원 ID 만 주면 됩니다. 상호·사업자번호·대표자·주소·직인은 c-market 이 회원 정보에서 직접 채웁니다. **전부 성공 또는 전부 실패입니다.** 지원하지 않는 서류가 하나라도 섞이면(400) 아무것도 만들지 않습니다. 렌더가 필요한 서류를 요청하면서 `contract` 를 빠뜨려도 마찬가지입니다(422). **135(수의계약체결제한여부확인서)를 요청하면 추가 입력이 필요합니다.** `contract.subject`(발주내용)·`contract.category`(계약구분)·`contract.buyerDepartment`(발주부서)가 필수이고, `documentInputs.contractRestrictionConfirm.answers`에 서식 ①~⑧에 대한 **계약상대자**의 답변 8개를 순서대로 담아야 합니다(c-market 이 대신 만들어낼 수 없는 값입니다). ⑨(발주자 확인사항)는 `documentInputs.contractRestrictionConfirm.buyerConfirmation`으로 선택 전달하며, 생략하면 서식에 빈칸으로 인쇄됩니다. 문항 ①~⑧의 원문은 `answers` 필드 설명을 참고하세요. **164(퇴직자영입현황확인서)를 요청하면 퇴직자 명단이 필요합니다.** `contract.subject`(서식의 \"수의계약 대상건명\")가 필수이고, `documentInputs.retireeRoster.rows` 에 명단을 넣습니다(성명·직급 필수, 직급·입사일·근무기간·비고 선택, 최대 50행). **퇴직자가 없으면 `rows` 를 빈 배열로 보내세요** — 서식에 \"해당사항 없음\"으로 인쇄됩니다. 블록 자체를 생략하면 422 입니다(\"퇴직자 없음\"과 \"확인하지 않음\"을 구분할 수 없기 때문입니다). **승낙사항(4·184·185·186·189·197·208)을 요청하면 `contract.subject`(계약건명)가 필수입니다.** 서식 상단 \"건명\" 칸에 인쇄되는 값이라 비면 어느 계약의 승낙인지 알 수 없습니다. 그 외 추가 입력은 없습니다 — 갑(발주기관) 서명란은 `buyerId` 로, 을(공급사) 서명란은 `supplierId` 로 c-market 이 채웁니다. 발주기관이 기관 전용 승낙사항 서식을 쓰면 요청한 코드 그대로 응답하되 PDF 는 그 기관 서식으로 발급됩니다. **응답의 `fileUrl` 은 만료되지 않습니다.** 채팅 메시지 등에 그대로 저장해 두어도 됩니다. **생성 가능한 회원 범위:** 조회와 같습니다 — 이 API 키에 설정된 대행 범위 안의 회원만 가능합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수. --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidRef}/contract-documents` v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
374
+ 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `paperCodes` 와 같은 순서로 같은 개수가 돌아옵니다.** 각 항목의 `fileUrl` 을 그대로 쓰면 되고, `paperCode` 로 어느 요청에 대한 결과인지 대응시킬 수 있습니다. **`name` 의 출처는 서류에 따라 다릅니다.** 시스템이 렌더한 서류는 계약서류명이고, 공급사 사전등록 3종(11·12·13)은 **공급사가 등록한 원본 파일명**입니다 — 채팅 첨부 라벨로 그대로 쓰세요. **필요한 입력:** 발주기관·공급사는 회원 ID 만 주면 됩니다. 상호·사업자번호·대표자·주소·직인은 c-market 이 회원 정보에서 직접 채웁니다. **전부 성공 또는 전부 실패입니다.** 지원하지 않는 서류가 하나라도 섞이면(400) 아무것도 만들지 않습니다. 렌더가 필요한 서류를 요청하면서 `contract` 를 빠뜨려도 마찬가지입니다(422). **135(수의계약체결제한여부확인서)를 요청하면 추가 입력이 필요합니다.** `contract.subject`(발주내용)·`contract.category`(계약구분)·`contract.buyerDepartment`(발주부서)가 필수이고, `documentInputs.contractRestrictionConfirm.answers`에 서식 ①~⑧에 대한 **계약상대자**의 답변 8개를 순서대로 담아야 합니다(c-market 이 대신 만들어낼 수 없는 값입니다). ⑨(발주자 확인사항)는 `documentInputs.contractRestrictionConfirm.buyerConfirmation`으로 선택 전달하며, 생략하면 서식에 빈칸으로 인쇄됩니다. 문항 ①~⑧의 원문은 `answers` 필드 설명을 참고하세요. **164(퇴직자영입현황확인서)를 요청하면 퇴직자 명단이 필요합니다.** `contract.subject`(서식의 \"수의계약 대상건명\")가 필수이고, `documentInputs.retireeRoster.rows` 에 명단을 넣습니다(성명·직급 필수, 직급·입사일·근무기간·비고 선택, 최대 50행). **퇴직자가 없으면 `rows` 를 빈 배열로 보내세요** — 서식에 \"해당사항 없음\"으로 인쇄됩니다. 블록 자체를 생략하면 422 입니다(\"퇴직자 없음\"과 \"확인하지 않음\"을 구분할 수 없기 때문입니다). **승낙사항(4·184·185·186·189·197·208)을 요청하면 `contract.subject`(계약건명)가 필수입니다.** 서식 상단 \"건명\" 칸에 인쇄되는 값이라 비면 어느 계약의 승낙인지 알 수 없습니다. 그 외 추가 입력은 없습니다 — 갑(발주기관) 서명란은 `buyerId` 로, 을(공급사) 서명란은 `supplierId` 로 c-market 이 채웁니다. 발주기관이 기관 전용 승낙사항 서식을 쓰면 요청한 코드 그대로 응답하되 PDF 는 그 기관 서식으로 발급됩니다. **응답의 `fileUrl` 은 만료되지 않습니다.** 채팅 메시지 등에 그대로 저장해 두어도 됩니다. **생성 가능한 회원 범위:** 조회와 같습니다 — 이 API 키에 설정된 대행 범위 안의 회원만 가능합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수. --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidRef}/contract-documents`가 v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
375
375
 
376
376
  ### Example
377
377
 
@@ -385,7 +385,7 @@ import {
385
385
  const configuration = new Configuration();
386
386
  const apiInstance = new PartnerApiApi(configuration);
387
387
 
388
- let idempotencyKey: string; //멱등성 키(1~255자, `[A-Za-z0-9_-]`). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: `bid-create-{구매번호}`) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
388
+ let idempotencyKey: string; //멱등키(1~255자, `[A-Za-z0-9_-]`). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: `bid-create-{구매번호}`). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
389
389
  let createExternalContractDocumentsRequestDto: CreateExternalContractDocumentsRequestDto; //
390
390
 
391
391
  const { status, data } = await apiInstance.createExternalContractDocuments(
@@ -399,7 +399,7 @@ const { status, data } = await apiInstance.createExternalContractDocuments(
399
399
  |Name | Type | Description | Notes|
400
400
  |------------- | ------------- | ------------- | -------------|
401
401
  | **createExternalContractDocumentsRequestDto** | **CreateExternalContractDocumentsRequestDto**| | |
402
- | **idempotencyKey** | [**string**] | 멱등성 키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: &#x60;bid-create-{구매번호}&#x60;) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
402
+ | **idempotencyKey** | [**string**] | 멱등키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: &#x60;bid-create-{구매번호}&#x60;). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
403
403
 
404
404
 
405
405
  ### Return type
@@ -419,23 +419,23 @@ const { status, data } = await apiInstance.createExternalContractDocuments(
419
419
  ### HTTP response details
420
420
  | Status code | Description | Response headers |
421
421
  |-------------|-------------|------------------|
422
- |**201** | 계약서류 생성 완료. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
423
- |**400** | 입력 검증 실패(&#x60;type: …/validation-failed&#x60;), Idempotency-Key 헤더 누락/형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 또는 요청 내용이 유효하지 않음(&#x60;…/upstream-invalid-input&#x60;). | - |
424
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
425
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
426
- |**409** | 원 요청이 아직 처리 중인 상태에서 같은 Idempotency-Key 재전송(&#x60;type: …/idempotency-key-conflict&#x60; — 잠시 뒤 같은 키로 재시도하면 결과를 받는다) 또는 현재 상태와 충돌하는 요청(&#x60;…/upstream-conflict&#x60;). | - |
427
- |**422** | 동일 Idempotency-Key **다른 body** 로 재전송(&#x60;type: …/idempotency-key-reused&#x60;). 재시도해도 동일 실패 — 새 키를 쓰거나 body 를 원래대로 되돌려야 한다. 형식은 맞지만 내용상 처리할 수 없는 요청(&#x60;…/upstream-unprocessable&#x60;) 상태다. | - |
428
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
429
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
430
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
431
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
422
+ |**201** | 계약서류 생성 완료. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
423
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;), &#x60;Idempotency-Key&#x60; 누락·형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 요청 내용 오류(&#x60;…/upstream-invalid-input&#x60;). | - |
424
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
425
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
426
+ |**409** | 같은 &#x60;Idempotency-Key&#x60;의 원 요청이 처리 (&#x60;…/idempotency-key-conflict&#x60;), 또는 현재 상태와 충돌(&#x60;…/upstream-conflict&#x60;). 앞의 경우 잠시 후 같은 키로 재시도하면 결과를 받습니다. | - |
427
+ |**422** | 같은 &#x60;Idempotency-Key&#x60;를 다른 body로 재전송(&#x60;…/idempotency-key-reused&#x60;), 또는 내용상 처리 불가(&#x60;…/upstream-unprocessable&#x60;). 재시도해도 같은 실패이므로 새 키를 쓰거나 body를 되돌립니다. | - |
428
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
429
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
430
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
431
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
432
432
 
433
433
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
434
434
 
435
435
  # **createFileUploadUrl**
436
436
  > CreateFileUploadUrl201Response createFileUploadUrl(createUploadUrlRequestDto)
437
437
 
438
- 파일 본문을 스토리지로 **직접** 올리기 위한 1회용 서명 URL 발급합니다. 3단계로 씁니다. 1. 이 호출로 `fileKey` `uploadUrl` 받습니다. 2. `uploadUrl` 파일 본문을 `PUT` 합니다 응답의 `contentType` `Content-Type` 헤더에 그대로 실으세요. 요청은 c-market 거치지 않습니다. 3. `POST /v2/files/{fileKey}/complete` 확정합니다. **2단계는 이 명세에 오퍼레이션으로 나오지 않습니다** — 요청이 c-market 이 아니라 스토리지로 가기 때문입니다. 형태는 이게 전부입니다. ```bash curl -X PUT \"$uploadUrl\" -H \"Content-Type: $contentType\" --upload-file 시방서.pdf ``` ```ts import { readFile } from \'node:fs/promises\'; // 본문은 **파일 바이트 그대로**입니다 — JSON 도 multipart 도 아닙니다. await fetch(uploadUrl, { method: \'PUT\', headers: { \'Content-Type\': contentType }, body: await readFile(\'시방서.pdf\'), }); ``` **`Authorization` 헤더를 붙이지 마세요.** 자격증명이 `uploadUrl` 안에 서명으로 들어 있어 별도 인증이 필요 없습니다. 같은 이유로 주소는 **주소 자체가 자격증명**이므로 로그에 남기지 마세요. **2단계의 실패 응답은 problem+json 아닙니다.** 스토리지가 직접 답하므로 본문 형식이 다릅니다 — c-market 에러 파서에 넣지 마세요. 만료(`400`)·중복 업로드(`409`)라면 1단계부터 다시 하세요. **`POST /v2/files` 와 언제 갈리나:** 기본은 `POST /v2/files` 한 번입니다 — `base64` 로 23MB, `url` 로 30MB 까지 그 한 번으로 끝납니다. 그 위(**100MB** 까지)만 이 2단계 경로를 쓰세요. 바이트가 c-market 을 지나지 않아 서버 경유 천장을 받지 않습니다. **`uploadUrl` 1회용입니다.** 덮어쓰기가 막혀 있고 `expiresIn` 만료됩니다 저장해 두고 재사용하지 마시고, 만료됐다면 호출부터 다시 하세요. **필수 스코프:** `files:write` **멱등성:** `Idempotency-Key` 헤더 필수.
438
+ 파일을 스토리지로 직접 올리기 위한 1회용 서명 URL을 발급합니다(100MB까지). 스코프 `files:write` · `Idempotency-Key` 헤더 필수. 1. 이 호출로 `fileKey`와 `uploadUrl`을 받습니다. 2. `uploadUrl`에 파일 바이트를 그대로 `PUT` 합니다. 응답의 `contentType`을 `Content-Type` 헤더에 싣고, `Authorization` 헤더는 붙이지 않습니다(주소 자체가 자격증명입니다). 3. `POST /v2/files/{fileKey}/complete`로 확정합니다. ```bash curl -X PUT \"$uploadUrl\" -H \"Content-Type: $contentType\" --upload-file 시방서.pdf ``` - 2단계는 요청이 스토리지로 가므로명세에 오퍼레이션이 없고, 실패 본문도 problem+json이 아닙니다. 만료(400)·중복 업로드(409) 1단계부터 다시 합니다. - `uploadUrl`은 1회용이며 `expiresIn`초만료됩니다. 주소가 자격증명이므로 로그에 남기지 않습니다. - 30MB 이하는 `POST /v2/files` 번으로 끝납니다.
439
439
 
440
440
  ### Example
441
441
 
@@ -449,7 +449,7 @@ import {
449
449
  const configuration = new Configuration();
450
450
  const apiInstance = new PartnerApiApi(configuration);
451
451
 
452
- let idempotencyKey: string; //멱등성 키(1~255자, `[A-Za-z0-9_-]`). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: `bid-create-{구매번호}`) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
452
+ let idempotencyKey: string; //멱등키(1~255자, `[A-Za-z0-9_-]`). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: `bid-create-{구매번호}`). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
453
453
  let createUploadUrlRequestDto: CreateUploadUrlRequestDto; //
454
454
 
455
455
  const { status, data } = await apiInstance.createFileUploadUrl(
@@ -463,7 +463,7 @@ const { status, data } = await apiInstance.createFileUploadUrl(
463
463
  |Name | Type | Description | Notes|
464
464
  |------------- | ------------- | ------------- | -------------|
465
465
  | **createUploadUrlRequestDto** | **CreateUploadUrlRequestDto**| | |
466
- | **idempotencyKey** | [**string**] | 멱등성 키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: &#x60;bid-create-{구매번호}&#x60;) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
466
+ | **idempotencyKey** | [**string**] | 멱등키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: &#x60;bid-create-{구매번호}&#x60;). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
467
467
 
468
468
 
469
469
  ### Return type
@@ -483,23 +483,23 @@ const { status, data } = await apiInstance.createFileUploadUrl(
483
483
  ### HTTP response details
484
484
  | Status code | Description | Response headers |
485
485
  |-------------|-------------|------------------|
486
- |**201** | 업로드 주소 발급 완료. 이 주소로 파일 본문을 직접 PUT 한 뒤 반드시 확정(2/2)을 호출해야 &#x60;fileKey&#x60; 유효해집니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
487
- |**400** | 입력 검증 실패(&#x60;type: …/validation-failed&#x60;), Idempotency-Key 헤더 누락/형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 또는 요청 내용이 유효하지 않음(&#x60;…/upstream-invalid-input&#x60;). | - |
488
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
489
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
490
- |**409** | 원 요청이 아직 처리 중인 상태에서 같은 Idempotency-Key 재전송(&#x60;type: …/idempotency-key-conflict&#x60; — 잠시 뒤 같은 키로 재시도하면 결과를 받는다) 또는 현재 상태와 충돌하는 요청(&#x60;…/upstream-conflict&#x60;). | - |
491
- |**422** | 동일 Idempotency-Key **다른 body** 로 재전송(&#x60;type: …/idempotency-key-reused&#x60;). 재시도해도 동일 실패 — 새 키를 쓰거나 body 를 원래대로 되돌려야 한다. 형식은 맞지만 내용상 처리할 수 없는 요청(&#x60;…/upstream-unprocessable&#x60;) 상태다. | - |
492
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
493
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
494
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
495
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
486
+ |**201** | 업로드 주소 발급 완료. 이 주소로 파일 본문을 직접 PUT 한 뒤 반드시 확정(2/2)을 호출해야 &#x60;fileKey&#x60;가 유효해집니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
487
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;), &#x60;Idempotency-Key&#x60; 누락·형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 요청 내용 오류(&#x60;…/upstream-invalid-input&#x60;). | - |
488
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
489
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
490
+ |**409** | 같은 &#x60;Idempotency-Key&#x60;의 원 요청이 처리 (&#x60;…/idempotency-key-conflict&#x60;), 또는 현재 상태와 충돌(&#x60;…/upstream-conflict&#x60;). 앞의 경우 잠시 후 같은 키로 재시도하면 결과를 받습니다. | - |
491
+ |**422** | 같은 &#x60;Idempotency-Key&#x60;를 다른 body로 재전송(&#x60;…/idempotency-key-reused&#x60;), 또는 내용상 처리 불가(&#x60;…/upstream-unprocessable&#x60;). 재시도해도 같은 실패이므로 새 키를 쓰거나 body를 되돌립니다. | - |
492
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
493
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
494
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
495
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
496
496
 
497
497
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
498
498
 
499
499
  # **createWebhookEndpoint**
500
500
  > CreateWebhookEndpoint201Response createWebhookEndpoint(createWebhookEndpointRequestDto)
501
501
 
502
- 수신 주소와 구독할 이벤트를 등록합니다. **호출 시점:** 연동 초기 1회. 수신 주소가 바뀌면 새로 만들지 말고 `PATCH` 고치세요 — 그래야 시크릿과 전송 이력이 유지됩니다. **서명 시크릿은 이 응답에서 한 번만 나갑니다.** 서버는 해시만 보관하므로 조회로 다시 받을 수 없습니다. 응답의 `secret` 을 즉시 안전한 곳에 보관하세요. 잃어버렸다면 복구가 아니라 `POST /v2/webhook-endpoints/{endpointId}/rotate-secret` 으로 **재발급**해야 합니다. **거절되는 경우와 고치는 법:** - `400` `url` HTTPS 아니거나 형식이 잘못됨, `eventTypes` 비었거나 목록 값 (`ping` 은 구독 불가). 값을 고쳐 재시도하세요. - `400` `Idempotency-Key` 헤더 누락/형식 오류. UUID v4 를 실어 보내세요. - `403` 토큰에 `webhooks:write` 스코프가 없음. 키 발급 설정을 넓혀야 합니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. ### 서명 검증 (필수) 서명은 **[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` 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
502
+ 수신 주소와 구독할 이벤트를 등록합니다. 연동 초기 1 호출합니다. 스코프 `webhooks:write` · `Idempotency-Key` 헤더 필수. - **서명 시크릿은 이 응답에서 한 번만 나갑니다.** 서버는 해시만 보관하므로 조회로 다시 받을 수 없습니다. 잃어버렸다면 `POST /v2/webhook-endpoints/{endpointId}/rotate-secret`으로 재발급합니다. - 수신 주소가 바뀌면 새로 만들지 말고 `PATCH`로 고치세요. 시크릿과 전송 이력이 유지됩니다. - `url`은 HTTPS만 허용하고 `eventTypes`는 아래 목록 안의 값이어야 합니다. 어기면 400입니다. ### 서명 검증 **[Standard Webhooks](https://www.standardwebhooks.com)** 규약입니다. 직접 짜지 말고 각 언어의 `standardwebhooks` 라이브러리에 등록 시 받은 시크릿(`whsec_…`)을 그대로 넘기세요. ```ts 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,` 뒤 값과 상수 시간 함수로 비교합니다. 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`로 조회해 메웁니다.
503
503
 
504
504
  ### Example
505
505
 
@@ -513,7 +513,7 @@ import {
513
513
  const configuration = new Configuration();
514
514
  const apiInstance = new PartnerApiApi(configuration);
515
515
 
516
- let idempotencyKey: string; //멱등성 키(1~255자, `[A-Za-z0-9_-]`). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: `bid-create-{구매번호}`) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
516
+ let idempotencyKey: string; //멱등키(1~255자, `[A-Za-z0-9_-]`). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: `bid-create-{구매번호}`). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
517
517
  let createWebhookEndpointRequestDto: CreateWebhookEndpointRequestDto; //
518
518
 
519
519
  const { status, data } = await apiInstance.createWebhookEndpoint(
@@ -527,7 +527,7 @@ const { status, data } = await apiInstance.createWebhookEndpoint(
527
527
  |Name | Type | Description | Notes|
528
528
  |------------- | ------------- | ------------- | -------------|
529
529
  | **createWebhookEndpointRequestDto** | **CreateWebhookEndpointRequestDto**| | |
530
- | **idempotencyKey** | [**string**] | 멱등성 키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: &#x60;bid-create-{구매번호}&#x60;) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
530
+ | **idempotencyKey** | [**string**] | 멱등키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: &#x60;bid-create-{구매번호}&#x60;). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
531
531
 
532
532
 
533
533
  ### Return type
@@ -547,23 +547,23 @@ const { status, data } = await apiInstance.createWebhookEndpoint(
547
547
  ### HTTP response details
548
548
  | Status code | Description | Response headers |
549
549
  |-------------|-------------|------------------|
550
- |**201** | 구독 등록 완료. &#x60;secret&#x60; 이 응답에만 실립니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
551
- |**400** | 입력 검증 실패(&#x60;type: …/validation-failed&#x60;), Idempotency-Key 헤더 누락/형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 또는 요청 내용이 유효하지 않음(&#x60;…/upstream-invalid-input&#x60;). | - |
552
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
553
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
554
- |**409** | 원 요청이 아직 처리 중인 상태에서 같은 Idempotency-Key 재전송(&#x60;type: …/idempotency-key-conflict&#x60; — 잠시 뒤 같은 키로 재시도하면 결과를 받는다) 또는 현재 상태와 충돌하는 요청(&#x60;…/upstream-conflict&#x60;). | - |
555
- |**422** | 동일 Idempotency-Key **다른 body** 로 재전송(&#x60;type: …/idempotency-key-reused&#x60;). 재시도해도 동일 실패 — 새 키를 쓰거나 body 를 원래대로 되돌려야 한다. 형식은 맞지만 내용상 처리할 수 없는 요청(&#x60;…/upstream-unprocessable&#x60;) 상태다. | - |
556
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
557
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
558
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
559
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
550
+ |**201** | 구독 등록 완료. &#x60;secret&#x60;은 이 응답에만 실립니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
551
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;), &#x60;Idempotency-Key&#x60; 누락·형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 요청 내용 오류(&#x60;…/upstream-invalid-input&#x60;). | - |
552
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
553
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
554
+ |**409** | 같은 &#x60;Idempotency-Key&#x60;의 원 요청이 처리 (&#x60;…/idempotency-key-conflict&#x60;), 또는 현재 상태와 충돌(&#x60;…/upstream-conflict&#x60;). 앞의 경우 잠시 후 같은 키로 재시도하면 결과를 받습니다. | - |
555
+ |**422** | 같은 &#x60;Idempotency-Key&#x60;를 다른 body로 재전송(&#x60;…/idempotency-key-reused&#x60;), 또는 내용상 처리 불가(&#x60;…/upstream-unprocessable&#x60;). 재시도해도 같은 실패이므로 새 키를 쓰거나 body를 되돌립니다. | - |
556
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
557
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
558
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
559
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
560
560
 
561
561
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
562
562
 
563
563
  # **deleteWebhookEndpoint**
564
564
  > deleteWebhookEndpoint()
565
565
 
566
- 구독을 삭제합니다. 이후 그 주소로는 아무 이벤트도 발송되지 않습니다. **호출 시점:** 연동을 종료할 때. 잠시만 멈추려면 삭제하지 말고 `PATCH {\"status\":\"DISABLED\"}` 쓰세요 시크릿과 이벤트 구성이 남아 그대로 되살릴 있습니다. **되돌릴 수 없습니다.** 다시 등록하면 새 구독이고 서명 시크릿도 새 값입니다. **`If-Match` 필수입니다.** `GET` 으로 받은 `ETag` 를 실어 보내세요. - `428` 헤더 누락. 조회 후 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다(누군가 수정했거나 발송기가 상태를 내렸습니다). 다시 조회해 정말 지울 대상이 맞는지 확인하고 최신 `ETag` 로 재시도하세요. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
566
+ 구독을 삭제합니다. 이후 그 주소로는 아무 이벤트도 발송되지 않습니다. 스코프 `webhooks:write` · `Idempotency-Key` 헤더 필수. - 되돌릴없습니다. 다시 등록하면 새 구독이고 서명 시크릿도 새 값입니다. 잠시만 멈추려면 `PATCH`로 `{\"status\":\"DISABLED\"}`를 보내세요. - `If-Match`가 필수입니다. 누락은 428, 그 사이 구독이 바뀌었으면 412입니다.
567
567
 
568
568
  ### Example
569
569
 
@@ -577,8 +577,8 @@ const configuration = new Configuration();
577
577
  const apiInstance = new PartnerApiApi(configuration);
578
578
 
579
579
  let endpointId: string; //구독 식별자(등록 응답의 `endpointId`). (default to undefined)
580
- let ifMatch: string; //직전 조회 응답의 `ETag` 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다. (default to undefined)
581
- let idempotencyKey: string; //멱등성 키(1~255자, `[A-Za-z0-9_-]`). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: `bid-create-{구매번호}`) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
580
+ let ifMatch: string; //직전 조회 응답의 `ETag` 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412로 거절되며 아무것도 변경되지 않습니다. (default to undefined)
581
+ let idempotencyKey: string; //멱등키(1~255자, `[A-Za-z0-9_-]`). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: `bid-create-{구매번호}`). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
582
582
 
583
583
  const { status, data } = await apiInstance.deleteWebhookEndpoint(
584
584
  endpointId,
@@ -592,8 +592,8 @@ const { status, data } = await apiInstance.deleteWebhookEndpoint(
592
592
  |Name | Type | Description | Notes|
593
593
  |------------- | ------------- | ------------- | -------------|
594
594
  | **endpointId** | [**string**] | 구독 식별자(등록 응답의 &#x60;endpointId&#x60;). | defaults to undefined|
595
- | **ifMatch** | [**string**] | 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다. | defaults to undefined|
596
- | **idempotencyKey** | [**string**] | 멱등성 키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: &#x60;bid-create-{구매번호}&#x60;) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
595
+ | **ifMatch** | [**string**] | 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412로 거절되며 아무것도 변경되지 않습니다. | defaults to undefined|
596
+ | **idempotencyKey** | [**string**] | 멱등키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: &#x60;bid-create-{구매번호}&#x60;). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
597
597
 
598
598
 
599
599
  ### Return type
@@ -613,25 +613,25 @@ void (empty response body)
613
613
  ### HTTP response details
614
614
  | Status code | Description | Response headers |
615
615
  |-------------|-------------|------------------|
616
- |**204** | 구독 삭제 완료(본문 없음). | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
617
- |**400** | 입력 검증 실패(&#x60;type: …/validation-failed&#x60;), Idempotency-Key 헤더 누락/형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 또는 요청 내용이 유효하지 않음(&#x60;…/upstream-invalid-input&#x60;). | - |
618
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
619
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
620
- |**409** | 원 요청이 아직 처리 중인 상태에서 같은 Idempotency-Key 재전송(&#x60;type: …/idempotency-key-conflict&#x60; — 잠시 뒤 같은 키로 재시도하면 결과를 받는다) 또는 현재 상태와 충돌하는 요청(&#x60;…/upstream-conflict&#x60;). | - |
621
- |**412** | &#x60;If-Match&#x60; 지문이 현재 리소스와 다릅니다(&#x60;type: …/precondition-failed&#x60;). 그 사이 다른 요청이 리소스를 바꿨습니다 — 다시 조회해 최신 ETag 재시도하세요. | - |
622
- |**422** | 동일 Idempotency-Key **다른 body** 로 재전송(&#x60;type: …/idempotency-key-reused&#x60;). 재시도해도 동일 실패 — 새 키를 쓰거나 body 를 원래대로 되돌려야 한다. 형식은 맞지만 내용상 처리할 수 없는 요청(&#x60;…/upstream-unprocessable&#x60;) 상태다. | - |
623
- |**428** | &#x60;If-Match&#x60; 헤더가 없습니다(&#x60;type: …/if-match-required&#x60;). 잃어버린 갱신을 막기 위해 필수입니다. | - |
624
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
625
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
626
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
627
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
616
+ |**204** | 구독 삭제 완료(본문 없음). | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
617
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;), &#x60;Idempotency-Key&#x60; 누락·형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 요청 내용 오류(&#x60;…/upstream-invalid-input&#x60;). | - |
618
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
619
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
620
+ |**409** | 같은 &#x60;Idempotency-Key&#x60;의 원 요청이 처리 (&#x60;…/idempotency-key-conflict&#x60;), 또는 현재 상태와 충돌(&#x60;…/upstream-conflict&#x60;). 앞의 경우 잠시 후 같은 키로 재시도하면 결과를 받습니다. | - |
621
+ |**412** | &#x60;If-Match&#x60; 값이 현재 리소스와 다름(&#x60;…/precondition-failed&#x60;). 다시 조회해 최신 &#x60;ETag&#x60;로 재시도합니다. | - |
622
+ |**422** | 같은 &#x60;Idempotency-Key&#x60;를 다른 body로 재전송(&#x60;…/idempotency-key-reused&#x60;), 또는 내용상 처리 불가(&#x60;…/upstream-unprocessable&#x60;). 재시도해도 같은 실패이므로 새 키를 쓰거나 body를 되돌립니다. | - |
623
+ |**428** | &#x60;If-Match&#x60; 헤더 누락(&#x60;…/if-match-required&#x60;). | - |
624
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
625
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
626
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
627
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
628
628
 
629
629
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
630
630
 
631
631
  # **downloadFile**
632
632
  > downloadFile()
633
633
 
634
- 무인증 — `fileKey` 자체가 capability 다(키를 아는 쪽이 곧 접근 권한을 가진다). 파트너 응답의 `fileUrl`/`fullUrl`URL 을 가리킨다. 요청 시점에 서명하므로 URL 을 저장해 두어도 만료되지 않는다. 응답은 실제 저장소 URL 로의 302 리다이렉트이며 리다이렉트 타깃은 1시간 뒤 만료되므로 302 자체를 캐시하지 말 것(`Cache-Control: no-store`). --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — `GET /v2/files/{fileKey}` 파일 메타와 `downloadUrl` v2 응답 규약으로 돌려줍니다. 이 안정 URL 은 파트너 응답의 `fileUrl`/`fullUrl` 가리키는 주소라 계속 유지되며 중단 일정은 없습니다.
634
+ 무인증 — `fileKey` 자체가 capability 다(키를 아는 쪽이 곧 접근 권한을 가진다). 파트너 응답의 `fileUrl`/`fullUrl`이 이 URL을 가리킨다. 요청 시점에 서명하므로 URL을 저장해 두어도 만료되지 않는다. 응답은 실제 저장소 URL 로의 302 리다이렉트이며 리다이렉트 타깃은 1시간 뒤 만료되므로 302 자체를 캐시하지 말 것(`Cache-Control: no-store`). --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — `GET /v2/files/{fileKey}`가 파일 메타와 `downloadUrl`을 v2 응답 규약으로 돌려줍니다. 이 안정 URL은 파트너 응답의 `fileUrl`/`fullUrl`이 가리키는 주소라 계속 유지되며 중단 일정은 없습니다.
635
635
 
636
636
  ### Example
637
637
 
@@ -644,7 +644,7 @@ import {
644
644
  const configuration = new Configuration();
645
645
  const apiInstance = new PartnerApiApi(configuration);
646
646
 
647
- let fileKey: string; //파일 키 — 영문 대소문자·숫자 32자. 업로드(`POST /v1|/v2/files`) 응답에서 받은 값. 16진수(hex)로 가정해 클라이언트에서 걸러내지 마세요 — 업로드된 파일의 키에는 hex 가 아닌 문자가 들어갑니다. (default to undefined)
647
+ let fileKey: string; //파일 키 — 영문 대소문자·숫자 32자. 업로드(`POST /v1|/v2/files`) 응답에서 받은 값. 16진수(hex)로 가정해 클라이언트에서 걸러내지 마세요 — 업로드된 파일의 키에는 hex가 아닌 문자가 들어갑니다. (default to undefined)
648
648
 
649
649
  const { status, data } = await apiInstance.downloadFile(
650
650
  fileKey
@@ -655,7 +655,7 @@ const { status, data } = await apiInstance.downloadFile(
655
655
 
656
656
  |Name | Type | Description | Notes|
657
657
  |------------- | ------------- | ------------- | -------------|
658
- | **fileKey** | [**string**] | 파일 키 — 영문 대소문자·숫자 32자. 업로드(&#x60;POST /v1|/v2/files&#x60;) 응답에서 받은 값. 16진수(hex)로 가정해 클라이언트에서 걸러내지 마세요 — 업로드된 파일의 키에는 hex 가 아닌 문자가 들어갑니다. | defaults to undefined|
658
+ | **fileKey** | [**string**] | 파일 키 — 영문 대소문자·숫자 32자. 업로드(&#x60;POST /v1|/v2/files&#x60;) 응답에서 받은 값. 16진수(hex)로 가정해 클라이언트에서 걸러내지 마세요 — 업로드된 파일의 키에는 hex가 아닌 문자가 들어갑니다. | defaults to undefined|
659
659
 
660
660
 
661
661
  ### Return type
@@ -675,14 +675,14 @@ No authorization required
675
675
  ### HTTP response details
676
676
  | Status code | Description | Response headers |
677
677
  |-------------|-------------|------------------|
678
- |**302** | 해소된 다운로드 URL 로 리다이렉트 | - |
678
+ |**302** | 해소된 다운로드 URL로 리다이렉트 | - |
679
679
 
680
680
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
681
681
 
682
682
  # **getBid**
683
683
  > GetBid200Response getBid()
684
684
 
685
- 공고의 모든 정보를 번에 조회합니다 — 기본 정보·납품/대금 조건·담당자·품목, 응찰 참여자(투찰가·순위·낙찰 여부), 계약서류, 검수 진행 상태, 라이프사이클 하위 상태. 스코프 `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).
685
+ 공고 건의 전체 정보를 조회합니다 — 기본 정보, 납품·대금 조건, 담당자, 품목, 응찰 참여자, 계약서류, 검수 상태. 스코프 `bids:read`. - 낙찰 여부는 `status`가 아니라 `participants[].isWinner`로 판단합니다. `AWARDED` 상태는 없어(낙찰 직후 `CONTRACT_IN_PROGRESS`) `status === \'AWARDED\'` 폴링은 끝나지 않습니다. - 계약서류는 `contractDocuments[]`에 실립니다. 따로 받는 엔드포인트는 없습니다. - 여러 건은 `GET /v2/bid-results`로 번에 받습니다. - 다른 발주기관의 공고는 403입니다.
686
686
 
687
687
  ### Example
688
688
 
@@ -695,8 +695,8 @@ import {
695
695
  const configuration = new Configuration();
696
696
  const apiInstance = new PartnerApiApi(configuration);
697
697
 
698
- let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
699
- let ifNoneMatch: string; //직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. (optional) (default to undefined)
698
+ let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
699
+ let ifNoneMatch: string; //직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304`로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. (optional) (default to undefined)
700
700
 
701
701
  const { status, data } = await apiInstance.getBid(
702
702
  bidRef,
@@ -708,8 +708,8 @@ const { status, data } = await apiInstance.getBid(
708
708
 
709
709
  |Name | Type | Description | Notes|
710
710
  |------------- | ------------- | ------------- | -------------|
711
- | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
712
- | **ifNoneMatch** | [**string**] | 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. | (optional) defaults to undefined|
711
+ | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
712
+ | **ifNoneMatch** | [**string**] | 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60;로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. | (optional) defaults to undefined|
713
713
 
714
714
 
715
715
  ### Return type
@@ -729,23 +729,23 @@ const { status, data } = await apiInstance.getBid(
729
729
  ### HTTP response details
730
730
  | Status code | Description | Response headers |
731
731
  |-------------|-------------|------------------|
732
- |**200** | 공고 상세. 마감 전에는 참가자 신원이 가려져 나가고, 마감 이후 낙찰 여부는 &#x60;participants[].isWinner&#x60; 읽습니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60; 본문 없이 받습니다. <br> |
733
- |**304** | &#x60;If-None-Match&#x60; 지문이 현재 리소스와 같습니다 — 내용이 바뀌지 않았습니다. **본문이 없습니다.** 직전에 받은 값을 그대로 쓰세요. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60; 본문 없이 받습니다. <br> |
734
- |**400** | 쿼리/본문 입력 검증 실패(&#x60;type: …/validation-failed&#x60;) 상한 초과(&#x60;bidRefs&#x60; 101건 등), 값 형식 위반, 알 수 없는 &#x60;cursor&#x60; 등. | - |
735
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
736
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
737
- |**404** | 대상을 찾을 수 없습니다(&#x60;type: …/upstream-not-found&#x60;). | - |
738
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
739
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
740
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
741
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
732
+ |**200** | 공고 상세. 마감 전에는 참가자 신원이 가려져 나가고, 마감 이후 낙찰 여부는 &#x60;participants[].isWinner&#x60;로 읽습니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60;를 본문 없이 받습니다. <br> |
733
+ |**304** | &#x60;If-None-Match&#x60; 지문이 현재 리소스와 같습니다 — 내용이 바뀌지 않았습니다. **본문이 없습니다.** 직전에 받은 값을 그대로 쓰세요. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60;를 본문 없이 받습니다. <br> |
734
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;). 상한 초과(&#x60;bidRefs&#x60; 101건 등), 값 형식 위반, 알 수 없는 &#x60;cursor&#x60;. | - |
735
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
736
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
737
+ |**404** | 대상 없음(&#x60;…/upstream-not-found&#x60;). | - |
738
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
739
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
740
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
741
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
742
742
 
743
743
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
744
744
 
745
745
  # **getBidSettlement**
746
746
  > GetBidSettlement200Response getBidSettlement()
747
747
 
748
- 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 다른 조회에서 일부 참가자 정보가 가려지는 경우와 무관하게, 이 정산 정보는 읽기 전용으로 항상 그대로 제공됩니다. **필수 스코프:** `invoices:read` — 종전에는 `bids:read` 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
748
+ 낙찰 공급사의 사업자·계좌 정보와 공급가액·부가세, 응찰 품목내역을 조회합니다. 대금 지급에 필요한 값입니다. 스코프 `invoices:read`(종전 `bids:read`에서 변경). 다른 조회에서 참가자 정보가 가려지는 경우와 무관하게응답은 항상 그대로 나갑니다.
749
749
 
750
750
  ### Example
751
751
 
@@ -758,8 +758,8 @@ import {
758
758
  const configuration = new Configuration();
759
759
  const apiInstance = new PartnerApiApi(configuration);
760
760
 
761
- let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
762
- let ifNoneMatch: string; //직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. (optional) (default to undefined)
761
+ let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
762
+ let ifNoneMatch: string; //직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304`로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. (optional) (default to undefined)
763
763
 
764
764
  const { status, data } = await apiInstance.getBidSettlement(
765
765
  bidRef,
@@ -771,8 +771,8 @@ const { status, data } = await apiInstance.getBidSettlement(
771
771
 
772
772
  |Name | Type | Description | Notes|
773
773
  |------------- | ------------- | ------------- | -------------|
774
- | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
775
- | **ifNoneMatch** | [**string**] | 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. | (optional) defaults to undefined|
774
+ | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
775
+ | **ifNoneMatch** | [**string**] | 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60;로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. | (optional) defaults to undefined|
776
776
 
777
777
 
778
778
  ### Return type
@@ -792,23 +792,23 @@ const { status, data } = await apiInstance.getBidSettlement(
792
792
  ### HTTP response details
793
793
  | Status code | Description | Response headers |
794
794
  |-------------|-------------|------------------|
795
- |**200** | 낙찰 공급사의 사업자·계좌 정보와 공급가액/부가세, 응찰 품목내역. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60; 본문 없이 받습니다. <br> |
796
- |**304** | &#x60;If-None-Match&#x60; 지문이 현재 리소스와 같습니다 — 내용이 바뀌지 않았습니다. **본문이 없습니다.** 직전에 받은 값을 그대로 쓰세요. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60; 본문 없이 받습니다. <br> |
797
- |**400** | 쿼리/본문 입력 검증 실패(&#x60;type: …/validation-failed&#x60;) 상한 초과(&#x60;bidRefs&#x60; 101건 등), 값 형식 위반, 알 수 없는 &#x60;cursor&#x60; 등. | - |
798
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
799
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
800
- |**404** | 대상을 찾을 수 없습니다(&#x60;type: …/upstream-not-found&#x60;). | - |
801
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
802
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
803
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
804
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
795
+ |**200** | 낙찰 공급사의 사업자·계좌 정보와 공급가액/부가세, 응찰 품목내역. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60;를 본문 없이 받습니다. <br> |
796
+ |**304** | &#x60;If-None-Match&#x60; 지문이 현재 리소스와 같습니다 — 내용이 바뀌지 않았습니다. **본문이 없습니다.** 직전에 받은 값을 그대로 쓰세요. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60;를 본문 없이 받습니다. <br> |
797
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;). 상한 초과(&#x60;bidRefs&#x60; 101건 등), 값 형식 위반, 알 수 없는 &#x60;cursor&#x60;. | - |
798
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
799
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
800
+ |**404** | 대상 없음(&#x60;…/upstream-not-found&#x60;). | - |
801
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
802
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
803
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
804
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
805
805
 
806
806
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
807
807
 
808
808
  # **getBidStatement**
809
809
  > GetBidStatement200Response getBidStatement()
810
810
 
811
- 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
811
+ 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. 스코프 `invoices:read`(종전 `contracts:read`에서 변경).
812
812
 
813
813
  ### Example
814
814
 
@@ -821,9 +821,9 @@ import {
821
821
  const configuration = new Configuration();
822
822
  const apiInstance = new PartnerApiApi(configuration);
823
823
 
824
- let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
824
+ let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
825
825
  let paperCode: number; //거래명세서 서식 코드. 생략하면 해당 공고에 적용된 기본 서식으로 조회합니다. 기관에 서식이 여러 벌인 경우에만 지정하세요. (optional) (default to undefined)
826
- let ifNoneMatch: string; //직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. (optional) (default to undefined)
826
+ let ifNoneMatch: string; //직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304`로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. (optional) (default to undefined)
827
827
 
828
828
  const { status, data } = await apiInstance.getBidStatement(
829
829
  bidRef,
@@ -836,9 +836,9 @@ const { status, data } = await apiInstance.getBidStatement(
836
836
 
837
837
  |Name | Type | Description | Notes|
838
838
  |------------- | ------------- | ------------- | -------------|
839
- | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
839
+ | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
840
840
  | **paperCode** | [**number**] | 거래명세서 서식 코드. 생략하면 해당 공고에 적용된 기본 서식으로 조회합니다. 기관에 서식이 여러 벌인 경우에만 지정하세요. | (optional) defaults to undefined|
841
- | **ifNoneMatch** | [**string**] | 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. | (optional) defaults to undefined|
841
+ | **ifNoneMatch** | [**string**] | 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60;로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. | (optional) defaults to undefined|
842
842
 
843
843
 
844
844
  ### Return type
@@ -858,23 +858,23 @@ const { status, data } = await apiInstance.getBidStatement(
858
858
  ### HTTP response details
859
859
  | Status code | Description | Response headers |
860
860
  |-------------|-------------|------------------|
861
- |**200** | 거래명세서 본문과 발행 메타. 정산 마감 전후 어느 시점에도 조회할 수 있습니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60; 본문 없이 받습니다. <br> |
862
- |**304** | &#x60;If-None-Match&#x60; 지문이 현재 리소스와 같습니다 — 내용이 바뀌지 않았습니다. **본문이 없습니다.** 직전에 받은 값을 그대로 쓰세요. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60; 본문 없이 받습니다. <br> |
863
- |**400** | 쿼리/본문 입력 검증 실패(&#x60;type: …/validation-failed&#x60;) 상한 초과(&#x60;bidRefs&#x60; 101건 등), 값 형식 위반, 알 수 없는 &#x60;cursor&#x60; 등. | - |
864
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
865
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
866
- |**404** | 대상을 찾을 수 없습니다(&#x60;type: …/upstream-not-found&#x60;). | - |
867
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
868
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
869
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
870
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
861
+ |**200** | 거래명세서 본문과 발행 메타. 정산 마감 전후 어느 시점에도 조회할 수 있습니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60;를 본문 없이 받습니다. <br> |
862
+ |**304** | &#x60;If-None-Match&#x60; 지문이 현재 리소스와 같습니다 — 내용이 바뀌지 않았습니다. **본문이 없습니다.** 직전에 받은 값을 그대로 쓰세요. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60;를 본문 없이 받습니다. <br> |
863
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;). 상한 초과(&#x60;bidRefs&#x60; 101건 등), 값 형식 위반, 알 수 없는 &#x60;cursor&#x60;. | - |
864
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
865
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
866
+ |**404** | 대상 없음(&#x60;…/upstream-not-found&#x60;). | - |
867
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
868
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
869
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
870
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
871
871
 
872
872
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
873
873
 
874
874
  # **getFileMeta**
875
875
  > GetFileMeta200Response getFileMeta()
876
876
 
877
- 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **대부분은 이 조회가 필요 없습니다.** 공고·결과 응답의 첨부 항목에 파일명과 내려받기 주소 (`fileUrl`/`fullUrl`, 만료 없는 안정 주소)가 이미 실려 있습니다. 이 엔드포인트는 그 주소를 들고 있지 않고 `fileKey` 아는 경우(예: 업로드 직후 크기 확인)를 위한 것입니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** fileKey 는 **영문 대소문자·숫자 32자**이고, 그 형태가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. 키를 16진수(hex)로 가정해 클라이언트에서 걸러내지 마세요 — 업로드된 파일의 키에는 hex 가 아닌 문자가 들어갑니다. **필수 스코프:** `files:read`
877
+ 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **대부분은 이 조회가 필요 없습니다.** 공고·결과 응답의 첨부 항목에 파일명과 내려받기 주소 (`fileUrl`/`fullUrl`, 만료 없는 안정 주소)가 이미 실려 있습니다. 이 엔드포인트는 그 주소를 들고 있지 않고 `fileKey`만 아는 경우(예: 업로드 직후 크기 확인)를 위한 것입니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName`에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** fileKey 는 **영문 대소문자·숫자 32자**이고, 그 형태가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. 키를 16진수(hex)로 가정해 클라이언트에서 걸러내지 마세요 — 업로드된 파일의 키에는 hex가 아닌 문자가 들어갑니다. **필수 스코프:** `files:read`
878
878
 
879
879
  ### Example
880
880
 
@@ -888,7 +888,7 @@ const configuration = new Configuration();
888
888
  const apiInstance = new PartnerApiApi(configuration);
889
889
 
890
890
  let fileKey: string; //파일 키 — 업로드 응답의 fileKey(영문 대소문자·숫자 32자). (default to undefined)
891
- let ifNoneMatch: string; //직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. (optional) (default to undefined)
891
+ let ifNoneMatch: string; //직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304`로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. (optional) (default to undefined)
892
892
 
893
893
  const { status, data } = await apiInstance.getFileMeta(
894
894
  fileKey,
@@ -901,7 +901,7 @@ const { status, data } = await apiInstance.getFileMeta(
901
901
  |Name | Type | Description | Notes|
902
902
  |------------- | ------------- | ------------- | -------------|
903
903
  | **fileKey** | [**string**] | 파일 키 — 업로드 응답의 fileKey(영문 대소문자·숫자 32자). | defaults to undefined|
904
- | **ifNoneMatch** | [**string**] | 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. | (optional) defaults to undefined|
904
+ | **ifNoneMatch** | [**string**] | 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60;로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. | (optional) defaults to undefined|
905
905
 
906
906
 
907
907
  ### Return type
@@ -921,16 +921,16 @@ const { status, data } = await apiInstance.getFileMeta(
921
921
  ### HTTP response details
922
922
  | Status code | Description | Response headers |
923
923
  |-------------|-------------|------------------|
924
- |**200** | 파일 메타(원본 파일명·크기·MIME). 내용은 포함하지 않습니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60; 본문 없이 받습니다. <br> |
925
- |**304** | &#x60;If-None-Match&#x60; 지문이 현재 리소스와 같습니다 — 내용이 바뀌지 않았습니다. **본문이 없습니다.** 직전에 받은 값을 그대로 쓰세요. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60; 본문 없이 받습니다. <br> |
926
- |**400** | 쿼리/본문 입력 검증 실패(&#x60;type: …/validation-failed&#x60;) 상한 초과(&#x60;bidRefs&#x60; 101건 등), 값 형식 위반, 알 수 없는 &#x60;cursor&#x60; 등. | - |
927
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
928
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
929
- |**404** | 대상을 찾을 수 없습니다(&#x60;type: …/upstream-not-found&#x60;). | - |
930
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
931
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
932
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
933
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
924
+ |**200** | 파일 메타(원본 파일명·크기·MIME). 내용은 포함하지 않습니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60;를 본문 없이 받습니다. <br> |
925
+ |**304** | &#x60;If-None-Match&#x60; 지문이 현재 리소스와 같습니다 — 내용이 바뀌지 않았습니다. **본문이 없습니다.** 직전에 받은 값을 그대로 쓰세요. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60;를 본문 없이 받습니다. <br> |
926
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;). 상한 초과(&#x60;bidRefs&#x60; 101건 등), 값 형식 위반, 알 수 없는 &#x60;cursor&#x60;. | - |
927
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
928
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
929
+ |**404** | 대상 없음(&#x60;…/upstream-not-found&#x60;). | - |
930
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
931
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
932
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
933
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
934
934
 
935
935
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
936
936
 
@@ -981,14 +981,14 @@ const { status, data } = await apiInstance.getSemoContractTaxinvoiceStatus(
981
981
  ### HTTP response details
982
982
  | Status code | Description | Response headers |
983
983
  |-------------|-------------|------------------|
984
- |**200** | 세금계산서 발행 상태. 동결 표면이라 &#x60;{data}&#x60; 봉투를 씌우지 않습니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
984
+ |**200** | 세금계산서 발행 상태. 동결 표면이라 &#x60;{data}&#x60; 봉투를 씌우지 않습니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
985
985
 
986
986
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
987
987
 
988
988
  # **getSupplierCardPayableV2**
989
989
  > GetSupplierCardPayableV2200Response getSupplierCardPayableV2()
990
990
 
991
- 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
991
+ 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write`를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
992
992
 
993
993
  ### Example
994
994
 
@@ -1002,7 +1002,7 @@ const configuration = new Configuration();
1002
1002
  const apiInstance = new PartnerApiApi(configuration);
1003
1003
 
1004
1004
  let memberId: string; //계약업체 회원 ID (default to undefined)
1005
- let ifNoneMatch: string; //직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. (optional) (default to undefined)
1005
+ let ifNoneMatch: string; //직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304`로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. (optional) (default to undefined)
1006
1006
 
1007
1007
  const { status, data } = await apiInstance.getSupplierCardPayableV2(
1008
1008
  memberId,
@@ -1015,7 +1015,7 @@ const { status, data } = await apiInstance.getSupplierCardPayableV2(
1015
1015
  |Name | Type | Description | Notes|
1016
1016
  |------------- | ------------- | ------------- | -------------|
1017
1017
  | **memberId** | [**string**] | 계약업체 회원 ID | defaults to undefined|
1018
- | **ifNoneMatch** | [**string**] | 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. | (optional) defaults to undefined|
1018
+ | **ifNoneMatch** | [**string**] | 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60;로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. | (optional) defaults to undefined|
1019
1019
 
1020
1020
 
1021
1021
  ### Return type
@@ -1035,23 +1035,23 @@ const { status, data } = await apiInstance.getSupplierCardPayableV2(
1035
1035
  ### HTTP response details
1036
1036
  | Status code | Description | Response headers |
1037
1037
  |-------------|-------------|------------------|
1038
- |**200** | 해당 공급사에 카드결제가 가능한지와, 불가하면 그 사유. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60; 본문 없이 받습니다. <br> |
1039
- |**304** | &#x60;If-None-Match&#x60; 지문이 현재 리소스와 같습니다 — 내용이 바뀌지 않았습니다. **본문이 없습니다.** 직전에 받은 값을 그대로 쓰세요. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60; 본문 없이 받습니다. <br> |
1040
- |**400** | 쿼리/본문 입력 검증 실패(&#x60;type: …/validation-failed&#x60;) 상한 초과(&#x60;bidRefs&#x60; 101건 등), 값 형식 위반, 알 수 없는 &#x60;cursor&#x60; 등. | - |
1041
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
1042
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1043
- |**404** | 대상을 찾을 수 없습니다(&#x60;type: …/upstream-not-found&#x60;). | - |
1044
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1045
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1046
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1047
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1038
+ |**200** | 해당 공급사에 카드결제가 가능한지와, 불가하면 그 사유. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60;를 본문 없이 받습니다. <br> |
1039
+ |**304** | &#x60;If-None-Match&#x60; 지문이 현재 리소스와 같습니다 — 내용이 바뀌지 않았습니다. **본문이 없습니다.** 직전에 받은 값을 그대로 쓰세요. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60;를 본문 없이 받습니다. <br> |
1040
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;). 상한 초과(&#x60;bidRefs&#x60; 101건 등), 값 형식 위반, 알 수 없는 &#x60;cursor&#x60;. | - |
1041
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
1042
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1043
+ |**404** | 대상 없음(&#x60;…/upstream-not-found&#x60;). | - |
1044
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1045
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1046
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1047
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1048
1048
 
1049
1049
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
1050
1050
 
1051
1051
  # **getWebhookEndpoint**
1052
1052
  > GetWebhookEndpoint200Response getWebhookEndpoint()
1053
1053
 
1054
- 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 `endpointId` 확인하세요. **필수 스코프:** `webhooks:read`
1054
+ 구독 1건의 현재 상태를 조회합니다. 스코프 `webhooks:read`. 수정·삭제 전에 먼저 호출해 응답 헤더의 `ETag`를 `If-Match`에 실어야 합니다. 없는 구독이거나 다른 파트너 키의 구독이면 404입니다. 서명 시크릿은 실리지 않습니다.
1055
1055
 
1056
1056
  ### Example
1057
1057
 
@@ -1065,7 +1065,7 @@ const configuration = new Configuration();
1065
1065
  const apiInstance = new PartnerApiApi(configuration);
1066
1066
 
1067
1067
  let endpointId: string; //구독 식별자(등록 응답의 `endpointId`). (default to undefined)
1068
- let ifNoneMatch: string; //직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. (optional) (default to undefined)
1068
+ let ifNoneMatch: string; //직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304`로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. (optional) (default to undefined)
1069
1069
 
1070
1070
  const { status, data } = await apiInstance.getWebhookEndpoint(
1071
1071
  endpointId,
@@ -1078,7 +1078,7 @@ const { status, data } = await apiInstance.getWebhookEndpoint(
1078
1078
  |Name | Type | Description | Notes|
1079
1079
  |------------- | ------------- | ------------- | -------------|
1080
1080
  | **endpointId** | [**string**] | 구독 식별자(등록 응답의 &#x60;endpointId&#x60;). | defaults to undefined|
1081
- | **ifNoneMatch** | [**string**] | 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. | (optional) defaults to undefined|
1081
+ | **ifNoneMatch** | [**string**] | 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60;로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. | (optional) defaults to undefined|
1082
1082
 
1083
1083
 
1084
1084
  ### Return type
@@ -1098,16 +1098,16 @@ const { status, data } = await apiInstance.getWebhookEndpoint(
1098
1098
  ### HTTP response details
1099
1099
  | Status code | Description | Response headers |
1100
1100
  |-------------|-------------|------------------|
1101
- |**200** | 웹훅 구독 상세. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60; 본문 없이 받습니다. <br> |
1102
- |**304** | &#x60;If-None-Match&#x60; 지문이 현재 리소스와 같습니다 — 내용이 바뀌지 않았습니다. **본문이 없습니다.** 직전에 받은 값을 그대로 쓰세요. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60; 본문 없이 받습니다. <br> |
1103
- |**400** | 쿼리/본문 입력 검증 실패(&#x60;type: …/validation-failed&#x60;) 상한 초과(&#x60;bidRefs&#x60; 101건 등), 값 형식 위반, 알 수 없는 &#x60;cursor&#x60; 등. | - |
1104
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
1105
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1106
- |**404** | 대상을 찾을 수 없습니다(&#x60;type: …/upstream-not-found&#x60;). | - |
1107
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1108
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1109
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1110
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1101
+ |**200** | 웹훅 구독 상세. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60;를 본문 없이 받습니다. <br> |
1102
+ |**304** | &#x60;If-None-Match&#x60; 지문이 현재 리소스와 같습니다 — 내용이 바뀌지 않았습니다. **본문이 없습니다.** 직전에 받은 값을 그대로 쓰세요. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60;를 본문 없이 받습니다. <br> |
1103
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;). 상한 초과(&#x60;bidRefs&#x60; 101건 등), 값 형식 위반, 알 수 없는 &#x60;cursor&#x60;. | - |
1104
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
1105
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1106
+ |**404** | 대상 없음(&#x60;…/upstream-not-found&#x60;). | - |
1107
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1108
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1109
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1110
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1111
1111
 
1112
1112
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
1113
1113
 
@@ -1127,7 +1127,7 @@ import {
1127
1127
  const configuration = new Configuration();
1128
1128
  const apiInstance = new PartnerApiApi(configuration);
1129
1129
 
1130
- let ifNoneMatch: string; //직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. (optional) (default to undefined)
1130
+ let ifNoneMatch: string; //직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304`로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. (optional) (default to undefined)
1131
1131
 
1132
1132
  const { status, data } = await apiInstance.healthControllerCheck(
1133
1133
  ifNoneMatch
@@ -1138,7 +1138,7 @@ const { status, data } = await apiInstance.healthControllerCheck(
1138
1138
 
1139
1139
  |Name | Type | Description | Notes|
1140
1140
  |------------- | ------------- | ------------- | -------------|
1141
- | **ifNoneMatch** | [**string**] | 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. | (optional) defaults to undefined|
1141
+ | **ifNoneMatch** | [**string**] | 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60;로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. | (optional) defaults to undefined|
1142
1142
 
1143
1143
 
1144
1144
  ### Return type
@@ -1158,17 +1158,17 @@ No authorization required
1158
1158
  ### HTTP response details
1159
1159
  | Status code | Description | Response headers |
1160
1160
  |-------------|-------------|------------------|
1161
- |**200** | 프로세스가 살아 있음. 의존성은 보지 않습니다(readiness 가 그 역할). | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60; 본문 없이 받습니다. <br> |
1162
- |**304** | &#x60;If-None-Match&#x60; 지문이 현재 리소스와 같습니다 — 내용이 바뀌지 않았습니다. **본문이 없습니다.** 직전에 받은 값을 그대로 쓰세요. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60; 본문 없이 받습니다. <br> |
1163
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1164
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1161
+ |**200** | 프로세스가 살아 있음. 의존성은 보지 않습니다(readiness가 그 역할). | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60;를 본문 없이 받습니다. <br> |
1162
+ |**304** | &#x60;If-None-Match&#x60; 지문이 현재 리소스와 같습니다 — 내용이 바뀌지 않았습니다. **본문이 없습니다.** 직전에 받은 값을 그대로 쓰세요. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60;를 본문 없이 받습니다. <br> |
1163
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1164
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1165
1165
 
1166
1166
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
1167
1167
 
1168
1168
  # **listBidResults**
1169
1169
  > ListBidResults200Response listBidResults()
1170
1170
 
1171
- 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고를 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에 실린 `ETag` 다음 요청의 `If-None-Match` 되보내면, 결과가 그대로일 때 `304` 본문 없이 받습니다. **식별자 전달:** `?bidRefs=A,B,C`(쉼표) 또는 `?bidRefs=A&bidRefs=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다. 요청한 건수와 받은 건수가 다를 수 있으므로, 보낸 값이 공고번호였다면 `bidId` 로, 구매번호였다면 `purchaseNo` 로 대조하세요. **공고 하나만 볼 때도** `bidRefs` 에 하나만 넣으면 됩니다. 응찰 결과 외에 납품 조건·품목·계약서류까지 필요하면 `GET /v2/bids/{bidRef}` 상세 조회를 쓰세요.
1171
+ 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. - 결과 확인은 공고를 하나씩 조회하지 말고 이 엔드포인트로 최대 100건씩 받습니다. 응답의 `ETag`를 다음 요청의 `If-None-Match`로 보내면 변화가 없을본문 없이 `304`로 끝납니다. - 식별자는 `?bidRefs=A,B,C`와 `?bidRefs=A&bidRefs=B` 둘 다 됩니다. - 없거나 대행 범위 밖인 식별자는 오류가 아니라 응답에서 빠집니다. 보낸 값이 공고번호면 `bidId`, 구매번호면 `purchaseNo`로 대조합니다.
1172
1172
 
1173
1173
  ### Example
1174
1174
 
@@ -1181,8 +1181,8 @@ import {
1181
1181
  const configuration = new Configuration();
1182
1182
  const apiInstance = new PartnerApiApi(configuration);
1183
1183
 
1184
- let bidRefs: string; //조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. 쉼표로 구분하거나 `bidRefs` 반복해 전달합니다. 최대 100건입니다. (default to undefined)
1185
- let ifNoneMatch: string; //직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. (optional) (default to undefined)
1184
+ let bidRefs: string; //조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. 쉼표로 구분하거나 `bidRefs`를 반복해 전달합니다. 최대 100건입니다. (default to undefined)
1185
+ let ifNoneMatch: string; //직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304`로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. (optional) (default to undefined)
1186
1186
 
1187
1187
  const { status, data } = await apiInstance.listBidResults(
1188
1188
  bidRefs,
@@ -1194,8 +1194,8 @@ const { status, data } = await apiInstance.listBidResults(
1194
1194
 
1195
1195
  |Name | Type | Description | Notes|
1196
1196
  |------------- | ------------- | ------------- | -------------|
1197
- | **bidRefs** | [**string**] | 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. 쉼표로 구분하거나 &#x60;bidRefs&#x60; 반복해 전달합니다. 최대 100건입니다. | defaults to undefined|
1198
- | **ifNoneMatch** | [**string**] | 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. | (optional) defaults to undefined|
1197
+ | **bidRefs** | [**string**] | 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. 쉼표로 구분하거나 &#x60;bidRefs&#x60;를 반복해 전달합니다. 최대 100건입니다. | defaults to undefined|
1198
+ | **ifNoneMatch** | [**string**] | 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60;로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. | (optional) defaults to undefined|
1199
1199
 
1200
1200
 
1201
1201
  ### Return type
@@ -1215,23 +1215,23 @@ const { status, data } = await apiInstance.listBidResults(
1215
1215
  ### HTTP response details
1216
1216
  | Status code | Description | Response headers |
1217
1217
  |-------------|-------------|------------------|
1218
- |**200** | 요청한 공고의 응찰 결과 목록. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60; 본문 없이 받습니다. <br> |
1219
- |**304** | &#x60;If-None-Match&#x60; 지문이 현재 리소스와 같습니다 — 내용이 바뀌지 않았습니다. **본문이 없습니다.** 직전에 받은 값을 그대로 쓰세요. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60; 본문 없이 받습니다. <br> |
1220
- |**400** | 쿼리/본문 입력 검증 실패(&#x60;type: …/validation-failed&#x60;) 상한 초과(&#x60;bidRefs&#x60; 101건 등), 값 형식 위반, 알 수 없는 &#x60;cursor&#x60; 등. | - |
1221
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
1222
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1223
- |**404** | 대상을 찾을 수 없습니다(&#x60;type: …/upstream-not-found&#x60;). | - |
1224
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1225
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1226
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1227
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1218
+ |**200** | 요청한 공고의 응찰 결과 목록. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60;를 본문 없이 받습니다. <br> |
1219
+ |**304** | &#x60;If-None-Match&#x60; 지문이 현재 리소스와 같습니다 — 내용이 바뀌지 않았습니다. **본문이 없습니다.** 직전에 받은 값을 그대로 쓰세요. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60;를 본문 없이 받습니다. <br> |
1220
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;). 상한 초과(&#x60;bidRefs&#x60; 101건 등), 값 형식 위반, 알 수 없는 &#x60;cursor&#x60;. | - |
1221
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
1222
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1223
+ |**404** | 대상 없음(&#x60;…/upstream-not-found&#x60;). | - |
1224
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1225
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1226
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1227
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1228
1228
 
1229
1229
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
1230
1230
 
1231
1231
  # **listBids**
1232
1232
  > ListBids200Response listBids()
1233
1233
 
1234
- 발주처(API 바인딩)의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(쿼리에 buyerId 넣지 않습니다). **페이지네이션(cursor):** `limit`(1~100, 기본 100) + `cursor`(불투명 토큰). 응답 `meta.nextCursor` 다음 요청 `cursor` 전달하면 다음 페이지를 받습니다. `meta.hasMore` `false`(= `nextCursor` 가 `null`)이면 마지막 페이지입니다. 목록 자체는 `data` 에 배열로 실립니다. **상태·낙찰방법:** 공개값(의미 문자열)으로 반환됩니다. 낙찰 여부는 상태가 아니라 낙찰 결과 조회의 `participants[].isWinner` 관측합니다(AWARDED 상태는 없습니다).
1234
+ API 키에 연결된 발주기관의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. - 발주기관은 키로 결정됩니다(`buyerId`를 보내지 않습니다). - 페이지네이션: `limit`(1~100, 기본 100) `cursor`. 응답 `meta.nextCursor`를 다음 요청의 `cursor`로 보내고, `meta.hasMore`가 `false`면 마지막 페이지입니다. - 낙찰 여부는 공고 상태가 아니라 `GET /v2/bid-results`의 `participants[].isWinner`로 판단합니다. `AWARDED` 상태는 없습니다.
1235
1235
 
1236
1236
  ### Example
1237
1237
 
@@ -1245,11 +1245,11 @@ const configuration = new Configuration();
1245
1245
  const apiInstance = new PartnerApiApi(configuration);
1246
1246
 
1247
1247
  let limit: number; //페이지 크기(1~100, 기본 100). (optional) (default to 100)
1248
- let cursor: string; //다음 페이지 커서(불투명 토큰). 직전 응답의 `nextCursor` 그대로 전달한다. 미지정 페이지. `nextCursor=null` 이면 마지막 페이지다. (optional) (default to undefined)
1249
- let bidRefs: Array<string>; //조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. CSV 로 전달하며 최대 100건. 지정 시 그 공고만 조회합니다. (optional) (default to undefined)
1248
+ let cursor: string; //다음 페이지 커서(불투명 토큰). 직전 응답의 `nextCursor`를 그대로 보냅니다. 생략하면페이지이고, `nextCursor`가 `null`이면 마지막 페이지입니다. (optional) (default to undefined)
1249
+ let bidRefs: Array<string>; //조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. CSV로 전달하며 최대 100건. 지정 시 그 공고만 조회합니다. (optional) (default to undefined)
1250
1250
  let status: Array<BidPublicStatus>; //공고 상태 필터(공개값) CSV. 지정 시 그중 하나라도 일치하는 공고만 조회합니다. (optional) (default to undefined)
1251
1251
  let include: Array<'results' | 'products' | 'contacts'>; //행별 확장 부착 CSV. `results`=응찰 참여자, `products`=공고 등록 품목, `contacts`=발주 담당자 성명·연락처·이메일. 미지정이면 부착하지 않는다(응답이 가볍고 조회 비용도 들지 않는다). (optional) (default to undefined)
1252
- let ifNoneMatch: string; //직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. (optional) (default to undefined)
1252
+ let ifNoneMatch: string; //직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304`로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. (optional) (default to undefined)
1253
1253
 
1254
1254
  const { status, data } = await apiInstance.listBids(
1255
1255
  limit,
@@ -1266,11 +1266,11 @@ const { status, data } = await apiInstance.listBids(
1266
1266
  |Name | Type | Description | Notes|
1267
1267
  |------------- | ------------- | ------------- | -------------|
1268
1268
  | **limit** | [**number**] | 페이지 크기(1~100, 기본 100). | (optional) defaults to 100|
1269
- | **cursor** | [**string**] | 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 그대로 전달한다. 미지정 페이지. &#x60;nextCursor&#x3D;null&#x60; 이면 마지막 페이지다. | (optional) defaults to undefined|
1270
- | **bidRefs** | **Array&lt;string&gt;** | 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. CSV 로 전달하며 최대 100건. 지정 시 그 공고만 조회합니다. | (optional) defaults to undefined|
1269
+ | **cursor** | [**string**] | 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60;를 그대로 보냅니다. 생략하면페이지이고, &#x60;nextCursor&#x60;가 &#x60;null&#x60;이면 마지막 페이지입니다. | (optional) defaults to undefined|
1270
+ | **bidRefs** | **Array&lt;string&gt;** | 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. CSV로 전달하며 최대 100건. 지정 시 그 공고만 조회합니다. | (optional) defaults to undefined|
1271
1271
  | **status** | **Array&lt;BidPublicStatus&gt;** | 공고 상태 필터(공개값) CSV. 지정 시 그중 하나라도 일치하는 공고만 조회합니다. | (optional) defaults to undefined|
1272
1272
  | **include** | **Array<&#39;results&#39; &#124; &#39;products&#39; &#124; &#39;contacts&#39;>** | 행별 확장 부착 CSV. &#x60;results&#x60;&#x3D;응찰 참여자, &#x60;products&#x60;&#x3D;공고 등록 품목, &#x60;contacts&#x60;&#x3D;발주 담당자 성명·연락처·이메일. 미지정이면 부착하지 않는다(응답이 가볍고 조회 비용도 들지 않는다). | (optional) defaults to undefined|
1273
- | **ifNoneMatch** | [**string**] | 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. | (optional) defaults to undefined|
1273
+ | **ifNoneMatch** | [**string**] | 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60;로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. | (optional) defaults to undefined|
1274
1274
 
1275
1275
 
1276
1276
  ### Return type
@@ -1290,23 +1290,23 @@ const { status, data } = await apiInstance.listBids(
1290
1290
  ### HTTP response details
1291
1291
  | Status code | Description | Response headers |
1292
1292
  |-------------|-------------|------------------|
1293
- |**200** | 공고 요약 목록. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60; 본문 없이 받습니다. <br> |
1294
- |**304** | &#x60;If-None-Match&#x60; 지문이 현재 리소스와 같습니다 — 내용이 바뀌지 않았습니다. **본문이 없습니다.** 직전에 받은 값을 그대로 쓰세요. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60; 본문 없이 받습니다. <br> |
1295
- |**400** | 쿼리/본문 입력 검증 실패(&#x60;type: …/validation-failed&#x60;) 상한 초과(&#x60;bidRefs&#x60; 101건 등), 값 형식 위반, 알 수 없는 &#x60;cursor&#x60; 등. | - |
1296
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
1297
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1298
- |**404** | 대상을 찾을 수 없습니다(&#x60;type: …/upstream-not-found&#x60;). | - |
1299
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1300
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1301
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1302
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1293
+ |**200** | 공고 요약 목록. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60;를 본문 없이 받습니다. <br> |
1294
+ |**304** | &#x60;If-None-Match&#x60; 지문이 현재 리소스와 같습니다 — 내용이 바뀌지 않았습니다. **본문이 없습니다.** 직전에 받은 값을 그대로 쓰세요. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60;를 본문 없이 받습니다. <br> |
1295
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;). 상한 초과(&#x60;bidRefs&#x60; 101건 등), 값 형식 위반, 알 수 없는 &#x60;cursor&#x60;. | - |
1296
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
1297
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1298
+ |**404** | 대상 없음(&#x60;…/upstream-not-found&#x60;). | - |
1299
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1300
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1301
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1302
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1303
1303
 
1304
1304
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
1305
1305
 
1306
1306
  # **listExternalContractDocuments**
1307
1307
  > ExternalContractDocumentsResponseDto listExternalContractDocuments()
1308
1308
 
1309
- 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `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 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
1309
+ 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `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 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
1310
1310
 
1311
1311
  ### Example
1312
1312
 
@@ -1353,22 +1353,22 @@ const { status, data } = await apiInstance.listExternalContractDocuments(
1353
1353
  ### HTTP response details
1354
1354
  | Status code | Description | Response headers |
1355
1355
  |-------------|-------------|------------------|
1356
- |**200** | 필요 계약서류 목록. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1357
- |**400** | 쿼리/본문 입력 검증 실패(&#x60;type: …/validation-failed&#x60;) 상한 초과(&#x60;bidRefs&#x60; 101건 등), 값 형식 위반, 알 수 없는 &#x60;cursor&#x60; 등. | - |
1358
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
1359
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1360
- |**404** | 대상을 찾을 수 없습니다(&#x60;type: …/upstream-not-found&#x60;). | - |
1361
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1362
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1363
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1364
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1356
+ |**200** | 필요 계약서류 목록. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1357
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;). 상한 초과(&#x60;bidRefs&#x60; 101건 등), 값 형식 위반, 알 수 없는 &#x60;cursor&#x60;. | - |
1358
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
1359
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1360
+ |**404** | 대상 없음(&#x60;…/upstream-not-found&#x60;). | - |
1361
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1362
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1363
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1364
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1365
1365
 
1366
1366
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
1367
1367
 
1368
1368
  # **listWebhookDeliveries**
1369
1369
  > ListWebhookDeliveries200Response listWebhookDeliveries()
1370
1370
 
1371
- 이 API 키의 웹훅 발송 시도를 최신순으로 조회합니다. 보낸 본문·수신측 응답 상태· 다음 재시도 예정 시각이 함께 실립니다. **호출 시점:** - 수신측 장애로 놓친 이벤트를 메울 때. 이 엔드포인트가 웹훅의 **폴링 대체 경로**입니다 — `status=EXHAUSTED` 걸러 다시 처리하면 됩니다. - \"이벤트가 온다\" 를 진단할 때. 발송 시도 자체가 없는지(구독·이벤트 타입 문제), 시도했지만 실패했는지(`responseStatus`·`responseBodyExcerpt`)를 여기서 가릅니다. **같은 이벤트가 여러 행으로 보입니다.** 재시도마다 한 행이며 `eventId` 같고 `attempt` 올라갑니다. 처리 여부는 `eventId` 기준으로 판단하세요. **페이지네이션:** `nextCursor` 다음 요청의 `cursor` 전달합니다. null 이면 마지막 페이지입니다. **`400`:** `status` 가 허용 값 밖이거나 `limit` 이 범위를 벗어났습니다 — 값을 고쳐 재시도하세요. **필수 스코프:** `webhooks:read`
1371
+ 이 API 키의 웹훅 발송 시도를 최신순으로 조회합니다. 보낸 본문, 수신측 응답 상태, 다음 재시도 시각이 함께 실립니다. 스코프 `webhooks:read`. - 수신측 장애로 놓친 이벤트는 `status=EXHAUSTED`로 걸러 다시 처리합니다. 웹훅의 폴링 대체 경로입니다. - 재시도마다 한 행이며 `eventId`가 같고 `attempt`만 올라갑니다. 처리 여부는 `eventId` 기준으로 판단합니다. - 페이지네이션: 응답 `nextCursor`를 다음 요청의 `cursor`로 보냅니다. `null`이면 마지막 페이지입니다.
1372
1372
 
1373
1373
  ### Example
1374
1374
 
@@ -1384,8 +1384,8 @@ const apiInstance = new PartnerApiApi(configuration);
1384
1384
  let endpointId: string; //이 구독의 전송만 조회합니다. 미지정이면 이 키의 모든 구독을 함께 조회합니다. (optional) (default to undefined)
1385
1385
  let status: PartnerWebhookDeliveryStatus; //전송 상태 필터. 미지정이면 전부. (optional) (default to undefined)
1386
1386
  let limit: number; //페이지 크기(1~200, 기본 50). (optional) (default to 50)
1387
- let cursor: string; //다음 페이지 커서(불투명 토큰). 직전 응답의 `nextCursor` 그대로 전달합니다. 미지정 시 첫 페이지. (optional) (default to undefined)
1388
- let ifNoneMatch: string; //직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. (optional) (default to undefined)
1387
+ let cursor: string; //다음 페이지 커서(불투명 토큰). 직전 응답의 `nextCursor`를 그대로 전달합니다. 미지정 시 첫 페이지. (optional) (default to undefined)
1388
+ let ifNoneMatch: string; //직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304`로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. (optional) (default to undefined)
1389
1389
 
1390
1390
  const { status, data } = await apiInstance.listWebhookDeliveries(
1391
1391
  endpointId,
@@ -1403,8 +1403,8 @@ const { status, data } = await apiInstance.listWebhookDeliveries(
1403
1403
  | **endpointId** | [**string**] | 이 구독의 전송만 조회합니다. 미지정이면 이 키의 모든 구독을 함께 조회합니다. | (optional) defaults to undefined|
1404
1404
  | **status** | **PartnerWebhookDeliveryStatus** | 전송 상태 필터. 미지정이면 전부. | (optional) defaults to undefined|
1405
1405
  | **limit** | [**number**] | 페이지 크기(1~200, 기본 50). | (optional) defaults to 50|
1406
- | **cursor** | [**string**] | 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60; 그대로 전달합니다. 미지정 시 첫 페이지. | (optional) defaults to undefined|
1407
- | **ifNoneMatch** | [**string**] | 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. | (optional) defaults to undefined|
1406
+ | **cursor** | [**string**] | 다음 페이지 커서(불투명 토큰). 직전 응답의 &#x60;nextCursor&#x60;를 그대로 전달합니다. 미지정 시 첫 페이지. | (optional) defaults to undefined|
1407
+ | **ifNoneMatch** | [**string**] | 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60;로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. | (optional) defaults to undefined|
1408
1408
 
1409
1409
 
1410
1410
  ### Return type
@@ -1424,23 +1424,23 @@ const { status, data } = await apiInstance.listWebhookDeliveries(
1424
1424
  ### HTTP response details
1425
1425
  | Status code | Description | Response headers |
1426
1426
  |-------------|-------------|------------------|
1427
- |**200** | 웹훅 전송 이력. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60; 본문 없이 받습니다. <br> |
1428
- |**304** | &#x60;If-None-Match&#x60; 지문이 현재 리소스와 같습니다 — 내용이 바뀌지 않았습니다. **본문이 없습니다.** 직전에 받은 값을 그대로 쓰세요. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60; 본문 없이 받습니다. <br> |
1429
- |**400** | 쿼리/본문 입력 검증 실패(&#x60;type: …/validation-failed&#x60;) 상한 초과(&#x60;bidRefs&#x60; 101건 등), 값 형식 위반, 알 수 없는 &#x60;cursor&#x60; 등. | - |
1430
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
1431
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1432
- |**404** | 대상을 찾을 수 없습니다(&#x60;type: …/upstream-not-found&#x60;). | - |
1433
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1434
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1435
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1436
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1427
+ |**200** | 웹훅 전송 이력. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60;를 본문 없이 받습니다. <br> |
1428
+ |**304** | &#x60;If-None-Match&#x60; 지문이 현재 리소스와 같습니다 — 내용이 바뀌지 않았습니다. **본문이 없습니다.** 직전에 받은 값을 그대로 쓰세요. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60;를 본문 없이 받습니다. <br> |
1429
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;). 상한 초과(&#x60;bidRefs&#x60; 101건 등), 값 형식 위반, 알 수 없는 &#x60;cursor&#x60;. | - |
1430
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
1431
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1432
+ |**404** | 대상 없음(&#x60;…/upstream-not-found&#x60;). | - |
1433
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1434
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1435
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1436
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1437
1437
 
1438
1438
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
1439
1439
 
1440
1440
  # **listWebhookEndpoints**
1441
1441
  > ListWebhookEndpoints200Response listWebhookEndpoints()
1442
1442
 
1443
- 이 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
1443
+ 이 API 키가 등록한 웹훅 구독을 모두 조회합니다. 스코프 `webhooks:read`. 발송이 멈춘 이유는 `status`와 `consecutiveFailures`로 확인합니다. 서명 시크릿은 실리지 않습니다. 수신측 구현 방법은 `POST /v2/webhook-endpoints` 설명에 있습니다.
1444
1444
 
1445
1445
  ### Example
1446
1446
 
@@ -1453,7 +1453,7 @@ import {
1453
1453
  const configuration = new Configuration();
1454
1454
  const apiInstance = new PartnerApiApi(configuration);
1455
1455
 
1456
- let ifNoneMatch: string; //직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. (optional) (default to undefined)
1456
+ let ifNoneMatch: string; //직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304`로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. (optional) (default to undefined)
1457
1457
 
1458
1458
  const { status, data } = await apiInstance.listWebhookEndpoints(
1459
1459
  ifNoneMatch
@@ -1464,7 +1464,7 @@ const { status, data } = await apiInstance.listWebhookEndpoints(
1464
1464
 
1465
1465
  |Name | Type | Description | Notes|
1466
1466
  |------------- | ------------- | ------------- | -------------|
1467
- | **ifNoneMatch** | [**string**] | 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60; 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. | (optional) defaults to undefined|
1467
+ | **ifNoneMatch** | [**string**] | 직전 응답의 &#x60;ETag&#x60; 값. 내용이 그대로면 본문 없이 &#x60;304&#x60;로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다. | (optional) defaults to undefined|
1468
1468
 
1469
1469
 
1470
1470
  ### Return type
@@ -1484,23 +1484,23 @@ const { status, data } = await apiInstance.listWebhookEndpoints(
1484
1484
  ### HTTP response details
1485
1485
  | Status code | Description | Response headers |
1486
1486
  |-------------|-------------|------------------|
1487
- |**200** | 웹훅 구독 목록. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60; 본문 없이 받습니다. <br> |
1488
- |**304** | &#x60;If-None-Match&#x60; 지문이 현재 리소스와 같습니다 — 내용이 바뀌지 않았습니다. **본문이 없습니다.** 직전에 받은 값을 그대로 쓰세요. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60; 본문 없이 받습니다. <br> |
1489
- |**400** | 쿼리/본문 입력 검증 실패(&#x60;type: …/validation-failed&#x60;) 상한 초과(&#x60;bidRefs&#x60; 101건 등), 값 형식 위반, 알 수 없는 &#x60;cursor&#x60; 등. | - |
1490
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
1491
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1492
- |**404** | 대상을 찾을 수 없습니다(&#x60;type: …/upstream-not-found&#x60;). | - |
1493
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1494
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1495
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1496
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1487
+ |**200** | 웹훅 구독 목록. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60;를 본문 없이 받습니다. <br> |
1488
+ |**304** | &#x60;If-None-Match&#x60; 지문이 현재 리소스와 같습니다 — 내용이 바뀌지 않았습니다. **본문이 없습니다.** 직전에 받은 값을 그대로 쓰세요. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> * ETag - 리소스 지문(weak). 다음 요청의 &#x60;If-None-Match&#x60; 헤더로 되보내면 내용이 그대로일 때 &#x60;304 Not Modified&#x60;를 본문 없이 받습니다. <br> |
1489
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;). 상한 초과(&#x60;bidRefs&#x60; 101건 등), 값 형식 위반, 알 수 없는 &#x60;cursor&#x60;. | - |
1490
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
1491
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1492
+ |**404** | 대상 없음(&#x60;…/upstream-not-found&#x60;). | - |
1493
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1494
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1495
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1496
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1497
1497
 
1498
1498
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
1499
1499
 
1500
1500
  # **markBidFailed**
1501
1501
  > MarkBidFailed201Response markBidFailed(markBidFailedRequestDto)
1502
1502
 
1503
- 공고를 유찰 상태로 전환합니다. **호출 시점:** 입찰 마감 유찰 사유가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 공고 상태가 유찰(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` 헤더 필수.
1503
+ 공고를 유찰 처리합니다. 입찰 마감 상태에서 호출합니다. 스코프 `awards:write` · `Idempotency-Key` 헤더 필수. 공고 상태가 유찰(`FAILED`)로 바뀌고 유찰사유가 기록됩니다. 발주기관은 API 키로 결정됩니다(`buyerId`를 보내지 않습니다). | `failureReasonCode` | 의미 | | --- | --- | | `ABOVE_TARGET_PRICE` | 예정가격 초과 | | `DEPT_MISMATCH` | 자격 미달 | | `NEEDS_EXPERTISE` | 전문성 필요 | | `NO_PARTICIPANT` | 참가자 없음 | | `SINGLE_PARTICIPANT` | 단독 참가 | | `LESS_THAN_TWO` | 2인 미만 | | `BELOW_MINIMUM` | 최저가 미달 | | `OTHER` | 기타(`failureReasonDetail` 필수) |
1504
1504
 
1505
1505
  ### Example
1506
1506
 
@@ -1514,8 +1514,8 @@ import {
1514
1514
  const configuration = new Configuration();
1515
1515
  const apiInstance = new PartnerApiApi(configuration);
1516
1516
 
1517
- let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
1518
- let idempotencyKey: string; //멱등성 키(1~255자, `[A-Za-z0-9_-]`). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: `bid-create-{구매번호}`) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
1517
+ let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
1518
+ let idempotencyKey: string; //멱등키(1~255자, `[A-Za-z0-9_-]`). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: `bid-create-{구매번호}`). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
1519
1519
  let markBidFailedRequestDto: MarkBidFailedRequestDto; //
1520
1520
 
1521
1521
  const { status, data } = await apiInstance.markBidFailed(
@@ -1530,8 +1530,8 @@ const { status, data } = await apiInstance.markBidFailed(
1530
1530
  |Name | Type | Description | Notes|
1531
1531
  |------------- | ------------- | ------------- | -------------|
1532
1532
  | **markBidFailedRequestDto** | **MarkBidFailedRequestDto**| | |
1533
- | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
1534
- | **idempotencyKey** | [**string**] | 멱등성 키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: &#x60;bid-create-{구매번호}&#x60;) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
1533
+ | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
1534
+ | **idempotencyKey** | [**string**] | 멱등키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: &#x60;bid-create-{구매번호}&#x60;). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
1535
1535
 
1536
1536
 
1537
1537
  ### Return type
@@ -1551,23 +1551,23 @@ const { status, data } = await apiInstance.markBidFailed(
1551
1551
  ### HTTP response details
1552
1552
  | Status code | Description | Response headers |
1553
1553
  |-------------|-------------|------------------|
1554
- |**201** | 유찰 처리 완료. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1555
- |**400** | 입력 검증 실패(&#x60;type: …/validation-failed&#x60;), Idempotency-Key 헤더 누락/형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 또는 요청 내용이 유효하지 않음(&#x60;…/upstream-invalid-input&#x60;). | - |
1556
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
1557
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1558
- |**409** | 원 요청이 아직 처리 중인 상태에서 같은 Idempotency-Key 재전송(&#x60;type: …/idempotency-key-conflict&#x60; — 잠시 뒤 같은 키로 재시도하면 결과를 받는다) 또는 현재 상태와 충돌하는 요청(&#x60;…/upstream-conflict&#x60;). | - |
1559
- |**422** | 동일 Idempotency-Key **다른 body** 로 재전송(&#x60;type: …/idempotency-key-reused&#x60;). 재시도해도 동일 실패 — 새 키를 쓰거나 body 를 원래대로 되돌려야 한다. 형식은 맞지만 내용상 처리할 수 없는 요청(&#x60;…/upstream-unprocessable&#x60;) 상태다. | - |
1560
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1561
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1562
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1563
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1554
+ |**201** | 유찰 처리 완료. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1555
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;), &#x60;Idempotency-Key&#x60; 누락·형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 요청 내용 오류(&#x60;…/upstream-invalid-input&#x60;). | - |
1556
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
1557
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1558
+ |**409** | 같은 &#x60;Idempotency-Key&#x60;의 원 요청이 처리 (&#x60;…/idempotency-key-conflict&#x60;), 또는 현재 상태와 충돌(&#x60;…/upstream-conflict&#x60;). 앞의 경우 잠시 후 같은 키로 재시도하면 결과를 받습니다. | - |
1559
+ |**422** | 같은 &#x60;Idempotency-Key&#x60;를 다른 body로 재전송(&#x60;…/idempotency-key-reused&#x60;), 또는 내용상 처리 불가(&#x60;…/upstream-unprocessable&#x60;). 재시도해도 같은 실패이므로 새 키를 쓰거나 body를 되돌립니다. | - |
1560
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1561
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1562
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1563
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1564
1564
 
1565
1565
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
1566
1566
 
1567
1567
  # **registerAward**
1568
1568
  > RegisterAward201Response registerAward(registerAwardRequestDto)
1569
1569
 
1570
- 낙찰 결과를 등록합니다. 요청의 응답은 처리 상태 `AWARDED` 반환합니다. **호출 시점:** 입찰 마감 후 낙찰자가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 낙찰자(공급사)의 응찰 건이 낙찰 처리됩니다. - 이후 **공고의 조회 상태(status)는 계약진행(CONTRACT_IN_PROGRESS)** 으로 진행합니다. `AWARDED` 라는 공고 status 존재하지 않으므로, 낙찰 여부는 `GET /v2/bids/{bidRef}/results` 의 `participants[].isWinner` 또는 `GET /v2/bids/{bidRef}` 의 status(=계약진행)로 관측하세요(`status === \'AWARDED\'` 폴링 금지). - 협상 방식(NEGOTIATION/NEGOTIATION_AUTO) 공고는 이 엔드포인트 전에 `POST /v2/bids/{bidRef}/negotiation-scores`(협상 점수평가)로 평가를 완료해야 합니다. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body 에 buyerId 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 키 + 동일 body 재전송 24시간 캐시 응답 반환.
1570
+ 낙찰 결과를 등록합니다. 스코프 `awards:write` · `Idempotency-Key` 헤더 필수. - 입찰 마감(입찰완료) 상태에서 호출합니다. - 낙찰 공고 상태는 계약진행(`CONTRACT_IN_PROGRESS`)입니다. `AWARDED` 공고 상태는 없으므로 낙찰 여부는 `participants[].isWinner`로 판단합니다. - 협상 방식(`NEGOTIATION`, `NEGOTIATION_AUTO`) 공고는 `POST /v2/bids/{bidRef}/negotiation-scores`로 평가를 마쳐야 호출할 있습니다. - 발주기관은 API 키로 결정됩니다(`buyerId`를 보내지 않습니다). - 같은 키와 같은 body 재전송하면 24시간 동안 캐시된 응답을 돌려줍니다.
1571
1571
 
1572
1572
  ### Example
1573
1573
 
@@ -1581,8 +1581,8 @@ import {
1581
1581
  const configuration = new Configuration();
1582
1582
  const apiInstance = new PartnerApiApi(configuration);
1583
1583
 
1584
- let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
1585
- let idempotencyKey: string; //멱등성 키(1~255자, `[A-Za-z0-9_-]`). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: `bid-create-{구매번호}`) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
1584
+ let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
1585
+ let idempotencyKey: string; //멱등키(1~255자, `[A-Za-z0-9_-]`). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: `bid-create-{구매번호}`). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
1586
1586
  let registerAwardRequestDto: RegisterAwardRequestDto; //
1587
1587
 
1588
1588
  const { status, data } = await apiInstance.registerAward(
@@ -1597,8 +1597,8 @@ const { status, data } = await apiInstance.registerAward(
1597
1597
  |Name | Type | Description | Notes|
1598
1598
  |------------- | ------------- | ------------- | -------------|
1599
1599
  | **registerAwardRequestDto** | **RegisterAwardRequestDto**| | |
1600
- | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
1601
- | **idempotencyKey** | [**string**] | 멱등성 키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: &#x60;bid-create-{구매번호}&#x60;) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
1600
+ | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
1601
+ | **idempotencyKey** | [**string**] | 멱등키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: &#x60;bid-create-{구매번호}&#x60;). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
1602
1602
 
1603
1603
 
1604
1604
  ### Return type
@@ -1618,23 +1618,23 @@ const { status, data } = await apiInstance.registerAward(
1618
1618
  ### HTTP response details
1619
1619
  | Status code | Description | Response headers |
1620
1620
  |-------------|-------------|------------------|
1621
- |**201** | 낙찰 등록 완료. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1622
- |**400** | 입력 검증 실패(&#x60;type: …/validation-failed&#x60;), Idempotency-Key 헤더 누락/형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 또는 요청 내용이 유효하지 않음(&#x60;…/upstream-invalid-input&#x60;). | - |
1623
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
1624
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1625
- |**409** | 원 요청이 아직 처리 중인 상태에서 같은 Idempotency-Key 재전송(&#x60;type: …/idempotency-key-conflict&#x60; — 잠시 뒤 같은 키로 재시도하면 결과를 받는다) 또는 현재 상태와 충돌하는 요청(&#x60;…/upstream-conflict&#x60;). | - |
1626
- |**422** | 동일 Idempotency-Key **다른 body** 로 재전송(&#x60;type: …/idempotency-key-reused&#x60;). 재시도해도 동일 실패 — 새 키를 쓰거나 body 를 원래대로 되돌려야 한다. 형식은 맞지만 내용상 처리할 수 없는 요청(&#x60;…/upstream-unprocessable&#x60;) 상태다. | - |
1627
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1628
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1629
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1630
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1621
+ |**201** | 낙찰 등록 완료. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1622
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;), &#x60;Idempotency-Key&#x60; 누락·형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 요청 내용 오류(&#x60;…/upstream-invalid-input&#x60;). | - |
1623
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
1624
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1625
+ |**409** | 같은 &#x60;Idempotency-Key&#x60;의 원 요청이 처리 (&#x60;…/idempotency-key-conflict&#x60;), 또는 현재 상태와 충돌(&#x60;…/upstream-conflict&#x60;). 앞의 경우 잠시 후 같은 키로 재시도하면 결과를 받습니다. | - |
1626
+ |**422** | 같은 &#x60;Idempotency-Key&#x60;를 다른 body로 재전송(&#x60;…/idempotency-key-reused&#x60;), 또는 내용상 처리 불가(&#x60;…/upstream-unprocessable&#x60;). 재시도해도 같은 실패이므로 새 키를 쓰거나 body를 되돌립니다. | - |
1627
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1628
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1629
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1630
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1631
1631
 
1632
1632
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
1633
1633
 
1634
1634
  # **registerBid**
1635
1635
  > RegisterBid201Response registerBid(createBidRequestDto)
1636
1636
 
1637
- 입찰 정보 등록. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. **첨부는 2단계입니다.** 파일을 요청 본문에 직접 싣지 마세요 먼저 `POST /v2/files`(base64 또는 url)로 올려 `fileKey` 받고, 32자 키를 요청의 `attachments` 배열에 넣습니다.
1637
+ 공고를 등록합니다. 스코프 `bids:write` · `Idempotency-Key` 헤더 필수. 첨부는 방법 하나입니다. - `attachments` 원소에 `{ fileName, url }` 또는 `{ fileName, base64 }`를 그대로 넣습니다. - 여러 공고에서 재사용할 파일은 `POST /v2/files`로 먼저 올려 받은 `fileKey`를 넣습니다.
1638
1638
 
1639
1639
  ### Example
1640
1640
 
@@ -1648,7 +1648,7 @@ import {
1648
1648
  const configuration = new Configuration();
1649
1649
  const apiInstance = new PartnerApiApi(configuration);
1650
1650
 
1651
- let idempotencyKey: string; //멱등성 키(1~255자, `[A-Za-z0-9_-]`). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: `bid-create-{구매번호}`) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
1651
+ let idempotencyKey: string; //멱등키(1~255자, `[A-Za-z0-9_-]`). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: `bid-create-{구매번호}`). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
1652
1652
  let createBidRequestDto: CreateBidRequestDto; //
1653
1653
 
1654
1654
  const { status, data } = await apiInstance.registerBid(
@@ -1662,7 +1662,7 @@ const { status, data } = await apiInstance.registerBid(
1662
1662
  |Name | Type | Description | Notes|
1663
1663
  |------------- | ------------- | ------------- | -------------|
1664
1664
  | **createBidRequestDto** | **CreateBidRequestDto**| | |
1665
- | **idempotencyKey** | [**string**] | 멱등성 키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: &#x60;bid-create-{구매번호}&#x60;) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
1665
+ | **idempotencyKey** | [**string**] | 멱등키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: &#x60;bid-create-{구매번호}&#x60;). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
1666
1666
 
1667
1667
 
1668
1668
  ### Return type
@@ -1682,16 +1682,16 @@ const { status, data } = await apiInstance.registerBid(
1682
1682
  ### HTTP response details
1683
1683
  | Status code | Description | Response headers |
1684
1684
  |-------------|-------------|------------------|
1685
- |**201** | 공고 등록 완료. 발급된 &#x60;bidId&#x60;(c-market 공고번호)와 보낸 &#x60;purchaseNo&#x60; 함께 돌려주므로 이후 조회에 어느 쪽을 써도 됩니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1686
- |**400** | 입력 검증 실패(&#x60;type: …/validation-failed&#x60;), Idempotency-Key 헤더 누락/형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 또는 요청 내용이 유효하지 않음(&#x60;…/upstream-invalid-input&#x60;). | - |
1687
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
1688
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1689
- |**409** | 원 요청이 아직 처리 중인 상태에서 같은 Idempotency-Key 재전송(&#x60;type: …/idempotency-key-conflict&#x60; — 잠시 뒤 같은 키로 재시도하면 결과를 받는다) 또는 현재 상태와 충돌하는 요청(&#x60;…/upstream-conflict&#x60;). | - |
1690
- |**422** | 동일 Idempotency-Key **다른 body** 로 재전송(&#x60;type: …/idempotency-key-reused&#x60;). 재시도해도 동일 실패 — 새 키를 쓰거나 body 를 원래대로 되돌려야 한다. 형식은 맞지만 내용상 처리할 수 없는 요청(&#x60;…/upstream-unprocessable&#x60;) 상태다. | - |
1691
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1692
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1693
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1694
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1685
+ |**201** | 공고 등록 완료. 발급된 &#x60;bidId&#x60;(c-market 공고번호)와 보낸 &#x60;purchaseNo&#x60;를 함께 돌려주므로 이후 조회에 어느 쪽을 써도 됩니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1686
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;), &#x60;Idempotency-Key&#x60; 누락·형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 요청 내용 오류(&#x60;…/upstream-invalid-input&#x60;). | - |
1687
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
1688
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1689
+ |**409** | 같은 &#x60;Idempotency-Key&#x60;의 원 요청이 처리 (&#x60;…/idempotency-key-conflict&#x60;), 또는 현재 상태와 충돌(&#x60;…/upstream-conflict&#x60;). 앞의 경우 잠시 후 같은 키로 재시도하면 결과를 받습니다. | - |
1690
+ |**422** | 같은 &#x60;Idempotency-Key&#x60;를 다른 body로 재전송(&#x60;…/idempotency-key-reused&#x60;), 또는 내용상 처리 불가(&#x60;…/upstream-unprocessable&#x60;). 재시도해도 같은 실패이므로 새 키를 쓰거나 body를 되돌립니다. | - |
1691
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1692
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1693
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1694
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1695
1695
 
1696
1696
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
1697
1697
 
@@ -1712,7 +1712,7 @@ import {
1712
1712
  const configuration = new Configuration();
1713
1713
  const apiInstance = new PartnerApiApi(configuration);
1714
1714
 
1715
- let idempotencyKey: string; //멱등성 키(1~255자, `[A-Za-z0-9_-]`). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: `bid-create-{구매번호}`) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
1715
+ let idempotencyKey: string; //멱등키(1~255자, `[A-Za-z0-9_-]`). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: `bid-create-{구매번호}`). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
1716
1716
  let registerSemoContractRequestDto: RegisterSemoContractRequestDto; //
1717
1717
 
1718
1718
  const { status, data } = await apiInstance.registerSemoContract(
@@ -1726,7 +1726,7 @@ const { status, data } = await apiInstance.registerSemoContract(
1726
1726
  |Name | Type | Description | Notes|
1727
1727
  |------------- | ------------- | ------------- | -------------|
1728
1728
  | **registerSemoContractRequestDto** | **RegisterSemoContractRequestDto**| | |
1729
- | **idempotencyKey** | [**string**] | 멱등성 키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: &#x60;bid-create-{구매번호}&#x60;) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
1729
+ | **idempotencyKey** | [**string**] | 멱등키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: &#x60;bid-create-{구매번호}&#x60;). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
1730
1730
 
1731
1731
 
1732
1732
  ### Return type
@@ -1746,23 +1746,23 @@ const { status, data } = await apiInstance.registerSemoContract(
1746
1746
  ### HTTP response details
1747
1747
  | Status code | Description | Response headers |
1748
1748
  |-------------|-------------|------------------|
1749
- |**200** | 외부 계약 등록 완료. 동결 표면이라 &#x60;{data}&#x60; 봉투를 씌우지 않습니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1750
- |**400** | 입력 검증 실패(&#x60;type: …/validation-failed&#x60;), Idempotency-Key 헤더 누락/형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 또는 요청 내용이 유효하지 않음(&#x60;…/upstream-invalid-input&#x60;). | - |
1751
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
1752
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1753
- |**409** | 원 요청이 아직 처리 중인 상태에서 같은 Idempotency-Key 재전송(&#x60;type: …/idempotency-key-conflict&#x60; — 잠시 뒤 같은 키로 재시도하면 결과를 받는다) 또는 현재 상태와 충돌하는 요청(&#x60;…/upstream-conflict&#x60;). | - |
1754
- |**422** | 동일 Idempotency-Key **다른 body** 로 재전송(&#x60;type: …/idempotency-key-reused&#x60;). 재시도해도 동일 실패 — 새 키를 쓰거나 body 를 원래대로 되돌려야 한다. 형식은 맞지만 내용상 처리할 수 없는 요청(&#x60;…/upstream-unprocessable&#x60;) 상태다. | - |
1755
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1756
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1757
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1758
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1749
+ |**200** | 외부 계약 등록 완료. 동결 표면이라 &#x60;{data}&#x60; 봉투를 씌우지 않습니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1750
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;), &#x60;Idempotency-Key&#x60; 누락·형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 요청 내용 오류(&#x60;…/upstream-invalid-input&#x60;). | - |
1751
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
1752
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1753
+ |**409** | 같은 &#x60;Idempotency-Key&#x60;의 원 요청이 처리 (&#x60;…/idempotency-key-conflict&#x60;), 또는 현재 상태와 충돌(&#x60;…/upstream-conflict&#x60;). 앞의 경우 잠시 후 같은 키로 재시도하면 결과를 받습니다. | - |
1754
+ |**422** | 같은 &#x60;Idempotency-Key&#x60;를 다른 body로 재전송(&#x60;…/idempotency-key-reused&#x60;), 또는 내용상 처리 불가(&#x60;…/upstream-unprocessable&#x60;). 재시도해도 같은 실패이므로 새 키를 쓰거나 body를 되돌립니다. | - |
1755
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1756
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1757
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1758
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1759
1759
 
1760
1760
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
1761
1761
 
1762
1762
  # **requestInvoiceSplit**
1763
1763
  > RequestInvoiceSplit200Response requestInvoiceSplit(requestInvoiceSplitRequestDto)
1764
1764
 
1765
- 한 공고의 계산서를 여러 장으로 나눠 발급해 달라고 청구합니다. 스코프 `invoices:write`. **청구만 접수합니다.** 호출이 계산서를 발행하지는 않습니다 접수된 청구는 정산 파이프라인이 처리하며, 진행 여부는 `GET /v2/bids/{bidRef}` `taxInvoiceRequested` 관측합니다. **나눠 담을 금액을 보냅니다.** `supplyAmount`(공급가액)와 `vat`(부가세)는 이번 장에 실을 금액입니다. 남은 금액을 다시 나누려면 같은 공고에 청구를 한 번 더 보냅니다 — 그때는 **새 `Idempotency-Key`** 쓰세요. 같은 키로 다시 보내면 앞선 청구의 응답이 그대로 재생됩니다. **발급 희망일**(`issueDate`)은 선택이며 미래 일자는 400 입니다. 미지정 시 서버 기본값을 씁니다.
1765
+ 한 공고의 계산서를 여러 장으로 나눠 발급해 달라고 청구합니다. 스코프 `invoices:write` · `Idempotency-Key` 헤더 필수. - 청구만 접수합니다. 발행은 정산 파이프라인이 처리하며 진행 여부는 `GET /v2/bids/{bidRef}`의 `taxInvoiceRequested`로 확인합니다. - `supplyAmount`와 `vat`는 이번 장에 실을 금액입니다. 남은 금액을 다시 나누려면 **새 `Idempotency-Key`**로 청구합니다. 같은 키는 앞선 청구의 응답을 그대로 돌려줍니다. - `issueDate`는 선택이며 미래 일자는 400입니다.
1766
1766
 
1767
1767
  ### Example
1768
1768
 
@@ -1776,8 +1776,8 @@ import {
1776
1776
  const configuration = new Configuration();
1777
1777
  const apiInstance = new PartnerApiApi(configuration);
1778
1778
 
1779
- let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
1780
- let idempotencyKey: string; //멱등성 키(1~255자, `[A-Za-z0-9_-]`). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: `bid-create-{구매번호}`) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
1779
+ let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
1780
+ let idempotencyKey: string; //멱등키(1~255자, `[A-Za-z0-9_-]`). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: `bid-create-{구매번호}`). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
1781
1781
  let requestInvoiceSplitRequestDto: RequestInvoiceSplitRequestDto; //
1782
1782
 
1783
1783
  const { status, data } = await apiInstance.requestInvoiceSplit(
@@ -1792,8 +1792,8 @@ const { status, data } = await apiInstance.requestInvoiceSplit(
1792
1792
  |Name | Type | Description | Notes|
1793
1793
  |------------- | ------------- | ------------- | -------------|
1794
1794
  | **requestInvoiceSplitRequestDto** | **RequestInvoiceSplitRequestDto**| | |
1795
- | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
1796
- | **idempotencyKey** | [**string**] | 멱등성 키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: &#x60;bid-create-{구매번호}&#x60;) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
1795
+ | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
1796
+ | **idempotencyKey** | [**string**] | 멱등키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: &#x60;bid-create-{구매번호}&#x60;). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
1797
1797
 
1798
1798
 
1799
1799
  ### Return type
@@ -1813,16 +1813,16 @@ const { status, data } = await apiInstance.requestInvoiceSplit(
1813
1813
  ### HTTP response details
1814
1814
  | Status code | Description | Response headers |
1815
1815
  |-------------|-------------|------------------|
1816
- |**200** | 청구 접수 결과. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1817
- |**400** | 입력 검증 실패(&#x60;type: …/validation-failed&#x60;), Idempotency-Key 헤더 누락/형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 또는 요청 내용이 유효하지 않음(&#x60;…/upstream-invalid-input&#x60;). | - |
1818
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
1819
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1820
- |**409** | 원 요청이 아직 처리 중인 상태에서 같은 Idempotency-Key 재전송(&#x60;type: …/idempotency-key-conflict&#x60; — 잠시 뒤 같은 키로 재시도하면 결과를 받는다) 또는 현재 상태와 충돌하는 요청(&#x60;…/upstream-conflict&#x60;). | - |
1821
- |**422** | 동일 Idempotency-Key **다른 body** 로 재전송(&#x60;type: …/idempotency-key-reused&#x60;). 재시도해도 동일 실패 — 새 키를 쓰거나 body 를 원래대로 되돌려야 한다. 형식은 맞지만 내용상 처리할 수 없는 요청(&#x60;…/upstream-unprocessable&#x60;) 상태다. | - |
1822
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1823
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1824
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1825
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1816
+ |**200** | 청구 접수 결과. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1817
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;), &#x60;Idempotency-Key&#x60; 누락·형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 요청 내용 오류(&#x60;…/upstream-invalid-input&#x60;). | - |
1818
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
1819
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1820
+ |**409** | 같은 &#x60;Idempotency-Key&#x60;의 원 요청이 처리 (&#x60;…/idempotency-key-conflict&#x60;), 또는 현재 상태와 충돌(&#x60;…/upstream-conflict&#x60;). 앞의 경우 잠시 후 같은 키로 재시도하면 결과를 받습니다. | - |
1821
+ |**422** | 같은 &#x60;Idempotency-Key&#x60;를 다른 body로 재전송(&#x60;…/idempotency-key-reused&#x60;), 또는 내용상 처리 불가(&#x60;…/upstream-unprocessable&#x60;). 재시도해도 같은 실패이므로 새 키를 쓰거나 body를 되돌립니다. | - |
1822
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1823
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1824
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1825
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1826
1826
 
1827
1827
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
1828
1828
 
@@ -1843,8 +1843,8 @@ import {
1843
1843
  const configuration = new Configuration();
1844
1844
  const apiInstance = new PartnerApiApi(configuration);
1845
1845
 
1846
- let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
1847
- let idempotencyKey: string; //멱등성 키(1~255자, `[A-Za-z0-9_-]`). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: `bid-create-{구매번호}`) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
1846
+ let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
1847
+ let idempotencyKey: string; //멱등키(1~255자, `[A-Za-z0-9_-]`). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: `bid-create-{구매번호}`). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
1848
1848
  let revertAwardRequestDto: RevertAwardRequestDto; //
1849
1849
 
1850
1850
  const { status, data } = await apiInstance.revertAward(
@@ -1859,8 +1859,8 @@ const { status, data } = await apiInstance.revertAward(
1859
1859
  |Name | Type | Description | Notes|
1860
1860
  |------------- | ------------- | ------------- | -------------|
1861
1861
  | **revertAwardRequestDto** | **RevertAwardRequestDto**| | |
1862
- | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
1863
- | **idempotencyKey** | [**string**] | 멱등성 키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: &#x60;bid-create-{구매번호}&#x60;) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
1862
+ | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
1863
+ | **idempotencyKey** | [**string**] | 멱등키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: &#x60;bid-create-{구매번호}&#x60;). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
1864
1864
 
1865
1865
 
1866
1866
  ### Return type
@@ -1880,23 +1880,23 @@ const { status, data } = await apiInstance.revertAward(
1880
1880
  ### HTTP response details
1881
1881
  | Status code | Description | Response headers |
1882
1882
  |-------------|-------------|------------------|
1883
- |**200** | 낙찰 되돌리기 완료. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1884
- |**400** | 입력 검증 실패(&#x60;type: …/validation-failed&#x60;), Idempotency-Key 헤더 누락/형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 또는 요청 내용이 유효하지 않음(&#x60;…/upstream-invalid-input&#x60;). | - |
1885
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
1886
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1887
- |**409** | 원 요청이 아직 처리 중인 상태에서 같은 Idempotency-Key 재전송(&#x60;type: …/idempotency-key-conflict&#x60; — 잠시 뒤 같은 키로 재시도하면 결과를 받는다) 또는 현재 상태와 충돌하는 요청(&#x60;…/upstream-conflict&#x60;). | - |
1888
- |**422** | 동일 Idempotency-Key **다른 body** 로 재전송(&#x60;type: …/idempotency-key-reused&#x60;). 재시도해도 동일 실패 — 새 키를 쓰거나 body 를 원래대로 되돌려야 한다. 형식은 맞지만 내용상 처리할 수 없는 요청(&#x60;…/upstream-unprocessable&#x60;) 상태다. | - |
1889
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1890
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1891
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1892
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1883
+ |**200** | 낙찰 되돌리기 완료. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1884
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;), &#x60;Idempotency-Key&#x60; 누락·형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 요청 내용 오류(&#x60;…/upstream-invalid-input&#x60;). | - |
1885
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
1886
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1887
+ |**409** | 같은 &#x60;Idempotency-Key&#x60;의 원 요청이 처리 (&#x60;…/idempotency-key-conflict&#x60;), 또는 현재 상태와 충돌(&#x60;…/upstream-conflict&#x60;). 앞의 경우 잠시 후 같은 키로 재시도하면 결과를 받습니다. | - |
1888
+ |**422** | 같은 &#x60;Idempotency-Key&#x60;를 다른 body로 재전송(&#x60;…/idempotency-key-reused&#x60;), 또는 내용상 처리 불가(&#x60;…/upstream-unprocessable&#x60;). 재시도해도 같은 실패이므로 새 키를 쓰거나 body를 되돌립니다. | - |
1889
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1890
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1891
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1892
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1893
1893
 
1894
1894
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
1895
1895
 
1896
1896
  # **rotateWebhookSecret**
1897
1897
  > CreateWebhookEndpoint201Response rotateWebhookSecret()
1898
1898
 
1899
- 서명 시크릿을 새로 발급합니다. 응답의 `secretVersion` 1 올라갑니다. **호출 시점:** 시크릿을 분실했거나 유출이 의심될 때, 또는 주기적 교체 정책이 있을 때. **새 시크릿은 이 응답에서 한 번만 나갑니다.** 조회로 다시 받을 없습니다. **옛 시크릿은 즉시 무효입니다.** 유예 기간이 없으므로, 수신측이 새 값을 반영하기 전에 도착한 이벤트는 서명 검증에 실패합니다. 배포 순서를 이렇게 잡으세요 — ① 수신측이 옛 값과 새 값을 **둘 다** 받아들이도록 배포 → ② 이 엔드포인트 호출 → ③ 응답의 값을 반영 → ④ 옛 값 제거. 검증 실패로 non-2xx 돌려주면 실패로 집계되어 20회 연속 시 구독이 중지됩니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 같은 키로 재전송하면 **새로 발급하지 않고** 처음 발급한 값을 그대로 돌려줍니다(24시간) — 네트워크 오류로 응답을 놓쳤을 때 같은 키로 다시 부르세요.
1899
+ 서명 시크릿을 새로 발급합니다. 스코프 `webhooks:write` · `Idempotency-Key` 헤더 필수. - 시크릿은 이 응답에서 한 번만 나가고 `secretVersion`이 1 올라갑니다. - **옛 시크릿은 즉시 무효입니다.** 유예가 없으므로 순서를 지키세요 — ① 수신측이 옛 값과 새 값을 모두 받아들이도록 배포 → ② 이 호출 → ③ 새 반영 → ④ 옛 값 제거. - 같은 `Idempotency-Key`로 다시 부르면 새로 발급하지 않고 처음 발급한 값을 돌려줍니다(24시간).
1900
1900
 
1901
1901
  ### Example
1902
1902
 
@@ -1910,7 +1910,7 @@ const configuration = new Configuration();
1910
1910
  const apiInstance = new PartnerApiApi(configuration);
1911
1911
 
1912
1912
  let endpointId: string; //구독 식별자(등록 응답의 `endpointId`). (default to undefined)
1913
- let idempotencyKey: string; //멱등성 키(1~255자, `[A-Za-z0-9_-]`). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: `bid-create-{구매번호}`) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
1913
+ let idempotencyKey: string; //멱등키(1~255자, `[A-Za-z0-9_-]`). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: `bid-create-{구매번호}`). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
1914
1914
 
1915
1915
  const { status, data } = await apiInstance.rotateWebhookSecret(
1916
1916
  endpointId,
@@ -1923,7 +1923,7 @@ const { status, data } = await apiInstance.rotateWebhookSecret(
1923
1923
  |Name | Type | Description | Notes|
1924
1924
  |------------- | ------------- | ------------- | -------------|
1925
1925
  | **endpointId** | [**string**] | 구독 식별자(등록 응답의 &#x60;endpointId&#x60;). | defaults to undefined|
1926
- | **idempotencyKey** | [**string**] | 멱등성 키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: &#x60;bid-create-{구매번호}&#x60;) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
1926
+ | **idempotencyKey** | [**string**] | 멱등키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: &#x60;bid-create-{구매번호}&#x60;). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
1927
1927
 
1928
1928
 
1929
1929
  ### Return type
@@ -1943,23 +1943,23 @@ const { status, data } = await apiInstance.rotateWebhookSecret(
1943
1943
  ### HTTP response details
1944
1944
  | Status code | Description | Response headers |
1945
1945
  |-------------|-------------|------------------|
1946
- |**200** | 시크릿 재발급 완료. &#x60;secret&#x60; 이 응답에만 실립니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1947
- |**400** | 입력 검증 실패(&#x60;type: …/validation-failed&#x60;), Idempotency-Key 헤더 누락/형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 또는 요청 내용이 유효하지 않음(&#x60;…/upstream-invalid-input&#x60;). | - |
1948
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
1949
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1950
- |**409** | 원 요청이 아직 처리 중인 상태에서 같은 Idempotency-Key 재전송(&#x60;type: …/idempotency-key-conflict&#x60; — 잠시 뒤 같은 키로 재시도하면 결과를 받는다) 또는 현재 상태와 충돌하는 요청(&#x60;…/upstream-conflict&#x60;). | - |
1951
- |**422** | 동일 Idempotency-Key **다른 body** 로 재전송(&#x60;type: …/idempotency-key-reused&#x60;). 재시도해도 동일 실패 — 새 키를 쓰거나 body 를 원래대로 되돌려야 한다. 형식은 맞지만 내용상 처리할 수 없는 요청(&#x60;…/upstream-unprocessable&#x60;) 상태다. | - |
1952
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1953
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1954
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1955
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1946
+ |**200** | 시크릿 재발급 완료. &#x60;secret&#x60;은 이 응답에만 실립니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1947
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;), &#x60;Idempotency-Key&#x60; 누락·형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 요청 내용 오류(&#x60;…/upstream-invalid-input&#x60;). | - |
1948
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
1949
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
1950
+ |**409** | 같은 &#x60;Idempotency-Key&#x60;의 원 요청이 처리 (&#x60;…/idempotency-key-conflict&#x60;), 또는 현재 상태와 충돌(&#x60;…/upstream-conflict&#x60;). 앞의 경우 잠시 후 같은 키로 재시도하면 결과를 받습니다. | - |
1951
+ |**422** | 같은 &#x60;Idempotency-Key&#x60;를 다른 body로 재전송(&#x60;…/idempotency-key-reused&#x60;), 또는 내용상 처리 불가(&#x60;…/upstream-unprocessable&#x60;). 재시도해도 같은 실패이므로 새 키를 쓰거나 body를 되돌립니다. | - |
1952
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
1953
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
1954
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
1955
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
1956
1956
 
1957
1957
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
1958
1958
 
1959
1959
  # **sendWebhookTestEvent**
1960
1960
  > SendWebhookTestEvent200Response sendWebhookTestEvent()
1961
1961
 
1962
- 등록된 주소로 `ping` 이벤트를 즉시 1회 보내고 결과를 돌려줍니다. **호출 시점:** 구독을 등록한 직후, 수신 주소를 바꾼 직후, 방화벽·인증서를 손본 뒤. **응답은 발송 결과이지 요청 실패가 아닙니다.** 수신측이 받지 못해도 HTTP `200` `delivered: false` 옵니다 — `responseStatus`(수신측 상태)와 `error`(연결 거부·타임아웃· TLS 오류)를 보고 원인을 좁히세요. 이 발송에도 실제 이벤트와 **똑같은 서명 헤더**가 실리므로 검증 코드를 그대로 시험할 수 있습니다. `ping` 구독 목록에 넣을 수 없는 타입이니, 수신측이 모르는 `eventType` 을 만나면 버리도록 짜여 있다면 이 확인만 실패할 수 있습니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 다시 보내려면 **새 키**를 쓰세요 — 같은 키는 24시간 동안 직전 결과를 그대로 돌려줍니다(재발송하지 않습니다).
1962
+ 등록된 주소로 `ping` 이벤트를 1회 보내고 결과를 돌려줍니다. 스코프 `webhooks:write` · `Idempotency-Key` 헤더 필수. - 수신측이 받지 못해도 응답은 200이고 `delivered: false`입니다. 원인은 `responseStatus`와 `error`로 좁힙니다. - 실제 이벤트와 같은 서명 헤더가 실리므로 검증 코드를 그대로 시험할 수 있습니다. - 다시 보내려면 `Idempotency-Key`를 쓰세요. 같은 키는 24시간 동안 직전 결과를 돌려줍니다.
1963
1963
 
1964
1964
  ### Example
1965
1965
 
@@ -1973,7 +1973,7 @@ const configuration = new Configuration();
1973
1973
  const apiInstance = new PartnerApiApi(configuration);
1974
1974
 
1975
1975
  let endpointId: string; //구독 식별자(등록 응답의 `endpointId`). (default to undefined)
1976
- let idempotencyKey: string; //멱등성 키(1~255자, `[A-Za-z0-9_-]`). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: `bid-create-{구매번호}`) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
1976
+ let idempotencyKey: string; //멱등키(1~255자, `[A-Za-z0-9_-]`). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: `bid-create-{구매번호}`). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
1977
1977
 
1978
1978
  const { status, data } = await apiInstance.sendWebhookTestEvent(
1979
1979
  endpointId,
@@ -1986,7 +1986,7 @@ const { status, data } = await apiInstance.sendWebhookTestEvent(
1986
1986
  |Name | Type | Description | Notes|
1987
1987
  |------------- | ------------- | ------------- | -------------|
1988
1988
  | **endpointId** | [**string**] | 구독 식별자(등록 응답의 &#x60;endpointId&#x60;). | defaults to undefined|
1989
- | **idempotencyKey** | [**string**] | 멱등성 키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: &#x60;bid-create-{구매번호}&#x60;) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
1989
+ | **idempotencyKey** | [**string**] | 멱등키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: &#x60;bid-create-{구매번호}&#x60;). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
1990
1990
 
1991
1991
 
1992
1992
  ### Return type
@@ -2006,23 +2006,23 @@ const { status, data } = await apiInstance.sendWebhookTestEvent(
2006
2006
  ### HTTP response details
2007
2007
  | Status code | Description | Response headers |
2008
2008
  |-------------|-------------|------------------|
2009
- |**200** | 연결 확인 발송 결과. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
2010
- |**400** | 입력 검증 실패(&#x60;type: …/validation-failed&#x60;), Idempotency-Key 헤더 누락/형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 또는 요청 내용이 유효하지 않음(&#x60;…/upstream-invalid-input&#x60;). | - |
2011
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
2012
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
2013
- |**409** | 원 요청이 아직 처리 중인 상태에서 같은 Idempotency-Key 재전송(&#x60;type: …/idempotency-key-conflict&#x60; — 잠시 뒤 같은 키로 재시도하면 결과를 받는다) 또는 현재 상태와 충돌하는 요청(&#x60;…/upstream-conflict&#x60;). | - |
2014
- |**422** | 동일 Idempotency-Key **다른 body** 로 재전송(&#x60;type: …/idempotency-key-reused&#x60;). 재시도해도 동일 실패 — 새 키를 쓰거나 body 를 원래대로 되돌려야 한다. 형식은 맞지만 내용상 처리할 수 없는 요청(&#x60;…/upstream-unprocessable&#x60;) 상태다. | - |
2015
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
2016
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
2017
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
2018
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
2009
+ |**200** | 연결 확인 발송 결과. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
2010
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;), &#x60;Idempotency-Key&#x60; 누락·형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 요청 내용 오류(&#x60;…/upstream-invalid-input&#x60;). | - |
2011
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
2012
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
2013
+ |**409** | 같은 &#x60;Idempotency-Key&#x60;의 원 요청이 처리 (&#x60;…/idempotency-key-conflict&#x60;), 또는 현재 상태와 충돌(&#x60;…/upstream-conflict&#x60;). 앞의 경우 잠시 후 같은 키로 재시도하면 결과를 받습니다. | - |
2014
+ |**422** | 같은 &#x60;Idempotency-Key&#x60;를 다른 body로 재전송(&#x60;…/idempotency-key-reused&#x60;), 또는 내용상 처리 불가(&#x60;…/upstream-unprocessable&#x60;). 재시도해도 같은 실패이므로 새 키를 쓰거나 body를 되돌립니다. | - |
2015
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
2016
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
2017
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
2018
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
2019
2019
 
2020
2020
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
2021
2021
 
2022
2022
  # **submitNegotiationScores**
2023
2023
  > SubmitNegotiationScores201Response submitNegotiationScores(submitNegotiationScoresRequestDto)
2024
2024
 
2025
- 협상방식(NEGOTIATION/NEGOTIATION_AUTO) 공고의 응찰자별 점수를 입력합니다. **호출 시점:** 입찰 마감 후 낙찰(`POST /v2/bids/{bidRef}/award`) 전. 협상방식 공고는 이 평가를 완료해야 낙찰에 진입할 수 있습니다. **부수효과:** - 응찰자별 기술점수(및 선택적 가격점수 override)가 기록됩니다. - `complete=true` 평가완료 게이트까지 적용돼 낙찰 진입이 가능해집니다. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body 에 buyerId 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수. 동일 키 + 동일 body 재전송 시 24시간 내 캐시 응답 반환.
2025
+ 협상 방식(`NEGOTIATION`, `NEGOTIATION_AUTO`) 공고의 응찰자별 점수를 입력합니다. 스코프 `awards:write` · `Idempotency-Key` 헤더 필수. - 입찰 마감 후 낙찰(`POST /v2/bids/{bidRef}/award`) 전에 호출합니다. 협상 방식 공고는 이 평가를 마쳐야 낙찰에 진입합니다. - `complete=true`면 평가완료로 처리되어 낙찰을 호출할 있습니다. - 발주기관은 API 키로 결정됩니다(`buyerId`를 보내지 않습니다).
2026
2026
 
2027
2027
  ### Example
2028
2028
 
@@ -2036,8 +2036,8 @@ import {
2036
2036
  const configuration = new Configuration();
2037
2037
  const apiInstance = new PartnerApiApi(configuration);
2038
2038
 
2039
- let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
2040
- let idempotencyKey: string; //멱등성 키(1~255자, `[A-Za-z0-9_-]`). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: `bid-create-{구매번호}`) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
2039
+ let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
2040
+ let idempotencyKey: string; //멱등키(1~255자, `[A-Za-z0-9_-]`). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: `bid-create-{구매번호}`). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
2041
2041
  let submitNegotiationScoresRequestDto: SubmitNegotiationScoresRequestDto; //
2042
2042
 
2043
2043
  const { status, data } = await apiInstance.submitNegotiationScores(
@@ -2052,8 +2052,8 @@ const { status, data } = await apiInstance.submitNegotiationScores(
2052
2052
  |Name | Type | Description | Notes|
2053
2053
  |------------- | ------------- | ------------- | -------------|
2054
2054
  | **submitNegotiationScoresRequestDto** | **SubmitNegotiationScoresRequestDto**| | |
2055
- | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
2056
- | **idempotencyKey** | [**string**] | 멱등성 키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: &#x60;bid-create-{구매번호}&#x60;) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
2055
+ | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
2056
+ | **idempotencyKey** | [**string**] | 멱등키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: &#x60;bid-create-{구매번호}&#x60;). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
2057
2057
 
2058
2058
 
2059
2059
  ### Return type
@@ -2073,23 +2073,23 @@ const { status, data } = await apiInstance.submitNegotiationScores(
2073
2073
  ### HTTP response details
2074
2074
  | Status code | Description | Response headers |
2075
2075
  |-------------|-------------|------------------|
2076
- |**201** | 협상 점수평가 완료. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
2077
- |**400** | 입력 검증 실패(&#x60;type: …/validation-failed&#x60;), Idempotency-Key 헤더 누락/형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 또는 요청 내용이 유효하지 않음(&#x60;…/upstream-invalid-input&#x60;). | - |
2078
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
2079
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
2080
- |**409** | 원 요청이 아직 처리 중인 상태에서 같은 Idempotency-Key 재전송(&#x60;type: …/idempotency-key-conflict&#x60; — 잠시 뒤 같은 키로 재시도하면 결과를 받는다) 또는 현재 상태와 충돌하는 요청(&#x60;…/upstream-conflict&#x60;). | - |
2081
- |**422** | 동일 Idempotency-Key **다른 body** 로 재전송(&#x60;type: …/idempotency-key-reused&#x60;). 재시도해도 동일 실패 — 새 키를 쓰거나 body 를 원래대로 되돌려야 한다. 형식은 맞지만 내용상 처리할 수 없는 요청(&#x60;…/upstream-unprocessable&#x60;) 상태다. | - |
2082
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
2083
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
2084
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
2085
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
2076
+ |**201** | 협상 점수평가 완료. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
2077
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;), &#x60;Idempotency-Key&#x60; 누락·형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 요청 내용 오류(&#x60;…/upstream-invalid-input&#x60;). | - |
2078
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
2079
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
2080
+ |**409** | 같은 &#x60;Idempotency-Key&#x60;의 원 요청이 처리 (&#x60;…/idempotency-key-conflict&#x60;), 또는 현재 상태와 충돌(&#x60;…/upstream-conflict&#x60;). 앞의 경우 잠시 후 같은 키로 재시도하면 결과를 받습니다. | - |
2081
+ |**422** | 같은 &#x60;Idempotency-Key&#x60;를 다른 body로 재전송(&#x60;…/idempotency-key-reused&#x60;), 또는 내용상 처리 불가(&#x60;…/upstream-unprocessable&#x60;). 재시도해도 같은 실패이므로 새 키를 쓰거나 body를 되돌립니다. | - |
2082
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
2083
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
2084
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
2085
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
2086
2086
 
2087
2087
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
2088
2088
 
2089
2089
  # **updateBid**
2090
2090
  > UpdateBid200Response updateBid(updateBidRequestDto)
2091
2091
 
2092
- 등록된 공고의 내용을 수정합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. 진행중/초안 상태의 공고만 수정할 수 있습니다. **부수효과:** - 변경 내용이 반영되고 수정이력이 기록됩니다. - `hideEditHistory=true` 면 변경이력을 비공개 처리하고 노출 카운터 증가를 생략합니다. **수정 제약:** - 낙찰방법(awardMethod)은 수정 불가(잠금). - 참여자가 있으면 입찰방식/면허/예산/품목 일부가 잠깁니다. - 마감/취소된 공고는 수정할 수 없습니다. 한 섹션을 수정하려면 해당 섹션의 필수 필드를 함께 보내야 합니다(부분 섹션은 거부됨).
2092
+ 등록된 공고의 내용을 수정합니다. 스코프 `bids:write` · `Idempotency-Key` 헤더 필수. - 진행중·초안 상태만 수정할 수 있습니다. 마감·취소된 공고는 거부됩니다. - 낙찰방법(`awardMethod`)은 수정할 없고, 참여자가 있으면 입찰방식·면허·예산·품목 일부가 잠깁니다. - 한 섹션을 수정하려면 섹션의 필수 필드를 함께 보냅니다. - `hideEditHistory=true`면 변경이력을 비공개로 남기고 노출 카운터를 올리지 않습니다.
2093
2093
 
2094
2094
  ### Example
2095
2095
 
@@ -2103,9 +2103,9 @@ import {
2103
2103
  const configuration = new Configuration();
2104
2104
  const apiInstance = new PartnerApiApi(configuration);
2105
2105
 
2106
- let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
2107
- let ifMatch: string; //수정하려는 공고의 ETag(필수). 직전 `GET /v2/bids/{bidRef}` 응답의 `ETag` 헤더 값을 그대로 실어 보내세요. 누락하면 428, 그 사이 공고가 바뀌었으면 412 로 거절되며 아무것도 수정되지 않습니다. (default to undefined)
2108
- let idempotencyKey: string; //멱등성 키(1~255자, `[A-Za-z0-9_-]`). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: `bid-create-{구매번호}`) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
2106
+ let bidRef: string; //발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. (default to undefined)
2107
+ let ifMatch: string; //수정하려는 공고의 ETag(필수). 직전 `GET /v2/bids/{bidRef}` 응답의 `ETag` 헤더 값을 그대로 실어 보내세요. 누락하면 428, 그 사이 공고가 바뀌었으면 412로 거절되며 아무것도 수정되지 않습니다. (default to undefined)
2108
+ let idempotencyKey: string; //멱등키(1~255자, `[A-Za-z0-9_-]`). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: `bid-create-{구매번호}`). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
2109
2109
  let updateBidRequestDto: UpdateBidRequestDto; //
2110
2110
 
2111
2111
  const { status, data } = await apiInstance.updateBid(
@@ -2121,9 +2121,9 @@ const { status, data } = await apiInstance.updateBid(
2121
2121
  |Name | Type | Description | Notes|
2122
2122
  |------------- | ------------- | ------------- | -------------|
2123
2123
  | **updateBidRequestDto** | **UpdateBidRequestDto**| | |
2124
- | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
2125
- | **ifMatch** | [**string**] | 수정하려는 공고의 ETag(필수). 직전 &#x60;GET /v2/bids/{bidRef}&#x60; 응답의 &#x60;ETag&#x60; 헤더 값을 그대로 실어 보내세요. 누락하면 428, 그 사이 공고가 바뀌었으면 412 로 거절되며 아무것도 수정되지 않습니다. | defaults to undefined|
2126
- | **idempotencyKey** | [**string**] | 멱등성 키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: &#x60;bid-create-{구매번호}&#x60;) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
2124
+ | **bidRef** | [**string**] | 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 연결된 발주기관 범위에서 최신 라운드 공고로 해소됩니다. | defaults to undefined|
2125
+ | **ifMatch** | [**string**] | 수정하려는 공고의 ETag(필수). 직전 &#x60;GET /v2/bids/{bidRef}&#x60; 응답의 &#x60;ETag&#x60; 헤더 값을 그대로 실어 보내세요. 누락하면 428, 그 사이 공고가 바뀌었으면 412로 거절되며 아무것도 수정되지 않습니다. | defaults to undefined|
2126
+ | **idempotencyKey** | [**string**] | 멱등키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: &#x60;bid-create-{구매번호}&#x60;). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
2127
2127
 
2128
2128
 
2129
2129
  ### Return type
@@ -2143,25 +2143,25 @@ const { status, data } = await apiInstance.updateBid(
2143
2143
  ### HTTP response details
2144
2144
  | Status code | Description | Response headers |
2145
2145
  |-------------|-------------|------------------|
2146
- |**200** | 공고 수정 완료. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
2147
- |**400** | 입력 검증 실패(&#x60;type: …/validation-failed&#x60;), Idempotency-Key 헤더 누락/형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 또는 요청 내용이 유효하지 않음(&#x60;…/upstream-invalid-input&#x60;). | - |
2148
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
2149
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
2150
- |**409** | 원 요청이 아직 처리 중인 상태에서 같은 Idempotency-Key 재전송(&#x60;type: …/idempotency-key-conflict&#x60; — 잠시 뒤 같은 키로 재시도하면 결과를 받는다) 또는 현재 상태와 충돌하는 요청(&#x60;…/upstream-conflict&#x60;). | - |
2151
- |**412** | &#x60;If-Match&#x60; 지문이 현재 리소스와 다릅니다(&#x60;type: …/precondition-failed&#x60;). 그 사이 다른 요청이 리소스를 바꿨습니다 — 다시 조회해 최신 ETag 재시도하세요. | - |
2152
- |**422** | 동일 Idempotency-Key **다른 body** 로 재전송(&#x60;type: …/idempotency-key-reused&#x60;). 재시도해도 동일 실패 — 새 키를 쓰거나 body 를 원래대로 되돌려야 한다. 형식은 맞지만 내용상 처리할 수 없는 요청(&#x60;…/upstream-unprocessable&#x60;) 상태다. | - |
2153
- |**428** | &#x60;If-Match&#x60; 헤더가 없습니다(&#x60;type: …/if-match-required&#x60;). 잃어버린 갱신을 막기 위해 필수입니다. | - |
2154
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
2155
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
2156
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
2157
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
2146
+ |**200** | 공고 수정 완료. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
2147
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;), &#x60;Idempotency-Key&#x60; 누락·형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 요청 내용 오류(&#x60;…/upstream-invalid-input&#x60;). | - |
2148
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
2149
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
2150
+ |**409** | 같은 &#x60;Idempotency-Key&#x60;의 원 요청이 처리 (&#x60;…/idempotency-key-conflict&#x60;), 또는 현재 상태와 충돌(&#x60;…/upstream-conflict&#x60;). 앞의 경우 잠시 후 같은 키로 재시도하면 결과를 받습니다. | - |
2151
+ |**412** | &#x60;If-Match&#x60; 값이 현재 리소스와 다름(&#x60;…/precondition-failed&#x60;). 다시 조회해 최신 &#x60;ETag&#x60;로 재시도합니다. | - |
2152
+ |**422** | 같은 &#x60;Idempotency-Key&#x60;를 다른 body로 재전송(&#x60;…/idempotency-key-reused&#x60;), 또는 내용상 처리 불가(&#x60;…/upstream-unprocessable&#x60;). 재시도해도 같은 실패이므로 새 키를 쓰거나 body를 되돌립니다. | - |
2153
+ |**428** | &#x60;If-Match&#x60; 헤더 누락(&#x60;…/if-match-required&#x60;). | - |
2154
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
2155
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
2156
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
2157
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
2158
2158
 
2159
2159
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
2160
2160
 
2161
2161
  # **updateWebhookEndpoint**
2162
2162
  > GetWebhookEndpoint200Response updateWebhookEndpoint(updateWebhookEndpointRequestDto)
2163
2163
 
2164
- 수신 주소·구독 이벤트·상태를 수정합니다. 보낸 필드만 바뀝니다. **호출 시점:** 수신 주소가 바뀌었을 때, 구독 이벤트를 늘리거나 줄일 때, 연속 실패로 자동 중지된 구독을 고친 뒤 되살릴 때(`{\"status\":\"ACTIVE\"}`). **`eventTypes` 치환입니다** — 보낸 목록이 곧 새 구독 목록입니다. 하나를 더하려면 기존 목록에 더한 **전체**를 보내세요. **`If-Match` 필수입니다.** 먼저 `GET /v2/webhook-endpoints/{endpointId}` 로 현재 `ETag` 를 받아 그대로 실어 보내세요. 헤더가 없으면 요청이 앞서거니 뒤서거니 하며 먼저 한 수정을 조용히 덮어씁니다. - `428` 헤더를 빼먹었습니다. 조회 `ETag` 실어 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다. 다시 조회해 최신 `ETag` 로 재시도하세요. 아무것도 수정되지 않았습니다. **시크릿은 이 경로로 바뀌지 않습니다** 재발급은 `rotate-secret` 입니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
2164
+ 수신 주소·구독 이벤트·상태를 수정합니다. 보낸 필드만 바뀝니다. 스코프 `webhooks:write` · `Idempotency-Key` 헤더 필수. - `eventTypes`는 치환입니다. 하나를 더하려면 기존 목록을 포함한 전체를 보냅니다. - `If-Match`가 필수입니다. `GET`으로 받은 `ETag`를 그대로 실으세요. 누락은 428, 사이 구독이 바뀌었으면 412이며 아무것도 수정되지 않습니다. - 연속 실패로 자동 중지된 구독은 `{\"status\":\"ACTIVE\"}`로 되살립니다. - 시크릿은 이 경로로 바뀌지 않습니다. 재발급은 `rotate-secret`입니다.
2165
2165
 
2166
2166
  ### Example
2167
2167
 
@@ -2176,8 +2176,8 @@ const configuration = new Configuration();
2176
2176
  const apiInstance = new PartnerApiApi(configuration);
2177
2177
 
2178
2178
  let endpointId: string; //구독 식별자(등록 응답의 `endpointId`). (default to undefined)
2179
- let ifMatch: string; //직전 조회 응답의 `ETag` 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다. (default to undefined)
2180
- let idempotencyKey: string; //멱등성 키(1~255자, `[A-Za-z0-9_-]`). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: `bid-create-{구매번호}`) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
2179
+ let ifMatch: string; //직전 조회 응답의 `ETag` 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412로 거절되며 아무것도 변경되지 않습니다. (default to undefined)
2180
+ let idempotencyKey: string; //멱등키(1~255자, `[A-Za-z0-9_-]`). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: `bid-create-{구매번호}`). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
2181
2181
  let updateWebhookEndpointRequestDto: UpdateWebhookEndpointRequestDto; //
2182
2182
 
2183
2183
  const { status, data } = await apiInstance.updateWebhookEndpoint(
@@ -2194,8 +2194,8 @@ const { status, data } = await apiInstance.updateWebhookEndpoint(
2194
2194
  |------------- | ------------- | ------------- | -------------|
2195
2195
  | **updateWebhookEndpointRequestDto** | **UpdateWebhookEndpointRequestDto**| | |
2196
2196
  | **endpointId** | [**string**] | 구독 식별자(등록 응답의 &#x60;endpointId&#x60;). | defaults to undefined|
2197
- | **ifMatch** | [**string**] | 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다. | defaults to undefined|
2198
- | **idempotencyKey** | [**string**] | 멱등성 키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: &#x60;bid-create-{구매번호}&#x60;) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
2197
+ | **ifMatch** | [**string**] | 직전 조회 응답의 &#x60;ETag&#x60; 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412로 거절되며 아무것도 변경되지 않습니다. | defaults to undefined|
2198
+ | **idempotencyKey** | [**string**] | 멱등키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: &#x60;bid-create-{구매번호}&#x60;). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
2199
2199
 
2200
2200
 
2201
2201
  ### Return type
@@ -2215,25 +2215,25 @@ const { status, data } = await apiInstance.updateWebhookEndpoint(
2215
2215
  ### HTTP response details
2216
2216
  | Status code | Description | Response headers |
2217
2217
  |-------------|-------------|------------------|
2218
- |**200** | 수정된 웹훅 구독. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
2219
- |**400** | 입력 검증 실패(&#x60;type: …/validation-failed&#x60;), Idempotency-Key 헤더 누락/형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 또는 요청 내용이 유효하지 않음(&#x60;…/upstream-invalid-input&#x60;). | - |
2220
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
2221
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
2222
- |**409** | 원 요청이 아직 처리 중인 상태에서 같은 Idempotency-Key 재전송(&#x60;type: …/idempotency-key-conflict&#x60; — 잠시 뒤 같은 키로 재시도하면 결과를 받는다) 또는 현재 상태와 충돌하는 요청(&#x60;…/upstream-conflict&#x60;). | - |
2223
- |**412** | &#x60;If-Match&#x60; 지문이 현재 리소스와 다릅니다(&#x60;type: …/precondition-failed&#x60;). 그 사이 다른 요청이 리소스를 바꿨습니다 — 다시 조회해 최신 ETag 재시도하세요. | - |
2224
- |**422** | 동일 Idempotency-Key **다른 body** 로 재전송(&#x60;type: …/idempotency-key-reused&#x60;). 재시도해도 동일 실패 — 새 키를 쓰거나 body 를 원래대로 되돌려야 한다. 형식은 맞지만 내용상 처리할 수 없는 요청(&#x60;…/upstream-unprocessable&#x60;) 상태다. | - |
2225
- |**428** | &#x60;If-Match&#x60; 헤더가 없습니다(&#x60;type: …/if-match-required&#x60;). 잃어버린 갱신을 막기 위해 필수입니다. | - |
2226
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
2227
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
2228
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
2229
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
2218
+ |**200** | 수정된 웹훅 구독. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
2219
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;), &#x60;Idempotency-Key&#x60; 누락·형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 요청 내용 오류(&#x60;…/upstream-invalid-input&#x60;). | - |
2220
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
2221
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
2222
+ |**409** | 같은 &#x60;Idempotency-Key&#x60;의 원 요청이 처리 (&#x60;…/idempotency-key-conflict&#x60;), 또는 현재 상태와 충돌(&#x60;…/upstream-conflict&#x60;). 앞의 경우 잠시 후 같은 키로 재시도하면 결과를 받습니다. | - |
2223
+ |**412** | &#x60;If-Match&#x60; 값이 현재 리소스와 다름(&#x60;…/precondition-failed&#x60;). 다시 조회해 최신 &#x60;ETag&#x60;로 재시도합니다. | - |
2224
+ |**422** | 같은 &#x60;Idempotency-Key&#x60;를 다른 body로 재전송(&#x60;…/idempotency-key-reused&#x60;), 또는 내용상 처리 불가(&#x60;…/upstream-unprocessable&#x60;). 재시도해도 같은 실패이므로 새 키를 쓰거나 body를 되돌립니다. | - |
2225
+ |**428** | &#x60;If-Match&#x60; 헤더 누락(&#x60;…/if-match-required&#x60;). | - |
2226
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
2227
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
2228
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
2229
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
2230
2230
 
2231
2231
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
2232
2232
 
2233
2233
  # **uploadFile**
2234
2234
  > UploadFile201Response uploadFile(uploadFileRequestDto)
2235
2235
 
2236
- **첨부 업로드의 기본 경로입니다. 23MB 이하면 호출 하나로 끝납니다.** 파일 본문을 `base64` 또는 `url` 중 정확히 하나로 제출하면 `fileKey` 를 돌려줍니다. 이 값을 공고 등록·수정의 첨부 필드에 실으세요. **23MB 를 넘으면 경로를 바꿔야 합니다.** 상한이 셋으로 갈립니다. | 제출 방식 | 상한 | 호출 수 | | --- | --- | --- | | 이 호출 + `base64` | **23MB** (본문이 c-market 을 통과하며 base64 팽창 4/3 이 얹힘) | 1 | | 이 호출 + `url` | **30MB** (c-market 이 대신 내려받아 팽창은 없지만 서버 경유 천장은 그대로) | 1 | | `POST /v2/files/upload-url` 로 시작하는 2단계 | **100MB** (바이트가 c-market 을 지나지 않음) | 2 + 스토리지 PUT | c-market 내려받을 있는 https 주소에 파일을 올려 둘 수 있다면 `url` 이 30MB 까지를 1콜로 덮습니다. 그 이상이거나 주소를 열 수 없으면 2단계 경로를 쓰세요. **공고 등록에 파일을 함께 실을 수도 있습니다.** `POST /v2/bids` `attachments` 원소에 `{ fileName, url }`·`{ fileName, base64 }` 그대로 넣으면 호출 없이 번에 끝납니다. 여러 공고에 같은 파일을 재사용하거나 큰 파일을 다룰 때만 `fileKey` 를 먼저 만드세요. **필수 스코프:** `files:write` **멱등성:** `Idempotency-Key` 헤더 필수.
2236
+ 공고 첨부파일을 올리고 `fileKey`를 받습니다. 스코프 `files:write` · `Idempotency-Key` 헤더 필수. `base64`와 `url` 중 하나만 보냅니다. 받은 `fileKey`는 공고 등록·수정의 `attachments`에 넣습니다. | 제출 방식 | 상한 | 호출 수 | | --- | --- | --- | | 이 호출 + `base64` | 23MB | 1 | | 이 호출 + `url` | 30MB | 1 | | `POST /v2/files/upload-url` 2단계 | 100MB | 2 + 스토리지 PUT | 공고에만 쓰는 파일이면 `POST /v2/bids`의 `attachments`에 `url`·`base64`를 직접 넣어호출을 생략할 있습니다.
2237
2237
 
2238
2238
  ### Example
2239
2239
 
@@ -2247,7 +2247,7 @@ import {
2247
2247
  const configuration = new Configuration();
2248
2248
  const apiInstance = new PartnerApiApi(configuration);
2249
2249
 
2250
- let idempotencyKey: string; //멱등성 키(1~255자, `[A-Za-z0-9_-]`). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: `bid-create-{구매번호}`) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
2250
+ let idempotencyKey: string; //멱등키(1~255자, `[A-Za-z0-9_-]`). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: `bid-create-{구매번호}`). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. (default to undefined)
2251
2251
  let uploadFileRequestDto: UploadFileRequestDto; //
2252
2252
 
2253
2253
  const { status, data } = await apiInstance.uploadFile(
@@ -2261,7 +2261,7 @@ const { status, data } = await apiInstance.uploadFile(
2261
2261
  |Name | Type | Description | Notes|
2262
2262
  |------------- | ------------- | ------------- | -------------|
2263
2263
  | **uploadFileRequestDto** | **UploadFileRequestDto**| | |
2264
- | **idempotencyKey** | [**string**] | 멱등성 키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 처음과 같은 키를 다시 보내야** 중복 생성이 막힙니다 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청으로 처리됩니다. 그래서 키는 UUID v4 를 만들어 **연동 시스템 원장에 저장**하거나, 요청 내용에서 결정적으로 파생(예: &#x60;bid-create-{구매번호}&#x60;) 재시도가 같은 값을 재현하도록 하세요. 같은 키 + 같은 body 는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
2264
+ | **idempotencyKey** | [**string**] | 멱등키(1~255자, &#x60;[A-Za-z0-9_-]&#x60;). **재시도할 때는 처음과 같은 키를 보내야** 중복 생성이 막힙니다. 타임아웃·네트워크 오류로 다시 부르면서 새 키를 만들면 별개 요청이 됩니다. UUID v4를 만들어 연동 시스템에 저장하거나, 요청 내용에서 결정적으로 파생하세요(예: &#x60;bid-create-{구매번호}&#x60;). 같은 키와 같은 body는 24시간 동안 캐시된 응답을 그대로 돌려줍니다. | defaults to undefined|
2265
2265
 
2266
2266
 
2267
2267
  ### Return type
@@ -2281,17 +2281,17 @@ const { status, data } = await apiInstance.uploadFile(
2281
2281
  ### HTTP response details
2282
2282
  | Status code | Description | Response headers |
2283
2283
  |-------------|-------------|------------------|
2284
- |**201** | 업로드 완료. 받은 &#x60;fileKey&#x60; 공고 등록·수정의 첨부 필드에 실으세요. 같은 파일을 여러 공고에 재사용할 수 있습니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0 에 가까워지면 요청 간격을 늘리세요 — 429 를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
2285
- |**400** | 입력 검증 실패(&#x60;type: …/validation-failed&#x60;), Idempotency-Key 헤더 누락/형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 또는 요청 내용이 유효하지 않음(&#x60;…/upstream-invalid-input&#x60;). | - |
2286
- |**401** | Bearer 토큰 없음(&#x60;type: …/missing-bearer-token&#x60;) 또는 만료/위변조/폐기(&#x60;…/invalid-token&#x60;). | - |
2287
- |**403** | 키 미바인딩(&#x60;type: …/unbound-partner-key&#x60;), 클라이언트 IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), buyerId 가 키의 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60; — 샌드박스 키의 범위 위반도 이 slug), 또는 요청 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
2288
- |**409** | 원 요청이 아직 처리 중인 상태에서 같은 Idempotency-Key 재전송(&#x60;type: …/idempotency-key-conflict&#x60; — 잠시 뒤 같은 키로 재시도하면 결과를 받는다) 또는 현재 상태와 충돌하는 요청(&#x60;…/upstream-conflict&#x60;). | - |
2289
- |**413** | 요청 본문 크기 초과(&#x60;type: …/payload-too-large&#x60;). | - |
2290
- |**422** | 동일 Idempotency-Key **다른 body** 로 재전송(&#x60;type: …/idempotency-key-reused&#x60;). 재시도해도 동일 실패 — 새 키를 쓰거나 body 를 원래대로 되돌려야 한다. 형식은 맞지만 내용상 처리할 수 없는 요청(&#x60;…/upstream-unprocessable&#x60;) 상태다. | - |
2291
- |**429** | rate limit 초과(&#x60;type: …/too-many-requests&#x60;) 전역 60/min per client_id. 대기 시간은 &#x60;Retry-After&#x60;(초) 우선하고, 잔여 쿼터·정책은 표준 필드 &#x60;RateLimit&#x60;/&#x60;RateLimit-Policy&#x60;(draft-ietf-httpapi-ratelimit-headers)로 나갑니다. 관용 헤더 &#x60;X-RateLimit-Limit&#x60;/&#x60;X-RateLimit-Remaining&#x60;/&#x60;X-RateLimit-Reset&#x60; 도 함께 실리지만 표준이 아니므로 새 연동은 표준 필드를 읽으세요. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
2292
- |**500** | 서버 내부 오류(&#x60;type: …/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
2293
- |**502** | 요청을 처리하지 못했습니다(&#x60;type: …/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
2294
- |**503** | 일시적으로 처리할 수 없습니다(&#x60;type: …/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더 참조. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
2284
+ |**201** | 업로드 완료. 받은 &#x60;fileKey&#x60;를 공고 등록·수정의 첨부 필드에 실으세요. 같은 파일을 여러 공고에 재사용할 수 있습니다. | * RateLimit - 현재 창의 잔여 쿼터(&#x60;r&#x60;)와 리셋까지 남은 초(&#x60;t&#x60;). 이 값이 0에 가까워지면 요청 간격을 늘리세요 — 429를 만나기 전에 조절하라고 주는 값입니다. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
2285
+ |**400** | 입력 검증 실패(&#x60;…/validation-failed&#x60;), &#x60;Idempotency-Key&#x60; 누락·형식 오류(&#x60;…/idempotency-key-required&#x60;, &#x60;…/idempotency-key-invalid&#x60;), 요청 내용 오류(&#x60;…/upstream-invalid-input&#x60;). | - |
2286
+ |**401** | Bearer 토큰 없음(&#x60;…/missing-bearer-token&#x60;), 만료·위변조·폐기(&#x60;…/invalid-token&#x60;). | - |
2287
+ |**403** | 키 미바인딩(&#x60;…/unbound-partner-key&#x60;), IP 차단(&#x60;…/ip-not-allowed&#x60;), 스코프 부족(&#x60;…/insufficient-scope&#x60;), 대행 범위 밖(&#x60;…/buyer-scope-mismatch&#x60;), 권한 없음(&#x60;…/upstream-forbidden&#x60;). | - |
2288
+ |**409** | 같은 &#x60;Idempotency-Key&#x60;의 원 요청이 처리 (&#x60;…/idempotency-key-conflict&#x60;), 또는 현재 상태와 충돌(&#x60;…/upstream-conflict&#x60;). 앞의 경우 잠시 후 같은 키로 재시도하면 결과를 받습니다. | - |
2289
+ |**413** | 요청 본문 크기 초과(&#x60;…/payload-too-large&#x60;). | - |
2290
+ |**422** | 같은 &#x60;Idempotency-Key&#x60;를 다른 body로 재전송(&#x60;…/idempotency-key-reused&#x60;), 또는 내용상 처리 불가(&#x60;…/upstream-unprocessable&#x60;). 재시도해도 같은 실패이므로 새 키를 쓰거나 body를 되돌립니다. | - |
2291
+ |**429** | 요청 한도 초과(&#x60;…/too-many-requests&#x60;). 한도는 &#x60;client_id&#x60;당 분당 60회. 대기 시간은 &#x60;Retry-After&#x60;(초), 잔여 쿼터는 &#x60;RateLimit&#x60;·&#x60;RateLimit-Policy&#x60; 헤더에 실립니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> * RateLimit - 현재 창의 잔여 쿼터. 예: &#x60;\&quot;default\&quot;;r&#x3D;0;t&#x3D;42&#x60;. <br> * RateLimit-Policy - 적용 중인 쿼터 정책(&#x60;q&#x60; 요청 수 / &#x60;w&#x60; 창 크기(초)). 변하지 않으므로 한 번 읽어 두면 됩니다. <br> |
2292
+ |**500** | 서버 내부 오류(&#x60;…/internal-server-error&#x60;). &#x60;retryable: true&#x60;. | - |
2293
+ |**502** | 요청 처리 실패(&#x60;…/upstream-rejected&#x60;). &#x60;retryable: true&#x60;. | - |
2294
+ |**503** | 일시적 처리 불가(&#x60;…/service-unavailable&#x60;). &#x60;Retry-After&#x60; 헤더를 따릅니다. &#x60;retryable: true&#x60;. | * Retry-After - 재시도까지 대기할 초. <br> |
2295
2295
 
2296
2296
  [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
2297
2297