@cmarket/partner-sdk 25.1.0 β†’ 31.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 (975) hide show
  1. package/README.md +86 -18
  2. package/api/oauth-api.ts +75 -2
  3. package/api/partner-v1-api.ts +14 -14
  4. package/api/partner-v2-api.ts +1627 -260
  5. package/api/well-known-api.ts +2 -2
  6. package/api.ts +2 -2
  7. package/base.ts +2 -2
  8. package/common.ts +2 -2
  9. package/configuration.ts +2 -2
  10. package/dist/api/oauth-api.d.ts +36 -2
  11. package/dist/api/oauth-api.js +69 -2
  12. package/dist/api/partner-v1-api.d.ts +2 -2
  13. package/dist/api/partner-v1-api.js +14 -14
  14. package/dist/api/partner-v2-api.d.ts +783 -172
  15. package/dist/api/partner-v2-api.js +1530 -254
  16. package/dist/api/well-known-api.d.ts +2 -2
  17. package/dist/api/well-known-api.js +2 -2
  18. package/dist/api.d.ts +2 -2
  19. package/dist/api.js +2 -2
  20. package/dist/base.d.ts +2 -2
  21. package/dist/base.js +2 -2
  22. package/dist/common.d.ts +2 -2
  23. package/dist/common.js +2 -2
  24. package/dist/configuration.d.ts +2 -2
  25. package/dist/configuration.js +2 -2
  26. package/dist/esm/api/oauth-api.d.ts +36 -2
  27. package/dist/esm/api/oauth-api.js +69 -2
  28. package/dist/esm/api/partner-v1-api.d.ts +2 -2
  29. package/dist/esm/api/partner-v1-api.js +14 -14
  30. package/dist/esm/api/partner-v2-api.d.ts +783 -172
  31. package/dist/esm/api/partner-v2-api.js +1529 -253
  32. package/dist/esm/api/well-known-api.d.ts +2 -2
  33. package/dist/esm/api/well-known-api.js +2 -2
  34. package/dist/esm/api.d.ts +2 -2
  35. package/dist/esm/api.js +2 -2
  36. package/dist/esm/base.d.ts +2 -2
  37. package/dist/esm/base.js +2 -2
  38. package/dist/esm/common.d.ts +2 -2
  39. package/dist/esm/common.js +2 -2
  40. package/dist/esm/configuration.d.ts +2 -2
  41. package/dist/esm/configuration.js +2 -2
  42. package/dist/esm/index.d.ts +2 -2
  43. package/dist/esm/index.js +2 -2
  44. package/dist/esm/models/acceptance-result-response-dto.d.ts +2 -2
  45. package/dist/esm/models/acceptance-result-response-dto.js +2 -2
  46. package/dist/esm/models/acceptance-result-v1-response-dto.d.ts +2 -2
  47. package/dist/esm/models/acceptance-result-v1-response-dto.js +2 -2
  48. package/dist/esm/models/acceptance-status-response-dto.d.ts +33 -0
  49. package/dist/esm/models/acceptance-status-response-dto.js +14 -0
  50. package/dist/esm/models/acknowledge-product-receipt200-response.d.ts +21 -0
  51. package/dist/esm/models/acknowledge-product-receipt200-response.js +14 -0
  52. package/dist/esm/models/acknowledge-products-request-dto.d.ts +17 -0
  53. package/dist/esm/models/acknowledge-products-request-dto.js +14 -0
  54. package/dist/esm/models/acknowledge-products-v1-request-dto.d.ts +2 -2
  55. package/dist/esm/models/acknowledge-products-v1-request-dto.js +2 -2
  56. package/dist/esm/models/authorization-server-metadata-dto.d.ts +6 -2
  57. package/dist/esm/models/authorization-server-metadata-dto.js +2 -2
  58. package/dist/esm/models/award-method-public.d.ts +2 -2
  59. package/dist/esm/models/award-method-public.js +2 -2
  60. package/dist/esm/models/award-registered-response-dto.d.ts +2 -2
  61. package/dist/esm/models/award-registered-response-dto.js +2 -2
  62. package/dist/esm/models/award-registered-v2-response-dto.d.ts +2 -2
  63. package/dist/esm/models/award-registered-v2-response-dto.js +2 -2
  64. package/dist/esm/models/award-reverted-v2-response-dto.d.ts +25 -0
  65. package/dist/esm/models/award-reverted-v2-response-dto.js +16 -0
  66. package/dist/esm/models/bid-attachment-v1-dto.d.ts +2 -2
  67. package/dist/esm/models/bid-attachment-v1-dto.js +2 -2
  68. package/dist/esm/models/bid-bond-dto.d.ts +2 -2
  69. package/dist/esm/models/bid-bond-dto.js +2 -2
  70. package/dist/esm/models/bid-bond-v1-dto.d.ts +2 -2
  71. package/dist/esm/models/bid-bond-v1-dto.js +2 -2
  72. package/dist/esm/models/bid-cancelled-response-dto.d.ts +25 -0
  73. package/dist/esm/models/bid-cancelled-response-dto.js +16 -0
  74. package/dist/esm/models/bid-contact-dto.d.ts +25 -0
  75. package/dist/esm/models/bid-contact-dto.js +14 -0
  76. package/dist/esm/models/bid-contacts-dto.d.ts +22 -0
  77. package/dist/esm/models/bid-contacts-dto.js +14 -0
  78. package/dist/esm/models/bid-contract-document-dto.d.ts +60 -0
  79. package/dist/esm/models/bid-contract-document-dto.js +19 -0
  80. package/dist/esm/models/bid-contract-documents-batch-v1-request-dto.d.ts +2 -2
  81. package/dist/esm/models/bid-contract-documents-batch-v1-request-dto.js +2 -2
  82. package/dist/esm/models/bid-contract-documents-v1-response-dto.d.ts +2 -2
  83. package/dist/esm/models/bid-contract-documents-v1-response-dto.js +2 -2
  84. package/dist/esm/models/bid-created-response-dto.d.ts +2 -2
  85. package/dist/esm/models/bid-created-response-dto.js +2 -2
  86. package/dist/esm/models/bid-delivery-terms-dto.d.ts +33 -0
  87. package/dist/esm/models/bid-delivery-terms-dto.js +14 -0
  88. package/dist/esm/models/bid-detail-response-dto.d.ts +2 -2
  89. package/dist/esm/models/bid-detail-response-dto.js +2 -2
  90. package/dist/esm/models/bid-document-dto.d.ts +2 -2
  91. package/dist/esm/models/bid-document-dto.js +2 -2
  92. package/dist/esm/models/bid-document-v1-dto.d.ts +2 -2
  93. package/dist/esm/models/bid-document-v1-dto.js +2 -2
  94. package/dist/esm/models/bid-failed-response-dto.d.ts +2 -2
  95. package/dist/esm/models/bid-failed-response-dto.js +2 -2
  96. package/dist/esm/models/bid-failed-v2-response-dto.d.ts +2 -2
  97. package/dist/esm/models/bid-failed-v2-response-dto.js +2 -2
  98. package/dist/esm/models/bid-failure-reason.d.ts +2 -2
  99. package/dist/esm/models/bid-failure-reason.js +2 -2
  100. package/dist/esm/models/bid-item-dto.d.ts +2 -2
  101. package/dist/esm/models/bid-item-dto.js +2 -2
  102. package/dist/esm/models/bid-item-v1-dto.d.ts +2 -2
  103. package/dist/esm/models/bid-item-v1-dto.js +2 -2
  104. package/dist/esm/models/bid-lifecycle-dto.d.ts +2 -2
  105. package/dist/esm/models/bid-lifecycle-dto.js +2 -2
  106. package/dist/esm/models/bid-manager-dto.d.ts +2 -2
  107. package/dist/esm/models/bid-manager-dto.js +2 -2
  108. package/dist/esm/models/bid-manager-v1-dto.d.ts +2 -2
  109. package/dist/esm/models/bid-manager-v1-dto.js +2 -2
  110. package/dist/esm/models/bid-participant-summary-dto.d.ts +2 -2
  111. package/dist/esm/models/bid-participant-summary-dto.js +2 -2
  112. package/dist/esm/models/bid-payment-terms-dto.d.ts +21 -0
  113. package/dist/esm/models/bid-payment-terms-dto.js +14 -0
  114. package/dist/esm/models/bid-product-dto.d.ts +37 -0
  115. package/dist/esm/models/bid-product-dto.js +14 -0
  116. package/dist/esm/models/bid-public-status.d.ts +2 -5
  117. package/dist/esm/models/bid-public-status.js +2 -5
  118. package/dist/esm/models/bid-published-response-dto.d.ts +2 -2
  119. package/dist/esm/models/bid-published-response-dto.js +2 -2
  120. package/dist/esm/models/bid-registered-response-dto.d.ts +2 -2
  121. package/dist/esm/models/bid-registered-response-dto.js +2 -2
  122. package/dist/esm/models/bid-result-participant-attachment-dto.d.ts +2 -2
  123. package/dist/esm/models/bid-result-participant-attachment-dto.js +2 -2
  124. package/dist/esm/models/bid-result-participant-dto.d.ts +2 -2
  125. package/dist/esm/models/bid-result-participant-dto.js +2 -2
  126. package/dist/esm/models/bid-result-v1-attachment-dto.d.ts +2 -2
  127. package/dist/esm/models/bid-result-v1-attachment-dto.js +2 -2
  128. package/dist/esm/models/bid-result-v1-bid-product-info-dto.d.ts +2 -2
  129. package/dist/esm/models/bid-result-v1-bid-product-info-dto.js +2 -2
  130. package/dist/esm/models/bid-result-v1-participant-dto.d.ts +2 -2
  131. package/dist/esm/models/bid-result-v1-participant-dto.js +2 -2
  132. package/dist/esm/models/bid-result-v1-product-dto.d.ts +2 -2
  133. package/dist/esm/models/bid-result-v1-product-dto.js +2 -2
  134. package/dist/esm/models/bid-results-batch-request-dto.d.ts +17 -0
  135. package/dist/esm/models/bid-results-batch-request-dto.js +14 -0
  136. package/dist/esm/models/bid-results-batch-v1-request-dto.d.ts +2 -2
  137. package/dist/esm/models/bid-results-batch-v1-request-dto.js +2 -2
  138. package/dist/esm/models/bid-results-response-dto.d.ts +2 -2
  139. package/dist/esm/models/bid-results-response-dto.js +2 -2
  140. package/dist/esm/models/bid-results-v1-response-dto.d.ts +2 -2
  141. package/dist/esm/models/bid-results-v1-response-dto.js +2 -2
  142. package/dist/esm/models/bid-settlement-line-item-dto.d.ts +2 -2
  143. package/dist/esm/models/bid-settlement-line-item-dto.js +2 -2
  144. package/dist/esm/models/bid-settlement-participant-dto.d.ts +2 -2
  145. package/dist/esm/models/bid-settlement-participant-dto.js +2 -2
  146. package/dist/esm/models/bid-settlement-response-dto.d.ts +2 -2
  147. package/dist/esm/models/bid-settlement-response-dto.js +2 -2
  148. package/dist/esm/models/bid-statement-response-dto.d.ts +2 -2
  149. package/dist/esm/models/bid-statement-response-dto.js +2 -2
  150. package/dist/esm/models/bid-statement-v1-response-dto.d.ts +2 -2
  151. package/dist/esm/models/bid-statement-v1-response-dto.js +2 -2
  152. package/dist/esm/models/bid-status.d.ts +2 -2
  153. package/dist/esm/models/bid-status.js +2 -2
  154. package/dist/esm/models/bid-summary-dto.d.ts +39 -2
  155. package/dist/esm/models/bid-summary-dto.js +2 -2
  156. package/dist/esm/models/bid-updated-response-dto.d.ts +2 -2
  157. package/dist/esm/models/bid-updated-response-dto.js +2 -2
  158. package/dist/esm/models/cancel-bid-request-dto.d.ts +17 -0
  159. package/dist/esm/models/cancel-bid-request-dto.js +14 -0
  160. package/dist/esm/models/cancel-bid200-response.d.ts +21 -0
  161. package/dist/esm/models/cancel-bid200-response.js +14 -0
  162. package/dist/esm/models/card-payment-request-response-dto.d.ts +2 -2
  163. package/dist/esm/models/card-payment-request-response-dto.js +2 -2
  164. package/dist/esm/models/complete-acceptance-request-dto.d.ts +2 -2
  165. package/dist/esm/models/complete-acceptance-request-dto.js +2 -2
  166. package/dist/esm/models/complete-acceptance-v1-request-dto.d.ts +2 -2
  167. package/dist/esm/models/complete-acceptance-v1-request-dto.js +2 -2
  168. package/dist/esm/models/complete-acceptance200-response.d.ts +21 -0
  169. package/dist/esm/models/complete-acceptance200-response.js +14 -0
  170. package/dist/esm/models/complete-invoice200-response.d.ts +21 -0
  171. package/dist/esm/models/complete-invoice200-response.js +14 -0
  172. package/dist/esm/models/contract-document-item-dto.d.ts +2 -2
  173. package/dist/esm/models/contract-document-item-dto.js +2 -2
  174. package/dist/esm/models/contract-documents-regenerated-response-dto.d.ts +2 -2
  175. package/dist/esm/models/contract-documents-regenerated-response-dto.js +2 -2
  176. package/dist/esm/models/contract-restriction-confirm-input-dto.d.ts +2 -2
  177. package/dist/esm/models/contract-restriction-confirm-input-dto.js +2 -2
  178. package/dist/esm/models/create-bid-request-dto.d.ts +2 -2
  179. package/dist/esm/models/create-bid-request-dto.js +2 -2
  180. package/dist/esm/models/create-bid-v1-request-dto.d.ts +2 -2
  181. package/dist/esm/models/create-bid-v1-request-dto.js +2 -2
  182. package/dist/esm/models/create-card-payment-request-dto.d.ts +2 -2
  183. package/dist/esm/models/create-card-payment-request-dto.js +2 -2
  184. package/dist/esm/models/create-card-payment200-response.d.ts +21 -0
  185. package/dist/esm/models/create-card-payment200-response.js +14 -0
  186. package/dist/esm/models/create-external-contract-documents-request-dto.d.ts +2 -2
  187. package/dist/esm/models/create-external-contract-documents-request-dto.js +2 -2
  188. package/dist/esm/models/create-external-contract-documents-response-dto.d.ts +2 -2
  189. package/dist/esm/models/create-external-contract-documents-response-dto.js +2 -2
  190. package/dist/esm/models/create-webhook-endpoint-request-dto.d.ts +22 -0
  191. package/dist/esm/models/create-webhook-endpoint-request-dto.js +14 -0
  192. package/dist/esm/models/create-webhook-endpoint201-response.d.ts +21 -0
  193. package/dist/esm/models/create-webhook-endpoint201-response.js +14 -0
  194. package/dist/esm/models/external-contract-document-item-dto.d.ts +2 -2
  195. package/dist/esm/models/external-contract-document-item-dto.js +2 -2
  196. package/dist/esm/models/external-contract-documents-response-dto.d.ts +2 -2
  197. package/dist/esm/models/external-contract-documents-response-dto.js +2 -2
  198. package/dist/esm/models/external-contract-item-dto.d.ts +2 -2
  199. package/dist/esm/models/external-contract-item-dto.js +2 -2
  200. package/dist/esm/models/external-contract-snapshot-dto.d.ts +2 -2
  201. package/dist/esm/models/external-contract-snapshot-dto.js +2 -2
  202. package/dist/esm/models/external-document-inputs-dto.d.ts +2 -2
  203. package/dist/esm/models/external-document-inputs-dto.js +2 -2
  204. package/dist/esm/models/file-meta-response-dto.d.ts +33 -0
  205. package/dist/esm/models/file-meta-response-dto.js +14 -0
  206. package/dist/esm/models/file-uploaded-response-dto.d.ts +2 -2
  207. package/dist/esm/models/file-uploaded-response-dto.js +2 -2
  208. package/dist/esm/models/file-uploaded-v1-response-dto.d.ts +2 -2
  209. package/dist/esm/models/file-uploaded-v1-response-dto.js +2 -2
  210. package/dist/esm/models/generated-external-contract-document-dto.d.ts +2 -2
  211. package/dist/esm/models/generated-external-contract-document-dto.js +2 -2
  212. package/dist/esm/models/get-bid-acceptance200-response.d.ts +21 -0
  213. package/dist/esm/models/get-bid-acceptance200-response.js +14 -0
  214. package/dist/esm/models/get-bid-results200-response.d.ts +21 -0
  215. package/dist/esm/models/get-bid-results200-response.js +14 -0
  216. package/dist/esm/models/get-bid-settlement200-response.d.ts +21 -0
  217. package/dist/esm/models/get-bid-settlement200-response.js +14 -0
  218. package/dist/esm/models/get-bid-statement200-response.d.ts +21 -0
  219. package/dist/esm/models/get-bid-statement200-response.js +14 -0
  220. package/dist/esm/models/get-bid200-response.d.ts +21 -0
  221. package/dist/esm/models/get-bid200-response.js +14 -0
  222. package/dist/esm/models/get-file-meta200-response.d.ts +21 -0
  223. package/dist/esm/models/get-file-meta200-response.js +14 -0
  224. package/dist/esm/models/get-supplier-card-payable-v2200-response.d.ts +21 -0
  225. package/dist/esm/models/get-supplier-card-payable-v2200-response.js +14 -0
  226. package/dist/esm/models/get-webhook-endpoint200-response.d.ts +21 -0
  227. package/dist/esm/models/get-webhook-endpoint200-response.js +14 -0
  228. package/dist/esm/models/health-controller-check200-response.d.ts +21 -0
  229. package/dist/esm/models/health-controller-check200-response.js +14 -0
  230. package/dist/esm/models/health-response-dto.d.ts +2 -2
  231. package/dist/esm/models/health-response-dto.js +2 -2
  232. package/dist/esm/models/hierarchical-region-dto.d.ts +2 -2
  233. package/dist/esm/models/hierarchical-region-dto.js +2 -2
  234. package/dist/esm/models/hierarchical-region-v1-dto.d.ts +2 -2
  235. package/dist/esm/models/hierarchical-region-v1-dto.js +2 -2
  236. package/dist/esm/models/index.d.ts +59 -8
  237. package/dist/esm/models/index.js +59 -8
  238. package/dist/esm/models/introspect-request-dto.d.ts +46 -0
  239. package/dist/esm/models/introspect-request-dto.js +20 -0
  240. package/dist/esm/models/introspection-response-dto.d.ts +45 -0
  241. package/dist/esm/models/introspection-response-dto.js +14 -0
  242. package/dist/esm/models/invalid-param-dto.d.ts +2 -2
  243. package/dist/esm/models/invalid-param-dto.js +2 -2
  244. package/dist/esm/models/invoice-completed-response-dto.d.ts +2 -2
  245. package/dist/esm/models/invoice-completed-response-dto.js +2 -2
  246. package/dist/esm/models/list-bid-contract-documents200-response.d.ts +21 -0
  247. package/dist/esm/models/list-bid-contract-documents200-response.js +14 -0
  248. package/dist/esm/models/list-bid-participants200-response.d.ts +21 -0
  249. package/dist/esm/models/list-bid-participants200-response.js +14 -0
  250. package/dist/esm/models/list-bid-results200-response.d.ts +21 -0
  251. package/dist/esm/models/list-bid-results200-response.js +14 -0
  252. package/dist/esm/models/list-bids-response-dto.d.ts +2 -2
  253. package/dist/esm/models/list-bids-response-dto.js +2 -2
  254. package/dist/esm/models/list-bids200-response.d.ts +21 -0
  255. package/dist/esm/models/list-bids200-response.js +14 -0
  256. package/dist/esm/models/list-products200-response.d.ts +21 -0
  257. package/dist/esm/models/list-products200-response.js +14 -0
  258. package/dist/esm/models/list-webhook-deliveries-response-dto.d.ts +22 -0
  259. package/dist/esm/models/list-webhook-deliveries-response-dto.js +14 -0
  260. package/dist/esm/models/list-webhook-deliveries200-response.d.ts +21 -0
  261. package/dist/esm/models/list-webhook-deliveries200-response.js +14 -0
  262. package/dist/esm/models/list-webhook-endpoints200-response.d.ts +21 -0
  263. package/dist/esm/models/list-webhook-endpoints200-response.js +14 -0
  264. package/dist/esm/models/mark-bid-failed-request-dto.d.ts +2 -2
  265. package/dist/esm/models/mark-bid-failed-request-dto.js +2 -2
  266. package/dist/esm/models/mark-bid-failed-v1-request-dto.d.ts +2 -2
  267. package/dist/esm/models/mark-bid-failed-v1-request-dto.js +2 -2
  268. package/dist/esm/models/mark-bid-failed201-response.d.ts +21 -0
  269. package/dist/esm/models/mark-bid-failed201-response.js +14 -0
  270. package/dist/esm/models/negotiation-score-v1-dto.d.ts +2 -2
  271. package/dist/esm/models/negotiation-score-v1-dto.js +2 -2
  272. package/dist/esm/models/negotiation-scored-response-dto.d.ts +2 -2
  273. package/dist/esm/models/negotiation-scored-response-dto.js +2 -2
  274. package/dist/esm/models/oauth-error-response-dto.d.ts +2 -2
  275. package/dist/esm/models/oauth-error-response-dto.js +2 -2
  276. package/dist/esm/models/partner-webhook-delivery-status.d.ts +18 -0
  277. package/dist/esm/models/partner-webhook-delivery-status.js +19 -0
  278. package/dist/esm/models/partner-webhook-endpoint-status.d.ts +19 -0
  279. package/dist/esm/models/partner-webhook-endpoint-status.js +20 -0
  280. package/dist/esm/models/partner-webhook-event-type.d.ts +22 -0
  281. package/dist/esm/models/partner-webhook-event-type.js +23 -0
  282. package/dist/esm/models/preconditions-dto.d.ts +2 -2
  283. package/dist/esm/models/preconditions-dto.js +2 -2
  284. package/dist/esm/models/preconditions-v1-dto.d.ts +2 -2
  285. package/dist/esm/models/preconditions-v1-dto.js +2 -2
  286. package/dist/esm/models/problem-details-dto.d.ts +7 -3
  287. package/dist/esm/models/problem-details-dto.js +2 -2
  288. package/dist/esm/models/product-receipt-response-dto.d.ts +17 -0
  289. package/dist/esm/models/product-receipt-response-dto.js +14 -0
  290. package/dist/esm/models/product-receipt-v1-response-dto.d.ts +2 -2
  291. package/dist/esm/models/product-receipt-v1-response-dto.js +2 -2
  292. package/dist/esm/models/product-response-dto.d.ts +77 -0
  293. package/dist/esm/models/product-response-dto.js +14 -0
  294. package/dist/esm/models/product-v1-response-dto.d.ts +2 -2
  295. package/dist/esm/models/product-v1-response-dto.js +2 -2
  296. package/dist/esm/models/protected-resource-metadata-dto.d.ts +2 -2
  297. package/dist/esm/models/protected-resource-metadata-dto.js +2 -2
  298. package/dist/esm/models/publish-bid200-response.d.ts +21 -0
  299. package/dist/esm/models/publish-bid200-response.js +14 -0
  300. package/dist/esm/models/regenerate-contract-documents201-response.d.ts +21 -0
  301. package/dist/esm/models/regenerate-contract-documents201-response.js +14 -0
  302. package/dist/esm/models/register-award-request-dto.d.ts +2 -2
  303. package/dist/esm/models/register-award-request-dto.js +2 -2
  304. package/dist/esm/models/register-award-v1-request-dto.d.ts +2 -2
  305. package/dist/esm/models/register-award-v1-request-dto.js +2 -2
  306. package/dist/esm/models/register-award201-response.d.ts +21 -0
  307. package/dist/esm/models/register-award201-response.js +14 -0
  308. package/dist/esm/models/register-bid201-response.d.ts +21 -0
  309. package/dist/esm/models/register-bid201-response.js +14 -0
  310. package/dist/esm/models/register-semo-contract-request-dto.d.ts +2 -2
  311. package/dist/esm/models/register-semo-contract-request-dto.js +2 -2
  312. package/dist/esm/models/request-split-invoice-v1-request-dto.d.ts +2 -2
  313. package/dist/esm/models/request-split-invoice-v1-request-dto.js +2 -2
  314. package/dist/esm/models/retiree-roster-input-dto.d.ts +2 -2
  315. package/dist/esm/models/retiree-roster-input-dto.js +2 -2
  316. package/dist/esm/models/retiree-roster-row-dto.d.ts +2 -2
  317. package/dist/esm/models/retiree-roster-row-dto.js +2 -2
  318. package/dist/esm/models/revert-award-request-dto.d.ts +17 -0
  319. package/dist/esm/models/revert-award-request-dto.js +14 -0
  320. package/dist/esm/models/revert-award200-response.d.ts +21 -0
  321. package/dist/esm/models/revert-award200-response.js +14 -0
  322. package/dist/esm/models/revoke-request-dto.d.ts +2 -2
  323. package/dist/esm/models/revoke-request-dto.js +2 -2
  324. package/dist/esm/models/semo-contract-registered-response-dto.d.ts +2 -2
  325. package/dist/esm/models/semo-contract-registered-response-dto.js +2 -2
  326. package/dist/esm/models/semo-contract-taxinvoice-status-response-dto.d.ts +2 -2
  327. package/dist/esm/models/semo-contract-taxinvoice-status-response-dto.js +2 -2
  328. package/dist/esm/models/send-webhook-test-event200-response.d.ts +21 -0
  329. package/dist/esm/models/send-webhook-test-event200-response.js +14 -0
  330. package/dist/esm/models/split-invoice-v1-response-dto.d.ts +2 -2
  331. package/dist/esm/models/split-invoice-v1-response-dto.js +2 -2
  332. package/dist/esm/models/statement-document-dto.d.ts +2 -2
  333. package/dist/esm/models/statement-document-dto.js +2 -2
  334. package/dist/esm/models/statement-product-dto.d.ts +2 -2
  335. package/dist/esm/models/statement-product-dto.js +2 -2
  336. package/dist/esm/models/statement-v1-document-dto.d.ts +2 -2
  337. package/dist/esm/models/statement-v1-document-dto.js +2 -2
  338. package/dist/esm/models/statement-v1-product-dto.d.ts +2 -2
  339. package/dist/esm/models/statement-v1-product-dto.js +2 -2
  340. package/dist/esm/models/submit-negotiation-scores-v1-request-dto.d.ts +2 -2
  341. package/dist/esm/models/submit-negotiation-scores-v1-request-dto.js +2 -2
  342. package/dist/esm/models/supplier-card-payable-response-dto.d.ts +2 -2
  343. package/dist/esm/models/supplier-card-payable-response-dto.js +2 -2
  344. package/dist/esm/models/supplier-tax-type.d.ts +2 -2
  345. package/dist/esm/models/supplier-tax-type.js +2 -2
  346. package/dist/esm/models/token-request-dto.d.ts +2 -2
  347. package/dist/esm/models/token-request-dto.js +2 -2
  348. package/dist/esm/models/token-response-dto.d.ts +2 -2
  349. package/dist/esm/models/token-response-dto.js +2 -2
  350. package/dist/esm/models/update-bid-request-dto.d.ts +2 -2
  351. package/dist/esm/models/update-bid-request-dto.js +2 -2
  352. package/dist/esm/models/update-bid200-response.d.ts +21 -0
  353. package/dist/esm/models/update-bid200-response.js +14 -0
  354. package/dist/esm/models/update-webhook-endpoint-request-dto.d.ts +27 -0
  355. package/dist/esm/models/update-webhook-endpoint-request-dto.js +14 -0
  356. package/dist/esm/models/upload-file-request-dto.d.ts +2 -2
  357. package/dist/esm/models/upload-file-request-dto.js +2 -2
  358. package/dist/esm/models/upload-file-v1-request-dto.d.ts +2 -2
  359. package/dist/esm/models/upload-file-v1-request-dto.js +2 -2
  360. package/dist/esm/models/upload-file201-response.d.ts +21 -0
  361. package/dist/esm/models/upload-file201-response.js +14 -0
  362. package/dist/esm/models/webhook-delivery-dto.d.ts +73 -0
  363. package/dist/esm/models/webhook-delivery-dto.js +21 -0
  364. package/dist/esm/models/webhook-endpoint-dto.d.ts +55 -0
  365. package/dist/esm/models/webhook-endpoint-dto.js +14 -0
  366. package/dist/esm/models/webhook-endpoint-with-secret-dto.d.ts +59 -0
  367. package/dist/esm/models/webhook-endpoint-with-secret-dto.js +14 -0
  368. package/dist/esm/models/webhook-test-result-dto.d.ts +25 -0
  369. package/dist/esm/models/webhook-test-result-dto.js +14 -0
  370. package/dist/index.d.ts +2 -2
  371. package/dist/index.js +2 -2
  372. package/dist/models/acceptance-result-response-dto.d.ts +2 -2
  373. package/dist/models/acceptance-result-response-dto.js +2 -2
  374. package/dist/models/acceptance-result-v1-response-dto.d.ts +2 -2
  375. package/dist/models/acceptance-result-v1-response-dto.js +2 -2
  376. package/dist/models/acceptance-status-response-dto.d.ts +33 -0
  377. package/dist/models/acceptance-status-response-dto.js +15 -0
  378. package/dist/models/acknowledge-product-receipt200-response.d.ts +21 -0
  379. package/dist/models/acknowledge-product-receipt200-response.js +15 -0
  380. package/dist/models/acknowledge-products-request-dto.d.ts +17 -0
  381. package/dist/models/acknowledge-products-request-dto.js +15 -0
  382. package/dist/models/acknowledge-products-v1-request-dto.d.ts +2 -2
  383. package/dist/models/acknowledge-products-v1-request-dto.js +2 -2
  384. package/dist/models/authorization-server-metadata-dto.d.ts +6 -2
  385. package/dist/models/authorization-server-metadata-dto.js +2 -2
  386. package/dist/models/award-method-public.d.ts +2 -2
  387. package/dist/models/award-method-public.js +2 -2
  388. package/dist/models/award-registered-response-dto.d.ts +2 -2
  389. package/dist/models/award-registered-response-dto.js +2 -2
  390. package/dist/models/award-registered-v2-response-dto.d.ts +2 -2
  391. package/dist/models/award-registered-v2-response-dto.js +2 -2
  392. package/dist/models/award-reverted-v2-response-dto.d.ts +25 -0
  393. package/dist/models/award-reverted-v2-response-dto.js +19 -0
  394. package/dist/models/bid-attachment-v1-dto.d.ts +2 -2
  395. package/dist/models/bid-attachment-v1-dto.js +2 -2
  396. package/dist/models/bid-bond-dto.d.ts +2 -2
  397. package/dist/models/bid-bond-dto.js +2 -2
  398. package/dist/models/bid-bond-v1-dto.d.ts +2 -2
  399. package/dist/models/bid-bond-v1-dto.js +2 -2
  400. package/dist/models/bid-cancelled-response-dto.d.ts +25 -0
  401. package/dist/models/bid-cancelled-response-dto.js +19 -0
  402. package/dist/models/bid-contact-dto.d.ts +25 -0
  403. package/dist/models/bid-contact-dto.js +15 -0
  404. package/dist/models/bid-contacts-dto.d.ts +22 -0
  405. package/dist/models/bid-contacts-dto.js +15 -0
  406. package/dist/models/bid-contract-document-dto.d.ts +60 -0
  407. package/dist/models/bid-contract-document-dto.js +22 -0
  408. package/dist/models/bid-contract-documents-batch-v1-request-dto.d.ts +2 -2
  409. package/dist/models/bid-contract-documents-batch-v1-request-dto.js +2 -2
  410. package/dist/models/bid-contract-documents-v1-response-dto.d.ts +2 -2
  411. package/dist/models/bid-contract-documents-v1-response-dto.js +2 -2
  412. package/dist/models/bid-created-response-dto.d.ts +2 -2
  413. package/dist/models/bid-created-response-dto.js +2 -2
  414. package/dist/models/bid-delivery-terms-dto.d.ts +33 -0
  415. package/dist/models/bid-delivery-terms-dto.js +15 -0
  416. package/dist/models/bid-detail-response-dto.d.ts +2 -2
  417. package/dist/models/bid-detail-response-dto.js +2 -2
  418. package/dist/models/bid-document-dto.d.ts +2 -2
  419. package/dist/models/bid-document-dto.js +2 -2
  420. package/dist/models/bid-document-v1-dto.d.ts +2 -2
  421. package/dist/models/bid-document-v1-dto.js +2 -2
  422. package/dist/models/bid-failed-response-dto.d.ts +2 -2
  423. package/dist/models/bid-failed-response-dto.js +2 -2
  424. package/dist/models/bid-failed-v2-response-dto.d.ts +2 -2
  425. package/dist/models/bid-failed-v2-response-dto.js +2 -2
  426. package/dist/models/bid-failure-reason.d.ts +2 -2
  427. package/dist/models/bid-failure-reason.js +2 -2
  428. package/dist/models/bid-item-dto.d.ts +2 -2
  429. package/dist/models/bid-item-dto.js +2 -2
  430. package/dist/models/bid-item-v1-dto.d.ts +2 -2
  431. package/dist/models/bid-item-v1-dto.js +2 -2
  432. package/dist/models/bid-lifecycle-dto.d.ts +2 -2
  433. package/dist/models/bid-lifecycle-dto.js +2 -2
  434. package/dist/models/bid-manager-dto.d.ts +2 -2
  435. package/dist/models/bid-manager-dto.js +2 -2
  436. package/dist/models/bid-manager-v1-dto.d.ts +2 -2
  437. package/dist/models/bid-manager-v1-dto.js +2 -2
  438. package/dist/models/bid-participant-summary-dto.d.ts +2 -2
  439. package/dist/models/bid-participant-summary-dto.js +2 -2
  440. package/dist/models/bid-payment-terms-dto.d.ts +21 -0
  441. package/dist/models/bid-payment-terms-dto.js +15 -0
  442. package/dist/models/bid-product-dto.d.ts +37 -0
  443. package/dist/models/bid-product-dto.js +15 -0
  444. package/dist/models/bid-public-status.d.ts +2 -5
  445. package/dist/models/bid-public-status.js +2 -5
  446. package/dist/models/bid-published-response-dto.d.ts +2 -2
  447. package/dist/models/bid-published-response-dto.js +2 -2
  448. package/dist/models/bid-registered-response-dto.d.ts +2 -2
  449. package/dist/models/bid-registered-response-dto.js +2 -2
  450. package/dist/models/bid-result-participant-attachment-dto.d.ts +2 -2
  451. package/dist/models/bid-result-participant-attachment-dto.js +2 -2
  452. package/dist/models/bid-result-participant-dto.d.ts +2 -2
  453. package/dist/models/bid-result-participant-dto.js +2 -2
  454. package/dist/models/bid-result-v1-attachment-dto.d.ts +2 -2
  455. package/dist/models/bid-result-v1-attachment-dto.js +2 -2
  456. package/dist/models/bid-result-v1-bid-product-info-dto.d.ts +2 -2
  457. package/dist/models/bid-result-v1-bid-product-info-dto.js +2 -2
  458. package/dist/models/bid-result-v1-participant-dto.d.ts +2 -2
  459. package/dist/models/bid-result-v1-participant-dto.js +2 -2
  460. package/dist/models/bid-result-v1-product-dto.d.ts +2 -2
  461. package/dist/models/bid-result-v1-product-dto.js +2 -2
  462. package/dist/models/bid-results-batch-request-dto.d.ts +17 -0
  463. package/dist/models/bid-results-batch-request-dto.js +15 -0
  464. package/dist/models/bid-results-batch-v1-request-dto.d.ts +2 -2
  465. package/dist/models/bid-results-batch-v1-request-dto.js +2 -2
  466. package/dist/models/bid-results-response-dto.d.ts +2 -2
  467. package/dist/models/bid-results-response-dto.js +2 -2
  468. package/dist/models/bid-results-v1-response-dto.d.ts +2 -2
  469. package/dist/models/bid-results-v1-response-dto.js +2 -2
  470. package/dist/models/bid-settlement-line-item-dto.d.ts +2 -2
  471. package/dist/models/bid-settlement-line-item-dto.js +2 -2
  472. package/dist/models/bid-settlement-participant-dto.d.ts +2 -2
  473. package/dist/models/bid-settlement-participant-dto.js +2 -2
  474. package/dist/models/bid-settlement-response-dto.d.ts +2 -2
  475. package/dist/models/bid-settlement-response-dto.js +2 -2
  476. package/dist/models/bid-statement-response-dto.d.ts +2 -2
  477. package/dist/models/bid-statement-response-dto.js +2 -2
  478. package/dist/models/bid-statement-v1-response-dto.d.ts +2 -2
  479. package/dist/models/bid-statement-v1-response-dto.js +2 -2
  480. package/dist/models/bid-status.d.ts +2 -2
  481. package/dist/models/bid-status.js +2 -2
  482. package/dist/models/bid-summary-dto.d.ts +39 -2
  483. package/dist/models/bid-summary-dto.js +2 -2
  484. package/dist/models/bid-updated-response-dto.d.ts +2 -2
  485. package/dist/models/bid-updated-response-dto.js +2 -2
  486. package/dist/models/cancel-bid-request-dto.d.ts +17 -0
  487. package/dist/models/cancel-bid-request-dto.js +15 -0
  488. package/dist/models/cancel-bid200-response.d.ts +21 -0
  489. package/dist/models/cancel-bid200-response.js +15 -0
  490. package/dist/models/card-payment-request-response-dto.d.ts +2 -2
  491. package/dist/models/card-payment-request-response-dto.js +2 -2
  492. package/dist/models/complete-acceptance-request-dto.d.ts +2 -2
  493. package/dist/models/complete-acceptance-request-dto.js +2 -2
  494. package/dist/models/complete-acceptance-v1-request-dto.d.ts +2 -2
  495. package/dist/models/complete-acceptance-v1-request-dto.js +2 -2
  496. package/dist/models/complete-acceptance200-response.d.ts +21 -0
  497. package/dist/models/complete-acceptance200-response.js +15 -0
  498. package/dist/models/complete-invoice200-response.d.ts +21 -0
  499. package/dist/models/complete-invoice200-response.js +15 -0
  500. package/dist/models/contract-document-item-dto.d.ts +2 -2
  501. package/dist/models/contract-document-item-dto.js +2 -2
  502. package/dist/models/contract-documents-regenerated-response-dto.d.ts +2 -2
  503. package/dist/models/contract-documents-regenerated-response-dto.js +2 -2
  504. package/dist/models/contract-restriction-confirm-input-dto.d.ts +2 -2
  505. package/dist/models/contract-restriction-confirm-input-dto.js +2 -2
  506. package/dist/models/create-bid-request-dto.d.ts +2 -2
  507. package/dist/models/create-bid-request-dto.js +2 -2
  508. package/dist/models/create-bid-v1-request-dto.d.ts +2 -2
  509. package/dist/models/create-bid-v1-request-dto.js +2 -2
  510. package/dist/models/create-card-payment-request-dto.d.ts +2 -2
  511. package/dist/models/create-card-payment-request-dto.js +2 -2
  512. package/dist/models/create-card-payment200-response.d.ts +21 -0
  513. package/dist/models/create-card-payment200-response.js +15 -0
  514. package/dist/models/create-external-contract-documents-request-dto.d.ts +2 -2
  515. package/dist/models/create-external-contract-documents-request-dto.js +2 -2
  516. package/dist/models/create-external-contract-documents-response-dto.d.ts +2 -2
  517. package/dist/models/create-external-contract-documents-response-dto.js +2 -2
  518. package/dist/models/create-webhook-endpoint-request-dto.d.ts +22 -0
  519. package/dist/models/create-webhook-endpoint-request-dto.js +15 -0
  520. package/dist/models/create-webhook-endpoint201-response.d.ts +21 -0
  521. package/dist/models/create-webhook-endpoint201-response.js +15 -0
  522. package/dist/models/external-contract-document-item-dto.d.ts +2 -2
  523. package/dist/models/external-contract-document-item-dto.js +2 -2
  524. package/dist/models/external-contract-documents-response-dto.d.ts +2 -2
  525. package/dist/models/external-contract-documents-response-dto.js +2 -2
  526. package/dist/models/external-contract-item-dto.d.ts +2 -2
  527. package/dist/models/external-contract-item-dto.js +2 -2
  528. package/dist/models/external-contract-snapshot-dto.d.ts +2 -2
  529. package/dist/models/external-contract-snapshot-dto.js +2 -2
  530. package/dist/models/external-document-inputs-dto.d.ts +2 -2
  531. package/dist/models/external-document-inputs-dto.js +2 -2
  532. package/dist/models/file-meta-response-dto.d.ts +33 -0
  533. package/dist/models/file-meta-response-dto.js +15 -0
  534. package/dist/models/file-uploaded-response-dto.d.ts +2 -2
  535. package/dist/models/file-uploaded-response-dto.js +2 -2
  536. package/dist/models/file-uploaded-v1-response-dto.d.ts +2 -2
  537. package/dist/models/file-uploaded-v1-response-dto.js +2 -2
  538. package/dist/models/generated-external-contract-document-dto.d.ts +2 -2
  539. package/dist/models/generated-external-contract-document-dto.js +2 -2
  540. package/dist/models/get-bid-acceptance200-response.d.ts +21 -0
  541. package/dist/models/get-bid-acceptance200-response.js +15 -0
  542. package/dist/models/get-bid-results200-response.d.ts +21 -0
  543. package/dist/models/get-bid-results200-response.js +15 -0
  544. package/dist/models/get-bid-settlement200-response.d.ts +21 -0
  545. package/dist/models/get-bid-settlement200-response.js +15 -0
  546. package/dist/models/get-bid-statement200-response.d.ts +21 -0
  547. package/dist/models/get-bid-statement200-response.js +15 -0
  548. package/dist/models/get-bid200-response.d.ts +21 -0
  549. package/dist/models/get-bid200-response.js +15 -0
  550. package/dist/models/get-file-meta200-response.d.ts +21 -0
  551. package/dist/models/get-file-meta200-response.js +15 -0
  552. package/dist/models/get-supplier-card-payable-v2200-response.d.ts +21 -0
  553. package/dist/models/get-supplier-card-payable-v2200-response.js +15 -0
  554. package/dist/models/get-webhook-endpoint200-response.d.ts +21 -0
  555. package/dist/models/get-webhook-endpoint200-response.js +15 -0
  556. package/dist/models/health-controller-check200-response.d.ts +21 -0
  557. package/dist/models/health-controller-check200-response.js +15 -0
  558. package/dist/models/health-response-dto.d.ts +2 -2
  559. package/dist/models/health-response-dto.js +2 -2
  560. package/dist/models/hierarchical-region-dto.d.ts +2 -2
  561. package/dist/models/hierarchical-region-dto.js +2 -2
  562. package/dist/models/hierarchical-region-v1-dto.d.ts +2 -2
  563. package/dist/models/hierarchical-region-v1-dto.js +2 -2
  564. package/dist/models/index.d.ts +59 -8
  565. package/dist/models/index.js +59 -8
  566. package/dist/models/introspect-request-dto.d.ts +46 -0
  567. package/dist/models/introspect-request-dto.js +23 -0
  568. package/dist/models/introspection-response-dto.d.ts +45 -0
  569. package/dist/models/introspection-response-dto.js +15 -0
  570. package/dist/models/invalid-param-dto.d.ts +2 -2
  571. package/dist/models/invalid-param-dto.js +2 -2
  572. package/dist/models/invoice-completed-response-dto.d.ts +2 -2
  573. package/dist/models/invoice-completed-response-dto.js +2 -2
  574. package/dist/models/list-bid-contract-documents200-response.d.ts +21 -0
  575. package/dist/models/list-bid-contract-documents200-response.js +15 -0
  576. package/dist/models/list-bid-participants200-response.d.ts +21 -0
  577. package/dist/models/list-bid-participants200-response.js +15 -0
  578. package/dist/models/list-bid-results200-response.d.ts +21 -0
  579. package/dist/models/list-bid-results200-response.js +15 -0
  580. package/dist/models/list-bids-response-dto.d.ts +2 -2
  581. package/dist/models/list-bids-response-dto.js +2 -2
  582. package/dist/models/list-bids200-response.d.ts +21 -0
  583. package/dist/models/list-bids200-response.js +15 -0
  584. package/dist/models/list-products200-response.d.ts +21 -0
  585. package/dist/models/list-products200-response.js +15 -0
  586. package/dist/models/list-webhook-deliveries-response-dto.d.ts +22 -0
  587. package/dist/models/list-webhook-deliveries-response-dto.js +15 -0
  588. package/dist/models/list-webhook-deliveries200-response.d.ts +21 -0
  589. package/dist/models/list-webhook-deliveries200-response.js +15 -0
  590. package/dist/models/list-webhook-endpoints200-response.d.ts +21 -0
  591. package/dist/models/list-webhook-endpoints200-response.js +15 -0
  592. package/dist/models/mark-bid-failed-request-dto.d.ts +2 -2
  593. package/dist/models/mark-bid-failed-request-dto.js +2 -2
  594. package/dist/models/mark-bid-failed-v1-request-dto.d.ts +2 -2
  595. package/dist/models/mark-bid-failed-v1-request-dto.js +2 -2
  596. package/dist/models/mark-bid-failed201-response.d.ts +21 -0
  597. package/dist/models/mark-bid-failed201-response.js +15 -0
  598. package/dist/models/negotiation-score-v1-dto.d.ts +2 -2
  599. package/dist/models/negotiation-score-v1-dto.js +2 -2
  600. package/dist/models/negotiation-scored-response-dto.d.ts +2 -2
  601. package/dist/models/negotiation-scored-response-dto.js +2 -2
  602. package/dist/models/oauth-error-response-dto.d.ts +2 -2
  603. package/dist/models/oauth-error-response-dto.js +2 -2
  604. package/dist/models/partner-webhook-delivery-status.d.ts +18 -0
  605. package/dist/models/partner-webhook-delivery-status.js +22 -0
  606. package/dist/models/partner-webhook-endpoint-status.d.ts +19 -0
  607. package/dist/models/partner-webhook-endpoint-status.js +23 -0
  608. package/dist/models/partner-webhook-event-type.d.ts +22 -0
  609. package/dist/models/partner-webhook-event-type.js +26 -0
  610. package/dist/models/preconditions-dto.d.ts +2 -2
  611. package/dist/models/preconditions-dto.js +2 -2
  612. package/dist/models/preconditions-v1-dto.d.ts +2 -2
  613. package/dist/models/preconditions-v1-dto.js +2 -2
  614. package/dist/models/problem-details-dto.d.ts +7 -3
  615. package/dist/models/problem-details-dto.js +2 -2
  616. package/dist/models/product-receipt-response-dto.d.ts +17 -0
  617. package/dist/models/product-receipt-response-dto.js +15 -0
  618. package/dist/models/product-receipt-v1-response-dto.d.ts +2 -2
  619. package/dist/models/product-receipt-v1-response-dto.js +2 -2
  620. package/dist/models/product-response-dto.d.ts +77 -0
  621. package/dist/models/product-response-dto.js +15 -0
  622. package/dist/models/product-v1-response-dto.d.ts +2 -2
  623. package/dist/models/product-v1-response-dto.js +2 -2
  624. package/dist/models/protected-resource-metadata-dto.d.ts +2 -2
  625. package/dist/models/protected-resource-metadata-dto.js +2 -2
  626. package/dist/models/publish-bid200-response.d.ts +21 -0
  627. package/dist/models/publish-bid200-response.js +15 -0
  628. package/dist/models/regenerate-contract-documents201-response.d.ts +21 -0
  629. package/dist/models/regenerate-contract-documents201-response.js +15 -0
  630. package/dist/models/register-award-request-dto.d.ts +2 -2
  631. package/dist/models/register-award-request-dto.js +2 -2
  632. package/dist/models/register-award-v1-request-dto.d.ts +2 -2
  633. package/dist/models/register-award-v1-request-dto.js +2 -2
  634. package/dist/models/register-award201-response.d.ts +21 -0
  635. package/dist/models/register-award201-response.js +15 -0
  636. package/dist/models/register-bid201-response.d.ts +21 -0
  637. package/dist/models/register-bid201-response.js +15 -0
  638. package/dist/models/register-semo-contract-request-dto.d.ts +2 -2
  639. package/dist/models/register-semo-contract-request-dto.js +2 -2
  640. package/dist/models/request-split-invoice-v1-request-dto.d.ts +2 -2
  641. package/dist/models/request-split-invoice-v1-request-dto.js +2 -2
  642. package/dist/models/retiree-roster-input-dto.d.ts +2 -2
  643. package/dist/models/retiree-roster-input-dto.js +2 -2
  644. package/dist/models/retiree-roster-row-dto.d.ts +2 -2
  645. package/dist/models/retiree-roster-row-dto.js +2 -2
  646. package/dist/models/revert-award-request-dto.d.ts +17 -0
  647. package/dist/models/revert-award-request-dto.js +15 -0
  648. package/dist/models/revert-award200-response.d.ts +21 -0
  649. package/dist/models/revert-award200-response.js +15 -0
  650. package/dist/models/revoke-request-dto.d.ts +2 -2
  651. package/dist/models/revoke-request-dto.js +2 -2
  652. package/dist/models/semo-contract-registered-response-dto.d.ts +2 -2
  653. package/dist/models/semo-contract-registered-response-dto.js +2 -2
  654. package/dist/models/semo-contract-taxinvoice-status-response-dto.d.ts +2 -2
  655. package/dist/models/semo-contract-taxinvoice-status-response-dto.js +2 -2
  656. package/dist/models/send-webhook-test-event200-response.d.ts +21 -0
  657. package/dist/models/send-webhook-test-event200-response.js +15 -0
  658. package/dist/models/split-invoice-v1-response-dto.d.ts +2 -2
  659. package/dist/models/split-invoice-v1-response-dto.js +2 -2
  660. package/dist/models/statement-document-dto.d.ts +2 -2
  661. package/dist/models/statement-document-dto.js +2 -2
  662. package/dist/models/statement-product-dto.d.ts +2 -2
  663. package/dist/models/statement-product-dto.js +2 -2
  664. package/dist/models/statement-v1-document-dto.d.ts +2 -2
  665. package/dist/models/statement-v1-document-dto.js +2 -2
  666. package/dist/models/statement-v1-product-dto.d.ts +2 -2
  667. package/dist/models/statement-v1-product-dto.js +2 -2
  668. package/dist/models/submit-negotiation-scores-v1-request-dto.d.ts +2 -2
  669. package/dist/models/submit-negotiation-scores-v1-request-dto.js +2 -2
  670. package/dist/models/supplier-card-payable-response-dto.d.ts +2 -2
  671. package/dist/models/supplier-card-payable-response-dto.js +2 -2
  672. package/dist/models/supplier-tax-type.d.ts +2 -2
  673. package/dist/models/supplier-tax-type.js +2 -2
  674. package/dist/models/token-request-dto.d.ts +2 -2
  675. package/dist/models/token-request-dto.js +2 -2
  676. package/dist/models/token-response-dto.d.ts +2 -2
  677. package/dist/models/token-response-dto.js +2 -2
  678. package/dist/models/update-bid-request-dto.d.ts +2 -2
  679. package/dist/models/update-bid-request-dto.js +2 -2
  680. package/dist/models/update-bid200-response.d.ts +21 -0
  681. package/dist/models/update-bid200-response.js +15 -0
  682. package/dist/models/update-webhook-endpoint-request-dto.d.ts +27 -0
  683. package/dist/models/update-webhook-endpoint-request-dto.js +15 -0
  684. package/dist/models/upload-file-request-dto.d.ts +2 -2
  685. package/dist/models/upload-file-request-dto.js +2 -2
  686. package/dist/models/upload-file-v1-request-dto.d.ts +2 -2
  687. package/dist/models/upload-file-v1-request-dto.js +2 -2
  688. package/dist/models/upload-file201-response.d.ts +21 -0
  689. package/dist/models/upload-file201-response.js +15 -0
  690. package/dist/models/webhook-delivery-dto.d.ts +73 -0
  691. package/dist/models/webhook-delivery-dto.js +24 -0
  692. package/dist/models/webhook-endpoint-dto.d.ts +55 -0
  693. package/dist/models/webhook-endpoint-dto.js +15 -0
  694. package/dist/models/webhook-endpoint-with-secret-dto.d.ts +59 -0
  695. package/dist/models/webhook-endpoint-with-secret-dto.js +15 -0
  696. package/dist/models/webhook-test-result-dto.d.ts +25 -0
  697. package/dist/models/webhook-test-result-dto.js +15 -0
  698. package/docs/AcceptanceStatusResponseDto.md +28 -0
  699. package/docs/AcknowledgeProductReceipt200Response.md +22 -0
  700. package/docs/AcknowledgeProductsRequestDto.md +20 -0
  701. package/docs/AuthorizationServerMetadataDto.md +2 -0
  702. package/docs/AwardRevertedV2ResponseDto.md +22 -0
  703. package/docs/BidCancelledResponseDto.md +22 -0
  704. package/docs/BidContactDto.md +24 -0
  705. package/docs/BidContactsDto.md +22 -0
  706. package/docs/BidContractDocumentDto.md +38 -0
  707. package/docs/BidDeliveryTermsDto.md +28 -0
  708. package/docs/BidPaymentTermsDto.md +22 -0
  709. package/docs/BidProductDto.md +30 -0
  710. package/docs/BidPublicStatus.md +0 -1
  711. package/docs/{IssueTaxInvoiceRequestDto.md β†’ BidResultsBatchRequestDto.md} +5 -5
  712. package/docs/BidSummaryDto.md +16 -0
  713. package/docs/CancelBid200Response.md +22 -0
  714. package/docs/CancelBidRequestDto.md +20 -0
  715. package/docs/CompleteAcceptance200Response.md +22 -0
  716. package/docs/CompleteInvoice200Response.md +22 -0
  717. package/docs/CreateCardPayment200Response.md +22 -0
  718. package/docs/CreateWebhookEndpoint201Response.md +22 -0
  719. package/docs/CreateWebhookEndpointRequestDto.md +22 -0
  720. package/docs/FileMetaResponseDto.md +28 -0
  721. package/docs/GetBid200Response.md +22 -0
  722. package/docs/GetBidAcceptance200Response.md +22 -0
  723. package/docs/GetBidResults200Response.md +22 -0
  724. package/docs/GetBidSettlement200Response.md +22 -0
  725. package/docs/GetBidStatement200Response.md +22 -0
  726. package/docs/GetFileMeta200Response.md +22 -0
  727. package/docs/GetSupplierCardPayableV2200Response.md +22 -0
  728. package/docs/GetWebhookEndpoint200Response.md +22 -0
  729. package/docs/HealthControllerCheck200Response.md +22 -0
  730. package/docs/IntrospectRequestDto.md +30 -0
  731. package/docs/IntrospectionResponseDto.md +34 -0
  732. package/docs/ListBidContractDocuments200Response.md +22 -0
  733. package/docs/ListBidParticipants200Response.md +22 -0
  734. package/docs/ListBidResults200Response.md +22 -0
  735. package/docs/ListBids200Response.md +22 -0
  736. package/docs/ListProducts200Response.md +22 -0
  737. package/docs/ListWebhookDeliveries200Response.md +22 -0
  738. package/docs/ListWebhookDeliveriesResponseDto.md +22 -0
  739. package/docs/ListWebhookEndpoints200Response.md +22 -0
  740. package/docs/MarkBidFailed201Response.md +22 -0
  741. package/docs/OauthApi.md +54 -0
  742. package/docs/PartnerV1Api.md +12 -12
  743. package/docs/PartnerV2Api.md +1239 -225
  744. package/docs/PartnerWebhookDeliveryStatus.md +14 -0
  745. package/docs/PartnerWebhookEndpointStatus.md +11 -0
  746. package/docs/PartnerWebhookEventType.md +17 -0
  747. package/docs/ProblemDetailsDto.md +3 -1
  748. package/docs/ProductReceiptResponseDto.md +20 -0
  749. package/docs/ProductResponseDto.md +50 -0
  750. package/docs/PublishBid200Response.md +22 -0
  751. package/docs/RegenerateContractDocuments201Response.md +22 -0
  752. package/docs/RegisterAward201Response.md +22 -0
  753. package/docs/RegisterBid201Response.md +22 -0
  754. package/docs/RevertAward200Response.md +22 -0
  755. package/docs/RevertAwardRequestDto.md +20 -0
  756. package/docs/SendWebhookTestEvent200Response.md +22 -0
  757. package/docs/UpdateBid200Response.md +22 -0
  758. package/docs/UpdateWebhookEndpointRequestDto.md +24 -0
  759. package/docs/UploadFile201Response.md +22 -0
  760. package/docs/WebhookDeliveryDto.md +42 -0
  761. package/docs/WebhookEndpointDto.md +38 -0
  762. package/docs/WebhookEndpointWithSecretDto.md +40 -0
  763. package/docs/WebhookTestResultDto.md +24 -0
  764. package/index.ts +2 -2
  765. package/models/acceptance-result-response-dto.ts +2 -2
  766. package/models/acceptance-result-v1-response-dto.ts +2 -2
  767. package/models/acceptance-status-response-dto.ts +39 -0
  768. package/models/acknowledge-product-receipt200-response.ts +27 -0
  769. package/models/acknowledge-products-request-dto.ts +23 -0
  770. package/models/acknowledge-products-v1-request-dto.ts +2 -2
  771. package/models/authorization-server-metadata-dto.ts +6 -2
  772. package/models/award-method-public.ts +2 -2
  773. package/models/award-registered-response-dto.ts +2 -2
  774. package/models/award-registered-v2-response-dto.ts +2 -2
  775. package/models/award-reverted-v2-response-dto.ts +34 -0
  776. package/models/bid-attachment-v1-dto.ts +2 -2
  777. package/models/bid-bond-dto.ts +2 -2
  778. package/models/bid-bond-v1-dto.ts +2 -2
  779. package/models/bid-cancelled-response-dto.ts +34 -0
  780. package/models/bid-contact-dto.ts +31 -0
  781. package/models/bid-contacts-dto.ts +30 -0
  782. package/models/bid-contract-document-dto.ts +69 -0
  783. package/models/bid-contract-documents-batch-v1-request-dto.ts +2 -2
  784. package/models/bid-contract-documents-v1-response-dto.ts +2 -2
  785. package/models/bid-created-response-dto.ts +2 -2
  786. package/models/bid-delivery-terms-dto.ts +39 -0
  787. package/models/bid-detail-response-dto.ts +2 -2
  788. package/models/bid-document-dto.ts +2 -2
  789. package/models/bid-document-v1-dto.ts +2 -2
  790. package/models/bid-failed-response-dto.ts +2 -2
  791. package/models/bid-failed-v2-response-dto.ts +2 -2
  792. package/models/bid-failure-reason.ts +2 -2
  793. package/models/bid-item-dto.ts +2 -2
  794. package/models/bid-item-v1-dto.ts +2 -2
  795. package/models/bid-lifecycle-dto.ts +2 -2
  796. package/models/bid-manager-dto.ts +2 -2
  797. package/models/bid-manager-v1-dto.ts +2 -2
  798. package/models/bid-participant-summary-dto.ts +2 -2
  799. package/models/bid-payment-terms-dto.ts +27 -0
  800. package/models/bid-product-dto.ts +43 -0
  801. package/models/bid-public-status.ts +2 -5
  802. package/models/bid-published-response-dto.ts +2 -2
  803. package/models/bid-registered-response-dto.ts +2 -2
  804. package/models/bid-result-participant-attachment-dto.ts +2 -2
  805. package/models/bid-result-participant-dto.ts +2 -2
  806. package/models/bid-result-v1-attachment-dto.ts +2 -2
  807. package/models/bid-result-v1-bid-product-info-dto.ts +2 -2
  808. package/models/bid-result-v1-participant-dto.ts +2 -2
  809. package/models/bid-result-v1-product-dto.ts +2 -2
  810. package/models/bid-results-batch-request-dto.ts +23 -0
  811. package/models/bid-results-batch-v1-request-dto.ts +2 -2
  812. package/models/bid-results-response-dto.ts +2 -2
  813. package/models/bid-results-v1-response-dto.ts +2 -2
  814. package/models/bid-settlement-line-item-dto.ts +2 -2
  815. package/models/bid-settlement-participant-dto.ts +2 -2
  816. package/models/bid-settlement-response-dto.ts +2 -2
  817. package/models/bid-statement-response-dto.ts +2 -2
  818. package/models/bid-statement-v1-response-dto.ts +2 -2
  819. package/models/bid-status.ts +2 -2
  820. package/models/bid-summary-dto.ts +49 -2
  821. package/models/bid-updated-response-dto.ts +2 -2
  822. package/models/cancel-bid-request-dto.ts +23 -0
  823. package/models/cancel-bid200-response.ts +27 -0
  824. package/models/card-payment-request-response-dto.ts +2 -2
  825. package/models/complete-acceptance-request-dto.ts +2 -2
  826. package/models/complete-acceptance-v1-request-dto.ts +2 -2
  827. package/models/complete-acceptance200-response.ts +27 -0
  828. package/models/complete-invoice200-response.ts +27 -0
  829. package/models/contract-document-item-dto.ts +2 -2
  830. package/models/contract-documents-regenerated-response-dto.ts +2 -2
  831. package/models/contract-restriction-confirm-input-dto.ts +2 -2
  832. package/models/create-bid-request-dto.ts +2 -2
  833. package/models/create-bid-v1-request-dto.ts +2 -2
  834. package/models/create-card-payment-request-dto.ts +2 -2
  835. package/models/create-card-payment200-response.ts +27 -0
  836. package/models/create-external-contract-documents-request-dto.ts +2 -2
  837. package/models/create-external-contract-documents-response-dto.ts +2 -2
  838. package/models/create-webhook-endpoint-request-dto.ts +30 -0
  839. package/models/create-webhook-endpoint201-response.ts +27 -0
  840. package/models/external-contract-document-item-dto.ts +2 -2
  841. package/models/external-contract-documents-response-dto.ts +2 -2
  842. package/models/external-contract-item-dto.ts +2 -2
  843. package/models/external-contract-snapshot-dto.ts +2 -2
  844. package/models/external-document-inputs-dto.ts +2 -2
  845. package/models/file-meta-response-dto.ts +39 -0
  846. package/models/file-uploaded-response-dto.ts +2 -2
  847. package/models/file-uploaded-v1-response-dto.ts +2 -2
  848. package/models/generated-external-contract-document-dto.ts +2 -2
  849. package/models/get-bid-acceptance200-response.ts +27 -0
  850. package/models/get-bid-results200-response.ts +27 -0
  851. package/models/get-bid-settlement200-response.ts +27 -0
  852. package/models/get-bid-statement200-response.ts +27 -0
  853. package/models/get-bid200-response.ts +27 -0
  854. package/models/get-file-meta200-response.ts +27 -0
  855. package/models/get-supplier-card-payable-v2200-response.ts +27 -0
  856. package/models/get-webhook-endpoint200-response.ts +27 -0
  857. package/models/health-controller-check200-response.ts +27 -0
  858. package/models/health-response-dto.ts +2 -2
  859. package/models/hierarchical-region-dto.ts +2 -2
  860. package/models/hierarchical-region-v1-dto.ts +2 -2
  861. package/models/index.ts +59 -8
  862. package/models/introspect-request-dto.ts +56 -0
  863. package/models/introspection-response-dto.ts +51 -0
  864. package/models/invalid-param-dto.ts +2 -2
  865. package/models/invoice-completed-response-dto.ts +2 -2
  866. package/models/list-bid-contract-documents200-response.ts +27 -0
  867. package/models/list-bid-participants200-response.ts +27 -0
  868. package/models/list-bid-results200-response.ts +27 -0
  869. package/models/list-bids-response-dto.ts +2 -2
  870. package/models/list-bids200-response.ts +27 -0
  871. package/models/list-products200-response.ts +27 -0
  872. package/models/list-webhook-deliveries-response-dto.ts +30 -0
  873. package/models/list-webhook-deliveries200-response.ts +27 -0
  874. package/models/list-webhook-endpoints200-response.ts +27 -0
  875. package/models/mark-bid-failed-request-dto.ts +2 -2
  876. package/models/mark-bid-failed-v1-request-dto.ts +2 -2
  877. package/models/mark-bid-failed201-response.ts +27 -0
  878. package/models/negotiation-score-v1-dto.ts +2 -2
  879. package/models/negotiation-scored-response-dto.ts +2 -2
  880. package/models/oauth-error-response-dto.ts +2 -2
  881. package/models/partner-webhook-delivery-status.ts +28 -0
  882. package/models/partner-webhook-endpoint-status.ts +29 -0
  883. package/models/partner-webhook-event-type.ts +32 -0
  884. package/models/preconditions-dto.ts +2 -2
  885. package/models/preconditions-v1-dto.ts +2 -2
  886. package/models/problem-details-dto.ts +7 -3
  887. package/models/product-receipt-response-dto.ts +23 -0
  888. package/models/product-receipt-v1-response-dto.ts +2 -2
  889. package/models/product-response-dto.ts +83 -0
  890. package/models/product-v1-response-dto.ts +2 -2
  891. package/models/protected-resource-metadata-dto.ts +2 -2
  892. package/models/publish-bid200-response.ts +27 -0
  893. package/models/regenerate-contract-documents201-response.ts +27 -0
  894. package/models/register-award-request-dto.ts +2 -2
  895. package/models/register-award-v1-request-dto.ts +2 -2
  896. package/models/register-award201-response.ts +27 -0
  897. package/models/register-bid201-response.ts +27 -0
  898. package/models/register-semo-contract-request-dto.ts +2 -2
  899. package/models/request-split-invoice-v1-request-dto.ts +2 -2
  900. package/models/retiree-roster-input-dto.ts +2 -2
  901. package/models/retiree-roster-row-dto.ts +2 -2
  902. package/models/revert-award-request-dto.ts +23 -0
  903. package/models/revert-award200-response.ts +27 -0
  904. package/models/revoke-request-dto.ts +2 -2
  905. package/models/semo-contract-registered-response-dto.ts +2 -2
  906. package/models/semo-contract-taxinvoice-status-response-dto.ts +2 -2
  907. package/models/send-webhook-test-event200-response.ts +27 -0
  908. package/models/split-invoice-v1-response-dto.ts +2 -2
  909. package/models/statement-document-dto.ts +2 -2
  910. package/models/statement-product-dto.ts +2 -2
  911. package/models/statement-v1-document-dto.ts +2 -2
  912. package/models/statement-v1-product-dto.ts +2 -2
  913. package/models/submit-negotiation-scores-v1-request-dto.ts +2 -2
  914. package/models/supplier-card-payable-response-dto.ts +2 -2
  915. package/models/supplier-tax-type.ts +2 -2
  916. package/models/token-request-dto.ts +2 -2
  917. package/models/token-response-dto.ts +2 -2
  918. package/models/update-bid-request-dto.ts +2 -2
  919. package/models/update-bid200-response.ts +27 -0
  920. package/models/update-webhook-endpoint-request-dto.ts +39 -0
  921. package/models/upload-file-request-dto.ts +2 -2
  922. package/models/upload-file-v1-request-dto.ts +2 -2
  923. package/models/upload-file201-response.ts +27 -0
  924. package/models/webhook-delivery-dto.ts +82 -0
  925. package/models/webhook-endpoint-dto.ts +67 -0
  926. package/models/webhook-endpoint-with-secret-dto.ts +71 -0
  927. package/models/webhook-test-result-dto.ts +31 -0
  928. package/package.json +1 -1
  929. package/dist/esm/models/close-sandbox-bid-response-dto.d.ts +0 -34
  930. package/dist/esm/models/close-sandbox-bid-response-dto.js +0 -21
  931. package/dist/esm/models/embed-launch-request-dto.d.ts +0 -33
  932. package/dist/esm/models/embed-launch-request-dto.js +0 -20
  933. package/dist/esm/models/embed-launch-response-dto.d.ts +0 -21
  934. package/dist/esm/models/embed-launch-response-dto.js +0 -14
  935. package/dist/esm/models/issue-tax-invoice-request-dto.d.ts +0 -17
  936. package/dist/esm/models/issue-tax-invoice-request-dto.js +0 -14
  937. package/dist/esm/models/negotiation-score-dto.d.ts +0 -25
  938. package/dist/esm/models/negotiation-score-dto.js +0 -14
  939. package/dist/esm/models/negotiation-scored-v2-response-dto.d.ts +0 -29
  940. package/dist/esm/models/negotiation-scored-v2-response-dto.js +0 -16
  941. package/dist/esm/models/submit-negotiation-scores-request-dto.d.ts +0 -22
  942. package/dist/esm/models/submit-negotiation-scores-request-dto.js +0 -14
  943. package/dist/esm/models/tax-invoice-issued-response-dto.d.ts +0 -33
  944. package/dist/esm/models/tax-invoice-issued-response-dto.js +0 -14
  945. package/dist/models/close-sandbox-bid-response-dto.d.ts +0 -34
  946. package/dist/models/close-sandbox-bid-response-dto.js +0 -24
  947. package/dist/models/embed-launch-request-dto.d.ts +0 -33
  948. package/dist/models/embed-launch-request-dto.js +0 -23
  949. package/dist/models/embed-launch-response-dto.d.ts +0 -21
  950. package/dist/models/embed-launch-response-dto.js +0 -15
  951. package/dist/models/issue-tax-invoice-request-dto.d.ts +0 -17
  952. package/dist/models/issue-tax-invoice-request-dto.js +0 -15
  953. package/dist/models/negotiation-score-dto.d.ts +0 -25
  954. package/dist/models/negotiation-score-dto.js +0 -15
  955. package/dist/models/negotiation-scored-v2-response-dto.d.ts +0 -29
  956. package/dist/models/negotiation-scored-v2-response-dto.js +0 -19
  957. package/dist/models/submit-negotiation-scores-request-dto.d.ts +0 -22
  958. package/dist/models/submit-negotiation-scores-request-dto.js +0 -15
  959. package/dist/models/tax-invoice-issued-response-dto.d.ts +0 -33
  960. package/dist/models/tax-invoice-issued-response-dto.js +0 -15
  961. package/docs/CloseSandboxBidResponseDto.md +0 -24
  962. package/docs/EmbedLaunchRequestDto.md +0 -24
  963. package/docs/EmbedLaunchResponseDto.md +0 -22
  964. package/docs/NegotiationScoreDto.md +0 -24
  965. package/docs/NegotiationScoredV2ResponseDto.md +0 -24
  966. package/docs/SubmitNegotiationScoresRequestDto.md +0 -22
  967. package/docs/TaxInvoiceIssuedResponseDto.md +0 -28
  968. package/models/close-sandbox-bid-response-dto.ts +0 -43
  969. package/models/embed-launch-request-dto.ts +0 -42
  970. package/models/embed-launch-response-dto.ts +0 -27
  971. package/models/issue-tax-invoice-request-dto.ts +0 -23
  972. package/models/negotiation-score-dto.ts +0 -31
  973. package/models/negotiation-scored-v2-response-dto.ts +0 -38
  974. package/models/submit-negotiation-scores-request-dto.ts +0 -30
  975. package/models/tax-invoice-issued-response-dto.ts +0 -39
