@cmarket/partner-sdk 50.0.0 β†’ 50.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (699) hide show
  1. package/README.md +5 -5
  2. package/api/embed-api.ts +9 -9
  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/well-known-api.ts +1 -1
  7. package/api.ts +1 -1
  8. package/base.ts +1 -1
  9. package/common.ts +1 -1
  10. package/configuration.ts +1 -1
  11. package/dist/api/embed-api.d.ts +9 -9
  12. package/dist/api/embed-api.js +9 -9
  13. package/dist/api/oauth-api.d.ts +1 -1
  14. package/dist/api/oauth-api.js +1 -1
  15. package/dist/api/partner-api-api.d.ts +1 -1
  16. package/dist/api/partner-api-api.js +1 -1
  17. package/dist/api/products-api.d.ts +1 -1
  18. package/dist/api/products-api.js +1 -1
  19. package/dist/api/well-known-api.d.ts +1 -1
  20. package/dist/api/well-known-api.js +1 -1
  21. package/dist/api.d.ts +1 -1
  22. package/dist/api.js +1 -1
  23. package/dist/base.d.ts +1 -1
  24. package/dist/base.js +1 -1
  25. package/dist/common.d.ts +1 -1
  26. package/dist/common.js +1 -1
  27. package/dist/configuration.d.ts +1 -1
  28. package/dist/configuration.js +1 -1
  29. package/dist/esm/api/embed-api.d.ts +9 -9
  30. package/dist/esm/api/embed-api.js +9 -9
  31. package/dist/esm/api/oauth-api.d.ts +1 -1
  32. package/dist/esm/api/oauth-api.js +1 -1
  33. package/dist/esm/api/partner-api-api.d.ts +1 -1
  34. package/dist/esm/api/partner-api-api.js +1 -1
  35. package/dist/esm/api/products-api.d.ts +1 -1
  36. package/dist/esm/api/products-api.js +1 -1
  37. package/dist/esm/api/well-known-api.d.ts +1 -1
  38. package/dist/esm/api/well-known-api.js +1 -1
  39. package/dist/esm/api.d.ts +1 -1
  40. package/dist/esm/api.js +1 -1
  41. package/dist/esm/base.d.ts +1 -1
  42. package/dist/esm/base.js +1 -1
  43. package/dist/esm/common.d.ts +1 -1
  44. package/dist/esm/common.js +1 -1
  45. package/dist/esm/configuration.d.ts +1 -1
  46. package/dist/esm/configuration.js +1 -1
  47. package/dist/esm/index.d.ts +1 -1
  48. package/dist/esm/index.js +1 -1
  49. package/dist/esm/models/acceptance-result-response-dto.d.ts +1 -1
  50. package/dist/esm/models/acceptance-result-response-dto.js +1 -1
  51. package/dist/esm/models/acknowledge-product-receipt200-response.d.ts +1 -1
  52. package/dist/esm/models/acknowledge-product-receipt200-response.js +1 -1
  53. package/dist/esm/models/acknowledge-products-request-dto.d.ts +1 -1
  54. package/dist/esm/models/acknowledge-products-request-dto.js +1 -1
  55. package/dist/esm/models/api-catalog-dto.d.ts +1 -1
  56. package/dist/esm/models/api-catalog-dto.js +1 -1
  57. package/dist/esm/models/api-catalog-entry-dto.d.ts +1 -1
  58. package/dist/esm/models/api-catalog-entry-dto.js +1 -1
  59. package/dist/esm/models/api-catalog-link-dto.d.ts +1 -1
  60. package/dist/esm/models/api-catalog-link-dto.js +1 -1
  61. package/dist/esm/models/authorization-server-metadata-dto.d.ts +1 -1
  62. package/dist/esm/models/authorization-server-metadata-dto.js +1 -1
  63. package/dist/esm/models/avalues-input-dto.d.ts +1 -1
  64. package/dist/esm/models/avalues-input-dto.js +1 -1
  65. package/dist/esm/models/award-method-public.d.ts +1 -1
  66. package/dist/esm/models/award-method-public.js +1 -1
  67. package/dist/esm/models/award-registered-v2-response-dto.d.ts +1 -1
  68. package/dist/esm/models/award-registered-v2-response-dto.js +1 -1
  69. package/dist/esm/models/bid-acceptance-dto.d.ts +1 -1
  70. package/dist/esm/models/bid-acceptance-dto.js +1 -1
  71. package/dist/esm/models/bid-attachment-dto.d.ts +1 -1
  72. package/dist/esm/models/bid-attachment-dto.js +1 -1
  73. package/dist/esm/models/bid-attachment-input-dto.d.ts +1 -1
  74. package/dist/esm/models/bid-attachment-input-dto.js +1 -1
  75. package/dist/esm/models/bid-avalues-dto.d.ts +1 -1
  76. package/dist/esm/models/bid-avalues-dto.js +1 -1
  77. package/dist/esm/models/bid-award-method-detail-dto.d.ts +1 -1
  78. package/dist/esm/models/bid-award-method-detail-dto.js +1 -1
  79. package/dist/esm/models/bid-bond-dto.d.ts +1 -1
  80. package/dist/esm/models/bid-bond-dto.js +1 -1
  81. package/dist/esm/models/bid-cancellation-dto.d.ts +1 -1
  82. package/dist/esm/models/bid-cancellation-dto.js +1 -1
  83. package/dist/esm/models/bid-category-public.d.ts +1 -1
  84. package/dist/esm/models/bid-category-public.js +1 -1
  85. package/dist/esm/models/bid-contact-dto.d.ts +1 -1
  86. package/dist/esm/models/bid-contact-dto.js +1 -1
  87. package/dist/esm/models/bid-contacts-dto.d.ts +1 -1
  88. package/dist/esm/models/bid-contacts-dto.js +1 -1
  89. package/dist/esm/models/bid-contract-document-dto.d.ts +1 -1
  90. package/dist/esm/models/bid-contract-document-dto.js +1 -1
  91. package/dist/esm/models/bid-delivery-terms-dto.d.ts +1 -1
  92. package/dist/esm/models/bid-delivery-terms-dto.js +1 -1
  93. package/dist/esm/models/bid-detail-response-dto.d.ts +1 -1
  94. package/dist/esm/models/bid-detail-response-dto.js +1 -1
  95. package/dist/esm/models/bid-document-dto.d.ts +1 -1
  96. package/dist/esm/models/bid-document-dto.js +1 -1
  97. package/dist/esm/models/bid-failed-v2-response-dto.d.ts +1 -1
  98. package/dist/esm/models/bid-failed-v2-response-dto.js +1 -1
  99. package/dist/esm/models/bid-item-dto.d.ts +1 -1
  100. package/dist/esm/models/bid-item-dto.js +1 -1
  101. package/dist/esm/models/bid-license-requirement-dto.d.ts +1 -1
  102. package/dist/esm/models/bid-license-requirement-dto.js +1 -1
  103. package/dist/esm/models/bid-lifecycle-dto.d.ts +1 -1
  104. package/dist/esm/models/bid-lifecycle-dto.js +1 -1
  105. package/dist/esm/models/bid-manager-dto.d.ts +1 -1
  106. package/dist/esm/models/bid-manager-dto.js +1 -1
  107. package/dist/esm/models/bid-must-read-notice-dto.d.ts +1 -1
  108. package/dist/esm/models/bid-must-read-notice-dto.js +1 -1
  109. package/dist/esm/models/bid-payment-terms-dto.d.ts +1 -1
  110. package/dist/esm/models/bid-payment-terms-dto.js +1 -1
  111. package/dist/esm/models/bid-preliminary-price-dto.d.ts +1 -1
  112. package/dist/esm/models/bid-preliminary-price-dto.js +1 -1
  113. package/dist/esm/models/bid-preliminary-price-slot-dto.d.ts +1 -1
  114. package/dist/esm/models/bid-preliminary-price-slot-dto.js +1 -1
  115. package/dist/esm/models/bid-product-dto.d.ts +1 -1
  116. package/dist/esm/models/bid-product-dto.js +1 -1
  117. package/dist/esm/models/bid-public-status.d.ts +1 -1
  118. package/dist/esm/models/bid-public-status.js +1 -1
  119. package/dist/esm/models/bid-qualification-review-dto.d.ts +1 -1
  120. package/dist/esm/models/bid-qualification-review-dto.js +1 -1
  121. package/dist/esm/models/bid-region-dto.d.ts +1 -1
  122. package/dist/esm/models/bid-region-dto.js +1 -1
  123. package/dist/esm/models/bid-region-restriction-dto.d.ts +1 -1
  124. package/dist/esm/models/bid-region-restriction-dto.js +1 -1
  125. package/dist/esm/models/bid-registered-response-dto.d.ts +1 -1
  126. package/dist/esm/models/bid-registered-response-dto.js +1 -1
  127. package/dist/esm/models/bid-related-bid-dto.d.ts +1 -1
  128. package/dist/esm/models/bid-related-bid-dto.js +1 -1
  129. package/dist/esm/models/bid-required-document-dto.d.ts +1 -1
  130. package/dist/esm/models/bid-required-document-dto.js +1 -1
  131. package/dist/esm/models/bid-result-participant-attachment-dto.d.ts +1 -1
  132. package/dist/esm/models/bid-result-participant-attachment-dto.js +1 -1
  133. package/dist/esm/models/bid-result-participant-dto.d.ts +1 -1
  134. package/dist/esm/models/bid-result-participant-dto.js +1 -1
  135. package/dist/esm/models/bid-results-response-dto.d.ts +1 -1
  136. package/dist/esm/models/bid-results-response-dto.js +1 -1
  137. package/dist/esm/models/bid-site-briefing-dto.d.ts +1 -1
  138. package/dist/esm/models/bid-site-briefing-dto.js +1 -1
  139. package/dist/esm/models/bid-statement-response-dto.d.ts +1 -1
  140. package/dist/esm/models/bid-statement-response-dto.js +1 -1
  141. package/dist/esm/models/bidding-style-public.d.ts +1 -1
  142. package/dist/esm/models/bidding-style-public.js +1 -1
  143. package/dist/esm/models/card-payment-request-response-dto.d.ts +1 -1
  144. package/dist/esm/models/card-payment-request-response-dto.js +1 -1
  145. package/dist/esm/models/complete-acceptance-request-dto.d.ts +1 -1
  146. package/dist/esm/models/complete-acceptance-request-dto.js +1 -1
  147. package/dist/esm/models/complete-acceptance200-response.d.ts +1 -1
  148. package/dist/esm/models/complete-acceptance200-response.js +1 -1
  149. package/dist/esm/models/contract-restriction-confirm-input-dto.d.ts +1 -1
  150. package/dist/esm/models/contract-restriction-confirm-input-dto.js +1 -1
  151. package/dist/esm/models/create-bid-request-dto.d.ts +1 -1
  152. package/dist/esm/models/create-bid-request-dto.js +1 -1
  153. package/dist/esm/models/create-card-payment-dto.d.ts +1 -1
  154. package/dist/esm/models/create-card-payment-dto.js +1 -1
  155. package/dist/esm/models/create-card-payment-request-dto.d.ts +1 -1
  156. package/dist/esm/models/create-card-payment-request-dto.js +1 -1
  157. package/dist/esm/models/create-card-payment200-response.d.ts +1 -1
  158. package/dist/esm/models/create-card-payment200-response.js +1 -1
  159. package/dist/esm/models/create-embed-launch201-response.d.ts +1 -1
  160. package/dist/esm/models/create-embed-launch201-response.js +1 -1
  161. package/dist/esm/models/create-external-contract-documents-request-dto.d.ts +1 -1
  162. package/dist/esm/models/create-external-contract-documents-request-dto.js +1 -1
  163. package/dist/esm/models/create-external-contract-documents-response-dto.d.ts +1 -1
  164. package/dist/esm/models/create-external-contract-documents-response-dto.js +1 -1
  165. package/dist/esm/models/delivery-date-type-public.d.ts +1 -1
  166. package/dist/esm/models/delivery-date-type-public.js +1 -1
  167. package/dist/esm/models/delivery-method-public.d.ts +1 -1
  168. package/dist/esm/models/delivery-method-public.js +1 -1
  169. package/dist/esm/models/embed-bid-prefill-dto.d.ts +1 -1
  170. package/dist/esm/models/embed-bid-prefill-dto.js +1 -1
  171. package/dist/esm/models/embed-bid-prefill-item-dto.d.ts +1 -1
  172. package/dist/esm/models/embed-bid-prefill-item-dto.js +1 -1
  173. package/dist/esm/models/embed-bid-prefill-manager-dto.d.ts +1 -1
  174. package/dist/esm/models/embed-bid-prefill-manager-dto.js +1 -1
  175. package/dist/esm/models/embed-launch-request-dto.d.ts +1 -1
  176. package/dist/esm/models/embed-launch-request-dto.js +1 -1
  177. package/dist/esm/models/embed-launch-response-dto.d.ts +2 -2
  178. package/dist/esm/models/embed-launch-response-dto.js +1 -1
  179. package/dist/esm/models/excellent-procurement-public.d.ts +1 -1
  180. package/dist/esm/models/excellent-procurement-public.js +1 -1
  181. package/dist/esm/models/external-contract-document-item-dto.d.ts +1 -1
  182. package/dist/esm/models/external-contract-document-item-dto.js +1 -1
  183. package/dist/esm/models/external-contract-documents-response-dto.d.ts +1 -1
  184. package/dist/esm/models/external-contract-documents-response-dto.js +1 -1
  185. package/dist/esm/models/external-contract-item-dto.d.ts +1 -1
  186. package/dist/esm/models/external-contract-item-dto.js +1 -1
  187. package/dist/esm/models/external-contract-snapshot-dto.d.ts +1 -1
  188. package/dist/esm/models/external-contract-snapshot-dto.js +1 -1
  189. package/dist/esm/models/external-document-inputs-dto.d.ts +1 -1
  190. package/dist/esm/models/external-document-inputs-dto.js +1 -1
  191. package/dist/esm/models/file-uploaded-response-dto.d.ts +1 -1
  192. package/dist/esm/models/file-uploaded-response-dto.js +1 -1
  193. package/dist/esm/models/generated-external-contract-document-dto.d.ts +1 -1
  194. package/dist/esm/models/generated-external-contract-document-dto.js +1 -1
  195. package/dist/esm/models/get-bid-statement200-response.d.ts +1 -1
  196. package/dist/esm/models/get-bid-statement200-response.js +1 -1
  197. package/dist/esm/models/get-supplier-card-payable-v2200-response.d.ts +1 -1
  198. package/dist/esm/models/get-supplier-card-payable-v2200-response.js +1 -1
  199. package/dist/esm/models/green-product-public.d.ts +1 -1
  200. package/dist/esm/models/green-product-public.js +1 -1
  201. package/dist/esm/models/handover-type-public.d.ts +1 -1
  202. package/dist/esm/models/handover-type-public.js +1 -1
  203. package/dist/esm/models/health-controller-check200-response.d.ts +1 -1
  204. package/dist/esm/models/health-controller-check200-response.js +1 -1
  205. package/dist/esm/models/health-response-dto.d.ts +1 -1
  206. package/dist/esm/models/health-response-dto.js +1 -1
  207. package/dist/esm/models/hierarchical-region-dto.d.ts +1 -1
  208. package/dist/esm/models/hierarchical-region-dto.js +1 -1
  209. package/dist/esm/models/introspect-request-dto.d.ts +1 -1
  210. package/dist/esm/models/introspect-request-dto.js +1 -1
  211. package/dist/esm/models/introspection-response-dto.d.ts +1 -1
  212. package/dist/esm/models/introspection-response-dto.js +1 -1
  213. package/dist/esm/models/invalid-param-dto.d.ts +1 -1
  214. package/dist/esm/models/invalid-param-dto.js +1 -1
  215. package/dist/esm/models/invoice-split-response-dto.d.ts +1 -1
  216. package/dist/esm/models/invoice-split-response-dto.js +1 -1
  217. package/dist/esm/models/legal-mandatory-public.d.ts +1 -1
  218. package/dist/esm/models/legal-mandatory-public.js +1 -1
  219. package/dist/esm/models/license-combination-mode.d.ts +1 -1
  220. package/dist/esm/models/license-combination-mode.js +1 -1
  221. package/dist/esm/models/list-bid-results200-response-meta.d.ts +1 -1
  222. package/dist/esm/models/list-bid-results200-response-meta.js +1 -1
  223. package/dist/esm/models/list-bid-results200-response.d.ts +1 -1
  224. package/dist/esm/models/list-bid-results200-response.js +1 -1
  225. package/dist/esm/models/list-products200-response.d.ts +1 -1
  226. package/dist/esm/models/list-products200-response.js +1 -1
  227. package/dist/esm/models/mark-bid-failed-request-dto.d.ts +1 -1
  228. package/dist/esm/models/mark-bid-failed-request-dto.js +1 -1
  229. package/dist/esm/models/mark-bid-failed201-response.d.ts +1 -1
  230. package/dist/esm/models/mark-bid-failed201-response.js +1 -1
  231. package/dist/esm/models/nominated-supplier-dto.d.ts +1 -1
  232. package/dist/esm/models/nominated-supplier-dto.js +1 -1
  233. package/dist/esm/models/oauth-error-response-dto.d.ts +1 -1
  234. package/dist/esm/models/oauth-error-response-dto.js +1 -1
  235. package/dist/esm/models/payment-method-public.d.ts +1 -1
  236. package/dist/esm/models/payment-method-public.js +1 -1
  237. package/dist/esm/models/preconditions-dto.d.ts +1 -1
  238. package/dist/esm/models/preconditions-dto.js +1 -1
  239. package/dist/esm/models/preliminary-price-region-public.d.ts +1 -1
  240. package/dist/esm/models/preliminary-price-region-public.js +1 -1
  241. package/dist/esm/models/price-score-type-public.d.ts +1 -1
  242. package/dist/esm/models/price-score-type-public.js +1 -1
  243. package/dist/esm/models/pricing-type-public.d.ts +1 -1
  244. package/dist/esm/models/pricing-type-public.js +1 -1
  245. package/dist/esm/models/problem-details-dto.d.ts +1 -1
  246. package/dist/esm/models/problem-details-dto.js +1 -1
  247. package/dist/esm/models/product-receipt-response-dto.d.ts +1 -1
  248. package/dist/esm/models/product-receipt-response-dto.js +1 -1
  249. package/dist/esm/models/product-response-dto.d.ts +1 -1
  250. package/dist/esm/models/product-response-dto.js +1 -1
  251. package/dist/esm/models/protected-resource-metadata-dto.d.ts +1 -1
  252. package/dist/esm/models/protected-resource-metadata-dto.js +1 -1
  253. package/dist/esm/models/qualification-review-input-dto.d.ts +1 -1
  254. package/dist/esm/models/qualification-review-input-dto.js +1 -1
  255. package/dist/esm/models/register-award-request-dto.d.ts +1 -1
  256. package/dist/esm/models/register-award-request-dto.js +1 -1
  257. package/dist/esm/models/register-award201-response.d.ts +1 -1
  258. package/dist/esm/models/register-award201-response.js +1 -1
  259. package/dist/esm/models/register-bid201-response.d.ts +1 -1
  260. package/dist/esm/models/register-bid201-response.js +1 -1
  261. package/dist/esm/models/register-semo-contract-request-dto.d.ts +1 -1
  262. package/dist/esm/models/register-semo-contract-request-dto.js +1 -1
  263. package/dist/esm/models/regulation-type-public.d.ts +1 -1
  264. package/dist/esm/models/regulation-type-public.js +1 -1
  265. package/dist/esm/models/related-bid-relation.d.ts +1 -1
  266. package/dist/esm/models/related-bid-relation.js +1 -1
  267. package/dist/esm/models/request-invoice-split-request-dto.d.ts +1 -1
  268. package/dist/esm/models/request-invoice-split-request-dto.js +1 -1
  269. package/dist/esm/models/request-invoice-split200-response.d.ts +1 -1
  270. package/dist/esm/models/request-invoice-split200-response.js +1 -1
  271. package/dist/esm/models/retiree-roster-input-dto.d.ts +1 -1
  272. package/dist/esm/models/retiree-roster-input-dto.js +1 -1
  273. package/dist/esm/models/retiree-roster-row-dto.d.ts +1 -1
  274. package/dist/esm/models/retiree-roster-row-dto.js +1 -1
  275. package/dist/esm/models/revoke-request-dto.d.ts +1 -1
  276. package/dist/esm/models/revoke-request-dto.js +1 -1
  277. package/dist/esm/models/rotate-secret-request-dto.d.ts +1 -1
  278. package/dist/esm/models/rotate-secret-request-dto.js +1 -1
  279. package/dist/esm/models/rotate-secret-response-dto.d.ts +1 -1
  280. package/dist/esm/models/rotate-secret-response-dto.js +1 -1
  281. package/dist/esm/models/semo-contract-registered-response-dto.d.ts +1 -1
  282. package/dist/esm/models/semo-contract-registered-response-dto.js +1 -1
  283. package/dist/esm/models/semo-contract-taxinvoice-status-response-dto.d.ts +1 -1
  284. package/dist/esm/models/semo-contract-taxinvoice-status-response-dto.js +1 -1
  285. package/dist/esm/models/site-briefing-input-dto.d.ts +1 -1
  286. package/dist/esm/models/site-briefing-input-dto.js +1 -1
  287. package/dist/esm/models/statement-document-dto.d.ts +1 -1
  288. package/dist/esm/models/statement-document-dto.js +1 -1
  289. package/dist/esm/models/statement-product-dto.d.ts +1 -1
  290. package/dist/esm/models/statement-product-dto.js +1 -1
  291. package/dist/esm/models/supplier-card-payable-response-dto.d.ts +1 -1
  292. package/dist/esm/models/supplier-card-payable-response-dto.js +1 -1
  293. package/dist/esm/models/taxation-type-public.d.ts +1 -1
  294. package/dist/esm/models/taxation-type-public.js +1 -1
  295. package/dist/esm/models/token-request-dto.d.ts +1 -1
  296. package/dist/esm/models/token-request-dto.js +1 -1
  297. package/dist/esm/models/token-response-dto.d.ts +1 -1
  298. package/dist/esm/models/token-response-dto.js +1 -1
  299. package/dist/esm/models/two-stage-phase-public.d.ts +1 -1
  300. package/dist/esm/models/two-stage-phase-public.js +1 -1
  301. package/dist/esm/models/upload-file-request-dto.d.ts +1 -1
  302. package/dist/esm/models/upload-file-request-dto.js +1 -1
  303. package/dist/esm/models/upload-file201-response.d.ts +1 -1
  304. package/dist/esm/models/upload-file201-response.js +1 -1
  305. package/dist/esm/models/userinfo-response-dto.d.ts +1 -1
  306. package/dist/esm/models/userinfo-response-dto.js +1 -1
  307. package/dist/index.d.ts +1 -1
  308. package/dist/index.js +1 -1
  309. package/dist/models/acceptance-result-response-dto.d.ts +1 -1
  310. package/dist/models/acceptance-result-response-dto.js +1 -1
  311. package/dist/models/acknowledge-product-receipt200-response.d.ts +1 -1
  312. package/dist/models/acknowledge-product-receipt200-response.js +1 -1
  313. package/dist/models/acknowledge-products-request-dto.d.ts +1 -1
  314. package/dist/models/acknowledge-products-request-dto.js +1 -1
  315. package/dist/models/api-catalog-dto.d.ts +1 -1
  316. package/dist/models/api-catalog-dto.js +1 -1
  317. package/dist/models/api-catalog-entry-dto.d.ts +1 -1
  318. package/dist/models/api-catalog-entry-dto.js +1 -1
  319. package/dist/models/api-catalog-link-dto.d.ts +1 -1
  320. package/dist/models/api-catalog-link-dto.js +1 -1
  321. package/dist/models/authorization-server-metadata-dto.d.ts +1 -1
  322. package/dist/models/authorization-server-metadata-dto.js +1 -1
  323. package/dist/models/avalues-input-dto.d.ts +1 -1
  324. package/dist/models/avalues-input-dto.js +1 -1
  325. package/dist/models/award-method-public.d.ts +1 -1
  326. package/dist/models/award-method-public.js +1 -1
  327. package/dist/models/award-registered-v2-response-dto.d.ts +1 -1
  328. package/dist/models/award-registered-v2-response-dto.js +1 -1
  329. package/dist/models/bid-acceptance-dto.d.ts +1 -1
  330. package/dist/models/bid-acceptance-dto.js +1 -1
  331. package/dist/models/bid-attachment-dto.d.ts +1 -1
  332. package/dist/models/bid-attachment-dto.js +1 -1
  333. package/dist/models/bid-attachment-input-dto.d.ts +1 -1
  334. package/dist/models/bid-attachment-input-dto.js +1 -1
  335. package/dist/models/bid-avalues-dto.d.ts +1 -1
  336. package/dist/models/bid-avalues-dto.js +1 -1
  337. package/dist/models/bid-award-method-detail-dto.d.ts +1 -1
  338. package/dist/models/bid-award-method-detail-dto.js +1 -1
  339. package/dist/models/bid-bond-dto.d.ts +1 -1
  340. package/dist/models/bid-bond-dto.js +1 -1
  341. package/dist/models/bid-cancellation-dto.d.ts +1 -1
  342. package/dist/models/bid-cancellation-dto.js +1 -1
  343. package/dist/models/bid-category-public.d.ts +1 -1
  344. package/dist/models/bid-category-public.js +1 -1
  345. package/dist/models/bid-contact-dto.d.ts +1 -1
  346. package/dist/models/bid-contact-dto.js +1 -1
  347. package/dist/models/bid-contacts-dto.d.ts +1 -1
  348. package/dist/models/bid-contacts-dto.js +1 -1
  349. package/dist/models/bid-contract-document-dto.d.ts +1 -1
  350. package/dist/models/bid-contract-document-dto.js +1 -1
  351. package/dist/models/bid-delivery-terms-dto.d.ts +1 -1
  352. package/dist/models/bid-delivery-terms-dto.js +1 -1
  353. package/dist/models/bid-detail-response-dto.d.ts +1 -1
  354. package/dist/models/bid-detail-response-dto.js +1 -1
  355. package/dist/models/bid-document-dto.d.ts +1 -1
  356. package/dist/models/bid-document-dto.js +1 -1
  357. package/dist/models/bid-failed-v2-response-dto.d.ts +1 -1
  358. package/dist/models/bid-failed-v2-response-dto.js +1 -1
  359. package/dist/models/bid-item-dto.d.ts +1 -1
  360. package/dist/models/bid-item-dto.js +1 -1
  361. package/dist/models/bid-license-requirement-dto.d.ts +1 -1
  362. package/dist/models/bid-license-requirement-dto.js +1 -1
  363. package/dist/models/bid-lifecycle-dto.d.ts +1 -1
  364. package/dist/models/bid-lifecycle-dto.js +1 -1
  365. package/dist/models/bid-manager-dto.d.ts +1 -1
  366. package/dist/models/bid-manager-dto.js +1 -1
  367. package/dist/models/bid-must-read-notice-dto.d.ts +1 -1
  368. package/dist/models/bid-must-read-notice-dto.js +1 -1
  369. package/dist/models/bid-payment-terms-dto.d.ts +1 -1
  370. package/dist/models/bid-payment-terms-dto.js +1 -1
  371. package/dist/models/bid-preliminary-price-dto.d.ts +1 -1
  372. package/dist/models/bid-preliminary-price-dto.js +1 -1
  373. package/dist/models/bid-preliminary-price-slot-dto.d.ts +1 -1
  374. package/dist/models/bid-preliminary-price-slot-dto.js +1 -1
  375. package/dist/models/bid-product-dto.d.ts +1 -1
  376. package/dist/models/bid-product-dto.js +1 -1
  377. package/dist/models/bid-public-status.d.ts +1 -1
  378. package/dist/models/bid-public-status.js +1 -1
  379. package/dist/models/bid-qualification-review-dto.d.ts +1 -1
  380. package/dist/models/bid-qualification-review-dto.js +1 -1
  381. package/dist/models/bid-region-dto.d.ts +1 -1
  382. package/dist/models/bid-region-dto.js +1 -1
  383. package/dist/models/bid-region-restriction-dto.d.ts +1 -1
  384. package/dist/models/bid-region-restriction-dto.js +1 -1
  385. package/dist/models/bid-registered-response-dto.d.ts +1 -1
  386. package/dist/models/bid-registered-response-dto.js +1 -1
  387. package/dist/models/bid-related-bid-dto.d.ts +1 -1
  388. package/dist/models/bid-related-bid-dto.js +1 -1
  389. package/dist/models/bid-required-document-dto.d.ts +1 -1
  390. package/dist/models/bid-required-document-dto.js +1 -1
  391. package/dist/models/bid-result-participant-attachment-dto.d.ts +1 -1
  392. package/dist/models/bid-result-participant-attachment-dto.js +1 -1
  393. package/dist/models/bid-result-participant-dto.d.ts +1 -1
  394. package/dist/models/bid-result-participant-dto.js +1 -1
  395. package/dist/models/bid-results-response-dto.d.ts +1 -1
  396. package/dist/models/bid-results-response-dto.js +1 -1
  397. package/dist/models/bid-site-briefing-dto.d.ts +1 -1
  398. package/dist/models/bid-site-briefing-dto.js +1 -1
  399. package/dist/models/bid-statement-response-dto.d.ts +1 -1
  400. package/dist/models/bid-statement-response-dto.js +1 -1
  401. package/dist/models/bidding-style-public.d.ts +1 -1
  402. package/dist/models/bidding-style-public.js +1 -1
  403. package/dist/models/card-payment-request-response-dto.d.ts +1 -1
  404. package/dist/models/card-payment-request-response-dto.js +1 -1
  405. package/dist/models/complete-acceptance-request-dto.d.ts +1 -1
  406. package/dist/models/complete-acceptance-request-dto.js +1 -1
  407. package/dist/models/complete-acceptance200-response.d.ts +1 -1
  408. package/dist/models/complete-acceptance200-response.js +1 -1
  409. package/dist/models/contract-restriction-confirm-input-dto.d.ts +1 -1
  410. package/dist/models/contract-restriction-confirm-input-dto.js +1 -1
  411. package/dist/models/create-bid-request-dto.d.ts +1 -1
  412. package/dist/models/create-bid-request-dto.js +1 -1
  413. package/dist/models/create-card-payment-dto.d.ts +1 -1
  414. package/dist/models/create-card-payment-dto.js +1 -1
  415. package/dist/models/create-card-payment-request-dto.d.ts +1 -1
  416. package/dist/models/create-card-payment-request-dto.js +1 -1
  417. package/dist/models/create-card-payment200-response.d.ts +1 -1
  418. package/dist/models/create-card-payment200-response.js +1 -1
  419. package/dist/models/create-embed-launch201-response.d.ts +1 -1
  420. package/dist/models/create-embed-launch201-response.js +1 -1
  421. package/dist/models/create-external-contract-documents-request-dto.d.ts +1 -1
  422. package/dist/models/create-external-contract-documents-request-dto.js +1 -1
  423. package/dist/models/create-external-contract-documents-response-dto.d.ts +1 -1
  424. package/dist/models/create-external-contract-documents-response-dto.js +1 -1
  425. package/dist/models/delivery-date-type-public.d.ts +1 -1
  426. package/dist/models/delivery-date-type-public.js +1 -1
  427. package/dist/models/delivery-method-public.d.ts +1 -1
  428. package/dist/models/delivery-method-public.js +1 -1
  429. package/dist/models/embed-bid-prefill-dto.d.ts +1 -1
  430. package/dist/models/embed-bid-prefill-dto.js +1 -1
  431. package/dist/models/embed-bid-prefill-item-dto.d.ts +1 -1
  432. package/dist/models/embed-bid-prefill-item-dto.js +1 -1
  433. package/dist/models/embed-bid-prefill-manager-dto.d.ts +1 -1
  434. package/dist/models/embed-bid-prefill-manager-dto.js +1 -1
  435. package/dist/models/embed-launch-request-dto.d.ts +1 -1
  436. package/dist/models/embed-launch-request-dto.js +1 -1
  437. package/dist/models/embed-launch-response-dto.d.ts +2 -2
  438. package/dist/models/embed-launch-response-dto.js +1 -1
  439. package/dist/models/excellent-procurement-public.d.ts +1 -1
  440. package/dist/models/excellent-procurement-public.js +1 -1
  441. package/dist/models/external-contract-document-item-dto.d.ts +1 -1
  442. package/dist/models/external-contract-document-item-dto.js +1 -1
  443. package/dist/models/external-contract-documents-response-dto.d.ts +1 -1
  444. package/dist/models/external-contract-documents-response-dto.js +1 -1
  445. package/dist/models/external-contract-item-dto.d.ts +1 -1
  446. package/dist/models/external-contract-item-dto.js +1 -1
  447. package/dist/models/external-contract-snapshot-dto.d.ts +1 -1
  448. package/dist/models/external-contract-snapshot-dto.js +1 -1
  449. package/dist/models/external-document-inputs-dto.d.ts +1 -1
  450. package/dist/models/external-document-inputs-dto.js +1 -1
  451. package/dist/models/file-uploaded-response-dto.d.ts +1 -1
  452. package/dist/models/file-uploaded-response-dto.js +1 -1
  453. package/dist/models/generated-external-contract-document-dto.d.ts +1 -1
  454. package/dist/models/generated-external-contract-document-dto.js +1 -1
  455. package/dist/models/get-bid-statement200-response.d.ts +1 -1
  456. package/dist/models/get-bid-statement200-response.js +1 -1
  457. package/dist/models/get-supplier-card-payable-v2200-response.d.ts +1 -1
  458. package/dist/models/get-supplier-card-payable-v2200-response.js +1 -1
  459. package/dist/models/green-product-public.d.ts +1 -1
  460. package/dist/models/green-product-public.js +1 -1
  461. package/dist/models/handover-type-public.d.ts +1 -1
  462. package/dist/models/handover-type-public.js +1 -1
  463. package/dist/models/health-controller-check200-response.d.ts +1 -1
  464. package/dist/models/health-controller-check200-response.js +1 -1
  465. package/dist/models/health-response-dto.d.ts +1 -1
  466. package/dist/models/health-response-dto.js +1 -1
  467. package/dist/models/hierarchical-region-dto.d.ts +1 -1
  468. package/dist/models/hierarchical-region-dto.js +1 -1
  469. package/dist/models/introspect-request-dto.d.ts +1 -1
  470. package/dist/models/introspect-request-dto.js +1 -1
  471. package/dist/models/introspection-response-dto.d.ts +1 -1
  472. package/dist/models/introspection-response-dto.js +1 -1
  473. package/dist/models/invalid-param-dto.d.ts +1 -1
  474. package/dist/models/invalid-param-dto.js +1 -1
  475. package/dist/models/invoice-split-response-dto.d.ts +1 -1
  476. package/dist/models/invoice-split-response-dto.js +1 -1
  477. package/dist/models/legal-mandatory-public.d.ts +1 -1
  478. package/dist/models/legal-mandatory-public.js +1 -1
  479. package/dist/models/license-combination-mode.d.ts +1 -1
  480. package/dist/models/license-combination-mode.js +1 -1
  481. package/dist/models/list-bid-results200-response-meta.d.ts +1 -1
  482. package/dist/models/list-bid-results200-response-meta.js +1 -1
  483. package/dist/models/list-bid-results200-response.d.ts +1 -1
  484. package/dist/models/list-bid-results200-response.js +1 -1
  485. package/dist/models/list-products200-response.d.ts +1 -1
  486. package/dist/models/list-products200-response.js +1 -1
  487. package/dist/models/mark-bid-failed-request-dto.d.ts +1 -1
  488. package/dist/models/mark-bid-failed-request-dto.js +1 -1
  489. package/dist/models/mark-bid-failed201-response.d.ts +1 -1
  490. package/dist/models/mark-bid-failed201-response.js +1 -1
  491. package/dist/models/nominated-supplier-dto.d.ts +1 -1
  492. package/dist/models/nominated-supplier-dto.js +1 -1
  493. package/dist/models/oauth-error-response-dto.d.ts +1 -1
  494. package/dist/models/oauth-error-response-dto.js +1 -1
  495. package/dist/models/payment-method-public.d.ts +1 -1
  496. package/dist/models/payment-method-public.js +1 -1
  497. package/dist/models/preconditions-dto.d.ts +1 -1
  498. package/dist/models/preconditions-dto.js +1 -1
  499. package/dist/models/preliminary-price-region-public.d.ts +1 -1
  500. package/dist/models/preliminary-price-region-public.js +1 -1
  501. package/dist/models/price-score-type-public.d.ts +1 -1
  502. package/dist/models/price-score-type-public.js +1 -1
  503. package/dist/models/pricing-type-public.d.ts +1 -1
  504. package/dist/models/pricing-type-public.js +1 -1
  505. package/dist/models/problem-details-dto.d.ts +1 -1
  506. package/dist/models/problem-details-dto.js +1 -1
  507. package/dist/models/product-receipt-response-dto.d.ts +1 -1
  508. package/dist/models/product-receipt-response-dto.js +1 -1
  509. package/dist/models/product-response-dto.d.ts +1 -1
  510. package/dist/models/product-response-dto.js +1 -1
  511. package/dist/models/protected-resource-metadata-dto.d.ts +1 -1
  512. package/dist/models/protected-resource-metadata-dto.js +1 -1
  513. package/dist/models/qualification-review-input-dto.d.ts +1 -1
  514. package/dist/models/qualification-review-input-dto.js +1 -1
  515. package/dist/models/register-award-request-dto.d.ts +1 -1
  516. package/dist/models/register-award-request-dto.js +1 -1
  517. package/dist/models/register-award201-response.d.ts +1 -1
  518. package/dist/models/register-award201-response.js +1 -1
  519. package/dist/models/register-bid201-response.d.ts +1 -1
  520. package/dist/models/register-bid201-response.js +1 -1
  521. package/dist/models/register-semo-contract-request-dto.d.ts +1 -1
  522. package/dist/models/register-semo-contract-request-dto.js +1 -1
  523. package/dist/models/regulation-type-public.d.ts +1 -1
  524. package/dist/models/regulation-type-public.js +1 -1
  525. package/dist/models/related-bid-relation.d.ts +1 -1
  526. package/dist/models/related-bid-relation.js +1 -1
  527. package/dist/models/request-invoice-split-request-dto.d.ts +1 -1
  528. package/dist/models/request-invoice-split-request-dto.js +1 -1
  529. package/dist/models/request-invoice-split200-response.d.ts +1 -1
  530. package/dist/models/request-invoice-split200-response.js +1 -1
  531. package/dist/models/retiree-roster-input-dto.d.ts +1 -1
  532. package/dist/models/retiree-roster-input-dto.js +1 -1
  533. package/dist/models/retiree-roster-row-dto.d.ts +1 -1
  534. package/dist/models/retiree-roster-row-dto.js +1 -1
  535. package/dist/models/revoke-request-dto.d.ts +1 -1
  536. package/dist/models/revoke-request-dto.js +1 -1
  537. package/dist/models/rotate-secret-request-dto.d.ts +1 -1
  538. package/dist/models/rotate-secret-request-dto.js +1 -1
  539. package/dist/models/rotate-secret-response-dto.d.ts +1 -1
  540. package/dist/models/rotate-secret-response-dto.js +1 -1
  541. package/dist/models/semo-contract-registered-response-dto.d.ts +1 -1
  542. package/dist/models/semo-contract-registered-response-dto.js +1 -1
  543. package/dist/models/semo-contract-taxinvoice-status-response-dto.d.ts +1 -1
  544. package/dist/models/semo-contract-taxinvoice-status-response-dto.js +1 -1
  545. package/dist/models/site-briefing-input-dto.d.ts +1 -1
  546. package/dist/models/site-briefing-input-dto.js +1 -1
  547. package/dist/models/statement-document-dto.d.ts +1 -1
  548. package/dist/models/statement-document-dto.js +1 -1
  549. package/dist/models/statement-product-dto.d.ts +1 -1
  550. package/dist/models/statement-product-dto.js +1 -1
  551. package/dist/models/supplier-card-payable-response-dto.d.ts +1 -1
  552. package/dist/models/supplier-card-payable-response-dto.js +1 -1
  553. package/dist/models/taxation-type-public.d.ts +1 -1
  554. package/dist/models/taxation-type-public.js +1 -1
  555. package/dist/models/token-request-dto.d.ts +1 -1
  556. package/dist/models/token-request-dto.js +1 -1
  557. package/dist/models/token-response-dto.d.ts +1 -1
  558. package/dist/models/token-response-dto.js +1 -1
  559. package/dist/models/two-stage-phase-public.d.ts +1 -1
  560. package/dist/models/two-stage-phase-public.js +1 -1
  561. package/dist/models/upload-file-request-dto.d.ts +1 -1
  562. package/dist/models/upload-file-request-dto.js +1 -1
  563. package/dist/models/upload-file201-response.d.ts +1 -1
  564. package/dist/models/upload-file201-response.js +1 -1
  565. package/dist/models/userinfo-response-dto.d.ts +1 -1
  566. package/dist/models/userinfo-response-dto.js +1 -1
  567. package/docs/EmbedApi.md +2 -2
  568. package/docs/EmbedLaunchResponseDto.md +1 -1
  569. package/index.ts +1 -1
  570. package/models/acceptance-result-response-dto.ts +1 -1
  571. package/models/acknowledge-product-receipt200-response.ts +1 -1
  572. package/models/acknowledge-products-request-dto.ts +1 -1
  573. package/models/api-catalog-dto.ts +1 -1
  574. package/models/api-catalog-entry-dto.ts +1 -1
  575. package/models/api-catalog-link-dto.ts +1 -1
  576. package/models/authorization-server-metadata-dto.ts +1 -1
  577. package/models/avalues-input-dto.ts +1 -1
  578. package/models/award-method-public.ts +1 -1
  579. package/models/award-registered-v2-response-dto.ts +1 -1
  580. package/models/bid-acceptance-dto.ts +1 -1
  581. package/models/bid-attachment-dto.ts +1 -1
  582. package/models/bid-attachment-input-dto.ts +1 -1
  583. package/models/bid-avalues-dto.ts +1 -1
  584. package/models/bid-award-method-detail-dto.ts +1 -1
  585. package/models/bid-bond-dto.ts +1 -1
  586. package/models/bid-cancellation-dto.ts +1 -1
  587. package/models/bid-category-public.ts +1 -1
  588. package/models/bid-contact-dto.ts +1 -1
  589. package/models/bid-contacts-dto.ts +1 -1
  590. package/models/bid-contract-document-dto.ts +1 -1
  591. package/models/bid-delivery-terms-dto.ts +1 -1
  592. package/models/bid-detail-response-dto.ts +1 -1
  593. package/models/bid-document-dto.ts +1 -1
  594. package/models/bid-failed-v2-response-dto.ts +1 -1
  595. package/models/bid-item-dto.ts +1 -1
  596. package/models/bid-license-requirement-dto.ts +1 -1
  597. package/models/bid-lifecycle-dto.ts +1 -1
  598. package/models/bid-manager-dto.ts +1 -1
  599. package/models/bid-must-read-notice-dto.ts +1 -1
  600. package/models/bid-payment-terms-dto.ts +1 -1
  601. package/models/bid-preliminary-price-dto.ts +1 -1
  602. package/models/bid-preliminary-price-slot-dto.ts +1 -1
  603. package/models/bid-product-dto.ts +1 -1
  604. package/models/bid-public-status.ts +1 -1
  605. package/models/bid-qualification-review-dto.ts +1 -1
  606. package/models/bid-region-dto.ts +1 -1
  607. package/models/bid-region-restriction-dto.ts +1 -1
  608. package/models/bid-registered-response-dto.ts +1 -1
  609. package/models/bid-related-bid-dto.ts +1 -1
  610. package/models/bid-required-document-dto.ts +1 -1
  611. package/models/bid-result-participant-attachment-dto.ts +1 -1
  612. package/models/bid-result-participant-dto.ts +1 -1
  613. package/models/bid-results-response-dto.ts +1 -1
  614. package/models/bid-site-briefing-dto.ts +1 -1
  615. package/models/bid-statement-response-dto.ts +1 -1
  616. package/models/bidding-style-public.ts +1 -1
  617. package/models/card-payment-request-response-dto.ts +1 -1
  618. package/models/complete-acceptance-request-dto.ts +1 -1
  619. package/models/complete-acceptance200-response.ts +1 -1
  620. package/models/contract-restriction-confirm-input-dto.ts +1 -1
  621. package/models/create-bid-request-dto.ts +1 -1
  622. package/models/create-card-payment-dto.ts +1 -1
  623. package/models/create-card-payment-request-dto.ts +1 -1
  624. package/models/create-card-payment200-response.ts +1 -1
  625. package/models/create-embed-launch201-response.ts +1 -1
  626. package/models/create-external-contract-documents-request-dto.ts +1 -1
  627. package/models/create-external-contract-documents-response-dto.ts +1 -1
  628. package/models/delivery-date-type-public.ts +1 -1
  629. package/models/delivery-method-public.ts +1 -1
  630. package/models/embed-bid-prefill-dto.ts +1 -1
  631. package/models/embed-bid-prefill-item-dto.ts +1 -1
  632. package/models/embed-bid-prefill-manager-dto.ts +1 -1
  633. package/models/embed-launch-request-dto.ts +1 -1
  634. package/models/embed-launch-response-dto.ts +2 -2
  635. package/models/excellent-procurement-public.ts +1 -1
  636. package/models/external-contract-document-item-dto.ts +1 -1
  637. package/models/external-contract-documents-response-dto.ts +1 -1
  638. package/models/external-contract-item-dto.ts +1 -1
  639. package/models/external-contract-snapshot-dto.ts +1 -1
  640. package/models/external-document-inputs-dto.ts +1 -1
  641. package/models/file-uploaded-response-dto.ts +1 -1
  642. package/models/generated-external-contract-document-dto.ts +1 -1
  643. package/models/get-bid-statement200-response.ts +1 -1
  644. package/models/get-supplier-card-payable-v2200-response.ts +1 -1
  645. package/models/green-product-public.ts +1 -1
  646. package/models/handover-type-public.ts +1 -1
  647. package/models/health-controller-check200-response.ts +1 -1
  648. package/models/health-response-dto.ts +1 -1
  649. package/models/hierarchical-region-dto.ts +1 -1
  650. package/models/introspect-request-dto.ts +1 -1
  651. package/models/introspection-response-dto.ts +1 -1
  652. package/models/invalid-param-dto.ts +1 -1
  653. package/models/invoice-split-response-dto.ts +1 -1
  654. package/models/legal-mandatory-public.ts +1 -1
  655. package/models/license-combination-mode.ts +1 -1
  656. package/models/list-bid-results200-response-meta.ts +1 -1
  657. package/models/list-bid-results200-response.ts +1 -1
  658. package/models/list-products200-response.ts +1 -1
  659. package/models/mark-bid-failed-request-dto.ts +1 -1
  660. package/models/mark-bid-failed201-response.ts +1 -1
  661. package/models/nominated-supplier-dto.ts +1 -1
  662. package/models/oauth-error-response-dto.ts +1 -1
  663. package/models/payment-method-public.ts +1 -1
  664. package/models/preconditions-dto.ts +1 -1
  665. package/models/preliminary-price-region-public.ts +1 -1
  666. package/models/price-score-type-public.ts +1 -1
  667. package/models/pricing-type-public.ts +1 -1
  668. package/models/problem-details-dto.ts +1 -1
  669. package/models/product-receipt-response-dto.ts +1 -1
  670. package/models/product-response-dto.ts +1 -1
  671. package/models/protected-resource-metadata-dto.ts +1 -1
  672. package/models/qualification-review-input-dto.ts +1 -1
  673. package/models/register-award-request-dto.ts +1 -1
  674. package/models/register-award201-response.ts +1 -1
  675. package/models/register-bid201-response.ts +1 -1
  676. package/models/register-semo-contract-request-dto.ts +1 -1
  677. package/models/regulation-type-public.ts +1 -1
  678. package/models/related-bid-relation.ts +1 -1
  679. package/models/request-invoice-split-request-dto.ts +1 -1
  680. package/models/request-invoice-split200-response.ts +1 -1
  681. package/models/retiree-roster-input-dto.ts +1 -1
  682. package/models/retiree-roster-row-dto.ts +1 -1
  683. package/models/revoke-request-dto.ts +1 -1
  684. package/models/rotate-secret-request-dto.ts +1 -1
  685. package/models/rotate-secret-response-dto.ts +1 -1
  686. package/models/semo-contract-registered-response-dto.ts +1 -1
  687. package/models/semo-contract-taxinvoice-status-response-dto.ts +1 -1
  688. package/models/site-briefing-input-dto.ts +1 -1
  689. package/models/statement-document-dto.ts +1 -1
  690. package/models/statement-product-dto.ts +1 -1
  691. package/models/supplier-card-payable-response-dto.ts +1 -1
  692. package/models/taxation-type-public.ts +1 -1
  693. package/models/token-request-dto.ts +1 -1
  694. package/models/token-response-dto.ts +1 -1
  695. package/models/two-stage-phase-public.ts +1 -1
  696. package/models/upload-file-request-dto.ts +1 -1
  697. package/models/upload-file201-response.ts +1 -1
  698. package/models/userinfo-response-dto.ts +1 -1
  699. package/package.json +1 -1
