@cmarket/partner-sdk 45.1.0 → 45.1.1

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 (949) hide show
  1. package/README.md +4 -4
  2. package/api/embed-api.ts +5 -5
  3. package/api/oauth-api.ts +1 -1
  4. package/api/partner-api-api.ts +1 -1
  5. package/api/products-api.ts +1 -1
  6. package/api/webhooks-api.ts +1 -1
  7. package/api/well-known-api.ts +1 -1
  8. package/api.ts +1 -1
  9. package/base.ts +1 -1
  10. package/common.ts +1 -1
  11. package/configuration.ts +1 -1
  12. package/dist/api/embed-api.d.ts +5 -5
  13. package/dist/api/embed-api.js +5 -5
  14. package/dist/api/oauth-api.d.ts +1 -1
  15. package/dist/api/oauth-api.js +1 -1
  16. package/dist/api/partner-api-api.d.ts +1 -1
  17. package/dist/api/partner-api-api.js +1 -1
  18. package/dist/api/products-api.d.ts +1 -1
  19. package/dist/api/products-api.js +1 -1
  20. package/dist/api/webhooks-api.d.ts +1 -1
  21. package/dist/api/webhooks-api.js +1 -1
  22. package/dist/api/well-known-api.d.ts +1 -1
  23. package/dist/api/well-known-api.js +1 -1
  24. package/dist/api.d.ts +1 -1
  25. package/dist/api.js +1 -1
  26. package/dist/base.d.ts +1 -1
  27. package/dist/base.js +1 -1
  28. package/dist/common.d.ts +1 -1
  29. package/dist/common.js +1 -1
  30. package/dist/configuration.d.ts +1 -1
  31. package/dist/configuration.js +1 -1
  32. package/dist/esm/api/embed-api.d.ts +5 -5
  33. package/dist/esm/api/embed-api.js +5 -5
  34. package/dist/esm/api/oauth-api.d.ts +1 -1
  35. package/dist/esm/api/oauth-api.js +1 -1
  36. package/dist/esm/api/partner-api-api.d.ts +1 -1
  37. package/dist/esm/api/partner-api-api.js +1 -1
  38. package/dist/esm/api/products-api.d.ts +1 -1
  39. package/dist/esm/api/products-api.js +1 -1
  40. package/dist/esm/api/webhooks-api.d.ts +1 -1
  41. package/dist/esm/api/webhooks-api.js +1 -1
  42. package/dist/esm/api/well-known-api.d.ts +1 -1
  43. package/dist/esm/api/well-known-api.js +1 -1
  44. package/dist/esm/api.d.ts +1 -1
  45. package/dist/esm/api.js +1 -1
  46. package/dist/esm/base.d.ts +1 -1
  47. package/dist/esm/base.js +1 -1
  48. package/dist/esm/common.d.ts +1 -1
  49. package/dist/esm/common.js +1 -1
  50. package/dist/esm/configuration.d.ts +1 -1
  51. package/dist/esm/configuration.js +1 -1
  52. package/dist/esm/index.d.ts +1 -1
  53. package/dist/esm/index.js +1 -1
  54. package/dist/esm/models/acceptance-result-response-dto.d.ts +1 -1
  55. package/dist/esm/models/acceptance-result-response-dto.js +1 -1
  56. package/dist/esm/models/acknowledge-product-receipt200-response.d.ts +1 -1
  57. package/dist/esm/models/acknowledge-product-receipt200-response.js +1 -1
  58. package/dist/esm/models/acknowledge-products-request-dto.d.ts +1 -1
  59. package/dist/esm/models/acknowledge-products-request-dto.js +1 -1
  60. package/dist/esm/models/api-catalog-dto.d.ts +1 -1
  61. package/dist/esm/models/api-catalog-dto.js +1 -1
  62. package/dist/esm/models/api-catalog-entry-dto.d.ts +1 -1
  63. package/dist/esm/models/api-catalog-entry-dto.js +1 -1
  64. package/dist/esm/models/api-catalog-link-dto.d.ts +1 -1
  65. package/dist/esm/models/api-catalog-link-dto.js +1 -1
  66. package/dist/esm/models/authorization-server-metadata-dto.d.ts +1 -1
  67. package/dist/esm/models/authorization-server-metadata-dto.js +1 -1
  68. package/dist/esm/models/avalues-input-dto.d.ts +1 -1
  69. package/dist/esm/models/avalues-input-dto.js +1 -1
  70. package/dist/esm/models/award-method-public.d.ts +1 -1
  71. package/dist/esm/models/award-method-public.js +1 -1
  72. package/dist/esm/models/award-registered-v2-response-dto.d.ts +1 -1
  73. package/dist/esm/models/award-registered-v2-response-dto.js +1 -1
  74. package/dist/esm/models/award-reverted-v2-response-dto.d.ts +1 -1
  75. package/dist/esm/models/award-reverted-v2-response-dto.js +1 -1
  76. package/dist/esm/models/bid-acceptance-dto.d.ts +1 -1
  77. package/dist/esm/models/bid-acceptance-dto.js +1 -1
  78. package/dist/esm/models/bid-attachment-dto.d.ts +1 -1
  79. package/dist/esm/models/bid-attachment-dto.js +1 -1
  80. package/dist/esm/models/bid-attachment-input-dto.d.ts +1 -1
  81. package/dist/esm/models/bid-attachment-input-dto.js +1 -1
  82. package/dist/esm/models/bid-avalues-dto.d.ts +1 -1
  83. package/dist/esm/models/bid-avalues-dto.js +1 -1
  84. package/dist/esm/models/bid-award-method-detail-dto.d.ts +1 -1
  85. package/dist/esm/models/bid-award-method-detail-dto.js +1 -1
  86. package/dist/esm/models/bid-bond-dto.d.ts +1 -1
  87. package/dist/esm/models/bid-bond-dto.js +1 -1
  88. package/dist/esm/models/bid-cancellation-dto.d.ts +1 -1
  89. package/dist/esm/models/bid-cancellation-dto.js +1 -1
  90. package/dist/esm/models/bid-cancelled-response-dto.d.ts +1 -1
  91. package/dist/esm/models/bid-cancelled-response-dto.js +1 -1
  92. package/dist/esm/models/bid-category-public.d.ts +1 -1
  93. package/dist/esm/models/bid-category-public.js +1 -1
  94. package/dist/esm/models/bid-contact-dto.d.ts +1 -1
  95. package/dist/esm/models/bid-contact-dto.js +1 -1
  96. package/dist/esm/models/bid-contacts-dto.d.ts +1 -1
  97. package/dist/esm/models/bid-contacts-dto.js +1 -1
  98. package/dist/esm/models/bid-contract-document-dto.d.ts +1 -1
  99. package/dist/esm/models/bid-contract-document-dto.js +1 -1
  100. package/dist/esm/models/bid-delivery-terms-dto.d.ts +1 -1
  101. package/dist/esm/models/bid-delivery-terms-dto.js +1 -1
  102. package/dist/esm/models/bid-detail-response-dto.d.ts +1 -1
  103. package/dist/esm/models/bid-detail-response-dto.js +1 -1
  104. package/dist/esm/models/bid-document-dto.d.ts +1 -1
  105. package/dist/esm/models/bid-document-dto.js +1 -1
  106. package/dist/esm/models/bid-failed-v2-response-dto.d.ts +1 -1
  107. package/dist/esm/models/bid-failed-v2-response-dto.js +1 -1
  108. package/dist/esm/models/bid-item-dto.d.ts +1 -1
  109. package/dist/esm/models/bid-item-dto.js +1 -1
  110. package/dist/esm/models/bid-license-requirement-dto.d.ts +1 -1
  111. package/dist/esm/models/bid-license-requirement-dto.js +1 -1
  112. package/dist/esm/models/bid-lifecycle-dto.d.ts +1 -1
  113. package/dist/esm/models/bid-lifecycle-dto.js +1 -1
  114. package/dist/esm/models/bid-manager-dto.d.ts +1 -1
  115. package/dist/esm/models/bid-manager-dto.js +1 -1
  116. package/dist/esm/models/bid-must-read-notice-dto.d.ts +1 -1
  117. package/dist/esm/models/bid-must-read-notice-dto.js +1 -1
  118. package/dist/esm/models/bid-payment-terms-dto.d.ts +1 -1
  119. package/dist/esm/models/bid-payment-terms-dto.js +1 -1
  120. package/dist/esm/models/bid-preliminary-price-dto.d.ts +1 -1
  121. package/dist/esm/models/bid-preliminary-price-dto.js +1 -1
  122. package/dist/esm/models/bid-preliminary-price-slot-dto.d.ts +1 -1
  123. package/dist/esm/models/bid-preliminary-price-slot-dto.js +1 -1
  124. package/dist/esm/models/bid-product-dto.d.ts +1 -1
  125. package/dist/esm/models/bid-product-dto.js +1 -1
  126. package/dist/esm/models/bid-public-status.d.ts +1 -1
  127. package/dist/esm/models/bid-public-status.js +1 -1
  128. package/dist/esm/models/bid-qualification-review-dto.d.ts +1 -1
  129. package/dist/esm/models/bid-qualification-review-dto.js +1 -1
  130. package/dist/esm/models/bid-region-dto.d.ts +1 -1
  131. package/dist/esm/models/bid-region-dto.js +1 -1
  132. package/dist/esm/models/bid-region-restriction-dto.d.ts +1 -1
  133. package/dist/esm/models/bid-region-restriction-dto.js +1 -1
  134. package/dist/esm/models/bid-registered-response-dto.d.ts +1 -1
  135. package/dist/esm/models/bid-registered-response-dto.js +1 -1
  136. package/dist/esm/models/bid-related-bid-dto.d.ts +1 -1
  137. package/dist/esm/models/bid-related-bid-dto.js +1 -1
  138. package/dist/esm/models/bid-required-document-dto.d.ts +1 -1
  139. package/dist/esm/models/bid-required-document-dto.js +1 -1
  140. package/dist/esm/models/bid-result-participant-attachment-dto.d.ts +1 -1
  141. package/dist/esm/models/bid-result-participant-attachment-dto.js +1 -1
  142. package/dist/esm/models/bid-result-participant-dto.d.ts +1 -1
  143. package/dist/esm/models/bid-result-participant-dto.js +1 -1
  144. package/dist/esm/models/bid-results-response-dto.d.ts +1 -1
  145. package/dist/esm/models/bid-results-response-dto.js +1 -1
  146. package/dist/esm/models/bid-settlement-line-item-dto.d.ts +1 -1
  147. package/dist/esm/models/bid-settlement-line-item-dto.js +1 -1
  148. package/dist/esm/models/bid-settlement-participant-dto.d.ts +1 -1
  149. package/dist/esm/models/bid-settlement-participant-dto.js +1 -1
  150. package/dist/esm/models/bid-settlement-response-dto.d.ts +1 -1
  151. package/dist/esm/models/bid-settlement-response-dto.js +1 -1
  152. package/dist/esm/models/bid-site-briefing-dto.d.ts +1 -1
  153. package/dist/esm/models/bid-site-briefing-dto.js +1 -1
  154. package/dist/esm/models/bid-statement-response-dto.d.ts +1 -1
  155. package/dist/esm/models/bid-statement-response-dto.js +1 -1
  156. package/dist/esm/models/bid-summary-dto.d.ts +1 -1
  157. package/dist/esm/models/bid-summary-dto.js +1 -1
  158. package/dist/esm/models/bid-type-public.d.ts +1 -1
  159. package/dist/esm/models/bid-type-public.js +1 -1
  160. package/dist/esm/models/bid-updated-response-dto.d.ts +1 -1
  161. package/dist/esm/models/bid-updated-response-dto.js +1 -1
  162. package/dist/esm/models/bidding-style-public.d.ts +1 -1
  163. package/dist/esm/models/bidding-style-public.js +1 -1
  164. package/dist/esm/models/cancel-bid-request-dto.d.ts +1 -1
  165. package/dist/esm/models/cancel-bid-request-dto.js +1 -1
  166. package/dist/esm/models/cancel-bid200-response.d.ts +1 -1
  167. package/dist/esm/models/cancel-bid200-response.js +1 -1
  168. package/dist/esm/models/card-payment-request-response-dto.d.ts +1 -1
  169. package/dist/esm/models/card-payment-request-response-dto.js +1 -1
  170. package/dist/esm/models/complete-acceptance-request-dto.d.ts +1 -1
  171. package/dist/esm/models/complete-acceptance-request-dto.js +1 -1
  172. package/dist/esm/models/complete-acceptance200-response.d.ts +1 -1
  173. package/dist/esm/models/complete-acceptance200-response.js +1 -1
  174. package/dist/esm/models/complete-invoice200-response.d.ts +1 -1
  175. package/dist/esm/models/complete-invoice200-response.js +1 -1
  176. package/dist/esm/models/complete-upload-request-dto.d.ts +1 -1
  177. package/dist/esm/models/complete-upload-request-dto.js +1 -1
  178. package/dist/esm/models/contract-restriction-confirm-input-dto.d.ts +1 -1
  179. package/dist/esm/models/contract-restriction-confirm-input-dto.js +1 -1
  180. package/dist/esm/models/create-bid-request-dto.d.ts +1 -1
  181. package/dist/esm/models/create-bid-request-dto.js +1 -1
  182. package/dist/esm/models/create-card-payment-dto.d.ts +1 -1
  183. package/dist/esm/models/create-card-payment-dto.js +1 -1
  184. package/dist/esm/models/create-card-payment-request-dto.d.ts +1 -1
  185. package/dist/esm/models/create-card-payment-request-dto.js +1 -1
  186. package/dist/esm/models/create-card-payment200-response.d.ts +1 -1
  187. package/dist/esm/models/create-card-payment200-response.js +1 -1
  188. package/dist/esm/models/create-embed-launch201-response.d.ts +1 -1
  189. package/dist/esm/models/create-embed-launch201-response.js +1 -1
  190. package/dist/esm/models/create-external-contract-documents-request-dto.d.ts +1 -1
  191. package/dist/esm/models/create-external-contract-documents-request-dto.js +1 -1
  192. package/dist/esm/models/create-external-contract-documents-response-dto.d.ts +1 -1
  193. package/dist/esm/models/create-external-contract-documents-response-dto.js +1 -1
  194. package/dist/esm/models/create-file-upload-url201-response.d.ts +1 -1
  195. package/dist/esm/models/create-file-upload-url201-response.js +1 -1
  196. package/dist/esm/models/create-upload-url-request-dto.d.ts +1 -1
  197. package/dist/esm/models/create-upload-url-request-dto.js +1 -1
  198. package/dist/esm/models/create-webhook-endpoint-request-dto.d.ts +1 -1
  199. package/dist/esm/models/create-webhook-endpoint-request-dto.js +1 -1
  200. package/dist/esm/models/create-webhook-endpoint201-response.d.ts +1 -1
  201. package/dist/esm/models/create-webhook-endpoint201-response.js +1 -1
  202. package/dist/esm/models/delivery-date-type-public.d.ts +1 -1
  203. package/dist/esm/models/delivery-date-type-public.js +1 -1
  204. package/dist/esm/models/delivery-method-public.d.ts +1 -1
  205. package/dist/esm/models/delivery-method-public.js +1 -1
  206. package/dist/esm/models/embed-bid-prefill-dto.d.ts +1 -1
  207. package/dist/esm/models/embed-bid-prefill-dto.js +1 -1
  208. package/dist/esm/models/embed-bid-prefill-item-dto.d.ts +1 -1
  209. package/dist/esm/models/embed-bid-prefill-item-dto.js +1 -1
  210. package/dist/esm/models/embed-bid-prefill-manager-dto.d.ts +1 -1
  211. package/dist/esm/models/embed-bid-prefill-manager-dto.js +1 -1
  212. package/dist/esm/models/embed-launch-request-dto.d.ts +2 -2
  213. package/dist/esm/models/embed-launch-request-dto.js +1 -1
  214. package/dist/esm/models/embed-launch-response-dto.d.ts +1 -1
  215. package/dist/esm/models/embed-launch-response-dto.js +1 -1
  216. package/dist/esm/models/excellent-procurement-public.d.ts +1 -1
  217. package/dist/esm/models/excellent-procurement-public.js +1 -1
  218. package/dist/esm/models/external-contract-document-item-dto.d.ts +1 -1
  219. package/dist/esm/models/external-contract-document-item-dto.js +1 -1
  220. package/dist/esm/models/external-contract-documents-response-dto.d.ts +1 -1
  221. package/dist/esm/models/external-contract-documents-response-dto.js +1 -1
  222. package/dist/esm/models/external-contract-item-dto.d.ts +1 -1
  223. package/dist/esm/models/external-contract-item-dto.js +1 -1
  224. package/dist/esm/models/external-contract-snapshot-dto.d.ts +1 -1
  225. package/dist/esm/models/external-contract-snapshot-dto.js +1 -1
  226. package/dist/esm/models/external-document-inputs-dto.d.ts +1 -1
  227. package/dist/esm/models/external-document-inputs-dto.js +1 -1
  228. package/dist/esm/models/file-meta-response-dto.d.ts +1 -1
  229. package/dist/esm/models/file-meta-response-dto.js +1 -1
  230. package/dist/esm/models/file-uploaded-response-dto.d.ts +1 -1
  231. package/dist/esm/models/file-uploaded-response-dto.js +1 -1
  232. package/dist/esm/models/generated-external-contract-document-dto.d.ts +1 -1
  233. package/dist/esm/models/generated-external-contract-document-dto.js +1 -1
  234. package/dist/esm/models/get-bid-settlement200-response.d.ts +1 -1
  235. package/dist/esm/models/get-bid-settlement200-response.js +1 -1
  236. package/dist/esm/models/get-bid-statement200-response.d.ts +1 -1
  237. package/dist/esm/models/get-bid-statement200-response.js +1 -1
  238. package/dist/esm/models/get-bid200-response.d.ts +1 -1
  239. package/dist/esm/models/get-bid200-response.js +1 -1
  240. package/dist/esm/models/get-file-meta200-response.d.ts +1 -1
  241. package/dist/esm/models/get-file-meta200-response.js +1 -1
  242. package/dist/esm/models/get-supplier-card-payable-v2200-response.d.ts +1 -1
  243. package/dist/esm/models/get-supplier-card-payable-v2200-response.js +1 -1
  244. package/dist/esm/models/get-webhook-endpoint200-response.d.ts +1 -1
  245. package/dist/esm/models/get-webhook-endpoint200-response.js +1 -1
  246. package/dist/esm/models/green-product-public.d.ts +1 -1
  247. package/dist/esm/models/green-product-public.js +1 -1
  248. package/dist/esm/models/handover-type-public.d.ts +1 -1
  249. package/dist/esm/models/handover-type-public.js +1 -1
  250. package/dist/esm/models/health-controller-check200-response.d.ts +1 -1
  251. package/dist/esm/models/health-controller-check200-response.js +1 -1
  252. package/dist/esm/models/health-response-dto.d.ts +1 -1
  253. package/dist/esm/models/health-response-dto.js +1 -1
  254. package/dist/esm/models/hierarchical-region-dto.d.ts +1 -1
  255. package/dist/esm/models/hierarchical-region-dto.js +1 -1
  256. package/dist/esm/models/introspect-request-dto.d.ts +1 -1
  257. package/dist/esm/models/introspect-request-dto.js +1 -1
  258. package/dist/esm/models/introspection-response-dto.d.ts +1 -1
  259. package/dist/esm/models/introspection-response-dto.js +1 -1
  260. package/dist/esm/models/invalid-param-dto.d.ts +1 -1
  261. package/dist/esm/models/invalid-param-dto.js +1 -1
  262. package/dist/esm/models/invoice-completed-response-dto.d.ts +1 -1
  263. package/dist/esm/models/invoice-completed-response-dto.js +1 -1
  264. package/dist/esm/models/invoice-split-response-dto.d.ts +1 -1
  265. package/dist/esm/models/invoice-split-response-dto.js +1 -1
  266. package/dist/esm/models/legal-mandatory-public.d.ts +1 -1
  267. package/dist/esm/models/legal-mandatory-public.js +1 -1
  268. package/dist/esm/models/license-combination-mode.d.ts +1 -1
  269. package/dist/esm/models/license-combination-mode.js +1 -1
  270. package/dist/esm/models/list-bid-results200-response.d.ts +1 -1
  271. package/dist/esm/models/list-bid-results200-response.js +1 -1
  272. package/dist/esm/models/list-bids200-response-meta.d.ts +1 -1
  273. package/dist/esm/models/list-bids200-response-meta.js +1 -1
  274. package/dist/esm/models/list-bids200-response.d.ts +1 -1
  275. package/dist/esm/models/list-bids200-response.js +1 -1
  276. package/dist/esm/models/list-products200-response.d.ts +1 -1
  277. package/dist/esm/models/list-products200-response.js +1 -1
  278. package/dist/esm/models/list-suppliers200-response.d.ts +1 -1
  279. package/dist/esm/models/list-suppliers200-response.js +1 -1
  280. package/dist/esm/models/list-webhook-deliveries-response-dto.d.ts +1 -1
  281. package/dist/esm/models/list-webhook-deliveries-response-dto.js +1 -1
  282. package/dist/esm/models/list-webhook-deliveries200-response.d.ts +1 -1
  283. package/dist/esm/models/list-webhook-deliveries200-response.js +1 -1
  284. package/dist/esm/models/list-webhook-endpoints200-response.d.ts +1 -1
  285. package/dist/esm/models/list-webhook-endpoints200-response.js +1 -1
  286. package/dist/esm/models/mark-bid-failed-request-dto.d.ts +1 -1
  287. package/dist/esm/models/mark-bid-failed-request-dto.js +1 -1
  288. package/dist/esm/models/mark-bid-failed201-response.d.ts +1 -1
  289. package/dist/esm/models/mark-bid-failed201-response.js +1 -1
  290. package/dist/esm/models/nominated-supplier-dto.d.ts +1 -1
  291. package/dist/esm/models/nominated-supplier-dto.js +1 -1
  292. package/dist/esm/models/oauth-error-response-dto.d.ts +1 -1
  293. package/dist/esm/models/oauth-error-response-dto.js +1 -1
  294. package/dist/esm/models/on-bid-award-reverted-request.d.ts +1 -1
  295. package/dist/esm/models/on-bid-award-reverted-request.js +1 -1
  296. package/dist/esm/models/on-bid-awarded-request.d.ts +1 -1
  297. package/dist/esm/models/on-bid-awarded-request.js +1 -1
  298. package/dist/esm/models/on-bid-canceled-request.d.ts +1 -1
  299. package/dist/esm/models/on-bid-canceled-request.js +1 -1
  300. package/dist/esm/models/on-bid-closed-request.d.ts +1 -1
  301. package/dist/esm/models/on-bid-closed-request.js +1 -1
  302. package/dist/esm/models/on-bid-failed-request.d.ts +1 -1
  303. package/dist/esm/models/on-bid-failed-request.js +1 -1
  304. package/dist/esm/models/on-ping-request.d.ts +1 -1
  305. package/dist/esm/models/on-ping-request.js +1 -1
  306. package/dist/esm/models/partner-webhook-delivery-status.d.ts +1 -1
  307. package/dist/esm/models/partner-webhook-delivery-status.js +1 -1
  308. package/dist/esm/models/partner-webhook-endpoint-status.d.ts +1 -1
  309. package/dist/esm/models/partner-webhook-endpoint-status.js +1 -1
  310. package/dist/esm/models/partner-webhook-event-type.d.ts +1 -1
  311. package/dist/esm/models/partner-webhook-event-type.js +1 -1
  312. package/dist/esm/models/payment-method-public.d.ts +1 -1
  313. package/dist/esm/models/payment-method-public.js +1 -1
  314. package/dist/esm/models/preconditions-dto.d.ts +1 -1
  315. package/dist/esm/models/preconditions-dto.js +1 -1
  316. package/dist/esm/models/preliminary-price-region-public.d.ts +1 -1
  317. package/dist/esm/models/preliminary-price-region-public.js +1 -1
  318. package/dist/esm/models/price-score-type-public.d.ts +1 -1
  319. package/dist/esm/models/price-score-type-public.js +1 -1
  320. package/dist/esm/models/pricing-type-public.d.ts +1 -1
  321. package/dist/esm/models/pricing-type-public.js +1 -1
  322. package/dist/esm/models/problem-details-dto.d.ts +1 -1
  323. package/dist/esm/models/problem-details-dto.js +1 -1
  324. package/dist/esm/models/product-receipt-response-dto.d.ts +1 -1
  325. package/dist/esm/models/product-receipt-response-dto.js +1 -1
  326. package/dist/esm/models/product-response-dto.d.ts +1 -1
  327. package/dist/esm/models/product-response-dto.js +1 -1
  328. package/dist/esm/models/protected-resource-metadata-dto.d.ts +1 -1
  329. package/dist/esm/models/protected-resource-metadata-dto.js +1 -1
  330. package/dist/esm/models/qualification-review-input-dto.d.ts +1 -1
  331. package/dist/esm/models/qualification-review-input-dto.js +1 -1
  332. package/dist/esm/models/register-award-request-dto.d.ts +1 -1
  333. package/dist/esm/models/register-award-request-dto.js +1 -1
  334. package/dist/esm/models/register-award201-response.d.ts +1 -1
  335. package/dist/esm/models/register-award201-response.js +1 -1
  336. package/dist/esm/models/register-bid201-response.d.ts +1 -1
  337. package/dist/esm/models/register-bid201-response.js +1 -1
  338. package/dist/esm/models/register-semo-contract-request-dto.d.ts +1 -1
  339. package/dist/esm/models/register-semo-contract-request-dto.js +1 -1
  340. package/dist/esm/models/regulation-type-public.d.ts +1 -1
  341. package/dist/esm/models/regulation-type-public.js +1 -1
  342. package/dist/esm/models/related-bid-relation.d.ts +1 -1
  343. package/dist/esm/models/related-bid-relation.js +1 -1
  344. package/dist/esm/models/request-invoice-split-request-dto.d.ts +1 -1
  345. package/dist/esm/models/request-invoice-split-request-dto.js +1 -1
  346. package/dist/esm/models/request-invoice-split200-response.d.ts +1 -1
  347. package/dist/esm/models/request-invoice-split200-response.js +1 -1
  348. package/dist/esm/models/retiree-roster-input-dto.d.ts +1 -1
  349. package/dist/esm/models/retiree-roster-input-dto.js +1 -1
  350. package/dist/esm/models/retiree-roster-row-dto.d.ts +1 -1
  351. package/dist/esm/models/retiree-roster-row-dto.js +1 -1
  352. package/dist/esm/models/revert-award-request-dto.d.ts +1 -1
  353. package/dist/esm/models/revert-award-request-dto.js +1 -1
  354. package/dist/esm/models/revert-award200-response.d.ts +1 -1
  355. package/dist/esm/models/revert-award200-response.js +1 -1
  356. package/dist/esm/models/revoke-request-dto.d.ts +1 -1
  357. package/dist/esm/models/revoke-request-dto.js +1 -1
  358. package/dist/esm/models/semo-contract-registered-response-dto.d.ts +1 -1
  359. package/dist/esm/models/semo-contract-registered-response-dto.js +1 -1
  360. package/dist/esm/models/semo-contract-taxinvoice-status-response-dto.d.ts +1 -1
  361. package/dist/esm/models/semo-contract-taxinvoice-status-response-dto.js +1 -1
  362. package/dist/esm/models/send-webhook-test-event200-response.d.ts +1 -1
  363. package/dist/esm/models/send-webhook-test-event200-response.js +1 -1
  364. package/dist/esm/models/site-briefing-input-dto.d.ts +1 -1
  365. package/dist/esm/models/site-briefing-input-dto.js +1 -1
  366. package/dist/esm/models/statement-document-dto.d.ts +1 -1
  367. package/dist/esm/models/statement-document-dto.js +1 -1
  368. package/dist/esm/models/statement-product-dto.d.ts +1 -1
  369. package/dist/esm/models/statement-product-dto.js +1 -1
  370. package/dist/esm/models/supplier-card-payable-response-dto.d.ts +1 -1
  371. package/dist/esm/models/supplier-card-payable-response-dto.js +1 -1
  372. package/dist/esm/models/supplier-response-dto.d.ts +1 -1
  373. package/dist/esm/models/supplier-response-dto.js +1 -1
  374. package/dist/esm/models/supplier-tax-type.d.ts +1 -1
  375. package/dist/esm/models/supplier-tax-type.js +1 -1
  376. package/dist/esm/models/taxation-type-public.d.ts +1 -1
  377. package/dist/esm/models/taxation-type-public.js +1 -1
  378. package/dist/esm/models/token-request-dto.d.ts +1 -1
  379. package/dist/esm/models/token-request-dto.js +1 -1
  380. package/dist/esm/models/token-response-dto.d.ts +1 -1
  381. package/dist/esm/models/token-response-dto.js +1 -1
  382. package/dist/esm/models/two-stage-phase-public.d.ts +1 -1
  383. package/dist/esm/models/two-stage-phase-public.js +1 -1
  384. package/dist/esm/models/update-bid-request-dto.d.ts +1 -1
  385. package/dist/esm/models/update-bid-request-dto.js +1 -1
  386. package/dist/esm/models/update-bid200-response.d.ts +1 -1
  387. package/dist/esm/models/update-bid200-response.js +1 -1
  388. package/dist/esm/models/update-webhook-endpoint-request-dto.d.ts +1 -1
  389. package/dist/esm/models/update-webhook-endpoint-request-dto.js +1 -1
  390. package/dist/esm/models/upload-file-request-dto.d.ts +1 -1
  391. package/dist/esm/models/upload-file-request-dto.js +1 -1
  392. package/dist/esm/models/upload-file201-response.d.ts +1 -1
  393. package/dist/esm/models/upload-file201-response.js +1 -1
  394. package/dist/esm/models/upload-url-created-response-dto.d.ts +1 -1
  395. package/dist/esm/models/upload-url-created-response-dto.js +1 -1
  396. package/dist/esm/models/webhook-bid-event-data.d.ts +1 -1
  397. package/dist/esm/models/webhook-bid-event-data.js +1 -1
  398. package/dist/esm/models/webhook-delivery-dto.d.ts +1 -1
  399. package/dist/esm/models/webhook-delivery-dto.js +1 -1
  400. package/dist/esm/models/webhook-endpoint-dto.d.ts +1 -1
  401. package/dist/esm/models/webhook-endpoint-dto.js +1 -1
  402. package/dist/esm/models/webhook-endpoint-with-secret-dto.d.ts +1 -1
  403. package/dist/esm/models/webhook-endpoint-with-secret-dto.js +1 -1
  404. package/dist/esm/models/webhook-event-envelope.d.ts +1 -1
  405. package/dist/esm/models/webhook-event-envelope.js +1 -1
  406. package/dist/esm/models/webhook-ping-event-data.d.ts +1 -1
  407. package/dist/esm/models/webhook-ping-event-data.js +1 -1
  408. package/dist/esm/models/webhook-test-result-dto.d.ts +1 -1
  409. package/dist/esm/models/webhook-test-result-dto.js +1 -1
  410. package/dist/index.d.ts +1 -1
  411. package/dist/index.js +1 -1
  412. package/dist/models/acceptance-result-response-dto.d.ts +1 -1
  413. package/dist/models/acceptance-result-response-dto.js +1 -1
  414. package/dist/models/acknowledge-product-receipt200-response.d.ts +1 -1
  415. package/dist/models/acknowledge-product-receipt200-response.js +1 -1
  416. package/dist/models/acknowledge-products-request-dto.d.ts +1 -1
  417. package/dist/models/acknowledge-products-request-dto.js +1 -1
  418. package/dist/models/api-catalog-dto.d.ts +1 -1
  419. package/dist/models/api-catalog-dto.js +1 -1
  420. package/dist/models/api-catalog-entry-dto.d.ts +1 -1
  421. package/dist/models/api-catalog-entry-dto.js +1 -1
  422. package/dist/models/api-catalog-link-dto.d.ts +1 -1
  423. package/dist/models/api-catalog-link-dto.js +1 -1
  424. package/dist/models/authorization-server-metadata-dto.d.ts +1 -1
  425. package/dist/models/authorization-server-metadata-dto.js +1 -1
  426. package/dist/models/avalues-input-dto.d.ts +1 -1
  427. package/dist/models/avalues-input-dto.js +1 -1
  428. package/dist/models/award-method-public.d.ts +1 -1
  429. package/dist/models/award-method-public.js +1 -1
  430. package/dist/models/award-registered-v2-response-dto.d.ts +1 -1
  431. package/dist/models/award-registered-v2-response-dto.js +1 -1
  432. package/dist/models/award-reverted-v2-response-dto.d.ts +1 -1
  433. package/dist/models/award-reverted-v2-response-dto.js +1 -1
  434. package/dist/models/bid-acceptance-dto.d.ts +1 -1
  435. package/dist/models/bid-acceptance-dto.js +1 -1
  436. package/dist/models/bid-attachment-dto.d.ts +1 -1
  437. package/dist/models/bid-attachment-dto.js +1 -1
  438. package/dist/models/bid-attachment-input-dto.d.ts +1 -1
  439. package/dist/models/bid-attachment-input-dto.js +1 -1
  440. package/dist/models/bid-avalues-dto.d.ts +1 -1
  441. package/dist/models/bid-avalues-dto.js +1 -1
  442. package/dist/models/bid-award-method-detail-dto.d.ts +1 -1
  443. package/dist/models/bid-award-method-detail-dto.js +1 -1
  444. package/dist/models/bid-bond-dto.d.ts +1 -1
  445. package/dist/models/bid-bond-dto.js +1 -1
  446. package/dist/models/bid-cancellation-dto.d.ts +1 -1
  447. package/dist/models/bid-cancellation-dto.js +1 -1
  448. package/dist/models/bid-cancelled-response-dto.d.ts +1 -1
  449. package/dist/models/bid-cancelled-response-dto.js +1 -1
  450. package/dist/models/bid-category-public.d.ts +1 -1
  451. package/dist/models/bid-category-public.js +1 -1
  452. package/dist/models/bid-contact-dto.d.ts +1 -1
  453. package/dist/models/bid-contact-dto.js +1 -1
  454. package/dist/models/bid-contacts-dto.d.ts +1 -1
  455. package/dist/models/bid-contacts-dto.js +1 -1
  456. package/dist/models/bid-contract-document-dto.d.ts +1 -1
  457. package/dist/models/bid-contract-document-dto.js +1 -1
  458. package/dist/models/bid-delivery-terms-dto.d.ts +1 -1
  459. package/dist/models/bid-delivery-terms-dto.js +1 -1
  460. package/dist/models/bid-detail-response-dto.d.ts +1 -1
  461. package/dist/models/bid-detail-response-dto.js +1 -1
  462. package/dist/models/bid-document-dto.d.ts +1 -1
  463. package/dist/models/bid-document-dto.js +1 -1
  464. package/dist/models/bid-failed-v2-response-dto.d.ts +1 -1
  465. package/dist/models/bid-failed-v2-response-dto.js +1 -1
  466. package/dist/models/bid-item-dto.d.ts +1 -1
  467. package/dist/models/bid-item-dto.js +1 -1
  468. package/dist/models/bid-license-requirement-dto.d.ts +1 -1
  469. package/dist/models/bid-license-requirement-dto.js +1 -1
  470. package/dist/models/bid-lifecycle-dto.d.ts +1 -1
  471. package/dist/models/bid-lifecycle-dto.js +1 -1
  472. package/dist/models/bid-manager-dto.d.ts +1 -1
  473. package/dist/models/bid-manager-dto.js +1 -1
  474. package/dist/models/bid-must-read-notice-dto.d.ts +1 -1
  475. package/dist/models/bid-must-read-notice-dto.js +1 -1
  476. package/dist/models/bid-payment-terms-dto.d.ts +1 -1
  477. package/dist/models/bid-payment-terms-dto.js +1 -1
  478. package/dist/models/bid-preliminary-price-dto.d.ts +1 -1
  479. package/dist/models/bid-preliminary-price-dto.js +1 -1
  480. package/dist/models/bid-preliminary-price-slot-dto.d.ts +1 -1
  481. package/dist/models/bid-preliminary-price-slot-dto.js +1 -1
  482. package/dist/models/bid-product-dto.d.ts +1 -1
  483. package/dist/models/bid-product-dto.js +1 -1
  484. package/dist/models/bid-public-status.d.ts +1 -1
  485. package/dist/models/bid-public-status.js +1 -1
  486. package/dist/models/bid-qualification-review-dto.d.ts +1 -1
  487. package/dist/models/bid-qualification-review-dto.js +1 -1
  488. package/dist/models/bid-region-dto.d.ts +1 -1
  489. package/dist/models/bid-region-dto.js +1 -1
  490. package/dist/models/bid-region-restriction-dto.d.ts +1 -1
  491. package/dist/models/bid-region-restriction-dto.js +1 -1
  492. package/dist/models/bid-registered-response-dto.d.ts +1 -1
  493. package/dist/models/bid-registered-response-dto.js +1 -1
  494. package/dist/models/bid-related-bid-dto.d.ts +1 -1
  495. package/dist/models/bid-related-bid-dto.js +1 -1
  496. package/dist/models/bid-required-document-dto.d.ts +1 -1
  497. package/dist/models/bid-required-document-dto.js +1 -1
  498. package/dist/models/bid-result-participant-attachment-dto.d.ts +1 -1
  499. package/dist/models/bid-result-participant-attachment-dto.js +1 -1
  500. package/dist/models/bid-result-participant-dto.d.ts +1 -1
  501. package/dist/models/bid-result-participant-dto.js +1 -1
  502. package/dist/models/bid-results-response-dto.d.ts +1 -1
  503. package/dist/models/bid-results-response-dto.js +1 -1
  504. package/dist/models/bid-settlement-line-item-dto.d.ts +1 -1
  505. package/dist/models/bid-settlement-line-item-dto.js +1 -1
  506. package/dist/models/bid-settlement-participant-dto.d.ts +1 -1
  507. package/dist/models/bid-settlement-participant-dto.js +1 -1
  508. package/dist/models/bid-settlement-response-dto.d.ts +1 -1
  509. package/dist/models/bid-settlement-response-dto.js +1 -1
  510. package/dist/models/bid-site-briefing-dto.d.ts +1 -1
  511. package/dist/models/bid-site-briefing-dto.js +1 -1
  512. package/dist/models/bid-statement-response-dto.d.ts +1 -1
  513. package/dist/models/bid-statement-response-dto.js +1 -1
  514. package/dist/models/bid-summary-dto.d.ts +1 -1
  515. package/dist/models/bid-summary-dto.js +1 -1
  516. package/dist/models/bid-type-public.d.ts +1 -1
  517. package/dist/models/bid-type-public.js +1 -1
  518. package/dist/models/bid-updated-response-dto.d.ts +1 -1
  519. package/dist/models/bid-updated-response-dto.js +1 -1
  520. package/dist/models/bidding-style-public.d.ts +1 -1
  521. package/dist/models/bidding-style-public.js +1 -1
  522. package/dist/models/cancel-bid-request-dto.d.ts +1 -1
  523. package/dist/models/cancel-bid-request-dto.js +1 -1
  524. package/dist/models/cancel-bid200-response.d.ts +1 -1
  525. package/dist/models/cancel-bid200-response.js +1 -1
  526. package/dist/models/card-payment-request-response-dto.d.ts +1 -1
  527. package/dist/models/card-payment-request-response-dto.js +1 -1
  528. package/dist/models/complete-acceptance-request-dto.d.ts +1 -1
  529. package/dist/models/complete-acceptance-request-dto.js +1 -1
  530. package/dist/models/complete-acceptance200-response.d.ts +1 -1
  531. package/dist/models/complete-acceptance200-response.js +1 -1
  532. package/dist/models/complete-invoice200-response.d.ts +1 -1
  533. package/dist/models/complete-invoice200-response.js +1 -1
  534. package/dist/models/complete-upload-request-dto.d.ts +1 -1
  535. package/dist/models/complete-upload-request-dto.js +1 -1
  536. package/dist/models/contract-restriction-confirm-input-dto.d.ts +1 -1
  537. package/dist/models/contract-restriction-confirm-input-dto.js +1 -1
  538. package/dist/models/create-bid-request-dto.d.ts +1 -1
  539. package/dist/models/create-bid-request-dto.js +1 -1
  540. package/dist/models/create-card-payment-dto.d.ts +1 -1
  541. package/dist/models/create-card-payment-dto.js +1 -1
  542. package/dist/models/create-card-payment-request-dto.d.ts +1 -1
  543. package/dist/models/create-card-payment-request-dto.js +1 -1
  544. package/dist/models/create-card-payment200-response.d.ts +1 -1
  545. package/dist/models/create-card-payment200-response.js +1 -1
  546. package/dist/models/create-embed-launch201-response.d.ts +1 -1
  547. package/dist/models/create-embed-launch201-response.js +1 -1
  548. package/dist/models/create-external-contract-documents-request-dto.d.ts +1 -1
  549. package/dist/models/create-external-contract-documents-request-dto.js +1 -1
  550. package/dist/models/create-external-contract-documents-response-dto.d.ts +1 -1
  551. package/dist/models/create-external-contract-documents-response-dto.js +1 -1
  552. package/dist/models/create-file-upload-url201-response.d.ts +1 -1
  553. package/dist/models/create-file-upload-url201-response.js +1 -1
  554. package/dist/models/create-upload-url-request-dto.d.ts +1 -1
  555. package/dist/models/create-upload-url-request-dto.js +1 -1
  556. package/dist/models/create-webhook-endpoint-request-dto.d.ts +1 -1
  557. package/dist/models/create-webhook-endpoint-request-dto.js +1 -1
  558. package/dist/models/create-webhook-endpoint201-response.d.ts +1 -1
  559. package/dist/models/create-webhook-endpoint201-response.js +1 -1
  560. package/dist/models/delivery-date-type-public.d.ts +1 -1
  561. package/dist/models/delivery-date-type-public.js +1 -1
  562. package/dist/models/delivery-method-public.d.ts +1 -1
  563. package/dist/models/delivery-method-public.js +1 -1
  564. package/dist/models/embed-bid-prefill-dto.d.ts +1 -1
  565. package/dist/models/embed-bid-prefill-dto.js +1 -1
  566. package/dist/models/embed-bid-prefill-item-dto.d.ts +1 -1
  567. package/dist/models/embed-bid-prefill-item-dto.js +1 -1
  568. package/dist/models/embed-bid-prefill-manager-dto.d.ts +1 -1
  569. package/dist/models/embed-bid-prefill-manager-dto.js +1 -1
  570. package/dist/models/embed-launch-request-dto.d.ts +2 -2
  571. package/dist/models/embed-launch-request-dto.js +1 -1
  572. package/dist/models/embed-launch-response-dto.d.ts +1 -1
  573. package/dist/models/embed-launch-response-dto.js +1 -1
  574. package/dist/models/excellent-procurement-public.d.ts +1 -1
  575. package/dist/models/excellent-procurement-public.js +1 -1
  576. package/dist/models/external-contract-document-item-dto.d.ts +1 -1
  577. package/dist/models/external-contract-document-item-dto.js +1 -1
  578. package/dist/models/external-contract-documents-response-dto.d.ts +1 -1
  579. package/dist/models/external-contract-documents-response-dto.js +1 -1
  580. package/dist/models/external-contract-item-dto.d.ts +1 -1
  581. package/dist/models/external-contract-item-dto.js +1 -1
  582. package/dist/models/external-contract-snapshot-dto.d.ts +1 -1
  583. package/dist/models/external-contract-snapshot-dto.js +1 -1
  584. package/dist/models/external-document-inputs-dto.d.ts +1 -1
  585. package/dist/models/external-document-inputs-dto.js +1 -1
  586. package/dist/models/file-meta-response-dto.d.ts +1 -1
  587. package/dist/models/file-meta-response-dto.js +1 -1
  588. package/dist/models/file-uploaded-response-dto.d.ts +1 -1
  589. package/dist/models/file-uploaded-response-dto.js +1 -1
  590. package/dist/models/generated-external-contract-document-dto.d.ts +1 -1
  591. package/dist/models/generated-external-contract-document-dto.js +1 -1
  592. package/dist/models/get-bid-settlement200-response.d.ts +1 -1
  593. package/dist/models/get-bid-settlement200-response.js +1 -1
  594. package/dist/models/get-bid-statement200-response.d.ts +1 -1
  595. package/dist/models/get-bid-statement200-response.js +1 -1
  596. package/dist/models/get-bid200-response.d.ts +1 -1
  597. package/dist/models/get-bid200-response.js +1 -1
  598. package/dist/models/get-file-meta200-response.d.ts +1 -1
  599. package/dist/models/get-file-meta200-response.js +1 -1
  600. package/dist/models/get-supplier-card-payable-v2200-response.d.ts +1 -1
  601. package/dist/models/get-supplier-card-payable-v2200-response.js +1 -1
  602. package/dist/models/get-webhook-endpoint200-response.d.ts +1 -1
  603. package/dist/models/get-webhook-endpoint200-response.js +1 -1
  604. package/dist/models/green-product-public.d.ts +1 -1
  605. package/dist/models/green-product-public.js +1 -1
  606. package/dist/models/handover-type-public.d.ts +1 -1
  607. package/dist/models/handover-type-public.js +1 -1
  608. package/dist/models/health-controller-check200-response.d.ts +1 -1
  609. package/dist/models/health-controller-check200-response.js +1 -1
  610. package/dist/models/health-response-dto.d.ts +1 -1
  611. package/dist/models/health-response-dto.js +1 -1
  612. package/dist/models/hierarchical-region-dto.d.ts +1 -1
  613. package/dist/models/hierarchical-region-dto.js +1 -1
  614. package/dist/models/introspect-request-dto.d.ts +1 -1
  615. package/dist/models/introspect-request-dto.js +1 -1
  616. package/dist/models/introspection-response-dto.d.ts +1 -1
  617. package/dist/models/introspection-response-dto.js +1 -1
  618. package/dist/models/invalid-param-dto.d.ts +1 -1
  619. package/dist/models/invalid-param-dto.js +1 -1
  620. package/dist/models/invoice-completed-response-dto.d.ts +1 -1
  621. package/dist/models/invoice-completed-response-dto.js +1 -1
  622. package/dist/models/invoice-split-response-dto.d.ts +1 -1
  623. package/dist/models/invoice-split-response-dto.js +1 -1
  624. package/dist/models/legal-mandatory-public.d.ts +1 -1
  625. package/dist/models/legal-mandatory-public.js +1 -1
  626. package/dist/models/license-combination-mode.d.ts +1 -1
  627. package/dist/models/license-combination-mode.js +1 -1
  628. package/dist/models/list-bid-results200-response.d.ts +1 -1
  629. package/dist/models/list-bid-results200-response.js +1 -1
  630. package/dist/models/list-bids200-response-meta.d.ts +1 -1
  631. package/dist/models/list-bids200-response-meta.js +1 -1
  632. package/dist/models/list-bids200-response.d.ts +1 -1
  633. package/dist/models/list-bids200-response.js +1 -1
  634. package/dist/models/list-products200-response.d.ts +1 -1
  635. package/dist/models/list-products200-response.js +1 -1
  636. package/dist/models/list-suppliers200-response.d.ts +1 -1
  637. package/dist/models/list-suppliers200-response.js +1 -1
  638. package/dist/models/list-webhook-deliveries-response-dto.d.ts +1 -1
  639. package/dist/models/list-webhook-deliveries-response-dto.js +1 -1
  640. package/dist/models/list-webhook-deliveries200-response.d.ts +1 -1
  641. package/dist/models/list-webhook-deliveries200-response.js +1 -1
  642. package/dist/models/list-webhook-endpoints200-response.d.ts +1 -1
  643. package/dist/models/list-webhook-endpoints200-response.js +1 -1
  644. package/dist/models/mark-bid-failed-request-dto.d.ts +1 -1
  645. package/dist/models/mark-bid-failed-request-dto.js +1 -1
  646. package/dist/models/mark-bid-failed201-response.d.ts +1 -1
  647. package/dist/models/mark-bid-failed201-response.js +1 -1
  648. package/dist/models/nominated-supplier-dto.d.ts +1 -1
  649. package/dist/models/nominated-supplier-dto.js +1 -1
  650. package/dist/models/oauth-error-response-dto.d.ts +1 -1
  651. package/dist/models/oauth-error-response-dto.js +1 -1
  652. package/dist/models/on-bid-award-reverted-request.d.ts +1 -1
  653. package/dist/models/on-bid-award-reverted-request.js +1 -1
  654. package/dist/models/on-bid-awarded-request.d.ts +1 -1
  655. package/dist/models/on-bid-awarded-request.js +1 -1
  656. package/dist/models/on-bid-canceled-request.d.ts +1 -1
  657. package/dist/models/on-bid-canceled-request.js +1 -1
  658. package/dist/models/on-bid-closed-request.d.ts +1 -1
  659. package/dist/models/on-bid-closed-request.js +1 -1
  660. package/dist/models/on-bid-failed-request.d.ts +1 -1
  661. package/dist/models/on-bid-failed-request.js +1 -1
  662. package/dist/models/on-ping-request.d.ts +1 -1
  663. package/dist/models/on-ping-request.js +1 -1
  664. package/dist/models/partner-webhook-delivery-status.d.ts +1 -1
  665. package/dist/models/partner-webhook-delivery-status.js +1 -1
  666. package/dist/models/partner-webhook-endpoint-status.d.ts +1 -1
  667. package/dist/models/partner-webhook-endpoint-status.js +1 -1
  668. package/dist/models/partner-webhook-event-type.d.ts +1 -1
  669. package/dist/models/partner-webhook-event-type.js +1 -1
  670. package/dist/models/payment-method-public.d.ts +1 -1
  671. package/dist/models/payment-method-public.js +1 -1
  672. package/dist/models/preconditions-dto.d.ts +1 -1
  673. package/dist/models/preconditions-dto.js +1 -1
  674. package/dist/models/preliminary-price-region-public.d.ts +1 -1
  675. package/dist/models/preliminary-price-region-public.js +1 -1
  676. package/dist/models/price-score-type-public.d.ts +1 -1
  677. package/dist/models/price-score-type-public.js +1 -1
  678. package/dist/models/pricing-type-public.d.ts +1 -1
  679. package/dist/models/pricing-type-public.js +1 -1
  680. package/dist/models/problem-details-dto.d.ts +1 -1
  681. package/dist/models/problem-details-dto.js +1 -1
  682. package/dist/models/product-receipt-response-dto.d.ts +1 -1
  683. package/dist/models/product-receipt-response-dto.js +1 -1
  684. package/dist/models/product-response-dto.d.ts +1 -1
  685. package/dist/models/product-response-dto.js +1 -1
  686. package/dist/models/protected-resource-metadata-dto.d.ts +1 -1
  687. package/dist/models/protected-resource-metadata-dto.js +1 -1
  688. package/dist/models/qualification-review-input-dto.d.ts +1 -1
  689. package/dist/models/qualification-review-input-dto.js +1 -1
  690. package/dist/models/register-award-request-dto.d.ts +1 -1
  691. package/dist/models/register-award-request-dto.js +1 -1
  692. package/dist/models/register-award201-response.d.ts +1 -1
  693. package/dist/models/register-award201-response.js +1 -1
  694. package/dist/models/register-bid201-response.d.ts +1 -1
  695. package/dist/models/register-bid201-response.js +1 -1
  696. package/dist/models/register-semo-contract-request-dto.d.ts +1 -1
  697. package/dist/models/register-semo-contract-request-dto.js +1 -1
  698. package/dist/models/regulation-type-public.d.ts +1 -1
  699. package/dist/models/regulation-type-public.js +1 -1
  700. package/dist/models/related-bid-relation.d.ts +1 -1
  701. package/dist/models/related-bid-relation.js +1 -1
  702. package/dist/models/request-invoice-split-request-dto.d.ts +1 -1
  703. package/dist/models/request-invoice-split-request-dto.js +1 -1
  704. package/dist/models/request-invoice-split200-response.d.ts +1 -1
  705. package/dist/models/request-invoice-split200-response.js +1 -1
  706. package/dist/models/retiree-roster-input-dto.d.ts +1 -1
  707. package/dist/models/retiree-roster-input-dto.js +1 -1
  708. package/dist/models/retiree-roster-row-dto.d.ts +1 -1
  709. package/dist/models/retiree-roster-row-dto.js +1 -1
  710. package/dist/models/revert-award-request-dto.d.ts +1 -1
  711. package/dist/models/revert-award-request-dto.js +1 -1
  712. package/dist/models/revert-award200-response.d.ts +1 -1
  713. package/dist/models/revert-award200-response.js +1 -1
  714. package/dist/models/revoke-request-dto.d.ts +1 -1
  715. package/dist/models/revoke-request-dto.js +1 -1
  716. package/dist/models/semo-contract-registered-response-dto.d.ts +1 -1
  717. package/dist/models/semo-contract-registered-response-dto.js +1 -1
  718. package/dist/models/semo-contract-taxinvoice-status-response-dto.d.ts +1 -1
  719. package/dist/models/semo-contract-taxinvoice-status-response-dto.js +1 -1
  720. package/dist/models/send-webhook-test-event200-response.d.ts +1 -1
  721. package/dist/models/send-webhook-test-event200-response.js +1 -1
  722. package/dist/models/site-briefing-input-dto.d.ts +1 -1
  723. package/dist/models/site-briefing-input-dto.js +1 -1
  724. package/dist/models/statement-document-dto.d.ts +1 -1
  725. package/dist/models/statement-document-dto.js +1 -1
  726. package/dist/models/statement-product-dto.d.ts +1 -1
  727. package/dist/models/statement-product-dto.js +1 -1
  728. package/dist/models/supplier-card-payable-response-dto.d.ts +1 -1
  729. package/dist/models/supplier-card-payable-response-dto.js +1 -1
  730. package/dist/models/supplier-response-dto.d.ts +1 -1
  731. package/dist/models/supplier-response-dto.js +1 -1
  732. package/dist/models/supplier-tax-type.d.ts +1 -1
  733. package/dist/models/supplier-tax-type.js +1 -1
  734. package/dist/models/taxation-type-public.d.ts +1 -1
  735. package/dist/models/taxation-type-public.js +1 -1
  736. package/dist/models/token-request-dto.d.ts +1 -1
  737. package/dist/models/token-request-dto.js +1 -1
  738. package/dist/models/token-response-dto.d.ts +1 -1
  739. package/dist/models/token-response-dto.js +1 -1
  740. package/dist/models/two-stage-phase-public.d.ts +1 -1
  741. package/dist/models/two-stage-phase-public.js +1 -1
  742. package/dist/models/update-bid-request-dto.d.ts +1 -1
  743. package/dist/models/update-bid-request-dto.js +1 -1
  744. package/dist/models/update-bid200-response.d.ts +1 -1
  745. package/dist/models/update-bid200-response.js +1 -1
  746. package/dist/models/update-webhook-endpoint-request-dto.d.ts +1 -1
  747. package/dist/models/update-webhook-endpoint-request-dto.js +1 -1
  748. package/dist/models/upload-file-request-dto.d.ts +1 -1
  749. package/dist/models/upload-file-request-dto.js +1 -1
  750. package/dist/models/upload-file201-response.d.ts +1 -1
  751. package/dist/models/upload-file201-response.js +1 -1
  752. package/dist/models/upload-url-created-response-dto.d.ts +1 -1
  753. package/dist/models/upload-url-created-response-dto.js +1 -1
  754. package/dist/models/webhook-bid-event-data.d.ts +1 -1
  755. package/dist/models/webhook-bid-event-data.js +1 -1
  756. package/dist/models/webhook-delivery-dto.d.ts +1 -1
  757. package/dist/models/webhook-delivery-dto.js +1 -1
  758. package/dist/models/webhook-endpoint-dto.d.ts +1 -1
  759. package/dist/models/webhook-endpoint-dto.js +1 -1
  760. package/dist/models/webhook-endpoint-with-secret-dto.d.ts +1 -1
  761. package/dist/models/webhook-endpoint-with-secret-dto.js +1 -1
  762. package/dist/models/webhook-event-envelope.d.ts +1 -1
  763. package/dist/models/webhook-event-envelope.js +1 -1
  764. package/dist/models/webhook-ping-event-data.d.ts +1 -1
  765. package/dist/models/webhook-ping-event-data.js +1 -1
  766. package/dist/models/webhook-test-result-dto.d.ts +1 -1
  767. package/dist/models/webhook-test-result-dto.js +1 -1
  768. package/docs/EmbedApi.md +1 -1
  769. package/docs/EmbedLaunchRequestDto.md +1 -1
  770. package/index.ts +1 -1
  771. package/models/acceptance-result-response-dto.ts +1 -1
  772. package/models/acknowledge-product-receipt200-response.ts +1 -1
  773. package/models/acknowledge-products-request-dto.ts +1 -1
  774. package/models/api-catalog-dto.ts +1 -1
  775. package/models/api-catalog-entry-dto.ts +1 -1
  776. package/models/api-catalog-link-dto.ts +1 -1
  777. package/models/authorization-server-metadata-dto.ts +1 -1
  778. package/models/avalues-input-dto.ts +1 -1
  779. package/models/award-method-public.ts +1 -1
  780. package/models/award-registered-v2-response-dto.ts +1 -1
  781. package/models/award-reverted-v2-response-dto.ts +1 -1
  782. package/models/bid-acceptance-dto.ts +1 -1
  783. package/models/bid-attachment-dto.ts +1 -1
  784. package/models/bid-attachment-input-dto.ts +1 -1
  785. package/models/bid-avalues-dto.ts +1 -1
  786. package/models/bid-award-method-detail-dto.ts +1 -1
  787. package/models/bid-bond-dto.ts +1 -1
  788. package/models/bid-cancellation-dto.ts +1 -1
  789. package/models/bid-cancelled-response-dto.ts +1 -1
  790. package/models/bid-category-public.ts +1 -1
  791. package/models/bid-contact-dto.ts +1 -1
  792. package/models/bid-contacts-dto.ts +1 -1
  793. package/models/bid-contract-document-dto.ts +1 -1
  794. package/models/bid-delivery-terms-dto.ts +1 -1
  795. package/models/bid-detail-response-dto.ts +1 -1
  796. package/models/bid-document-dto.ts +1 -1
  797. package/models/bid-failed-v2-response-dto.ts +1 -1
  798. package/models/bid-item-dto.ts +1 -1
  799. package/models/bid-license-requirement-dto.ts +1 -1
  800. package/models/bid-lifecycle-dto.ts +1 -1
  801. package/models/bid-manager-dto.ts +1 -1
  802. package/models/bid-must-read-notice-dto.ts +1 -1
  803. package/models/bid-payment-terms-dto.ts +1 -1
  804. package/models/bid-preliminary-price-dto.ts +1 -1
  805. package/models/bid-preliminary-price-slot-dto.ts +1 -1
  806. package/models/bid-product-dto.ts +1 -1
  807. package/models/bid-public-status.ts +1 -1
  808. package/models/bid-qualification-review-dto.ts +1 -1
  809. package/models/bid-region-dto.ts +1 -1
  810. package/models/bid-region-restriction-dto.ts +1 -1
  811. package/models/bid-registered-response-dto.ts +1 -1
  812. package/models/bid-related-bid-dto.ts +1 -1
  813. package/models/bid-required-document-dto.ts +1 -1
  814. package/models/bid-result-participant-attachment-dto.ts +1 -1
  815. package/models/bid-result-participant-dto.ts +1 -1
  816. package/models/bid-results-response-dto.ts +1 -1
  817. package/models/bid-settlement-line-item-dto.ts +1 -1
  818. package/models/bid-settlement-participant-dto.ts +1 -1
  819. package/models/bid-settlement-response-dto.ts +1 -1
  820. package/models/bid-site-briefing-dto.ts +1 -1
  821. package/models/bid-statement-response-dto.ts +1 -1
  822. package/models/bid-summary-dto.ts +1 -1
  823. package/models/bid-type-public.ts +1 -1
  824. package/models/bid-updated-response-dto.ts +1 -1
  825. package/models/bidding-style-public.ts +1 -1
  826. package/models/cancel-bid-request-dto.ts +1 -1
  827. package/models/cancel-bid200-response.ts +1 -1
  828. package/models/card-payment-request-response-dto.ts +1 -1
  829. package/models/complete-acceptance-request-dto.ts +1 -1
  830. package/models/complete-acceptance200-response.ts +1 -1
  831. package/models/complete-invoice200-response.ts +1 -1
  832. package/models/complete-upload-request-dto.ts +1 -1
  833. package/models/contract-restriction-confirm-input-dto.ts +1 -1
  834. package/models/create-bid-request-dto.ts +1 -1
  835. package/models/create-card-payment-dto.ts +1 -1
  836. package/models/create-card-payment-request-dto.ts +1 -1
  837. package/models/create-card-payment200-response.ts +1 -1
  838. package/models/create-embed-launch201-response.ts +1 -1
  839. package/models/create-external-contract-documents-request-dto.ts +1 -1
  840. package/models/create-external-contract-documents-response-dto.ts +1 -1
  841. package/models/create-file-upload-url201-response.ts +1 -1
  842. package/models/create-upload-url-request-dto.ts +1 -1
  843. package/models/create-webhook-endpoint-request-dto.ts +1 -1
  844. package/models/create-webhook-endpoint201-response.ts +1 -1
  845. package/models/delivery-date-type-public.ts +1 -1
  846. package/models/delivery-method-public.ts +1 -1
  847. package/models/embed-bid-prefill-dto.ts +1 -1
  848. package/models/embed-bid-prefill-item-dto.ts +1 -1
  849. package/models/embed-bid-prefill-manager-dto.ts +1 -1
  850. package/models/embed-launch-request-dto.ts +2 -2
  851. package/models/embed-launch-response-dto.ts +1 -1
  852. package/models/excellent-procurement-public.ts +1 -1
  853. package/models/external-contract-document-item-dto.ts +1 -1
  854. package/models/external-contract-documents-response-dto.ts +1 -1
  855. package/models/external-contract-item-dto.ts +1 -1
  856. package/models/external-contract-snapshot-dto.ts +1 -1
  857. package/models/external-document-inputs-dto.ts +1 -1
  858. package/models/file-meta-response-dto.ts +1 -1
  859. package/models/file-uploaded-response-dto.ts +1 -1
  860. package/models/generated-external-contract-document-dto.ts +1 -1
  861. package/models/get-bid-settlement200-response.ts +1 -1
  862. package/models/get-bid-statement200-response.ts +1 -1
  863. package/models/get-bid200-response.ts +1 -1
  864. package/models/get-file-meta200-response.ts +1 -1
  865. package/models/get-supplier-card-payable-v2200-response.ts +1 -1
  866. package/models/get-webhook-endpoint200-response.ts +1 -1
  867. package/models/green-product-public.ts +1 -1
  868. package/models/handover-type-public.ts +1 -1
  869. package/models/health-controller-check200-response.ts +1 -1
  870. package/models/health-response-dto.ts +1 -1
  871. package/models/hierarchical-region-dto.ts +1 -1
  872. package/models/introspect-request-dto.ts +1 -1
  873. package/models/introspection-response-dto.ts +1 -1
  874. package/models/invalid-param-dto.ts +1 -1
  875. package/models/invoice-completed-response-dto.ts +1 -1
  876. package/models/invoice-split-response-dto.ts +1 -1
  877. package/models/legal-mandatory-public.ts +1 -1
  878. package/models/license-combination-mode.ts +1 -1
  879. package/models/list-bid-results200-response.ts +1 -1
  880. package/models/list-bids200-response-meta.ts +1 -1
  881. package/models/list-bids200-response.ts +1 -1
  882. package/models/list-products200-response.ts +1 -1
  883. package/models/list-suppliers200-response.ts +1 -1
  884. package/models/list-webhook-deliveries-response-dto.ts +1 -1
  885. package/models/list-webhook-deliveries200-response.ts +1 -1
  886. package/models/list-webhook-endpoints200-response.ts +1 -1
  887. package/models/mark-bid-failed-request-dto.ts +1 -1
  888. package/models/mark-bid-failed201-response.ts +1 -1
  889. package/models/nominated-supplier-dto.ts +1 -1
  890. package/models/oauth-error-response-dto.ts +1 -1
  891. package/models/on-bid-award-reverted-request.ts +1 -1
  892. package/models/on-bid-awarded-request.ts +1 -1
  893. package/models/on-bid-canceled-request.ts +1 -1
  894. package/models/on-bid-closed-request.ts +1 -1
  895. package/models/on-bid-failed-request.ts +1 -1
  896. package/models/on-ping-request.ts +1 -1
  897. package/models/partner-webhook-delivery-status.ts +1 -1
  898. package/models/partner-webhook-endpoint-status.ts +1 -1
  899. package/models/partner-webhook-event-type.ts +1 -1
  900. package/models/payment-method-public.ts +1 -1
  901. package/models/preconditions-dto.ts +1 -1
  902. package/models/preliminary-price-region-public.ts +1 -1
  903. package/models/price-score-type-public.ts +1 -1
  904. package/models/pricing-type-public.ts +1 -1
  905. package/models/problem-details-dto.ts +1 -1
  906. package/models/product-receipt-response-dto.ts +1 -1
  907. package/models/product-response-dto.ts +1 -1
  908. package/models/protected-resource-metadata-dto.ts +1 -1
  909. package/models/qualification-review-input-dto.ts +1 -1
  910. package/models/register-award-request-dto.ts +1 -1
  911. package/models/register-award201-response.ts +1 -1
  912. package/models/register-bid201-response.ts +1 -1
  913. package/models/register-semo-contract-request-dto.ts +1 -1
  914. package/models/regulation-type-public.ts +1 -1
  915. package/models/related-bid-relation.ts +1 -1
  916. package/models/request-invoice-split-request-dto.ts +1 -1
  917. package/models/request-invoice-split200-response.ts +1 -1
  918. package/models/retiree-roster-input-dto.ts +1 -1
  919. package/models/retiree-roster-row-dto.ts +1 -1
  920. package/models/revert-award-request-dto.ts +1 -1
  921. package/models/revert-award200-response.ts +1 -1
  922. package/models/revoke-request-dto.ts +1 -1
  923. package/models/semo-contract-registered-response-dto.ts +1 -1
  924. package/models/semo-contract-taxinvoice-status-response-dto.ts +1 -1
  925. package/models/send-webhook-test-event200-response.ts +1 -1
  926. package/models/site-briefing-input-dto.ts +1 -1
  927. package/models/statement-document-dto.ts +1 -1
  928. package/models/statement-product-dto.ts +1 -1
  929. package/models/supplier-card-payable-response-dto.ts +1 -1
  930. package/models/supplier-response-dto.ts +1 -1
  931. package/models/supplier-tax-type.ts +1 -1
  932. package/models/taxation-type-public.ts +1 -1
  933. package/models/token-request-dto.ts +1 -1
  934. package/models/token-response-dto.ts +1 -1
  935. package/models/two-stage-phase-public.ts +1 -1
  936. package/models/update-bid-request-dto.ts +1 -1
  937. package/models/update-bid200-response.ts +1 -1
  938. package/models/update-webhook-endpoint-request-dto.ts +1 -1
  939. package/models/upload-file-request-dto.ts +1 -1
  940. package/models/upload-file201-response.ts +1 -1
  941. package/models/upload-url-created-response-dto.ts +1 -1
  942. package/models/webhook-bid-event-data.ts +1 -1
  943. package/models/webhook-delivery-dto.ts +1 -1
  944. package/models/webhook-endpoint-dto.ts +1 -1
  945. package/models/webhook-endpoint-with-secret-dto.ts +1 -1
  946. package/models/webhook-event-envelope.ts +1 -1
  947. package/models/webhook-ping-event-data.ts +1 -1
  948. package/models/webhook-test-result-dto.ts +1 -1
  949. package/package.json +1 -1