@@ -2,9 +2,9 @@
2
2
  /* eslint-disable */
3
3
  /**
4
4
  * CMARKET V6 Partner API
5
- * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 버전별 인증 - **_/v2** β€” OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token` μ—μ„œ 토큰 λ°œκΈ‰ ν›„ `Authorization: Bearer <token>` 헀더. - **_/v1** β€” V5 μΆ©μ‹€ platform-auth. `X-Platform-Id`(cate_set.api_id) / `X-Platform-Secret`(cate_set.api_secret, MD5-hex) ν—€λ”λ‘œ 전솑. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403` 을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € ꡬ뢄할 것. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠλŠ”λ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403 이닀. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λœλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • 발주처 λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•  것. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`. μ†ŒλΉ„μžλŠ” **HTTP status + `type` URI** 둜 λΆ„κΈ°ν•œλ‹€. - `retryable`(boolean): μžλ™ μž¬μ‹œλ„ μ•ˆμ „ μ—¬λΆ€. `true`(429Β·5xx transient)λ©΄ backoff ν›„ μž¬μ‹œλ„, `false`λ©΄ μš”μ²­μ„ 고쳐야 ν•œλ‹€. - `correlationId`: μš”μ²­ 좔적 id. `X-Correlation-Id` 응닡 헀더와 동일 β€” 문의 μ‹œ 이 값을 첨뢀. - `invalid-params`: 검증 μ‹€νŒ¨(400 `…/validation-failed`) μ‹œ μœ„λ°˜ ν•„λ“œ 경둜 λͺ©λ‘(RFC 9457 ν™•μž₯, κ°’ μ—†μŒ). `type` 은 `https://problems.cmarket.io/partner/<slug>` ν˜•νƒœμ˜ **μ•ˆμ • μ‹λ³„μž**λ‹€. RFC 9457 Β§3.1.1 이 ν—ˆμš©ν•˜λŠ” λŒ€λ‘œ 이 URI λŠ” **μ—­μ°Έμ‘°(dereference)λ˜μ§€ μ•ŠλŠ”λ‹€** β€” λΈŒλΌμš°μ €λ‘œ μ—΄μ§€ 말고 λ¬Έμžμ—΄ λΉ„κ΅λ‘œλ§Œ μ“Έ 것. slug λͺ©λ‘κ³Ό μ˜λ―ΈλŠ” 각 μ—”λ“œν¬μΈνŠΈμ˜ 응닡 μ„€λͺ…에 status λ³„λ‘œ λͺ…μ‹œλΌ μžˆλ‹€. μƒˆ slug 은 좔가될 수 μžˆμœΌλ―€λ‘œ, λͺ¨λ₯΄λŠ” slug 을 λ§Œλ‚˜λ©΄ `type` 이 μ•„λ‹ˆλΌ **HTTP status 둜 폴백**ν•˜λ„λ‘ κ΅¬ν˜„ν•  것. ### λ©±λ“±μ„± μœ„λ°˜: 409 와 422 의 차이 - `409` `…/idempotency-key-conflict` β€” 같은 ν‚€μ˜ **원 μš”μ²­μ΄ 아직 처리 쀑**이닀. μž μ‹œ λ’€ 같은 ν‚€λ‘œ λ‹€μ‹œ λΆ€λ₯΄λ©΄ κ·Έ κ²°κ³Όλ₯Ό λ°›λŠ”λ‹€. - `422` `…/idempotency-key-reused` β€” 같은 ν‚€λ₯Ό **λ‹€λ₯Έ body** 둜 λ³΄λƒˆλ‹€. μž¬μ‹œλ„ν•΄λ„ μ˜μ›νžˆ 같은 μ‹€νŒ¨λ‹€. μƒˆ ν‚€λ₯Ό μ“°κ±°λ‚˜ body λ₯Ό 되돌릴 것. ## 레이트 리밋 μ „μ—­ **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` κ°€ μ‹€λ¦°λ‹€. ## 버전 수λͺ…(deprecation/sunset) - **_/v1** 은 λ ˆκ±°μ‹œ V5 cutover μ™„λ£Œ μ‹œμ κΉŒμ§€ μœ μ§€λ˜λŠ” μΆ©μ‹€ ν”„λ‘μ‹œλ‹€. 폐지 일정이 μ •ν•΄μ§€λ©΄ /v1 응닡에 `Deprecation`(RFC 9745, `@<epoch초>`) κ³Ό `Sunset`(RFC 8594, HTTP-date) 헀더가 μ‹€λ¦°λ‹€ β€” κ·Έ μ „κΉŒμ§€λŠ” 두 헀더가 λ‚˜κ°€μ§€ μ•ŠλŠ”λ‹€. - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` ν—€λ”λ‘œ ν†΅μ§€ν•œλ‹€. μ†ŒλΉ„μžλŠ” 이 헀더λ₯Ό λͺ¨λ‹ˆν„°λ§ν•  것.
5
+ * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 버전별 인증 - **_/v2** β€” OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token` μ—μ„œ 토큰 λ°œκΈ‰ ν›„ `Authorization: Bearer <token>` 헀더. - **_/v1** β€” V5 μΆ©μ‹€ platform-auth. `X-Platform-Id`(cate_set.api_id) / `X-Platform-Secret`(cate_set.api_secret, MD5-hex) ν—€λ”λ‘œ 전솑. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403` 을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € ꡬ뢄할 것. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠλŠ”λ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403 이닀. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λœλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • 발주처 λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•  것. ## 성곡 응닡 λ΄‰νˆ¬ `/v2` 의 λͺ¨λ“  2xx 본문은 `{ \"data\": … }` μž…λ‹ˆλ‹€. 단일 λ¦¬μ†ŒμŠ€λ“  λͺ©λ‘μ΄λ“  κ°™μŠ΅λ‹ˆλ‹€. λͺ©λ‘μ²˜λŸΌ λΆ€κ°€ 정보가 μžˆλŠ” 응닡은 `meta` κ°€ ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€ β€” 예: `{ \"data\": [...], \"meta\": { \"nextCursor\": \"…\" } }`. λΆ€κ°€ 정보가 μ—†μœΌλ©΄ `meta` ν‚€λŠ” μ•„μ˜ˆ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€(빈 객체λ₯Ό μ‹£μ§€ μ•ŠμŠ΅λ‹ˆλ‹€). λ΄‰νˆ¬λ₯Ό μ“°μ§€ μ•ŠλŠ” ν‘œλ©΄μ€ μ…‹μž…λ‹ˆλ‹€. `/oauth/_*` 와 `/.well-known/_*` λŠ” 각각 RFC 6749Β·RFC 8414Β·RFC 9728 이 μ΅œμƒμœ„ ν•„λ“œλ₯Ό κ·œμ •ν•˜κ³ , `/v1/_*` 은 λ™κ²°λœ λ ˆκ±°μ‹œ ν‘œλ©΄μ΄λ©°, 파일 λ‚΄μš© 응닡은 본문이 JSON 이 μ•„λ‹™λ‹ˆλ‹€. μ—λŸ¬ μ‘λ‹΅μ—λŠ” λ΄‰νˆ¬λ₯Ό μ”Œμš°μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ β€” μ•„λž˜ problem+json 이 λ‹¨λ…μœΌλ‘œ μ±…μž„μ§‘λ‹ˆλ‹€. ## 쑰건뢀 μš”μ²­ (ETag) `/v2` 의 λͺ¨λ“  `GET` 응닡에 weak `ETag`(`W/\"…\"`)κ°€ μ‹€λ¦½λ‹ˆλ‹€. 받은 값을 λ‹€μŒ μš”μ²­μ˜ `If-None-Match` ν—€λ”λ‘œ λ˜λ³΄λ‚΄λ©΄, λ‚΄μš©μ΄ κ·ΈλŒ€λ‘œμΌ λ•Œ `304 Not Modified` λ₯Ό λ³Έλ¬Έ 없이 λ°›μŠ΅λ‹ˆλ‹€. κ²°κ³Όκ°€ λ‚˜κΈ°λ₯Ό 기닀리며 같은 μžμ›μ„ 반볡 μ‘°νšŒν•˜λŠ” 연동이라면 이 헀더 ν•˜λ‚˜λ‘œ μ „μ†‘λŸ‰μ΄ μ‚¬λΌμ§‘λ‹ˆλ‹€. 호좜 횟수 자체λ₯Ό 쀄이렀면 웹훅을 μ‚¬μš©ν•˜μ„Έμš”. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`. μ†ŒλΉ„μžλŠ” **HTTP status + `type` URI** 둜 λΆ„κΈ°ν•œλ‹€. - `retryable`(boolean): μžλ™ μž¬μ‹œλ„ μ•ˆμ „ μ—¬λΆ€. `true`(429Β·5xx transient)λ©΄ backoff ν›„ μž¬μ‹œλ„, `false`λ©΄ μš”μ²­μ„ 고쳐야 ν•œλ‹€. - `traceId`: μš”μ²­ 좔적 id. `X-Correlation-Id` 응닡 헀더와 같은 κ°’μž…λ‹ˆλ‹€ β€” λ¬Έμ˜ν•  λ•Œ 이 값을 μ²¨λΆ€ν•˜μ„Έμš”. - `correlationId`: `traceId` 와 같은 κ°’μ˜ μ˜› 이름. κΈ°μ‘΄ 연동 ν˜Έν™˜μœΌλ‘œ ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€. μƒˆ 연동은 `traceId` λ₯Ό μ½μœΌμ„Έμš”. - `invalid-params`: 검증 μ‹€νŒ¨(400 `…/validation-failed`) μ‹œ μœ„λ°˜ ν•„λ“œ 경둜 λͺ©λ‘(RFC 9457 ν™•μž₯, κ°’ μ—†μŒ). `type` 은 `https://problems.cmarket.io/partner/<slug>` ν˜•νƒœμ˜ **μ•ˆμ • μ‹λ³„μž**λ‹€. RFC 9457 Β§3.1.1 이 ν—ˆμš©ν•˜λŠ” λŒ€λ‘œ 이 URI λŠ” **μ—­μ°Έμ‘°(dereference)λ˜μ§€ μ•ŠλŠ”λ‹€** β€” λΈŒλΌμš°μ €λ‘œ μ—΄μ§€ 말고 λ¬Έμžμ—΄ λΉ„κ΅λ‘œλ§Œ μ“Έ 것. slug λͺ©λ‘κ³Ό μ˜λ―ΈλŠ” 각 μ—”λ“œν¬μΈνŠΈμ˜ 응닡 μ„€λͺ…에 status λ³„λ‘œ λͺ…μ‹œλΌ μžˆλ‹€. μƒˆ slug 은 좔가될 수 μžˆμœΌλ―€λ‘œ, λͺ¨λ₯΄λŠ” slug 을 λ§Œλ‚˜λ©΄ `type` 이 μ•„λ‹ˆλΌ **HTTP status 둜 폴백**ν•˜λ„λ‘ κ΅¬ν˜„ν•  것. ### λ©±λ“±μ„± μœ„λ°˜: 409 와 422 의 차이 - `409` `…/idempotency-key-conflict` β€” 같은 ν‚€μ˜ **원 μš”μ²­μ΄ 아직 처리 쀑**이닀. μž μ‹œ λ’€ 같은 ν‚€λ‘œ λ‹€μ‹œ λΆ€λ₯΄λ©΄ κ·Έ κ²°κ³Όλ₯Ό λ°›λŠ”λ‹€. - `422` `…/idempotency-key-reused` β€” 같은 ν‚€λ₯Ό **λ‹€λ₯Έ body** 둜 λ³΄λƒˆλ‹€. μž¬μ‹œλ„ν•΄λ„ μ˜μ›νžˆ 같은 μ‹€νŒ¨λ‹€. μƒˆ ν‚€λ₯Ό μ“°κ±°λ‚˜ body λ₯Ό 되돌릴 것. ## 레이트 리밋 μ „μ—­ **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` κ°€ μ‹€λ¦°λ‹€. ## 버전 수λͺ…(deprecation/sunset) - **_/v1** 은 λ ˆκ±°μ‹œ V5 cutover μ™„λ£Œ μ‹œμ κΉŒμ§€ μœ μ§€λ˜λŠ” μΆ©μ‹€ ν”„λ‘μ‹œμž…λ‹ˆλ‹€. 폐지 일정이 μ •ν•΄μ§€λ©΄ /v1 응닡에 헀더 μ„Έ κ°œκ°€ μ‹€λ¦½λ‹ˆλ‹€ β€” `Deprecation`(RFC 9745, `@<epoch초>`) Β· `Sunset`(RFC 8594, HTTP-date) Β· `Link`(RFC 8288, `rel=\"deprecation\"`/`rel=\"sunset\"` β€” 이전 μ•ˆλ‚΄ λ¬Έμ„œλ₯Ό κ°€λ¦¬ν‚΅λ‹ˆλ‹€). 일정이 μ •ν•΄μ§€κΈ° μ „μ—λŠ” μ…‹ λ‹€ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ’…λ£ŒμΌμ΄ μ§€λ‚œ λ’€μ˜ ν˜ΈμΆœμ€ `404` κ°€ μ•„λ‹ˆλΌ **`410 Gone`** κ³Ό `type: …/endpoint-sunset` 으둜 κ±°μ ˆλ©λ‹ˆλ‹€. λ‘˜μ˜ 뜻이 λ‹€λ¦…λ‹ˆλ‹€ β€” `404` λŠ” \"그런 것이 μžˆμ—ˆλŠ”μ§€ λͺ¨λ₯΄κ² λ‹€\", `410` 은 \"μžˆμ—ˆκ³  μ˜λ„μ μœΌλ‘œ μ—†μ•΄λ‹€\" μž…λ‹ˆλ‹€. `410` 을 λ°›μœΌλ©΄ 경둜 μ˜€νƒ€λ₯Ό μ˜μ‹¬ν•˜μ§€ 말고 /v2 둜 μ΄μ „ν•˜μ„Έμš”. - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` ν—€λ”λ‘œ ν†΅μ§€ν•œλ‹€. μ†ŒλΉ„μžλŠ” 이 헀더λ₯Ό λͺ¨λ‹ˆν„°λ§ν•  것.
6
6
  *
7
- * The version of the OpenAPI document: 25.1.0
7
+ * The version of the OpenAPI document: 31.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
@@ -2,9 +2,9 @@
2
2
  /* eslint-disable */