package/README.md CHANGED
@@ -13,7 +13,7 @@ CMARKET V6 Partner API 의 곡식 ν΄λΌμ΄μ–ΈνŠΈ SDK β€” μ™ΈλΆ€ ERP κ°€ μž…μ°°
13
13
  TypeScript / Node (npm):
14
14
 
15
15
  ```bash
16
- npm install @cmarket/partner-sdk@50.0.0
16
+ npm install @cmarket/partner-sdk@50.1.0
17
17
  ```
18
18
 
19
19
  Java (Maven):
@@ -22,7 +22,7 @@ Java (Maven):
22
22
  <dependency>
23
23
  <groupId>net.c-market</groupId>
24
24
  <artifactId>partner-sdk</artifactId>
25
- <version>50.0.0</version>
25
+ <version>50.1.0</version>
26
26
  </dependency>
27
27
  ```
28
28
 
@@ -375,7 +375,7 @@ CMARKET μš΄μ˜νŒ€μ— 등둝해야 ν•©λ‹ˆλ‹€(미등둝 origin 은 iframe λ‘œλ“œ
375
375
 
376
376
  ---
377
377
 
378
- ## @cmarket/partner-sdk@50.0.0
378
+ ## @cmarket/partner-sdk@50.1.0
379
379
 
380
380
  This generator creates TypeScript/JavaScript client that utilizes [axios](https://github.com/axios/axios). The generated Node module can be used in the following environments:
381
381
 
@@ -413,7 +413,7 @@ navigate to the folder of your consuming project and run one of the following co
413
413
  _published:_
414
414
 
415
415
  ```