package/README.md CHANGED
@@ -13,7 +13,7 @@ CMARKET V6 Partner API 의 공식 클라이언트 SDK — 외부 ERP 가 입찰
13
13
  TypeScript / Node (npm):
14
14
 
15
15
  ```bash
16
- npm install @cmarket/partner-sdk@45.1.0
16
+ npm install @cmarket/partner-sdk@45.1.1
17
17
  ```
18
18
 
19
19
  Java (Maven):
@@ -22,7 +22,7 @@ Java (Maven):
22
22
  <dependency>
23
23
  <groupId>net.c-market</groupId>
24
24
  <artifactId>partner-sdk</artifactId>
25
- <version>45.1.0</version>
25
+ <version>45.1.1</version>
26
26
  </dependency>
27
27
  ```
28
28
 
@@ -375,7 +375,7 @@ CMARKET 운영팀에 등록해야 합니다(미등록 origin 은 iframe 로드
375
375
 
376
376
  ---
377
377
 
378
- ## @cmarket/partner-sdk@45.1.0
378
+ ## @cmarket/partner-sdk@45.1.1
379
379
 
380
380
  This generator creates TypeScript/JavaScript client that utilizes [axios](https://github.com/axios/axios). The generated Node module can be used in the following environments:
381
381
 
@@ -413,7 +413,7 @@ navigate to the folder of your consuming project and run one of the following co
413
413
  _published:_
414
414
 
415
415
  ```