3
3
  /**
4
4
  * CMARKET V6 Partner API
5
- * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 버전별 인증 - **_/v2** β€” OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token` μ—μ„œ 토큰 λ°œκΈ‰ ν›„ `Authorization: Bearer <token>` 헀더. - **_/v1** β€” V5 μΆ©μ‹€ platform-auth. `X-Platform-Id`(cate_set.api_id) / `X-Platform-Secret`(cate_set.api_secret, MD5-hex) ν—€λ”λ‘œ 전솑. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403` 을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € ꡬ뢄할 것. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠλŠ”λ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403 이닀. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λœλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • 발주처 λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•  것. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`. μ†ŒλΉ„μžλŠ” **HTTP status + `type` URI** 둜 λΆ„κΈ°ν•œλ‹€. - `retryable`(boolean): μžλ™ μž¬μ‹œλ„ μ•ˆμ „ μ—¬λΆ€. `true`(429Β·5xx transient)λ©΄ backoff ν›„ μž¬μ‹œλ„, `false`λ©΄ μš”μ²­μ„ 고쳐야 ν•œλ‹€. - `correlationId`: μš”μ²­ 좔적 id. `X-Correlation-Id` 응닡 헀더와 동일 β€” 문의 μ‹œ 이 값을 첨뢀. - `invalid-params`: 검증 μ‹€νŒ¨(400 `…/validation-failed`) μ‹œ μœ„λ°˜ ν•„λ“œ 경둜 λͺ©λ‘(RFC 9457 ν™•μž₯, κ°’ μ—†μŒ). `type` 은 `https://problems.cmarket.io/partner/<slug>` ν˜•νƒœμ˜ **μ•ˆμ • μ‹λ³„μž**λ‹€. RFC 9457 Β§3.1.1 이 ν—ˆμš©ν•˜λŠ” λŒ€λ‘œ 이 URI λŠ” **μ—­μ°Έμ‘°(dereference)λ˜μ§€ μ•ŠλŠ”λ‹€** β€” λΈŒλΌμš°μ €λ‘œ μ—΄μ§€ 말고 λ¬Έμžμ—΄ λΉ„κ΅λ‘œλ§Œ μ“Έ 것. slug λͺ©λ‘κ³Ό μ˜λ―ΈλŠ” 각 μ—”λ“œν¬μΈνŠΈμ˜ 응닡 μ„€λͺ…에 status λ³„λ‘œ λͺ…μ‹œλΌ μžˆλ‹€. μƒˆ slug 은 좔가될 수 μžˆμœΌλ―€λ‘œ, λͺ¨λ₯΄λŠ” slug 을 λ§Œλ‚˜λ©΄ `type` 이 μ•„λ‹ˆλΌ **HTTP status 둜 폴백**ν•˜λ„λ‘ κ΅¬ν˜„ν•  것. ### λ©±λ“±μ„± μœ„λ°˜: 409 와 422 의 차이 - `409` `…/idempotency-key-conflict` β€” 같은 ν‚€μ˜ **원 μš”μ²­μ΄ 아직 처리 쀑**이닀. μž μ‹œ λ’€ 같은 ν‚€λ‘œ λ‹€μ‹œ λΆ€λ₯΄λ©΄ κ·Έ κ²°κ³Όλ₯Ό λ°›λŠ”λ‹€. - `422` `…/idempotency-key-reused` β€” 같은 ν‚€λ₯Ό **λ‹€λ₯Έ body** 둜 λ³΄λƒˆλ‹€. μž¬μ‹œλ„ν•΄λ„ μ˜μ›νžˆ 같은 μ‹€νŒ¨λ‹€. μƒˆ ν‚€λ₯Ό μ“°κ±°λ‚˜ body λ₯Ό 되돌릴 것. ## 레이트 리밋 μ „μ—­ **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` κ°€ μ‹€λ¦°λ‹€. ## 버전 수λͺ…(deprecation/sunset) - **_/v1** 은 λ ˆκ±°μ‹œ V5 cutover μ™„λ£Œ μ‹œμ κΉŒμ§€ μœ μ§€λ˜λŠ” μΆ©μ‹€ ν”„λ‘μ‹œλ‹€. 폐지 일정이 μ •ν•΄μ§€λ©΄ /v1 응닡에 `Deprecation`(RFC 9745, `@<epoch초>`) κ³Ό `Sunset`(RFC 8594, HTTP-date) 헀더가 μ‹€λ¦°λ‹€ β€” κ·Έ μ „κΉŒμ§€λŠ” 두 헀더가 λ‚˜κ°€μ§€ μ•ŠλŠ”λ‹€. - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` ν—€λ”λ‘œ ν†΅μ§€ν•œλ‹€. μ†ŒλΉ„μžλŠ” 이 헀더λ₯Ό λͺ¨λ‹ˆν„°λ§ν•  것.
5
+ * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 버전별 인증 - **_/v2** β€” OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token` μ—μ„œ 토큰 λ°œκΈ‰ ν›„ `Authorization: Bearer <token>` 헀더. - **_/v1** β€” V5 μΆ©μ‹€ platform-auth. `X-Platform-Id`(cate_set.api_id) / `X-Platform-Secret`(cate_set.api_secret, MD5-hex) ν—€λ”λ‘œ 전솑. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403` 을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € ꡬ뢄할 것. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠλŠ”λ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403 이닀. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λœλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • 발주처 λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•  것. ## 성곡 응닡 λ΄‰νˆ¬ `/v2` 의 λͺ¨λ“  2xx 본문은 `{ \"data\": … }` μž…λ‹ˆλ‹€. 단일 λ¦¬μ†ŒμŠ€λ“  λͺ©λ‘μ΄λ“  κ°™μŠ΅λ‹ˆλ‹€. λͺ©λ‘μ²˜λŸΌ λΆ€κ°€ 정보가 μžˆλŠ” 응닡은 `meta` κ°€ ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€ β€” 예: `{ \"data\": [...], \"meta\": { \"nextCursor\": \"…\" } }`. λΆ€κ°€ 정보가 μ—†μœΌλ©΄ `meta` ν‚€λŠ” μ•„μ˜ˆ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€(빈 객체λ₯Ό μ‹£μ§€ μ•ŠμŠ΅λ‹ˆλ‹€). λ΄‰νˆ¬λ₯Ό μ“°μ§€ μ•ŠλŠ” ν‘œλ©΄μ€ μ…‹μž…λ‹ˆλ‹€. `/oauth/_*` 와 `/.well-known/_*` λŠ” 각각 RFC 6749Β·RFC 8414Β·RFC 9728 이 μ΅œμƒμœ„ ν•„λ“œλ₯Ό κ·œμ •ν•˜κ³ , `/v1/_*` 은 λ™κ²°λœ λ ˆκ±°μ‹œ ν‘œλ©΄μ΄λ©°, 파일 λ‚΄μš© 응닡은 본문이 JSON 이 μ•„λ‹™λ‹ˆλ‹€. μ—λŸ¬ μ‘λ‹΅μ—λŠ” λ΄‰νˆ¬λ₯Ό μ”Œμš°μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ β€” μ•„λž˜ problem+json 이 λ‹¨λ…μœΌλ‘œ μ±…μž„μ§‘λ‹ˆλ‹€. ## 쑰건뢀 μš”μ²­ (ETag) `/v2` 의 λͺ¨λ“  `GET` 응닡에 weak `ETag`(`W/\"…\"`)κ°€ μ‹€λ¦½λ‹ˆλ‹€. 받은 값을 λ‹€μŒ μš”μ²­μ˜ `If-None-Match` ν—€λ”λ‘œ λ˜λ³΄λ‚΄λ©΄, λ‚΄μš©μ΄ κ·ΈλŒ€λ‘œμΌ λ•Œ `304 Not Modified` λ₯Ό λ³Έλ¬Έ 없이 λ°›μŠ΅λ‹ˆλ‹€. κ²°κ³Όκ°€ λ‚˜κΈ°λ₯Ό 기닀리며 같은 μžμ›μ„ 반볡 μ‘°νšŒν•˜λŠ” 연동이라면 이 헀더 ν•˜λ‚˜λ‘œ μ „μ†‘λŸ‰μ΄ μ‚¬λΌμ§‘λ‹ˆλ‹€. 호좜 횟수 자체λ₯Ό 쀄이렀면 웹훅을 μ‚¬μš©ν•˜μ„Έμš”. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`. μ†ŒλΉ„μžλŠ” **HTTP status + `type` URI** 둜 λΆ„κΈ°ν•œλ‹€. - `retryable`(boolean): μžλ™ μž¬μ‹œλ„ μ•ˆμ „ μ—¬λΆ€. `true`(429Β·5xx transient)λ©΄ backoff ν›„ μž¬μ‹œλ„, `false`λ©΄ μš”μ²­μ„ 고쳐야 ν•œλ‹€. - `traceId`: μš”μ²­ 좔적 id. `X-Correlation-Id` 응닡 헀더와 같은 κ°’μž…λ‹ˆλ‹€ β€” λ¬Έμ˜ν•  λ•Œ 이 값을 μ²¨λΆ€ν•˜μ„Έμš”. - `correlationId`: `traceId` 와 같은 κ°’μ˜ μ˜› 이름. κΈ°μ‘΄ 연동 ν˜Έν™˜μœΌλ‘œ ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€. μƒˆ 연동은 `traceId` λ₯Ό μ½μœΌμ„Έμš”. - `invalid-params`: 검증 μ‹€νŒ¨(400 `…/validation-failed`) μ‹œ μœ„λ°˜ ν•„λ“œ 경둜 λͺ©λ‘(RFC 9457 ν™•μž₯, κ°’ μ—†μŒ). `type` 은 `https://problems.cmarket.io/partner/<slug>` ν˜•νƒœμ˜ **μ•ˆμ • μ‹λ³„μž**λ‹€. RFC 9457 Β§3.1.1 이 ν—ˆμš©ν•˜λŠ” λŒ€λ‘œ 이 URI λŠ” **μ—­μ°Έμ‘°(dereference)λ˜μ§€ μ•ŠλŠ”λ‹€** β€” λΈŒλΌμš°μ €λ‘œ μ—΄μ§€ 말고 λ¬Έμžμ—΄ λΉ„κ΅λ‘œλ§Œ μ“Έ 것. slug λͺ©λ‘κ³Ό μ˜λ―ΈλŠ” 각 μ—”λ“œν¬μΈνŠΈμ˜ 응닡 μ„€λͺ…에 status λ³„λ‘œ λͺ…μ‹œλΌ μžˆλ‹€. μƒˆ slug 은 좔가될 수 μžˆμœΌλ―€λ‘œ, λͺ¨λ₯΄λŠ” slug 을 λ§Œλ‚˜λ©΄ `type` 이 μ•„λ‹ˆλΌ **HTTP status 둜 폴백**ν•˜λ„λ‘ κ΅¬ν˜„ν•  것. ### λ©±λ“±μ„± μœ„λ°˜: 409 와 422 의 차이 - `409` `…/idempotency-key-conflict` β€” 같은 ν‚€μ˜ **원 μš”μ²­μ΄ 아직 처리 쀑**이닀. μž μ‹œ λ’€ 같은 ν‚€λ‘œ λ‹€μ‹œ λΆ€λ₯΄λ©΄ κ·Έ κ²°κ³Όλ₯Ό λ°›λŠ”λ‹€. - `422` `…/idempotency-key-reused` β€” 같은 ν‚€λ₯Ό **λ‹€λ₯Έ body** 둜 λ³΄λƒˆλ‹€. μž¬μ‹œλ„ν•΄λ„ μ˜μ›νžˆ 같은 μ‹€νŒ¨λ‹€. μƒˆ ν‚€λ₯Ό μ“°κ±°λ‚˜ body λ₯Ό 되돌릴 것. ## 레이트 리밋 μ „μ—­ **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` κ°€ μ‹€λ¦°λ‹€. ## 버전 수λͺ…(deprecation/sunset) - **_/v1** 은 λ ˆκ±°μ‹œ V5 cutover μ™„λ£Œ μ‹œμ κΉŒμ§€ μœ μ§€λ˜λŠ” μΆ©μ‹€ ν”„λ‘μ‹œμž…λ‹ˆλ‹€. 폐지 일정이 μ •ν•΄μ§€λ©΄ /v1 응닡에 헀더 μ„Έ κ°œκ°€ μ‹€λ¦½λ‹ˆλ‹€ β€” `Deprecation`(RFC 9745, `@<epoch초>`) Β· `Sunset`(RFC 8594, HTTP-date) Β· `Link`(RFC 8288, `rel=\"deprecation\"`/`rel=\"sunset\"` β€” 이전 μ•ˆλ‚΄ λ¬Έμ„œλ₯Ό κ°€λ¦¬ν‚΅λ‹ˆλ‹€). 일정이 μ •ν•΄μ§€κΈ° μ „μ—λŠ” μ…‹ λ‹€ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ’…λ£ŒμΌμ΄ μ§€λ‚œ λ’€μ˜ ν˜ΈμΆœμ€ `404` κ°€ μ•„λ‹ˆλΌ **`410 Gone`** κ³Ό `type: …/endpoint-sunset` 으둜 κ±°μ ˆλ©λ‹ˆλ‹€. λ‘˜μ˜ 뜻이 λ‹€λ¦…λ‹ˆλ‹€ β€” `404` λŠ” \"그런 것이 μžˆμ—ˆλŠ”μ§€ λͺ¨λ₯΄κ² λ‹€\", `410` 은 \"μžˆμ—ˆκ³  μ˜λ„μ μœΌλ‘œ μ—†μ•΄λ‹€\" μž…λ‹ˆλ‹€. `410` 을 λ°›μœΌλ©΄ 경둜 μ˜€νƒ€λ₯Ό μ˜μ‹¬ν•˜μ§€ 말고 /v2 둜 μ΄μ „ν•˜μ„Έμš”. - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` ν—€λ”λ‘œ ν†΅μ§€ν•œλ‹€. μ†ŒλΉ„μžλŠ” 이 헀더λ₯Ό λͺ¨λ‹ˆν„°λ§ν•  것.
6
6
  *
7
- * The version of the OpenAPI document: 25.1.0
7
+ * The version of the OpenAPI document: 31.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
@@ -2,9 +2,9 @@
2
2
  /* eslint-disable */