416
- npm install @cmarket/partner-sdk@50.0.0 --save
416
+ npm install @cmarket/partner-sdk@50.1.0 --save
417
417
  ```
418
418
 
419
419
  _unPublished (not recommended):_
@@ -428,7 +428,7 @@ All URIs are relative to *https://partner-api.c-market.net*
428
428
 
429
429
  Class | Method | HTTP request | Description
430
430
  ------------ | ------------- | ------------- | -------------
431
- *EmbedApi* | [**createEmbedLaunch**](docs/EmbedApi.md#createembedlaunch) | **POST** /v2/embed/launch | μž„λ² λ“œ launch λ°œκΈ‰
431
+ *EmbedApi* | [**createEmbedLaunch**](docs/EmbedApi.md#createembedlaunch) | **POST** /v2/embed/launch | ν™”λ©΄ μ£Όμ†Œ λ°œκΈ‰
432
432
  *OauthApi* | [**introspect**](docs/OauthApi.md#introspect) | **POST** /oauth/introspect | OAuth 2.0 토큰 검사 (Token Introspection, RFC 7662)
433
433
  *OauthApi* | [**revoke**](docs/OauthApi.md#revoke) | **POST** /oauth/revoke | OAuth 2.0 토큰 폐기 (Token Revocation, RFC 7009)
434
434
  *OauthApi* | [**rotateSecret**](docs/OauthApi.md#rotatesecret) | **POST** /oauth/secret | 자격증λͺ… μž¬λ°œκΈ‰ (client_secret μžκ°€νšŒμ „)
package/api/embed-api.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * CMARKET V6 Partner API
5
5
  * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token`μ—μ„œ 토큰을 λ°œκΈ‰λ°›μ•„ `Authorization: Bearer <token>` ν—€λ”λ‘œ μ‹€μœΌμ„Έμš”. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403`을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € κ΅¬λΆ„ν•˜μ„Έμš”. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±μž…λ‹ˆλ‹€. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403μž…λ‹ˆλ‹€. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λ©λ‹ˆλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • λ°œμ£ΌκΈ°κ΄€ λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•˜μ„Έμš”. ## 성곡 응닡 ν˜•μ‹ `/v2`의 λͺ¨λ“  2xx 본문은 `{ \"data\": … }`μž…λ‹ˆλ‹€. 단일 λ¦¬μ†ŒμŠ€λ“  λͺ©λ‘μ΄λ“  κ°™μŠ΅λ‹ˆλ‹€. **λͺ©λ‘μ€ `data`κ°€ 배열이고 `meta`κ°€ 항상 ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€** β€” `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 λ¦¬μ†ŒμŠ€ μ‘λ‹΅μ—λŠ” `meta`κ°€ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이 ν˜•μ‹μ„ μ“°μ§€ μ•ŠλŠ” μ—”λ“œν¬μΈνŠΈλŠ” λ‘˜μž…λ‹ˆλ‹€. `/oauth/_*`와 `/.well-known/_*`λŠ” 각각 RFC 6749Β·RFC 8414Β·RFC 9728이 μ΅œμƒμœ„ ν•„λ“œλ₯Ό κ·œμ •ν•˜κ³ , 파일 λ‚΄μš© 응닡은 본문이 JSON이 μ•„λ‹™λ‹ˆλ‹€. μ—λŸ¬ μ‘λ‹΅μ—λŠ” 이 ν˜•μ‹μ„ μ”Œμš°μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ β€” μ•„λž˜ problem+json이 λ‹¨λ…μœΌλ‘œ μ±…μž„μ§‘λ‹ˆλ‹€. ## 쑰건뢀 μš”μ²­ (ETag) `/v2`의 λͺ¨λ“  `GET` 응닡에 weak `ETag`(`W/\"…\"`)κ°€ μ‹€λ¦½λ‹ˆλ‹€. 받은 값을 λ‹€μŒ μš”μ²­μ˜ `If-None-Match` ν—€λ”λ‘œ λ˜λ³΄λ‚΄λ©΄, λ‚΄μš©μ΄ κ·ΈλŒ€λ‘œμΌ λ•Œ `304 Not Modified`λ₯Ό λ³Έλ¬Έ 없이 λ°›μŠ΅λ‹ˆλ‹€. κ²°κ³Όκ°€ λ‚˜κΈ°λ₯Ό 기닀리며 같은 μžμ›μ„ 반볡 μ‘°νšŒν•˜λŠ” 연동이라면 이 헀더 ν•˜λ‚˜λ‘œ μ „μ†‘λŸ‰μ΄ μ‚¬λΌμ§‘λ‹ˆλ‹€. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`μž…λ‹ˆλ‹€. **좕이 μ—¬λŸ¬ 개라 μ–΄λŠ 것을 읽어야 ν•˜λŠ”μ§€ ν•œ κ³³μ—μ„œ μ •λ¦¬ν•©λ‹ˆλ‹€.** - **λΆ„κΈ°**λŠ” `status` β†’ `type` β†’ `code` μˆœμ„œλ‘œ μ’ν˜€ κ°€μ„Έμš”. μ•žμ˜ λ‘˜λ§ŒμœΌλ‘œ μΆ©λΆ„ν•œ 연동이 λŒ€λΆ€λΆ„μ΄κ³ , `code`λŠ” 같은 statusΒ·type μ•ˆμ—μ„œ μ‚¬μœ λ₯Ό κ°€λ¦…λ‹ˆλ‹€. - **ν‘œμ‹œΒ·λ‘œκ·Έ**λŠ” `title`κ³Ό `detail`을 μ“°μ„Έμš”. μ‚¬λžŒμ΄ μ½λŠ” λ¬Έμž₯이며 예고 없이 λ‹€λ“¬μŠ΅λ‹ˆλ‹€ β€” **λ¬Έμžμ—΄ λΉ„κ΅λ‘œ λΆ„κΈ°ν•˜μ§€ λ§ˆμ„Έμš”**. - **μž¬μ‹œλ„**λŠ” `Retry-After` 헀더가 있으면 κ·Έ 값을, μ—†μœΌλ©΄ `retryable`을, 그것도 μ—†μœΌλ©΄ `status`λ₯Ό λ”°λ₯΄μ„Έμš”. - **문의**ν•  λ•ŒλŠ” `traceId`λ₯Ό μ²¨λΆ€ν•˜μ„Έμš”. - `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 λ³„λ‘œ μ ν˜€ μžˆμŠ΅λ‹ˆλ‹€. ### 502와 4xx의 차이 - `502` `…/upstream-unavailable` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μΌμ‹œμ μœΌλ‘œ μ²˜λ¦¬ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.** μš”μ²­μ€ κ·ΈλŒ€λ‘œ 두고 backoff ν›„ μž¬μ‹œλ„ν•˜μ„Έμš”. - `4xx` `…/upstream-*` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μš”μ²­μ„ κ±°λΆ€ν–ˆμŠ΅λ‹ˆλ‹€.** 같은 μš”μ²­μ„ λ‹€μ‹œ 보내도 κ²°κ³ΌλŠ” κ°™μŠ΅λ‹ˆλ‹€. `code`의 μ‚¬μœ λ₯Ό 보고 μš”μ²­μ„ κ³ μΉ˜μ„Έμš”. ### λ©±λ“±μ„± μœ„λ°˜: 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: 50.0.0
7
+ * The version of the OpenAPI document: 50.1.0
8
8
  * Contact: semo.io.kr@gmail.com
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -33,8 +33,8 @@ import type { ProblemDetailsDto } from '../models';
33
33
  export const EmbedApiAxiosParamCreator = function (configuration?: Configuration) {
34
34
  return {
35
35
  /**
36
- * λ°œμ£ΌκΈ°κ΄€ λ‹΄λ‹Ήμž(`memberId`)용 1νšŒμ„± `launchUrl`을 λ°œκΈ‰ν•©λ‹ˆλ‹€(TTL 60초). 이 μ£Όμ†Œλ‘œ CMARKET 화면이 ERP μ‚¬μš©μžμ—κ²Œ 둜그인 없이 μ—΄λ¦½λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈλ„ SDK도 μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
37
- * @summary μž„λ² λ“œ launch λ°œκΈ‰
36
+ * λ‹΄λ‹Ήμž ν•œ λͺ…이 CMARKET 화면을 둜그인 없이 μ—΄ 수 μžˆλŠ” **1회용 μ£Όμ†Œ**λ₯Ό λ°›μŠ΅λ‹ˆλ‹€. 60초 μ•ˆμ— 써야 ν•˜κ³ , ν•œ 번 열리면 κ·Έ μ£Όμ†ŒλŠ” λ¬΄νš¨μž…λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈκ°€ μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
37
+ * @summary ν™”λ©΄ μ£Όμ†Œ λ°œκΈ‰
38
38
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
39
39
  * @param {*} [options] Override http request option.
40
40
  * @throws {RequiredError}
@@ -81,8 +81,8 @@ export const EmbedApiFp = function(configuration?: Configuration) {
81
81
  const localVarAxiosParamCreator = EmbedApiAxiosParamCreator(configuration)
82
82
  return {
83
83
  /**
84
- * λ°œμ£ΌκΈ°κ΄€ λ‹΄λ‹Ήμž(`memberId`)용 1νšŒμ„± `launchUrl`을 λ°œκΈ‰ν•©λ‹ˆλ‹€(TTL 60초). 이 μ£Όμ†Œλ‘œ CMARKET 화면이 ERP μ‚¬μš©μžμ—κ²Œ 둜그인 없이 μ—΄λ¦½λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈλ„ SDK도 μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
85
- * @summary μž„λ² λ“œ launch λ°œκΈ‰
84
+ * λ‹΄λ‹Ήμž ν•œ λͺ…이 CMARKET 화면을 둜그인 없이 μ—΄ 수 μžˆλŠ” **1회용 μ£Όμ†Œ**λ₯Ό λ°›μŠ΅λ‹ˆλ‹€. 60초 μ•ˆμ— 써야 ν•˜κ³ , ν•œ 번 열리면 κ·Έ μ£Όμ†ŒλŠ” λ¬΄νš¨μž…λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈκ°€ μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
85
+ * @summary ν™”λ©΄ μ£Όμ†Œ λ°œκΈ‰
86
86
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
87
87
  * @param {*} [options] Override http request option.
88
88
  * @throws {RequiredError}
@@ -103,8 +103,8 @@ export const EmbedApiFactory = function (configuration?: Configuration, basePath
103
103
  const localVarFp = EmbedApiFp(configuration)
104
104
  return {
105
105
  /**
106
- * λ°œμ£ΌκΈ°κ΄€ λ‹΄λ‹Ήμž(`memberId`)용 1νšŒμ„± `launchUrl`을 λ°œκΈ‰ν•©λ‹ˆλ‹€(TTL 60초). 이 μ£Όμ†Œλ‘œ CMARKET 화면이 ERP μ‚¬μš©μžμ—κ²Œ 둜그인 없이 μ—΄λ¦½λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈλ„ SDK도 μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
107
- * @summary μž„λ² λ“œ launch λ°œκΈ‰
106
+ * λ‹΄λ‹Ήμž ν•œ λͺ…이 CMARKET 화면을 둜그인 없이 μ—΄ 수 μžˆλŠ” **1회용 μ£Όμ†Œ**λ₯Ό λ°›μŠ΅λ‹ˆλ‹€. 60초 μ•ˆμ— 써야 ν•˜κ³ , ν•œ 번 열리면 κ·Έ μ£Όμ†ŒλŠ” λ¬΄νš¨μž…λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈκ°€ μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
107
+ * @summary ν™”λ©΄ μ£Όμ†Œ λ°œκΈ‰
108
108
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
109
109
  * @param {*} [options] Override http request option.
110
110
  * @throws {RequiredError}
@@ -120,8 +120,8 @@ export const EmbedApiFactory = function (configuration?: Configuration, basePath
120
120
  */
121
121
  export class EmbedApi extends BaseAPI {
122
122
  /**
123
- * λ°œμ£ΌκΈ°κ΄€ λ‹΄λ‹Ήμž(`memberId`)용 1νšŒμ„± `launchUrl`을 λ°œκΈ‰ν•©λ‹ˆλ‹€(TTL 60초). 이 μ£Όμ†Œλ‘œ CMARKET 화면이 ERP μ‚¬μš©μžμ—κ²Œ 둜그인 없이 μ—΄λ¦½λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈλ„ SDK도 μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
124
- * @summary μž„λ² λ“œ launch λ°œκΈ‰
123
+ * λ‹΄λ‹Ήμž ν•œ λͺ…이 CMARKET 화면을 둜그인 없이 μ—΄ 수 μžˆλŠ” **1회용 μ£Όμ†Œ**λ₯Ό λ°›μŠ΅λ‹ˆλ‹€. 60초 μ•ˆμ— 써야 ν•˜κ³ , ν•œ 번 열리면 κ·Έ μ£Όμ†ŒλŠ” λ¬΄νš¨μž…λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈκ°€ μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
124
+ * @summary ν™”λ©΄ μ£Όμ†Œ λ°œκΈ‰
125
125
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
126
126
  * @param {*} [options] Override http request option.
127
127
  * @throws {RequiredError}
package/api/oauth-api.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * CMARKET V6 Partner API
5
5
  * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token`μ—μ„œ 토큰을 λ°œκΈ‰λ°›μ•„ `Authorization: Bearer <token>` ν—€λ”λ‘œ μ‹€μœΌμ„Έμš”. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403`을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € κ΅¬λΆ„ν•˜μ„Έμš”. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±μž…λ‹ˆλ‹€. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403μž…λ‹ˆλ‹€. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λ©λ‹ˆλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • λ°œμ£ΌκΈ°κ΄€ λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•˜μ„Έμš”. ## 성곡 응닡 ν˜•μ‹ `/v2`의 λͺ¨λ“  2xx 본문은 `{ \"data\": … }`μž…λ‹ˆλ‹€. 단일 λ¦¬μ†ŒμŠ€λ“  λͺ©λ‘μ΄λ“  κ°™μŠ΅λ‹ˆλ‹€. **λͺ©λ‘μ€ `data`κ°€ 배열이고 `meta`κ°€ 항상 ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€** β€” `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 λ¦¬μ†ŒμŠ€ μ‘λ‹΅μ—λŠ” `meta`κ°€ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이 ν˜•μ‹μ„ μ“°μ§€ μ•ŠλŠ” μ—”λ“œν¬μΈνŠΈλŠ” λ‘˜μž…λ‹ˆλ‹€. `/oauth/_*`와 `/.well-known/_*`λŠ” 각각 RFC 6749Β·RFC 8414Β·RFC 9728이 μ΅œμƒμœ„ ν•„λ“œλ₯Ό κ·œμ •ν•˜κ³ , 파일 λ‚΄μš© 응닡은 본문이 JSON이 μ•„λ‹™λ‹ˆλ‹€. μ—λŸ¬ μ‘λ‹΅μ—λŠ” 이 ν˜•μ‹μ„ μ”Œμš°μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ β€” μ•„λž˜ problem+json이 λ‹¨λ…μœΌλ‘œ μ±…μž„μ§‘λ‹ˆλ‹€. ## 쑰건뢀 μš”μ²­ (ETag) `/v2`의 λͺ¨λ“  `GET` 응닡에 weak `ETag`(`W/\"…\"`)κ°€ μ‹€λ¦½λ‹ˆλ‹€. 받은 값을 λ‹€μŒ μš”μ²­μ˜ `If-None-Match` ν—€λ”λ‘œ λ˜λ³΄λ‚΄λ©΄, λ‚΄μš©μ΄ κ·ΈλŒ€λ‘œμΌ λ•Œ `304 Not Modified`λ₯Ό λ³Έλ¬Έ 없이 λ°›μŠ΅λ‹ˆλ‹€. κ²°κ³Όκ°€ λ‚˜κΈ°λ₯Ό 기닀리며 같은 μžμ›μ„ 반볡 μ‘°νšŒν•˜λŠ” 연동이라면 이 헀더 ν•˜λ‚˜λ‘œ μ „μ†‘λŸ‰μ΄ μ‚¬λΌμ§‘λ‹ˆλ‹€. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`μž…λ‹ˆλ‹€. **좕이 μ—¬λŸ¬ 개라 μ–΄λŠ 것을 읽어야 ν•˜λŠ”μ§€ ν•œ κ³³μ—μ„œ μ •λ¦¬ν•©λ‹ˆλ‹€.** - **λΆ„κΈ°**λŠ” `status` β†’ `type` β†’ `code` μˆœμ„œλ‘œ μ’ν˜€ κ°€μ„Έμš”. μ•žμ˜ λ‘˜λ§ŒμœΌλ‘œ μΆ©λΆ„ν•œ 연동이 λŒ€λΆ€λΆ„μ΄κ³ , `code`λŠ” 같은 statusΒ·type μ•ˆμ—μ„œ μ‚¬μœ λ₯Ό κ°€λ¦…λ‹ˆλ‹€. - **ν‘œμ‹œΒ·λ‘œκ·Έ**λŠ” `title`κ³Ό `detail`을 μ“°μ„Έμš”. μ‚¬λžŒμ΄ μ½λŠ” λ¬Έμž₯이며 예고 없이 λ‹€λ“¬μŠ΅λ‹ˆλ‹€ β€” **λ¬Έμžμ—΄ λΉ„κ΅λ‘œ λΆ„κΈ°ν•˜μ§€ λ§ˆμ„Έμš”**. - **μž¬μ‹œλ„**λŠ” `Retry-After` 헀더가 있으면 κ·Έ 값을, μ—†μœΌλ©΄ `retryable`을, 그것도 μ—†μœΌλ©΄ `status`λ₯Ό λ”°λ₯΄μ„Έμš”. - **문의**ν•  λ•ŒλŠ” `traceId`λ₯Ό μ²¨λΆ€ν•˜μ„Έμš”. - `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 λ³„λ‘œ μ ν˜€ μžˆμŠ΅λ‹ˆλ‹€. ### 502와 4xx의 차이 - `502` `…/upstream-unavailable` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μΌμ‹œμ μœΌλ‘œ μ²˜λ¦¬ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.** μš”μ²­μ€ κ·ΈλŒ€λ‘œ 두고 backoff ν›„ μž¬μ‹œλ„ν•˜μ„Έμš”. - `4xx` `…/upstream-*` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μš”μ²­μ„ κ±°λΆ€ν–ˆμŠ΅λ‹ˆλ‹€.** 같은 μš”μ²­μ„ λ‹€μ‹œ 보내도 κ²°κ³ΌλŠ” κ°™μŠ΅λ‹ˆλ‹€. `code`의 μ‚¬μœ λ₯Ό 보고 μš”μ²­μ„ κ³ μΉ˜μ„Έμš”. ### λ©±λ“±μ„± μœ„λ°˜: 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: 50.0.0
7
+ * The version of the OpenAPI document: 50.1.0
8
8
  * Contact: semo.io.kr@gmail.com
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -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`μž…λ‹ˆλ‹€. **좕이 μ—¬λŸ¬ 개라 μ–΄λŠ 것을 읽어야 ν•˜λŠ”μ§€ ν•œ κ³³μ—μ„œ μ •λ¦¬ν•©λ‹ˆλ‹€.** - **λΆ„κΈ°**λŠ” `status` β†’ `type` β†’ `code` μˆœμ„œλ‘œ μ’ν˜€ κ°€μ„Έμš”. μ•žμ˜ λ‘˜λ§ŒμœΌλ‘œ μΆ©λΆ„ν•œ 연동이 λŒ€λΆ€λΆ„μ΄κ³ , `code`λŠ” 같은 statusΒ·type μ•ˆμ—μ„œ μ‚¬μœ λ₯Ό κ°€λ¦…λ‹ˆλ‹€. - **ν‘œμ‹œΒ·λ‘œκ·Έ**λŠ” `title`κ³Ό `detail`을 μ“°μ„Έμš”. μ‚¬λžŒμ΄ μ½λŠ” λ¬Έμž₯이며 예고 없이 λ‹€λ“¬μŠ΅λ‹ˆλ‹€ β€” **λ¬Έμžμ—΄ λΉ„κ΅λ‘œ λΆ„κΈ°ν•˜μ§€ λ§ˆμ„Έμš”**. - **μž¬μ‹œλ„**λŠ” `Retry-After` 헀더가 있으면 κ·Έ 값을, μ—†μœΌλ©΄ `retryable`을, 그것도 μ—†μœΌλ©΄ `status`λ₯Ό λ”°λ₯΄μ„Έμš”. - **문의**ν•  λ•ŒλŠ” `traceId`λ₯Ό μ²¨λΆ€ν•˜μ„Έμš”. - `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 λ³„λ‘œ μ ν˜€ μžˆμŠ΅λ‹ˆλ‹€. ### 502와 4xx의 차이 - `502` `…/upstream-unavailable` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μΌμ‹œμ μœΌλ‘œ μ²˜λ¦¬ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.** μš”μ²­μ€ κ·ΈλŒ€λ‘œ 두고 backoff ν›„ μž¬μ‹œλ„ν•˜μ„Έμš”. - `4xx` `…/upstream-*` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μš”μ²­μ„ κ±°λΆ€ν–ˆμŠ΅λ‹ˆλ‹€.** 같은 μš”μ²­μ„ λ‹€μ‹œ 보내도 κ²°κ³ΌλŠ” κ°™μŠ΅λ‹ˆλ‹€. `code`의 μ‚¬μœ λ₯Ό 보고 μš”μ²­μ„ κ³ μΉ˜μ„Έμš”. ### λ©±λ“±μ„± μœ„λ°˜: 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: 50.0.0
7
+ * The version of the OpenAPI document: 50.1.0
8
8
  * Contact: semo.io.kr@gmail.com
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -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`μž…λ‹ˆλ‹€. **좕이 μ—¬λŸ¬ 개라 μ–΄λŠ 것을 읽어야 ν•˜λŠ”μ§€ ν•œ κ³³μ—μ„œ μ •λ¦¬ν•©λ‹ˆλ‹€.** - **λΆ„κΈ°**λŠ” `status` β†’ `type` β†’ `code` μˆœμ„œλ‘œ μ’ν˜€ κ°€μ„Έμš”. μ•žμ˜ λ‘˜λ§ŒμœΌλ‘œ μΆ©λΆ„ν•œ 연동이 λŒ€λΆ€λΆ„μ΄κ³ , `code`λŠ” 같은 statusΒ·type μ•ˆμ—μ„œ μ‚¬μœ λ₯Ό κ°€λ¦…λ‹ˆλ‹€. - **ν‘œμ‹œΒ·λ‘œκ·Έ**λŠ” `title`κ³Ό `detail`을 μ“°μ„Έμš”. μ‚¬λžŒμ΄ μ½λŠ” λ¬Έμž₯이며 예고 없이 λ‹€λ“¬μŠ΅λ‹ˆλ‹€ β€” **λ¬Έμžμ—΄ λΉ„κ΅λ‘œ λΆ„κΈ°ν•˜μ§€ λ§ˆμ„Έμš”**. - **μž¬μ‹œλ„**λŠ” `Retry-After` 헀더가 있으면 κ·Έ 값을, μ—†μœΌλ©΄ `retryable`을, 그것도 μ—†μœΌλ©΄ `status`λ₯Ό λ”°λ₯΄μ„Έμš”. - **문의**ν•  λ•ŒλŠ” `traceId`λ₯Ό μ²¨λΆ€ν•˜μ„Έμš”. - `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 λ³„λ‘œ μ ν˜€ μžˆμŠ΅λ‹ˆλ‹€. ### 502와 4xx의 차이 - `502` `…/upstream-unavailable` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μΌμ‹œμ μœΌλ‘œ μ²˜λ¦¬ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.** μš”μ²­μ€ κ·ΈλŒ€λ‘œ 두고 backoff ν›„ μž¬μ‹œλ„ν•˜μ„Έμš”. - `4xx` `…/upstream-*` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μš”μ²­μ„ κ±°λΆ€ν–ˆμŠ΅λ‹ˆλ‹€.** 같은 μš”μ²­μ„ λ‹€μ‹œ 보내도 κ²°κ³ΌλŠ” κ°™μŠ΅λ‹ˆλ‹€. `code`의 μ‚¬μœ λ₯Ό 보고 μš”μ²­μ„ κ³ μΉ˜μ„Έμš”. ### λ©±λ“±μ„± μœ„λ°˜: 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: 50.0.0
7
+ * The version of the OpenAPI document: 50.1.0
8
8
  * Contact: semo.io.kr@gmail.com
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -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`μž…λ‹ˆλ‹€. **좕이 μ—¬λŸ¬ 개라 μ–΄λŠ 것을 읽어야 ν•˜λŠ”μ§€ ν•œ κ³³μ—μ„œ μ •λ¦¬ν•©λ‹ˆλ‹€.** - **λΆ„κΈ°**λŠ” `status` β†’ `type` β†’ `code` μˆœμ„œλ‘œ μ’ν˜€ κ°€μ„Έμš”. μ•žμ˜ λ‘˜λ§ŒμœΌλ‘œ μΆ©λΆ„ν•œ 연동이 λŒ€λΆ€λΆ„μ΄κ³ , `code`λŠ” 같은 statusΒ·type μ•ˆμ—μ„œ μ‚¬μœ λ₯Ό κ°€λ¦…λ‹ˆλ‹€. - **ν‘œμ‹œΒ·λ‘œκ·Έ**λŠ” `title`κ³Ό `detail`을 μ“°μ„Έμš”. μ‚¬λžŒμ΄ μ½λŠ” λ¬Έμž₯이며 예고 없이 λ‹€λ“¬μŠ΅λ‹ˆλ‹€ β€” **λ¬Έμžμ—΄ λΉ„κ΅λ‘œ λΆ„κΈ°ν•˜μ§€ λ§ˆμ„Έμš”**. - **μž¬μ‹œλ„**λŠ” `Retry-After` 헀더가 있으면 κ·Έ 값을, μ—†μœΌλ©΄ `retryable`을, 그것도 μ—†μœΌλ©΄ `status`λ₯Ό λ”°λ₯΄μ„Έμš”. - **문의**ν•  λ•ŒλŠ” `traceId`λ₯Ό μ²¨λΆ€ν•˜μ„Έμš”. - `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 λ³„λ‘œ μ ν˜€ μžˆμŠ΅λ‹ˆλ‹€. ### 502와 4xx의 차이 - `502` `…/upstream-unavailable` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μΌμ‹œμ μœΌλ‘œ μ²˜λ¦¬ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.** μš”μ²­μ€ κ·ΈλŒ€λ‘œ 두고 backoff ν›„ μž¬μ‹œλ„ν•˜μ„Έμš”. - `4xx` `…/upstream-*` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μš”μ²­μ„ κ±°λΆ€ν–ˆμŠ΅λ‹ˆλ‹€.** 같은 μš”μ²­μ„ λ‹€μ‹œ 보내도 κ²°κ³ΌλŠ” κ°™μŠ΅λ‹ˆλ‹€. `code`의 μ‚¬μœ λ₯Ό 보고 μš”μ²­μ„ κ³ μΉ˜μ„Έμš”. ### λ©±λ“±μ„± μœ„λ°˜: 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: 50.0.0
7
+ * The version of the OpenAPI document: 50.1.0
8
8
  * Contact: semo.io.kr@gmail.com
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
package/api.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * CMARKET V6 Partner API
5
5
  * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token`μ—μ„œ 토큰을 λ°œκΈ‰λ°›μ•„ `Authorization: Bearer <token>` ν—€λ”λ‘œ μ‹€μœΌμ„Έμš”. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403`을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € κ΅¬λΆ„ν•˜μ„Έμš”. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±μž…λ‹ˆλ‹€. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403μž…λ‹ˆλ‹€. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λ©λ‹ˆλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • λ°œμ£ΌκΈ°κ΄€ λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•˜μ„Έμš”. ## 성곡 응닡 ν˜•μ‹ `/v2`의 λͺ¨λ“  2xx 본문은 `{ \"data\": … }`μž…λ‹ˆλ‹€. 단일 λ¦¬μ†ŒμŠ€λ“  λͺ©λ‘μ΄λ“  κ°™μŠ΅λ‹ˆλ‹€. **λͺ©λ‘μ€ `data`κ°€ 배열이고 `meta`κ°€ 항상 ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€** β€” `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 λ¦¬μ†ŒμŠ€ μ‘λ‹΅μ—λŠ” `meta`κ°€ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이 ν˜•μ‹μ„ μ“°μ§€ μ•ŠλŠ” μ—”λ“œν¬μΈνŠΈλŠ” λ‘˜μž…λ‹ˆλ‹€. `/oauth/_*`와 `/.well-known/_*`λŠ” 각각 RFC 6749Β·RFC 8414Β·RFC 9728이 μ΅œμƒμœ„ ν•„λ“œλ₯Ό κ·œμ •ν•˜κ³ , 파일 λ‚΄μš© 응닡은 본문이 JSON이 μ•„λ‹™λ‹ˆλ‹€. μ—λŸ¬ μ‘λ‹΅μ—λŠ” 이 ν˜•μ‹μ„ μ”Œμš°μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ β€” μ•„λž˜ problem+json이 λ‹¨λ…μœΌλ‘œ μ±…μž„μ§‘λ‹ˆλ‹€. ## 쑰건뢀 μš”μ²­ (ETag) `/v2`의 λͺ¨λ“  `GET` 응닡에 weak `ETag`(`W/\"…\"`)κ°€ μ‹€λ¦½λ‹ˆλ‹€. 받은 값을 λ‹€μŒ μš”μ²­μ˜ `If-None-Match` ν—€λ”λ‘œ λ˜λ³΄λ‚΄λ©΄, λ‚΄μš©μ΄ κ·ΈλŒ€λ‘œμΌ λ•Œ `304 Not Modified`λ₯Ό λ³Έλ¬Έ 없이 λ°›μŠ΅λ‹ˆλ‹€. κ²°κ³Όκ°€ λ‚˜κΈ°λ₯Ό 기닀리며 같은 μžμ›μ„ 반볡 μ‘°νšŒν•˜λŠ” 연동이라면 이 헀더 ν•˜λ‚˜λ‘œ μ „μ†‘λŸ‰μ΄ μ‚¬λΌμ§‘λ‹ˆλ‹€. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`μž…λ‹ˆλ‹€. **좕이 μ—¬λŸ¬ 개라 μ–΄λŠ 것을 읽어야 ν•˜λŠ”μ§€ ν•œ κ³³μ—μ„œ μ •λ¦¬ν•©λ‹ˆλ‹€.** - **λΆ„κΈ°**λŠ” `status` β†’ `type` β†’ `code` μˆœμ„œλ‘œ μ’ν˜€ κ°€μ„Έμš”. μ•žμ˜ λ‘˜λ§ŒμœΌλ‘œ μΆ©λΆ„ν•œ 연동이 λŒ€λΆ€λΆ„μ΄κ³ , `code`λŠ” 같은 statusΒ·type μ•ˆμ—μ„œ μ‚¬μœ λ₯Ό κ°€λ¦…λ‹ˆλ‹€. - **ν‘œμ‹œΒ·λ‘œκ·Έ**λŠ” `title`κ³Ό `detail`을 μ“°μ„Έμš”. μ‚¬λžŒμ΄ μ½λŠ” λ¬Έμž₯이며 예고 없이 λ‹€λ“¬μŠ΅λ‹ˆλ‹€ β€” **λ¬Έμžμ—΄ λΉ„κ΅λ‘œ λΆ„κΈ°ν•˜μ§€ λ§ˆμ„Έμš”**. - **μž¬μ‹œλ„**λŠ” `Retry-After` 헀더가 있으면 κ·Έ 값을, μ—†μœΌλ©΄ `retryable`을, 그것도 μ—†μœΌλ©΄ `status`λ₯Ό λ”°λ₯΄μ„Έμš”. - **문의**ν•  λ•ŒλŠ” `traceId`λ₯Ό μ²¨λΆ€ν•˜μ„Έμš”. - `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 λ³„λ‘œ μ ν˜€ μžˆμŠ΅λ‹ˆλ‹€. ### 502와 4xx의 차이 - `502` `…/upstream-unavailable` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μΌμ‹œμ μœΌλ‘œ μ²˜λ¦¬ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.** μš”μ²­μ€ κ·ΈλŒ€λ‘œ 두고 backoff ν›„ μž¬μ‹œλ„ν•˜μ„Έμš”. - `4xx` `…/upstream-*` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μš”μ²­μ„ κ±°λΆ€ν–ˆμŠ΅λ‹ˆλ‹€.** 같은 μš”μ²­μ„ λ‹€μ‹œ 보내도 κ²°κ³ΌλŠ” κ°™μŠ΅λ‹ˆλ‹€. `code`의 μ‚¬μœ λ₯Ό 보고 μš”μ²­μ„ κ³ μΉ˜μ„Έμš”. ### λ©±λ“±μ„± μœ„λ°˜: 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: 50.0.0
7
+ * The version of the OpenAPI document: 50.1.0
8
8
  * Contact: semo.io.kr@gmail.com
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
package/base.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * CMARKET V6 Partner API
5
5
  * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token`μ—μ„œ 토큰을 λ°œκΈ‰λ°›μ•„ `Authorization: Bearer <token>` ν—€λ”λ‘œ μ‹€μœΌμ„Έμš”. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403`을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € κ΅¬λΆ„ν•˜μ„Έμš”. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±μž…λ‹ˆλ‹€. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403μž…λ‹ˆλ‹€. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λ©λ‹ˆλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • λ°œμ£ΌκΈ°κ΄€ λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•˜μ„Έμš”. ## 성곡 응닡 ν˜•μ‹ `/v2`의 λͺ¨λ“  2xx 본문은 `{ \"data\": … }`μž…λ‹ˆλ‹€. 단일 λ¦¬μ†ŒμŠ€λ“  λͺ©λ‘μ΄λ“  κ°™μŠ΅λ‹ˆλ‹€. **λͺ©λ‘μ€ `data`κ°€ 배열이고 `meta`κ°€ 항상 ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€** β€” `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 λ¦¬μ†ŒμŠ€ μ‘λ‹΅μ—λŠ” `meta`κ°€ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이 ν˜•μ‹μ„ μ“°μ§€ μ•ŠλŠ” μ—”λ“œν¬μΈνŠΈλŠ” λ‘˜μž…λ‹ˆλ‹€. `/oauth/_*`와 `/.well-known/_*`λŠ” 각각 RFC 6749Β·RFC 8414Β·RFC 9728이 μ΅œμƒμœ„ ν•„λ“œλ₯Ό κ·œμ •ν•˜κ³ , 파일 λ‚΄μš© 응닡은 본문이 JSON이 μ•„λ‹™λ‹ˆλ‹€. μ—λŸ¬ μ‘λ‹΅μ—λŠ” 이 ν˜•μ‹μ„ μ”Œμš°μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ β€” μ•„λž˜ problem+json이 λ‹¨λ…μœΌλ‘œ μ±…μž„μ§‘λ‹ˆλ‹€. ## 쑰건뢀 μš”μ²­ (ETag) `/v2`의 λͺ¨λ“  `GET` 응닡에 weak `ETag`(`W/\"…\"`)κ°€ μ‹€λ¦½λ‹ˆλ‹€. 받은 값을 λ‹€μŒ μš”μ²­μ˜ `If-None-Match` ν—€λ”λ‘œ λ˜λ³΄λ‚΄λ©΄, λ‚΄μš©μ΄ κ·ΈλŒ€λ‘œμΌ λ•Œ `304 Not Modified`λ₯Ό λ³Έλ¬Έ 없이 λ°›μŠ΅λ‹ˆλ‹€. κ²°κ³Όκ°€ λ‚˜κΈ°λ₯Ό 기닀리며 같은 μžμ›μ„ 반볡 μ‘°νšŒν•˜λŠ” 연동이라면 이 헀더 ν•˜λ‚˜λ‘œ μ „μ†‘λŸ‰μ΄ μ‚¬λΌμ§‘λ‹ˆλ‹€. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`μž…λ‹ˆλ‹€. **좕이 μ—¬λŸ¬ 개라 μ–΄λŠ 것을 읽어야 ν•˜λŠ”μ§€ ν•œ κ³³μ—μ„œ μ •λ¦¬ν•©λ‹ˆλ‹€.** - **λΆ„κΈ°**λŠ” `status` β†’ `type` β†’ `code` μˆœμ„œλ‘œ μ’ν˜€ κ°€μ„Έμš”. μ•žμ˜ λ‘˜λ§ŒμœΌλ‘œ μΆ©λΆ„ν•œ 연동이 λŒ€λΆ€λΆ„μ΄κ³ , `code`λŠ” 같은 statusΒ·type μ•ˆμ—μ„œ μ‚¬μœ λ₯Ό κ°€λ¦…λ‹ˆλ‹€. - **ν‘œμ‹œΒ·λ‘œκ·Έ**λŠ” `title`κ³Ό `detail`을 μ“°μ„Έμš”. μ‚¬λžŒμ΄ μ½λŠ” λ¬Έμž₯이며 예고 없이 λ‹€λ“¬μŠ΅λ‹ˆλ‹€ β€” **λ¬Έμžμ—΄ λΉ„κ΅λ‘œ λΆ„κΈ°ν•˜μ§€ λ§ˆμ„Έμš”**. - **μž¬μ‹œλ„**λŠ” `Retry-After` 헀더가 있으면 κ·Έ 값을, μ—†μœΌλ©΄ `retryable`을, 그것도 μ—†μœΌλ©΄ `status`λ₯Ό λ”°λ₯΄μ„Έμš”. - **문의**ν•  λ•ŒλŠ” `traceId`λ₯Ό μ²¨λΆ€ν•˜μ„Έμš”. - `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 λ³„λ‘œ μ ν˜€ μžˆμŠ΅λ‹ˆλ‹€. ### 502와 4xx의 차이 - `502` `…/upstream-unavailable` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μΌμ‹œμ μœΌλ‘œ μ²˜λ¦¬ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.** μš”μ²­μ€ κ·ΈλŒ€λ‘œ 두고 backoff ν›„ μž¬μ‹œλ„ν•˜μ„Έμš”. - `4xx` `…/upstream-*` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μš”μ²­μ„ κ±°λΆ€ν–ˆμŠ΅λ‹ˆλ‹€.** 같은 μš”μ²­μ„ λ‹€μ‹œ 보내도 κ²°κ³ΌλŠ” κ°™μŠ΅λ‹ˆλ‹€. `code`의 μ‚¬μœ λ₯Ό 보고 μš”μ²­μ„ κ³ μΉ˜μ„Έμš”. ### λ©±λ“±μ„± μœ„λ°˜: 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: 50.0.0
7
+ * The version of the OpenAPI document: 50.1.0
8
8
  * Contact: semo.io.kr@gmail.com
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
package/common.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * CMARKET V6 Partner API
5
5
  * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token`μ—μ„œ 토큰을 λ°œκΈ‰λ°›μ•„ `Authorization: Bearer <token>` ν—€λ”λ‘œ μ‹€μœΌμ„Έμš”. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403`을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € κ΅¬λΆ„ν•˜μ„Έμš”. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±μž…λ‹ˆλ‹€. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403μž…λ‹ˆλ‹€. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λ©λ‹ˆλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • λ°œμ£ΌκΈ°κ΄€ λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•˜μ„Έμš”. ## 성곡 응닡 ν˜•μ‹ `/v2`의 λͺ¨λ“  2xx 본문은 `{ \"data\": … }`μž…λ‹ˆλ‹€. 단일 λ¦¬μ†ŒμŠ€λ“  λͺ©λ‘μ΄λ“  κ°™μŠ΅λ‹ˆλ‹€. **λͺ©λ‘μ€ `data`κ°€ 배열이고 `meta`κ°€ 항상 ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€** β€” `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 λ¦¬μ†ŒμŠ€ μ‘λ‹΅μ—λŠ” `meta`κ°€ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이 ν˜•μ‹μ„ μ“°μ§€ μ•ŠλŠ” μ—”λ“œν¬μΈνŠΈλŠ” λ‘˜μž…λ‹ˆλ‹€. `/oauth/_*`와 `/.well-known/_*`λŠ” 각각 RFC 6749Β·RFC 8414Β·RFC 9728이 μ΅œμƒμœ„ ν•„λ“œλ₯Ό κ·œμ •ν•˜κ³ , 파일 λ‚΄μš© 응닡은 본문이 JSON이 μ•„λ‹™λ‹ˆλ‹€. μ—λŸ¬ μ‘λ‹΅μ—λŠ” 이 ν˜•μ‹μ„ μ”Œμš°μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ β€” μ•„λž˜ problem+json이 λ‹¨λ…μœΌλ‘œ μ±…μž„μ§‘λ‹ˆλ‹€. ## 쑰건뢀 μš”μ²­ (ETag) `/v2`의 λͺ¨λ“  `GET` 응닡에 weak `ETag`(`W/\"…\"`)κ°€ μ‹€λ¦½λ‹ˆλ‹€. 받은 값을 λ‹€μŒ μš”μ²­μ˜ `If-None-Match` ν—€λ”λ‘œ λ˜λ³΄λ‚΄λ©΄, λ‚΄μš©μ΄ κ·ΈλŒ€λ‘œμΌ λ•Œ `304 Not Modified`λ₯Ό λ³Έλ¬Έ 없이 λ°›μŠ΅λ‹ˆλ‹€. κ²°κ³Όκ°€ λ‚˜κΈ°λ₯Ό 기닀리며 같은 μžμ›μ„ 반볡 μ‘°νšŒν•˜λŠ” 연동이라면 이 헀더 ν•˜λ‚˜λ‘œ μ „μ†‘λŸ‰μ΄ μ‚¬λΌμ§‘λ‹ˆλ‹€. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`μž…λ‹ˆλ‹€. **좕이 μ—¬λŸ¬ 개라 μ–΄λŠ 것을 읽어야 ν•˜λŠ”μ§€ ν•œ κ³³μ—μ„œ μ •λ¦¬ν•©λ‹ˆλ‹€.** - **λΆ„κΈ°**λŠ” `status` β†’ `type` β†’ `code` μˆœμ„œλ‘œ μ’ν˜€ κ°€μ„Έμš”. μ•žμ˜ λ‘˜λ§ŒμœΌλ‘œ μΆ©λΆ„ν•œ 연동이 λŒ€λΆ€λΆ„μ΄κ³ , `code`λŠ” 같은 statusΒ·type μ•ˆμ—μ„œ μ‚¬μœ λ₯Ό κ°€λ¦…λ‹ˆλ‹€. - **ν‘œμ‹œΒ·λ‘œκ·Έ**λŠ” `title`κ³Ό `detail`을 μ“°μ„Έμš”. μ‚¬λžŒμ΄ μ½λŠ” λ¬Έμž₯이며 예고 없이 λ‹€λ“¬μŠ΅λ‹ˆλ‹€ β€” **λ¬Έμžμ—΄ λΉ„κ΅λ‘œ λΆ„κΈ°ν•˜μ§€ λ§ˆμ„Έμš”**. - **μž¬μ‹œλ„**λŠ” `Retry-After` 헀더가 있으면 κ·Έ 값을, μ—†μœΌλ©΄ `retryable`을, 그것도 μ—†μœΌλ©΄ `status`λ₯Ό λ”°λ₯΄μ„Έμš”. - **문의**ν•  λ•ŒλŠ” `traceId`λ₯Ό μ²¨λΆ€ν•˜μ„Έμš”. - `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 λ³„λ‘œ μ ν˜€ μžˆμŠ΅λ‹ˆλ‹€. ### 502와 4xx의 차이 - `502` `…/upstream-unavailable` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μΌμ‹œμ μœΌλ‘œ μ²˜λ¦¬ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.** μš”μ²­μ€ κ·ΈλŒ€λ‘œ 두고 backoff ν›„ μž¬μ‹œλ„ν•˜μ„Έμš”. - `4xx` `…/upstream-*` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μš”μ²­μ„ κ±°λΆ€ν–ˆμŠ΅λ‹ˆλ‹€.** 같은 μš”μ²­μ„ λ‹€μ‹œ 보내도 κ²°κ³ΌλŠ” κ°™μŠ΅λ‹ˆλ‹€. `code`의 μ‚¬μœ λ₯Ό 보고 μš”μ²­μ„ κ³ μΉ˜μ„Έμš”. ### λ©±λ“±μ„± μœ„λ°˜: 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: 50.0.0
7
+ * The version of the OpenAPI document: 50.1.0
8
8
  * Contact: semo.io.kr@gmail.com
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
package/configuration.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  * CMARKET V6 Partner API
4
4
  * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token`μ—μ„œ 토큰을 λ°œκΈ‰λ°›μ•„ `Authorization: Bearer <token>` ν—€λ”λ‘œ μ‹€μœΌμ„Έμš”. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403`을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € κ΅¬λΆ„ν•˜μ„Έμš”. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±μž…λ‹ˆλ‹€. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403μž…λ‹ˆλ‹€. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λ©λ‹ˆλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • λ°œμ£ΌκΈ°κ΄€ λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•˜μ„Έμš”. ## 성곡 응닡 ν˜•μ‹ `/v2`의 λͺ¨λ“  2xx 본문은 `{ \"data\": … }`μž…λ‹ˆλ‹€. 단일 λ¦¬μ†ŒμŠ€λ“  λͺ©λ‘μ΄λ“  κ°™μŠ΅λ‹ˆλ‹€. **λͺ©λ‘μ€ `data`κ°€ 배열이고 `meta`κ°€ 항상 ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€** β€” `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 λ¦¬μ†ŒμŠ€ μ‘λ‹΅μ—λŠ” `meta`κ°€ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이 ν˜•μ‹μ„ μ“°μ§€ μ•ŠλŠ” μ—”λ“œν¬μΈνŠΈλŠ” λ‘˜μž…λ‹ˆλ‹€. `/oauth/_*`와 `/.well-known/_*`λŠ” 각각 RFC 6749Β·RFC 8414Β·RFC 9728이 μ΅œμƒμœ„ ν•„λ“œλ₯Ό κ·œμ •ν•˜κ³ , 파일 λ‚΄μš© 응닡은 본문이 JSON이 μ•„λ‹™λ‹ˆλ‹€. μ—λŸ¬ μ‘λ‹΅μ—λŠ” 이 ν˜•μ‹μ„ μ”Œμš°μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ β€” μ•„λž˜ problem+json이 λ‹¨λ…μœΌλ‘œ μ±…μž„μ§‘λ‹ˆλ‹€. ## 쑰건뢀 μš”μ²­ (ETag) `/v2`의 λͺ¨λ“  `GET` 응닡에 weak `ETag`(`W/\"…\"`)κ°€ μ‹€λ¦½λ‹ˆλ‹€. 받은 값을 λ‹€μŒ μš”μ²­μ˜ `If-None-Match` ν—€λ”λ‘œ λ˜λ³΄λ‚΄λ©΄, λ‚΄μš©μ΄ κ·ΈλŒ€λ‘œμΌ λ•Œ `304 Not Modified`λ₯Ό λ³Έλ¬Έ 없이 λ°›μŠ΅λ‹ˆλ‹€. κ²°κ³Όκ°€ λ‚˜κΈ°λ₯Ό 기닀리며 같은 μžμ›μ„ 반볡 μ‘°νšŒν•˜λŠ” 연동이라면 이 헀더 ν•˜λ‚˜λ‘œ μ „μ†‘λŸ‰μ΄ μ‚¬λΌμ§‘λ‹ˆλ‹€. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`μž…λ‹ˆλ‹€. **좕이 μ—¬λŸ¬ 개라 μ–΄λŠ 것을 읽어야 ν•˜λŠ”μ§€ ν•œ κ³³μ—μ„œ μ •λ¦¬ν•©λ‹ˆλ‹€.** - **λΆ„κΈ°**λŠ” `status` β†’ `type` β†’ `code` μˆœμ„œλ‘œ μ’ν˜€ κ°€μ„Έμš”. μ•žμ˜ λ‘˜λ§ŒμœΌλ‘œ μΆ©λΆ„ν•œ 연동이 λŒ€λΆ€λΆ„μ΄κ³ , `code`λŠ” 같은 statusΒ·type μ•ˆμ—μ„œ μ‚¬μœ λ₯Ό κ°€λ¦…λ‹ˆλ‹€. - **ν‘œμ‹œΒ·λ‘œκ·Έ**λŠ” `title`κ³Ό `detail`을 μ“°μ„Έμš”. μ‚¬λžŒμ΄ μ½λŠ” λ¬Έμž₯이며 예고 없이 λ‹€λ“¬μŠ΅λ‹ˆλ‹€ β€” **λ¬Έμžμ—΄ λΉ„κ΅λ‘œ λΆ„κΈ°ν•˜μ§€ λ§ˆμ„Έμš”**. - **μž¬μ‹œλ„**λŠ” `Retry-After` 헀더가 있으면 κ·Έ 값을, μ—†μœΌλ©΄ `retryable`을, 그것도 μ—†μœΌλ©΄ `status`λ₯Ό λ”°λ₯΄μ„Έμš”. - **문의**ν•  λ•ŒλŠ” `traceId`λ₯Ό μ²¨λΆ€ν•˜μ„Έμš”. - `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 λ³„λ‘œ μ ν˜€ μžˆμŠ΅λ‹ˆλ‹€. ### 502와 4xx의 차이 - `502` `…/upstream-unavailable` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μΌμ‹œμ μœΌλ‘œ μ²˜λ¦¬ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.** μš”μ²­μ€ κ·ΈλŒ€λ‘œ 두고 backoff ν›„ μž¬μ‹œλ„ν•˜μ„Έμš”. - `4xx` `…/upstream-*` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μš”μ²­μ„ κ±°λΆ€ν–ˆμŠ΅λ‹ˆλ‹€.** 같은 μš”μ²­μ„ λ‹€μ‹œ 보내도 κ²°κ³ΌλŠ” κ°™μŠ΅λ‹ˆλ‹€. `code`의 μ‚¬μœ λ₯Ό 보고 μš”μ²­μ„ κ³ μΉ˜μ„Έμš”. ### λ©±λ“±μ„± μœ„λ°˜: 409와 422의 차이 - `409` `…/idempotency-key-conflict` β€” 같은 ν‚€μ˜ **원 μš”μ²­μ΄ 아직 처리 쀑**μž…λ‹ˆλ‹€. μž μ‹œ λ’€ 같은 ν‚€λ‘œ λ‹€μ‹œ λΆ€λ₯΄λ©΄ κ·Έ κ²°κ³Όλ₯Ό λ°›μŠ΅λ‹ˆλ‹€. - `422` `…/idempotency-key-reused` β€” 같은 ν‚€λ₯Ό **λ‹€λ₯Έ body** 둜 λ³΄λƒˆμŠ΅λ‹ˆλ‹€. μž¬μ‹œλ„ν•΄λ„ μ˜μ›νžˆ 같은 μ‹€νŒ¨μ΄λ‹ˆ μƒˆ ν‚€λ₯Ό μ“°κ±°λ‚˜ bodyλ₯Ό λ˜λŒλ¦¬μ„Έμš”. ## Rate Limit μ „μ—­ **60 μš”μ²­/λΆ„ per `client_id`**, 토큰 λ°œκΈ‰(`/oauth/token`)은 **5 μš”μ²­/λΆ„** μž…λ‹ˆλ‹€. 초과 μ‹œ `429`(`type: …/too-many-requests`). μΏΌν„°λŠ” 두 κ°€μ§€ ν‘œκΈ°λ‘œ ν•¨κ»˜ λ‚˜κ°‘λ‹ˆλ‹€ β€” μ‹ κ·œ 연동은 ν‘œμ€€ ν•„λ“œλ₯Ό μ“°μ„Έμš”. - **ν‘œμ€€**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (μ •μ±…) Β· `RateLimit: \"default\";r=59;t=42` (μž”λŸ‰ r, λ¦¬μ…‹κΉŒμ§€ t 초) - **λ ˆκ±°μ‹œ**(κ΄€μš©): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. κΈ°μ‘΄ 연동 ν˜Έν™˜μ„ μœ„ν•΄ μœ μ§€ν•©λ‹ˆλ‹€. `429` μ—μ„œλŠ” `Retry-After`(초)κ°€ μš°μ„ ν•©λ‹ˆλ‹€. λŒ€λŸ‰ 동기화(ν’ˆλͺ© λ‹¨μœ„ 반볡 등둝 λ“±)λŠ” `Retry-After` 만큼 backoff ν›„ μž¬μ‹œλ„ν•˜μ„Έμš”. ## 좔적 μš”μ²­μ— `X-Correlation-Id` 헀더λ₯Ό μ‹€μœΌλ©΄ κ·ΈλŒ€λ‘œ echo 되고, μ—†μœΌλ©΄ μ„œλ²„κ°€ λ°œκΈ‰ν•©λ‹ˆλ‹€. λͺ¨λ“  응닡(성곡/μ—λŸ¬)에 `X-Correlation-Id`κ°€ μ‹€λ¦½λ‹ˆλ‹€. ## μ „λ°©ν˜Έν™˜ β€” λͺ¨λ₯΄λŠ” ν•„λ“œμ™€ κ°’μ—μ„œ κΉ¨μ§€μ§€ μ•Šκ²Œ λ‹€μŒ 셋은 breaking λ³€κ²½μœΌλ‘œ 보지 μ•ŠμœΌλ©° minor λ¦΄λ¦¬μŠ€μ—μ„œ 예고 없이 μΌμ–΄λ‚©λ‹ˆλ‹€. 이 μ „μ œλ‘œ κ΅¬ν˜„ν•˜μ„Έμš”. - **선택 ν•„λ“œ μΆ”κ°€**: λͺ¨λ₯΄λŠ” ν•„λ“œλŠ” λ¬΄μ‹œν•˜μ„Έμš”. 엄격 νŒŒμ„œ(unknown key κ±°λΆ€)λ₯Ό μ“°μ§€ λ§ˆμ„Έμš”. - **enum κ°’ μΆ”κ°€**: μƒνƒœΒ·λ‚™μ°°λ°©λ²• 등에 μƒˆ 값이 μƒκΉλ‹ˆλ‹€. λͺ¨λ₯΄λŠ” 값을 λ§Œλ‚˜λ©΄ μ˜ˆμ™Έλ₯Ό λ˜μ§€μ§€ 말고 원문 λ¬Έμžμ—΄μ„ λ³΄μ‘΄ν•˜μ„Έμš”. - **problem `type` slug μΆ”κ°€**: λͺ¨λ₯΄λŠ” slug은 **HTTP status둜 폴백**ν•΄ λΆ„κΈ°ν•˜μ„Έμš”. ## 버전 수λͺ…(deprecation/sunset) - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` ν—€λ”λ‘œ ν†΅μ§€ν•©λ‹ˆλ‹€. 이 헀더λ₯Ό λͺ¨λ‹ˆν„°λ§ν•˜μ„Έμš”.
5
5
  *
6
- * The version of the OpenAPI document: 50.0.0
6
+ * The version of the OpenAPI document: 50.1.0
7
7
  * Contact: semo.io.kr@gmail.com
8
8
  *
9
9
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -2,7 +2,7 @@
2
2
  * CMARKET V6 Partner API
3
3
  * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token`μ—μ„œ 토큰을 λ°œκΈ‰λ°›μ•„ `Authorization: Bearer <token>` ν—€λ”λ‘œ μ‹€μœΌμ„Έμš”. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403`을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € κ΅¬λΆ„ν•˜μ„Έμš”. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±μž…λ‹ˆλ‹€. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403μž…λ‹ˆλ‹€. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λ©λ‹ˆλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • λ°œμ£ΌκΈ°κ΄€ λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•˜μ„Έμš”. ## 성곡 응닡 ν˜•μ‹ `/v2`의 λͺ¨λ“  2xx 본문은 `{ \"data\": … }`μž…λ‹ˆλ‹€. 단일 λ¦¬μ†ŒμŠ€λ“  λͺ©λ‘μ΄λ“  κ°™μŠ΅λ‹ˆλ‹€. **λͺ©λ‘μ€ `data`κ°€ 배열이고 `meta`κ°€ 항상 ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€** β€” `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 λ¦¬μ†ŒμŠ€ μ‘λ‹΅μ—λŠ” `meta`κ°€ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이 ν˜•μ‹μ„ μ“°μ§€ μ•ŠλŠ” μ—”λ“œν¬μΈνŠΈλŠ” λ‘˜μž…λ‹ˆλ‹€. `/oauth/_*`와 `/.well-known/_*`λŠ” 각각 RFC 6749Β·RFC 8414Β·RFC 9728이 μ΅œμƒμœ„ ν•„λ“œλ₯Ό κ·œμ •ν•˜κ³ , 파일 λ‚΄μš© 응닡은 본문이 JSON이 μ•„λ‹™λ‹ˆλ‹€. μ—λŸ¬ μ‘λ‹΅μ—λŠ” 이 ν˜•μ‹μ„ μ”Œμš°μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ β€” μ•„λž˜ problem+json이 λ‹¨λ…μœΌλ‘œ μ±…μž„μ§‘λ‹ˆλ‹€. ## 쑰건뢀 μš”μ²­ (ETag) `/v2`의 λͺ¨λ“  `GET` 응닡에 weak `ETag`(`W/\"…\"`)κ°€ μ‹€λ¦½λ‹ˆλ‹€. 받은 값을 λ‹€μŒ μš”μ²­μ˜ `If-None-Match` ν—€λ”λ‘œ λ˜λ³΄λ‚΄λ©΄, λ‚΄μš©μ΄ κ·ΈλŒ€λ‘œμΌ λ•Œ `304 Not Modified`λ₯Ό λ³Έλ¬Έ 없이 λ°›μŠ΅λ‹ˆλ‹€. κ²°κ³Όκ°€ λ‚˜κΈ°λ₯Ό 기닀리며 같은 μžμ›μ„ 반볡 μ‘°νšŒν•˜λŠ” 연동이라면 이 헀더 ν•˜λ‚˜λ‘œ μ „μ†‘λŸ‰μ΄ μ‚¬λΌμ§‘λ‹ˆλ‹€. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`μž…λ‹ˆλ‹€. **좕이 μ—¬λŸ¬ 개라 μ–΄λŠ 것을 읽어야 ν•˜λŠ”μ§€ ν•œ κ³³μ—μ„œ μ •λ¦¬ν•©λ‹ˆλ‹€.** - **λΆ„κΈ°**λŠ” `status` β†’ `type` β†’ `code` μˆœμ„œλ‘œ μ’ν˜€ κ°€μ„Έμš”. μ•žμ˜ λ‘˜λ§ŒμœΌλ‘œ μΆ©λΆ„ν•œ 연동이 λŒ€λΆ€λΆ„μ΄κ³ , `code`λŠ” 같은 statusΒ·type μ•ˆμ—μ„œ μ‚¬μœ λ₯Ό κ°€λ¦…λ‹ˆλ‹€. - **ν‘œμ‹œΒ·λ‘œκ·Έ**λŠ” `title`κ³Ό `detail`을 μ“°μ„Έμš”. μ‚¬λžŒμ΄ μ½λŠ” λ¬Έμž₯이며 예고 없이 λ‹€λ“¬μŠ΅λ‹ˆλ‹€ β€” **λ¬Έμžμ—΄ λΉ„κ΅λ‘œ λΆ„κΈ°ν•˜μ§€ λ§ˆμ„Έμš”**. - **μž¬μ‹œλ„**λŠ” `Retry-After` 헀더가 있으면 κ·Έ 값을, μ—†μœΌλ©΄ `retryable`을, 그것도 μ—†μœΌλ©΄ `status`λ₯Ό λ”°λ₯΄μ„Έμš”. - **문의**ν•  λ•ŒλŠ” `traceId`λ₯Ό μ²¨λΆ€ν•˜μ„Έμš”. - `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 λ³„λ‘œ μ ν˜€ μžˆμŠ΅λ‹ˆλ‹€. ### 502와 4xx의 차이 - `502` `…/upstream-unavailable` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μΌμ‹œμ μœΌλ‘œ μ²˜λ¦¬ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.** μš”μ²­μ€ κ·ΈλŒ€λ‘œ 두고 backoff ν›„ μž¬μ‹œλ„ν•˜μ„Έμš”. - `4xx` `…/upstream-*` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μš”μ²­μ„ κ±°λΆ€ν–ˆμŠ΅λ‹ˆλ‹€.** 같은 μš”μ²­μ„ λ‹€μ‹œ 보내도 κ²°κ³ΌλŠ” κ°™μŠ΅λ‹ˆλ‹€. `code`의 μ‚¬μœ λ₯Ό 보고 μš”μ²­μ„ κ³ μΉ˜μ„Έμš”. ### λ©±λ“±μ„± μœ„λ°˜: 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: 50.0.0
5
+ * The version of the OpenAPI document: 50.1.0
6
6
  * Contact: semo.io.kr@gmail.com
7
7
  *
8
8
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -19,8 +19,8 @@ import type { EmbedLaunchRequestDto } from '../models';
19
19
  */
20
20
  export declare const EmbedApiAxiosParamCreator: (configuration?: Configuration) => {
21
21
  /**
22
- * λ°œμ£ΌκΈ°κ΄€ λ‹΄λ‹Ήμž(`memberId`)용 1νšŒμ„± `launchUrl`을 λ°œκΈ‰ν•©λ‹ˆλ‹€(TTL 60초). 이 μ£Όμ†Œλ‘œ CMARKET 화면이 ERP μ‚¬μš©μžμ—κ²Œ 둜그인 없이 μ—΄λ¦½λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈλ„ SDK도 μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
23
- * @summary μž„λ² λ“œ launch λ°œκΈ‰
22
+ * λ‹΄λ‹Ήμž ν•œ λͺ…이 CMARKET 화면을 둜그인 없이 μ—΄ 수 μžˆλŠ” **1회용 μ£Όμ†Œ**λ₯Ό λ°›μŠ΅λ‹ˆλ‹€. 60초 μ•ˆμ— 써야 ν•˜κ³ , ν•œ 번 열리면 κ·Έ μ£Όμ†ŒλŠ” λ¬΄νš¨μž…λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈκ°€ μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
23
+ * @summary ν™”λ©΄ μ£Όμ†Œ λ°œκΈ‰
24
24
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
25
25
  * @param {*} [options] Override http request option.
26
26
  * @throws {RequiredError}
@@ -32,8 +32,8 @@ export declare const EmbedApiAxiosParamCreator: (configuration?: Configuration)
32
32
  */
33
33
  export declare const EmbedApiFp: (configuration?: Configuration) => {
34
34
  /**
35
- * λ°œμ£ΌκΈ°κ΄€ λ‹΄λ‹Ήμž(`memberId`)용 1νšŒμ„± `launchUrl`을 λ°œκΈ‰ν•©λ‹ˆλ‹€(TTL 60초). 이 μ£Όμ†Œλ‘œ CMARKET 화면이 ERP μ‚¬μš©μžμ—κ²Œ 둜그인 없이 μ—΄λ¦½λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈλ„ SDK도 μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
36
- * @summary μž„λ² λ“œ launch λ°œκΈ‰
35
+ * λ‹΄λ‹Ήμž ν•œ λͺ…이 CMARKET 화면을 둜그인 없이 μ—΄ 수 μžˆλŠ” **1회용 μ£Όμ†Œ**λ₯Ό λ°›μŠ΅λ‹ˆλ‹€. 60초 μ•ˆμ— 써야 ν•˜κ³ , ν•œ 번 열리면 κ·Έ μ£Όμ†ŒλŠ” λ¬΄νš¨μž…λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈκ°€ μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
36
+ * @summary ν™”λ©΄ μ£Όμ†Œ λ°œκΈ‰
37
37
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
38
38
  * @param {*} [options] Override http request option.
39
39
  * @throws {RequiredError}
@@ -45,8 +45,8 @@ export declare const EmbedApiFp: (configuration?: Configuration) => {
45
45
  */
46
46
  export declare const EmbedApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
47
47
  /**
48
- * λ°œμ£ΌκΈ°κ΄€ λ‹΄λ‹Ήμž(`memberId`)용 1νšŒμ„± `launchUrl`을 λ°œκΈ‰ν•©λ‹ˆλ‹€(TTL 60초). 이 μ£Όμ†Œλ‘œ CMARKET 화면이 ERP μ‚¬μš©μžμ—κ²Œ 둜그인 없이 μ—΄λ¦½λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈλ„ SDK도 μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
49
- * @summary μž„λ² λ“œ launch λ°œκΈ‰
48
+ * λ‹΄λ‹Ήμž ν•œ λͺ…이 CMARKET 화면을 둜그인 없이 μ—΄ 수 μžˆλŠ” **1회용 μ£Όμ†Œ**λ₯Ό λ°›μŠ΅λ‹ˆλ‹€. 60초 μ•ˆμ— 써야 ν•˜κ³ , ν•œ 번 열리면 κ·Έ μ£Όμ†ŒλŠ” λ¬΄νš¨μž…λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈκ°€ μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
49
+ * @summary ν™”λ©΄ μ£Όμ†Œ λ°œκΈ‰
50
50
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
51
51
  * @param {*} [options] Override http request option.
52
52
  * @throws {RequiredError}
@@ -58,8 +58,8 @@ export declare const EmbedApiFactory: (configuration?: Configuration, basePath?:
58
58
  */
59
59
  export declare class EmbedApi extends BaseAPI {
60
60
  /**
61
- * λ°œμ£ΌκΈ°κ΄€ λ‹΄λ‹Ήμž(`memberId`)용 1νšŒμ„± `launchUrl`을 λ°œκΈ‰ν•©λ‹ˆλ‹€(TTL 60초). 이 μ£Όμ†Œλ‘œ CMARKET 화면이 ERP μ‚¬μš©μžμ—κ²Œ 둜그인 없이 μ—΄λ¦½λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈλ„ SDK도 μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
62
- * @summary μž„λ² λ“œ launch λ°œκΈ‰
61
+ * λ‹΄λ‹Ήμž ν•œ λͺ…이 CMARKET 화면을 둜그인 없이 μ—΄ 수 μžˆλŠ” **1회용 μ£Όμ†Œ**λ₯Ό λ°›μŠ΅λ‹ˆλ‹€. 60초 μ•ˆμ— 써야 ν•˜κ³ , ν•œ 번 열리면 κ·Έ μ£Όμ†ŒλŠ” λ¬΄νš¨μž…λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈκ°€ μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
62
+ * @summary ν™”λ©΄ μ£Όμ†Œ λ°œκΈ‰
63
63
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
64
64
  * @param {*} [options] Override http request option.
65
65
  * @throws {RequiredError}
@@ -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`μž…λ‹ˆλ‹€. **좕이 μ—¬λŸ¬ 개라 μ–΄λŠ 것을 읽어야 ν•˜λŠ”μ§€ ν•œ κ³³μ—μ„œ μ •λ¦¬ν•©λ‹ˆλ‹€.** - **λΆ„κΈ°**λŠ” `status` β†’ `type` β†’ `code` μˆœμ„œλ‘œ μ’ν˜€ κ°€μ„Έμš”. μ•žμ˜ λ‘˜λ§ŒμœΌλ‘œ μΆ©λΆ„ν•œ 연동이 λŒ€λΆ€λΆ„μ΄κ³ , `code`λŠ” 같은 statusΒ·type μ•ˆμ—μ„œ μ‚¬μœ λ₯Ό κ°€λ¦…λ‹ˆλ‹€. - **ν‘œμ‹œΒ·λ‘œκ·Έ**λŠ” `title`κ³Ό `detail`을 μ“°μ„Έμš”. μ‚¬λžŒμ΄ μ½λŠ” λ¬Έμž₯이며 예고 없이 λ‹€λ“¬μŠ΅λ‹ˆλ‹€ β€” **λ¬Έμžμ—΄ λΉ„κ΅λ‘œ λΆ„κΈ°ν•˜μ§€ λ§ˆμ„Έμš”**. - **μž¬μ‹œλ„**λŠ” `Retry-After` 헀더가 있으면 κ·Έ 값을, μ—†μœΌλ©΄ `retryable`을, 그것도 μ—†μœΌλ©΄ `status`λ₯Ό λ”°λ₯΄μ„Έμš”. - **문의**ν•  λ•ŒλŠ” `traceId`λ₯Ό μ²¨λΆ€ν•˜μ„Έμš”. - `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 λ³„λ‘œ μ ν˜€ μžˆμŠ΅λ‹ˆλ‹€. ### 502와 4xx의 차이 - `502` `…/upstream-unavailable` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μΌμ‹œμ μœΌλ‘œ μ²˜λ¦¬ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.** μš”μ²­μ€ κ·ΈλŒ€λ‘œ 두고 backoff ν›„ μž¬μ‹œλ„ν•˜μ„Έμš”. - `4xx` `…/upstream-*` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μš”μ²­μ„ κ±°λΆ€ν–ˆμŠ΅λ‹ˆλ‹€.** 같은 μš”μ²­μ„ λ‹€μ‹œ 보내도 κ²°κ³ΌλŠ” κ°™μŠ΅λ‹ˆλ‹€. `code`의 μ‚¬μœ λ₯Ό 보고 μš”μ²­μ„ κ³ μΉ˜μ„Έμš”. ### λ©±λ“±μ„± μœ„λ°˜: 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: 50.0.0
8
+ * The version of the OpenAPI document: 50.1.0
9
9
  * Contact: semo.io.kr@gmail.com
10
10
  *
11
11
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -35,8 +35,8 @@ const base_1 = require("../base");
35
35
  const EmbedApiAxiosParamCreator = function (configuration) {
36
36
  return {
37
37
  /**
38
- * λ°œμ£ΌκΈ°κ΄€ λ‹΄λ‹Ήμž(`memberId`)용 1νšŒμ„± `launchUrl`을 λ°œκΈ‰ν•©λ‹ˆλ‹€(TTL 60초). 이 μ£Όμ†Œλ‘œ CMARKET 화면이 ERP μ‚¬μš©μžμ—κ²Œ 둜그인 없이 μ—΄λ¦½λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈλ„ SDK도 μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
39
- * @summary μž„λ² λ“œ launch λ°œκΈ‰
38
+ * λ‹΄λ‹Ήμž ν•œ λͺ…이 CMARKET 화면을 둜그인 없이 μ—΄ 수 μžˆλŠ” **1회용 μ£Όμ†Œ**λ₯Ό λ°›μŠ΅λ‹ˆλ‹€. 60초 μ•ˆμ— 써야 ν•˜κ³ , ν•œ 번 열리면 κ·Έ μ£Όμ†ŒλŠ” λ¬΄νš¨μž…λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈκ°€ μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
39
+ * @summary ν™”λ©΄ μ£Όμ†Œ λ°œκΈ‰
40
40
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
41
41
  * @param {*} [options] Override http request option.
42
42
  * @throws {RequiredError}
@@ -78,8 +78,8 @@ const EmbedApiFp = function (configuration) {
78
78
  const localVarAxiosParamCreator = (0, exports.EmbedApiAxiosParamCreator)(configuration);
79
79
  return {
80
80
  /**
81
- * λ°œμ£ΌκΈ°κ΄€ λ‹΄λ‹Ήμž(`memberId`)용 1νšŒμ„± `launchUrl`을 λ°œκΈ‰ν•©λ‹ˆλ‹€(TTL 60초). 이 μ£Όμ†Œλ‘œ CMARKET 화면이 ERP μ‚¬μš©μžμ—κ²Œ 둜그인 없이 μ—΄λ¦½λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈλ„ SDK도 μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
82
- * @summary μž„λ² λ“œ launch λ°œκΈ‰
81
+ * λ‹΄λ‹Ήμž ν•œ λͺ…이 CMARKET 화면을 둜그인 없이 μ—΄ 수 μžˆλŠ” **1회용 μ£Όμ†Œ**λ₯Ό λ°›μŠ΅λ‹ˆλ‹€. 60초 μ•ˆμ— 써야 ν•˜κ³ , ν•œ 번 열리면 κ·Έ μ£Όμ†ŒλŠ” λ¬΄νš¨μž…λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈκ°€ μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
82
+ * @summary ν™”λ©΄ μ£Όμ†Œ λ°œκΈ‰
83
83
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
84
84
  * @param {*} [options] Override http request option.
85
85
  * @throws {RequiredError}
@@ -103,8 +103,8 @@ const EmbedApiFactory = function (configuration, basePath, axios) {
103
103
  const localVarFp = (0, exports.EmbedApiFp)(configuration);
104
104
  return {
105
105
  /**
106
- * λ°œμ£ΌκΈ°κ΄€ λ‹΄λ‹Ήμž(`memberId`)용 1νšŒμ„± `launchUrl`을 λ°œκΈ‰ν•©λ‹ˆλ‹€(TTL 60초). 이 μ£Όμ†Œλ‘œ CMARKET 화면이 ERP μ‚¬μš©μžμ—κ²Œ 둜그인 없이 μ—΄λ¦½λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈλ„ SDK도 μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
107
- * @summary μž„λ² λ“œ launch λ°œκΈ‰
106
+ * λ‹΄λ‹Ήμž ν•œ λͺ…이 CMARKET 화면을 둜그인 없이 μ—΄ 수 μžˆλŠ” **1회용 μ£Όμ†Œ**λ₯Ό λ°›μŠ΅λ‹ˆλ‹€. 60초 μ•ˆμ— 써야 ν•˜κ³ , ν•œ 번 열리면 κ·Έ μ£Όμ†ŒλŠ” λ¬΄νš¨μž…λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈκ°€ μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
107
+ * @summary ν™”λ©΄ μ£Όμ†Œ λ°œκΈ‰
108
108
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
109
109
  * @param {*} [options] Override http request option.
110
110
  * @throws {RequiredError}
@@ -120,8 +120,8 @@ exports.EmbedApiFactory = EmbedApiFactory;
120
120
  */
121
121
  class EmbedApi extends base_1.BaseAPI {
122
122
  /**
123
- * λ°œμ£ΌκΈ°κ΄€ λ‹΄λ‹Ήμž(`memberId`)용 1νšŒμ„± `launchUrl`을 λ°œκΈ‰ν•©λ‹ˆλ‹€(TTL 60초). 이 μ£Όμ†Œλ‘œ CMARKET 화면이 ERP μ‚¬μš©μžμ—κ²Œ 둜그인 없이 μ—΄λ¦½λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈλ„ SDK도 μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
124
- * @summary μž„λ² λ“œ launch λ°œκΈ‰
123
+ * λ‹΄λ‹Ήμž ν•œ λͺ…이 CMARKET 화면을 둜그인 없이 μ—΄ 수 μžˆλŠ” **1회용 μ£Όμ†Œ**λ₯Ό λ°›μŠ΅λ‹ˆλ‹€. 60초 μ•ˆμ— 써야 ν•˜κ³ , ν•œ 번 열리면 κ·Έ μ£Όμ†ŒλŠ” λ¬΄νš¨μž…λ‹ˆλ‹€. μŠ€μ½”ν”„ `embed:launch`. - 응닡은 `launchUrl` ν•˜λ‚˜μž…λ‹ˆλ‹€. iframe `src`에 κ±Έκ±°λ‚˜ μƒˆ νƒ­μœΌλ‘œ μ—½λ‹ˆλ‹€. μ„€μΉ˜ν•  μŠ€ν¬λ¦½νŠΈκ°€ μ—†μŠ΅λ‹ˆλ‹€. - **iframe(ꢌμž₯)**: λ°œκΈ‰ μš”μ²­μ— `parentOrigin`을 ν•¨κ»˜ 보내면 곡고등둝을 마친 직후 κ·Έ origin으둜 등둝 κ²°κ³Όλ₯Ό `postMessage` ν†΅μ§€ν•©λ‹ˆλ‹€. ν—ˆμš© origin을 λ¨Όμ € 등둝해야 ν•˜λ©°, 미등둝이면 이 μš”μ²­μ΄ 400μž…λ‹ˆλ‹€. λ‹€λ§Œ 개발 κΈ°κΈ°(`http://localhost:*`, `127.0.0.1`, `[::1]`)λŠ” 등둝 없이 ν—ˆμš©ν•˜λ―€λ‘œ 연동 착수 λ‹¨κ³„μ—μ„œ 별도 μš”μ²­μ΄ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. - `memberId` 검증은 **API ν‚€μ˜ λŒ€ν–‰ λ²”μœ„ 확인뿐**μž…λ‹ˆλ‹€(λ²”μœ„ 밖이면 403) β€” 같은 κΈ°κ΄€ λ‹΄λ‹ΉμžλŠ” μ „λΆ€ ν†΅κ³Όν•˜λ―€λ‘œ, λΈŒλΌμš°μ €κ°€ μ§€μ •ν•œ 값을 κ·ΈλŒ€λ‘œ λ„˜κΈ°λ©΄ λ™λ£Œ λͺ…μ˜λ‘œ 화면이 μ—΄λ¦½λ‹ˆλ‹€. - **ν†΅μ§€λŠ” `cmarket:bid-data` ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.** 곡고등둝을 마친 직후 μžλ™μœΌλ‘œ ν•œ 번 λ‚˜κ°€λ©°(별도 λ²„νŠΌ λΆˆμš”), 본문은 `GET /v2/bids/{bidRef}` 응닡과 μ™„μ „νžˆ κ°™μ•„μ„œ RESTλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ€ 기관도 μž„λ² λ“œλ§ŒμœΌλ‘œ 자체 λŒ€μž₯을 μ±„μ›λ‹ˆλ‹€. - **μƒˆ νƒ­**: `parentOrigin` 없이 λ°œκΈ‰ν•©λ‹ˆλ‹€ β€” origin 등둝이 ν•„μš” μ—†λŠ” λŒ€μ‹  톡지가 μ—†μ–΄ κ²°κ³ΌλŠ” 쑰회 API둜 ν™•μΈν•©λ‹ˆλ‹€. - ν—ˆμš© λͺ©λ‘ λ°– `screen`Β·`components`λŠ” 400μž…λ‹ˆλ‹€. - **ν™”λ©΄λ§ˆλ‹€ ν•„μš”ν•œ 값이 λ‹€λ¦…λ‹ˆλ‹€** β€” `bid-detail`Β·`payment`λŠ” `targetBidId` 없이 λ°œκΈ‰ν•˜λ©΄ 400μž…λ‹ˆλ‹€(μž„λ² λ“œ κ·Έλ£Ή μ„€λͺ…μ˜ μš”κ±΄ ν‘œ μ°Έμ‘°). μ•„λž˜ μ˜ˆμ‹œ 셋이 κ·ΈλŒ€λ‘œ λΆ™μ—¬ μ“Έ 수 μžˆλŠ” μ΅œμ†Œ μš”μ²­μž…λ‹ˆλ‹€.
124
+ * @summary ν™”λ©΄ μ£Όμ†Œ λ°œκΈ‰
125
125
  * @param {EmbedLaunchRequestDto} embedLaunchRequestDto
126
126
  * @param {*} [options] Override http request option.
127
127
  * @throws {RequiredError}
@@ -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`μž…λ‹ˆλ‹€. **좕이 μ—¬λŸ¬ 개라 μ–΄λŠ 것을 읽어야 ν•˜λŠ”μ§€ ν•œ κ³³μ—μ„œ μ •λ¦¬ν•©λ‹ˆλ‹€.** - **λΆ„κΈ°**λŠ” `status` β†’ `type` β†’ `code` μˆœμ„œλ‘œ μ’ν˜€ κ°€μ„Έμš”. μ•žμ˜ λ‘˜λ§ŒμœΌλ‘œ μΆ©λΆ„ν•œ 연동이 λŒ€λΆ€λΆ„μ΄κ³ , `code`λŠ” 같은 statusΒ·type μ•ˆμ—μ„œ μ‚¬μœ λ₯Ό κ°€λ¦…λ‹ˆλ‹€. - **ν‘œμ‹œΒ·λ‘œκ·Έ**λŠ” `title`κ³Ό `detail`을 μ“°μ„Έμš”. μ‚¬λžŒμ΄ μ½λŠ” λ¬Έμž₯이며 예고 없이 λ‹€λ“¬μŠ΅λ‹ˆλ‹€ β€” **λ¬Έμžμ—΄ λΉ„κ΅λ‘œ λΆ„κΈ°ν•˜μ§€ λ§ˆμ„Έμš”**. - **μž¬μ‹œλ„**λŠ” `Retry-After` 헀더가 있으면 κ·Έ 값을, μ—†μœΌλ©΄ `retryable`을, 그것도 μ—†μœΌλ©΄ `status`λ₯Ό λ”°λ₯΄μ„Έμš”. - **문의**ν•  λ•ŒλŠ” `traceId`λ₯Ό μ²¨λΆ€ν•˜μ„Έμš”. - `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 λ³„λ‘œ μ ν˜€ μžˆμŠ΅λ‹ˆλ‹€. ### 502와 4xx의 차이 - `502` `…/upstream-unavailable` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μΌμ‹œμ μœΌλ‘œ μ²˜λ¦¬ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.** μš”μ²­μ€ κ·ΈλŒ€λ‘œ 두고 backoff ν›„ μž¬μ‹œλ„ν•˜μ„Έμš”. - `4xx` `…/upstream-*` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μš”μ²­μ„ κ±°λΆ€ν–ˆμŠ΅λ‹ˆλ‹€.** 같은 μš”μ²­μ„ λ‹€μ‹œ 보내도 κ²°κ³ΌλŠ” κ°™μŠ΅λ‹ˆλ‹€. `code`의 μ‚¬μœ λ₯Ό 보고 μš”μ²­μ„ κ³ μΉ˜μ„Έμš”. ### λ©±λ“±μ„± μœ„λ°˜: 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: 50.0.0
5
+ * The version of the OpenAPI document: 50.1.0
6
6
  * Contact: semo.io.kr@gmail.com
7
7
  *
8
8
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -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`μž…λ‹ˆλ‹€. **좕이 μ—¬λŸ¬ 개라 μ–΄λŠ 것을 읽어야 ν•˜λŠ”μ§€ ν•œ κ³³μ—μ„œ μ •λ¦¬ν•©λ‹ˆλ‹€.** - **λΆ„κΈ°**λŠ” `status` β†’ `type` β†’ `code` μˆœμ„œλ‘œ μ’ν˜€ κ°€μ„Έμš”. μ•žμ˜ λ‘˜λ§ŒμœΌλ‘œ μΆ©λΆ„ν•œ 연동이 λŒ€λΆ€λΆ„μ΄κ³ , `code`λŠ” 같은 statusΒ·type μ•ˆμ—μ„œ μ‚¬μœ λ₯Ό κ°€λ¦…λ‹ˆλ‹€. - **ν‘œμ‹œΒ·λ‘œκ·Έ**λŠ” `title`κ³Ό `detail`을 μ“°μ„Έμš”. μ‚¬λžŒμ΄ μ½λŠ” λ¬Έμž₯이며 예고 없이 λ‹€λ“¬μŠ΅λ‹ˆλ‹€ β€” **λ¬Έμžμ—΄ λΉ„κ΅λ‘œ λΆ„κΈ°ν•˜μ§€ λ§ˆμ„Έμš”**. - **μž¬μ‹œλ„**λŠ” `Retry-After` 헀더가 있으면 κ·Έ 값을, μ—†μœΌλ©΄ `retryable`을, 그것도 μ—†μœΌλ©΄ `status`λ₯Ό λ”°λ₯΄μ„Έμš”. - **문의**ν•  λ•ŒλŠ” `traceId`λ₯Ό μ²¨λΆ€ν•˜μ„Έμš”. - `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 λ³„λ‘œ μ ν˜€ μžˆμŠ΅λ‹ˆλ‹€. ### 502와 4xx의 차이 - `502` `…/upstream-unavailable` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μΌμ‹œμ μœΌλ‘œ μ²˜λ¦¬ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.** μš”μ²­μ€ κ·ΈλŒ€λ‘œ 두고 backoff ν›„ μž¬μ‹œλ„ν•˜μ„Έμš”. - `4xx` `…/upstream-*` β€” μ‘°λ‹¬ν”Œλž«νΌμ΄ **μš”μ²­μ„ κ±°λΆ€ν–ˆμŠ΅λ‹ˆλ‹€.** 같은 μš”μ²­μ„ λ‹€μ‹œ 보내도 κ²°κ³ΌλŠ” κ°™μŠ΅λ‹ˆλ‹€. `code`의 μ‚¬μœ λ₯Ό 보고 μš”μ²­μ„ κ³ μΉ˜μ„Έμš”. ### λ©±λ“±μ„± μœ„λ°˜: 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: 50.0.0
8
+ * The version of the OpenAPI document: 50.1.0
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).