416
- npm install @cmarket/partner-sdk@45.1.0 --save
416
+ npm install @cmarket/partner-sdk@45.1.1 --save
417
417
  ```
418
418
 
419
419
  _unPublished (not recommended):_
package/api/embed-api.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * CMARKET V6 Partner API
5
5
  * 외부 ERP 연동용 RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` 플로우). `/oauth/token`에서 토큰을 발급받아 `Authorization: Bearer <token>` 헤더로 실으세요. ## 권한 — 두 개의 독립된 축 `403`을 만났다면 둘 중 어느 축에 걸린 것인지 먼저 구분하세요. - **스코프** = *무엇을 할 수 있나*. 토큰에 부여된 `bids:read`·`contracts:write` 등입니다. 미보유 시 `…/insufficient-scope`. - **대행 범위** = *누구의 데이터를 다룰 수 있나*. API 키 설정이며 스코프로 표현되지 않습니다. 범위 밖이면 스코프와 무관하게 403입니다. 대행 범위는 키마다 둘 중 하나로 설정됩니다 — **소속 그룹 전원**(기관 키. 사업처·부서 계정이 새로 생겨도 자동 포함) 또는 **지정 발주기관 목록**(계약으로 합의된 목록). 범위를 넓혀야 하면 스코프가 아니라 키 설정 변경을 요청하세요. ## 성공 응답 봉투 `/v2`의 모든 2xx 본문은 `{ \"data\": … }`입니다. 단일 리소스든 목록이든 같습니다. **목록은 `data`가 배열이고 `meta`가 항상 함께 실립니다** — `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 리소스 응답에는 `meta`가 나가지 않습니다. 봉투를 쓰지 않는 표면은 둘입니다. `/oauth/_*`와 `/.well-known/_*`는 각각 RFC 6749·RFC 8414·RFC 9728이 최상위 필드를 규정하고, 파일 내용 응답은 본문이 JSON이 아닙니다. 에러 응답에는 봉투를 씌우지 않습니다 — 아래 problem+json이 단독으로 책임집니다. ## 조건부 요청 (ETag) `/v2`의 모든 `GET` 응답에 weak `ETag`(`W/\"…\"`)가 실립니다. 받은 값을 다음 요청의 `If-None-Match` 헤더로 되보내면, 내용이 그대로일 때 `304 Not Modified`를 본문 없이 받습니다. 결과가 나기를 기다리며 같은 자원을 반복 조회하는 연동이라면 이 헤더 하나로 전송량이 사라집니다. ## 에러 (RFC 9457 problem+json) 모든 에러 응답은 `application/problem+json`입니다. **HTTP status + `type` URI** 로 분기하세요. - `retryable`(boolean): 자동 재시도 안전 여부. `true`(429·5xx transient)면 backoff 후 재시도하고, `false`면 요청을 고쳐야 합니다. - `traceId`: 요청 추적 id. `X-Correlation-Id` 응답 헤더와 같은 값입니다 — 문의할 때 이 값을 첨부하세요. - `correlationId`: `traceId`와 같은 값의 옛 이름. 기존 연동 호환으로 함께 실립니다. 새 연동은 `traceId`를 읽으세요. - `invalid-params`: 검증 실패(400 `…/validation-failed`) 시 위반 필드 경로 목록(RFC 9457 확장, 값 없음). - `code`: 조달플랫폼이 요청을 거부한 **사유 코드**(`…/upstream-*` 응답에 함께 옵니다). `type`은 상태 수준이고 `detail`은 고정 문구라, 무엇을 고쳐야 하는지는 이 값이 알려 줍니다 — 예: `BID_INVALID_BID_DATE_RANGE`(마감이 시작보다 이름), `BID_DUPLICATE_PURCHASE_NO`(같은 조달번호의 공고가 진행 중). 안정 식별자이므로 문자열로 분기해도 됩니다. `type`은 `https://problems.cmarket.io/partner/<slug>` 형태의 **안정 식별자**입니다. RFC 9457 §3.1.1이 허용하는 대로 이 URI는 **역참조(dereference)되지 않습니다** — 브라우저로 열지 말고 문자열 비교로만 쓰세요. slug 목록과 의미는 각 엔드포인트의 응답 설명에 status 별로 적혀 있습니다. ### 멱등성 위반: 409와 422의 차이 - `409` `…/idempotency-key-conflict` — 같은 키의 **원 요청이 아직 처리 중**입니다. 잠시 뒤 같은 키로 다시 부르면 그 결과를 받습니다. - `422` `…/idempotency-key-reused` — 같은 키를 **다른 body** 로 보냈습니다. 재시도해도 영원히 같은 실패이니 새 키를 쓰거나 body를 되돌리세요. ## Rate Limit 전역 **60 요청/분 per `client_id`**, 토큰 발급(`/oauth/token`)은 **5 요청/분** 입니다. 초과 시 `429`(`type: …/too-many-requests`). 쿼터는 두 가지 표기로 함께 나갑니다 — 신규 연동은 표준 필드를 쓰세요. - **표준**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (정책) · `RateLimit: \"default\";r=59;t=42` (잔량 r, 리셋까지 t 초) - **레거시**(관용): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. 기존 연동 호환을 위해 유지합니다. `429` 에서는 `Retry-After`(초)가 우선합니다. 대량 동기화(품목 단위 반복 등록 등)는 `Retry-After` 만큼 backoff 후 재시도하세요. ## 추적 요청에 `X-Correlation-Id` 헤더를 실으면 그대로 echo 되고, 없으면 서버가 발급합니다. 모든 응답(성공/에러)에 `X-Correlation-Id`가 실립니다. ## 전방호환 — 모르는 필드와 값에서 깨지지 않게 다음 셋은 breaking 변경으로 보지 않으며 minor 릴리스에서 예고 없이 일어납니다. 이 전제로 구현하세요. - **선택 필드 추가**: 모르는 필드는 무시하세요. 엄격 파서(unknown key 거부)를 쓰지 마세요. - **enum 값 추가**: 상태·낙찰방법 등에 새 값이 생깁니다. 모르는 값을 만나면 예외를 던지지 말고 원문 문자열을 보존하세요. - **problem `type` slug 추가**: 모르는 slug은 **HTTP status로 폴백**해 분기하세요. ## 버전 수명(deprecation/sunset) - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` 헤더로 통지합니다. 이 헤더를 모니터링하세요.