3
3
  /**
4
4
  * CMARKET V6 Partner API
5
- * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 버전별 인증 - **_/v2** β€” OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token` μ—μ„œ 토큰 λ°œκΈ‰ ν›„ `Authorization: Bearer <token>` 헀더. - **_/v1** β€” V5 μΆ©μ‹€ platform-auth. `X-Platform-Id`(cate_set.api_id) / `X-Platform-Secret`(cate_set.api_secret, MD5-hex) ν—€λ”λ‘œ 전솑. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403` 을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € ꡬ뢄할 것. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠλŠ”λ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403 이닀. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λœλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • 발주처 λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•  것. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`. μ†ŒλΉ„μžλŠ” **HTTP status + `type` URI** 둜 λΆ„κΈ°ν•œλ‹€. - `retryable`(boolean): μžλ™ μž¬μ‹œλ„ μ•ˆμ „ μ—¬λΆ€. `true`(429Β·5xx transient)λ©΄ backoff ν›„ μž¬μ‹œλ„, `false`λ©΄ μš”μ²­μ„ 고쳐야 ν•œλ‹€. - `correlationId`: μš”μ²­ 좔적 id. `X-Correlation-Id` 응닡 헀더와 동일 β€” 문의 μ‹œ 이 값을 첨뢀. - `invalid-params`: 검증 μ‹€νŒ¨(400 `…/validation-failed`) μ‹œ μœ„λ°˜ ν•„λ“œ 경둜 λͺ©λ‘(RFC 9457 ν™•μž₯, κ°’ μ—†μŒ). `type` 은 `https://problems.cmarket.io/partner/<slug>` ν˜•νƒœμ˜ **μ•ˆμ • μ‹λ³„μž**λ‹€. RFC 9457 Β§3.1.1 이 ν—ˆμš©ν•˜λŠ” λŒ€λ‘œ 이 URI λŠ” **μ—­μ°Έμ‘°(dereference)λ˜μ§€ μ•ŠλŠ”λ‹€** β€” λΈŒλΌμš°μ €λ‘œ μ—΄μ§€ 말고 λ¬Έμžμ—΄ λΉ„κ΅λ‘œλ§Œ μ“Έ 것. slug λͺ©λ‘κ³Ό μ˜λ―ΈλŠ” 각 μ—”λ“œν¬μΈνŠΈμ˜ 응닡 μ„€λͺ…에 status λ³„λ‘œ λͺ…μ‹œλΌ μžˆλ‹€. μƒˆ slug 은 좔가될 수 μžˆμœΌλ―€λ‘œ, λͺ¨λ₯΄λŠ” slug 을 λ§Œλ‚˜λ©΄ `type` 이 μ•„λ‹ˆλΌ **HTTP status 둜 폴백**ν•˜λ„λ‘ κ΅¬ν˜„ν•  것. ### λ©±λ“±μ„± μœ„λ°˜: 409 와 422 의 차이 - `409` `…/idempotency-key-conflict` β€” 같은 ν‚€μ˜ **원 μš”μ²­μ΄ 아직 처리 쀑**이닀. μž μ‹œ λ’€ 같은 ν‚€λ‘œ λ‹€μ‹œ λΆ€λ₯΄λ©΄ κ·Έ κ²°κ³Όλ₯Ό λ°›λŠ”λ‹€. - `422` `…/idempotency-key-reused` β€” 같은 ν‚€λ₯Ό **λ‹€λ₯Έ body** 둜 λ³΄λƒˆλ‹€. μž¬μ‹œλ„ν•΄λ„ μ˜μ›νžˆ 같은 μ‹€νŒ¨λ‹€. μƒˆ ν‚€λ₯Ό μ“°κ±°λ‚˜ body λ₯Ό 되돌릴 것. ## 레이트 리밋 μ „μ—­ **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` κ°€ μ‹€λ¦°λ‹€. ## 버전 수λͺ…(deprecation/sunset) - **_/v1** 은 λ ˆκ±°μ‹œ V5 cutover μ™„λ£Œ μ‹œμ κΉŒμ§€ μœ μ§€λ˜λŠ” μΆ©μ‹€ ν”„λ‘μ‹œλ‹€. 폐지 일정이 μ •ν•΄μ§€λ©΄ /v1 응닡에 `Deprecation`(RFC 9745, `@<epoch초>`) κ³Ό `Sunset`(RFC 8594, HTTP-date) 헀더가 μ‹€λ¦°λ‹€ β€” κ·Έ μ „κΉŒμ§€λŠ” 두 헀더가 λ‚˜κ°€μ§€ μ•ŠλŠ”λ‹€. - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` ν—€λ”λ‘œ ν†΅μ§€ν•œλ‹€. μ†ŒλΉ„μžλŠ” 이 헀더λ₯Ό λͺ¨λ‹ˆν„°λ§ν•  것.
5
+ * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 버전별 인증 - **_/v2** β€” OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token` μ—μ„œ 토큰 λ°œκΈ‰ ν›„ `Authorization: Bearer <token>` 헀더. - **_/v1** β€” V5 μΆ©μ‹€ platform-auth. `X-Platform-Id`(cate_set.api_id) / `X-Platform-Secret`(cate_set.api_secret, MD5-hex) ν—€λ”λ‘œ 전솑. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403` 을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € ꡬ뢄할 것. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠλŠ”λ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403 이닀. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λœλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • 발주처 λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•  것. ## 성곡 응닡 λ΄‰νˆ¬ `/v2` 의 λͺ¨λ“  2xx 본문은 `{ \"data\": … }` μž…λ‹ˆλ‹€. 단일 λ¦¬μ†ŒμŠ€λ“  λͺ©λ‘μ΄λ“  κ°™μŠ΅λ‹ˆλ‹€. λͺ©λ‘μ²˜λŸΌ λΆ€κ°€ 정보가 μžˆλŠ” 응닡은 `meta` κ°€ ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€ β€” 예: `{ \"data\": [...], \"meta\": { \"nextCursor\": \"…\" } }`. λΆ€κ°€ 정보가 μ—†μœΌλ©΄ `meta` ν‚€λŠ” μ•„μ˜ˆ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€(빈 객체λ₯Ό μ‹£μ§€ μ•ŠμŠ΅λ‹ˆλ‹€). λ΄‰νˆ¬λ₯Ό μ“°μ§€ μ•ŠλŠ” ν‘œλ©΄μ€ μ…‹μž…λ‹ˆλ‹€. `/oauth/_*` 와 `/.well-known/_*` λŠ” 각각 RFC 6749Β·RFC 8414Β·RFC 9728 이 μ΅œμƒμœ„ ν•„λ“œλ₯Ό κ·œμ •ν•˜κ³ , `/v1/_*` 은 λ™κ²°λœ λ ˆκ±°μ‹œ ν‘œλ©΄μ΄λ©°, 파일 λ‚΄μš© 응닡은 본문이 JSON 이 μ•„λ‹™λ‹ˆλ‹€. μ—λŸ¬ μ‘λ‹΅μ—λŠ” λ΄‰νˆ¬λ₯Ό μ”Œμš°μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ β€” μ•„λž˜ problem+json 이 λ‹¨λ…μœΌλ‘œ μ±…μž„μ§‘λ‹ˆλ‹€. ## 쑰건뢀 μš”μ²­ (ETag) `/v2` 의 λͺ¨λ“  `GET` 응닡에 weak `ETag`(`W/\"…\"`)κ°€ μ‹€λ¦½λ‹ˆλ‹€. 받은 값을 λ‹€μŒ μš”μ²­μ˜ `If-None-Match` ν—€λ”λ‘œ λ˜λ³΄λ‚΄λ©΄, λ‚΄μš©μ΄ κ·ΈλŒ€λ‘œμΌ λ•Œ `304 Not Modified` λ₯Ό λ³Έλ¬Έ 없이 λ°›μŠ΅λ‹ˆλ‹€. κ²°κ³Όκ°€ λ‚˜κΈ°λ₯Ό 기닀리며 같은 μžμ›μ„ 반볡 μ‘°νšŒν•˜λŠ” 연동이라면 이 헀더 ν•˜λ‚˜λ‘œ μ „μ†‘λŸ‰μ΄ μ‚¬λΌμ§‘λ‹ˆλ‹€. 호좜 횟수 자체λ₯Ό 쀄이렀면 웹훅을 μ‚¬μš©ν•˜μ„Έμš”. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`. μ†ŒλΉ„μžλŠ” **HTTP status + `type` URI** 둜 λΆ„κΈ°ν•œλ‹€. - `retryable`(boolean): μžλ™ μž¬μ‹œλ„ μ•ˆμ „ μ—¬λΆ€. `true`(429Β·5xx transient)λ©΄ backoff ν›„ μž¬μ‹œλ„, `false`λ©΄ μš”μ²­μ„ 고쳐야 ν•œλ‹€. - `traceId`: μš”μ²­ 좔적 id. `X-Correlation-Id` 응닡 헀더와 같은 κ°’μž…λ‹ˆλ‹€ β€” λ¬Έμ˜ν•  λ•Œ 이 값을 μ²¨λΆ€ν•˜μ„Έμš”. - `correlationId`: `traceId` 와 같은 κ°’μ˜ μ˜› 이름. κΈ°μ‘΄ 연동 ν˜Έν™˜μœΌλ‘œ ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€. μƒˆ 연동은 `traceId` λ₯Ό μ½μœΌμ„Έμš”. - `invalid-params`: 검증 μ‹€νŒ¨(400 `…/validation-failed`) μ‹œ μœ„λ°˜ ν•„λ“œ 경둜 λͺ©λ‘(RFC 9457 ν™•μž₯, κ°’ μ—†μŒ). `type` 은 `https://problems.cmarket.io/partner/<slug>` ν˜•νƒœμ˜ **μ•ˆμ • μ‹λ³„μž**λ‹€. RFC 9457 Β§3.1.1 이 ν—ˆμš©ν•˜λŠ” λŒ€λ‘œ 이 URI λŠ” **μ—­μ°Έμ‘°(dereference)λ˜μ§€ μ•ŠλŠ”λ‹€** β€” λΈŒλΌμš°μ €λ‘œ μ—΄μ§€ 말고 λ¬Έμžμ—΄ λΉ„κ΅λ‘œλ§Œ μ“Έ 것. slug λͺ©λ‘κ³Ό μ˜λ―ΈλŠ” 각 μ—”λ“œν¬μΈνŠΈμ˜ 응닡 μ„€λͺ…에 status λ³„λ‘œ λͺ…μ‹œλΌ μžˆλ‹€. μƒˆ slug 은 좔가될 수 μžˆμœΌλ―€λ‘œ, λͺ¨λ₯΄λŠ” slug 을 λ§Œλ‚˜λ©΄ `type` 이 μ•„λ‹ˆλΌ **HTTP status 둜 폴백**ν•˜λ„λ‘ κ΅¬ν˜„ν•  것. ### λ©±λ“±μ„± μœ„λ°˜: 409 와 422 의 차이 - `409` `…/idempotency-key-conflict` β€” 같은 ν‚€μ˜ **원 μš”μ²­μ΄ 아직 처리 쀑**이닀. μž μ‹œ λ’€ 같은 ν‚€λ‘œ λ‹€μ‹œ λΆ€λ₯΄λ©΄ κ·Έ κ²°κ³Όλ₯Ό λ°›λŠ”λ‹€. - `422` `…/idempotency-key-reused` β€” 같은 ν‚€λ₯Ό **λ‹€λ₯Έ body** 둜 λ³΄λƒˆλ‹€. μž¬μ‹œλ„ν•΄λ„ μ˜μ›νžˆ 같은 μ‹€νŒ¨λ‹€. μƒˆ ν‚€λ₯Ό μ“°κ±°λ‚˜ body λ₯Ό 되돌릴 것. ## 레이트 리밋 μ „μ—­ **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` κ°€ μ‹€λ¦°λ‹€. ## 버전 수λͺ…(deprecation/sunset) - **_/v1** 은 λ ˆκ±°μ‹œ V5 cutover μ™„λ£Œ μ‹œμ κΉŒμ§€ μœ μ§€λ˜λŠ” μΆ©μ‹€ ν”„λ‘μ‹œμž…λ‹ˆλ‹€. 폐지 일정이 μ •ν•΄μ§€λ©΄ /v1 응닡에 헀더 μ„Έ κ°œκ°€ μ‹€λ¦½λ‹ˆλ‹€ β€” `Deprecation`(RFC 9745, `@<epoch초>`) Β· `Sunset`(RFC 8594, HTTP-date) Β· `Link`(RFC 8288, `rel=\"deprecation\"`/`rel=\"sunset\"` β€” 이전 μ•ˆλ‚΄ λ¬Έμ„œλ₯Ό κ°€λ¦¬ν‚΅λ‹ˆλ‹€). 일정이 μ •ν•΄μ§€κΈ° μ „μ—λŠ” μ…‹ λ‹€ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ’…λ£ŒμΌμ΄ μ§€λ‚œ λ’€μ˜ ν˜ΈμΆœμ€ `404` κ°€ μ•„λ‹ˆλΌ **`410 Gone`** κ³Ό `type: …/endpoint-sunset` 으둜 κ±°μ ˆλ©λ‹ˆλ‹€. λ‘˜μ˜ 뜻이 λ‹€λ¦…λ‹ˆλ‹€ β€” `404` λŠ” \"그런 것이 μžˆμ—ˆλŠ”μ§€ λͺ¨λ₯΄κ² λ‹€\", `410` 은 \"μžˆμ—ˆκ³  μ˜λ„μ μœΌλ‘œ μ—†μ•΄λ‹€\" μž…λ‹ˆλ‹€. `410` 을 λ°›μœΌλ©΄ 경둜 μ˜€νƒ€λ₯Ό μ˜μ‹¬ν•˜μ§€ 말고 /v2 둜 μ΄μ „ν•˜μ„Έμš”. - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` ν—€λ”λ‘œ ν†΅μ§€ν•œλ‹€. μ†ŒλΉ„μžλŠ” 이 헀더λ₯Ό λͺ¨λ‹ˆν„°λ§ν•  것.
6
6
  *
7
- * The version of the OpenAPI document: 25.1.0
7
+ * The version of the OpenAPI document: 31.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
@@ -2,9 +2,9 @@
2
2
  /* eslint-disable */
