@cmarket/partner-sdk 45.1.0 → 45.1.2

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
@@ -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.2
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.2
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.2
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.2
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).
package/docs/EmbedApi.md CHANGED
@@ -9,7 +9,7 @@ All URIs are relative to *https://partner-api.c-market.net*
9
9
  # **createEmbedLaunch**
10
10
  > CreateEmbedLaunch201Response createEmbedLaunch(embedLaunchRequestDto)
11
11
 
12
- 발주기관 담당자(`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입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
12
+ 발주기관 담당자(`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` 검증은 **API 키의 대행 범위 확인뿐**입니다(범위 밖이면 403) — 같은 기관 담당자는 전부 통과하므로, 브라우저가 지정한 값을 그대로 넘기면 동료 명의로 화면이 열립니다. - **공고 데이터 통지(`cmarket:bid-data`)**: 두 자리에서 나옵니다 — ① 공고등록을 마친 직후(등록 → `cmarket:bid-data` → `cmarket:success` 순서, 별도 버튼 불요) ② 공고상세 화면 맨 아래의 \"수신하기\" 버튼. 본문은 `GET /v2/bids/{bidId}` 응답의 부분집합이라, REST를 연동하지 않은 기관도 임베드만으로 자체 대장을 채울 수 있습니다. - **새 탭**: `parentOrigin` 없이 발급합니다 origin 등록이 필요 없는 대신 통지가 없어 결과는 조회 API로 확인합니다. - 허용 목록 밖 `screen`·`components`는 400입니다. - **화면마다 필요한 값이 다릅니다** — `bid-detail`·`payment`는 `targetBidId` 없이 발급하면 400입니다(임베드 그룹 설명의 요건 표 참조). 아래 예시 셋이 그대로 붙여 쓸 수 있는 최소 요청입니다.
13
13
 
14
14
  ### Example
15
15
 
@@ -9,7 +9,7 @@ Name | Type | Description | Notes
9
9
  **screen** | **string** | 임베드를 열었을 때 **처음 보일 화면**입니다 — &#x60;bid-register&#x60;&#x3D;공고등록 · &#x60;bid-list&#x60;&#x3D;공고목록 · &#x60;bid-detail&#x60;&#x3D;공고상세 · &#x60;assistant&#x60;&#x3D;AI 리포트 어시스트 · &#x60;payment&#x60;&#x3D;대금결제 · &#x60;savings&#x60;&#x3D;예산절감 실적. 허용되지 않은 값이면 400입니다. 이 세션으로 쓸 수 있는 화면 전체는 components로 정합니다. &#x60;bid-detail&#x60; · &#x60;payment&#x60; 는 대상 공고가 있어야 열립니다 — targetBidId를 함께 보내거나, 목록(&#x60;bid-list&#x60;) 탭을 같이 열어 사용자가 고르게 하세요. 둘 다 없으면 400입니다. | [default to undefined]
10
10
  **components** | **Array&lt;string&gt;** | 이 세션으로 쓸 수 있는 화면(&#x3D;컴포넌트) 집합입니다. 여러 개를 주면 임베드가 상단 탭으로 그리고, 사용자가 새 launch URL 없이 그 사이를 오갑니다. screen은 자동으로 포함됩니다. **표시 목록이 아니라 권한입니다** — 여기에 없는 화면의 기능은 서버가 403으로 거절합니다. 담당자 역할이 여럿이면(등록만 가능한 실무자 / 결제까지 가능한 결재자) 역할에 맞춰 좁혀서 발급하세요. 생략하면 screen 하나만 열린 세션이 됩니다. &#x60;bid-detail&#x60; · &#x60;payment&#x60; 를 섞을 때는 대상 공고의 출처가 있어야 합니다 — &#x60;targetBidId&#x60; 를 주거나, &#x60;bid-list&#x60; 를 함께 열어 **사용자가 세션 안에서 고르게** 합니다(허브 통합의 정상 흐름). 둘 다 없으면 400입니다. | [optional] [default to undefined]
11
11
  **targetBidId** | **string** | 임베드 세션을 특정 공고로 스코프할 대상 공고 식별자(구매번호 또는 등록 응답의 공고번호). 지정하면 이 파트너 키가 소유한 공고여야 하고(다른 발주기관의 공고는 403), 세션은 그 공고에만 적용됩니다. &#x60;bid-detail&#x60; · &#x60;payment&#x60; 화면을 **처음 화면으로** 열거나 목록(&#x60;bid-list&#x60;) 없이 탭으로 끼울 때는 **필수**입니다 — 대상 공고를 얻을 방법이 없으면 발급이 400입니다. 목록을 함께 연 허브 세션에서는 생략해도 됩니다(사용자가 고른 공고를 상세·결제가 씁니다). 나머지 화면만 여는 세션에서 생략하면 화면 전역(member-scoped) 세션이 됩니다. 서버가 구매번호를 내부 공고번호로 해소해 세션에 박으므로, 화면은 이 값으로만 조회합니다 — 대상 공고를 prefill로 따로 넘길 필요가 없습니다. | [optional] [default to undefined]
12
- **parentOrigin** | **string** | iframe을 띄울 **부모 페이지의 origin** 입니다(&#x60;https://erp.example.com&#x60;). 이 값을 주면 임베드가 완료·취소·공고선택·세션만료를 그 origin으로 &#x60;postMessage&#x60; 통지하므로, ERP가 결과를 즉시 받을 수 있습니다. 파트너 키에 등록된 허용 origin과 대조하며 **미등록이면 400** 입니다(등록은 CMARKET 담당자에게 요청하세요브라우저 &#x60;frame-ancestors&#x60; 설정도 함께 필요합니다). 생략하면 통지 없이 화면만 열립니다 — 새 탭으로 여는 경우가 그렇습니다. | [optional] [default to undefined]
12
+ **parentOrigin** | **string** | iframe을 띄울 **부모 페이지의 origin** 입니다(&#x60;https://erp.example.com&#x60;). 이 값을 주면 임베드가 완료·취소·공고선택·세션만료를 그 origin으로 &#x60;postMessage&#x60; 통지하므로, ERP가 결과를 즉시 받을 수 있습니다. 파트너 키에 등록된 허용 origin과 대조하며 **미등록이면 400** 입니다. 등록은 CMARKET 담당자에게 요청하시면 되고, 등록 즉시 반영됩니다 브라우저가 iframe을 허용하는 근거(&#x60;frame-ancestors&#x60;)도 목록을 따르므로 따로 요청하실 것이 없습니다. 생략하면 통지 없이 화면만 열립니다 — 새 탭으로 여는 경우가 그렇습니다. | [optional] [default to undefined]
13
13
  **prefill** | [**EmbedBidPrefillDto**](EmbedBidPrefillDto.md) | 화면을 미리 채워 열기 위한 값입니다. 이 값을 읽는 화면은 &#x60;bid-register&#x60; 이고(&#x60;paymentMethod&#x60; 만 &#x60;payment&#x60; 화면도 함께 읽습니다), 나머지 화면은 무시할 뿐 오류가 아닙니다 — 한 세션이 components로 탭을 여러 개 열면 그 화면들이 이 한 객체를 함께 봅니다. &#x60;purchaseNo&#x60;는 공고 등록(&#x60;POST /v2/bids&#x60;)과 같은 축입니다 — 숫자로 시작하면 공고번호로 오인되니 알파벳 접두사를 붙이세요. **대상 공고는 여기가 아니라 &#x60;targetBidId&#x60;로 지정합니다.** **값은 비권위입니다** — 폼 기본값일 뿐이고 최종 검증은 제출 시점의 서버가 합니다. 낙찰방법처럼 상태머신에 얽힌 값은 받지 않습니다. 다만 **모양은 여기서 검증합니다** — 미인식 필드나 타입 불일치는 400입니다(전 표면 공통 규약). 통과시켜 놓고 화면이 조용히 버리면 연동사는 빈 폼만 보고 원인을 찾지 못합니다. | [optional] [default to undefined]
14
14
 
15
15
  ## Example
package/index.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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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.2
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).