6
6
  *
7
- * The version of the OpenAPI document: 45.1.0
7
+ * The version of the OpenAPI document: 45.1.1
8
8
  * Contact: semo.io.kr@gmail.com
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -33,7 +33,7 @@ import type { ProblemDetailsDto } from '../models';
33
33
  export const EmbedApiAxiosParamCreator = function (configuration?: Configuration) {
34
34
  return {
35
35
  /**
36
- * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
36
+ * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **`memberId`는 ERP 백엔드가 정합니다** — 브라우저가 보낸 값을 그대로 넘기지 마세요. 씨마켓은 그 값이 API 키의 대행 범위 안인지만 확인하므로, 프런트가 지정하게 두면 같은 기관의 다른 담당자 명의로 화면이 열립니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
37
37
  * @summary 임베드 launch 발급
38
38
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
39
39
  * @param {*} [options] Override http request option.
@@ -81,7 +81,7 @@ export const EmbedApiFp = function(configuration?: Configuration) {
81
81
  const localVarAxiosParamCreator = EmbedApiAxiosParamCreator(configuration)
82
82
  return {
83
83
  /**
84
- * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
84
+ * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **`memberId`는 ERP 백엔드가 정합니다** — 브라우저가 보낸 값을 그대로 넘기지 마세요. 씨마켓은 그 값이 API 키의 대행 범위 안인지만 확인하므로, 프런트가 지정하게 두면 같은 기관의 다른 담당자 명의로 화면이 열립니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
85
85
  * @summary 임베드 launch 발급
86
86
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
87
87
  * @param {*} [options] Override http request option.
@@ -103,7 +103,7 @@ export const EmbedApiFactory = function (configuration?: Configuration, basePath
103
103
  const localVarFp = EmbedApiFp(configuration)
104
104
  return {
105
105
  /**
106
- * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
106
+ * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **`memberId`는 ERP 백엔드가 정합니다** — 브라우저가 보낸 값을 그대로 넘기지 마세요. 씨마켓은 그 값이 API 키의 대행 범위 안인지만 확인하므로, 프런트가 지정하게 두면 같은 기관의 다른 담당자 명의로 화면이 열립니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
107
107
  * @summary 임베드 launch 발급
108
108
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
109
109
  * @param {*} [options] Override http request option.
@@ -120,7 +120,7 @@ export const EmbedApiFactory = function (configuration?: Configuration, basePath
120
120
  */
121
121
  export class EmbedApi extends BaseAPI {
122
122
  /**
123
- * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
123
+ * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **`memberId`는 ERP 백엔드가 정합니다** — 브라우저가 보낸 값을 그대로 넘기지 마세요. 씨마켓은 그 값이 API 키의 대행 범위 안인지만 확인하므로, 프런트가 지정하게 두면 같은 기관의 다른 담당자 명의로 화면이 열립니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
124
124
  * @summary 임베드 launch 발급
125
125
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
126
126
  * @param {*} [options] Override http request option.
package/api/oauth-api.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * CMARKET V6 Partner API
5
5
  * 외부 ERP 연동용 RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` 플로우). `/oauth/token`에서 토큰을 발급받아 `Authorization: Bearer <token>` 헤더로 실으세요. ## 권한 — 두 개의 독립된 축 `403`을 만났다면 둘 중 어느 축에 걸린 것인지 먼저 구분하세요. - **스코프** = *무엇을 할 수 있나*. 토큰에 부여된 `bids:read`·`contracts:write` 등입니다. 미보유 시 `…/insufficient-scope`. - **대행 범위** = *누구의 데이터를 다룰 수 있나*. API 키 설정이며 스코프로 표현되지 않습니다. 범위 밖이면 스코프와 무관하게 403입니다. 대행 범위는 키마다 둘 중 하나로 설정됩니다 — **소속 그룹 전원**(기관 키. 사업처·부서 계정이 새로 생겨도 자동 포함) 또는 **지정 발주기관 목록**(계약으로 합의된 목록). 범위를 넓혀야 하면 스코프가 아니라 키 설정 변경을 요청하세요. ## 성공 응답 봉투 `/v2`의 모든 2xx 본문은 `{ \"data\": … }`입니다. 단일 리소스든 목록이든 같습니다. **목록은 `data`가 배열이고 `meta`가 항상 함께 실립니다** — `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 리소스 응답에는 `meta`가 나가지 않습니다. 봉투를 쓰지 않는 표면은 둘입니다. `/oauth/_*`와 `/.well-known/_*`는 각각 RFC 6749·RFC 8414·RFC 9728이 최상위 필드를 규정하고, 파일 내용 응답은 본문이 JSON이 아닙니다. 에러 응답에는 봉투를 씌우지 않습니다 — 아래 problem+json이 단독으로 책임집니다. ## 조건부 요청 (ETag) `/v2`의 모든 `GET` 응답에 weak `ETag`(`W/\"…\"`)가 실립니다. 받은 값을 다음 요청의 `If-None-Match` 헤더로 되보내면, 내용이 그대로일 때 `304 Not Modified`를 본문 없이 받습니다. 결과가 나기를 기다리며 같은 자원을 반복 조회하는 연동이라면 이 헤더 하나로 전송량이 사라집니다. ## 에러 (RFC 9457 problem+json) 모든 에러 응답은 `application/problem+json`입니다. **HTTP status + `type` URI** 로 분기하세요. - `retryable`(boolean): 자동 재시도 안전 여부. `true`(429·5xx transient)면 backoff 후 재시도하고, `false`면 요청을 고쳐야 합니다. - `traceId`: 요청 추적 id. `X-Correlation-Id` 응답 헤더와 같은 값입니다 — 문의할 때 이 값을 첨부하세요. - `correlationId`: `traceId`와 같은 값의 옛 이름. 기존 연동 호환으로 함께 실립니다. 새 연동은 `traceId`를 읽으세요. - `invalid-params`: 검증 실패(400 `…/validation-failed`) 시 위반 필드 경로 목록(RFC 9457 확장, 값 없음). - `code`: 조달플랫폼이 요청을 거부한 **사유 코드**(`…/upstream-*` 응답에 함께 옵니다). `type`은 상태 수준이고 `detail`은 고정 문구라, 무엇을 고쳐야 하는지는 이 값이 알려 줍니다 — 예: `BID_INVALID_BID_DATE_RANGE`(마감이 시작보다 이름), `BID_DUPLICATE_PURCHASE_NO`(같은 조달번호의 공고가 진행 중). 안정 식별자이므로 문자열로 분기해도 됩니다. `type`은 `https://problems.cmarket.io/partner/<slug>` 형태의 **안정 식별자**입니다. RFC 9457 §3.1.1이 허용하는 대로 이 URI는 **역참조(dereference)되지 않습니다** — 브라우저로 열지 말고 문자열 비교로만 쓰세요. slug 목록과 의미는 각 엔드포인트의 응답 설명에 status 별로 적혀 있습니다. ### 멱등성 위반: 409와 422의 차이 - `409` `…/idempotency-key-conflict` — 같은 키의 **원 요청이 아직 처리 중**입니다. 잠시 뒤 같은 키로 다시 부르면 그 결과를 받습니다. - `422` `…/idempotency-key-reused` — 같은 키를 **다른 body** 로 보냈습니다. 재시도해도 영원히 같은 실패이니 새 키를 쓰거나 body를 되돌리세요. ## Rate Limit 전역 **60 요청/분 per `client_id`**, 토큰 발급(`/oauth/token`)은 **5 요청/분** 입니다. 초과 시 `429`(`type: …/too-many-requests`). 쿼터는 두 가지 표기로 함께 나갑니다 — 신규 연동은 표준 필드를 쓰세요. - **표준**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (정책) · `RateLimit: \"default\";r=59;t=42` (잔량 r, 리셋까지 t 초) - **레거시**(관용): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. 기존 연동 호환을 위해 유지합니다. `429` 에서는 `Retry-After`(초)가 우선합니다. 대량 동기화(품목 단위 반복 등록 등)는 `Retry-After` 만큼 backoff 후 재시도하세요. ## 추적 요청에 `X-Correlation-Id` 헤더를 실으면 그대로 echo 되고, 없으면 서버가 발급합니다. 모든 응답(성공/에러)에 `X-Correlation-Id`가 실립니다. ## 전방호환 — 모르는 필드와 값에서 깨지지 않게 다음 셋은 breaking 변경으로 보지 않으며 minor 릴리스에서 예고 없이 일어납니다. 이 전제로 구현하세요. - **선택 필드 추가**: 모르는 필드는 무시하세요. 엄격 파서(unknown key 거부)를 쓰지 마세요. - **enum 값 추가**: 상태·낙찰방법 등에 새 값이 생깁니다. 모르는 값을 만나면 예외를 던지지 말고 원문 문자열을 보존하세요. - **problem `type` slug 추가**: 모르는 slug은 **HTTP status로 폴백**해 분기하세요. ## 버전 수명(deprecation/sunset) - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` 헤더로 통지합니다. 이 헤더를 모니터링하세요.
6
6
  *
7
- * The version of the OpenAPI document: 45.1.0
7
+ * The version of the OpenAPI document: 45.1.1
8
8
  * Contact: semo.io.kr@gmail.com
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -4,7 +4,7 @@
4
4
  * CMARKET V6 Partner API
5
5
  * 외부 ERP 연동용 RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` 플로우). `/oauth/token`에서 토큰을 발급받아 `Authorization: Bearer <token>` 헤더로 실으세요. ## 권한 — 두 개의 독립된 축 `403`을 만났다면 둘 중 어느 축에 걸린 것인지 먼저 구분하세요. - **스코프** = *무엇을 할 수 있나*. 토큰에 부여된 `bids:read`·`contracts:write` 등입니다. 미보유 시 `…/insufficient-scope`. - **대행 범위** = *누구의 데이터를 다룰 수 있나*. API 키 설정이며 스코프로 표현되지 않습니다. 범위 밖이면 스코프와 무관하게 403입니다. 대행 범위는 키마다 둘 중 하나로 설정됩니다 — **소속 그룹 전원**(기관 키. 사업처·부서 계정이 새로 생겨도 자동 포함) 또는 **지정 발주기관 목록**(계약으로 합의된 목록). 범위를 넓혀야 하면 스코프가 아니라 키 설정 변경을 요청하세요. ## 성공 응답 봉투 `/v2`의 모든 2xx 본문은 `{ \"data\": … }`입니다. 단일 리소스든 목록이든 같습니다. **목록은 `data`가 배열이고 `meta`가 항상 함께 실립니다** — `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 리소스 응답에는 `meta`가 나가지 않습니다. 봉투를 쓰지 않는 표면은 둘입니다. `/oauth/_*`와 `/.well-known/_*`는 각각 RFC 6749·RFC 8414·RFC 9728이 최상위 필드를 규정하고, 파일 내용 응답은 본문이 JSON이 아닙니다. 에러 응답에는 봉투를 씌우지 않습니다 — 아래 problem+json이 단독으로 책임집니다. ## 조건부 요청 (ETag) `/v2`의 모든 `GET` 응답에 weak `ETag`(`W/\"…\"`)가 실립니다. 받은 값을 다음 요청의 `If-None-Match` 헤더로 되보내면, 내용이 그대로일 때 `304 Not Modified`를 본문 없이 받습니다. 결과가 나기를 기다리며 같은 자원을 반복 조회하는 연동이라면 이 헤더 하나로 전송량이 사라집니다. ## 에러 (RFC 9457 problem+json) 모든 에러 응답은 `application/problem+json`입니다. **HTTP status + `type` URI** 로 분기하세요. - `retryable`(boolean): 자동 재시도 안전 여부. `true`(429·5xx transient)면 backoff 후 재시도하고, `false`면 요청을 고쳐야 합니다. - `traceId`: 요청 추적 id. `X-Correlation-Id` 응답 헤더와 같은 값입니다 — 문의할 때 이 값을 첨부하세요. - `correlationId`: `traceId`와 같은 값의 옛 이름. 기존 연동 호환으로 함께 실립니다. 새 연동은 `traceId`를 읽으세요. - `invalid-params`: 검증 실패(400 `…/validation-failed`) 시 위반 필드 경로 목록(RFC 9457 확장, 값 없음). - `code`: 조달플랫폼이 요청을 거부한 **사유 코드**(`…/upstream-*` 응답에 함께 옵니다). `type`은 상태 수준이고 `detail`은 고정 문구라, 무엇을 고쳐야 하는지는 이 값이 알려 줍니다 — 예: `BID_INVALID_BID_DATE_RANGE`(마감이 시작보다 이름), `BID_DUPLICATE_PURCHASE_NO`(같은 조달번호의 공고가 진행 중). 안정 식별자이므로 문자열로 분기해도 됩니다. `type`은 `https://problems.cmarket.io/partner/<slug>` 형태의 **안정 식별자**입니다. RFC 9457 §3.1.1이 허용하는 대로 이 URI는 **역참조(dereference)되지 않습니다** — 브라우저로 열지 말고 문자열 비교로만 쓰세요. slug 목록과 의미는 각 엔드포인트의 응답 설명에 status 별로 적혀 있습니다. ### 멱등성 위반: 409와 422의 차이 - `409` `…/idempotency-key-conflict` — 같은 키의 **원 요청이 아직 처리 중**입니다. 잠시 뒤 같은 키로 다시 부르면 그 결과를 받습니다. - `422` `…/idempotency-key-reused` — 같은 키를 **다른 body** 로 보냈습니다. 재시도해도 영원히 같은 실패이니 새 키를 쓰거나 body를 되돌리세요. ## Rate Limit 전역 **60 요청/분 per `client_id`**, 토큰 발급(`/oauth/token`)은 **5 요청/분** 입니다. 초과 시 `429`(`type: …/too-many-requests`). 쿼터는 두 가지 표기로 함께 나갑니다 — 신규 연동은 표준 필드를 쓰세요. - **표준**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (정책) · `RateLimit: \"default\";r=59;t=42` (잔량 r, 리셋까지 t 초) - **레거시**(관용): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. 기존 연동 호환을 위해 유지합니다. `429` 에서는 `Retry-After`(초)가 우선합니다. 대량 동기화(품목 단위 반복 등록 등)는 `Retry-After` 만큼 backoff 후 재시도하세요. ## 추적 요청에 `X-Correlation-Id` 헤더를 실으면 그대로 echo 되고, 없으면 서버가 발급합니다. 모든 응답(성공/에러)에 `X-Correlation-Id`가 실립니다. ## 전방호환 — 모르는 필드와 값에서 깨지지 않게 다음 셋은 breaking 변경으로 보지 않으며 minor 릴리스에서 예고 없이 일어납니다. 이 전제로 구현하세요. - **선택 필드 추가**: 모르는 필드는 무시하세요. 엄격 파서(unknown key 거부)를 쓰지 마세요. - **enum 값 추가**: 상태·낙찰방법 등에 새 값이 생깁니다. 모르는 값을 만나면 예외를 던지지 말고 원문 문자열을 보존하세요. - **problem `type` slug 추가**: 모르는 slug은 **HTTP status로 폴백**해 분기하세요. ## 버전 수명(deprecation/sunset) - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` 헤더로 통지합니다. 이 헤더를 모니터링하세요.
6
6
  *
7
- * The version of the OpenAPI document: 45.1.0
7
+ * The version of the OpenAPI document: 45.1.1
8
8
  * Contact: semo.io.kr@gmail.com
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -4,7 +4,7 @@
4
4
  * CMARKET V6 Partner API
5
5
  * 외부 ERP 연동용 RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` 플로우). `/oauth/token`에서 토큰을 발급받아 `Authorization: Bearer <token>` 헤더로 실으세요. ## 권한 — 두 개의 독립된 축 `403`을 만났다면 둘 중 어느 축에 걸린 것인지 먼저 구분하세요. - **스코프** = *무엇을 할 수 있나*. 토큰에 부여된 `bids:read`·`contracts:write` 등입니다. 미보유 시 `…/insufficient-scope`. - **대행 범위** = *누구의 데이터를 다룰 수 있나*. API 키 설정이며 스코프로 표현되지 않습니다. 범위 밖이면 스코프와 무관하게 403입니다. 대행 범위는 키마다 둘 중 하나로 설정됩니다 — **소속 그룹 전원**(기관 키. 사업처·부서 계정이 새로 생겨도 자동 포함) 또는 **지정 발주기관 목록**(계약으로 합의된 목록). 범위를 넓혀야 하면 스코프가 아니라 키 설정 변경을 요청하세요. ## 성공 응답 봉투 `/v2`의 모든 2xx 본문은 `{ \"data\": … }`입니다. 단일 리소스든 목록이든 같습니다. **목록은 `data`가 배열이고 `meta`가 항상 함께 실립니다** — `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 리소스 응답에는 `meta`가 나가지 않습니다. 봉투를 쓰지 않는 표면은 둘입니다. `/oauth/_*`와 `/.well-known/_*`는 각각 RFC 6749·RFC 8414·RFC 9728이 최상위 필드를 규정하고, 파일 내용 응답은 본문이 JSON이 아닙니다. 에러 응답에는 봉투를 씌우지 않습니다 — 아래 problem+json이 단독으로 책임집니다. ## 조건부 요청 (ETag) `/v2`의 모든 `GET` 응답에 weak `ETag`(`W/\"…\"`)가 실립니다. 받은 값을 다음 요청의 `If-None-Match` 헤더로 되보내면, 내용이 그대로일 때 `304 Not Modified`를 본문 없이 받습니다. 결과가 나기를 기다리며 같은 자원을 반복 조회하는 연동이라면 이 헤더 하나로 전송량이 사라집니다. ## 에러 (RFC 9457 problem+json) 모든 에러 응답은 `application/problem+json`입니다. **HTTP status + `type` URI** 로 분기하세요. - `retryable`(boolean): 자동 재시도 안전 여부. `true`(429·5xx transient)면 backoff 후 재시도하고, `false`면 요청을 고쳐야 합니다. - `traceId`: 요청 추적 id. `X-Correlation-Id` 응답 헤더와 같은 값입니다 — 문의할 때 이 값을 첨부하세요. - `correlationId`: `traceId`와 같은 값의 옛 이름. 기존 연동 호환으로 함께 실립니다. 새 연동은 `traceId`를 읽으세요. - `invalid-params`: 검증 실패(400 `…/validation-failed`) 시 위반 필드 경로 목록(RFC 9457 확장, 값 없음). - `code`: 조달플랫폼이 요청을 거부한 **사유 코드**(`…/upstream-*` 응답에 함께 옵니다). `type`은 상태 수준이고 `detail`은 고정 문구라, 무엇을 고쳐야 하는지는 이 값이 알려 줍니다 — 예: `BID_INVALID_BID_DATE_RANGE`(마감이 시작보다 이름), `BID_DUPLICATE_PURCHASE_NO`(같은 조달번호의 공고가 진행 중). 안정 식별자이므로 문자열로 분기해도 됩니다. `type`은 `https://problems.cmarket.io/partner/<slug>` 형태의 **안정 식별자**입니다. RFC 9457 §3.1.1이 허용하는 대로 이 URI는 **역참조(dereference)되지 않습니다** — 브라우저로 열지 말고 문자열 비교로만 쓰세요. slug 목록과 의미는 각 엔드포인트의 응답 설명에 status 별로 적혀 있습니다. ### 멱등성 위반: 409와 422의 차이 - `409` `…/idempotency-key-conflict` — 같은 키의 **원 요청이 아직 처리 중**입니다. 잠시 뒤 같은 키로 다시 부르면 그 결과를 받습니다. - `422` `…/idempotency-key-reused` — 같은 키를 **다른 body** 로 보냈습니다. 재시도해도 영원히 같은 실패이니 새 키를 쓰거나 body를 되돌리세요. ## Rate Limit 전역 **60 요청/분 per `client_id`**, 토큰 발급(`/oauth/token`)은 **5 요청/분** 입니다. 초과 시 `429`(`type: …/too-many-requests`). 쿼터는 두 가지 표기로 함께 나갑니다 — 신규 연동은 표준 필드를 쓰세요. - **표준**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (정책) · `RateLimit: \"default\";r=59;t=42` (잔량 r, 리셋까지 t 초) - **레거시**(관용): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. 기존 연동 호환을 위해 유지합니다. `429` 에서는 `Retry-After`(초)가 우선합니다. 대량 동기화(품목 단위 반복 등록 등)는 `Retry-After` 만큼 backoff 후 재시도하세요. ## 추적 요청에 `X-Correlation-Id` 헤더를 실으면 그대로 echo 되고, 없으면 서버가 발급합니다. 모든 응답(성공/에러)에 `X-Correlation-Id`가 실립니다. ## 전방호환 — 모르는 필드와 값에서 깨지지 않게 다음 셋은 breaking 변경으로 보지 않으며 minor 릴리스에서 예고 없이 일어납니다. 이 전제로 구현하세요. - **선택 필드 추가**: 모르는 필드는 무시하세요. 엄격 파서(unknown key 거부)를 쓰지 마세요. - **enum 값 추가**: 상태·낙찰방법 등에 새 값이 생깁니다. 모르는 값을 만나면 예외를 던지지 말고 원문 문자열을 보존하세요. - **problem `type` slug 추가**: 모르는 slug은 **HTTP status로 폴백**해 분기하세요. ## 버전 수명(deprecation/sunset) - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` 헤더로 통지합니다. 이 헤더를 모니터링하세요.
6
6
  *
7
- * The version of the OpenAPI document: 45.1.0
7
+ * The version of the OpenAPI document: 45.1.1
8
8
  * Contact: semo.io.kr@gmail.com
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -4,7 +4,7 @@
4
4
  * CMARKET V6 Partner API
5
5
  * 외부 ERP 연동용 RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` 플로우). `/oauth/token`에서 토큰을 발급받아 `Authorization: Bearer <token>` 헤더로 실으세요. ## 권한 — 두 개의 독립된 축 `403`을 만났다면 둘 중 어느 축에 걸린 것인지 먼저 구분하세요. - **스코프** = *무엇을 할 수 있나*. 토큰에 부여된 `bids:read`·`contracts:write` 등입니다. 미보유 시 `…/insufficient-scope`. - **대행 범위** = *누구의 데이터를 다룰 수 있나*. API 키 설정이며 스코프로 표현되지 않습니다. 범위 밖이면 스코프와 무관하게 403입니다. 대행 범위는 키마다 둘 중 하나로 설정됩니다 — **소속 그룹 전원**(기관 키. 사업처·부서 계정이 새로 생겨도 자동 포함) 또는 **지정 발주기관 목록**(계약으로 합의된 목록). 범위를 넓혀야 하면 스코프가 아니라 키 설정 변경을 요청하세요. ## 성공 응답 봉투 `/v2`의 모든 2xx 본문은 `{ \"data\": … }`입니다. 단일 리소스든 목록이든 같습니다. **목록은 `data`가 배열이고 `meta`가 항상 함께 실립니다** — `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 리소스 응답에는 `meta`가 나가지 않습니다. 봉투를 쓰지 않는 표면은 둘입니다. `/oauth/_*`와 `/.well-known/_*`는 각각 RFC 6749·RFC 8414·RFC 9728이 최상위 필드를 규정하고, 파일 내용 응답은 본문이 JSON이 아닙니다. 에러 응답에는 봉투를 씌우지 않습니다 — 아래 problem+json이 단독으로 책임집니다. ## 조건부 요청 (ETag) `/v2`의 모든 `GET` 응답에 weak `ETag`(`W/\"…\"`)가 실립니다. 받은 값을 다음 요청의 `If-None-Match` 헤더로 되보내면, 내용이 그대로일 때 `304 Not Modified`를 본문 없이 받습니다. 결과가 나기를 기다리며 같은 자원을 반복 조회하는 연동이라면 이 헤더 하나로 전송량이 사라집니다. ## 에러 (RFC 9457 problem+json) 모든 에러 응답은 `application/problem+json`입니다. **HTTP status + `type` URI** 로 분기하세요. - `retryable`(boolean): 자동 재시도 안전 여부. `true`(429·5xx transient)면 backoff 후 재시도하고, `false`면 요청을 고쳐야 합니다. - `traceId`: 요청 추적 id. `X-Correlation-Id` 응답 헤더와 같은 값입니다 — 문의할 때 이 값을 첨부하세요. - `correlationId`: `traceId`와 같은 값의 옛 이름. 기존 연동 호환으로 함께 실립니다. 새 연동은 `traceId`를 읽으세요. - `invalid-params`: 검증 실패(400 `…/validation-failed`) 시 위반 필드 경로 목록(RFC 9457 확장, 값 없음). - `code`: 조달플랫폼이 요청을 거부한 **사유 코드**(`…/upstream-*` 응답에 함께 옵니다). `type`은 상태 수준이고 `detail`은 고정 문구라, 무엇을 고쳐야 하는지는 이 값이 알려 줍니다 — 예: `BID_INVALID_BID_DATE_RANGE`(마감이 시작보다 이름), `BID_DUPLICATE_PURCHASE_NO`(같은 조달번호의 공고가 진행 중). 안정 식별자이므로 문자열로 분기해도 됩니다. `type`은 `https://problems.cmarket.io/partner/<slug>` 형태의 **안정 식별자**입니다. RFC 9457 §3.1.1이 허용하는 대로 이 URI는 **역참조(dereference)되지 않습니다** — 브라우저로 열지 말고 문자열 비교로만 쓰세요. slug 목록과 의미는 각 엔드포인트의 응답 설명에 status 별로 적혀 있습니다. ### 멱등성 위반: 409와 422의 차이 - `409` `…/idempotency-key-conflict` — 같은 키의 **원 요청이 아직 처리 중**입니다. 잠시 뒤 같은 키로 다시 부르면 그 결과를 받습니다. - `422` `…/idempotency-key-reused` — 같은 키를 **다른 body** 로 보냈습니다. 재시도해도 영원히 같은 실패이니 새 키를 쓰거나 body를 되돌리세요. ## Rate Limit 전역 **60 요청/분 per `client_id`**, 토큰 발급(`/oauth/token`)은 **5 요청/분** 입니다. 초과 시 `429`(`type: …/too-many-requests`). 쿼터는 두 가지 표기로 함께 나갑니다 — 신규 연동은 표준 필드를 쓰세요. - **표준**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (정책) · `RateLimit: \"default\";r=59;t=42` (잔량 r, 리셋까지 t 초) - **레거시**(관용): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. 기존 연동 호환을 위해 유지합니다. `429` 에서는 `Retry-After`(초)가 우선합니다. 대량 동기화(품목 단위 반복 등록 등)는 `Retry-After` 만큼 backoff 후 재시도하세요. ## 추적 요청에 `X-Correlation-Id` 헤더를 실으면 그대로 echo 되고, 없으면 서버가 발급합니다. 모든 응답(성공/에러)에 `X-Correlation-Id`가 실립니다. ## 전방호환 — 모르는 필드와 값에서 깨지지 않게 다음 셋은 breaking 변경으로 보지 않으며 minor 릴리스에서 예고 없이 일어납니다. 이 전제로 구현하세요. - **선택 필드 추가**: 모르는 필드는 무시하세요. 엄격 파서(unknown key 거부)를 쓰지 마세요. - **enum 값 추가**: 상태·낙찰방법 등에 새 값이 생깁니다. 모르는 값을 만나면 예외를 던지지 말고 원문 문자열을 보존하세요. - **problem `type` slug 추가**: 모르는 slug은 **HTTP status로 폴백**해 분기하세요. ## 버전 수명(deprecation/sunset) - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` 헤더로 통지합니다. 이 헤더를 모니터링하세요.
6
6
  *
7
- * The version of the OpenAPI document: 45.1.0
7
+ * The version of the OpenAPI document: 45.1.1
8
8
  * Contact: semo.io.kr@gmail.com
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -4,7 +4,7 @@
4
4
  * CMARKET V6 Partner API
5
5
  * 외부 ERP 연동용 RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` 플로우). `/oauth/token`에서 토큰을 발급받아 `Authorization: Bearer <token>` 헤더로 실으세요. ## 권한 — 두 개의 독립된 축 `403`을 만났다면 둘 중 어느 축에 걸린 것인지 먼저 구분하세요. - **스코프** = *무엇을 할 수 있나*. 토큰에 부여된 `bids:read`·`contracts:write` 등입니다. 미보유 시 `…/insufficient-scope`. - **대행 범위** = *누구의 데이터를 다룰 수 있나*. API 키 설정이며 스코프로 표현되지 않습니다. 범위 밖이면 스코프와 무관하게 403입니다. 대행 범위는 키마다 둘 중 하나로 설정됩니다 — **소속 그룹 전원**(기관 키. 사업처·부서 계정이 새로 생겨도 자동 포함) 또는 **지정 발주기관 목록**(계약으로 합의된 목록). 범위를 넓혀야 하면 스코프가 아니라 키 설정 변경을 요청하세요. ## 성공 응답 봉투 `/v2`의 모든 2xx 본문은 `{ \"data\": … }`입니다. 단일 리소스든 목록이든 같습니다. **목록은 `data`가 배열이고 `meta`가 항상 함께 실립니다** — `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 리소스 응답에는 `meta`가 나가지 않습니다. 봉투를 쓰지 않는 표면은 둘입니다. `/oauth/_*`와 `/.well-known/_*`는 각각 RFC 6749·RFC 8414·RFC 9728이 최상위 필드를 규정하고, 파일 내용 응답은 본문이 JSON이 아닙니다. 에러 응답에는 봉투를 씌우지 않습니다 — 아래 problem+json이 단독으로 책임집니다. ## 조건부 요청 (ETag) `/v2`의 모든 `GET` 응답에 weak `ETag`(`W/\"…\"`)가 실립니다. 받은 값을 다음 요청의 `If-None-Match` 헤더로 되보내면, 내용이 그대로일 때 `304 Not Modified`를 본문 없이 받습니다. 결과가 나기를 기다리며 같은 자원을 반복 조회하는 연동이라면 이 헤더 하나로 전송량이 사라집니다. ## 에러 (RFC 9457 problem+json) 모든 에러 응답은 `application/problem+json`입니다. **HTTP status + `type` URI** 로 분기하세요. - `retryable`(boolean): 자동 재시도 안전 여부. `true`(429·5xx transient)면 backoff 후 재시도하고, `false`면 요청을 고쳐야 합니다. - `traceId`: 요청 추적 id. `X-Correlation-Id` 응답 헤더와 같은 값입니다 — 문의할 때 이 값을 첨부하세요. - `correlationId`: `traceId`와 같은 값의 옛 이름. 기존 연동 호환으로 함께 실립니다. 새 연동은 `traceId`를 읽으세요. - `invalid-params`: 검증 실패(400 `…/validation-failed`) 시 위반 필드 경로 목록(RFC 9457 확장, 값 없음). - `code`: 조달플랫폼이 요청을 거부한 **사유 코드**(`…/upstream-*` 응답에 함께 옵니다). `type`은 상태 수준이고 `detail`은 고정 문구라, 무엇을 고쳐야 하는지는 이 값이 알려 줍니다 — 예: `BID_INVALID_BID_DATE_RANGE`(마감이 시작보다 이름), `BID_DUPLICATE_PURCHASE_NO`(같은 조달번호의 공고가 진행 중). 안정 식별자이므로 문자열로 분기해도 됩니다. `type`은 `https://problems.cmarket.io/partner/<slug>` 형태의 **안정 식별자**입니다. RFC 9457 §3.1.1이 허용하는 대로 이 URI는 **역참조(dereference)되지 않습니다** — 브라우저로 열지 말고 문자열 비교로만 쓰세요. slug 목록과 의미는 각 엔드포인트의 응답 설명에 status 별로 적혀 있습니다. ### 멱등성 위반: 409와 422의 차이 - `409` `…/idempotency-key-conflict` — 같은 키의 **원 요청이 아직 처리 중**입니다. 잠시 뒤 같은 키로 다시 부르면 그 결과를 받습니다. - `422` `…/idempotency-key-reused` — 같은 키를 **다른 body** 로 보냈습니다. 재시도해도 영원히 같은 실패이니 새 키를 쓰거나 body를 되돌리세요. ## Rate Limit 전역 **60 요청/분 per `client_id`**, 토큰 발급(`/oauth/token`)은 **5 요청/분** 입니다. 초과 시 `429`(`type: …/too-many-requests`). 쿼터는 두 가지 표기로 함께 나갑니다 — 신규 연동은 표준 필드를 쓰세요. - **표준**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (정책) · `RateLimit: \"default\";r=59;t=42` (잔량 r, 리셋까지 t 초) - **레거시**(관용): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. 기존 연동 호환을 위해 유지합니다. `429` 에서는 `Retry-After`(초)가 우선합니다. 대량 동기화(품목 단위 반복 등록 등)는 `Retry-After` 만큼 backoff 후 재시도하세요. ## 추적 요청에 `X-Correlation-Id` 헤더를 실으면 그대로 echo 되고, 없으면 서버가 발급합니다. 모든 응답(성공/에러)에 `X-Correlation-Id`가 실립니다. ## 전방호환 — 모르는 필드와 값에서 깨지지 않게 다음 셋은 breaking 변경으로 보지 않으며 minor 릴리스에서 예고 없이 일어납니다. 이 전제로 구현하세요. - **선택 필드 추가**: 모르는 필드는 무시하세요. 엄격 파서(unknown key 거부)를 쓰지 마세요. - **enum 값 추가**: 상태·낙찰방법 등에 새 값이 생깁니다. 모르는 값을 만나면 예외를 던지지 말고 원문 문자열을 보존하세요. - **problem `type` slug 추가**: 모르는 slug은 **HTTP status로 폴백**해 분기하세요. ## 버전 수명(deprecation/sunset) - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` 헤더로 통지합니다. 이 헤더를 모니터링하세요.
6
6
  *
7
- * The version of the OpenAPI document: 45.1.0
7
+ * The version of the OpenAPI document: 45.1.1
8
8
  * Contact: semo.io.kr@gmail.com
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
package/api.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * CMARKET V6 Partner API
5
5
  * 외부 ERP 연동용 RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` 플로우). `/oauth/token`에서 토큰을 발급받아 `Authorization: Bearer <token>` 헤더로 실으세요. ## 권한 — 두 개의 독립된 축 `403`을 만났다면 둘 중 어느 축에 걸린 것인지 먼저 구분하세요. - **스코프** = *무엇을 할 수 있나*. 토큰에 부여된 `bids:read`·`contracts:write` 등입니다. 미보유 시 `…/insufficient-scope`. - **대행 범위** = *누구의 데이터를 다룰 수 있나*. API 키 설정이며 스코프로 표현되지 않습니다. 범위 밖이면 스코프와 무관하게 403입니다. 대행 범위는 키마다 둘 중 하나로 설정됩니다 — **소속 그룹 전원**(기관 키. 사업처·부서 계정이 새로 생겨도 자동 포함) 또는 **지정 발주기관 목록**(계약으로 합의된 목록). 범위를 넓혀야 하면 스코프가 아니라 키 설정 변경을 요청하세요. ## 성공 응답 봉투 `/v2`의 모든 2xx 본문은 `{ \"data\": … }`입니다. 단일 리소스든 목록이든 같습니다. **목록은 `data`가 배열이고 `meta`가 항상 함께 실립니다** — `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 리소스 응답에는 `meta`가 나가지 않습니다. 봉투를 쓰지 않는 표면은 둘입니다. `/oauth/_*`와 `/.well-known/_*`는 각각 RFC 6749·RFC 8414·RFC 9728이 최상위 필드를 규정하고, 파일 내용 응답은 본문이 JSON이 아닙니다. 에러 응답에는 봉투를 씌우지 않습니다 — 아래 problem+json이 단독으로 책임집니다. ## 조건부 요청 (ETag) `/v2`의 모든 `GET` 응답에 weak `ETag`(`W/\"…\"`)가 실립니다. 받은 값을 다음 요청의 `If-None-Match` 헤더로 되보내면, 내용이 그대로일 때 `304 Not Modified`를 본문 없이 받습니다. 결과가 나기를 기다리며 같은 자원을 반복 조회하는 연동이라면 이 헤더 하나로 전송량이 사라집니다. ## 에러 (RFC 9457 problem+json) 모든 에러 응답은 `application/problem+json`입니다. **HTTP status + `type` URI** 로 분기하세요. - `retryable`(boolean): 자동 재시도 안전 여부. `true`(429·5xx transient)면 backoff 후 재시도하고, `false`면 요청을 고쳐야 합니다. - `traceId`: 요청 추적 id. `X-Correlation-Id` 응답 헤더와 같은 값입니다 — 문의할 때 이 값을 첨부하세요. - `correlationId`: `traceId`와 같은 값의 옛 이름. 기존 연동 호환으로 함께 실립니다. 새 연동은 `traceId`를 읽으세요. - `invalid-params`: 검증 실패(400 `…/validation-failed`) 시 위반 필드 경로 목록(RFC 9457 확장, 값 없음). - `code`: 조달플랫폼이 요청을 거부한 **사유 코드**(`…/upstream-*` 응답에 함께 옵니다). `type`은 상태 수준이고 `detail`은 고정 문구라, 무엇을 고쳐야 하는지는 이 값이 알려 줍니다 — 예: `BID_INVALID_BID_DATE_RANGE`(마감이 시작보다 이름), `BID_DUPLICATE_PURCHASE_NO`(같은 조달번호의 공고가 진행 중). 안정 식별자이므로 문자열로 분기해도 됩니다. `type`은 `https://problems.cmarket.io/partner/<slug>` 형태의 **안정 식별자**입니다. RFC 9457 §3.1.1이 허용하는 대로 이 URI는 **역참조(dereference)되지 않습니다** — 브라우저로 열지 말고 문자열 비교로만 쓰세요. slug 목록과 의미는 각 엔드포인트의 응답 설명에 status 별로 적혀 있습니다. ### 멱등성 위반: 409와 422의 차이 - `409` `…/idempotency-key-conflict` — 같은 키의 **원 요청이 아직 처리 중**입니다. 잠시 뒤 같은 키로 다시 부르면 그 결과를 받습니다. - `422` `…/idempotency-key-reused` — 같은 키를 **다른 body** 로 보냈습니다. 재시도해도 영원히 같은 실패이니 새 키를 쓰거나 body를 되돌리세요. ## Rate Limit 전역 **60 요청/분 per `client_id`**, 토큰 발급(`/oauth/token`)은 **5 요청/분** 입니다. 초과 시 `429`(`type: …/too-many-requests`). 쿼터는 두 가지 표기로 함께 나갑니다 — 신규 연동은 표준 필드를 쓰세요. - **표준**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (정책) · `RateLimit: \"default\";r=59;t=42` (잔량 r, 리셋까지 t 초) - **레거시**(관용): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. 기존 연동 호환을 위해 유지합니다. `429` 에서는 `Retry-After`(초)가 우선합니다. 대량 동기화(품목 단위 반복 등록 등)는 `Retry-After` 만큼 backoff 후 재시도하세요. ## 추적 요청에 `X-Correlation-Id` 헤더를 실으면 그대로 echo 되고, 없으면 서버가 발급합니다. 모든 응답(성공/에러)에 `X-Correlation-Id`가 실립니다. ## 전방호환 — 모르는 필드와 값에서 깨지지 않게 다음 셋은 breaking 변경으로 보지 않으며 minor 릴리스에서 예고 없이 일어납니다. 이 전제로 구현하세요. - **선택 필드 추가**: 모르는 필드는 무시하세요. 엄격 파서(unknown key 거부)를 쓰지 마세요. - **enum 값 추가**: 상태·낙찰방법 등에 새 값이 생깁니다. 모르는 값을 만나면 예외를 던지지 말고 원문 문자열을 보존하세요. - **problem `type` slug 추가**: 모르는 slug은 **HTTP status로 폴백**해 분기하세요. ## 버전 수명(deprecation/sunset) - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` 헤더로 통지합니다. 이 헤더를 모니터링하세요.
6
6
  *
7
- * The version of the OpenAPI document: 45.1.0
7
+ * The version of the OpenAPI document: 45.1.1
8
8
  * Contact: semo.io.kr@gmail.com
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
package/base.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * CMARKET V6 Partner API
5
5
  * 외부 ERP 연동용 RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` 플로우). `/oauth/token`에서 토큰을 발급받아 `Authorization: Bearer <token>` 헤더로 실으세요. ## 권한 — 두 개의 독립된 축 `403`을 만났다면 둘 중 어느 축에 걸린 것인지 먼저 구분하세요. - **스코프** = *무엇을 할 수 있나*. 토큰에 부여된 `bids:read`·`contracts:write` 등입니다. 미보유 시 `…/insufficient-scope`. - **대행 범위** = *누구의 데이터를 다룰 수 있나*. API 키 설정이며 스코프로 표현되지 않습니다. 범위 밖이면 스코프와 무관하게 403입니다. 대행 범위는 키마다 둘 중 하나로 설정됩니다 — **소속 그룹 전원**(기관 키. 사업처·부서 계정이 새로 생겨도 자동 포함) 또는 **지정 발주기관 목록**(계약으로 합의된 목록). 범위를 넓혀야 하면 스코프가 아니라 키 설정 변경을 요청하세요. ## 성공 응답 봉투 `/v2`의 모든 2xx 본문은 `{ \"data\": … }`입니다. 단일 리소스든 목록이든 같습니다. **목록은 `data`가 배열이고 `meta`가 항상 함께 실립니다** — `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 리소스 응답에는 `meta`가 나가지 않습니다. 봉투를 쓰지 않는 표면은 둘입니다. `/oauth/_*`와 `/.well-known/_*`는 각각 RFC 6749·RFC 8414·RFC 9728이 최상위 필드를 규정하고, 파일 내용 응답은 본문이 JSON이 아닙니다. 에러 응답에는 봉투를 씌우지 않습니다 — 아래 problem+json이 단독으로 책임집니다. ## 조건부 요청 (ETag) `/v2`의 모든 `GET` 응답에 weak `ETag`(`W/\"…\"`)가 실립니다. 받은 값을 다음 요청의 `If-None-Match` 헤더로 되보내면, 내용이 그대로일 때 `304 Not Modified`를 본문 없이 받습니다. 결과가 나기를 기다리며 같은 자원을 반복 조회하는 연동이라면 이 헤더 하나로 전송량이 사라집니다. ## 에러 (RFC 9457 problem+json) 모든 에러 응답은 `application/problem+json`입니다. **HTTP status + `type` URI** 로 분기하세요. - `retryable`(boolean): 자동 재시도 안전 여부. `true`(429·5xx transient)면 backoff 후 재시도하고, `false`면 요청을 고쳐야 합니다. - `traceId`: 요청 추적 id. `X-Correlation-Id` 응답 헤더와 같은 값입니다 — 문의할 때 이 값을 첨부하세요. - `correlationId`: `traceId`와 같은 값의 옛 이름. 기존 연동 호환으로 함께 실립니다. 새 연동은 `traceId`를 읽으세요. - `invalid-params`: 검증 실패(400 `…/validation-failed`) 시 위반 필드 경로 목록(RFC 9457 확장, 값 없음). - `code`: 조달플랫폼이 요청을 거부한 **사유 코드**(`…/upstream-*` 응답에 함께 옵니다). `type`은 상태 수준이고 `detail`은 고정 문구라, 무엇을 고쳐야 하는지는 이 값이 알려 줍니다 — 예: `BID_INVALID_BID_DATE_RANGE`(마감이 시작보다 이름), `BID_DUPLICATE_PURCHASE_NO`(같은 조달번호의 공고가 진행 중). 안정 식별자이므로 문자열로 분기해도 됩니다. `type`은 `https://problems.cmarket.io/partner/<slug>` 형태의 **안정 식별자**입니다. RFC 9457 §3.1.1이 허용하는 대로 이 URI는 **역참조(dereference)되지 않습니다** — 브라우저로 열지 말고 문자열 비교로만 쓰세요. slug 목록과 의미는 각 엔드포인트의 응답 설명에 status 별로 적혀 있습니다. ### 멱등성 위반: 409와 422의 차이 - `409` `…/idempotency-key-conflict` — 같은 키의 **원 요청이 아직 처리 중**입니다. 잠시 뒤 같은 키로 다시 부르면 그 결과를 받습니다. - `422` `…/idempotency-key-reused` — 같은 키를 **다른 body** 로 보냈습니다. 재시도해도 영원히 같은 실패이니 새 키를 쓰거나 body를 되돌리세요. ## Rate Limit 전역 **60 요청/분 per `client_id`**, 토큰 발급(`/oauth/token`)은 **5 요청/분** 입니다. 초과 시 `429`(`type: …/too-many-requests`). 쿼터는 두 가지 표기로 함께 나갑니다 — 신규 연동은 표준 필드를 쓰세요. - **표준**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (정책) · `RateLimit: \"default\";r=59;t=42` (잔량 r, 리셋까지 t 초) - **레거시**(관용): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. 기존 연동 호환을 위해 유지합니다. `429` 에서는 `Retry-After`(초)가 우선합니다. 대량 동기화(품목 단위 반복 등록 등)는 `Retry-After` 만큼 backoff 후 재시도하세요. ## 추적 요청에 `X-Correlation-Id` 헤더를 실으면 그대로 echo 되고, 없으면 서버가 발급합니다. 모든 응답(성공/에러)에 `X-Correlation-Id`가 실립니다. ## 전방호환 — 모르는 필드와 값에서 깨지지 않게 다음 셋은 breaking 변경으로 보지 않으며 minor 릴리스에서 예고 없이 일어납니다. 이 전제로 구현하세요. - **선택 필드 추가**: 모르는 필드는 무시하세요. 엄격 파서(unknown key 거부)를 쓰지 마세요. - **enum 값 추가**: 상태·낙찰방법 등에 새 값이 생깁니다. 모르는 값을 만나면 예외를 던지지 말고 원문 문자열을 보존하세요. - **problem `type` slug 추가**: 모르는 slug은 **HTTP status로 폴백**해 분기하세요. ## 버전 수명(deprecation/sunset) - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` 헤더로 통지합니다. 이 헤더를 모니터링하세요.
6
6
  *
7
- * The version of the OpenAPI document: 45.1.0
7
+ * The version of the OpenAPI document: 45.1.1
8
8
  * Contact: semo.io.kr@gmail.com
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
package/common.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * CMARKET V6 Partner API
5
5
  * 외부 ERP 연동용 RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` 플로우). `/oauth/token`에서 토큰을 발급받아 `Authorization: Bearer <token>` 헤더로 실으세요. ## 권한 — 두 개의 독립된 축 `403`을 만났다면 둘 중 어느 축에 걸린 것인지 먼저 구분하세요. - **스코프** = *무엇을 할 수 있나*. 토큰에 부여된 `bids:read`·`contracts:write` 등입니다. 미보유 시 `…/insufficient-scope`. - **대행 범위** = *누구의 데이터를 다룰 수 있나*. API 키 설정이며 스코프로 표현되지 않습니다. 범위 밖이면 스코프와 무관하게 403입니다. 대행 범위는 키마다 둘 중 하나로 설정됩니다 — **소속 그룹 전원**(기관 키. 사업처·부서 계정이 새로 생겨도 자동 포함) 또는 **지정 발주기관 목록**(계약으로 합의된 목록). 범위를 넓혀야 하면 스코프가 아니라 키 설정 변경을 요청하세요. ## 성공 응답 봉투 `/v2`의 모든 2xx 본문은 `{ \"data\": … }`입니다. 단일 리소스든 목록이든 같습니다. **목록은 `data`가 배열이고 `meta`가 항상 함께 실립니다** — `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 리소스 응답에는 `meta`가 나가지 않습니다. 봉투를 쓰지 않는 표면은 둘입니다. `/oauth/_*`와 `/.well-known/_*`는 각각 RFC 6749·RFC 8414·RFC 9728이 최상위 필드를 규정하고, 파일 내용 응답은 본문이 JSON이 아닙니다. 에러 응답에는 봉투를 씌우지 않습니다 — 아래 problem+json이 단독으로 책임집니다. ## 조건부 요청 (ETag) `/v2`의 모든 `GET` 응답에 weak `ETag`(`W/\"…\"`)가 실립니다. 받은 값을 다음 요청의 `If-None-Match` 헤더로 되보내면, 내용이 그대로일 때 `304 Not Modified`를 본문 없이 받습니다. 결과가 나기를 기다리며 같은 자원을 반복 조회하는 연동이라면 이 헤더 하나로 전송량이 사라집니다. ## 에러 (RFC 9457 problem+json) 모든 에러 응답은 `application/problem+json`입니다. **HTTP status + `type` URI** 로 분기하세요. - `retryable`(boolean): 자동 재시도 안전 여부. `true`(429·5xx transient)면 backoff 후 재시도하고, `false`면 요청을 고쳐야 합니다. - `traceId`: 요청 추적 id. `X-Correlation-Id` 응답 헤더와 같은 값입니다 — 문의할 때 이 값을 첨부하세요. - `correlationId`: `traceId`와 같은 값의 옛 이름. 기존 연동 호환으로 함께 실립니다. 새 연동은 `traceId`를 읽으세요. - `invalid-params`: 검증 실패(400 `…/validation-failed`) 시 위반 필드 경로 목록(RFC 9457 확장, 값 없음). - `code`: 조달플랫폼이 요청을 거부한 **사유 코드**(`…/upstream-*` 응답에 함께 옵니다). `type`은 상태 수준이고 `detail`은 고정 문구라, 무엇을 고쳐야 하는지는 이 값이 알려 줍니다 — 예: `BID_INVALID_BID_DATE_RANGE`(마감이 시작보다 이름), `BID_DUPLICATE_PURCHASE_NO`(같은 조달번호의 공고가 진행 중). 안정 식별자이므로 문자열로 분기해도 됩니다. `type`은 `https://problems.cmarket.io/partner/<slug>` 형태의 **안정 식별자**입니다. RFC 9457 §3.1.1이 허용하는 대로 이 URI는 **역참조(dereference)되지 않습니다** — 브라우저로 열지 말고 문자열 비교로만 쓰세요. slug 목록과 의미는 각 엔드포인트의 응답 설명에 status 별로 적혀 있습니다. ### 멱등성 위반: 409와 422의 차이 - `409` `…/idempotency-key-conflict` — 같은 키의 **원 요청이 아직 처리 중**입니다. 잠시 뒤 같은 키로 다시 부르면 그 결과를 받습니다. - `422` `…/idempotency-key-reused` — 같은 키를 **다른 body** 로 보냈습니다. 재시도해도 영원히 같은 실패이니 새 키를 쓰거나 body를 되돌리세요. ## Rate Limit 전역 **60 요청/분 per `client_id`**, 토큰 발급(`/oauth/token`)은 **5 요청/분** 입니다. 초과 시 `429`(`type: …/too-many-requests`). 쿼터는 두 가지 표기로 함께 나갑니다 — 신규 연동은 표준 필드를 쓰세요. - **표준**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (정책) · `RateLimit: \"default\";r=59;t=42` (잔량 r, 리셋까지 t 초) - **레거시**(관용): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. 기존 연동 호환을 위해 유지합니다. `429` 에서는 `Retry-After`(초)가 우선합니다. 대량 동기화(품목 단위 반복 등록 등)는 `Retry-After` 만큼 backoff 후 재시도하세요. ## 추적 요청에 `X-Correlation-Id` 헤더를 실으면 그대로 echo 되고, 없으면 서버가 발급합니다. 모든 응답(성공/에러)에 `X-Correlation-Id`가 실립니다. ## 전방호환 — 모르는 필드와 값에서 깨지지 않게 다음 셋은 breaking 변경으로 보지 않으며 minor 릴리스에서 예고 없이 일어납니다. 이 전제로 구현하세요. - **선택 필드 추가**: 모르는 필드는 무시하세요. 엄격 파서(unknown key 거부)를 쓰지 마세요. - **enum 값 추가**: 상태·낙찰방법 등에 새 값이 생깁니다. 모르는 값을 만나면 예외를 던지지 말고 원문 문자열을 보존하세요. - **problem `type` slug 추가**: 모르는 slug은 **HTTP status로 폴백**해 분기하세요. ## 버전 수명(deprecation/sunset) - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` 헤더로 통지합니다. 이 헤더를 모니터링하세요.
6
6
  *
7
- * The version of the OpenAPI document: 45.1.0
7
+ * The version of the OpenAPI document: 45.1.1
8
8
  * Contact: semo.io.kr@gmail.com
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
package/configuration.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  * CMARKET V6 Partner API
4
4
  * 외부 ERP 연동용 RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` 플로우). `/oauth/token`에서 토큰을 발급받아 `Authorization: Bearer <token>` 헤더로 실으세요. ## 권한 — 두 개의 독립된 축 `403`을 만났다면 둘 중 어느 축에 걸린 것인지 먼저 구분하세요. - **스코프** = *무엇을 할 수 있나*. 토큰에 부여된 `bids:read`·`contracts:write` 등입니다. 미보유 시 `…/insufficient-scope`. - **대행 범위** = *누구의 데이터를 다룰 수 있나*. API 키 설정이며 스코프로 표현되지 않습니다. 범위 밖이면 스코프와 무관하게 403입니다. 대행 범위는 키마다 둘 중 하나로 설정됩니다 — **소속 그룹 전원**(기관 키. 사업처·부서 계정이 새로 생겨도 자동 포함) 또는 **지정 발주기관 목록**(계약으로 합의된 목록). 범위를 넓혀야 하면 스코프가 아니라 키 설정 변경을 요청하세요. ## 성공 응답 봉투 `/v2`의 모든 2xx 본문은 `{ \"data\": … }`입니다. 단일 리소스든 목록이든 같습니다. **목록은 `data`가 배열이고 `meta`가 항상 함께 실립니다** — `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 리소스 응답에는 `meta`가 나가지 않습니다. 봉투를 쓰지 않는 표면은 둘입니다. `/oauth/_*`와 `/.well-known/_*`는 각각 RFC 6749·RFC 8414·RFC 9728이 최상위 필드를 규정하고, 파일 내용 응답은 본문이 JSON이 아닙니다. 에러 응답에는 봉투를 씌우지 않습니다 — 아래 problem+json이 단독으로 책임집니다. ## 조건부 요청 (ETag) `/v2`의 모든 `GET` 응답에 weak `ETag`(`W/\"…\"`)가 실립니다. 받은 값을 다음 요청의 `If-None-Match` 헤더로 되보내면, 내용이 그대로일 때 `304 Not Modified`를 본문 없이 받습니다. 결과가 나기를 기다리며 같은 자원을 반복 조회하는 연동이라면 이 헤더 하나로 전송량이 사라집니다. ## 에러 (RFC 9457 problem+json) 모든 에러 응답은 `application/problem+json`입니다. **HTTP status + `type` URI** 로 분기하세요. - `retryable`(boolean): 자동 재시도 안전 여부. `true`(429·5xx transient)면 backoff 후 재시도하고, `false`면 요청을 고쳐야 합니다. - `traceId`: 요청 추적 id. `X-Correlation-Id` 응답 헤더와 같은 값입니다 — 문의할 때 이 값을 첨부하세요. - `correlationId`: `traceId`와 같은 값의 옛 이름. 기존 연동 호환으로 함께 실립니다. 새 연동은 `traceId`를 읽으세요. - `invalid-params`: 검증 실패(400 `…/validation-failed`) 시 위반 필드 경로 목록(RFC 9457 확장, 값 없음). - `code`: 조달플랫폼이 요청을 거부한 **사유 코드**(`…/upstream-*` 응답에 함께 옵니다). `type`은 상태 수준이고 `detail`은 고정 문구라, 무엇을 고쳐야 하는지는 이 값이 알려 줍니다 — 예: `BID_INVALID_BID_DATE_RANGE`(마감이 시작보다 이름), `BID_DUPLICATE_PURCHASE_NO`(같은 조달번호의 공고가 진행 중). 안정 식별자이므로 문자열로 분기해도 됩니다. `type`은 `https://problems.cmarket.io/partner/<slug>` 형태의 **안정 식별자**입니다. RFC 9457 §3.1.1이 허용하는 대로 이 URI는 **역참조(dereference)되지 않습니다** — 브라우저로 열지 말고 문자열 비교로만 쓰세요. slug 목록과 의미는 각 엔드포인트의 응답 설명에 status 별로 적혀 있습니다. ### 멱등성 위반: 409와 422의 차이 - `409` `…/idempotency-key-conflict` — 같은 키의 **원 요청이 아직 처리 중**입니다. 잠시 뒤 같은 키로 다시 부르면 그 결과를 받습니다. - `422` `…/idempotency-key-reused` — 같은 키를 **다른 body** 로 보냈습니다. 재시도해도 영원히 같은 실패이니 새 키를 쓰거나 body를 되돌리세요. ## Rate Limit 전역 **60 요청/분 per `client_id`**, 토큰 발급(`/oauth/token`)은 **5 요청/분** 입니다. 초과 시 `429`(`type: …/too-many-requests`). 쿼터는 두 가지 표기로 함께 나갑니다 — 신규 연동은 표준 필드를 쓰세요. - **표준**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (정책) · `RateLimit: \"default\";r=59;t=42` (잔량 r, 리셋까지 t 초) - **레거시**(관용): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. 기존 연동 호환을 위해 유지합니다. `429` 에서는 `Retry-After`(초)가 우선합니다. 대량 동기화(품목 단위 반복 등록 등)는 `Retry-After` 만큼 backoff 후 재시도하세요. ## 추적 요청에 `X-Correlation-Id` 헤더를 실으면 그대로 echo 되고, 없으면 서버가 발급합니다. 모든 응답(성공/에러)에 `X-Correlation-Id`가 실립니다. ## 전방호환 — 모르는 필드와 값에서 깨지지 않게 다음 셋은 breaking 변경으로 보지 않으며 minor 릴리스에서 예고 없이 일어납니다. 이 전제로 구현하세요. - **선택 필드 추가**: 모르는 필드는 무시하세요. 엄격 파서(unknown key 거부)를 쓰지 마세요. - **enum 값 추가**: 상태·낙찰방법 등에 새 값이 생깁니다. 모르는 값을 만나면 예외를 던지지 말고 원문 문자열을 보존하세요. - **problem `type` slug 추가**: 모르는 slug은 **HTTP status로 폴백**해 분기하세요. ## 버전 수명(deprecation/sunset) - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` 헤더로 통지합니다. 이 헤더를 모니터링하세요.
5
5
  *
6
- * The version of the OpenAPI document: 45.1.0
6
+ * The version of the OpenAPI document: 45.1.1
7
7
  * Contact: semo.io.kr@gmail.com
8
8
  *
9
9
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -2,7 +2,7 @@
2
2
  * CMARKET V6 Partner API
3
3
  * 외부 ERP 연동용 RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` 플로우). `/oauth/token`에서 토큰을 발급받아 `Authorization: Bearer <token>` 헤더로 실으세요. ## 권한 — 두 개의 독립된 축 `403`을 만났다면 둘 중 어느 축에 걸린 것인지 먼저 구분하세요. - **스코프** = *무엇을 할 수 있나*. 토큰에 부여된 `bids:read`·`contracts:write` 등입니다. 미보유 시 `…/insufficient-scope`. - **대행 범위** = *누구의 데이터를 다룰 수 있나*. API 키 설정이며 스코프로 표현되지 않습니다. 범위 밖이면 스코프와 무관하게 403입니다. 대행 범위는 키마다 둘 중 하나로 설정됩니다 — **소속 그룹 전원**(기관 키. 사업처·부서 계정이 새로 생겨도 자동 포함) 또는 **지정 발주기관 목록**(계약으로 합의된 목록). 범위를 넓혀야 하면 스코프가 아니라 키 설정 변경을 요청하세요. ## 성공 응답 봉투 `/v2`의 모든 2xx 본문은 `{ \"data\": … }`입니다. 단일 리소스든 목록이든 같습니다. **목록은 `data`가 배열이고 `meta`가 항상 함께 실립니다** — `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 리소스 응답에는 `meta`가 나가지 않습니다. 봉투를 쓰지 않는 표면은 둘입니다. `/oauth/_*`와 `/.well-known/_*`는 각각 RFC 6749·RFC 8414·RFC 9728이 최상위 필드를 규정하고, 파일 내용 응답은 본문이 JSON이 아닙니다. 에러 응답에는 봉투를 씌우지 않습니다 — 아래 problem+json이 단독으로 책임집니다. ## 조건부 요청 (ETag) `/v2`의 모든 `GET` 응답에 weak `ETag`(`W/\"…\"`)가 실립니다. 받은 값을 다음 요청의 `If-None-Match` 헤더로 되보내면, 내용이 그대로일 때 `304 Not Modified`를 본문 없이 받습니다. 결과가 나기를 기다리며 같은 자원을 반복 조회하는 연동이라면 이 헤더 하나로 전송량이 사라집니다. ## 에러 (RFC 9457 problem+json) 모든 에러 응답은 `application/problem+json`입니다. **HTTP status + `type` URI** 로 분기하세요. - `retryable`(boolean): 자동 재시도 안전 여부. `true`(429·5xx transient)면 backoff 후 재시도하고, `false`면 요청을 고쳐야 합니다. - `traceId`: 요청 추적 id. `X-Correlation-Id` 응답 헤더와 같은 값입니다 — 문의할 때 이 값을 첨부하세요. - `correlationId`: `traceId`와 같은 값의 옛 이름. 기존 연동 호환으로 함께 실립니다. 새 연동은 `traceId`를 읽으세요. - `invalid-params`: 검증 실패(400 `…/validation-failed`) 시 위반 필드 경로 목록(RFC 9457 확장, 값 없음). - `code`: 조달플랫폼이 요청을 거부한 **사유 코드**(`…/upstream-*` 응답에 함께 옵니다). `type`은 상태 수준이고 `detail`은 고정 문구라, 무엇을 고쳐야 하는지는 이 값이 알려 줍니다 — 예: `BID_INVALID_BID_DATE_RANGE`(마감이 시작보다 이름), `BID_DUPLICATE_PURCHASE_NO`(같은 조달번호의 공고가 진행 중). 안정 식별자이므로 문자열로 분기해도 됩니다. `type`은 `https://problems.cmarket.io/partner/<slug>` 형태의 **안정 식별자**입니다. RFC 9457 §3.1.1이 허용하는 대로 이 URI는 **역참조(dereference)되지 않습니다** — 브라우저로 열지 말고 문자열 비교로만 쓰세요. slug 목록과 의미는 각 엔드포인트의 응답 설명에 status 별로 적혀 있습니다. ### 멱등성 위반: 409와 422의 차이 - `409` `…/idempotency-key-conflict` — 같은 키의 **원 요청이 아직 처리 중**입니다. 잠시 뒤 같은 키로 다시 부르면 그 결과를 받습니다. - `422` `…/idempotency-key-reused` — 같은 키를 **다른 body** 로 보냈습니다. 재시도해도 영원히 같은 실패이니 새 키를 쓰거나 body를 되돌리세요. ## Rate Limit 전역 **60 요청/분 per `client_id`**, 토큰 발급(`/oauth/token`)은 **5 요청/분** 입니다. 초과 시 `429`(`type: …/too-many-requests`). 쿼터는 두 가지 표기로 함께 나갑니다 — 신규 연동은 표준 필드를 쓰세요. - **표준**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (정책) · `RateLimit: \"default\";r=59;t=42` (잔량 r, 리셋까지 t 초) - **레거시**(관용): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. 기존 연동 호환을 위해 유지합니다. `429` 에서는 `Retry-After`(초)가 우선합니다. 대량 동기화(품목 단위 반복 등록 등)는 `Retry-After` 만큼 backoff 후 재시도하세요. ## 추적 요청에 `X-Correlation-Id` 헤더를 실으면 그대로 echo 되고, 없으면 서버가 발급합니다. 모든 응답(성공/에러)에 `X-Correlation-Id`가 실립니다. ## 전방호환 — 모르는 필드와 값에서 깨지지 않게 다음 셋은 breaking 변경으로 보지 않으며 minor 릴리스에서 예고 없이 일어납니다. 이 전제로 구현하세요. - **선택 필드 추가**: 모르는 필드는 무시하세요. 엄격 파서(unknown key 거부)를 쓰지 마세요. - **enum 값 추가**: 상태·낙찰방법 등에 새 값이 생깁니다. 모르는 값을 만나면 예외를 던지지 말고 원문 문자열을 보존하세요. - **problem `type` slug 추가**: 모르는 slug은 **HTTP status로 폴백**해 분기하세요. ## 버전 수명(deprecation/sunset) - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` 헤더로 통지합니다. 이 헤더를 모니터링하세요.
4
4
  *
5
- * The version of the OpenAPI document: 45.1.0
5
+ * The version of the OpenAPI document: 45.1.1
6
6
  * Contact: semo.io.kr@gmail.com
7
7
  *
8
8
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -19,7 +19,7 @@ import type { EmbedLaunchRequestDto } from '../models';
19
19
  */
20
20
  export declare const EmbedApiAxiosParamCreator: (configuration?: Configuration) => {
21
21
  /**
22
- * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
22
+ * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **`memberId`는 ERP 백엔드가 정합니다** — 브라우저가 보낸 값을 그대로 넘기지 마세요. 씨마켓은 그 값이 API 키의 대행 범위 안인지만 확인하므로, 프런트가 지정하게 두면 같은 기관의 다른 담당자 명의로 화면이 열립니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
23
23
  * @summary 임베드 launch 발급
24
24
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
25
25
  * @param {*} [options] Override http request option.
@@ -32,7 +32,7 @@ export declare const EmbedApiAxiosParamCreator: (configuration?: Configuration)
32
32
  */
33
33
  export declare const EmbedApiFp: (configuration?: Configuration) => {
34
34
  /**
35
- * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
35
+ * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **`memberId`는 ERP 백엔드가 정합니다** — 브라우저가 보낸 값을 그대로 넘기지 마세요. 씨마켓은 그 값이 API 키의 대행 범위 안인지만 확인하므로, 프런트가 지정하게 두면 같은 기관의 다른 담당자 명의로 화면이 열립니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
36
36
  * @summary 임베드 launch 발급
37
37
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
38
38
  * @param {*} [options] Override http request option.
@@ -45,7 +45,7 @@ export declare const EmbedApiFp: (configuration?: Configuration) => {
45
45
  */
46
46
  export declare const EmbedApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
47
47
  /**
48
- * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
48
+ * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **`memberId`는 ERP 백엔드가 정합니다** — 브라우저가 보낸 값을 그대로 넘기지 마세요. 씨마켓은 그 값이 API 키의 대행 범위 안인지만 확인하므로, 프런트가 지정하게 두면 같은 기관의 다른 담당자 명의로 화면이 열립니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
49
49
  * @summary 임베드 launch 발급
50
50
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
51
51
  * @param {*} [options] Override http request option.
@@ -58,7 +58,7 @@ export declare const EmbedApiFactory: (configuration?: Configuration, basePath?:
58
58
  */
59
59
  export declare class EmbedApi extends BaseAPI {
60
60
  /**
61
- * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
61
+ * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **`memberId`는 ERP 백엔드가 정합니다** — 브라우저가 보낸 값을 그대로 넘기지 마세요. 씨마켓은 그 값이 API 키의 대행 범위 안인지만 확인하므로, 프런트가 지정하게 두면 같은 기관의 다른 담당자 명의로 화면이 열립니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
62
62
  * @summary 임베드 launch 발급
63
63
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
64
64
  * @param {*} [options] Override http request option.
@@ -5,7 +5,7 @@
5
5
  * CMARKET V6 Partner API
6
6
  * 외부 ERP 연동용 RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` 플로우). `/oauth/token`에서 토큰을 발급받아 `Authorization: Bearer <token>` 헤더로 실으세요. ## 권한 — 두 개의 독립된 축 `403`을 만났다면 둘 중 어느 축에 걸린 것인지 먼저 구분하세요. - **스코프** = *무엇을 할 수 있나*. 토큰에 부여된 `bids:read`·`contracts:write` 등입니다. 미보유 시 `…/insufficient-scope`. - **대행 범위** = *누구의 데이터를 다룰 수 있나*. API 키 설정이며 스코프로 표현되지 않습니다. 범위 밖이면 스코프와 무관하게 403입니다. 대행 범위는 키마다 둘 중 하나로 설정됩니다 — **소속 그룹 전원**(기관 키. 사업처·부서 계정이 새로 생겨도 자동 포함) 또는 **지정 발주기관 목록**(계약으로 합의된 목록). 범위를 넓혀야 하면 스코프가 아니라 키 설정 변경을 요청하세요. ## 성공 응답 봉투 `/v2`의 모든 2xx 본문은 `{ \"data\": … }`입니다. 단일 리소스든 목록이든 같습니다. **목록은 `data`가 배열이고 `meta`가 항상 함께 실립니다** — `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 리소스 응답에는 `meta`가 나가지 않습니다. 봉투를 쓰지 않는 표면은 둘입니다. `/oauth/_*`와 `/.well-known/_*`는 각각 RFC 6749·RFC 8414·RFC 9728이 최상위 필드를 규정하고, 파일 내용 응답은 본문이 JSON이 아닙니다. 에러 응답에는 봉투를 씌우지 않습니다 — 아래 problem+json이 단독으로 책임집니다. ## 조건부 요청 (ETag) `/v2`의 모든 `GET` 응답에 weak `ETag`(`W/\"…\"`)가 실립니다. 받은 값을 다음 요청의 `If-None-Match` 헤더로 되보내면, 내용이 그대로일 때 `304 Not Modified`를 본문 없이 받습니다. 결과가 나기를 기다리며 같은 자원을 반복 조회하는 연동이라면 이 헤더 하나로 전송량이 사라집니다. ## 에러 (RFC 9457 problem+json) 모든 에러 응답은 `application/problem+json`입니다. **HTTP status + `type` URI** 로 분기하세요. - `retryable`(boolean): 자동 재시도 안전 여부. `true`(429·5xx transient)면 backoff 후 재시도하고, `false`면 요청을 고쳐야 합니다. - `traceId`: 요청 추적 id. `X-Correlation-Id` 응답 헤더와 같은 값입니다 — 문의할 때 이 값을 첨부하세요. - `correlationId`: `traceId`와 같은 값의 옛 이름. 기존 연동 호환으로 함께 실립니다. 새 연동은 `traceId`를 읽으세요. - `invalid-params`: 검증 실패(400 `…/validation-failed`) 시 위반 필드 경로 목록(RFC 9457 확장, 값 없음). - `code`: 조달플랫폼이 요청을 거부한 **사유 코드**(`…/upstream-*` 응답에 함께 옵니다). `type`은 상태 수준이고 `detail`은 고정 문구라, 무엇을 고쳐야 하는지는 이 값이 알려 줍니다 — 예: `BID_INVALID_BID_DATE_RANGE`(마감이 시작보다 이름), `BID_DUPLICATE_PURCHASE_NO`(같은 조달번호의 공고가 진행 중). 안정 식별자이므로 문자열로 분기해도 됩니다. `type`은 `https://problems.cmarket.io/partner/<slug>` 형태의 **안정 식별자**입니다. RFC 9457 §3.1.1이 허용하는 대로 이 URI는 **역참조(dereference)되지 않습니다** — 브라우저로 열지 말고 문자열 비교로만 쓰세요. slug 목록과 의미는 각 엔드포인트의 응답 설명에 status 별로 적혀 있습니다. ### 멱등성 위반: 409와 422의 차이 - `409` `…/idempotency-key-conflict` — 같은 키의 **원 요청이 아직 처리 중**입니다. 잠시 뒤 같은 키로 다시 부르면 그 결과를 받습니다. - `422` `…/idempotency-key-reused` — 같은 키를 **다른 body** 로 보냈습니다. 재시도해도 영원히 같은 실패이니 새 키를 쓰거나 body를 되돌리세요. ## Rate Limit 전역 **60 요청/분 per `client_id`**, 토큰 발급(`/oauth/token`)은 **5 요청/분** 입니다. 초과 시 `429`(`type: …/too-many-requests`). 쿼터는 두 가지 표기로 함께 나갑니다 — 신규 연동은 표준 필드를 쓰세요. - **표준**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (정책) · `RateLimit: \"default\";r=59;t=42` (잔량 r, 리셋까지 t 초) - **레거시**(관용): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. 기존 연동 호환을 위해 유지합니다. `429` 에서는 `Retry-After`(초)가 우선합니다. 대량 동기화(품목 단위 반복 등록 등)는 `Retry-After` 만큼 backoff 후 재시도하세요. ## 추적 요청에 `X-Correlation-Id` 헤더를 실으면 그대로 echo 되고, 없으면 서버가 발급합니다. 모든 응답(성공/에러)에 `X-Correlation-Id`가 실립니다. ## 전방호환 — 모르는 필드와 값에서 깨지지 않게 다음 셋은 breaking 변경으로 보지 않으며 minor 릴리스에서 예고 없이 일어납니다. 이 전제로 구현하세요. - **선택 필드 추가**: 모르는 필드는 무시하세요. 엄격 파서(unknown key 거부)를 쓰지 마세요. - **enum 값 추가**: 상태·낙찰방법 등에 새 값이 생깁니다. 모르는 값을 만나면 예외를 던지지 말고 원문 문자열을 보존하세요. - **problem `type` slug 추가**: 모르는 slug은 **HTTP status로 폴백**해 분기하세요. ## 버전 수명(deprecation/sunset) - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` 헤더로 통지합니다. 이 헤더를 모니터링하세요.
7
7
  *
8
- * The version of the OpenAPI document: 45.1.0
8
+ * The version of the OpenAPI document: 45.1.1
9
9
  * Contact: semo.io.kr@gmail.com
10
10
  *
11
11
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -35,7 +35,7 @@ const base_1 = require("../base");
35
35
  const EmbedApiAxiosParamCreator = function (configuration) {
36
36
  return {
37
37
  /**
38
- * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
38
+ * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **`memberId`는 ERP 백엔드가 정합니다** — 브라우저가 보낸 값을 그대로 넘기지 마세요. 씨마켓은 그 값이 API 키의 대행 범위 안인지만 확인하므로, 프런트가 지정하게 두면 같은 기관의 다른 담당자 명의로 화면이 열립니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
39
39
  * @summary 임베드 launch 발급
40
40
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
41
41
  * @param {*} [options] Override http request option.
@@ -78,7 +78,7 @@ const EmbedApiFp = function (configuration) {
78
78
  const localVarAxiosParamCreator = (0, exports.EmbedApiAxiosParamCreator)(configuration);
79
79
  return {
80
80
  /**
81
- * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
81
+ * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **`memberId`는 ERP 백엔드가 정합니다** — 브라우저가 보낸 값을 그대로 넘기지 마세요. 씨마켓은 그 값이 API 키의 대행 범위 안인지만 확인하므로, 프런트가 지정하게 두면 같은 기관의 다른 담당자 명의로 화면이 열립니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
82
82
  * @summary 임베드 launch 발급
83
83
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
84
84
  * @param {*} [options] Override http request option.
@@ -103,7 +103,7 @@ const EmbedApiFactory = function (configuration, basePath, axios) {
103
103
  const localVarFp = (0, exports.EmbedApiFp)(configuration);
104
104
  return {
105
105
  /**
106
- * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
106
+ * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **`memberId`는 ERP 백엔드가 정합니다** — 브라우저가 보낸 값을 그대로 넘기지 마세요. 씨마켓은 그 값이 API 키의 대행 범위 안인지만 확인하므로, 프런트가 지정하게 두면 같은 기관의 다른 담당자 명의로 화면이 열립니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
107
107
  * @summary 임베드 launch 발급
108
108
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
109
109
  * @param {*} [options] Override http request option.
@@ -120,7 +120,7 @@ exports.EmbedApiFactory = EmbedApiFactory;
120
120
  */
121
121
  class EmbedApi extends base_1.BaseAPI {
122
122
  /**
123
- * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
123
+ * 발주기관 담당자(`memberId`)용 1회성 `launchUrl`을 발급합니다(TTL 60초). 이 주소로 CMARKET 화면이 ERP 사용자에게 로그인 없이 열립니다. 스코프 `embed:launch`. - 응답은 `launchUrl` 하나입니다. iframe `src`에 걸거나 새 탭으로 엽니다. 설치할 스크립트도 SDK도 없습니다. - **iframe(권장)**: 발급 요청에 `parentOrigin`을 함께 보내면 등록 완료·취소·공고선택·공고데이터·세션만료를 그 origin으로 `postMessage` 통지합니다. 허용 origin 등록이 선행되어야 하며, 미등록이면 이 요청이 400입니다. 다만 개발 기기(`http://localhost:*`, `127.0.0.1`, `[::1]`)는 등록 없이 허용하므로 연동 착수 단계에서 별도 요청이 필요 없습니다. - **`memberId`는 ERP 백엔드가 정합니다** — 브라우저가 보낸 값을 그대로 넘기지 마세요. 씨마켓은 그 값이 API 키의 대행 범위 안인지만 확인하므로, 프런트가 지정하게 두면 같은 기관의 다른 담당자 명의로 화면이 열립니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다. origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 파트너 자격증명을 쓰므로 ERP **백엔드**에서 호출하고, 프런트에는 자체 엔드포인트(예: `POST /api/embed/launch`)로 감싸 노출합니다. - `memberId`가 이 API 키의 대행 범위 밖이면 403, 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
124
124
  * @summary 임베드 launch 발급
125
125
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
126
126
  * @param {*} [options] Override http request option.
@@ -2,7 +2,7 @@
2
2
  * CMARKET V6 Partner API
3
3
  * 외부 ERP 연동용 RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` 플로우). `/oauth/token`에서 토큰을 발급받아 `Authorization: Bearer <token>` 헤더로 실으세요. ## 권한 — 두 개의 독립된 축 `403`을 만났다면 둘 중 어느 축에 걸린 것인지 먼저 구분하세요. - **스코프** = *무엇을 할 수 있나*. 토큰에 부여된 `bids:read`·`contracts:write` 등입니다. 미보유 시 `…/insufficient-scope`. - **대행 범위** = *누구의 데이터를 다룰 수 있나*. API 키 설정이며 스코프로 표현되지 않습니다. 범위 밖이면 스코프와 무관하게 403입니다. 대행 범위는 키마다 둘 중 하나로 설정됩니다 — **소속 그룹 전원**(기관 키. 사업처·부서 계정이 새로 생겨도 자동 포함) 또는 **지정 발주기관 목록**(계약으로 합의된 목록). 범위를 넓혀야 하면 스코프가 아니라 키 설정 변경을 요청하세요. ## 성공 응답 봉투 `/v2`의 모든 2xx 본문은 `{ \"data\": … }`입니다. 단일 리소스든 목록이든 같습니다. **목록은 `data`가 배열이고 `meta`가 항상 함께 실립니다** — `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 리소스 응답에는 `meta`가 나가지 않습니다. 봉투를 쓰지 않는 표면은 둘입니다. `/oauth/_*`와 `/.well-known/_*`는 각각 RFC 6749·RFC 8414·RFC 9728이 최상위 필드를 규정하고, 파일 내용 응답은 본문이 JSON이 아닙니다. 에러 응답에는 봉투를 씌우지 않습니다 — 아래 problem+json이 단독으로 책임집니다. ## 조건부 요청 (ETag) `/v2`의 모든 `GET` 응답에 weak `ETag`(`W/\"…\"`)가 실립니다. 받은 값을 다음 요청의 `If-None-Match` 헤더로 되보내면, 내용이 그대로일 때 `304 Not Modified`를 본문 없이 받습니다. 결과가 나기를 기다리며 같은 자원을 반복 조회하는 연동이라면 이 헤더 하나로 전송량이 사라집니다. ## 에러 (RFC 9457 problem+json) 모든 에러 응답은 `application/problem+json`입니다. **HTTP status + `type` URI** 로 분기하세요. - `retryable`(boolean): 자동 재시도 안전 여부. `true`(429·5xx transient)면 backoff 후 재시도하고, `false`면 요청을 고쳐야 합니다. - `traceId`: 요청 추적 id. `X-Correlation-Id` 응답 헤더와 같은 값입니다 — 문의할 때 이 값을 첨부하세요. - `correlationId`: `traceId`와 같은 값의 옛 이름. 기존 연동 호환으로 함께 실립니다. 새 연동은 `traceId`를 읽으세요. - `invalid-params`: 검증 실패(400 `…/validation-failed`) 시 위반 필드 경로 목록(RFC 9457 확장, 값 없음). - `code`: 조달플랫폼이 요청을 거부한 **사유 코드**(`…/upstream-*` 응답에 함께 옵니다). `type`은 상태 수준이고 `detail`은 고정 문구라, 무엇을 고쳐야 하는지는 이 값이 알려 줍니다 — 예: `BID_INVALID_BID_DATE_RANGE`(마감이 시작보다 이름), `BID_DUPLICATE_PURCHASE_NO`(같은 조달번호의 공고가 진행 중). 안정 식별자이므로 문자열로 분기해도 됩니다. `type`은 `https://problems.cmarket.io/partner/<slug>` 형태의 **안정 식별자**입니다. RFC 9457 §3.1.1이 허용하는 대로 이 URI는 **역참조(dereference)되지 않습니다** — 브라우저로 열지 말고 문자열 비교로만 쓰세요. slug 목록과 의미는 각 엔드포인트의 응답 설명에 status 별로 적혀 있습니다. ### 멱등성 위반: 409와 422의 차이 - `409` `…/idempotency-key-conflict` — 같은 키의 **원 요청이 아직 처리 중**입니다. 잠시 뒤 같은 키로 다시 부르면 그 결과를 받습니다. - `422` `…/idempotency-key-reused` — 같은 키를 **다른 body** 로 보냈습니다. 재시도해도 영원히 같은 실패이니 새 키를 쓰거나 body를 되돌리세요. ## Rate Limit 전역 **60 요청/분 per `client_id`**, 토큰 발급(`/oauth/token`)은 **5 요청/분** 입니다. 초과 시 `429`(`type: …/too-many-requests`). 쿼터는 두 가지 표기로 함께 나갑니다 — 신규 연동은 표준 필드를 쓰세요. - **표준**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (정책) · `RateLimit: \"default\";r=59;t=42` (잔량 r, 리셋까지 t 초) - **레거시**(관용): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. 기존 연동 호환을 위해 유지합니다. `429` 에서는 `Retry-After`(초)가 우선합니다. 대량 동기화(품목 단위 반복 등록 등)는 `Retry-After` 만큼 backoff 후 재시도하세요. ## 추적 요청에 `X-Correlation-Id` 헤더를 실으면 그대로 echo 되고, 없으면 서버가 발급합니다. 모든 응답(성공/에러)에 `X-Correlation-Id`가 실립니다. ## 전방호환 — 모르는 필드와 값에서 깨지지 않게 다음 셋은 breaking 변경으로 보지 않으며 minor 릴리스에서 예고 없이 일어납니다. 이 전제로 구현하세요. - **선택 필드 추가**: 모르는 필드는 무시하세요. 엄격 파서(unknown key 거부)를 쓰지 마세요. - **enum 값 추가**: 상태·낙찰방법 등에 새 값이 생깁니다. 모르는 값을 만나면 예외를 던지지 말고 원문 문자열을 보존하세요. - **problem `type` slug 추가**: 모르는 slug은 **HTTP status로 폴백**해 분기하세요. ## 버전 수명(deprecation/sunset) - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` 헤더로 통지합니다. 이 헤더를 모니터링하세요.
4
4
  *
5
- * The version of the OpenAPI document: 45.1.0
5
+ * The version of the OpenAPI document: 45.1.1
6
6
  * Contact: semo.io.kr@gmail.com
7
7
  *
8
8
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -5,7 +5,7 @@
5
5
  * CMARKET V6 Partner API
6
6
  * 외부 ERP 연동용 RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` 플로우). `/oauth/token`에서 토큰을 발급받아 `Authorization: Bearer <token>` 헤더로 실으세요. ## 권한 — 두 개의 독립된 축 `403`을 만났다면 둘 중 어느 축에 걸린 것인지 먼저 구분하세요. - **스코프** = *무엇을 할 수 있나*. 토큰에 부여된 `bids:read`·`contracts:write` 등입니다. 미보유 시 `…/insufficient-scope`. - **대행 범위** = *누구의 데이터를 다룰 수 있나*. API 키 설정이며 스코프로 표현되지 않습니다. 범위 밖이면 스코프와 무관하게 403입니다. 대행 범위는 키마다 둘 중 하나로 설정됩니다 — **소속 그룹 전원**(기관 키. 사업처·부서 계정이 새로 생겨도 자동 포함) 또는 **지정 발주기관 목록**(계약으로 합의된 목록). 범위를 넓혀야 하면 스코프가 아니라 키 설정 변경을 요청하세요. ## 성공 응답 봉투 `/v2`의 모든 2xx 본문은 `{ \"data\": … }`입니다. 단일 리소스든 목록이든 같습니다. **목록은 `data`가 배열이고 `meta`가 항상 함께 실립니다** — `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 리소스 응답에는 `meta`가 나가지 않습니다. 봉투를 쓰지 않는 표면은 둘입니다. `/oauth/_*`와 `/.well-known/_*`는 각각 RFC 6749·RFC 8414·RFC 9728이 최상위 필드를 규정하고, 파일 내용 응답은 본문이 JSON이 아닙니다. 에러 응답에는 봉투를 씌우지 않습니다 — 아래 problem+json이 단독으로 책임집니다. ## 조건부 요청 (ETag) `/v2`의 모든 `GET` 응답에 weak `ETag`(`W/\"…\"`)가 실립니다. 받은 값을 다음 요청의 `If-None-Match` 헤더로 되보내면, 내용이 그대로일 때 `304 Not Modified`를 본문 없이 받습니다. 결과가 나기를 기다리며 같은 자원을 반복 조회하는 연동이라면 이 헤더 하나로 전송량이 사라집니다. ## 에러 (RFC 9457 problem+json) 모든 에러 응답은 `application/problem+json`입니다. **HTTP status + `type` URI** 로 분기하세요. - `retryable`(boolean): 자동 재시도 안전 여부. `true`(429·5xx transient)면 backoff 후 재시도하고, `false`면 요청을 고쳐야 합니다. - `traceId`: 요청 추적 id. `X-Correlation-Id` 응답 헤더와 같은 값입니다 — 문의할 때 이 값을 첨부하세요. - `correlationId`: `traceId`와 같은 값의 옛 이름. 기존 연동 호환으로 함께 실립니다. 새 연동은 `traceId`를 읽으세요. - `invalid-params`: 검증 실패(400 `…/validation-failed`) 시 위반 필드 경로 목록(RFC 9457 확장, 값 없음). - `code`: 조달플랫폼이 요청을 거부한 **사유 코드**(`…/upstream-*` 응답에 함께 옵니다). `type`은 상태 수준이고 `detail`은 고정 문구라, 무엇을 고쳐야 하는지는 이 값이 알려 줍니다 — 예: `BID_INVALID_BID_DATE_RANGE`(마감이 시작보다 이름), `BID_DUPLICATE_PURCHASE_NO`(같은 조달번호의 공고가 진행 중). 안정 식별자이므로 문자열로 분기해도 됩니다. `type`은 `https://problems.cmarket.io/partner/<slug>` 형태의 **안정 식별자**입니다. RFC 9457 §3.1.1이 허용하는 대로 이 URI는 **역참조(dereference)되지 않습니다** — 브라우저로 열지 말고 문자열 비교로만 쓰세요. slug 목록과 의미는 각 엔드포인트의 응답 설명에 status 별로 적혀 있습니다. ### 멱등성 위반: 409와 422의 차이 - `409` `…/idempotency-key-conflict` — 같은 키의 **원 요청이 아직 처리 중**입니다. 잠시 뒤 같은 키로 다시 부르면 그 결과를 받습니다. - `422` `…/idempotency-key-reused` — 같은 키를 **다른 body** 로 보냈습니다. 재시도해도 영원히 같은 실패이니 새 키를 쓰거나 body를 되돌리세요. ## Rate Limit 전역 **60 요청/분 per `client_id`**, 토큰 발급(`/oauth/token`)은 **5 요청/분** 입니다. 초과 시 `429`(`type: …/too-many-requests`). 쿼터는 두 가지 표기로 함께 나갑니다 — 신규 연동은 표준 필드를 쓰세요. - **표준**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (정책) · `RateLimit: \"default\";r=59;t=42` (잔량 r, 리셋까지 t 초) - **레거시**(관용): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. 기존 연동 호환을 위해 유지합니다. `429` 에서는 `Retry-After`(초)가 우선합니다. 대량 동기화(품목 단위 반복 등록 등)는 `Retry-After` 만큼 backoff 후 재시도하세요. ## 추적 요청에 `X-Correlation-Id` 헤더를 실으면 그대로 echo 되고, 없으면 서버가 발급합니다. 모든 응답(성공/에러)에 `X-Correlation-Id`가 실립니다. ## 전방호환 — 모르는 필드와 값에서 깨지지 않게 다음 셋은 breaking 변경으로 보지 않으며 minor 릴리스에서 예고 없이 일어납니다. 이 전제로 구현하세요. - **선택 필드 추가**: 모르는 필드는 무시하세요. 엄격 파서(unknown key 거부)를 쓰지 마세요. - **enum 값 추가**: 상태·낙찰방법 등에 새 값이 생깁니다. 모르는 값을 만나면 예외를 던지지 말고 원문 문자열을 보존하세요. - **problem `type` slug 추가**: 모르는 slug은 **HTTP status로 폴백**해 분기하세요. ## 버전 수명(deprecation/sunset) - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` 헤더로 통지합니다. 이 헤더를 모니터링하세요.
7
7
  *
8
- * The version of the OpenAPI document: 45.1.0
8
+ * The version of the OpenAPI document: 45.1.1
9
9
  * Contact: semo.io.kr@gmail.com
10
10
  *
11
11
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -2,7 +2,7 @@
2
2
  * CMARKET V6 Partner API
3
3
  * 외부 ERP 연동용 RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` 플로우). `/oauth/token`에서 토큰을 발급받아 `Authorization: Bearer <token>` 헤더로 실으세요. ## 권한 — 두 개의 독립된 축 `403`을 만났다면 둘 중 어느 축에 걸린 것인지 먼저 구분하세요. - **스코프** = *무엇을 할 수 있나*. 토큰에 부여된 `bids:read`·`contracts:write` 등입니다. 미보유 시 `…/insufficient-scope`. - **대행 범위** = *누구의 데이터를 다룰 수 있나*. API 키 설정이며 스코프로 표현되지 않습니다. 범위 밖이면 스코프와 무관하게 403입니다. 대행 범위는 키마다 둘 중 하나로 설정됩니다 — **소속 그룹 전원**(기관 키. 사업처·부서 계정이 새로 생겨도 자동 포함) 또는 **지정 발주기관 목록**(계약으로 합의된 목록). 범위를 넓혀야 하면 스코프가 아니라 키 설정 변경을 요청하세요. ## 성공 응답 봉투 `/v2`의 모든 2xx 본문은 `{ \"data\": … }`입니다. 단일 리소스든 목록이든 같습니다. **목록은 `data`가 배열이고 `meta`가 항상 함께 실립니다** — `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 리소스 응답에는 `meta`가 나가지 않습니다. 봉투를 쓰지 않는 표면은 둘입니다. `/oauth/_*`와 `/.well-known/_*`는 각각 RFC 6749·RFC 8414·RFC 9728이 최상위 필드를 규정하고, 파일 내용 응답은 본문이 JSON이 아닙니다. 에러 응답에는 봉투를 씌우지 않습니다 — 아래 problem+json이 단독으로 책임집니다. ## 조건부 요청 (ETag) `/v2`의 모든 `GET` 응답에 weak `ETag`(`W/\"…\"`)가 실립니다. 받은 값을 다음 요청의 `If-None-Match` 헤더로 되보내면, 내용이 그대로일 때 `304 Not Modified`를 본문 없이 받습니다. 결과가 나기를 기다리며 같은 자원을 반복 조회하는 연동이라면 이 헤더 하나로 전송량이 사라집니다. ## 에러 (RFC 9457 problem+json) 모든 에러 응답은 `application/problem+json`입니다. **HTTP status + `type` URI** 로 분기하세요. - `retryable`(boolean): 자동 재시도 안전 여부. `true`(429·5xx transient)면 backoff 후 재시도하고, `false`면 요청을 고쳐야 합니다. - `traceId`: 요청 추적 id. `X-Correlation-Id` 응답 헤더와 같은 값입니다 — 문의할 때 이 값을 첨부하세요. - `correlationId`: `traceId`와 같은 값의 옛 이름. 기존 연동 호환으로 함께 실립니다. 새 연동은 `traceId`를 읽으세요. - `invalid-params`: 검증 실패(400 `…/validation-failed`) 시 위반 필드 경로 목록(RFC 9457 확장, 값 없음). - `code`: 조달플랫폼이 요청을 거부한 **사유 코드**(`…/upstream-*` 응답에 함께 옵니다). `type`은 상태 수준이고 `detail`은 고정 문구라, 무엇을 고쳐야 하는지는 이 값이 알려 줍니다 — 예: `BID_INVALID_BID_DATE_RANGE`(마감이 시작보다 이름), `BID_DUPLICATE_PURCHASE_NO`(같은 조달번호의 공고가 진행 중). 안정 식별자이므로 문자열로 분기해도 됩니다. `type`은 `https://problems.cmarket.io/partner/<slug>` 형태의 **안정 식별자**입니다. RFC 9457 §3.1.1이 허용하는 대로 이 URI는 **역참조(dereference)되지 않습니다** — 브라우저로 열지 말고 문자열 비교로만 쓰세요. slug 목록과 의미는 각 엔드포인트의 응답 설명에 status 별로 적혀 있습니다. ### 멱등성 위반: 409와 422의 차이 - `409` `…/idempotency-key-conflict` — 같은 키의 **원 요청이 아직 처리 중**입니다. 잠시 뒤 같은 키로 다시 부르면 그 결과를 받습니다. - `422` `…/idempotency-key-reused` — 같은 키를 **다른 body** 로 보냈습니다. 재시도해도 영원히 같은 실패이니 새 키를 쓰거나 body를 되돌리세요. ## Rate Limit 전역 **60 요청/분 per `client_id`**, 토큰 발급(`/oauth/token`)은 **5 요청/분** 입니다. 초과 시 `429`(`type: …/too-many-requests`). 쿼터는 두 가지 표기로 함께 나갑니다 — 신규 연동은 표준 필드를 쓰세요. - **표준**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (정책) · `RateLimit: \"default\";r=59;t=42` (잔량 r, 리셋까지 t 초) - **레거시**(관용): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. 기존 연동 호환을 위해 유지합니다. `429` 에서는 `Retry-After`(초)가 우선합니다. 대량 동기화(품목 단위 반복 등록 등)는 `Retry-After` 만큼 backoff 후 재시도하세요. ## 추적 요청에 `X-Correlation-Id` 헤더를 실으면 그대로 echo 되고, 없으면 서버가 발급합니다. 모든 응답(성공/에러)에 `X-Correlation-Id`가 실립니다. ## 전방호환 — 모르는 필드와 값에서 깨지지 않게 다음 셋은 breaking 변경으로 보지 않으며 minor 릴리스에서 예고 없이 일어납니다. 이 전제로 구현하세요. - **선택 필드 추가**: 모르는 필드는 무시하세요. 엄격 파서(unknown key 거부)를 쓰지 마세요. - **enum 값 추가**: 상태·낙찰방법 등에 새 값이 생깁니다. 모르는 값을 만나면 예외를 던지지 말고 원문 문자열을 보존하세요. - **problem `type` slug 추가**: 모르는 slug은 **HTTP status로 폴백**해 분기하세요. ## 버전 수명(deprecation/sunset) - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` 헤더로 통지합니다. 이 헤더를 모니터링하세요.
4
4
  *
5
- * The version of the OpenAPI document: 45.1.0
5
+ * The version of the OpenAPI document: 45.1.1
6
6
  * Contact: semo.io.kr@gmail.com
7
7
  *
8
8
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).