3
3
  /**
4
4
  * CMARKET V6 Partner API
5
- * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 버전별 인증 - **_/v2** β€” OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token` μ—μ„œ 토큰 λ°œκΈ‰ ν›„ `Authorization: Bearer <token>` 헀더. - **_/v1** β€” V5 μΆ©μ‹€ platform-auth. `X-Platform-Id`(cate_set.api_id) / `X-Platform-Secret`(cate_set.api_secret, MD5-hex) ν—€λ”λ‘œ 전솑. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403` 을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € ꡬ뢄할 것. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠλŠ”λ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403 이닀. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λœλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • 발주처 λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•  것. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`. μ†ŒλΉ„μžλŠ” **HTTP status + `type` URI** 둜 λΆ„κΈ°ν•œλ‹€. - `retryable`(boolean): μžλ™ μž¬μ‹œλ„ μ•ˆμ „ μ—¬λΆ€. `true`(429Β·5xx transient)λ©΄ backoff ν›„ μž¬μ‹œλ„, `false`λ©΄ μš”μ²­μ„ 고쳐야 ν•œλ‹€. - `correlationId`: μš”μ²­ 좔적 id. `X-Correlation-Id` 응닡 헀더와 동일 β€” 문의 μ‹œ 이 값을 첨뢀. - `invalid-params`: 검증 μ‹€νŒ¨(400 `…/validation-failed`) μ‹œ μœ„λ°˜ ν•„λ“œ 경둜 λͺ©λ‘(RFC 9457 ν™•μž₯, κ°’ μ—†μŒ). `type` 은 `https://problems.cmarket.io/partner/<slug>` ν˜•νƒœμ˜ **μ•ˆμ • μ‹λ³„μž**λ‹€. RFC 9457 Β§3.1.1 이 ν—ˆμš©ν•˜λŠ” λŒ€λ‘œ 이 URI λŠ” **μ—­μ°Έμ‘°(dereference)λ˜μ§€ μ•ŠλŠ”λ‹€** β€” λΈŒλΌμš°μ €λ‘œ μ—΄μ§€ 말고 λ¬Έμžμ—΄ λΉ„κ΅λ‘œλ§Œ μ“Έ 것. slug λͺ©λ‘κ³Ό μ˜λ―ΈλŠ” 각 μ—”λ“œν¬μΈνŠΈμ˜ 응닡 μ„€λͺ…에 status λ³„λ‘œ λͺ…μ‹œλΌ μžˆλ‹€. μƒˆ slug 은 좔가될 수 μžˆμœΌλ―€λ‘œ, λͺ¨λ₯΄λŠ” slug 을 λ§Œλ‚˜λ©΄ `type` 이 μ•„λ‹ˆλΌ **HTTP status 둜 폴백**ν•˜λ„λ‘ κ΅¬ν˜„ν•  것. ### λ©±λ“±μ„± μœ„λ°˜: 409 와 422 의 차이 - `409` `…/idempotency-key-conflict` β€” 같은 ν‚€μ˜ **원 μš”μ²­μ΄ 아직 처리 쀑**이닀. μž μ‹œ λ’€ 같은 ν‚€λ‘œ λ‹€μ‹œ λΆ€λ₯΄λ©΄ κ·Έ κ²°κ³Όλ₯Ό λ°›λŠ”λ‹€. - `422` `…/idempotency-key-reused` β€” 같은 ν‚€λ₯Ό **λ‹€λ₯Έ body** 둜 λ³΄λƒˆλ‹€. μž¬μ‹œλ„ν•΄λ„ μ˜μ›νžˆ 같은 μ‹€νŒ¨λ‹€. μƒˆ ν‚€λ₯Ό μ“°κ±°λ‚˜ body λ₯Ό 되돌릴 것. ## 레이트 리밋 μ „μ—­ **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` κ°€ μ‹€λ¦°λ‹€. ## 버전 수λͺ…(deprecation/sunset) - **_/v1** 은 λ ˆκ±°μ‹œ V5 cutover μ™„λ£Œ μ‹œμ κΉŒμ§€ μœ μ§€λ˜λŠ” μΆ©μ‹€ ν”„λ‘μ‹œλ‹€. 폐지 일정이 μ •ν•΄μ§€λ©΄ /v1 응닡에 `Deprecation`(RFC 9745, `@<epoch초>`) κ³Ό `Sunset`(RFC 8594, HTTP-date) 헀더가 μ‹€λ¦°λ‹€ β€” κ·Έ μ „κΉŒμ§€λŠ” 두 헀더가 λ‚˜κ°€μ§€ μ•ŠλŠ”λ‹€. - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` ν—€λ”λ‘œ ν†΅μ§€ν•œλ‹€. μ†ŒλΉ„μžλŠ” 이 헀더λ₯Ό λͺ¨λ‹ˆν„°λ§ν•  것.
5
+ * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 버전별 인증 - **_/v2** β€” OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token` μ—μ„œ 토큰 λ°œκΈ‰ ν›„ `Authorization: Bearer <token>` 헀더. - **_/v1** β€” V5 μΆ©μ‹€ platform-auth. `X-Platform-Id`(cate_set.api_id) / `X-Platform-Secret`(cate_set.api_secret, MD5-hex) ν—€λ”λ‘œ 전솑. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403` 을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € ꡬ뢄할 것. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠλŠ”λ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403 이닀. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λœλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • 발주처 λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•  것. ## 성곡 응닡 λ΄‰νˆ¬ `/v2` 의 λͺ¨λ“  2xx 본문은 `{ \"data\": … }` μž…λ‹ˆλ‹€. 단일 λ¦¬μ†ŒμŠ€λ“  λͺ©λ‘μ΄λ“  κ°™μŠ΅λ‹ˆλ‹€. λͺ©λ‘μ²˜λŸΌ λΆ€κ°€ 정보가 μžˆλŠ” 응닡은 `meta` κ°€ ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€ β€” 예: `{ \"data\": [...], \"meta\": { \"nextCursor\": \"…\" } }`. λΆ€κ°€ 정보가 μ—†μœΌλ©΄ `meta` ν‚€λŠ” μ•„μ˜ˆ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€(빈 객체λ₯Ό μ‹£μ§€ μ•ŠμŠ΅λ‹ˆλ‹€). λ΄‰νˆ¬λ₯Ό μ“°μ§€ μ•ŠλŠ” ν‘œλ©΄μ€ μ…‹μž…λ‹ˆλ‹€. `/oauth/_*` 와 `/.well-known/_*` λŠ” 각각 RFC 6749Β·RFC 8414Β·RFC 9728 이 μ΅œμƒμœ„ ν•„λ“œλ₯Ό κ·œμ •ν•˜κ³ , `/v1/_*` 은 λ™κ²°λœ λ ˆκ±°μ‹œ ν‘œλ©΄μ΄λ©°, 파일 λ‚΄μš© 응닡은 본문이 JSON 이 μ•„λ‹™λ‹ˆλ‹€. μ—λŸ¬ μ‘λ‹΅μ—λŠ” λ΄‰νˆ¬λ₯Ό μ”Œμš°μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ β€” μ•„λž˜ problem+json 이 λ‹¨λ…μœΌλ‘œ μ±…μž„μ§‘λ‹ˆλ‹€. ## 쑰건뢀 μš”μ²­ (ETag) `/v2` 의 λͺ¨λ“  `GET` 응닡에 weak `ETag`(`W/\"…\"`)κ°€ μ‹€λ¦½λ‹ˆλ‹€. 받은 값을 λ‹€μŒ μš”μ²­μ˜ `If-None-Match` ν—€λ”λ‘œ λ˜λ³΄λ‚΄λ©΄, λ‚΄μš©μ΄ κ·ΈλŒ€λ‘œμΌ λ•Œ `304 Not Modified` λ₯Ό λ³Έλ¬Έ 없이 λ°›μŠ΅λ‹ˆλ‹€. κ²°κ³Όκ°€ λ‚˜κΈ°λ₯Ό 기닀리며 같은 μžμ›μ„ 반볡 μ‘°νšŒν•˜λŠ” 연동이라면 이 헀더 ν•˜λ‚˜λ‘œ μ „μ†‘λŸ‰μ΄ μ‚¬λΌμ§‘λ‹ˆλ‹€. 호좜 횟수 자체λ₯Ό 쀄이렀면 웹훅을 μ‚¬μš©ν•˜μ„Έμš”. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`. μ†ŒλΉ„μžλŠ” **HTTP status + `type` URI** 둜 λΆ„κΈ°ν•œλ‹€. - `retryable`(boolean): μžλ™ μž¬μ‹œλ„ μ•ˆμ „ μ—¬λΆ€. `true`(429Β·5xx transient)λ©΄ backoff ν›„ μž¬μ‹œλ„, `false`λ©΄ μš”μ²­μ„ 고쳐야 ν•œλ‹€. - `traceId`: μš”μ²­ 좔적 id. `X-Correlation-Id` 응닡 헀더와 같은 κ°’μž…λ‹ˆλ‹€ β€” λ¬Έμ˜ν•  λ•Œ 이 값을 μ²¨λΆ€ν•˜μ„Έμš”. - `correlationId`: `traceId` 와 같은 κ°’μ˜ μ˜› 이름. κΈ°μ‘΄ 연동 ν˜Έν™˜μœΌλ‘œ ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€. μƒˆ 연동은 `traceId` λ₯Ό μ½μœΌμ„Έμš”. - `invalid-params`: 검증 μ‹€νŒ¨(400 `…/validation-failed`) μ‹œ μœ„λ°˜ ν•„λ“œ 경둜 λͺ©λ‘(RFC 9457 ν™•μž₯, κ°’ μ—†μŒ). `type` 은 `https://problems.cmarket.io/partner/<slug>` ν˜•νƒœμ˜ **μ•ˆμ • μ‹λ³„μž**λ‹€. RFC 9457 Β§3.1.1 이 ν—ˆμš©ν•˜λŠ” λŒ€λ‘œ 이 URI λŠ” **μ—­μ°Έμ‘°(dereference)λ˜μ§€ μ•ŠλŠ”λ‹€** β€” λΈŒλΌμš°μ €λ‘œ μ—΄μ§€ 말고 λ¬Έμžμ—΄ λΉ„κ΅λ‘œλ§Œ μ“Έ 것. slug λͺ©λ‘κ³Ό μ˜λ―ΈλŠ” 각 μ—”λ“œν¬μΈνŠΈμ˜ 응닡 μ„€λͺ…에 status λ³„λ‘œ λͺ…μ‹œλΌ μžˆλ‹€. μƒˆ slug 은 좔가될 수 μžˆμœΌλ―€λ‘œ, λͺ¨λ₯΄λŠ” slug 을 λ§Œλ‚˜λ©΄ `type` 이 μ•„λ‹ˆλΌ **HTTP status 둜 폴백**ν•˜λ„λ‘ κ΅¬ν˜„ν•  것. ### λ©±λ“±μ„± μœ„λ°˜: 409 와 422 의 차이 - `409` `…/idempotency-key-conflict` β€” 같은 ν‚€μ˜ **원 μš”μ²­μ΄ 아직 처리 쀑**이닀. μž μ‹œ λ’€ 같은 ν‚€λ‘œ λ‹€μ‹œ λΆ€λ₯΄λ©΄ κ·Έ κ²°κ³Όλ₯Ό λ°›λŠ”λ‹€. - `422` `…/idempotency-key-reused` β€” 같은 ν‚€λ₯Ό **λ‹€λ₯Έ body** 둜 λ³΄λƒˆλ‹€. μž¬μ‹œλ„ν•΄λ„ μ˜μ›νžˆ 같은 μ‹€νŒ¨λ‹€. μƒˆ ν‚€λ₯Ό μ“°κ±°λ‚˜ body λ₯Ό 되돌릴 것. ## 레이트 리밋 μ „μ—­ **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` κ°€ μ‹€λ¦°λ‹€. ## 버전 수λͺ…(deprecation/sunset) - **_/v1** 은 λ ˆκ±°μ‹œ V5 cutover μ™„λ£Œ μ‹œμ κΉŒμ§€ μœ μ§€λ˜λŠ” μΆ©μ‹€ ν”„λ‘μ‹œμž…λ‹ˆλ‹€. 폐지 일정이 μ •ν•΄μ§€λ©΄ /v1 응닡에 헀더 μ„Έ κ°œκ°€ μ‹€λ¦½λ‹ˆλ‹€ β€” `Deprecation`(RFC 9745, `@<epoch초>`) Β· `Sunset`(RFC 8594, HTTP-date) Β· `Link`(RFC 8288, `rel=\"deprecation\"`/`rel=\"sunset\"` β€” 이전 μ•ˆλ‚΄ λ¬Έμ„œλ₯Ό κ°€λ¦¬ν‚΅λ‹ˆλ‹€). 일정이 μ •ν•΄μ§€κΈ° μ „μ—λŠ” μ…‹ λ‹€ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ’…λ£ŒμΌμ΄ μ§€λ‚œ λ’€μ˜ ν˜ΈμΆœμ€ `404` κ°€ μ•„λ‹ˆλΌ **`410 Gone`** κ³Ό `type: …/endpoint-sunset` 으둜 κ±°μ ˆλ©λ‹ˆλ‹€. λ‘˜μ˜ 뜻이 λ‹€λ¦…λ‹ˆλ‹€ β€” `404` λŠ” \"그런 것이 μžˆμ—ˆλŠ”μ§€ λͺ¨λ₯΄κ² λ‹€\", `410` 은 \"μžˆμ—ˆκ³  μ˜λ„μ μœΌλ‘œ μ—†μ•΄λ‹€\" μž…λ‹ˆλ‹€. `410` 을 λ°›μœΌλ©΄ 경둜 μ˜€νƒ€λ₯Ό μ˜μ‹¬ν•˜μ§€ 말고 /v2 둜 μ΄μ „ν•˜μ„Έμš”. - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` ν—€λ”λ‘œ ν†΅μ§€ν•œλ‹€. μ†ŒλΉ„μžλŠ” 이 헀더λ₯Ό λͺ¨λ‹ˆν„°λ§ν•  것.
6
6
  *
7
- * The version of the OpenAPI document: 25.1.0
7
+ * The version of the OpenAPI document: 31.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
@@ -1,9 +1,9 @@
1
1
  /* tslint:disable */
2
2
  /**
3
3
  * CMARKET V6 Partner API
4
- * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 버전별 인증 - **_/v2** β€” OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token` μ—μ„œ 토큰 λ°œκΈ‰ ν›„ `Authorization: Bearer <token>` 헀더. - **_/v1** β€” V5 μΆ©μ‹€ platform-auth. `X-Platform-Id`(cate_set.api_id) / `X-Platform-Secret`(cate_set.api_secret, MD5-hex) ν—€λ”λ‘œ 전솑. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403` 을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € ꡬ뢄할 것. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠλŠ”λ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403 이닀. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λœλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • 발주처 λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•  것. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`. μ†ŒλΉ„μžλŠ” **HTTP status + `type` URI** 둜 λΆ„κΈ°ν•œλ‹€. - `retryable`(boolean): μžλ™ μž¬μ‹œλ„ μ•ˆμ „ μ—¬λΆ€. `true`(429Β·5xx transient)λ©΄ backoff ν›„ μž¬μ‹œλ„, `false`λ©΄ μš”μ²­μ„ 고쳐야 ν•œλ‹€. - `correlationId`: μš”μ²­ 좔적 id. `X-Correlation-Id` 응닡 헀더와 동일 β€” 문의 μ‹œ 이 값을 첨뢀. - `invalid-params`: 검증 μ‹€νŒ¨(400 `…/validation-failed`) μ‹œ μœ„λ°˜ ν•„λ“œ 경둜 λͺ©λ‘(RFC 9457 ν™•μž₯, κ°’ μ—†μŒ). `type` 은 `https://problems.cmarket.io/partner/<slug>` ν˜•νƒœμ˜ **μ•ˆμ • μ‹λ³„μž**λ‹€. RFC 9457 Β§3.1.1 이 ν—ˆμš©ν•˜λŠ” λŒ€λ‘œ 이 URI λŠ” **μ—­μ°Έμ‘°(dereference)λ˜μ§€ μ•ŠλŠ”λ‹€** β€” λΈŒλΌμš°μ €λ‘œ μ—΄μ§€ 말고 λ¬Έμžμ—΄ λΉ„κ΅λ‘œλ§Œ μ“Έ 것. slug λͺ©λ‘κ³Ό μ˜λ―ΈλŠ” 각 μ—”λ“œν¬μΈνŠΈμ˜ 응닡 μ„€λͺ…에 status λ³„λ‘œ λͺ…μ‹œλΌ μžˆλ‹€. μƒˆ slug 은 좔가될 수 μžˆμœΌλ―€λ‘œ, λͺ¨λ₯΄λŠ” slug 을 λ§Œλ‚˜λ©΄ `type` 이 μ•„λ‹ˆλΌ **HTTP status 둜 폴백**ν•˜λ„λ‘ κ΅¬ν˜„ν•  것. ### λ©±λ“±μ„± μœ„λ°˜: 409 와 422 의 차이 - `409` `…/idempotency-key-conflict` β€” 같은 ν‚€μ˜ **원 μš”μ²­μ΄ 아직 처리 쀑**이닀. μž μ‹œ λ’€ 같은 ν‚€λ‘œ λ‹€μ‹œ λΆ€λ₯΄λ©΄ κ·Έ κ²°κ³Όλ₯Ό λ°›λŠ”λ‹€. - `422` `…/idempotency-key-reused` β€” 같은 ν‚€λ₯Ό **λ‹€λ₯Έ body** 둜 λ³΄λƒˆλ‹€. μž¬μ‹œλ„ν•΄λ„ μ˜μ›νžˆ 같은 μ‹€νŒ¨λ‹€. μƒˆ ν‚€λ₯Ό μ“°κ±°λ‚˜ body λ₯Ό 되돌릴 것. ## 레이트 리밋 μ „μ—­ **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` κ°€ μ‹€λ¦°λ‹€. ## 버전 수λͺ…(deprecation/sunset) - **_/v1** 은 λ ˆκ±°μ‹œ V5 cutover μ™„λ£Œ μ‹œμ κΉŒμ§€ μœ μ§€λ˜λŠ” μΆ©μ‹€ ν”„λ‘μ‹œλ‹€. 폐지 일정이 μ •ν•΄μ§€λ©΄ /v1 응닡에 `Deprecation`(RFC 9745, `@<epoch초>`) κ³Ό `Sunset`(RFC 8594, HTTP-date) 헀더가 μ‹€λ¦°λ‹€ β€” κ·Έ μ „κΉŒμ§€λŠ” 두 헀더가 λ‚˜κ°€μ§€ μ•ŠλŠ”λ‹€. - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` ν—€λ”λ‘œ ν†΅μ§€ν•œλ‹€. μ†ŒλΉ„μžλŠ” 이 헀더λ₯Ό λͺ¨λ‹ˆν„°λ§ν•  것.
4
+ * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 버전별 인증 - **_/v2** β€” OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token` μ—μ„œ 토큰 λ°œκΈ‰ ν›„ `Authorization: Bearer <token>` 헀더. - **_/v1** β€” V5 μΆ©μ‹€ platform-auth. `X-Platform-Id`(cate_set.api_id) / `X-Platform-Secret`(cate_set.api_secret, MD5-hex) ν—€λ”λ‘œ 전솑. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403` 을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € ꡬ뢄할 것. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠλŠ”λ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403 이닀. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λœλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • 발주처 λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•  것. ## 성곡 응닡 λ΄‰νˆ¬ `/v2` 의 λͺ¨λ“  2xx 본문은 `{ \"data\": … }` μž…λ‹ˆλ‹€. 단일 λ¦¬μ†ŒμŠ€λ“  λͺ©λ‘μ΄λ“  κ°™μŠ΅λ‹ˆλ‹€. λͺ©λ‘μ²˜λŸΌ λΆ€κ°€ 정보가 μžˆλŠ” 응닡은 `meta` κ°€ ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€ β€” 예: `{ \"data\": [...], \"meta\": { \"nextCursor\": \"…\" } }`. λΆ€κ°€ 정보가 μ—†μœΌλ©΄ `meta` ν‚€λŠ” μ•„μ˜ˆ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€(빈 객체λ₯Ό μ‹£μ§€ μ•ŠμŠ΅λ‹ˆλ‹€). λ΄‰νˆ¬λ₯Ό μ“°μ§€ μ•ŠλŠ” ν‘œλ©΄μ€ μ…‹μž…λ‹ˆλ‹€. `/oauth/_*` 와 `/.well-known/_*` λŠ” 각각 RFC 6749Β·RFC 8414Β·RFC 9728 이 μ΅œμƒμœ„ ν•„λ“œλ₯Ό κ·œμ •ν•˜κ³ , `/v1/_*` 은 λ™κ²°λœ λ ˆκ±°μ‹œ ν‘œλ©΄μ΄λ©°, 파일 λ‚΄μš© 응닡은 본문이 JSON 이 μ•„λ‹™λ‹ˆλ‹€. μ—λŸ¬ μ‘λ‹΅μ—λŠ” λ΄‰νˆ¬λ₯Ό μ”Œμš°μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ β€” μ•„λž˜ problem+json 이 λ‹¨λ…μœΌλ‘œ μ±…μž„μ§‘λ‹ˆλ‹€. ## 쑰건뢀 μš”μ²­ (ETag) `/v2` 의 λͺ¨λ“  `GET` 응닡에 weak `ETag`(`W/\"…\"`)κ°€ μ‹€λ¦½λ‹ˆλ‹€. 받은 값을 λ‹€μŒ μš”μ²­μ˜ `If-None-Match` ν—€λ”λ‘œ λ˜λ³΄λ‚΄λ©΄, λ‚΄μš©μ΄ κ·ΈλŒ€λ‘œμΌ λ•Œ `304 Not Modified` λ₯Ό λ³Έλ¬Έ 없이 λ°›μŠ΅λ‹ˆλ‹€. κ²°κ³Όκ°€ λ‚˜κΈ°λ₯Ό 기닀리며 같은 μžμ›μ„ 반볡 μ‘°νšŒν•˜λŠ” 연동이라면 이 헀더 ν•˜λ‚˜λ‘œ μ „μ†‘λŸ‰μ΄ μ‚¬λΌμ§‘λ‹ˆλ‹€. 호좜 횟수 자체λ₯Ό 쀄이렀면 웹훅을 μ‚¬μš©ν•˜μ„Έμš”. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`. μ†ŒλΉ„μžλŠ” **HTTP status + `type` URI** 둜 λΆ„κΈ°ν•œλ‹€. - `retryable`(boolean): μžλ™ μž¬μ‹œλ„ μ•ˆμ „ μ—¬λΆ€. `true`(429Β·5xx transient)λ©΄ backoff ν›„ μž¬μ‹œλ„, `false`λ©΄ μš”μ²­μ„ 고쳐야 ν•œλ‹€. - `traceId`: μš”μ²­ 좔적 id. `X-Correlation-Id` 응닡 헀더와 같은 κ°’μž…λ‹ˆλ‹€ β€” λ¬Έμ˜ν•  λ•Œ 이 값을 μ²¨λΆ€ν•˜μ„Έμš”. - `correlationId`: `traceId` 와 같은 κ°’μ˜ μ˜› 이름. κΈ°μ‘΄ 연동 ν˜Έν™˜μœΌλ‘œ ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€. μƒˆ 연동은 `traceId` λ₯Ό μ½μœΌμ„Έμš”. - `invalid-params`: 검증 μ‹€νŒ¨(400 `…/validation-failed`) μ‹œ μœ„λ°˜ ν•„λ“œ 경둜 λͺ©λ‘(RFC 9457 ν™•μž₯, κ°’ μ—†μŒ). `type` 은 `https://problems.cmarket.io/partner/<slug>` ν˜•νƒœμ˜ **μ•ˆμ • μ‹λ³„μž**λ‹€. RFC 9457 Β§3.1.1 이 ν—ˆμš©ν•˜λŠ” λŒ€λ‘œ 이 URI λŠ” **μ—­μ°Έμ‘°(dereference)λ˜μ§€ μ•ŠλŠ”λ‹€** β€” λΈŒλΌμš°μ €λ‘œ μ—΄μ§€ 말고 λ¬Έμžμ—΄ λΉ„κ΅λ‘œλ§Œ μ“Έ 것. slug λͺ©λ‘κ³Ό μ˜λ―ΈλŠ” 각 μ—”λ“œν¬μΈνŠΈμ˜ 응닡 μ„€λͺ…에 status λ³„λ‘œ λͺ…μ‹œλΌ μžˆλ‹€. μƒˆ slug 은 좔가될 수 μžˆμœΌλ―€λ‘œ, λͺ¨λ₯΄λŠ” slug 을 λ§Œλ‚˜λ©΄ `type` 이 μ•„λ‹ˆλΌ **HTTP status 둜 폴백**ν•˜λ„λ‘ κ΅¬ν˜„ν•  것. ### λ©±λ“±μ„± μœ„λ°˜: 409 와 422 의 차이 - `409` `…/idempotency-key-conflict` β€” 같은 ν‚€μ˜ **원 μš”μ²­μ΄ 아직 처리 쀑**이닀. μž μ‹œ λ’€ 같은 ν‚€λ‘œ λ‹€μ‹œ λΆ€λ₯΄λ©΄ κ·Έ κ²°κ³Όλ₯Ό λ°›λŠ”λ‹€. - `422` `…/idempotency-key-reused` β€” 같은 ν‚€λ₯Ό **λ‹€λ₯Έ body** 둜 λ³΄λƒˆλ‹€. μž¬μ‹œλ„ν•΄λ„ μ˜μ›νžˆ 같은 μ‹€νŒ¨λ‹€. μƒˆ ν‚€λ₯Ό μ“°κ±°λ‚˜ body λ₯Ό 되돌릴 것. ## 레이트 리밋 μ „μ—­ **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` κ°€ μ‹€λ¦°λ‹€. ## 버전 수λͺ…(deprecation/sunset) - **_/v1** 은 λ ˆκ±°μ‹œ V5 cutover μ™„λ£Œ μ‹œμ κΉŒμ§€ μœ μ§€λ˜λŠ” μΆ©μ‹€ ν”„λ‘μ‹œμž…λ‹ˆλ‹€. 폐지 일정이 μ •ν•΄μ§€λ©΄ /v1 응닡에 헀더 μ„Έ κ°œκ°€ μ‹€λ¦½λ‹ˆλ‹€ β€” `Deprecation`(RFC 9745, `@<epoch초>`) Β· `Sunset`(RFC 8594, HTTP-date) Β· `Link`(RFC 8288, `rel=\"deprecation\"`/`rel=\"sunset\"` β€” 이전 μ•ˆλ‚΄ λ¬Έμ„œλ₯Ό κ°€λ¦¬ν‚΅λ‹ˆλ‹€). 일정이 μ •ν•΄μ§€κΈ° μ „μ—λŠ” μ…‹ λ‹€ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ’…λ£ŒμΌμ΄ μ§€λ‚œ λ’€μ˜ ν˜ΈμΆœμ€ `404` κ°€ μ•„λ‹ˆλΌ **`410 Gone`** κ³Ό `type: …/endpoint-sunset` 으둜 κ±°μ ˆλ©λ‹ˆλ‹€. λ‘˜μ˜ 뜻이 λ‹€λ¦…λ‹ˆλ‹€ β€” `404` λŠ” \"그런 것이 μžˆμ—ˆλŠ”μ§€ λͺ¨λ₯΄κ² λ‹€\", `410` 은 \"μžˆμ—ˆκ³  μ˜λ„μ μœΌλ‘œ μ—†μ•΄λ‹€\" μž…λ‹ˆλ‹€. `410` 을 λ°›μœΌλ©΄ 경둜 μ˜€νƒ€λ₯Ό μ˜μ‹¬ν•˜μ§€ 말고 /v2 둜 μ΄μ „ν•˜μ„Έμš”. - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` ν—€λ”λ‘œ ν†΅μ§€ν•œλ‹€. μ†ŒλΉ„μžλŠ” 이 헀더λ₯Ό λͺ¨λ‹ˆν„°λ§ν•  것.
5
5
  *
6
- * The version of the OpenAPI document: 25.1.0
6
+ * The version of the OpenAPI document: 31.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).
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * CMARKET V6 Partner API
3
- * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 버전별 인증 - **_/v2** β€” OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token` μ—μ„œ 토큰 λ°œκΈ‰ ν›„ `Authorization: Bearer <token>` 헀더. - **_/v1** β€” V5 μΆ©μ‹€ platform-auth. `X-Platform-Id`(cate_set.api_id) / `X-Platform-Secret`(cate_set.api_secret, MD5-hex) ν—€λ”λ‘œ 전솑. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403` 을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € ꡬ뢄할 것. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠλŠ”λ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403 이닀. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λœλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • 발주처 λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•  것. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`. μ†ŒλΉ„μžλŠ” **HTTP status + `type` URI** 둜 λΆ„κΈ°ν•œλ‹€. - `retryable`(boolean): μžλ™ μž¬μ‹œλ„ μ•ˆμ „ μ—¬λΆ€. `true`(429Β·5xx transient)λ©΄ backoff ν›„ μž¬μ‹œλ„, `false`λ©΄ μš”μ²­μ„ 고쳐야 ν•œλ‹€. - `correlationId`: μš”μ²­ 좔적 id. `X-Correlation-Id` 응닡 헀더와 동일 β€” 문의 μ‹œ 이 값을 첨뢀. - `invalid-params`: 검증 μ‹€νŒ¨(400 `…/validation-failed`) μ‹œ μœ„λ°˜ ν•„λ“œ 경둜 λͺ©λ‘(RFC 9457 ν™•μž₯, κ°’ μ—†μŒ). `type` 은 `https://problems.cmarket.io/partner/<slug>` ν˜•νƒœμ˜ **μ•ˆμ • μ‹λ³„μž**λ‹€. RFC 9457 Β§3.1.1 이 ν—ˆμš©ν•˜λŠ” λŒ€λ‘œ 이 URI λŠ” **μ—­μ°Έμ‘°(dereference)λ˜μ§€ μ•ŠλŠ”λ‹€** β€” λΈŒλΌμš°μ €λ‘œ μ—΄μ§€ 말고 λ¬Έμžμ—΄ λΉ„κ΅λ‘œλ§Œ μ“Έ 것. slug λͺ©λ‘κ³Ό μ˜λ―ΈλŠ” 각 μ—”λ“œν¬μΈνŠΈμ˜ 응닡 μ„€λͺ…에 status λ³„λ‘œ λͺ…μ‹œλΌ μžˆλ‹€. μƒˆ slug 은 좔가될 수 μžˆμœΌλ―€λ‘œ, λͺ¨λ₯΄λŠ” slug 을 λ§Œλ‚˜λ©΄ `type` 이 μ•„λ‹ˆλΌ **HTTP status 둜 폴백**ν•˜λ„λ‘ κ΅¬ν˜„ν•  것. ### λ©±λ“±μ„± μœ„λ°˜: 409 와 422 의 차이 - `409` `…/idempotency-key-conflict` β€” 같은 ν‚€μ˜ **원 μš”μ²­μ΄ 아직 처리 쀑**이닀. μž μ‹œ λ’€ 같은 ν‚€λ‘œ λ‹€μ‹œ λΆ€λ₯΄λ©΄ κ·Έ κ²°κ³Όλ₯Ό λ°›λŠ”λ‹€. - `422` `…/idempotency-key-reused` β€” 같은 ν‚€λ₯Ό **λ‹€λ₯Έ body** 둜 λ³΄λƒˆλ‹€. μž¬μ‹œλ„ν•΄λ„ μ˜μ›νžˆ 같은 μ‹€νŒ¨λ‹€. μƒˆ ν‚€λ₯Ό μ“°κ±°λ‚˜ body λ₯Ό 되돌릴 것. ## 레이트 리밋 μ „μ—­ **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` κ°€ μ‹€λ¦°λ‹€. ## 버전 수λͺ…(deprecation/sunset) - **_/v1** 은 λ ˆκ±°μ‹œ V5 cutover μ™„λ£Œ μ‹œμ κΉŒμ§€ μœ μ§€λ˜λŠ” μΆ©μ‹€ ν”„λ‘μ‹œλ‹€. 폐지 일정이 μ •ν•΄μ§€λ©΄ /v1 응닡에 `Deprecation`(RFC 9745, `@<epoch초>`) κ³Ό `Sunset`(RFC 8594, HTTP-date) 헀더가 μ‹€λ¦°λ‹€ β€” κ·Έ μ „κΉŒμ§€λŠ” 두 헀더가 λ‚˜κ°€μ§€ μ•ŠλŠ”λ‹€. - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` ν—€λ”λ‘œ ν†΅μ§€ν•œλ‹€. μ†ŒλΉ„μžλŠ” 이 헀더λ₯Ό λͺ¨λ‹ˆν„°λ§ν•  것.
3
+ * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 버전별 인증 - **_/v2** β€” OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token` μ—μ„œ 토큰 λ°œκΈ‰ ν›„ `Authorization: Bearer <token>` 헀더. - **_/v1** β€” V5 μΆ©μ‹€ platform-auth. `X-Platform-Id`(cate_set.api_id) / `X-Platform-Secret`(cate_set.api_secret, MD5-hex) ν—€λ”λ‘œ 전솑. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403` 을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € ꡬ뢄할 것. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠλŠ”λ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403 이닀. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λœλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • 발주처 λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•  것. ## 성곡 응닡 λ΄‰νˆ¬ `/v2` 의 λͺ¨λ“  2xx 본문은 `{ \"data\": … }` μž…λ‹ˆλ‹€. 단일 λ¦¬μ†ŒμŠ€λ“  λͺ©λ‘μ΄λ“  κ°™μŠ΅λ‹ˆλ‹€. λͺ©λ‘μ²˜λŸΌ λΆ€κ°€ 정보가 μžˆλŠ” 응닡은 `meta` κ°€ ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€ β€” 예: `{ \"data\": [...], \"meta\": { \"nextCursor\": \"…\" } }`. λΆ€κ°€ 정보가 μ—†μœΌλ©΄ `meta` ν‚€λŠ” μ•„μ˜ˆ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€(빈 객체λ₯Ό μ‹£μ§€ μ•ŠμŠ΅λ‹ˆλ‹€). λ΄‰νˆ¬λ₯Ό μ“°μ§€ μ•ŠλŠ” ν‘œλ©΄μ€ μ…‹μž…λ‹ˆλ‹€. `/oauth/_*` 와 `/.well-known/_*` λŠ” 각각 RFC 6749Β·RFC 8414Β·RFC 9728 이 μ΅œμƒμœ„ ν•„λ“œλ₯Ό κ·œμ •ν•˜κ³ , `/v1/_*` 은 λ™κ²°λœ λ ˆκ±°μ‹œ ν‘œλ©΄μ΄λ©°, 파일 λ‚΄μš© 응닡은 본문이 JSON 이 μ•„λ‹™λ‹ˆλ‹€. μ—λŸ¬ μ‘λ‹΅μ—λŠ” λ΄‰νˆ¬λ₯Ό μ”Œμš°μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ β€” μ•„λž˜ problem+json 이 λ‹¨λ…μœΌλ‘œ μ±…μž„μ§‘λ‹ˆλ‹€. ## 쑰건뢀 μš”μ²­ (ETag) `/v2` 의 λͺ¨λ“  `GET` 응닡에 weak `ETag`(`W/\"…\"`)κ°€ μ‹€λ¦½λ‹ˆλ‹€. 받은 값을 λ‹€μŒ μš”μ²­μ˜ `If-None-Match` ν—€λ”λ‘œ λ˜λ³΄λ‚΄λ©΄, λ‚΄μš©μ΄ κ·ΈλŒ€λ‘œμΌ λ•Œ `304 Not Modified` λ₯Ό λ³Έλ¬Έ 없이 λ°›μŠ΅λ‹ˆλ‹€. κ²°κ³Όκ°€ λ‚˜κΈ°λ₯Ό 기닀리며 같은 μžμ›μ„ 반볡 μ‘°νšŒν•˜λŠ” 연동이라면 이 헀더 ν•˜λ‚˜λ‘œ μ „μ†‘λŸ‰μ΄ μ‚¬λΌμ§‘λ‹ˆλ‹€. 호좜 횟수 자체λ₯Ό 쀄이렀면 웹훅을 μ‚¬μš©ν•˜μ„Έμš”. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`. μ†ŒλΉ„μžλŠ” **HTTP status + `type` URI** 둜 λΆ„κΈ°ν•œλ‹€. - `retryable`(boolean): μžλ™ μž¬μ‹œλ„ μ•ˆμ „ μ—¬λΆ€. `true`(429Β·5xx transient)λ©΄ backoff ν›„ μž¬μ‹œλ„, `false`λ©΄ μš”μ²­μ„ 고쳐야 ν•œλ‹€. - `traceId`: μš”μ²­ 좔적 id. `X-Correlation-Id` 응닡 헀더와 같은 κ°’μž…λ‹ˆλ‹€ β€” λ¬Έμ˜ν•  λ•Œ 이 값을 μ²¨λΆ€ν•˜μ„Έμš”. - `correlationId`: `traceId` 와 같은 κ°’μ˜ μ˜› 이름. κΈ°μ‘΄ 연동 ν˜Έν™˜μœΌλ‘œ ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€. μƒˆ 연동은 `traceId` λ₯Ό μ½μœΌμ„Έμš”. - `invalid-params`: 검증 μ‹€νŒ¨(400 `…/validation-failed`) μ‹œ μœ„λ°˜ ν•„λ“œ 경둜 λͺ©λ‘(RFC 9457 ν™•μž₯, κ°’ μ—†μŒ). `type` 은 `https://problems.cmarket.io/partner/<slug>` ν˜•νƒœμ˜ **μ•ˆμ • μ‹λ³„μž**λ‹€. RFC 9457 Β§3.1.1 이 ν—ˆμš©ν•˜λŠ” λŒ€λ‘œ 이 URI λŠ” **μ—­μ°Έμ‘°(dereference)λ˜μ§€ μ•ŠλŠ”λ‹€** β€” λΈŒλΌμš°μ €λ‘œ μ—΄μ§€ 말고 λ¬Έμžμ—΄ λΉ„κ΅λ‘œλ§Œ μ“Έ 것. slug λͺ©λ‘κ³Ό μ˜λ―ΈλŠ” 각 μ—”λ“œν¬μΈνŠΈμ˜ 응닡 μ„€λͺ…에 status λ³„λ‘œ λͺ…μ‹œλΌ μžˆλ‹€. μƒˆ slug 은 좔가될 수 μžˆμœΌλ―€λ‘œ, λͺ¨λ₯΄λŠ” slug 을 λ§Œλ‚˜λ©΄ `type` 이 μ•„λ‹ˆλΌ **HTTP status 둜 폴백**ν•˜λ„λ‘ κ΅¬ν˜„ν•  것. ### λ©±λ“±μ„± μœ„λ°˜: 409 와 422 의 차이 - `409` `…/idempotency-key-conflict` β€” 같은 ν‚€μ˜ **원 μš”μ²­μ΄ 아직 처리 쀑**이닀. μž μ‹œ λ’€ 같은 ν‚€λ‘œ λ‹€μ‹œ λΆ€λ₯΄λ©΄ κ·Έ κ²°κ³Όλ₯Ό λ°›λŠ”λ‹€. - `422` `…/idempotency-key-reused` β€” 같은 ν‚€λ₯Ό **λ‹€λ₯Έ body** 둜 λ³΄λƒˆλ‹€. μž¬μ‹œλ„ν•΄λ„ μ˜μ›νžˆ 같은 μ‹€νŒ¨λ‹€. μƒˆ ν‚€λ₯Ό μ“°κ±°λ‚˜ body λ₯Ό 되돌릴 것. ## 레이트 리밋 μ „μ—­ **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` κ°€ μ‹€λ¦°λ‹€. ## 버전 수λͺ…(deprecation/sunset) - **_/v1** 은 λ ˆκ±°μ‹œ V5 cutover μ™„λ£Œ μ‹œμ κΉŒμ§€ μœ μ§€λ˜λŠ” μΆ©μ‹€ ν”„λ‘μ‹œμž…λ‹ˆλ‹€. 폐지 일정이 μ •ν•΄μ§€λ©΄ /v1 응닡에 헀더 μ„Έ κ°œκ°€ μ‹€λ¦½λ‹ˆλ‹€ β€” `Deprecation`(RFC 9745, `@<epoch초>`) Β· `Sunset`(RFC 8594, HTTP-date) Β· `Link`(RFC 8288, `rel=\"deprecation\"`/`rel=\"sunset\"` β€” 이전 μ•ˆλ‚΄ λ¬Έμ„œλ₯Ό κ°€λ¦¬ν‚΅λ‹ˆλ‹€). 일정이 μ •ν•΄μ§€κΈ° μ „μ—λŠ” μ…‹ λ‹€ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ’…λ£ŒμΌμ΄ μ§€λ‚œ λ’€μ˜ ν˜ΈμΆœμ€ `404` κ°€ μ•„λ‹ˆλΌ **`410 Gone`** κ³Ό `type: …/endpoint-sunset` 으둜 κ±°μ ˆλ©λ‹ˆλ‹€. λ‘˜μ˜ 뜻이 λ‹€λ¦…λ‹ˆλ‹€ β€” `404` λŠ” \"그런 것이 μžˆμ—ˆλŠ”μ§€ λͺ¨λ₯΄κ² λ‹€\", `410` 은 \"μžˆμ—ˆκ³  μ˜λ„μ μœΌλ‘œ μ—†μ•΄λ‹€\" μž…λ‹ˆλ‹€. `410` 을 λ°›μœΌλ©΄ 경둜 μ˜€νƒ€λ₯Ό μ˜μ‹¬ν•˜μ§€ 말고 /v2 둜 μ΄μ „ν•˜μ„Έμš”. - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` ν—€λ”λ‘œ ν†΅μ§€ν•œλ‹€. μ†ŒλΉ„μžλŠ” 이 헀더λ₯Ό λͺ¨λ‹ˆν„°λ§ν•  것.
4
4
  *
5
- * The version of the OpenAPI document: 25.1.0
5
+ * The version of the OpenAPI document: 31.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).
@@ -12,6 +12,8 @@
12
12
  import type { Configuration } from '../configuration';
13
13
  import type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from 'axios';
14
14
  import { type RequestArgs, BaseAPI } from '../base';
15
+ import type { IntrospectRequestDto } from '../models';
16
+ import type { IntrospectionResponseDto } from '../models';
15
17
  import type { RevokeRequestDto } from '../models';
16
18
  import type { TokenRequestDto } from '../models';
17
19
  import type { TokenResponseDto } from '../models';
@@ -19,6 +21,14 @@ import type { TokenResponseDto } from '../models';
19
21
  * OauthApi - axios parameter creator
20
22
  */
21
23
  export declare const OauthApiAxiosParamCreator: (configuration?: Configuration) => {
24
+ /**
25
+ * κ°€μ§€κ³  μžˆλŠ” access token 이 μ§€κΈˆλ„ μœ νš¨ν•œμ§€, μ–΄λ–€ μŠ€μ½”ν”„λ₯Ό κ°–λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. 자기 ν† ν°λ§Œ μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€ β€” μœ„μ‘°Β·λ§Œλ£ŒΒ·νκΈ°λκ±°λ‚˜ λ‹€λ₯Έ client 의 토큰이면 이유λ₯Ό κ΅¬λΆ„ν•˜μ§€ μ•Šκ³  `{\"active\": false}` 둜 λ‹΅ν•©λ‹ˆλ‹€(RFC 7662 Β§4).
26
+ * @summary OAuth 2.0 토큰 검사 (Token Introspection, RFC 7662)
27
+ * @param {IntrospectRequestDto} introspectRequestDto
28
+ * @param {*} [options] Override http request option.
29
+ * @throws {RequiredError}
30
+ */
31
+ introspect: (introspectRequestDto: IntrospectRequestDto, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
22
32
  /**
23
33
  * λ°œκΈ‰λ°›μ€ access token 을 μ¦‰μ‹œ λ¬΄νš¨ν™”ν•©λ‹ˆλ‹€. μœ μΆœμ„ ν™•μΈν–ˆμ„ λ•Œ TTL(15λΆ„) 만료λ₯Ό 기닀리지 μ•Šκ³  λŠλŠ” κ²½λ‘œμž…λ‹ˆλ‹€. RFC 7009 Β§2.2 에 따라 이미 λ§Œλ£Œλκ±°λ‚˜ μ•Œ 수 μ—†λŠ” 토큰을 보내도 200 으둜 μ‘λ‹΅ν•©λ‹ˆλ‹€.
24
34
  * @summary OAuth 2.0 토큰 폐기 (Token Revocation, RFC 7009)
@@ -40,6 +50,14 @@ export declare const OauthApiAxiosParamCreator: (configuration?: Configuration)
40
50
  * OauthApi - functional programming interface
41
51
  */
42
52
  export declare const OauthApiFp: (configuration?: Configuration) => {
53
+ /**
54
+ * κ°€μ§€κ³  μžˆλŠ” access token 이 μ§€κΈˆλ„ μœ νš¨ν•œμ§€, μ–΄λ–€ μŠ€μ½”ν”„λ₯Ό κ°–λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. 자기 ν† ν°λ§Œ μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€ β€” μœ„μ‘°Β·λ§Œλ£ŒΒ·νκΈ°λκ±°λ‚˜ λ‹€λ₯Έ client 의 토큰이면 이유λ₯Ό κ΅¬λΆ„ν•˜μ§€ μ•Šκ³  `{\"active\": false}` 둜 λ‹΅ν•©λ‹ˆλ‹€(RFC 7662 Β§4).
55
+ * @summary OAuth 2.0 토큰 검사 (Token Introspection, RFC 7662)
56
+ * @param {IntrospectRequestDto} introspectRequestDto
57
+ * @param {*} [options] Override http request option.
58
+ * @throws {RequiredError}
59
+ */
60
+ introspect(introspectRequestDto: IntrospectRequestDto, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<IntrospectionResponseDto>>;
43
61
  /**
44
62
  * λ°œκΈ‰λ°›μ€ access token 을 μ¦‰μ‹œ λ¬΄νš¨ν™”ν•©λ‹ˆλ‹€. μœ μΆœμ„ ν™•μΈν–ˆμ„ λ•Œ TTL(15λΆ„) 만료λ₯Ό 기닀리지 μ•Šκ³  λŠλŠ” κ²½λ‘œμž…λ‹ˆλ‹€. RFC 7009 Β§2.2 에 따라 이미 λ§Œλ£Œλκ±°λ‚˜ μ•Œ 수 μ—†λŠ” 토큰을 보내도 200 으둜 μ‘λ‹΅ν•©λ‹ˆλ‹€.
45
63
  * @summary OAuth 2.0 토큰 폐기 (Token Revocation, RFC 7009)
@@ -61,6 +79,14 @@ export declare const OauthApiFp: (configuration?: Configuration) => {
61
79
  * OauthApi - factory interface
62
80
  */
63
81
  export declare const OauthApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
82
+ /**
83
+ * κ°€μ§€κ³  μžˆλŠ” access token 이 μ§€κΈˆλ„ μœ νš¨ν•œμ§€, μ–΄λ–€ μŠ€μ½”ν”„λ₯Ό κ°–λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. 자기 ν† ν°λ§Œ μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€ β€” μœ„μ‘°Β·λ§Œλ£ŒΒ·νκΈ°λκ±°λ‚˜ λ‹€λ₯Έ client 의 토큰이면 이유λ₯Ό κ΅¬λΆ„ν•˜μ§€ μ•Šκ³  `{\"active\": false}` 둜 λ‹΅ν•©λ‹ˆλ‹€(RFC 7662 Β§4).
84
+ * @summary OAuth 2.0 토큰 검사 (Token Introspection, RFC 7662)
85
+ * @param {IntrospectRequestDto} introspectRequestDto
86
+ * @param {*} [options] Override http request option.
87
+ * @throws {RequiredError}
88
+ */
89
+ introspect(introspectRequestDto: IntrospectRequestDto, options?: RawAxiosRequestConfig): AxiosPromise<IntrospectionResponseDto>;
64
90
  /**
65
91
  * λ°œκΈ‰λ°›μ€ access token 을 μ¦‰μ‹œ λ¬΄νš¨ν™”ν•©λ‹ˆλ‹€. μœ μΆœμ„ ν™•μΈν–ˆμ„ λ•Œ TTL(15λΆ„) 만료λ₯Ό 기닀리지 μ•Šκ³  λŠλŠ” κ²½λ‘œμž…λ‹ˆλ‹€. RFC 7009 Β§2.2 에 따라 이미 λ§Œλ£Œλκ±°λ‚˜ μ•Œ 수 μ—†λŠ” 토큰을 보내도 200 으둜 μ‘λ‹΅ν•©λ‹ˆλ‹€.
66
92
  * @summary OAuth 2.0 토큰 폐기 (Token Revocation, RFC 7009)
@@ -82,6 +108,14 @@ export declare const OauthApiFactory: (configuration?: Configuration, basePath?:
82
108
  * OauthApi - object-oriented interface
83
109
  */
84
110
  export declare class OauthApi extends BaseAPI {
111
+ /**
112
+ * κ°€μ§€κ³  μžˆλŠ” access token 이 μ§€κΈˆλ„ μœ νš¨ν•œμ§€, μ–΄λ–€ μŠ€μ½”ν”„λ₯Ό κ°–λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. 자기 ν† ν°λ§Œ μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€ β€” μœ„μ‘°Β·λ§Œλ£ŒΒ·νκΈ°λκ±°λ‚˜ λ‹€λ₯Έ client 의 토큰이면 이유λ₯Ό κ΅¬λΆ„ν•˜μ§€ μ•Šκ³  `{\"active\": false}` 둜 λ‹΅ν•©λ‹ˆλ‹€(RFC 7662 Β§4).
113
+ * @summary OAuth 2.0 토큰 검사 (Token Introspection, RFC 7662)
114
+ * @param {IntrospectRequestDto} introspectRequestDto
115
+ * @param {*} [options] Override http request option.
116
+ * @throws {RequiredError}
117
+ */
118
+ introspect(introspectRequestDto: IntrospectRequestDto, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<IntrospectionResponseDto, any, {}>>;
85
119
  /**
86
120
  * λ°œκΈ‰λ°›μ€ access token 을 μ¦‰μ‹œ λ¬΄νš¨ν™”ν•©λ‹ˆλ‹€. μœ μΆœμ„ ν™•μΈν–ˆμ„ λ•Œ TTL(15λΆ„) 만료λ₯Ό 기닀리지 μ•Šκ³  λŠλŠ” κ²½λ‘œμž…λ‹ˆλ‹€. RFC 7009 Β§2.2 에 따라 이미 λ§Œλ£Œλκ±°λ‚˜ μ•Œ 수 μ—†λŠ” 토큰을 보내도 200 으둜 μ‘λ‹΅ν•©λ‹ˆλ‹€.
87
121
  * @summary OAuth 2.0 토큰 폐기 (Token Revocation, RFC 7009)
@@ -3,9 +3,9 @@
3
3
  /* eslint-disable */
4
4
  /**
5
5
  * CMARKET V6 Partner API
6
- * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 버전별 인증 - **_/v2** β€” OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token` μ—μ„œ 토큰 λ°œκΈ‰ ν›„ `Authorization: Bearer <token>` 헀더. - **_/v1** β€” V5 μΆ©μ‹€ platform-auth. `X-Platform-Id`(cate_set.api_id) / `X-Platform-Secret`(cate_set.api_secret, MD5-hex) ν—€λ”λ‘œ 전솑. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403` 을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € ꡬ뢄할 것. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠλŠ”λ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403 이닀. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λœλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • 발주처 λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•  것. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`. μ†ŒλΉ„μžλŠ” **HTTP status + `type` URI** 둜 λΆ„κΈ°ν•œλ‹€. - `retryable`(boolean): μžλ™ μž¬μ‹œλ„ μ•ˆμ „ μ—¬λΆ€. `true`(429Β·5xx transient)λ©΄ backoff ν›„ μž¬μ‹œλ„, `false`λ©΄ μš”μ²­μ„ 고쳐야 ν•œλ‹€. - `correlationId`: μš”μ²­ 좔적 id. `X-Correlation-Id` 응닡 헀더와 동일 β€” 문의 μ‹œ 이 값을 첨뢀. - `invalid-params`: 검증 μ‹€νŒ¨(400 `…/validation-failed`) μ‹œ μœ„λ°˜ ν•„λ“œ 경둜 λͺ©λ‘(RFC 9457 ν™•μž₯, κ°’ μ—†μŒ). `type` 은 `https://problems.cmarket.io/partner/<slug>` ν˜•νƒœμ˜ **μ•ˆμ • μ‹λ³„μž**λ‹€. RFC 9457 Β§3.1.1 이 ν—ˆμš©ν•˜λŠ” λŒ€λ‘œ 이 URI λŠ” **μ—­μ°Έμ‘°(dereference)λ˜μ§€ μ•ŠλŠ”λ‹€** β€” λΈŒλΌμš°μ €λ‘œ μ—΄μ§€ 말고 λ¬Έμžμ—΄ λΉ„κ΅λ‘œλ§Œ μ“Έ 것. slug λͺ©λ‘κ³Ό μ˜λ―ΈλŠ” 각 μ—”λ“œν¬μΈνŠΈμ˜ 응닡 μ„€λͺ…에 status λ³„λ‘œ λͺ…μ‹œλΌ μžˆλ‹€. μƒˆ slug 은 좔가될 수 μžˆμœΌλ―€λ‘œ, λͺ¨λ₯΄λŠ” slug 을 λ§Œλ‚˜λ©΄ `type` 이 μ•„λ‹ˆλΌ **HTTP status 둜 폴백**ν•˜λ„λ‘ κ΅¬ν˜„ν•  것. ### λ©±λ“±μ„± μœ„λ°˜: 409 와 422 의 차이 - `409` `…/idempotency-key-conflict` β€” 같은 ν‚€μ˜ **원 μš”μ²­μ΄ 아직 처리 쀑**이닀. μž μ‹œ λ’€ 같은 ν‚€λ‘œ λ‹€μ‹œ λΆ€λ₯΄λ©΄ κ·Έ κ²°κ³Όλ₯Ό λ°›λŠ”λ‹€. - `422` `…/idempotency-key-reused` β€” 같은 ν‚€λ₯Ό **λ‹€λ₯Έ body** 둜 λ³΄λƒˆλ‹€. μž¬μ‹œλ„ν•΄λ„ μ˜μ›νžˆ 같은 μ‹€νŒ¨λ‹€. μƒˆ ν‚€λ₯Ό μ“°κ±°λ‚˜ body λ₯Ό 되돌릴 것. ## 레이트 리밋 μ „μ—­ **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` κ°€ μ‹€λ¦°λ‹€. ## 버전 수λͺ…(deprecation/sunset) - **_/v1** 은 λ ˆκ±°μ‹œ V5 cutover μ™„λ£Œ μ‹œμ κΉŒμ§€ μœ μ§€λ˜λŠ” μΆ©μ‹€ ν”„λ‘μ‹œλ‹€. 폐지 일정이 μ •ν•΄μ§€λ©΄ /v1 응닡에 `Deprecation`(RFC 9745, `@<epoch초>`) κ³Ό `Sunset`(RFC 8594, HTTP-date) 헀더가 μ‹€λ¦°λ‹€ β€” κ·Έ μ „κΉŒμ§€λŠ” 두 헀더가 λ‚˜κ°€μ§€ μ•ŠλŠ”λ‹€. - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` ν—€λ”λ‘œ ν†΅μ§€ν•œλ‹€. μ†ŒλΉ„μžλŠ” 이 헀더λ₯Ό λͺ¨λ‹ˆν„°λ§ν•  것.
6
+ * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 버전별 인증 - **_/v2** β€” OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token` μ—μ„œ 토큰 λ°œκΈ‰ ν›„ `Authorization: Bearer <token>` 헀더. - **_/v1** β€” V5 μΆ©μ‹€ platform-auth. `X-Platform-Id`(cate_set.api_id) / `X-Platform-Secret`(cate_set.api_secret, MD5-hex) ν—€λ”λ‘œ 전솑. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403` 을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € ꡬ뢄할 것. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠλŠ”λ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403 이닀. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λœλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • 발주처 λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•  것. ## 성곡 응닡 λ΄‰νˆ¬ `/v2` 의 λͺ¨λ“  2xx 본문은 `{ \"data\": … }` μž…λ‹ˆλ‹€. 단일 λ¦¬μ†ŒμŠ€λ“  λͺ©λ‘μ΄λ“  κ°™μŠ΅λ‹ˆλ‹€. λͺ©λ‘μ²˜λŸΌ λΆ€κ°€ 정보가 μžˆλŠ” 응닡은 `meta` κ°€ ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€ β€” 예: `{ \"data\": [...], \"meta\": { \"nextCursor\": \"…\" } }`. λΆ€κ°€ 정보가 μ—†μœΌλ©΄ `meta` ν‚€λŠ” μ•„μ˜ˆ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€(빈 객체λ₯Ό μ‹£μ§€ μ•ŠμŠ΅λ‹ˆλ‹€). λ΄‰νˆ¬λ₯Ό μ“°μ§€ μ•ŠλŠ” ν‘œλ©΄μ€ μ…‹μž…λ‹ˆλ‹€. `/oauth/_*` 와 `/.well-known/_*` λŠ” 각각 RFC 6749Β·RFC 8414Β·RFC 9728 이 μ΅œμƒμœ„ ν•„λ“œλ₯Ό κ·œμ •ν•˜κ³ , `/v1/_*` 은 λ™κ²°λœ λ ˆκ±°μ‹œ ν‘œλ©΄μ΄λ©°, 파일 λ‚΄μš© 응닡은 본문이 JSON 이 μ•„λ‹™λ‹ˆλ‹€. μ—λŸ¬ μ‘λ‹΅μ—λŠ” λ΄‰νˆ¬λ₯Ό μ”Œμš°μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ β€” μ•„λž˜ problem+json 이 λ‹¨λ…μœΌλ‘œ μ±…μž„μ§‘λ‹ˆλ‹€. ## 쑰건뢀 μš”μ²­ (ETag) `/v2` 의 λͺ¨λ“  `GET` 응닡에 weak `ETag`(`W/\"…\"`)κ°€ μ‹€λ¦½λ‹ˆλ‹€. 받은 값을 λ‹€μŒ μš”μ²­μ˜ `If-None-Match` ν—€λ”λ‘œ λ˜λ³΄λ‚΄λ©΄, λ‚΄μš©μ΄ κ·ΈλŒ€λ‘œμΌ λ•Œ `304 Not Modified` λ₯Ό λ³Έλ¬Έ 없이 λ°›μŠ΅λ‹ˆλ‹€. κ²°κ³Όκ°€ λ‚˜κΈ°λ₯Ό 기닀리며 같은 μžμ›μ„ 반볡 μ‘°νšŒν•˜λŠ” 연동이라면 이 헀더 ν•˜λ‚˜λ‘œ μ „μ†‘λŸ‰μ΄ μ‚¬λΌμ§‘λ‹ˆλ‹€. 호좜 횟수 자체λ₯Ό 쀄이렀면 웹훅을 μ‚¬μš©ν•˜μ„Έμš”. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`. μ†ŒλΉ„μžλŠ” **HTTP status + `type` URI** 둜 λΆ„κΈ°ν•œλ‹€. - `retryable`(boolean): μžλ™ μž¬μ‹œλ„ μ•ˆμ „ μ—¬λΆ€. `true`(429Β·5xx transient)λ©΄ backoff ν›„ μž¬μ‹œλ„, `false`λ©΄ μš”μ²­μ„ 고쳐야 ν•œλ‹€. - `traceId`: μš”μ²­ 좔적 id. `X-Correlation-Id` 응닡 헀더와 같은 κ°’μž…λ‹ˆλ‹€ β€” λ¬Έμ˜ν•  λ•Œ 이 값을 μ²¨λΆ€ν•˜μ„Έμš”. - `correlationId`: `traceId` 와 같은 κ°’μ˜ μ˜› 이름. κΈ°μ‘΄ 연동 ν˜Έν™˜μœΌλ‘œ ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€. μƒˆ 연동은 `traceId` λ₯Ό μ½μœΌμ„Έμš”. - `invalid-params`: 검증 μ‹€νŒ¨(400 `…/validation-failed`) μ‹œ μœ„λ°˜ ν•„λ“œ 경둜 λͺ©λ‘(RFC 9457 ν™•μž₯, κ°’ μ—†μŒ). `type` 은 `https://problems.cmarket.io/partner/<slug>` ν˜•νƒœμ˜ **μ•ˆμ • μ‹λ³„μž**λ‹€. RFC 9457 Β§3.1.1 이 ν—ˆμš©ν•˜λŠ” λŒ€λ‘œ 이 URI λŠ” **μ—­μ°Έμ‘°(dereference)λ˜μ§€ μ•ŠλŠ”λ‹€** β€” λΈŒλΌμš°μ €λ‘œ μ—΄μ§€ 말고 λ¬Έμžμ—΄ λΉ„κ΅λ‘œλ§Œ μ“Έ 것. slug λͺ©λ‘κ³Ό μ˜λ―ΈλŠ” 각 μ—”λ“œν¬μΈνŠΈμ˜ 응닡 μ„€λͺ…에 status λ³„λ‘œ λͺ…μ‹œλΌ μžˆλ‹€. μƒˆ slug 은 좔가될 수 μžˆμœΌλ―€λ‘œ, λͺ¨λ₯΄λŠ” slug 을 λ§Œλ‚˜λ©΄ `type` 이 μ•„λ‹ˆλΌ **HTTP status 둜 폴백**ν•˜λ„λ‘ κ΅¬ν˜„ν•  것. ### λ©±λ“±μ„± μœ„λ°˜: 409 와 422 의 차이 - `409` `…/idempotency-key-conflict` β€” 같은 ν‚€μ˜ **원 μš”μ²­μ΄ 아직 처리 쀑**이닀. μž μ‹œ λ’€ 같은 ν‚€λ‘œ λ‹€μ‹œ λΆ€λ₯΄λ©΄ κ·Έ κ²°κ³Όλ₯Ό λ°›λŠ”λ‹€. - `422` `…/idempotency-key-reused` β€” 같은 ν‚€λ₯Ό **λ‹€λ₯Έ body** 둜 λ³΄λƒˆλ‹€. μž¬μ‹œλ„ν•΄λ„ μ˜μ›νžˆ 같은 μ‹€νŒ¨λ‹€. μƒˆ ν‚€λ₯Ό μ“°κ±°λ‚˜ body λ₯Ό 되돌릴 것. ## 레이트 리밋 μ „μ—­ **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` κ°€ μ‹€λ¦°λ‹€. ## 버전 수λͺ…(deprecation/sunset) - **_/v1** 은 λ ˆκ±°μ‹œ V5 cutover μ™„λ£Œ μ‹œμ κΉŒμ§€ μœ μ§€λ˜λŠ” μΆ©μ‹€ ν”„λ‘μ‹œμž…λ‹ˆλ‹€. 폐지 일정이 μ •ν•΄μ§€λ©΄ /v1 응닡에 헀더 μ„Έ κ°œκ°€ μ‹€λ¦½λ‹ˆλ‹€ β€” `Deprecation`(RFC 9745, `@<epoch초>`) Β· `Sunset`(RFC 8594, HTTP-date) Β· `Link`(RFC 8288, `rel=\"deprecation\"`/`rel=\"sunset\"` β€” 이전 μ•ˆλ‚΄ λ¬Έμ„œλ₯Ό κ°€λ¦¬ν‚΅λ‹ˆλ‹€). 일정이 μ •ν•΄μ§€κΈ° μ „μ—λŠ” μ…‹ λ‹€ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ’…λ£ŒμΌμ΄ μ§€λ‚œ λ’€μ˜ ν˜ΈμΆœμ€ `404` κ°€ μ•„λ‹ˆλΌ **`410 Gone`** κ³Ό `type: …/endpoint-sunset` 으둜 κ±°μ ˆλ©λ‹ˆλ‹€. λ‘˜μ˜ 뜻이 λ‹€λ¦…λ‹ˆλ‹€ β€” `404` λŠ” \"그런 것이 μžˆμ—ˆλŠ”μ§€ λͺ¨λ₯΄κ² λ‹€\", `410` 은 \"μžˆμ—ˆκ³  μ˜λ„μ μœΌλ‘œ μ—†μ•΄λ‹€\" μž…λ‹ˆλ‹€. `410` 을 λ°›μœΌλ©΄ 경둜 μ˜€νƒ€λ₯Ό μ˜μ‹¬ν•˜μ§€ 말고 /v2 둜 μ΄μ „ν•˜μ„Έμš”. - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` ν—€λ”λ‘œ ν†΅μ§€ν•œλ‹€. μ†ŒλΉ„μžλŠ” 이 헀더λ₯Ό λͺ¨λ‹ˆν„°λ§ν•  것.
7
7
  *
8
- * The version of the OpenAPI document: 25.1.0
8
+ * The version of the OpenAPI document: 31.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).
@@ -34,6 +34,37 @@ const base_1 = require("../base");
34
34
  */
35
35
  const OauthApiAxiosParamCreator = function (configuration) {
36
36
  return {
37
+ /**
38
+ * κ°€μ§€κ³  μžˆλŠ” access token 이 μ§€κΈˆλ„ μœ νš¨ν•œμ§€, μ–΄λ–€ μŠ€μ½”ν”„λ₯Ό κ°–λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. 자기 ν† ν°λ§Œ μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€ β€” μœ„μ‘°Β·λ§Œλ£ŒΒ·νκΈ°λκ±°λ‚˜ λ‹€λ₯Έ client 의 토큰이면 이유λ₯Ό κ΅¬λΆ„ν•˜μ§€ μ•Šκ³  `{\"active\": false}` 둜 λ‹΅ν•©λ‹ˆλ‹€(RFC 7662 Β§4).
39
+ * @summary OAuth 2.0 토큰 검사 (Token Introspection, RFC 7662)
40
+ * @param {IntrospectRequestDto} introspectRequestDto
41
+ * @param {*} [options] Override http request option.
42
+ * @throws {RequiredError}
43
+ */
44
+ introspect: (introspectRequestDto_1, ...args_1) => __awaiter(this, [introspectRequestDto_1, ...args_1], void 0, function* (introspectRequestDto, options = {}) {
45
+ // verify required parameter 'introspectRequestDto' is not null or undefined
46
+ (0, common_1.assertParamExists)('introspect', 'introspectRequestDto', introspectRequestDto);
47
+ const localVarPath = `/oauth/introspect`;
48
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
49
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
50
+ let baseOptions;
51
+ if (configuration) {
52
+ baseOptions = configuration.baseOptions;
53
+ }
54
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
55
+ const localVarHeaderParameter = {};
56
+ const localVarQueryParameter = {};
57
+ localVarHeaderParameter['Content-Type'] = 'application/json';
58
+ localVarHeaderParameter['Accept'] = 'application/json';
59
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
60
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
61
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
62
+ localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(introspectRequestDto, localVarRequestOptions, configuration);
63
+ return {
64
+ url: (0, common_1.toPathString)(localVarUrlObj),
65
+ options: localVarRequestOptions,
66
+ };
67
+ }),
37
68
  /**
38
69
  * λ°œκΈ‰λ°›μ€ access token 을 μ¦‰μ‹œ λ¬΄νš¨ν™”ν•©λ‹ˆλ‹€. μœ μΆœμ„ ν™•μΈν–ˆμ„ λ•Œ TTL(15λΆ„) 만료λ₯Ό 기닀리지 μ•Šκ³  λŠλŠ” κ²½λ‘œμž…λ‹ˆλ‹€. RFC 7009 Β§2.2 에 따라 이미 λ§Œλ£Œλκ±°λ‚˜ μ•Œ 수 μ—†λŠ” 토큰을 보내도 200 으둜 μ‘λ‹΅ν•©λ‹ˆλ‹€.
39
70
  * @summary OAuth 2.0 토큰 폐기 (Token Revocation, RFC 7009)
@@ -105,6 +136,22 @@ exports.OauthApiAxiosParamCreator = OauthApiAxiosParamCreator;
105
136
  const OauthApiFp = function (configuration) {
106
137
  const localVarAxiosParamCreator = (0, exports.OauthApiAxiosParamCreator)(configuration);
107
138
  return {
139
+ /**
140
+ * κ°€μ§€κ³  μžˆλŠ” access token 이 μ§€κΈˆλ„ μœ νš¨ν•œμ§€, μ–΄λ–€ μŠ€μ½”ν”„λ₯Ό κ°–λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. 자기 ν† ν°λ§Œ μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€ β€” μœ„μ‘°Β·λ§Œλ£ŒΒ·νκΈ°λκ±°λ‚˜ λ‹€λ₯Έ client 의 토큰이면 이유λ₯Ό κ΅¬λΆ„ν•˜μ§€ μ•Šκ³  `{\"active\": false}` 둜 λ‹΅ν•©λ‹ˆλ‹€(RFC 7662 Β§4).
141
+ * @summary OAuth 2.0 토큰 검사 (Token Introspection, RFC 7662)
142
+ * @param {IntrospectRequestDto} introspectRequestDto
143
+ * @param {*} [options] Override http request option.
144
+ * @throws {RequiredError}
145
+ */
146
+ introspect(introspectRequestDto, options) {
147
+ return __awaiter(this, void 0, void 0, function* () {
148
+ var _a, _b, _c;
149
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.introspect(introspectRequestDto, options);
150
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
151
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['OauthApi.introspect']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
152
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
153
+ });
154
+ },
108
155
  /**
109
156
  * λ°œκΈ‰λ°›μ€ access token 을 μ¦‰μ‹œ λ¬΄νš¨ν™”ν•©λ‹ˆλ‹€. μœ μΆœμ„ ν™•μΈν–ˆμ„ λ•Œ TTL(15λΆ„) 만료λ₯Ό 기닀리지 μ•Šκ³  λŠλŠ” κ²½λ‘œμž…λ‹ˆλ‹€. RFC 7009 Β§2.2 에 따라 이미 λ§Œλ£Œλκ±°λ‚˜ μ•Œ 수 μ—†λŠ” 토큰을 보내도 200 으둜 μ‘λ‹΅ν•©λ‹ˆλ‹€.
110
157
  * @summary OAuth 2.0 토큰 폐기 (Token Revocation, RFC 7009)
@@ -146,6 +193,16 @@ exports.OauthApiFp = OauthApiFp;
146
193
  const OauthApiFactory = function (configuration, basePath, axios) {
147
194
  const localVarFp = (0, exports.OauthApiFp)(configuration);
148
195
  return {
196
+ /**
197
+ * κ°€μ§€κ³  μžˆλŠ” access token 이 μ§€κΈˆλ„ μœ νš¨ν•œμ§€, μ–΄λ–€ μŠ€μ½”ν”„λ₯Ό κ°–λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. 자기 ν† ν°λ§Œ μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€ β€” μœ„μ‘°Β·λ§Œλ£ŒΒ·νκΈ°λκ±°λ‚˜ λ‹€λ₯Έ client 의 토큰이면 이유λ₯Ό κ΅¬λΆ„ν•˜μ§€ μ•Šκ³  `{\"active\": false}` 둜 λ‹΅ν•©λ‹ˆλ‹€(RFC 7662 Β§4).
198
+ * @summary OAuth 2.0 토큰 검사 (Token Introspection, RFC 7662)
199
+ * @param {IntrospectRequestDto} introspectRequestDto
200
+ * @param {*} [options] Override http request option.
201
+ * @throws {RequiredError}
202
+ */
203
+ introspect(introspectRequestDto, options) {
204
+ return localVarFp.introspect(introspectRequestDto, options).then((request) => request(axios, basePath));
205
+ },
149
206
  /**
150
207
  * λ°œκΈ‰λ°›μ€ access token 을 μ¦‰μ‹œ λ¬΄νš¨ν™”ν•©λ‹ˆλ‹€. μœ μΆœμ„ ν™•μΈν–ˆμ„ λ•Œ TTL(15λΆ„) 만료λ₯Ό 기닀리지 μ•Šκ³  λŠλŠ” κ²½λ‘œμž…λ‹ˆλ‹€. RFC 7009 Β§2.2 에 따라 이미 λ§Œλ£Œλκ±°λ‚˜ μ•Œ 수 μ—†λŠ” 토큰을 보내도 200 으둜 μ‘λ‹΅ν•©λ‹ˆλ‹€.
151
208
  * @summary OAuth 2.0 토큰 폐기 (Token Revocation, RFC 7009)
@@ -173,6 +230,16 @@ exports.OauthApiFactory = OauthApiFactory;
173
230
  * OauthApi - object-oriented interface
174
231
  */
175
232
  class OauthApi extends base_1.BaseAPI {
233
+ /**
234
+ * κ°€μ§€κ³  μžˆλŠ” access token 이 μ§€κΈˆλ„ μœ νš¨ν•œμ§€, μ–΄λ–€ μŠ€μ½”ν”„λ₯Ό κ°–λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. 자기 ν† ν°λ§Œ μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€ β€” μœ„μ‘°Β·λ§Œλ£ŒΒ·νκΈ°λκ±°λ‚˜ λ‹€λ₯Έ client 의 토큰이면 이유λ₯Ό κ΅¬λΆ„ν•˜μ§€ μ•Šκ³  `{\"active\": false}` 둜 λ‹΅ν•©λ‹ˆλ‹€(RFC 7662 Β§4).
235
+ * @summary OAuth 2.0 토큰 검사 (Token Introspection, RFC 7662)
236
+ * @param {IntrospectRequestDto} introspectRequestDto
237
+ * @param {*} [options] Override http request option.
238
+ * @throws {RequiredError}
239
+ */
240
+ introspect(introspectRequestDto, options) {
241
+ return (0, exports.OauthApiFp)(this.configuration).introspect(introspectRequestDto, options).then((request) => request(this.axios, this.basePath));
242
+ }
176
243
  /**
177
244
  * λ°œκΈ‰λ°›μ€ access token 을 μ¦‰μ‹œ λ¬΄νš¨ν™”ν•©λ‹ˆλ‹€. μœ μΆœμ„ ν™•μΈν–ˆμ„ λ•Œ TTL(15λΆ„) 만료λ₯Ό 기닀리지 μ•Šκ³  λŠλŠ” κ²½λ‘œμž…λ‹ˆλ‹€. RFC 7009 Β§2.2 에 따라 이미 λ§Œλ£Œλκ±°λ‚˜ μ•Œ 수 μ—†λŠ” 토큰을 보내도 200 으둜 μ‘λ‹΅ν•©λ‹ˆλ‹€.
178
245
  * @summary OAuth 2.0 토큰 폐기 (Token Revocation, RFC 7009)
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * CMARKET V6 Partner API
3
- * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 버전별 인증 - **_/v2** β€” OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token` μ—μ„œ 토큰 λ°œκΈ‰ ν›„ `Authorization: Bearer <token>` 헀더. - **_/v1** β€” V5 μΆ©μ‹€ platform-auth. `X-Platform-Id`(cate_set.api_id) / `X-Platform-Secret`(cate_set.api_secret, MD5-hex) ν—€λ”λ‘œ 전솑. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403` 을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € ꡬ뢄할 것. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠλŠ”λ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403 이닀. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λœλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • 발주처 λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•  것. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`. μ†ŒλΉ„μžλŠ” **HTTP status + `type` URI** 둜 λΆ„κΈ°ν•œλ‹€. - `retryable`(boolean): μžλ™ μž¬μ‹œλ„ μ•ˆμ „ μ—¬λΆ€. `true`(429Β·5xx transient)λ©΄ backoff ν›„ μž¬μ‹œλ„, `false`λ©΄ μš”μ²­μ„ 고쳐야 ν•œλ‹€. - `correlationId`: μš”μ²­ 좔적 id. `X-Correlation-Id` 응닡 헀더와 동일 β€” 문의 μ‹œ 이 값을 첨뢀. - `invalid-params`: 검증 μ‹€νŒ¨(400 `…/validation-failed`) μ‹œ μœ„λ°˜ ν•„λ“œ 경둜 λͺ©λ‘(RFC 9457 ν™•μž₯, κ°’ μ—†μŒ). `type` 은 `https://problems.cmarket.io/partner/<slug>` ν˜•νƒœμ˜ **μ•ˆμ • μ‹λ³„μž**λ‹€. RFC 9457 Β§3.1.1 이 ν—ˆμš©ν•˜λŠ” λŒ€λ‘œ 이 URI λŠ” **μ—­μ°Έμ‘°(dereference)λ˜μ§€ μ•ŠλŠ”λ‹€** β€” λΈŒλΌμš°μ €λ‘œ μ—΄μ§€ 말고 λ¬Έμžμ—΄ λΉ„κ΅λ‘œλ§Œ μ“Έ 것. slug λͺ©λ‘κ³Ό μ˜λ―ΈλŠ” 각 μ—”λ“œν¬μΈνŠΈμ˜ 응닡 μ„€λͺ…에 status λ³„λ‘œ λͺ…μ‹œλΌ μžˆλ‹€. μƒˆ slug 은 좔가될 수 μžˆμœΌλ―€λ‘œ, λͺ¨λ₯΄λŠ” slug 을 λ§Œλ‚˜λ©΄ `type` 이 μ•„λ‹ˆλΌ **HTTP status 둜 폴백**ν•˜λ„λ‘ κ΅¬ν˜„ν•  것. ### λ©±λ“±μ„± μœ„λ°˜: 409 와 422 의 차이 - `409` `…/idempotency-key-conflict` β€” 같은 ν‚€μ˜ **원 μš”μ²­μ΄ 아직 처리 쀑**이닀. μž μ‹œ λ’€ 같은 ν‚€λ‘œ λ‹€μ‹œ λΆ€λ₯΄λ©΄ κ·Έ κ²°κ³Όλ₯Ό λ°›λŠ”λ‹€. - `422` `…/idempotency-key-reused` β€” 같은 ν‚€λ₯Ό **λ‹€λ₯Έ body** 둜 λ³΄λƒˆλ‹€. μž¬μ‹œλ„ν•΄λ„ μ˜μ›νžˆ 같은 μ‹€νŒ¨λ‹€. μƒˆ ν‚€λ₯Ό μ“°κ±°λ‚˜ body λ₯Ό 되돌릴 것. ## 레이트 리밋 μ „μ—­ **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` κ°€ μ‹€λ¦°λ‹€. ## 버전 수λͺ…(deprecation/sunset) - **_/v1** 은 λ ˆκ±°μ‹œ V5 cutover μ™„λ£Œ μ‹œμ κΉŒμ§€ μœ μ§€λ˜λŠ” μΆ©μ‹€ ν”„λ‘μ‹œλ‹€. 폐지 일정이 μ •ν•΄μ§€λ©΄ /v1 응닡에 `Deprecation`(RFC 9745, `@<epoch초>`) κ³Ό `Sunset`(RFC 8594, HTTP-date) 헀더가 μ‹€λ¦°λ‹€ β€” κ·Έ μ „κΉŒμ§€λŠ” 두 헀더가 λ‚˜κ°€μ§€ μ•ŠλŠ”λ‹€. - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` ν—€λ”λ‘œ ν†΅μ§€ν•œλ‹€. μ†ŒλΉ„μžλŠ” 이 헀더λ₯Ό λͺ¨λ‹ˆν„°λ§ν•  것.
3
+ * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 버전별 인증 - **_/v2** β€” OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token` μ—μ„œ 토큰 λ°œκΈ‰ ν›„ `Authorization: Bearer <token>` 헀더. - **_/v1** β€” V5 μΆ©μ‹€ platform-auth. `X-Platform-Id`(cate_set.api_id) / `X-Platform-Secret`(cate_set.api_secret, MD5-hex) ν—€λ”λ‘œ 전솑. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403` 을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € ꡬ뢄할 것. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠλŠ”λ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403 이닀. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λœλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • 발주처 λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•  것. ## 성곡 응닡 λ΄‰νˆ¬ `/v2` 의 λͺ¨λ“  2xx 본문은 `{ \"data\": … }` μž…λ‹ˆλ‹€. 단일 λ¦¬μ†ŒμŠ€λ“  λͺ©λ‘μ΄λ“  κ°™μŠ΅λ‹ˆλ‹€. λͺ©λ‘μ²˜λŸΌ λΆ€κ°€ 정보가 μžˆλŠ” 응닡은 `meta` κ°€ ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€ β€” 예: `{ \"data\": [...], \"meta\": { \"nextCursor\": \"…\" } }`. λΆ€κ°€ 정보가 μ—†μœΌλ©΄ `meta` ν‚€λŠ” μ•„μ˜ˆ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€(빈 객체λ₯Ό μ‹£μ§€ μ•ŠμŠ΅λ‹ˆλ‹€). λ΄‰νˆ¬λ₯Ό μ“°μ§€ μ•ŠλŠ” ν‘œλ©΄μ€ μ…‹μž…λ‹ˆλ‹€. `/oauth/_*` 와 `/.well-known/_*` λŠ” 각각 RFC 6749Β·RFC 8414Β·RFC 9728 이 μ΅œμƒμœ„ ν•„λ“œλ₯Ό κ·œμ •ν•˜κ³ , `/v1/_*` 은 λ™κ²°λœ λ ˆκ±°μ‹œ ν‘œλ©΄μ΄λ©°, 파일 λ‚΄μš© 응닡은 본문이 JSON 이 μ•„λ‹™λ‹ˆλ‹€. μ—λŸ¬ μ‘λ‹΅μ—λŠ” λ΄‰νˆ¬λ₯Ό μ”Œμš°μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ β€” μ•„λž˜ problem+json 이 λ‹¨λ…μœΌλ‘œ μ±…μž„μ§‘λ‹ˆλ‹€. ## 쑰건뢀 μš”μ²­ (ETag) `/v2` 의 λͺ¨λ“  `GET` 응닡에 weak `ETag`(`W/\"…\"`)κ°€ μ‹€λ¦½λ‹ˆλ‹€. 받은 값을 λ‹€μŒ μš”μ²­μ˜ `If-None-Match` ν—€λ”λ‘œ λ˜λ³΄λ‚΄λ©΄, λ‚΄μš©μ΄ κ·ΈλŒ€λ‘œμΌ λ•Œ `304 Not Modified` λ₯Ό λ³Έλ¬Έ 없이 λ°›μŠ΅λ‹ˆλ‹€. κ²°κ³Όκ°€ λ‚˜κΈ°λ₯Ό 기닀리며 같은 μžμ›μ„ 반볡 μ‘°νšŒν•˜λŠ” 연동이라면 이 헀더 ν•˜λ‚˜λ‘œ μ „μ†‘λŸ‰μ΄ μ‚¬λΌμ§‘λ‹ˆλ‹€. 호좜 횟수 자체λ₯Ό 쀄이렀면 웹훅을 μ‚¬μš©ν•˜μ„Έμš”. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`. μ†ŒλΉ„μžλŠ” **HTTP status + `type` URI** 둜 λΆ„κΈ°ν•œλ‹€. - `retryable`(boolean): μžλ™ μž¬μ‹œλ„ μ•ˆμ „ μ—¬λΆ€. `true`(429Β·5xx transient)λ©΄ backoff ν›„ μž¬μ‹œλ„, `false`λ©΄ μš”μ²­μ„ 고쳐야 ν•œλ‹€. - `traceId`: μš”μ²­ 좔적 id. `X-Correlation-Id` 응닡 헀더와 같은 κ°’μž…λ‹ˆλ‹€ β€” λ¬Έμ˜ν•  λ•Œ 이 값을 μ²¨λΆ€ν•˜μ„Έμš”. - `correlationId`: `traceId` 와 같은 κ°’μ˜ μ˜› 이름. κΈ°μ‘΄ 연동 ν˜Έν™˜μœΌλ‘œ ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€. μƒˆ 연동은 `traceId` λ₯Ό μ½μœΌμ„Έμš”. - `invalid-params`: 검증 μ‹€νŒ¨(400 `…/validation-failed`) μ‹œ μœ„λ°˜ ν•„λ“œ 경둜 λͺ©λ‘(RFC 9457 ν™•μž₯, κ°’ μ—†μŒ). `type` 은 `https://problems.cmarket.io/partner/<slug>` ν˜•νƒœμ˜ **μ•ˆμ • μ‹λ³„μž**λ‹€. RFC 9457 Β§3.1.1 이 ν—ˆμš©ν•˜λŠ” λŒ€λ‘œ 이 URI λŠ” **μ—­μ°Έμ‘°(dereference)λ˜μ§€ μ•ŠλŠ”λ‹€** β€” λΈŒλΌμš°μ €λ‘œ μ—΄μ§€ 말고 λ¬Έμžμ—΄ λΉ„κ΅λ‘œλ§Œ μ“Έ 것. slug λͺ©λ‘κ³Ό μ˜λ―ΈλŠ” 각 μ—”λ“œν¬μΈνŠΈμ˜ 응닡 μ„€λͺ…에 status λ³„λ‘œ λͺ…μ‹œλΌ μžˆλ‹€. μƒˆ slug 은 좔가될 수 μžˆμœΌλ―€λ‘œ, λͺ¨λ₯΄λŠ” slug 을 λ§Œλ‚˜λ©΄ `type` 이 μ•„λ‹ˆλΌ **HTTP status 둜 폴백**ν•˜λ„λ‘ κ΅¬ν˜„ν•  것. ### λ©±λ“±μ„± μœ„λ°˜: 409 와 422 의 차이 - `409` `…/idempotency-key-conflict` β€” 같은 ν‚€μ˜ **원 μš”μ²­μ΄ 아직 처리 쀑**이닀. μž μ‹œ λ’€ 같은 ν‚€λ‘œ λ‹€μ‹œ λΆ€λ₯΄λ©΄ κ·Έ κ²°κ³Όλ₯Ό λ°›λŠ”λ‹€. - `422` `…/idempotency-key-reused` β€” 같은 ν‚€λ₯Ό **λ‹€λ₯Έ body** 둜 λ³΄λƒˆλ‹€. μž¬μ‹œλ„ν•΄λ„ μ˜μ›νžˆ 같은 μ‹€νŒ¨λ‹€. μƒˆ ν‚€λ₯Ό μ“°κ±°λ‚˜ body λ₯Ό 되돌릴 것. ## 레이트 리밋 μ „μ—­ **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` κ°€ μ‹€λ¦°λ‹€. ## 버전 수λͺ…(deprecation/sunset) - **_/v1** 은 λ ˆκ±°μ‹œ V5 cutover μ™„λ£Œ μ‹œμ κΉŒμ§€ μœ μ§€λ˜λŠ” μΆ©μ‹€ ν”„λ‘μ‹œμž…λ‹ˆλ‹€. 폐지 일정이 μ •ν•΄μ§€λ©΄ /v1 응닡에 헀더 μ„Έ κ°œκ°€ μ‹€λ¦½λ‹ˆλ‹€ β€” `Deprecation`(RFC 9745, `@<epoch초>`) Β· `Sunset`(RFC 8594, HTTP-date) Β· `Link`(RFC 8288, `rel=\"deprecation\"`/`rel=\"sunset\"` β€” 이전 μ•ˆλ‚΄ λ¬Έμ„œλ₯Ό κ°€λ¦¬ν‚΅λ‹ˆλ‹€). 일정이 μ •ν•΄μ§€κΈ° μ „μ—λŠ” μ…‹ λ‹€ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ’…λ£ŒμΌμ΄ μ§€λ‚œ λ’€μ˜ ν˜ΈμΆœμ€ `404` κ°€ μ•„λ‹ˆλΌ **`410 Gone`** κ³Ό `type: …/endpoint-sunset` 으둜 κ±°μ ˆλ©λ‹ˆλ‹€. λ‘˜μ˜ 뜻이 λ‹€λ¦…λ‹ˆλ‹€ β€” `404` λŠ” \"그런 것이 μžˆμ—ˆλŠ”μ§€ λͺ¨λ₯΄κ² λ‹€\", `410` 은 \"μžˆμ—ˆκ³  μ˜λ„μ μœΌλ‘œ μ—†μ•΄λ‹€\" μž…λ‹ˆλ‹€. `410` 을 λ°›μœΌλ©΄ 경둜 μ˜€νƒ€λ₯Ό μ˜μ‹¬ν•˜μ§€ 말고 /v2 둜 μ΄μ „ν•˜μ„Έμš”. - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` ν—€λ”λ‘œ ν†΅μ§€ν•œλ‹€. μ†ŒλΉ„μžλŠ” 이 헀더λ₯Ό λͺ¨λ‹ˆν„°λ§ν•  것.
4
4
  *
5
- * The version of the OpenAPI document: 25.1.0
5
+ * The version of the OpenAPI document: 31.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).
@@ -3,9 +3,9 @@
3
3
  /* eslint-disable */
4
4
  /**
5
5
  * CMARKET V6 Partner API
6
- * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 버전별 인증 - **_/v2** β€” OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token` μ—μ„œ 토큰 λ°œκΈ‰ ν›„ `Authorization: Bearer <token>` 헀더. - **_/v1** β€” V5 μΆ©μ‹€ platform-auth. `X-Platform-Id`(cate_set.api_id) / `X-Platform-Secret`(cate_set.api_secret, MD5-hex) ν—€λ”λ‘œ 전솑. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403` 을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € ꡬ뢄할 것. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠλŠ”λ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403 이닀. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λœλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • 발주처 λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•  것. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`. μ†ŒλΉ„μžλŠ” **HTTP status + `type` URI** 둜 λΆ„κΈ°ν•œλ‹€. - `retryable`(boolean): μžλ™ μž¬μ‹œλ„ μ•ˆμ „ μ—¬λΆ€. `true`(429Β·5xx transient)λ©΄ backoff ν›„ μž¬μ‹œλ„, `false`λ©΄ μš”μ²­μ„ 고쳐야 ν•œλ‹€. - `correlationId`: μš”μ²­ 좔적 id. `X-Correlation-Id` 응닡 헀더와 동일 β€” 문의 μ‹œ 이 값을 첨뢀. - `invalid-params`: 검증 μ‹€νŒ¨(400 `…/validation-failed`) μ‹œ μœ„λ°˜ ν•„λ“œ 경둜 λͺ©λ‘(RFC 9457 ν™•μž₯, κ°’ μ—†μŒ). `type` 은 `https://problems.cmarket.io/partner/<slug>` ν˜•νƒœμ˜ **μ•ˆμ • μ‹λ³„μž**λ‹€. RFC 9457 Β§3.1.1 이 ν—ˆμš©ν•˜λŠ” λŒ€λ‘œ 이 URI λŠ” **μ—­μ°Έμ‘°(dereference)λ˜μ§€ μ•ŠλŠ”λ‹€** β€” λΈŒλΌμš°μ €λ‘œ μ—΄μ§€ 말고 λ¬Έμžμ—΄ λΉ„κ΅λ‘œλ§Œ μ“Έ 것. slug λͺ©λ‘κ³Ό μ˜λ―ΈλŠ” 각 μ—”λ“œν¬μΈνŠΈμ˜ 응닡 μ„€λͺ…에 status λ³„λ‘œ λͺ…μ‹œλΌ μžˆλ‹€. μƒˆ slug 은 좔가될 수 μžˆμœΌλ―€λ‘œ, λͺ¨λ₯΄λŠ” slug 을 λ§Œλ‚˜λ©΄ `type` 이 μ•„λ‹ˆλΌ **HTTP status 둜 폴백**ν•˜λ„λ‘ κ΅¬ν˜„ν•  것. ### λ©±λ“±μ„± μœ„λ°˜: 409 와 422 의 차이 - `409` `…/idempotency-key-conflict` β€” 같은 ν‚€μ˜ **원 μš”μ²­μ΄ 아직 처리 쀑**이닀. μž μ‹œ λ’€ 같은 ν‚€λ‘œ λ‹€μ‹œ λΆ€λ₯΄λ©΄ κ·Έ κ²°κ³Όλ₯Ό λ°›λŠ”λ‹€. - `422` `…/idempotency-key-reused` β€” 같은 ν‚€λ₯Ό **λ‹€λ₯Έ body** 둜 λ³΄λƒˆλ‹€. μž¬μ‹œλ„ν•΄λ„ μ˜μ›νžˆ 같은 μ‹€νŒ¨λ‹€. μƒˆ ν‚€λ₯Ό μ“°κ±°λ‚˜ body λ₯Ό 되돌릴 것. ## 레이트 리밋 μ „μ—­ **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` κ°€ μ‹€λ¦°λ‹€. ## 버전 수λͺ…(deprecation/sunset) - **_/v1** 은 λ ˆκ±°μ‹œ V5 cutover μ™„λ£Œ μ‹œμ κΉŒμ§€ μœ μ§€λ˜λŠ” μΆ©μ‹€ ν”„λ‘μ‹œλ‹€. 폐지 일정이 μ •ν•΄μ§€λ©΄ /v1 응닡에 `Deprecation`(RFC 9745, `@<epoch초>`) κ³Ό `Sunset`(RFC 8594, HTTP-date) 헀더가 μ‹€λ¦°λ‹€ β€” κ·Έ μ „κΉŒμ§€λŠ” 두 헀더가 λ‚˜κ°€μ§€ μ•ŠλŠ”λ‹€. - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` ν—€λ”λ‘œ ν†΅μ§€ν•œλ‹€. μ†ŒλΉ„μžλŠ” 이 헀더λ₯Ό λͺ¨λ‹ˆν„°λ§ν•  것.
6
+ * μ™ΈλΆ€ ERP μ—°λ™μš© RESTful API. ## 버전별 인증 - **_/v2** β€” OAuth2 Bearer JWT (`client_credentials` ν”Œλ‘œμš°). `/oauth/token` μ—μ„œ 토큰 λ°œκΈ‰ ν›„ `Authorization: Bearer <token>` 헀더. - **_/v1** β€” V5 μΆ©μ‹€ platform-auth. `X-Platform-Id`(cate_set.api_id) / `X-Platform-Secret`(cate_set.api_secret, MD5-hex) ν—€λ”λ‘œ 전솑. ## κΆŒν•œ β€” 두 개의 λ…λ¦½λœ μΆ• `403` 을 λ§Œλ‚¬λ‹€λ©΄ λ‘˜ 쀑 μ–΄λŠ 좕에 κ±Έλ¦° 것인지 λ¨Όμ € ꡬ뢄할 것. - **μŠ€μ½”ν”„** = *무엇을 ν•  수 μžˆλ‚˜*. 토큰에 λΆ€μ—¬λœ `bids:read`Β·`contracts:write` λ“±. 미보유 μ‹œ `…/insufficient-scope`. - **λŒ€ν–‰ λ²”μœ„** = *λˆ„κ΅¬μ˜ 데이터λ₯Ό λ‹€λ£° 수 μžˆλ‚˜*. API ν‚€ 섀정이며 μŠ€μ½”ν”„λ‘œ ν‘œν˜„λ˜μ§€ μ•ŠλŠ”λ‹€. λ²”μœ„ 밖이면 μŠ€μ½”ν”„μ™€ λ¬΄κ΄€ν•˜κ²Œ 403 이닀. λŒ€ν–‰ λ²”μœ„λŠ” ν‚€λ§ˆλ‹€ λ‘˜ 쀑 ν•˜λ‚˜λ‘œ μ„€μ •λœλ‹€ β€” **μ†Œμ† κ·Έλ£Ή 전원**(κΈ°κ΄€ ν‚€. μ‚¬μ—…μ²˜Β·λΆ€μ„œ 계정이 μƒˆλ‘œ 생겨도 μžλ™ 포함) λ˜λŠ” **μ§€μ • 발주처 λͺ©λ‘**(κ³„μ•½μœΌλ‘œ ν•©μ˜λœ λͺ©λ‘). λ²”μœ„λ₯Ό λ„“ν˜€μ•Ό ν•˜λ©΄ μŠ€μ½”ν”„κ°€ μ•„λ‹ˆλΌ ν‚€ μ„€μ • 변경을 μš”μ²­ν•  것. ## 성곡 응닡 λ΄‰νˆ¬ `/v2` 의 λͺ¨λ“  2xx 본문은 `{ \"data\": … }` μž…λ‹ˆλ‹€. 단일 λ¦¬μ†ŒμŠ€λ“  λͺ©λ‘μ΄λ“  κ°™μŠ΅λ‹ˆλ‹€. λͺ©λ‘μ²˜λŸΌ λΆ€κ°€ 정보가 μžˆλŠ” 응닡은 `meta` κ°€ ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€ β€” 예: `{ \"data\": [...], \"meta\": { \"nextCursor\": \"…\" } }`. λΆ€κ°€ 정보가 μ—†μœΌλ©΄ `meta` ν‚€λŠ” μ•„μ˜ˆ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€(빈 객체λ₯Ό μ‹£μ§€ μ•ŠμŠ΅λ‹ˆλ‹€). λ΄‰νˆ¬λ₯Ό μ“°μ§€ μ•ŠλŠ” ν‘œλ©΄μ€ μ…‹μž…λ‹ˆλ‹€. `/oauth/_*` 와 `/.well-known/_*` λŠ” 각각 RFC 6749Β·RFC 8414Β·RFC 9728 이 μ΅œμƒμœ„ ν•„λ“œλ₯Ό κ·œμ •ν•˜κ³ , `/v1/_*` 은 λ™κ²°λœ λ ˆκ±°μ‹œ ν‘œλ©΄μ΄λ©°, 파일 λ‚΄μš© 응닡은 본문이 JSON 이 μ•„λ‹™λ‹ˆλ‹€. μ—λŸ¬ μ‘λ‹΅μ—λŠ” λ΄‰νˆ¬λ₯Ό μ”Œμš°μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ β€” μ•„λž˜ problem+json 이 λ‹¨λ…μœΌλ‘œ μ±…μž„μ§‘λ‹ˆλ‹€. ## 쑰건뢀 μš”μ²­ (ETag) `/v2` 의 λͺ¨λ“  `GET` 응닡에 weak `ETag`(`W/\"…\"`)κ°€ μ‹€λ¦½λ‹ˆλ‹€. 받은 값을 λ‹€μŒ μš”μ²­μ˜ `If-None-Match` ν—€λ”λ‘œ λ˜λ³΄λ‚΄λ©΄, λ‚΄μš©μ΄ κ·ΈλŒ€λ‘œμΌ λ•Œ `304 Not Modified` λ₯Ό λ³Έλ¬Έ 없이 λ°›μŠ΅λ‹ˆλ‹€. κ²°κ³Όκ°€ λ‚˜κΈ°λ₯Ό 기닀리며 같은 μžμ›μ„ 반볡 μ‘°νšŒν•˜λŠ” 연동이라면 이 헀더 ν•˜λ‚˜λ‘œ μ „μ†‘λŸ‰μ΄ μ‚¬λΌμ§‘λ‹ˆλ‹€. 호좜 횟수 자체λ₯Ό 쀄이렀면 웹훅을 μ‚¬μš©ν•˜μ„Έμš”. ## μ—λŸ¬ (RFC 9457 problem+json) λͺ¨λ“  μ—λŸ¬ 응닡은 `application/problem+json`. μ†ŒλΉ„μžλŠ” **HTTP status + `type` URI** 둜 λΆ„κΈ°ν•œλ‹€. - `retryable`(boolean): μžλ™ μž¬μ‹œλ„ μ•ˆμ „ μ—¬λΆ€. `true`(429Β·5xx transient)λ©΄ backoff ν›„ μž¬μ‹œλ„, `false`λ©΄ μš”μ²­μ„ 고쳐야 ν•œλ‹€. - `traceId`: μš”μ²­ 좔적 id. `X-Correlation-Id` 응닡 헀더와 같은 κ°’μž…λ‹ˆλ‹€ β€” λ¬Έμ˜ν•  λ•Œ 이 값을 μ²¨λΆ€ν•˜μ„Έμš”. - `correlationId`: `traceId` 와 같은 κ°’μ˜ μ˜› 이름. κΈ°μ‘΄ 연동 ν˜Έν™˜μœΌλ‘œ ν•¨κ»˜ μ‹€λ¦½λ‹ˆλ‹€. μƒˆ 연동은 `traceId` λ₯Ό μ½μœΌμ„Έμš”. - `invalid-params`: 검증 μ‹€νŒ¨(400 `…/validation-failed`) μ‹œ μœ„λ°˜ ν•„λ“œ 경둜 λͺ©λ‘(RFC 9457 ν™•μž₯, κ°’ μ—†μŒ). `type` 은 `https://problems.cmarket.io/partner/<slug>` ν˜•νƒœμ˜ **μ•ˆμ • μ‹λ³„μž**λ‹€. RFC 9457 Β§3.1.1 이 ν—ˆμš©ν•˜λŠ” λŒ€λ‘œ 이 URI λŠ” **μ—­μ°Έμ‘°(dereference)λ˜μ§€ μ•ŠλŠ”λ‹€** β€” λΈŒλΌμš°μ €λ‘œ μ—΄μ§€ 말고 λ¬Έμžμ—΄ λΉ„κ΅λ‘œλ§Œ μ“Έ 것. slug λͺ©λ‘κ³Ό μ˜λ―ΈλŠ” 각 μ—”λ“œν¬μΈνŠΈμ˜ 응닡 μ„€λͺ…에 status λ³„λ‘œ λͺ…μ‹œλΌ μžˆλ‹€. μƒˆ slug 은 좔가될 수 μžˆμœΌλ―€λ‘œ, λͺ¨λ₯΄λŠ” slug 을 λ§Œλ‚˜λ©΄ `type` 이 μ•„λ‹ˆλΌ **HTTP status 둜 폴백**ν•˜λ„λ‘ κ΅¬ν˜„ν•  것. ### λ©±λ“±μ„± μœ„λ°˜: 409 와 422 의 차이 - `409` `…/idempotency-key-conflict` β€” 같은 ν‚€μ˜ **원 μš”μ²­μ΄ 아직 처리 쀑**이닀. μž μ‹œ λ’€ 같은 ν‚€λ‘œ λ‹€μ‹œ λΆ€λ₯΄λ©΄ κ·Έ κ²°κ³Όλ₯Ό λ°›λŠ”λ‹€. - `422` `…/idempotency-key-reused` β€” 같은 ν‚€λ₯Ό **λ‹€λ₯Έ body** 둜 λ³΄λƒˆλ‹€. μž¬μ‹œλ„ν•΄λ„ μ˜μ›νžˆ 같은 μ‹€νŒ¨λ‹€. μƒˆ ν‚€λ₯Ό μ“°κ±°λ‚˜ body λ₯Ό 되돌릴 것. ## 레이트 리밋 μ „μ—­ **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` κ°€ μ‹€λ¦°λ‹€. ## 버전 수λͺ…(deprecation/sunset) - **_/v1** 은 λ ˆκ±°μ‹œ V5 cutover μ™„λ£Œ μ‹œμ κΉŒμ§€ μœ μ§€λ˜λŠ” μΆ©μ‹€ ν”„λ‘μ‹œμž…λ‹ˆλ‹€. 폐지 일정이 μ •ν•΄μ§€λ©΄ /v1 응닡에 헀더 μ„Έ κ°œκ°€ μ‹€λ¦½λ‹ˆλ‹€ β€” `Deprecation`(RFC 9745, `@<epoch초>`) Β· `Sunset`(RFC 8594, HTTP-date) Β· `Link`(RFC 8288, `rel=\"deprecation\"`/`rel=\"sunset\"` β€” 이전 μ•ˆλ‚΄ λ¬Έμ„œλ₯Ό κ°€λ¦¬ν‚΅λ‹ˆλ‹€). 일정이 μ •ν•΄μ§€κΈ° μ „μ—λŠ” μ…‹ λ‹€ λ‚˜κ°€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ’…λ£ŒμΌμ΄ μ§€λ‚œ λ’€μ˜ ν˜ΈμΆœμ€ `404` κ°€ μ•„λ‹ˆλΌ **`410 Gone`** κ³Ό `type: …/endpoint-sunset` 으둜 κ±°μ ˆλ©λ‹ˆλ‹€. λ‘˜μ˜ 뜻이 λ‹€λ¦…λ‹ˆλ‹€ β€” `404` λŠ” \"그런 것이 μžˆμ—ˆλŠ”μ§€ λͺ¨λ₯΄κ² λ‹€\", `410` 은 \"μžˆμ—ˆκ³  μ˜λ„μ μœΌλ‘œ μ—†μ•΄λ‹€\" μž…λ‹ˆλ‹€. `410` 을 λ°›μœΌλ©΄ 경둜 μ˜€νƒ€λ₯Ό μ˜μ‹¬ν•˜μ§€ 말고 /v2 둜 μ΄μ „ν•˜μ„Έμš”. - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` ν—€λ”λ‘œ ν†΅μ§€ν•œλ‹€. μ†ŒλΉ„μžλŠ” 이 헀더λ₯Ό λͺ¨λ‹ˆν„°λ§ν•  것.
7
7
  *
8
- * The version of the OpenAPI document: 25.1.0
8
+ * The version of the OpenAPI document: 31.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).
@@ -59,7 +59,7 @@ const PartnerV1ApiAxiosParamCreator = function (configuration) {
59
59
  // authentication platform-auth-secret required
60
60
  yield (0, common_1.setApiKeyToObject)(localVarHeaderParameter, "X-Platform-Secret", configuration);
61
61
  localVarHeaderParameter['Content-Type'] = 'application/json';
62
- localVarHeaderParameter['Accept'] = 'application/json';
62
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
63
63
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
64
64
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
65
65
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -98,7 +98,7 @@ const PartnerV1ApiAxiosParamCreator = function (configuration) {
98
98
  // authentication platform-auth-secret required
99
99
  yield (0, common_1.setApiKeyToObject)(localVarHeaderParameter, "X-Platform-Secret", configuration);
100
100
  localVarHeaderParameter['Content-Type'] = 'application/json';
101
- localVarHeaderParameter['Accept'] = 'application/json';
101
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
102
102
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
103
103
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
104
104
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -133,7 +133,7 @@ const PartnerV1ApiAxiosParamCreator = function (configuration) {
133
133
  // authentication platform-auth-secret required
134
134
  yield (0, common_1.setApiKeyToObject)(localVarHeaderParameter, "X-Platform-Secret", configuration);
135
135
  localVarHeaderParameter['Content-Type'] = 'application/json';
136
- localVarHeaderParameter['Accept'] = 'application/json';
136
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
137
137
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
138
138
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
139
139
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -168,7 +168,7 @@ const PartnerV1ApiAxiosParamCreator = function (configuration) {
168
168
  // authentication platform-auth-secret required
169
169
  yield (0, common_1.setApiKeyToObject)(localVarHeaderParameter, "X-Platform-Secret", configuration);
170
170
  localVarHeaderParameter['Content-Type'] = 'application/json';
171
- localVarHeaderParameter['Accept'] = 'application/json';
171
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
172
172
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
173
173
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
174
174
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -203,7 +203,7 @@ const PartnerV1ApiAxiosParamCreator = function (configuration) {
203
203
  yield (0, common_1.setApiKeyToObject)(localVarHeaderParameter, "X-Platform-Id", configuration);
204
204
  // authentication platform-auth-secret required
205
205
  yield (0, common_1.setApiKeyToObject)(localVarHeaderParameter, "X-Platform-Secret", configuration);
206
- localVarHeaderParameter['Accept'] = 'application/json';
206
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
207
207
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
208
208
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
209
209
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -233,7 +233,7 @@ const PartnerV1ApiAxiosParamCreator = function (configuration) {
233
233
  yield (0, common_1.setApiKeyToObject)(localVarHeaderParameter, "X-Platform-Id", configuration);
234
234
  // authentication platform-auth-secret required
235
235
  yield (0, common_1.setApiKeyToObject)(localVarHeaderParameter, "X-Platform-Secret", configuration);
236
- localVarHeaderParameter['Accept'] = 'application/json';
236
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
237
237
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
238
238
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
239
239
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -267,7 +267,7 @@ const PartnerV1ApiAxiosParamCreator = function (configuration) {
267
267
  // authentication platform-auth-secret required
268
268
  yield (0, common_1.setApiKeyToObject)(localVarHeaderParameter, "X-Platform-Secret", configuration);
269
269
  localVarHeaderParameter['Content-Type'] = 'application/json';
270
- localVarHeaderParameter['Accept'] = 'application/json';
270
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
271
271
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
272
272
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
273
273
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -302,7 +302,7 @@ const PartnerV1ApiAxiosParamCreator = function (configuration) {
302
302
  // authentication platform-auth-secret required
303
303
  yield (0, common_1.setApiKeyToObject)(localVarHeaderParameter, "X-Platform-Secret", configuration);
304
304
  localVarHeaderParameter['Content-Type'] = 'application/json';
305
- localVarHeaderParameter['Accept'] = 'application/json';
305
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
306
306
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
307
307
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
308
308
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -337,7 +337,7 @@ const PartnerV1ApiAxiosParamCreator = function (configuration) {
337
337
  // authentication platform-auth-secret required
338
338
  yield (0, common_1.setApiKeyToObject)(localVarHeaderParameter, "X-Platform-Secret", configuration);
339
339
  localVarHeaderParameter['Content-Type'] = 'application/json';
340
- localVarHeaderParameter['Accept'] = 'application/json';
340
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
341
341
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
342
342
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
343
343
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -372,7 +372,7 @@ const PartnerV1ApiAxiosParamCreator = function (configuration) {
372
372
  // authentication platform-auth-secret required
373
373
  yield (0, common_1.setApiKeyToObject)(localVarHeaderParameter, "X-Platform-Secret", configuration);
374
374
  localVarHeaderParameter['Content-Type'] = 'application/json';
375
- localVarHeaderParameter['Accept'] = 'application/json';
375
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
376
376
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
377
377
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
378
378
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -407,7 +407,7 @@ const PartnerV1ApiAxiosParamCreator = function (configuration) {
407
407
  // authentication platform-auth-secret required
408
408
  yield (0, common_1.setApiKeyToObject)(localVarHeaderParameter, "X-Platform-Secret", configuration);
409
409
  localVarHeaderParameter['Content-Type'] = 'application/json';
410
- localVarHeaderParameter['Accept'] = 'application/json';
410
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
411
411
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
412
412
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
413
413
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -442,7 +442,7 @@ const PartnerV1ApiAxiosParamCreator = function (configuration) {
442
442
  // authentication platform-auth-secret required
443
443
  yield (0, common_1.setApiKeyToObject)(localVarHeaderParameter, "X-Platform-Secret", configuration);
444
444
  localVarHeaderParameter['Content-Type'] = 'application/json';
445
- localVarHeaderParameter['Accept'] = 'application/json';
445
+ localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
446
446
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
447
447
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
448
448
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);