@cmarket/partner-sdk 39.0.0 โ 40.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -6
- package/api/embed-api.ts +10 -10
- package/api/oauth-api.ts +18 -18
- package/api/partner-api-api.ts +334 -334
- package/api/products-api.ts +22 -22
- package/api/webhooks-api.ts +78 -78
- package/api/well-known-api.ts +10 -10
- package/api.ts +2 -2
- package/base.ts +2 -2
- package/common.ts +2 -2
- package/configuration.ts +2 -2
- package/dist/api/embed-api.d.ts +10 -10
- package/dist/api/embed-api.js +10 -10
- package/dist/api/oauth-api.d.ts +18 -18
- package/dist/api/oauth-api.js +18 -18
- package/dist/api/partner-api-api.d.ts +334 -334
- package/dist/api/partner-api-api.js +334 -334
- package/dist/api/products-api.d.ts +22 -22
- package/dist/api/products-api.js +22 -22
- package/dist/api/webhooks-api.d.ts +78 -78
- package/dist/api/webhooks-api.js +78 -78
- package/dist/api/well-known-api.d.ts +10 -10
- package/dist/api/well-known-api.js +10 -10
- package/dist/api.d.ts +2 -2
- package/dist/api.js +2 -2
- package/dist/base.d.ts +2 -2
- package/dist/base.js +2 -2
- package/dist/common.d.ts +2 -2
- package/dist/common.js +2 -2
- package/dist/configuration.d.ts +2 -2
- package/dist/configuration.js +2 -2
- package/dist/esm/api/embed-api.d.ts +10 -10
- package/dist/esm/api/embed-api.js +10 -10
- package/dist/esm/api/oauth-api.d.ts +18 -18
- package/dist/esm/api/oauth-api.js +18 -18
- package/dist/esm/api/partner-api-api.d.ts +334 -334
- package/dist/esm/api/partner-api-api.js +334 -334
- package/dist/esm/api/products-api.d.ts +22 -22
- package/dist/esm/api/products-api.js +22 -22
- package/dist/esm/api/webhooks-api.d.ts +78 -78
- package/dist/esm/api/webhooks-api.js +78 -78
- package/dist/esm/api/well-known-api.d.ts +10 -10
- package/dist/esm/api/well-known-api.js +10 -10
- package/dist/esm/api.d.ts +2 -2
- package/dist/esm/api.js +2 -2
- package/dist/esm/base.d.ts +2 -2
- package/dist/esm/base.js +2 -2
- package/dist/esm/common.d.ts +2 -2
- package/dist/esm/common.js +2 -2
- package/dist/esm/configuration.d.ts +2 -2
- package/dist/esm/configuration.js +2 -2
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +2 -2
- package/dist/esm/models/acceptance-result-response-dto.d.ts +2 -2
- package/dist/esm/models/acceptance-result-response-dto.js +2 -2
- package/dist/esm/models/acknowledge-product-receipt200-response.d.ts +2 -2
- package/dist/esm/models/acknowledge-product-receipt200-response.js +2 -2
- package/dist/esm/models/acknowledge-products-request-dto.d.ts +3 -3
- package/dist/esm/models/acknowledge-products-request-dto.js +2 -2
- package/dist/esm/models/api-catalog-dto.d.ts +2 -2
- package/dist/esm/models/api-catalog-dto.js +2 -2
- package/dist/esm/models/api-catalog-entry-dto.d.ts +4 -4
- package/dist/esm/models/api-catalog-entry-dto.js +2 -2
- package/dist/esm/models/api-catalog-link-dto.d.ts +2 -2
- package/dist/esm/models/api-catalog-link-dto.js +2 -2
- package/dist/esm/models/authorization-server-metadata-dto.d.ts +6 -6
- package/dist/esm/models/authorization-server-metadata-dto.js +2 -2
- package/dist/esm/models/award-method-public.d.ts +2 -2
- package/dist/esm/models/award-method-public.js +2 -2
- package/dist/esm/models/award-registered-v2-response-dto.d.ts +3 -3
- package/dist/esm/models/award-registered-v2-response-dto.js +2 -2
- package/dist/esm/models/award-reverted-v2-response-dto.d.ts +3 -3
- package/dist/esm/models/award-reverted-v2-response-dto.js +2 -2
- package/dist/esm/models/bid-acceptance-dto.d.ts +2 -2
- package/dist/esm/models/bid-acceptance-dto.js +2 -2
- package/dist/esm/models/bid-attachment-input-dto.d.ts +6 -6
- package/dist/esm/models/bid-attachment-input-dto.js +2 -2
- package/dist/esm/models/bid-bond-dto.d.ts +2 -2
- package/dist/esm/models/bid-bond-dto.js +2 -2
- package/dist/esm/models/bid-cancelled-response-dto.d.ts +3 -3
- package/dist/esm/models/bid-cancelled-response-dto.js +2 -2
- package/dist/esm/models/bid-contact-dto.d.ts +2 -2
- package/dist/esm/models/bid-contact-dto.js +2 -2
- package/dist/esm/models/bid-contacts-dto.d.ts +2 -2
- package/dist/esm/models/bid-contacts-dto.js +2 -2
- package/dist/esm/models/bid-contract-document-dto.d.ts +9 -9
- package/dist/esm/models/bid-contract-document-dto.js +2 -2
- package/dist/esm/models/bid-delivery-terms-dto.d.ts +2 -2
- package/dist/esm/models/bid-delivery-terms-dto.js +2 -2
- package/dist/esm/models/bid-detail-response-dto.d.ts +5 -5
- package/dist/esm/models/bid-detail-response-dto.js +2 -2
- package/dist/esm/models/bid-document-dto.d.ts +2 -2
- package/dist/esm/models/bid-document-dto.js +2 -2
- package/dist/esm/models/bid-failed-v2-response-dto.d.ts +3 -3
- package/dist/esm/models/bid-failed-v2-response-dto.js +2 -2
- package/dist/esm/models/bid-item-dto.d.ts +2 -2
- package/dist/esm/models/bid-item-dto.js +2 -2
- package/dist/esm/models/bid-lifecycle-dto.d.ts +2 -2
- package/dist/esm/models/bid-lifecycle-dto.js +2 -2
- package/dist/esm/models/bid-manager-dto.d.ts +2 -2
- package/dist/esm/models/bid-manager-dto.js +2 -2
- package/dist/esm/models/bid-payment-terms-dto.d.ts +2 -2
- package/dist/esm/models/bid-payment-terms-dto.js +2 -2
- package/dist/esm/models/bid-product-dto.d.ts +2 -2
- package/dist/esm/models/bid-product-dto.js +2 -2
- package/dist/esm/models/bid-public-status.d.ts +2 -2
- package/dist/esm/models/bid-public-status.js +2 -2
- package/dist/esm/models/bid-registered-response-dto.d.ts +3 -3
- package/dist/esm/models/bid-registered-response-dto.js +2 -2
- package/dist/esm/models/bid-result-participant-attachment-dto.d.ts +3 -3
- package/dist/esm/models/bid-result-participant-attachment-dto.js +2 -2
- package/dist/esm/models/bid-result-participant-dto.d.ts +3 -3
- package/dist/esm/models/bid-result-participant-dto.js +2 -2
- package/dist/esm/models/bid-results-response-dto.d.ts +5 -5
- package/dist/esm/models/bid-results-response-dto.js +2 -2
- package/dist/esm/models/bid-settlement-line-item-dto.d.ts +2 -2
- package/dist/esm/models/bid-settlement-line-item-dto.js +2 -2
- package/dist/esm/models/bid-settlement-participant-dto.d.ts +2 -2
- package/dist/esm/models/bid-settlement-participant-dto.js +2 -2
- package/dist/esm/models/bid-settlement-response-dto.d.ts +2 -2
- package/dist/esm/models/bid-settlement-response-dto.js +2 -2
- package/dist/esm/models/bid-statement-response-dto.d.ts +2 -2
- package/dist/esm/models/bid-statement-response-dto.js +2 -2
- package/dist/esm/models/bid-summary-dto.d.ts +3 -3
- package/dist/esm/models/bid-summary-dto.js +2 -2
- package/dist/esm/models/bid-type-public.d.ts +2 -2
- package/dist/esm/models/bid-type-public.js +2 -2
- package/dist/esm/models/bid-updated-response-dto.d.ts +2 -2
- package/dist/esm/models/bid-updated-response-dto.js +2 -2
- package/dist/esm/models/cancel-bid-request-dto.d.ts +2 -2
- package/dist/esm/models/cancel-bid-request-dto.js +2 -2
- package/dist/esm/models/cancel-bid200-response.d.ts +2 -2
- package/dist/esm/models/cancel-bid200-response.js +2 -2
- package/dist/esm/models/card-payment-request-response-dto.d.ts +2 -2
- package/dist/esm/models/card-payment-request-response-dto.js +2 -2
- package/dist/esm/models/complete-acceptance-request-dto.d.ts +4 -4
- package/dist/esm/models/complete-acceptance-request-dto.js +2 -2
- package/dist/esm/models/complete-acceptance200-response.d.ts +2 -2
- package/dist/esm/models/complete-acceptance200-response.js +2 -2
- package/dist/esm/models/complete-invoice200-response.d.ts +2 -2
- package/dist/esm/models/complete-invoice200-response.js +2 -2
- package/dist/esm/models/complete-upload-request-dto.d.ts +2 -2
- package/dist/esm/models/complete-upload-request-dto.js +2 -2
- package/dist/esm/models/contract-restriction-confirm-input-dto.d.ts +3 -3
- package/dist/esm/models/contract-restriction-confirm-input-dto.js +2 -2
- package/dist/esm/models/create-bid-request-dto.d.ts +5 -5
- package/dist/esm/models/create-bid-request-dto.js +2 -2
- package/dist/esm/models/create-card-payment-dto.d.ts +2 -2
- package/dist/esm/models/create-card-payment-dto.js +2 -2
- package/dist/esm/models/create-card-payment-request-dto.d.ts +2 -2
- package/dist/esm/models/create-card-payment-request-dto.js +2 -2
- package/dist/esm/models/create-card-payment200-response.d.ts +2 -2
- package/dist/esm/models/create-card-payment200-response.js +2 -2
- package/dist/esm/models/create-embed-launch201-response.d.ts +2 -2
- package/dist/esm/models/create-embed-launch201-response.js +2 -2
- package/dist/esm/models/create-external-contract-documents-request-dto.d.ts +4 -4
- package/dist/esm/models/create-external-contract-documents-request-dto.js +2 -2
- package/dist/esm/models/create-external-contract-documents-response-dto.d.ts +2 -2
- package/dist/esm/models/create-external-contract-documents-response-dto.js +2 -2
- package/dist/esm/models/create-file-upload-url201-response.d.ts +2 -2
- package/dist/esm/models/create-file-upload-url201-response.js +2 -2
- package/dist/esm/models/create-upload-url-request-dto.d.ts +2 -2
- package/dist/esm/models/create-upload-url-request-dto.js +2 -2
- package/dist/esm/models/create-webhook-endpoint-request-dto.d.ts +4 -4
- package/dist/esm/models/create-webhook-endpoint-request-dto.js +2 -2
- package/dist/esm/models/create-webhook-endpoint201-response.d.ts +2 -2
- package/dist/esm/models/create-webhook-endpoint201-response.js +2 -2
- package/dist/esm/models/delivery-date-type-public.d.ts +2 -2
- package/dist/esm/models/delivery-date-type-public.js +2 -2
- package/dist/esm/models/delivery-method-public.d.ts +2 -2
- package/dist/esm/models/delivery-method-public.js +2 -2
- package/dist/esm/models/embed-bid-prefill-dto.d.ts +83 -0
- package/dist/esm/models/embed-bid-prefill-dto.js +23 -0
- package/dist/esm/models/embed-bid-prefill-item-dto.d.ts +33 -0
- package/dist/esm/models/embed-bid-prefill-item-dto.js +14 -0
- package/dist/esm/models/embed-bid-prefill-manager-dto.d.ts +25 -0
- package/dist/esm/models/embed-bid-prefill-manager-dto.js +14 -0
- package/dist/esm/models/embed-launch-request-dto.d.ts +10 -9
- package/dist/esm/models/embed-launch-request-dto.js +2 -2
- package/dist/esm/models/embed-launch-response-dto.d.ts +4 -4
- package/dist/esm/models/embed-launch-response-dto.js +2 -2
- package/dist/esm/models/excellent-procurement-public.d.ts +2 -2
- package/dist/esm/models/excellent-procurement-public.js +2 -2
- package/dist/esm/models/external-contract-document-item-dto.d.ts +3 -3
- package/dist/esm/models/external-contract-document-item-dto.js +2 -2
- package/dist/esm/models/external-contract-documents-response-dto.d.ts +2 -2
- package/dist/esm/models/external-contract-documents-response-dto.js +2 -2
- package/dist/esm/models/external-contract-item-dto.d.ts +2 -2
- package/dist/esm/models/external-contract-item-dto.js +2 -2
- package/dist/esm/models/external-contract-snapshot-dto.d.ts +5 -5
- package/dist/esm/models/external-contract-snapshot-dto.js +2 -2
- package/dist/esm/models/external-document-inputs-dto.d.ts +2 -2
- package/dist/esm/models/external-document-inputs-dto.js +2 -2
- package/dist/esm/models/file-meta-response-dto.d.ts +2 -2
- package/dist/esm/models/file-meta-response-dto.js +2 -2
- package/dist/esm/models/file-uploaded-response-dto.d.ts +2 -2
- package/dist/esm/models/file-uploaded-response-dto.js +2 -2
- package/dist/esm/models/generated-external-contract-document-dto.d.ts +4 -4
- package/dist/esm/models/generated-external-contract-document-dto.js +2 -2
- package/dist/esm/models/get-bid-settlement200-response.d.ts +2 -2
- package/dist/esm/models/get-bid-settlement200-response.js +2 -2
- package/dist/esm/models/get-bid-statement200-response.d.ts +2 -2
- package/dist/esm/models/get-bid-statement200-response.js +2 -2
- package/dist/esm/models/get-bid200-response.d.ts +2 -2
- package/dist/esm/models/get-bid200-response.js +2 -2
- package/dist/esm/models/get-file-meta200-response.d.ts +2 -2
- package/dist/esm/models/get-file-meta200-response.js +2 -2
- package/dist/esm/models/get-supplier-card-payable-v2200-response.d.ts +2 -2
- package/dist/esm/models/get-supplier-card-payable-v2200-response.js +2 -2
- package/dist/esm/models/get-webhook-endpoint200-response.d.ts +2 -2
- package/dist/esm/models/get-webhook-endpoint200-response.js +2 -2
- package/dist/esm/models/green-product-public.d.ts +2 -2
- package/dist/esm/models/green-product-public.js +2 -2
- package/dist/esm/models/health-controller-check200-response.d.ts +2 -2
- package/dist/esm/models/health-controller-check200-response.js +2 -2
- package/dist/esm/models/health-response-dto.d.ts +2 -2
- package/dist/esm/models/health-response-dto.js +2 -2
- package/dist/esm/models/hierarchical-region-dto.d.ts +2 -2
- package/dist/esm/models/hierarchical-region-dto.js +2 -2
- package/dist/esm/models/index.d.ts +3 -0
- package/dist/esm/models/index.js +3 -0
- package/dist/esm/models/introspect-request-dto.d.ts +5 -5
- package/dist/esm/models/introspect-request-dto.js +2 -2
- package/dist/esm/models/introspection-response-dto.d.ts +4 -4
- package/dist/esm/models/introspection-response-dto.js +2 -2
- package/dist/esm/models/invalid-param-dto.d.ts +2 -2
- package/dist/esm/models/invalid-param-dto.js +2 -2
- package/dist/esm/models/invoice-completed-response-dto.d.ts +2 -2
- package/dist/esm/models/invoice-completed-response-dto.js +2 -2
- package/dist/esm/models/invoice-split-response-dto.d.ts +2 -2
- package/dist/esm/models/invoice-split-response-dto.js +2 -2
- package/dist/esm/models/legal-mandatory-public.d.ts +2 -2
- package/dist/esm/models/legal-mandatory-public.js +2 -2
- package/dist/esm/models/list-bid-results200-response.d.ts +2 -2
- package/dist/esm/models/list-bid-results200-response.js +2 -2
- package/dist/esm/models/list-bids200-response-meta.d.ts +3 -3
- package/dist/esm/models/list-bids200-response-meta.js +2 -2
- package/dist/esm/models/list-bids200-response.d.ts +2 -2
- package/dist/esm/models/list-bids200-response.js +2 -2
- package/dist/esm/models/list-products200-response.d.ts +2 -2
- package/dist/esm/models/list-products200-response.js +2 -2
- package/dist/esm/models/list-webhook-deliveries-response-dto.d.ts +3 -3
- package/dist/esm/models/list-webhook-deliveries-response-dto.js +2 -2
- package/dist/esm/models/list-webhook-deliveries200-response.d.ts +2 -2
- package/dist/esm/models/list-webhook-deliveries200-response.js +2 -2
- package/dist/esm/models/list-webhook-endpoints200-response.d.ts +2 -2
- package/dist/esm/models/list-webhook-endpoints200-response.js +2 -2
- package/dist/esm/models/mark-bid-failed-request-dto.d.ts +2 -2
- package/dist/esm/models/mark-bid-failed-request-dto.js +2 -2
- package/dist/esm/models/mark-bid-failed201-response.d.ts +2 -2
- package/dist/esm/models/mark-bid-failed201-response.js +2 -2
- package/dist/esm/models/negotiation-score-dto.d.ts +2 -2
- package/dist/esm/models/negotiation-score-dto.js +2 -2
- package/dist/esm/models/negotiation-scored-v2-response-dto.d.ts +3 -3
- package/dist/esm/models/negotiation-scored-v2-response-dto.js +2 -2
- package/dist/esm/models/oauth-error-response-dto.d.ts +2 -2
- package/dist/esm/models/oauth-error-response-dto.js +2 -2
- package/dist/esm/models/on-bid-award-reverted-request.d.ts +2 -2
- package/dist/esm/models/on-bid-award-reverted-request.js +2 -2
- package/dist/esm/models/on-bid-awarded-request.d.ts +2 -2
- package/dist/esm/models/on-bid-awarded-request.js +2 -2
- package/dist/esm/models/on-bid-canceled-request.d.ts +2 -2
- package/dist/esm/models/on-bid-canceled-request.js +2 -2
- package/dist/esm/models/on-bid-closed-request.d.ts +2 -2
- package/dist/esm/models/on-bid-closed-request.js +2 -2
- package/dist/esm/models/on-bid-failed-request.d.ts +2 -2
- package/dist/esm/models/on-bid-failed-request.js +2 -2
- package/dist/esm/models/on-ping-request.d.ts +2 -2
- package/dist/esm/models/on-ping-request.js +2 -2
- package/dist/esm/models/partner-webhook-delivery-status.d.ts +2 -2
- package/dist/esm/models/partner-webhook-delivery-status.js +2 -2
- package/dist/esm/models/partner-webhook-endpoint-status.d.ts +3 -3
- package/dist/esm/models/partner-webhook-endpoint-status.js +3 -3
- package/dist/esm/models/partner-webhook-event-type.d.ts +2 -2
- package/dist/esm/models/partner-webhook-event-type.js +2 -2
- package/dist/esm/models/payment-method-public.d.ts +2 -2
- package/dist/esm/models/payment-method-public.js +2 -2
- package/dist/esm/models/preconditions-dto.d.ts +2 -2
- package/dist/esm/models/preconditions-dto.js +2 -2
- package/dist/esm/models/problem-details-dto.d.ts +3 -3
- package/dist/esm/models/problem-details-dto.js +2 -2
- package/dist/esm/models/product-receipt-response-dto.d.ts +2 -2
- package/dist/esm/models/product-receipt-response-dto.js +2 -2
- package/dist/esm/models/product-response-dto.d.ts +3 -3
- package/dist/esm/models/product-response-dto.js +2 -2
- package/dist/esm/models/protected-resource-metadata-dto.d.ts +6 -6
- package/dist/esm/models/protected-resource-metadata-dto.js +2 -2
- package/dist/esm/models/register-award-request-dto.d.ts +5 -5
- package/dist/esm/models/register-award-request-dto.js +2 -2
- package/dist/esm/models/register-award201-response.d.ts +2 -2
- package/dist/esm/models/register-award201-response.js +2 -2
- package/dist/esm/models/register-bid201-response.d.ts +2 -2
- package/dist/esm/models/register-bid201-response.js +2 -2
- package/dist/esm/models/register-semo-contract-request-dto.d.ts +5 -5
- package/dist/esm/models/register-semo-contract-request-dto.js +2 -2
- package/dist/esm/models/request-invoice-split-request-dto.d.ts +4 -4
- package/dist/esm/models/request-invoice-split-request-dto.js +2 -2
- package/dist/esm/models/request-invoice-split200-response.d.ts +2 -2
- package/dist/esm/models/request-invoice-split200-response.js +2 -2
- package/dist/esm/models/retiree-roster-input-dto.d.ts +2 -2
- package/dist/esm/models/retiree-roster-input-dto.js +2 -2
- package/dist/esm/models/retiree-roster-row-dto.d.ts +2 -2
- package/dist/esm/models/retiree-roster-row-dto.js +2 -2
- package/dist/esm/models/revert-award-request-dto.d.ts +2 -2
- package/dist/esm/models/revert-award-request-dto.js +2 -2
- package/dist/esm/models/revert-award200-response.d.ts +2 -2
- package/dist/esm/models/revert-award200-response.js +2 -2
- package/dist/esm/models/revoke-request-dto.d.ts +5 -5
- package/dist/esm/models/revoke-request-dto.js +2 -2
- package/dist/esm/models/semo-contract-registered-response-dto.d.ts +3 -3
- package/dist/esm/models/semo-contract-registered-response-dto.js +2 -2
- package/dist/esm/models/semo-contract-taxinvoice-status-response-dto.d.ts +2 -2
- package/dist/esm/models/semo-contract-taxinvoice-status-response-dto.js +2 -2
- package/dist/esm/models/send-webhook-test-event200-response.d.ts +2 -2
- package/dist/esm/models/send-webhook-test-event200-response.js +2 -2
- package/dist/esm/models/statement-document-dto.d.ts +3 -3
- package/dist/esm/models/statement-document-dto.js +2 -2
- package/dist/esm/models/statement-product-dto.d.ts +2 -2
- package/dist/esm/models/statement-product-dto.js +2 -2
- package/dist/esm/models/submit-negotiation-scores-request-dto.d.ts +2 -2
- package/dist/esm/models/submit-negotiation-scores-request-dto.js +2 -2
- package/dist/esm/models/submit-negotiation-scores201-response.d.ts +2 -2
- package/dist/esm/models/submit-negotiation-scores201-response.js +2 -2
- package/dist/esm/models/supplier-card-payable-response-dto.d.ts +2 -2
- package/dist/esm/models/supplier-card-payable-response-dto.js +2 -2
- package/dist/esm/models/supplier-tax-type.d.ts +2 -2
- package/dist/esm/models/supplier-tax-type.js +2 -2
- package/dist/esm/models/token-request-dto.d.ts +5 -5
- package/dist/esm/models/token-request-dto.js +2 -2
- package/dist/esm/models/token-response-dto.d.ts +3 -3
- package/dist/esm/models/token-response-dto.js +2 -2
- package/dist/esm/models/update-bid-request-dto.d.ts +5 -5
- package/dist/esm/models/update-bid-request-dto.js +2 -2
- package/dist/esm/models/update-bid200-response.d.ts +2 -2
- package/dist/esm/models/update-bid200-response.js +2 -2
- package/dist/esm/models/update-webhook-endpoint-request-dto.d.ts +3 -3
- package/dist/esm/models/update-webhook-endpoint-request-dto.js +2 -2
- package/dist/esm/models/upload-file-request-dto.d.ts +4 -4
- package/dist/esm/models/upload-file-request-dto.js +2 -2
- package/dist/esm/models/upload-file201-response.d.ts +2 -2
- package/dist/esm/models/upload-file201-response.js +2 -2
- package/dist/esm/models/upload-url-created-response-dto.d.ts +5 -5
- package/dist/esm/models/upload-url-created-response-dto.js +2 -2
- package/dist/esm/models/webhook-bid-event-data.d.ts +3 -3
- package/dist/esm/models/webhook-bid-event-data.js +2 -2
- package/dist/esm/models/webhook-delivery-dto.d.ts +4 -4
- package/dist/esm/models/webhook-delivery-dto.js +2 -2
- package/dist/esm/models/webhook-endpoint-dto.d.ts +6 -6
- package/dist/esm/models/webhook-endpoint-dto.js +2 -2
- package/dist/esm/models/webhook-endpoint-with-secret-dto.d.ts +6 -6
- package/dist/esm/models/webhook-endpoint-with-secret-dto.js +2 -2
- package/dist/esm/models/webhook-event-envelope.d.ts +3 -3
- package/dist/esm/models/webhook-event-envelope.js +2 -2
- package/dist/esm/models/webhook-ping-event-data.d.ts +2 -2
- package/dist/esm/models/webhook-ping-event-data.js +2 -2
- package/dist/esm/models/webhook-test-result-dto.d.ts +3 -3
- package/dist/esm/models/webhook-test-result-dto.js +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/models/acceptance-result-response-dto.d.ts +2 -2
- package/dist/models/acceptance-result-response-dto.js +2 -2
- package/dist/models/acknowledge-product-receipt200-response.d.ts +2 -2
- package/dist/models/acknowledge-product-receipt200-response.js +2 -2
- package/dist/models/acknowledge-products-request-dto.d.ts +3 -3
- package/dist/models/acknowledge-products-request-dto.js +2 -2
- package/dist/models/api-catalog-dto.d.ts +2 -2
- package/dist/models/api-catalog-dto.js +2 -2
- package/dist/models/api-catalog-entry-dto.d.ts +4 -4
- package/dist/models/api-catalog-entry-dto.js +2 -2
- package/dist/models/api-catalog-link-dto.d.ts +2 -2
- package/dist/models/api-catalog-link-dto.js +2 -2
- package/dist/models/authorization-server-metadata-dto.d.ts +6 -6
- package/dist/models/authorization-server-metadata-dto.js +2 -2
- package/dist/models/award-method-public.d.ts +2 -2
- package/dist/models/award-method-public.js +2 -2
- package/dist/models/award-registered-v2-response-dto.d.ts +3 -3
- package/dist/models/award-registered-v2-response-dto.js +2 -2
- package/dist/models/award-reverted-v2-response-dto.d.ts +3 -3
- package/dist/models/award-reverted-v2-response-dto.js +2 -2
- package/dist/models/bid-acceptance-dto.d.ts +2 -2
- package/dist/models/bid-acceptance-dto.js +2 -2
- package/dist/models/bid-attachment-input-dto.d.ts +6 -6
- package/dist/models/bid-attachment-input-dto.js +2 -2
- package/dist/models/bid-bond-dto.d.ts +2 -2
- package/dist/models/bid-bond-dto.js +2 -2
- package/dist/models/bid-cancelled-response-dto.d.ts +3 -3
- package/dist/models/bid-cancelled-response-dto.js +2 -2
- package/dist/models/bid-contact-dto.d.ts +2 -2
- package/dist/models/bid-contact-dto.js +2 -2
- package/dist/models/bid-contacts-dto.d.ts +2 -2
- package/dist/models/bid-contacts-dto.js +2 -2
- package/dist/models/bid-contract-document-dto.d.ts +9 -9
- package/dist/models/bid-contract-document-dto.js +2 -2
- package/dist/models/bid-delivery-terms-dto.d.ts +2 -2
- package/dist/models/bid-delivery-terms-dto.js +2 -2
- package/dist/models/bid-detail-response-dto.d.ts +5 -5
- package/dist/models/bid-detail-response-dto.js +2 -2
- package/dist/models/bid-document-dto.d.ts +2 -2
- package/dist/models/bid-document-dto.js +2 -2
- package/dist/models/bid-failed-v2-response-dto.d.ts +3 -3
- package/dist/models/bid-failed-v2-response-dto.js +2 -2
- package/dist/models/bid-item-dto.d.ts +2 -2
- package/dist/models/bid-item-dto.js +2 -2
- package/dist/models/bid-lifecycle-dto.d.ts +2 -2
- package/dist/models/bid-lifecycle-dto.js +2 -2
- package/dist/models/bid-manager-dto.d.ts +2 -2
- package/dist/models/bid-manager-dto.js +2 -2
- package/dist/models/bid-payment-terms-dto.d.ts +2 -2
- package/dist/models/bid-payment-terms-dto.js +2 -2
- package/dist/models/bid-product-dto.d.ts +2 -2
- package/dist/models/bid-product-dto.js +2 -2
- package/dist/models/bid-public-status.d.ts +2 -2
- package/dist/models/bid-public-status.js +2 -2
- package/dist/models/bid-registered-response-dto.d.ts +3 -3
- package/dist/models/bid-registered-response-dto.js +2 -2
- package/dist/models/bid-result-participant-attachment-dto.d.ts +3 -3
- package/dist/models/bid-result-participant-attachment-dto.js +2 -2
- package/dist/models/bid-result-participant-dto.d.ts +3 -3
- package/dist/models/bid-result-participant-dto.js +2 -2
- package/dist/models/bid-results-response-dto.d.ts +5 -5
- package/dist/models/bid-results-response-dto.js +2 -2
- package/dist/models/bid-settlement-line-item-dto.d.ts +2 -2
- package/dist/models/bid-settlement-line-item-dto.js +2 -2
- package/dist/models/bid-settlement-participant-dto.d.ts +2 -2
- package/dist/models/bid-settlement-participant-dto.js +2 -2
- package/dist/models/bid-settlement-response-dto.d.ts +2 -2
- package/dist/models/bid-settlement-response-dto.js +2 -2
- package/dist/models/bid-statement-response-dto.d.ts +2 -2
- package/dist/models/bid-statement-response-dto.js +2 -2
- package/dist/models/bid-summary-dto.d.ts +3 -3
- package/dist/models/bid-summary-dto.js +2 -2
- package/dist/models/bid-type-public.d.ts +2 -2
- package/dist/models/bid-type-public.js +2 -2
- package/dist/models/bid-updated-response-dto.d.ts +2 -2
- package/dist/models/bid-updated-response-dto.js +2 -2
- package/dist/models/cancel-bid-request-dto.d.ts +2 -2
- package/dist/models/cancel-bid-request-dto.js +2 -2
- package/dist/models/cancel-bid200-response.d.ts +2 -2
- package/dist/models/cancel-bid200-response.js +2 -2
- package/dist/models/card-payment-request-response-dto.d.ts +2 -2
- package/dist/models/card-payment-request-response-dto.js +2 -2
- package/dist/models/complete-acceptance-request-dto.d.ts +4 -4
- package/dist/models/complete-acceptance-request-dto.js +2 -2
- package/dist/models/complete-acceptance200-response.d.ts +2 -2
- package/dist/models/complete-acceptance200-response.js +2 -2
- package/dist/models/complete-invoice200-response.d.ts +2 -2
- package/dist/models/complete-invoice200-response.js +2 -2
- package/dist/models/complete-upload-request-dto.d.ts +2 -2
- package/dist/models/complete-upload-request-dto.js +2 -2
- package/dist/models/contract-restriction-confirm-input-dto.d.ts +3 -3
- package/dist/models/contract-restriction-confirm-input-dto.js +2 -2
- package/dist/models/create-bid-request-dto.d.ts +5 -5
- package/dist/models/create-bid-request-dto.js +2 -2
- package/dist/models/create-card-payment-dto.d.ts +2 -2
- package/dist/models/create-card-payment-dto.js +2 -2
- package/dist/models/create-card-payment-request-dto.d.ts +2 -2
- package/dist/models/create-card-payment-request-dto.js +2 -2
- package/dist/models/create-card-payment200-response.d.ts +2 -2
- package/dist/models/create-card-payment200-response.js +2 -2
- package/dist/models/create-embed-launch201-response.d.ts +2 -2
- package/dist/models/create-embed-launch201-response.js +2 -2
- package/dist/models/create-external-contract-documents-request-dto.d.ts +4 -4
- package/dist/models/create-external-contract-documents-request-dto.js +2 -2
- package/dist/models/create-external-contract-documents-response-dto.d.ts +2 -2
- package/dist/models/create-external-contract-documents-response-dto.js +2 -2
- package/dist/models/create-file-upload-url201-response.d.ts +2 -2
- package/dist/models/create-file-upload-url201-response.js +2 -2
- package/dist/models/create-upload-url-request-dto.d.ts +2 -2
- package/dist/models/create-upload-url-request-dto.js +2 -2
- package/dist/models/create-webhook-endpoint-request-dto.d.ts +4 -4
- package/dist/models/create-webhook-endpoint-request-dto.js +2 -2
- package/dist/models/create-webhook-endpoint201-response.d.ts +2 -2
- package/dist/models/create-webhook-endpoint201-response.js +2 -2
- package/dist/models/delivery-date-type-public.d.ts +2 -2
- package/dist/models/delivery-date-type-public.js +2 -2
- package/dist/models/delivery-method-public.d.ts +2 -2
- package/dist/models/delivery-method-public.js +2 -2
- package/dist/models/embed-bid-prefill-dto.d.ts +83 -0
- package/dist/models/embed-bid-prefill-dto.js +26 -0
- package/dist/models/embed-bid-prefill-item-dto.d.ts +33 -0
- package/dist/models/embed-bid-prefill-item-dto.js +15 -0
- package/dist/models/embed-bid-prefill-manager-dto.d.ts +25 -0
- package/dist/models/embed-bid-prefill-manager-dto.js +15 -0
- package/dist/models/embed-launch-request-dto.d.ts +10 -9
- package/dist/models/embed-launch-request-dto.js +2 -2
- package/dist/models/embed-launch-response-dto.d.ts +4 -4
- package/dist/models/embed-launch-response-dto.js +2 -2
- package/dist/models/excellent-procurement-public.d.ts +2 -2
- package/dist/models/excellent-procurement-public.js +2 -2
- package/dist/models/external-contract-document-item-dto.d.ts +3 -3
- package/dist/models/external-contract-document-item-dto.js +2 -2
- package/dist/models/external-contract-documents-response-dto.d.ts +2 -2
- package/dist/models/external-contract-documents-response-dto.js +2 -2
- package/dist/models/external-contract-item-dto.d.ts +2 -2
- package/dist/models/external-contract-item-dto.js +2 -2
- package/dist/models/external-contract-snapshot-dto.d.ts +5 -5
- package/dist/models/external-contract-snapshot-dto.js +2 -2
- package/dist/models/external-document-inputs-dto.d.ts +2 -2
- package/dist/models/external-document-inputs-dto.js +2 -2
- package/dist/models/file-meta-response-dto.d.ts +2 -2
- package/dist/models/file-meta-response-dto.js +2 -2
- package/dist/models/file-uploaded-response-dto.d.ts +2 -2
- package/dist/models/file-uploaded-response-dto.js +2 -2
- package/dist/models/generated-external-contract-document-dto.d.ts +4 -4
- package/dist/models/generated-external-contract-document-dto.js +2 -2
- package/dist/models/get-bid-settlement200-response.d.ts +2 -2
- package/dist/models/get-bid-settlement200-response.js +2 -2
- package/dist/models/get-bid-statement200-response.d.ts +2 -2
- package/dist/models/get-bid-statement200-response.js +2 -2
- package/dist/models/get-bid200-response.d.ts +2 -2
- package/dist/models/get-bid200-response.js +2 -2
- package/dist/models/get-file-meta200-response.d.ts +2 -2
- package/dist/models/get-file-meta200-response.js +2 -2
- package/dist/models/get-supplier-card-payable-v2200-response.d.ts +2 -2
- package/dist/models/get-supplier-card-payable-v2200-response.js +2 -2
- package/dist/models/get-webhook-endpoint200-response.d.ts +2 -2
- package/dist/models/get-webhook-endpoint200-response.js +2 -2
- package/dist/models/green-product-public.d.ts +2 -2
- package/dist/models/green-product-public.js +2 -2
- package/dist/models/health-controller-check200-response.d.ts +2 -2
- package/dist/models/health-controller-check200-response.js +2 -2
- package/dist/models/health-response-dto.d.ts +2 -2
- package/dist/models/health-response-dto.js +2 -2
- package/dist/models/hierarchical-region-dto.d.ts +2 -2
- package/dist/models/hierarchical-region-dto.js +2 -2
- package/dist/models/index.d.ts +3 -0
- package/dist/models/index.js +3 -0
- package/dist/models/introspect-request-dto.d.ts +5 -5
- package/dist/models/introspect-request-dto.js +2 -2
- package/dist/models/introspection-response-dto.d.ts +4 -4
- package/dist/models/introspection-response-dto.js +2 -2
- package/dist/models/invalid-param-dto.d.ts +2 -2
- package/dist/models/invalid-param-dto.js +2 -2
- package/dist/models/invoice-completed-response-dto.d.ts +2 -2
- package/dist/models/invoice-completed-response-dto.js +2 -2
- package/dist/models/invoice-split-response-dto.d.ts +2 -2
- package/dist/models/invoice-split-response-dto.js +2 -2
- package/dist/models/legal-mandatory-public.d.ts +2 -2
- package/dist/models/legal-mandatory-public.js +2 -2
- package/dist/models/list-bid-results200-response.d.ts +2 -2
- package/dist/models/list-bid-results200-response.js +2 -2
- package/dist/models/list-bids200-response-meta.d.ts +3 -3
- package/dist/models/list-bids200-response-meta.js +2 -2
- package/dist/models/list-bids200-response.d.ts +2 -2
- package/dist/models/list-bids200-response.js +2 -2
- package/dist/models/list-products200-response.d.ts +2 -2
- package/dist/models/list-products200-response.js +2 -2
- package/dist/models/list-webhook-deliveries-response-dto.d.ts +3 -3
- package/dist/models/list-webhook-deliveries-response-dto.js +2 -2
- package/dist/models/list-webhook-deliveries200-response.d.ts +2 -2
- package/dist/models/list-webhook-deliveries200-response.js +2 -2
- package/dist/models/list-webhook-endpoints200-response.d.ts +2 -2
- package/dist/models/list-webhook-endpoints200-response.js +2 -2
- package/dist/models/mark-bid-failed-request-dto.d.ts +2 -2
- package/dist/models/mark-bid-failed-request-dto.js +2 -2
- package/dist/models/mark-bid-failed201-response.d.ts +2 -2
- package/dist/models/mark-bid-failed201-response.js +2 -2
- package/dist/models/negotiation-score-dto.d.ts +2 -2
- package/dist/models/negotiation-score-dto.js +2 -2
- package/dist/models/negotiation-scored-v2-response-dto.d.ts +3 -3
- package/dist/models/negotiation-scored-v2-response-dto.js +2 -2
- package/dist/models/oauth-error-response-dto.d.ts +2 -2
- package/dist/models/oauth-error-response-dto.js +2 -2
- package/dist/models/on-bid-award-reverted-request.d.ts +2 -2
- package/dist/models/on-bid-award-reverted-request.js +2 -2
- package/dist/models/on-bid-awarded-request.d.ts +2 -2
- package/dist/models/on-bid-awarded-request.js +2 -2
- package/dist/models/on-bid-canceled-request.d.ts +2 -2
- package/dist/models/on-bid-canceled-request.js +2 -2
- package/dist/models/on-bid-closed-request.d.ts +2 -2
- package/dist/models/on-bid-closed-request.js +2 -2
- package/dist/models/on-bid-failed-request.d.ts +2 -2
- package/dist/models/on-bid-failed-request.js +2 -2
- package/dist/models/on-ping-request.d.ts +2 -2
- package/dist/models/on-ping-request.js +2 -2
- package/dist/models/partner-webhook-delivery-status.d.ts +2 -2
- package/dist/models/partner-webhook-delivery-status.js +2 -2
- package/dist/models/partner-webhook-endpoint-status.d.ts +3 -3
- package/dist/models/partner-webhook-endpoint-status.js +3 -3
- package/dist/models/partner-webhook-event-type.d.ts +2 -2
- package/dist/models/partner-webhook-event-type.js +2 -2
- package/dist/models/payment-method-public.d.ts +2 -2
- package/dist/models/payment-method-public.js +2 -2
- package/dist/models/preconditions-dto.d.ts +2 -2
- package/dist/models/preconditions-dto.js +2 -2
- package/dist/models/problem-details-dto.d.ts +3 -3
- package/dist/models/problem-details-dto.js +2 -2
- package/dist/models/product-receipt-response-dto.d.ts +2 -2
- package/dist/models/product-receipt-response-dto.js +2 -2
- package/dist/models/product-response-dto.d.ts +3 -3
- package/dist/models/product-response-dto.js +2 -2
- package/dist/models/protected-resource-metadata-dto.d.ts +6 -6
- package/dist/models/protected-resource-metadata-dto.js +2 -2
- package/dist/models/register-award-request-dto.d.ts +5 -5
- package/dist/models/register-award-request-dto.js +2 -2
- package/dist/models/register-award201-response.d.ts +2 -2
- package/dist/models/register-award201-response.js +2 -2
- package/dist/models/register-bid201-response.d.ts +2 -2
- package/dist/models/register-bid201-response.js +2 -2
- package/dist/models/register-semo-contract-request-dto.d.ts +5 -5
- package/dist/models/register-semo-contract-request-dto.js +2 -2
- package/dist/models/request-invoice-split-request-dto.d.ts +4 -4
- package/dist/models/request-invoice-split-request-dto.js +2 -2
- package/dist/models/request-invoice-split200-response.d.ts +2 -2
- package/dist/models/request-invoice-split200-response.js +2 -2
- package/dist/models/retiree-roster-input-dto.d.ts +2 -2
- package/dist/models/retiree-roster-input-dto.js +2 -2
- package/dist/models/retiree-roster-row-dto.d.ts +2 -2
- package/dist/models/retiree-roster-row-dto.js +2 -2
- package/dist/models/revert-award-request-dto.d.ts +2 -2
- package/dist/models/revert-award-request-dto.js +2 -2
- package/dist/models/revert-award200-response.d.ts +2 -2
- package/dist/models/revert-award200-response.js +2 -2
- package/dist/models/revoke-request-dto.d.ts +5 -5
- package/dist/models/revoke-request-dto.js +2 -2
- package/dist/models/semo-contract-registered-response-dto.d.ts +3 -3
- package/dist/models/semo-contract-registered-response-dto.js +2 -2
- package/dist/models/semo-contract-taxinvoice-status-response-dto.d.ts +2 -2
- package/dist/models/semo-contract-taxinvoice-status-response-dto.js +2 -2
- package/dist/models/send-webhook-test-event200-response.d.ts +2 -2
- package/dist/models/send-webhook-test-event200-response.js +2 -2
- package/dist/models/statement-document-dto.d.ts +3 -3
- package/dist/models/statement-document-dto.js +2 -2
- package/dist/models/statement-product-dto.d.ts +2 -2
- package/dist/models/statement-product-dto.js +2 -2
- package/dist/models/submit-negotiation-scores-request-dto.d.ts +2 -2
- package/dist/models/submit-negotiation-scores-request-dto.js +2 -2
- package/dist/models/submit-negotiation-scores201-response.d.ts +2 -2
- package/dist/models/submit-negotiation-scores201-response.js +2 -2
- package/dist/models/supplier-card-payable-response-dto.d.ts +2 -2
- package/dist/models/supplier-card-payable-response-dto.js +2 -2
- package/dist/models/supplier-tax-type.d.ts +2 -2
- package/dist/models/supplier-tax-type.js +2 -2
- package/dist/models/token-request-dto.d.ts +5 -5
- package/dist/models/token-request-dto.js +2 -2
- package/dist/models/token-response-dto.d.ts +3 -3
- package/dist/models/token-response-dto.js +2 -2
- package/dist/models/update-bid-request-dto.d.ts +5 -5
- package/dist/models/update-bid-request-dto.js +2 -2
- package/dist/models/update-bid200-response.d.ts +2 -2
- package/dist/models/update-bid200-response.js +2 -2
- package/dist/models/update-webhook-endpoint-request-dto.d.ts +3 -3
- package/dist/models/update-webhook-endpoint-request-dto.js +2 -2
- package/dist/models/upload-file-request-dto.d.ts +4 -4
- package/dist/models/upload-file-request-dto.js +2 -2
- package/dist/models/upload-file201-response.d.ts +2 -2
- package/dist/models/upload-file201-response.js +2 -2
- package/dist/models/upload-url-created-response-dto.d.ts +5 -5
- package/dist/models/upload-url-created-response-dto.js +2 -2
- package/dist/models/webhook-bid-event-data.d.ts +3 -3
- package/dist/models/webhook-bid-event-data.js +2 -2
- package/dist/models/webhook-delivery-dto.d.ts +4 -4
- package/dist/models/webhook-delivery-dto.js +2 -2
- package/dist/models/webhook-endpoint-dto.d.ts +6 -6
- package/dist/models/webhook-endpoint-dto.js +2 -2
- package/dist/models/webhook-endpoint-with-secret-dto.d.ts +6 -6
- package/dist/models/webhook-endpoint-with-secret-dto.js +2 -2
- package/dist/models/webhook-event-envelope.d.ts +3 -3
- package/dist/models/webhook-event-envelope.js +2 -2
- package/dist/models/webhook-ping-event-data.d.ts +2 -2
- package/dist/models/webhook-ping-event-data.js +2 -2
- package/dist/models/webhook-test-result-dto.d.ts +3 -3
- package/dist/models/webhook-test-result-dto.js +2 -2
- package/docs/AcknowledgeProductsRequestDto.md +1 -1
- package/docs/ApiCatalogEntryDto.md +2 -2
- package/docs/AuthorizationServerMetadataDto.md +4 -4
- package/docs/AwardRegisteredV2ResponseDto.md +1 -1
- package/docs/AwardRevertedV2ResponseDto.md +1 -1
- package/docs/BidAttachmentInputDto.md +4 -4
- package/docs/BidCancelledResponseDto.md +1 -1
- package/docs/BidContractDocumentDto.md +7 -7
- package/docs/BidDetailResponseDto.md +3 -3
- package/docs/BidFailedV2ResponseDto.md +1 -1
- package/docs/BidRegisteredResponseDto.md +1 -1
- package/docs/BidResultParticipantAttachmentDto.md +1 -1
- package/docs/BidResultParticipantDto.md +1 -1
- package/docs/BidResultsResponseDto.md +3 -3
- package/docs/BidSummaryDto.md +1 -1
- package/docs/CompleteAcceptanceRequestDto.md +2 -2
- package/docs/ContractRestrictionConfirmInputDto.md +1 -1
- package/docs/CreateBidRequestDto.md +3 -3
- package/docs/CreateExternalContractDocumentsRequestDto.md +2 -2
- package/docs/CreateWebhookEndpointRequestDto.md +2 -2
- package/docs/EmbedApi.md +11 -11
- package/docs/EmbedBidPrefillDto.md +46 -0
- package/docs/EmbedBidPrefillItemDto.md +28 -0
- package/docs/EmbedBidPrefillManagerDto.md +24 -0
- package/docs/EmbedLaunchRequestDto.md +6 -6
- package/docs/EmbedLaunchResponseDto.md +2 -2
- package/docs/ExternalContractDocumentItemDto.md +1 -1
- package/docs/ExternalContractSnapshotDto.md +3 -3
- package/docs/GeneratedExternalContractDocumentDto.md +2 -2
- package/docs/IntrospectRequestDto.md +3 -3
- package/docs/IntrospectionResponseDto.md +2 -2
- package/docs/ListBids200ResponseMeta.md +1 -1
- package/docs/ListWebhookDeliveriesResponseDto.md +1 -1
- package/docs/NegotiationScoredV2ResponseDto.md +1 -1
- package/docs/OauthApi.md +7 -7
- package/docs/PartnerApiApi.md +467 -467
- package/docs/PartnerWebhookEndpointStatus.md +1 -1
- package/docs/ProblemDetailsDto.md +1 -1
- package/docs/ProductResponseDto.md +1 -1
- package/docs/ProductsApi.md +28 -28
- package/docs/ProtectedResourceMetadataDto.md +4 -4
- package/docs/RegisterAwardRequestDto.md +3 -3
- package/docs/RegisterSemoContractRequestDto.md +3 -3
- package/docs/RequestInvoiceSplitRequestDto.md +2 -2
- package/docs/RevokeRequestDto.md +3 -3
- package/docs/SemoContractRegisteredResponseDto.md +1 -1
- package/docs/StatementDocumentDto.md +1 -1
- package/docs/TokenRequestDto.md +3 -3
- package/docs/TokenResponseDto.md +1 -1
- package/docs/UpdateBidRequestDto.md +3 -3
- package/docs/UpdateWebhookEndpointRequestDto.md +1 -1
- package/docs/UploadFileRequestDto.md +2 -2
- package/docs/UploadUrlCreatedResponseDto.md +3 -3
- package/docs/WebhookBidEventData.md +1 -1
- package/docs/WebhookDeliveryDto.md +2 -2
- package/docs/WebhookEndpointDto.md +4 -4
- package/docs/WebhookEndpointWithSecretDto.md +4 -4
- package/docs/WebhookEventEnvelope.md +1 -1
- package/docs/WebhookTestResultDto.md +1 -1
- package/docs/WebhooksApi.md +43 -43
- package/docs/WellKnownApi.md +5 -5
- package/index.ts +2 -2
- package/models/acceptance-result-response-dto.ts +2 -2
- package/models/acknowledge-product-receipt200-response.ts +2 -2
- package/models/acknowledge-products-request-dto.ts +3 -3
- package/models/api-catalog-dto.ts +2 -2
- package/models/api-catalog-entry-dto.ts +4 -4
- package/models/api-catalog-link-dto.ts +2 -2
- package/models/authorization-server-metadata-dto.ts +6 -6
- package/models/award-method-public.ts +2 -2
- package/models/award-registered-v2-response-dto.ts +3 -3
- package/models/award-reverted-v2-response-dto.ts +3 -3
- package/models/bid-acceptance-dto.ts +2 -2
- package/models/bid-attachment-input-dto.ts +6 -6
- package/models/bid-bond-dto.ts +2 -2
- package/models/bid-cancelled-response-dto.ts +3 -3
- package/models/bid-contact-dto.ts +2 -2
- package/models/bid-contacts-dto.ts +2 -2
- package/models/bid-contract-document-dto.ts +9 -9
- package/models/bid-delivery-terms-dto.ts +2 -2
- package/models/bid-detail-response-dto.ts +5 -5
- package/models/bid-document-dto.ts +2 -2
- package/models/bid-failed-v2-response-dto.ts +3 -3
- package/models/bid-item-dto.ts +2 -2
- package/models/bid-lifecycle-dto.ts +2 -2
- package/models/bid-manager-dto.ts +2 -2
- package/models/bid-payment-terms-dto.ts +2 -2
- package/models/bid-product-dto.ts +2 -2
- package/models/bid-public-status.ts +2 -2
- package/models/bid-registered-response-dto.ts +3 -3
- package/models/bid-result-participant-attachment-dto.ts +3 -3
- package/models/bid-result-participant-dto.ts +3 -3
- package/models/bid-results-response-dto.ts +5 -5
- package/models/bid-settlement-line-item-dto.ts +2 -2
- package/models/bid-settlement-participant-dto.ts +2 -2
- package/models/bid-settlement-response-dto.ts +2 -2
- package/models/bid-statement-response-dto.ts +2 -2
- package/models/bid-summary-dto.ts +3 -3
- package/models/bid-type-public.ts +2 -2
- package/models/bid-updated-response-dto.ts +2 -2
- package/models/cancel-bid-request-dto.ts +2 -2
- package/models/cancel-bid200-response.ts +2 -2
- package/models/card-payment-request-response-dto.ts +2 -2
- package/models/complete-acceptance-request-dto.ts +4 -4
- package/models/complete-acceptance200-response.ts +2 -2
- package/models/complete-invoice200-response.ts +2 -2
- package/models/complete-upload-request-dto.ts +2 -2
- package/models/contract-restriction-confirm-input-dto.ts +3 -3
- package/models/create-bid-request-dto.ts +5 -5
- package/models/create-card-payment-dto.ts +2 -2
- package/models/create-card-payment-request-dto.ts +2 -2
- package/models/create-card-payment200-response.ts +2 -2
- package/models/create-embed-launch201-response.ts +2 -2
- package/models/create-external-contract-documents-request-dto.ts +4 -4
- package/models/create-external-contract-documents-response-dto.ts +2 -2
- package/models/create-file-upload-url201-response.ts +2 -2
- package/models/create-upload-url-request-dto.ts +2 -2
- package/models/create-webhook-endpoint-request-dto.ts +4 -4
- package/models/create-webhook-endpoint201-response.ts +2 -2
- package/models/delivery-date-type-public.ts +2 -2
- package/models/delivery-method-public.ts +2 -2
- package/models/embed-bid-prefill-dto.ts +97 -0
- package/models/embed-bid-prefill-item-dto.ts +39 -0
- package/models/embed-bid-prefill-manager-dto.ts +31 -0
- package/models/embed-launch-request-dto.ts +12 -9
- package/models/embed-launch-response-dto.ts +4 -4
- package/models/excellent-procurement-public.ts +2 -2
- package/models/external-contract-document-item-dto.ts +3 -3
- package/models/external-contract-documents-response-dto.ts +2 -2
- package/models/external-contract-item-dto.ts +2 -2
- package/models/external-contract-snapshot-dto.ts +5 -5
- package/models/external-document-inputs-dto.ts +2 -2
- package/models/file-meta-response-dto.ts +2 -2
- package/models/file-uploaded-response-dto.ts +2 -2
- package/models/generated-external-contract-document-dto.ts +4 -4
- package/models/get-bid-settlement200-response.ts +2 -2
- package/models/get-bid-statement200-response.ts +2 -2
- package/models/get-bid200-response.ts +2 -2
- package/models/get-file-meta200-response.ts +2 -2
- package/models/get-supplier-card-payable-v2200-response.ts +2 -2
- package/models/get-webhook-endpoint200-response.ts +2 -2
- package/models/green-product-public.ts +2 -2
- package/models/health-controller-check200-response.ts +2 -2
- package/models/health-response-dto.ts +2 -2
- package/models/hierarchical-region-dto.ts +2 -2
- package/models/index.ts +3 -0
- package/models/introspect-request-dto.ts +5 -5
- package/models/introspection-response-dto.ts +4 -4
- package/models/invalid-param-dto.ts +2 -2
- package/models/invoice-completed-response-dto.ts +2 -2
- package/models/invoice-split-response-dto.ts +2 -2
- package/models/legal-mandatory-public.ts +2 -2
- package/models/list-bid-results200-response.ts +2 -2
- package/models/list-bids200-response-meta.ts +3 -3
- package/models/list-bids200-response.ts +2 -2
- package/models/list-products200-response.ts +2 -2
- package/models/list-webhook-deliveries-response-dto.ts +3 -3
- package/models/list-webhook-deliveries200-response.ts +2 -2
- package/models/list-webhook-endpoints200-response.ts +2 -2
- package/models/mark-bid-failed-request-dto.ts +2 -2
- package/models/mark-bid-failed201-response.ts +2 -2
- package/models/negotiation-score-dto.ts +2 -2
- package/models/negotiation-scored-v2-response-dto.ts +3 -3
- package/models/oauth-error-response-dto.ts +2 -2
- package/models/on-bid-award-reverted-request.ts +2 -2
- package/models/on-bid-awarded-request.ts +2 -2
- package/models/on-bid-canceled-request.ts +2 -2
- package/models/on-bid-closed-request.ts +2 -2
- package/models/on-bid-failed-request.ts +2 -2
- package/models/on-ping-request.ts +2 -2
- package/models/partner-webhook-delivery-status.ts +2 -2
- package/models/partner-webhook-endpoint-status.ts +3 -3
- package/models/partner-webhook-event-type.ts +2 -2
- package/models/payment-method-public.ts +2 -2
- package/models/preconditions-dto.ts +2 -2
- package/models/problem-details-dto.ts +3 -3
- package/models/product-receipt-response-dto.ts +2 -2
- package/models/product-response-dto.ts +3 -3
- package/models/protected-resource-metadata-dto.ts +6 -6
- package/models/register-award-request-dto.ts +5 -5
- package/models/register-award201-response.ts +2 -2
- package/models/register-bid201-response.ts +2 -2
- package/models/register-semo-contract-request-dto.ts +5 -5
- package/models/request-invoice-split-request-dto.ts +4 -4
- package/models/request-invoice-split200-response.ts +2 -2
- package/models/retiree-roster-input-dto.ts +2 -2
- package/models/retiree-roster-row-dto.ts +2 -2
- package/models/revert-award-request-dto.ts +2 -2
- package/models/revert-award200-response.ts +2 -2
- package/models/revoke-request-dto.ts +5 -5
- package/models/semo-contract-registered-response-dto.ts +3 -3
- package/models/semo-contract-taxinvoice-status-response-dto.ts +2 -2
- package/models/send-webhook-test-event200-response.ts +2 -2
- package/models/statement-document-dto.ts +3 -3
- package/models/statement-product-dto.ts +2 -2
- package/models/submit-negotiation-scores-request-dto.ts +2 -2
- package/models/submit-negotiation-scores201-response.ts +2 -2
- package/models/supplier-card-payable-response-dto.ts +2 -2
- package/models/supplier-tax-type.ts +2 -2
- package/models/token-request-dto.ts +5 -5
- package/models/token-response-dto.ts +3 -3
- package/models/update-bid-request-dto.ts +5 -5
- package/models/update-bid200-response.ts +2 -2
- package/models/update-webhook-endpoint-request-dto.ts +3 -3
- package/models/upload-file-request-dto.ts +4 -4
- package/models/upload-file201-response.ts +2 -2
- package/models/upload-url-created-response-dto.ts +5 -5
- package/models/webhook-bid-event-data.ts +3 -3
- package/models/webhook-delivery-dto.ts +4 -4
- package/models/webhook-endpoint-dto.ts +6 -6
- package/models/webhook-endpoint-with-secret-dto.ts +6 -6
- package/models/webhook-event-envelope.ts +3 -3
- package/models/webhook-ping-event-data.ts +2 -2
- package/models/webhook-test-result-dto.ts +3 -3
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* CMARKET V6 Partner API
|
|
3
|
-
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token
|
|
3
|
+
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token`์์ ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ `Authorization: Bearer <token>` ํค๋๋ก ์ค์ผ์ธ์. ## ๊ถํ โ ๋ ๊ฐ์ ๋
๋ฆฝ๋ ์ถ `403`์ ๋ง๋ฌ๋ค๋ฉด ๋ ์ค ์ด๋ ์ถ์ ๊ฑธ๋ฆฐ ๊ฒ์ธ์ง ๋จผ์ ๊ตฌ๋ถํ์ธ์. - **์ค์ฝํ** = *๋ฌด์์ ํ ์ ์๋*. ํ ํฐ์ ๋ถ์ฌ๋ `bids:read`ยท`contracts:write` ๋ฑ์
๋๋ค. ๋ฏธ๋ณด์ ์ `โฆ/insufficient-scope`. - **๋ํ ๋ฒ์** = *๋๊ตฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ ์๋*. API ํค ์ค์ ์ด๋ฉฐ ์ค์ฝํ๋ก ํํ๋์ง ์์ต๋๋ค. ๋ฒ์ ๋ฐ์ด๋ฉด ์ค์ฝํ์ ๋ฌด๊ดํ๊ฒ 403์
๋๋ค. ๋ํ ๋ฒ์๋ ํค๋ง๋ค ๋ ์ค ํ๋๋ก ์ค์ ๋ฉ๋๋ค โ **์์ ๊ทธ๋ฃน ์ ์**(๊ธฐ๊ด ํค. ์ฌ์
์ฒยท๋ถ์ ๊ณ์ ์ด ์๋ก ์๊ฒจ๋ ์๋ ํฌํจ) ๋๋ **์ง์ ๋ฐ์ฃผ๊ธฐ๊ด ๋ชฉ๋ก**(๊ณ์ฝ์ผ๋ก ํฉ์๋ ๋ชฉ๋ก). ๋ฒ์๋ฅผ ๋ํ์ผ ํ๋ฉด ์ค์ฝํ๊ฐ ์๋๋ผ ํค ์ค์ ๋ณ๊ฒฝ์ ์์ฒญํ์ธ์. ## ์ฑ๊ณต ์๋ต ๋ดํฌ `/v2`์ ๋ชจ๋ 2xx ๋ณธ๋ฌธ์ `{ \"data\": โฆ }`์
๋๋ค. ๋จ์ผ ๋ฆฌ์์ค๋ ๋ชฉ๋ก์ด๋ ๊ฐ์ต๋๋ค. **๋ชฉ๋ก์ `data`๊ฐ ๋ฐฐ์ด์ด๊ณ `meta`๊ฐ ํญ์ ํจ๊ป ์ค๋ฆฝ๋๋ค** โ `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. ๋จ์ผ ๋ฆฌ์์ค ์๋ต์๋ `meta`๊ฐ ๋๊ฐ์ง ์์ต๋๋ค. ๋ดํฌ๋ฅผ ์ฐ์ง ์๋ ํ๋ฉด์ ๋์
๋๋ค. `/oauth/_*`์ `/.well-known/_*`๋ ๊ฐ๊ฐ RFC 6749ยทRFC 8414ยทRFC 9728์ด ์ต์์ ํ๋๋ฅผ ๊ท์ ํ๊ณ , ํ์ผ ๋ด์ฉ ์๋ต์ ๋ณธ๋ฌธ์ด JSON์ด ์๋๋๋ค. ์๋ฌ ์๋ต์๋ ๋ดํฌ๋ฅผ ์์ฐ์ง ์์ต๋๋ค โ ์๋ problem+json์ด ๋จ๋
์ผ๋ก ์ฑ
์์ง๋๋ค. ## ์กฐ๊ฑด๋ถ ์์ฒญ (ETag) `/v2`์ ๋ชจ๋ `GET` ์๋ต์ weak `ETag`(`W/\"โฆ\"`)๊ฐ ์ค๋ฆฝ๋๋ค. ๋ฐ์ ๊ฐ์ ๋ค์ ์์ฒญ์ `If-None-Match` ํค๋๋ก ๋๋ณด๋ด๋ฉด, ๋ด์ฉ์ด ๊ทธ๋๋ก์ผ ๋ `304 Not Modified`๋ฅผ ๋ณธ๋ฌธ ์์ด ๋ฐ์ต๋๋ค. ๊ฒฐ๊ณผ๊ฐ ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๊ฐ์ ์์์ ๋ฐ๋ณต ์กฐํํ๋ ์ฐ๋์ด๋ผ๋ฉด ์ด ํค๋ ํ๋๋ก ์ ์ก๋์ด ์ฌ๋ผ์ง๋๋ค. ## ์๋ฌ (RFC 9457 problem+json) ๋ชจ๋ ์๋ฌ ์๋ต์ `application/problem+json`์
๋๋ค. **HTTP status + `type` URI** ๋ก ๋ถ๊ธฐํ์ธ์. - `retryable`(boolean): ์๋ ์ฌ์๋ ์์ ์ฌ๋ถ. `true`(429ยท5xx transient)๋ฉด backoff ํ ์ฌ์๋ํ๊ณ , `false`๋ฉด ์์ฒญ์ ๊ณ ์ณ์ผ ํฉ๋๋ค. - `traceId`: ์์ฒญ ์ถ์ id. `X-Correlation-Id` ์๋ต ํค๋์ ๊ฐ์ ๊ฐ์
๋๋ค โ ๋ฌธ์ํ ๋ ์ด ๊ฐ์ ์ฒจ๋ถํ์ธ์. - `correlationId`: `traceId`์ ๊ฐ์ ๊ฐ์ ์ ์ด๋ฆ. ๊ธฐ์กด ์ฐ๋ ํธํ์ผ๋ก ํจ๊ป ์ค๋ฆฝ๋๋ค. ์ ์ฐ๋์ `traceId`๋ฅผ ์ฝ์ผ์ธ์. - `invalid-params`: ๊ฒ์ฆ ์คํจ(400 `โฆ/validation-failed`) ์ ์๋ฐ ํ๋ ๊ฒฝ๋ก ๋ชฉ๋ก(RFC 9457 ํ์ฅ, ๊ฐ ์์). `type`์ `https://problems.cmarket.io/partner/<slug>` ํํ์ **์์ ์๋ณ์**์
๋๋ค. RFC 9457 ยง3.1.1์ด ํ์ฉํ๋ ๋๋ก ์ด URI๋ **์ญ์ฐธ์กฐ(dereference)๋์ง ์์ต๋๋ค** โ ๋ธ๋ผ์ฐ์ ๋ก ์ด์ง ๋ง๊ณ ๋ฌธ์์ด ๋น๊ต๋ก๋ง ์ฐ์ธ์. slug ๋ชฉ๋ก๊ณผ ์๋ฏธ๋ ๊ฐ ์๋ํฌ์ธํธ์ ์๋ต ์ค๋ช
์ status ๋ณ๋ก ์ ํ ์์ต๋๋ค. ### ๋ฉฑ๋ฑ์ฑ ์๋ฐ: 409์ 422์ ์ฐจ์ด - `409` `โฆ/idempotency-key-conflict` โ ๊ฐ์ ํค์ **์ ์์ฒญ์ด ์์ง ์ฒ๋ฆฌ ์ค**์
๋๋ค. ์ ์ ๋ค ๊ฐ์ ํค๋ก ๋ค์ ๋ถ๋ฅด๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ต๋๋ค. - `422` `โฆ/idempotency-key-reused` โ ๊ฐ์ ํค๋ฅผ **๋ค๋ฅธ body** ๋ก ๋ณด๋์ต๋๋ค. ์ฌ์๋ํด๋ ์์ํ ๊ฐ์ ์คํจ์ด๋ ์ ํค๋ฅผ ์ฐ๊ฑฐ๋ body๋ฅผ ๋๋๋ฆฌ์ธ์. ## Rate Limit ์ ์ญ **60 ์์ฒญ/๋ถ per `client_id`**, ํ ํฐ ๋ฐ๊ธ(`/oauth/token`)์ **5 ์์ฒญ/๋ถ** ์
๋๋ค. ์ด๊ณผ ์ `429`(`type: โฆ/too-many-requests`). ์ฟผํฐ๋ ๋ ๊ฐ์ง ํ๊ธฐ๋ก ํจ๊ป ๋๊ฐ๋๋ค โ ์ ๊ท ์ฐ๋์ ํ์ค ํ๋๋ฅผ ์ฐ์ธ์. - **ํ์ค**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (์ ์ฑ
) ยท `RateLimit: \"default\";r=59;t=42` (์๋ r, ๋ฆฌ์
๊น์ง t ์ด) - **๋ ๊ฑฐ์**(๊ด์ฉ): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. ๊ธฐ์กด ์ฐ๋ ํธํ์ ์ํด ์ ์งํฉ๋๋ค. `429` ์์๋ `Retry-After`(์ด)๊ฐ ์ฐ์ ํฉ๋๋ค. ๋๋ ๋๊ธฐํ(ํ๋ชฉ ๋จ์ ๋ฐ๋ณต ๋ฑ๋ก ๋ฑ)๋ `Retry-After` ๋งํผ backoff ํ ์ฌ์๋ํ์ธ์. ## ์ถ์ ์์ฒญ์ `X-Correlation-Id` ํค๋๋ฅผ ์ค์ผ๋ฉด ๊ทธ๋๋ก echo ๋๊ณ , ์์ผ๋ฉด ์๋ฒ๊ฐ ๋ฐ๊ธํฉ๋๋ค. ๋ชจ๋ ์๋ต(์ฑ๊ณต/์๋ฌ)์ `X-Correlation-Id`๊ฐ ์ค๋ฆฝ๋๋ค. ## ์ ๋ฐฉํธํ โ ๋ชจ๋ฅด๋ ํ๋์ ๊ฐ์์ ๊นจ์ง์ง ์๊ฒ ๋ค์ ์
์ breaking ๋ณ๊ฒฝ์ผ๋ก ๋ณด์ง ์์ผ๋ฉฐ minor ๋ฆด๋ฆฌ์ค์์ ์๊ณ ์์ด ์ผ์ด๋ฉ๋๋ค. ์ด ์ ์ ๋ก ๊ตฌํํ์ธ์. - **์ ํ ํ๋ ์ถ๊ฐ**: ๋ชจ๋ฅด๋ ํ๋๋ ๋ฌด์ํ์ธ์. ์๊ฒฉ ํ์(unknown key ๊ฑฐ๋ถ)๋ฅผ ์ฐ์ง ๋ง์ธ์. - **enum ๊ฐ ์ถ๊ฐ**: ์ํยท๋์ฐฐ๋ฐฉ๋ฒ ๋ฑ์ ์ ๊ฐ์ด ์๊น๋๋ค. ๋ชจ๋ฅด๋ ๊ฐ์ ๋ง๋๋ฉด ์์ธ๋ฅผ ๋์ง์ง ๋ง๊ณ ์๋ฌธ ๋ฌธ์์ด์ ๋ณด์กดํ์ธ์. - **problem `type` slug ์ถ๊ฐ**: ๋ชจ๋ฅด๋ slug์ **HTTP status๋ก ํด๋ฐฑ**ํด ๋ถ๊ธฐํ์ธ์. ## ๋ฒ์ ์๋ช
(deprecation/sunset) - **_/v2** breaking ๋ณ๊ฒฝ์ CHANGELOG SemVer(major bump)์ `Deprecation`/`Sunset` ํค๋๋ก ํต์งํฉ๋๋ค. ์ด ํค๋๋ฅผ ๋ชจ๋ํฐ๋งํ์ธ์.
|
|
4
4
|
*
|
|
5
|
-
* The version of the OpenAPI document:
|
|
5
|
+
* The version of the OpenAPI document: 40.0.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. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token
|
|
6
|
+
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token`์์ ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ `Authorization: Bearer <token>` ํค๋๋ก ์ค์ผ์ธ์. ## ๊ถํ โ ๋ ๊ฐ์ ๋
๋ฆฝ๋ ์ถ `403`์ ๋ง๋ฌ๋ค๋ฉด ๋ ์ค ์ด๋ ์ถ์ ๊ฑธ๋ฆฐ ๊ฒ์ธ์ง ๋จผ์ ๊ตฌ๋ถํ์ธ์. - **์ค์ฝํ** = *๋ฌด์์ ํ ์ ์๋*. ํ ํฐ์ ๋ถ์ฌ๋ `bids:read`ยท`contracts:write` ๋ฑ์
๋๋ค. ๋ฏธ๋ณด์ ์ `โฆ/insufficient-scope`. - **๋ํ ๋ฒ์** = *๋๊ตฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ ์๋*. API ํค ์ค์ ์ด๋ฉฐ ์ค์ฝํ๋ก ํํ๋์ง ์์ต๋๋ค. ๋ฒ์ ๋ฐ์ด๋ฉด ์ค์ฝํ์ ๋ฌด๊ดํ๊ฒ 403์
๋๋ค. ๋ํ ๋ฒ์๋ ํค๋ง๋ค ๋ ์ค ํ๋๋ก ์ค์ ๋ฉ๋๋ค โ **์์ ๊ทธ๋ฃน ์ ์**(๊ธฐ๊ด ํค. ์ฌ์
์ฒยท๋ถ์ ๊ณ์ ์ด ์๋ก ์๊ฒจ๋ ์๋ ํฌํจ) ๋๋ **์ง์ ๋ฐ์ฃผ๊ธฐ๊ด ๋ชฉ๋ก**(๊ณ์ฝ์ผ๋ก ํฉ์๋ ๋ชฉ๋ก). ๋ฒ์๋ฅผ ๋ํ์ผ ํ๋ฉด ์ค์ฝํ๊ฐ ์๋๋ผ ํค ์ค์ ๋ณ๊ฒฝ์ ์์ฒญํ์ธ์. ## ์ฑ๊ณต ์๋ต ๋ดํฌ `/v2`์ ๋ชจ๋ 2xx ๋ณธ๋ฌธ์ `{ \"data\": โฆ }`์
๋๋ค. ๋จ์ผ ๋ฆฌ์์ค๋ ๋ชฉ๋ก์ด๋ ๊ฐ์ต๋๋ค. **๋ชฉ๋ก์ `data`๊ฐ ๋ฐฐ์ด์ด๊ณ `meta`๊ฐ ํญ์ ํจ๊ป ์ค๋ฆฝ๋๋ค** โ `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. ๋จ์ผ ๋ฆฌ์์ค ์๋ต์๋ `meta`๊ฐ ๋๊ฐ์ง ์์ต๋๋ค. ๋ดํฌ๋ฅผ ์ฐ์ง ์๋ ํ๋ฉด์ ๋์
๋๋ค. `/oauth/_*`์ `/.well-known/_*`๋ ๊ฐ๊ฐ RFC 6749ยทRFC 8414ยทRFC 9728์ด ์ต์์ ํ๋๋ฅผ ๊ท์ ํ๊ณ , ํ์ผ ๋ด์ฉ ์๋ต์ ๋ณธ๋ฌธ์ด JSON์ด ์๋๋๋ค. ์๋ฌ ์๋ต์๋ ๋ดํฌ๋ฅผ ์์ฐ์ง ์์ต๋๋ค โ ์๋ problem+json์ด ๋จ๋
์ผ๋ก ์ฑ
์์ง๋๋ค. ## ์กฐ๊ฑด๋ถ ์์ฒญ (ETag) `/v2`์ ๋ชจ๋ `GET` ์๋ต์ weak `ETag`(`W/\"โฆ\"`)๊ฐ ์ค๋ฆฝ๋๋ค. ๋ฐ์ ๊ฐ์ ๋ค์ ์์ฒญ์ `If-None-Match` ํค๋๋ก ๋๋ณด๋ด๋ฉด, ๋ด์ฉ์ด ๊ทธ๋๋ก์ผ ๋ `304 Not Modified`๋ฅผ ๋ณธ๋ฌธ ์์ด ๋ฐ์ต๋๋ค. ๊ฒฐ๊ณผ๊ฐ ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๊ฐ์ ์์์ ๋ฐ๋ณต ์กฐํํ๋ ์ฐ๋์ด๋ผ๋ฉด ์ด ํค๋ ํ๋๋ก ์ ์ก๋์ด ์ฌ๋ผ์ง๋๋ค. ## ์๋ฌ (RFC 9457 problem+json) ๋ชจ๋ ์๋ฌ ์๋ต์ `application/problem+json`์
๋๋ค. **HTTP status + `type` URI** ๋ก ๋ถ๊ธฐํ์ธ์. - `retryable`(boolean): ์๋ ์ฌ์๋ ์์ ์ฌ๋ถ. `true`(429ยท5xx transient)๋ฉด backoff ํ ์ฌ์๋ํ๊ณ , `false`๋ฉด ์์ฒญ์ ๊ณ ์ณ์ผ ํฉ๋๋ค. - `traceId`: ์์ฒญ ์ถ์ id. `X-Correlation-Id` ์๋ต ํค๋์ ๊ฐ์ ๊ฐ์
๋๋ค โ ๋ฌธ์ํ ๋ ์ด ๊ฐ์ ์ฒจ๋ถํ์ธ์. - `correlationId`: `traceId`์ ๊ฐ์ ๊ฐ์ ์ ์ด๋ฆ. ๊ธฐ์กด ์ฐ๋ ํธํ์ผ๋ก ํจ๊ป ์ค๋ฆฝ๋๋ค. ์ ์ฐ๋์ `traceId`๋ฅผ ์ฝ์ผ์ธ์. - `invalid-params`: ๊ฒ์ฆ ์คํจ(400 `โฆ/validation-failed`) ์ ์๋ฐ ํ๋ ๊ฒฝ๋ก ๋ชฉ๋ก(RFC 9457 ํ์ฅ, ๊ฐ ์์). `type`์ `https://problems.cmarket.io/partner/<slug>` ํํ์ **์์ ์๋ณ์**์
๋๋ค. RFC 9457 ยง3.1.1์ด ํ์ฉํ๋ ๋๋ก ์ด URI๋ **์ญ์ฐธ์กฐ(dereference)๋์ง ์์ต๋๋ค** โ ๋ธ๋ผ์ฐ์ ๋ก ์ด์ง ๋ง๊ณ ๋ฌธ์์ด ๋น๊ต๋ก๋ง ์ฐ์ธ์. slug ๋ชฉ๋ก๊ณผ ์๋ฏธ๋ ๊ฐ ์๋ํฌ์ธํธ์ ์๋ต ์ค๋ช
์ status ๋ณ๋ก ์ ํ ์์ต๋๋ค. ### ๋ฉฑ๋ฑ์ฑ ์๋ฐ: 409์ 422์ ์ฐจ์ด - `409` `โฆ/idempotency-key-conflict` โ ๊ฐ์ ํค์ **์ ์์ฒญ์ด ์์ง ์ฒ๋ฆฌ ์ค**์
๋๋ค. ์ ์ ๋ค ๊ฐ์ ํค๋ก ๋ค์ ๋ถ๋ฅด๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ต๋๋ค. - `422` `โฆ/idempotency-key-reused` โ ๊ฐ์ ํค๋ฅผ **๋ค๋ฅธ body** ๋ก ๋ณด๋์ต๋๋ค. ์ฌ์๋ํด๋ ์์ํ ๊ฐ์ ์คํจ์ด๋ ์ ํค๋ฅผ ์ฐ๊ฑฐ๋ body๋ฅผ ๋๋๋ฆฌ์ธ์. ## Rate Limit ์ ์ญ **60 ์์ฒญ/๋ถ per `client_id`**, ํ ํฐ ๋ฐ๊ธ(`/oauth/token`)์ **5 ์์ฒญ/๋ถ** ์
๋๋ค. ์ด๊ณผ ์ `429`(`type: โฆ/too-many-requests`). ์ฟผํฐ๋ ๋ ๊ฐ์ง ํ๊ธฐ๋ก ํจ๊ป ๋๊ฐ๋๋ค โ ์ ๊ท ์ฐ๋์ ํ์ค ํ๋๋ฅผ ์ฐ์ธ์. - **ํ์ค**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (์ ์ฑ
) ยท `RateLimit: \"default\";r=59;t=42` (์๋ r, ๋ฆฌ์
๊น์ง t ์ด) - **๋ ๊ฑฐ์**(๊ด์ฉ): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. ๊ธฐ์กด ์ฐ๋ ํธํ์ ์ํด ์ ์งํฉ๋๋ค. `429` ์์๋ `Retry-After`(์ด)๊ฐ ์ฐ์ ํฉ๋๋ค. ๋๋ ๋๊ธฐํ(ํ๋ชฉ ๋จ์ ๋ฐ๋ณต ๋ฑ๋ก ๋ฑ)๋ `Retry-After` ๋งํผ backoff ํ ์ฌ์๋ํ์ธ์. ## ์ถ์ ์์ฒญ์ `X-Correlation-Id` ํค๋๋ฅผ ์ค์ผ๋ฉด ๊ทธ๋๋ก echo ๋๊ณ , ์์ผ๋ฉด ์๋ฒ๊ฐ ๋ฐ๊ธํฉ๋๋ค. ๋ชจ๋ ์๋ต(์ฑ๊ณต/์๋ฌ)์ `X-Correlation-Id`๊ฐ ์ค๋ฆฝ๋๋ค. ## ์ ๋ฐฉํธํ โ ๋ชจ๋ฅด๋ ํ๋์ ๊ฐ์์ ๊นจ์ง์ง ์๊ฒ ๋ค์ ์
์ breaking ๋ณ๊ฒฝ์ผ๋ก ๋ณด์ง ์์ผ๋ฉฐ minor ๋ฆด๋ฆฌ์ค์์ ์๊ณ ์์ด ์ผ์ด๋ฉ๋๋ค. ์ด ์ ์ ๋ก ๊ตฌํํ์ธ์. - **์ ํ ํ๋ ์ถ๊ฐ**: ๋ชจ๋ฅด๋ ํ๋๋ ๋ฌด์ํ์ธ์. ์๊ฒฉ ํ์(unknown key ๊ฑฐ๋ถ)๋ฅผ ์ฐ์ง ๋ง์ธ์. - **enum ๊ฐ ์ถ๊ฐ**: ์ํยท๋์ฐฐ๋ฐฉ๋ฒ ๋ฑ์ ์ ๊ฐ์ด ์๊น๋๋ค. ๋ชจ๋ฅด๋ ๊ฐ์ ๋ง๋๋ฉด ์์ธ๋ฅผ ๋์ง์ง ๋ง๊ณ ์๋ฌธ ๋ฌธ์์ด์ ๋ณด์กดํ์ธ์. - **problem `type` slug ์ถ๊ฐ**: ๋ชจ๋ฅด๋ slug์ **HTTP status๋ก ํด๋ฐฑ**ํด ๋ถ๊ธฐํ์ธ์. ## ๋ฒ์ ์๋ช
(deprecation/sunset) - **_/v2** breaking ๋ณ๊ฒฝ์ CHANGELOG SemVer(major bump)์ `Deprecation`/`Sunset` ํค๋๋ก ํต์งํฉ๋๋ค. ์ด ํค๋๋ฅผ ๋ชจ๋ํฐ๋งํ์ธ์.
|
|
7
7
|
*
|
|
8
|
-
* The version of the OpenAPI document:
|
|
8
|
+
* The version of the OpenAPI document: 40.0.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).
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* CMARKET V6 Partner API
|
|
3
|
-
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token
|
|
3
|
+
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token`์์ ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ `Authorization: Bearer <token>` ํค๋๋ก ์ค์ผ์ธ์. ## ๊ถํ โ ๋ ๊ฐ์ ๋
๋ฆฝ๋ ์ถ `403`์ ๋ง๋ฌ๋ค๋ฉด ๋ ์ค ์ด๋ ์ถ์ ๊ฑธ๋ฆฐ ๊ฒ์ธ์ง ๋จผ์ ๊ตฌ๋ถํ์ธ์. - **์ค์ฝํ** = *๋ฌด์์ ํ ์ ์๋*. ํ ํฐ์ ๋ถ์ฌ๋ `bids:read`ยท`contracts:write` ๋ฑ์
๋๋ค. ๋ฏธ๋ณด์ ์ `โฆ/insufficient-scope`. - **๋ํ ๋ฒ์** = *๋๊ตฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ ์๋*. API ํค ์ค์ ์ด๋ฉฐ ์ค์ฝํ๋ก ํํ๋์ง ์์ต๋๋ค. ๋ฒ์ ๋ฐ์ด๋ฉด ์ค์ฝํ์ ๋ฌด๊ดํ๊ฒ 403์
๋๋ค. ๋ํ ๋ฒ์๋ ํค๋ง๋ค ๋ ์ค ํ๋๋ก ์ค์ ๋ฉ๋๋ค โ **์์ ๊ทธ๋ฃน ์ ์**(๊ธฐ๊ด ํค. ์ฌ์
์ฒยท๋ถ์ ๊ณ์ ์ด ์๋ก ์๊ฒจ๋ ์๋ ํฌํจ) ๋๋ **์ง์ ๋ฐ์ฃผ๊ธฐ๊ด ๋ชฉ๋ก**(๊ณ์ฝ์ผ๋ก ํฉ์๋ ๋ชฉ๋ก). ๋ฒ์๋ฅผ ๋ํ์ผ ํ๋ฉด ์ค์ฝํ๊ฐ ์๋๋ผ ํค ์ค์ ๋ณ๊ฒฝ์ ์์ฒญํ์ธ์. ## ์ฑ๊ณต ์๋ต ๋ดํฌ `/v2`์ ๋ชจ๋ 2xx ๋ณธ๋ฌธ์ `{ \"data\": โฆ }`์
๋๋ค. ๋จ์ผ ๋ฆฌ์์ค๋ ๋ชฉ๋ก์ด๋ ๊ฐ์ต๋๋ค. **๋ชฉ๋ก์ `data`๊ฐ ๋ฐฐ์ด์ด๊ณ `meta`๊ฐ ํญ์ ํจ๊ป ์ค๋ฆฝ๋๋ค** โ `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. ๋จ์ผ ๋ฆฌ์์ค ์๋ต์๋ `meta`๊ฐ ๋๊ฐ์ง ์์ต๋๋ค. ๋ดํฌ๋ฅผ ์ฐ์ง ์๋ ํ๋ฉด์ ๋์
๋๋ค. `/oauth/_*`์ `/.well-known/_*`๋ ๊ฐ๊ฐ RFC 6749ยทRFC 8414ยทRFC 9728์ด ์ต์์ ํ๋๋ฅผ ๊ท์ ํ๊ณ , ํ์ผ ๋ด์ฉ ์๋ต์ ๋ณธ๋ฌธ์ด JSON์ด ์๋๋๋ค. ์๋ฌ ์๋ต์๋ ๋ดํฌ๋ฅผ ์์ฐ์ง ์์ต๋๋ค โ ์๋ problem+json์ด ๋จ๋
์ผ๋ก ์ฑ
์์ง๋๋ค. ## ์กฐ๊ฑด๋ถ ์์ฒญ (ETag) `/v2`์ ๋ชจ๋ `GET` ์๋ต์ weak `ETag`(`W/\"โฆ\"`)๊ฐ ์ค๋ฆฝ๋๋ค. ๋ฐ์ ๊ฐ์ ๋ค์ ์์ฒญ์ `If-None-Match` ํค๋๋ก ๋๋ณด๋ด๋ฉด, ๋ด์ฉ์ด ๊ทธ๋๋ก์ผ ๋ `304 Not Modified`๋ฅผ ๋ณธ๋ฌธ ์์ด ๋ฐ์ต๋๋ค. ๊ฒฐ๊ณผ๊ฐ ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๊ฐ์ ์์์ ๋ฐ๋ณต ์กฐํํ๋ ์ฐ๋์ด๋ผ๋ฉด ์ด ํค๋ ํ๋๋ก ์ ์ก๋์ด ์ฌ๋ผ์ง๋๋ค. ## ์๋ฌ (RFC 9457 problem+json) ๋ชจ๋ ์๋ฌ ์๋ต์ `application/problem+json`์
๋๋ค. **HTTP status + `type` URI** ๋ก ๋ถ๊ธฐํ์ธ์. - `retryable`(boolean): ์๋ ์ฌ์๋ ์์ ์ฌ๋ถ. `true`(429ยท5xx transient)๋ฉด backoff ํ ์ฌ์๋ํ๊ณ , `false`๋ฉด ์์ฒญ์ ๊ณ ์ณ์ผ ํฉ๋๋ค. - `traceId`: ์์ฒญ ์ถ์ id. `X-Correlation-Id` ์๋ต ํค๋์ ๊ฐ์ ๊ฐ์
๋๋ค โ ๋ฌธ์ํ ๋ ์ด ๊ฐ์ ์ฒจ๋ถํ์ธ์. - `correlationId`: `traceId`์ ๊ฐ์ ๊ฐ์ ์ ์ด๋ฆ. ๊ธฐ์กด ์ฐ๋ ํธํ์ผ๋ก ํจ๊ป ์ค๋ฆฝ๋๋ค. ์ ์ฐ๋์ `traceId`๋ฅผ ์ฝ์ผ์ธ์. - `invalid-params`: ๊ฒ์ฆ ์คํจ(400 `โฆ/validation-failed`) ์ ์๋ฐ ํ๋ ๊ฒฝ๋ก ๋ชฉ๋ก(RFC 9457 ํ์ฅ, ๊ฐ ์์). `type`์ `https://problems.cmarket.io/partner/<slug>` ํํ์ **์์ ์๋ณ์**์
๋๋ค. RFC 9457 ยง3.1.1์ด ํ์ฉํ๋ ๋๋ก ์ด URI๋ **์ญ์ฐธ์กฐ(dereference)๋์ง ์์ต๋๋ค** โ ๋ธ๋ผ์ฐ์ ๋ก ์ด์ง ๋ง๊ณ ๋ฌธ์์ด ๋น๊ต๋ก๋ง ์ฐ์ธ์. slug ๋ชฉ๋ก๊ณผ ์๋ฏธ๋ ๊ฐ ์๋ํฌ์ธํธ์ ์๋ต ์ค๋ช
์ status ๋ณ๋ก ์ ํ ์์ต๋๋ค. ### ๋ฉฑ๋ฑ์ฑ ์๋ฐ: 409์ 422์ ์ฐจ์ด - `409` `โฆ/idempotency-key-conflict` โ ๊ฐ์ ํค์ **์ ์์ฒญ์ด ์์ง ์ฒ๋ฆฌ ์ค**์
๋๋ค. ์ ์ ๋ค ๊ฐ์ ํค๋ก ๋ค์ ๋ถ๋ฅด๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ต๋๋ค. - `422` `โฆ/idempotency-key-reused` โ ๊ฐ์ ํค๋ฅผ **๋ค๋ฅธ body** ๋ก ๋ณด๋์ต๋๋ค. ์ฌ์๋ํด๋ ์์ํ ๊ฐ์ ์คํจ์ด๋ ์ ํค๋ฅผ ์ฐ๊ฑฐ๋ body๋ฅผ ๋๋๋ฆฌ์ธ์. ## Rate Limit ์ ์ญ **60 ์์ฒญ/๋ถ per `client_id`**, ํ ํฐ ๋ฐ๊ธ(`/oauth/token`)์ **5 ์์ฒญ/๋ถ** ์
๋๋ค. ์ด๊ณผ ์ `429`(`type: โฆ/too-many-requests`). ์ฟผํฐ๋ ๋ ๊ฐ์ง ํ๊ธฐ๋ก ํจ๊ป ๋๊ฐ๋๋ค โ ์ ๊ท ์ฐ๋์ ํ์ค ํ๋๋ฅผ ์ฐ์ธ์. - **ํ์ค**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (์ ์ฑ
) ยท `RateLimit: \"default\";r=59;t=42` (์๋ r, ๋ฆฌ์
๊น์ง t ์ด) - **๋ ๊ฑฐ์**(๊ด์ฉ): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. ๊ธฐ์กด ์ฐ๋ ํธํ์ ์ํด ์ ์งํฉ๋๋ค. `429` ์์๋ `Retry-After`(์ด)๊ฐ ์ฐ์ ํฉ๋๋ค. ๋๋ ๋๊ธฐํ(ํ๋ชฉ ๋จ์ ๋ฐ๋ณต ๋ฑ๋ก ๋ฑ)๋ `Retry-After` ๋งํผ backoff ํ ์ฌ์๋ํ์ธ์. ## ์ถ์ ์์ฒญ์ `X-Correlation-Id` ํค๋๋ฅผ ์ค์ผ๋ฉด ๊ทธ๋๋ก echo ๋๊ณ , ์์ผ๋ฉด ์๋ฒ๊ฐ ๋ฐ๊ธํฉ๋๋ค. ๋ชจ๋ ์๋ต(์ฑ๊ณต/์๋ฌ)์ `X-Correlation-Id`๊ฐ ์ค๋ฆฝ๋๋ค. ## ์ ๋ฐฉํธํ โ ๋ชจ๋ฅด๋ ํ๋์ ๊ฐ์์ ๊นจ์ง์ง ์๊ฒ ๋ค์ ์
์ breaking ๋ณ๊ฒฝ์ผ๋ก ๋ณด์ง ์์ผ๋ฉฐ minor ๋ฆด๋ฆฌ์ค์์ ์๊ณ ์์ด ์ผ์ด๋ฉ๋๋ค. ์ด ์ ์ ๋ก ๊ตฌํํ์ธ์. - **์ ํ ํ๋ ์ถ๊ฐ**: ๋ชจ๋ฅด๋ ํ๋๋ ๋ฌด์ํ์ธ์. ์๊ฒฉ ํ์(unknown key ๊ฑฐ๋ถ)๋ฅผ ์ฐ์ง ๋ง์ธ์. - **enum ๊ฐ ์ถ๊ฐ**: ์ํยท๋์ฐฐ๋ฐฉ๋ฒ ๋ฑ์ ์ ๊ฐ์ด ์๊น๋๋ค. ๋ชจ๋ฅด๋ ๊ฐ์ ๋ง๋๋ฉด ์์ธ๋ฅผ ๋์ง์ง ๋ง๊ณ ์๋ฌธ ๋ฌธ์์ด์ ๋ณด์กดํ์ธ์. - **problem `type` slug ์ถ๊ฐ**: ๋ชจ๋ฅด๋ slug์ **HTTP status๋ก ํด๋ฐฑ**ํด ๋ถ๊ธฐํ์ธ์. ## ๋ฒ์ ์๋ช
(deprecation/sunset) - **_/v2** breaking ๋ณ๊ฒฝ์ CHANGELOG SemVer(major bump)์ `Deprecation`/`Sunset` ํค๋๋ก ํต์งํฉ๋๋ค. ์ด ํค๋๋ฅผ ๋ชจ๋ํฐ๋งํ์ธ์.
|
|
4
4
|
*
|
|
5
|
-
* The version of the OpenAPI document:
|
|
5
|
+
* The version of the OpenAPI document: 40.0.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).
|
|
@@ -40,7 +40,7 @@ export interface ProblemDetailsDto {
|
|
|
40
40
|
*/
|
|
41
41
|
'traceId'?: string;
|
|
42
42
|
/**
|
|
43
|
-
* `traceId
|
|
43
|
+
* `traceId`์ ๊ฐ์ ๊ฐ์ ์ ์ด๋ฆ์
๋๋ค. ๊ธฐ์กด ์ฐ๋ ํธํ์ผ๋ก ํจ๊ป ์ค๋ฆฝ๋๋ค โ ์ ์ฐ๋์ `traceId`๋ฅผ ์ฝ์ผ์ธ์.
|
|
44
44
|
*/
|
|
45
45
|
'correlationId'?: string;
|
|
46
46
|
/**
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
/* eslint-disable */
|
|
4
4
|
/**
|
|
5
5
|
* CMARKET V6 Partner API
|
|
6
|
-
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token
|
|
6
|
+
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token`์์ ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ `Authorization: Bearer <token>` ํค๋๋ก ์ค์ผ์ธ์. ## ๊ถํ โ ๋ ๊ฐ์ ๋
๋ฆฝ๋ ์ถ `403`์ ๋ง๋ฌ๋ค๋ฉด ๋ ์ค ์ด๋ ์ถ์ ๊ฑธ๋ฆฐ ๊ฒ์ธ์ง ๋จผ์ ๊ตฌ๋ถํ์ธ์. - **์ค์ฝํ** = *๋ฌด์์ ํ ์ ์๋*. ํ ํฐ์ ๋ถ์ฌ๋ `bids:read`ยท`contracts:write` ๋ฑ์
๋๋ค. ๋ฏธ๋ณด์ ์ `โฆ/insufficient-scope`. - **๋ํ ๋ฒ์** = *๋๊ตฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ ์๋*. API ํค ์ค์ ์ด๋ฉฐ ์ค์ฝํ๋ก ํํ๋์ง ์์ต๋๋ค. ๋ฒ์ ๋ฐ์ด๋ฉด ์ค์ฝํ์ ๋ฌด๊ดํ๊ฒ 403์
๋๋ค. ๋ํ ๋ฒ์๋ ํค๋ง๋ค ๋ ์ค ํ๋๋ก ์ค์ ๋ฉ๋๋ค โ **์์ ๊ทธ๋ฃน ์ ์**(๊ธฐ๊ด ํค. ์ฌ์
์ฒยท๋ถ์ ๊ณ์ ์ด ์๋ก ์๊ฒจ๋ ์๋ ํฌํจ) ๋๋ **์ง์ ๋ฐ์ฃผ๊ธฐ๊ด ๋ชฉ๋ก**(๊ณ์ฝ์ผ๋ก ํฉ์๋ ๋ชฉ๋ก). ๋ฒ์๋ฅผ ๋ํ์ผ ํ๋ฉด ์ค์ฝํ๊ฐ ์๋๋ผ ํค ์ค์ ๋ณ๊ฒฝ์ ์์ฒญํ์ธ์. ## ์ฑ๊ณต ์๋ต ๋ดํฌ `/v2`์ ๋ชจ๋ 2xx ๋ณธ๋ฌธ์ `{ \"data\": โฆ }`์
๋๋ค. ๋จ์ผ ๋ฆฌ์์ค๋ ๋ชฉ๋ก์ด๋ ๊ฐ์ต๋๋ค. **๋ชฉ๋ก์ `data`๊ฐ ๋ฐฐ์ด์ด๊ณ `meta`๊ฐ ํญ์ ํจ๊ป ์ค๋ฆฝ๋๋ค** โ `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. ๋จ์ผ ๋ฆฌ์์ค ์๋ต์๋ `meta`๊ฐ ๋๊ฐ์ง ์์ต๋๋ค. ๋ดํฌ๋ฅผ ์ฐ์ง ์๋ ํ๋ฉด์ ๋์
๋๋ค. `/oauth/_*`์ `/.well-known/_*`๋ ๊ฐ๊ฐ RFC 6749ยทRFC 8414ยทRFC 9728์ด ์ต์์ ํ๋๋ฅผ ๊ท์ ํ๊ณ , ํ์ผ ๋ด์ฉ ์๋ต์ ๋ณธ๋ฌธ์ด JSON์ด ์๋๋๋ค. ์๋ฌ ์๋ต์๋ ๋ดํฌ๋ฅผ ์์ฐ์ง ์์ต๋๋ค โ ์๋ problem+json์ด ๋จ๋
์ผ๋ก ์ฑ
์์ง๋๋ค. ## ์กฐ๊ฑด๋ถ ์์ฒญ (ETag) `/v2`์ ๋ชจ๋ `GET` ์๋ต์ weak `ETag`(`W/\"โฆ\"`)๊ฐ ์ค๋ฆฝ๋๋ค. ๋ฐ์ ๊ฐ์ ๋ค์ ์์ฒญ์ `If-None-Match` ํค๋๋ก ๋๋ณด๋ด๋ฉด, ๋ด์ฉ์ด ๊ทธ๋๋ก์ผ ๋ `304 Not Modified`๋ฅผ ๋ณธ๋ฌธ ์์ด ๋ฐ์ต๋๋ค. ๊ฒฐ๊ณผ๊ฐ ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๊ฐ์ ์์์ ๋ฐ๋ณต ์กฐํํ๋ ์ฐ๋์ด๋ผ๋ฉด ์ด ํค๋ ํ๋๋ก ์ ์ก๋์ด ์ฌ๋ผ์ง๋๋ค. ## ์๋ฌ (RFC 9457 problem+json) ๋ชจ๋ ์๋ฌ ์๋ต์ `application/problem+json`์
๋๋ค. **HTTP status + `type` URI** ๋ก ๋ถ๊ธฐํ์ธ์. - `retryable`(boolean): ์๋ ์ฌ์๋ ์์ ์ฌ๋ถ. `true`(429ยท5xx transient)๋ฉด backoff ํ ์ฌ์๋ํ๊ณ , `false`๋ฉด ์์ฒญ์ ๊ณ ์ณ์ผ ํฉ๋๋ค. - `traceId`: ์์ฒญ ์ถ์ id. `X-Correlation-Id` ์๋ต ํค๋์ ๊ฐ์ ๊ฐ์
๋๋ค โ ๋ฌธ์ํ ๋ ์ด ๊ฐ์ ์ฒจ๋ถํ์ธ์. - `correlationId`: `traceId`์ ๊ฐ์ ๊ฐ์ ์ ์ด๋ฆ. ๊ธฐ์กด ์ฐ๋ ํธํ์ผ๋ก ํจ๊ป ์ค๋ฆฝ๋๋ค. ์ ์ฐ๋์ `traceId`๋ฅผ ์ฝ์ผ์ธ์. - `invalid-params`: ๊ฒ์ฆ ์คํจ(400 `โฆ/validation-failed`) ์ ์๋ฐ ํ๋ ๊ฒฝ๋ก ๋ชฉ๋ก(RFC 9457 ํ์ฅ, ๊ฐ ์์). `type`์ `https://problems.cmarket.io/partner/<slug>` ํํ์ **์์ ์๋ณ์**์
๋๋ค. RFC 9457 ยง3.1.1์ด ํ์ฉํ๋ ๋๋ก ์ด URI๋ **์ญ์ฐธ์กฐ(dereference)๋์ง ์์ต๋๋ค** โ ๋ธ๋ผ์ฐ์ ๋ก ์ด์ง ๋ง๊ณ ๋ฌธ์์ด ๋น๊ต๋ก๋ง ์ฐ์ธ์. slug ๋ชฉ๋ก๊ณผ ์๋ฏธ๋ ๊ฐ ์๋ํฌ์ธํธ์ ์๋ต ์ค๋ช
์ status ๋ณ๋ก ์ ํ ์์ต๋๋ค. ### ๋ฉฑ๋ฑ์ฑ ์๋ฐ: 409์ 422์ ์ฐจ์ด - `409` `โฆ/idempotency-key-conflict` โ ๊ฐ์ ํค์ **์ ์์ฒญ์ด ์์ง ์ฒ๋ฆฌ ์ค**์
๋๋ค. ์ ์ ๋ค ๊ฐ์ ํค๋ก ๋ค์ ๋ถ๋ฅด๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ต๋๋ค. - `422` `โฆ/idempotency-key-reused` โ ๊ฐ์ ํค๋ฅผ **๋ค๋ฅธ body** ๋ก ๋ณด๋์ต๋๋ค. ์ฌ์๋ํด๋ ์์ํ ๊ฐ์ ์คํจ์ด๋ ์ ํค๋ฅผ ์ฐ๊ฑฐ๋ body๋ฅผ ๋๋๋ฆฌ์ธ์. ## Rate Limit ์ ์ญ **60 ์์ฒญ/๋ถ per `client_id`**, ํ ํฐ ๋ฐ๊ธ(`/oauth/token`)์ **5 ์์ฒญ/๋ถ** ์
๋๋ค. ์ด๊ณผ ์ `429`(`type: โฆ/too-many-requests`). ์ฟผํฐ๋ ๋ ๊ฐ์ง ํ๊ธฐ๋ก ํจ๊ป ๋๊ฐ๋๋ค โ ์ ๊ท ์ฐ๋์ ํ์ค ํ๋๋ฅผ ์ฐ์ธ์. - **ํ์ค**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (์ ์ฑ
) ยท `RateLimit: \"default\";r=59;t=42` (์๋ r, ๋ฆฌ์
๊น์ง t ์ด) - **๋ ๊ฑฐ์**(๊ด์ฉ): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. ๊ธฐ์กด ์ฐ๋ ํธํ์ ์ํด ์ ์งํฉ๋๋ค. `429` ์์๋ `Retry-After`(์ด)๊ฐ ์ฐ์ ํฉ๋๋ค. ๋๋ ๋๊ธฐํ(ํ๋ชฉ ๋จ์ ๋ฐ๋ณต ๋ฑ๋ก ๋ฑ)๋ `Retry-After` ๋งํผ backoff ํ ์ฌ์๋ํ์ธ์. ## ์ถ์ ์์ฒญ์ `X-Correlation-Id` ํค๋๋ฅผ ์ค์ผ๋ฉด ๊ทธ๋๋ก echo ๋๊ณ , ์์ผ๋ฉด ์๋ฒ๊ฐ ๋ฐ๊ธํฉ๋๋ค. ๋ชจ๋ ์๋ต(์ฑ๊ณต/์๋ฌ)์ `X-Correlation-Id`๊ฐ ์ค๋ฆฝ๋๋ค. ## ์ ๋ฐฉํธํ โ ๋ชจ๋ฅด๋ ํ๋์ ๊ฐ์์ ๊นจ์ง์ง ์๊ฒ ๋ค์ ์
์ breaking ๋ณ๊ฒฝ์ผ๋ก ๋ณด์ง ์์ผ๋ฉฐ minor ๋ฆด๋ฆฌ์ค์์ ์๊ณ ์์ด ์ผ์ด๋ฉ๋๋ค. ์ด ์ ์ ๋ก ๊ตฌํํ์ธ์. - **์ ํ ํ๋ ์ถ๊ฐ**: ๋ชจ๋ฅด๋ ํ๋๋ ๋ฌด์ํ์ธ์. ์๊ฒฉ ํ์(unknown key ๊ฑฐ๋ถ)๋ฅผ ์ฐ์ง ๋ง์ธ์. - **enum ๊ฐ ์ถ๊ฐ**: ์ํยท๋์ฐฐ๋ฐฉ๋ฒ ๋ฑ์ ์ ๊ฐ์ด ์๊น๋๋ค. ๋ชจ๋ฅด๋ ๊ฐ์ ๋ง๋๋ฉด ์์ธ๋ฅผ ๋์ง์ง ๋ง๊ณ ์๋ฌธ ๋ฌธ์์ด์ ๋ณด์กดํ์ธ์. - **problem `type` slug ์ถ๊ฐ**: ๋ชจ๋ฅด๋ slug์ **HTTP status๋ก ํด๋ฐฑ**ํด ๋ถ๊ธฐํ์ธ์. ## ๋ฒ์ ์๋ช
(deprecation/sunset) - **_/v2** breaking ๋ณ๊ฒฝ์ CHANGELOG SemVer(major bump)์ `Deprecation`/`Sunset` ํค๋๋ก ํต์งํฉ๋๋ค. ์ด ํค๋๋ฅผ ๋ชจ๋ํฐ๋งํ์ธ์.
|
|
7
7
|
*
|
|
8
|
-
* The version of the OpenAPI document:
|
|
8
|
+
* The version of the OpenAPI document: 40.0.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).
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* CMARKET V6 Partner API
|
|
3
|
-
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token
|
|
3
|
+
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token`์์ ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ `Authorization: Bearer <token>` ํค๋๋ก ์ค์ผ์ธ์. ## ๊ถํ โ ๋ ๊ฐ์ ๋
๋ฆฝ๋ ์ถ `403`์ ๋ง๋ฌ๋ค๋ฉด ๋ ์ค ์ด๋ ์ถ์ ๊ฑธ๋ฆฐ ๊ฒ์ธ์ง ๋จผ์ ๊ตฌ๋ถํ์ธ์. - **์ค์ฝํ** = *๋ฌด์์ ํ ์ ์๋*. ํ ํฐ์ ๋ถ์ฌ๋ `bids:read`ยท`contracts:write` ๋ฑ์
๋๋ค. ๋ฏธ๋ณด์ ์ `โฆ/insufficient-scope`. - **๋ํ ๋ฒ์** = *๋๊ตฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ ์๋*. API ํค ์ค์ ์ด๋ฉฐ ์ค์ฝํ๋ก ํํ๋์ง ์์ต๋๋ค. ๋ฒ์ ๋ฐ์ด๋ฉด ์ค์ฝํ์ ๋ฌด๊ดํ๊ฒ 403์
๋๋ค. ๋ํ ๋ฒ์๋ ํค๋ง๋ค ๋ ์ค ํ๋๋ก ์ค์ ๋ฉ๋๋ค โ **์์ ๊ทธ๋ฃน ์ ์**(๊ธฐ๊ด ํค. ์ฌ์
์ฒยท๋ถ์ ๊ณ์ ์ด ์๋ก ์๊ฒจ๋ ์๋ ํฌํจ) ๋๋ **์ง์ ๋ฐ์ฃผ๊ธฐ๊ด ๋ชฉ๋ก**(๊ณ์ฝ์ผ๋ก ํฉ์๋ ๋ชฉ๋ก). ๋ฒ์๋ฅผ ๋ํ์ผ ํ๋ฉด ์ค์ฝํ๊ฐ ์๋๋ผ ํค ์ค์ ๋ณ๊ฒฝ์ ์์ฒญํ์ธ์. ## ์ฑ๊ณต ์๋ต ๋ดํฌ `/v2`์ ๋ชจ๋ 2xx ๋ณธ๋ฌธ์ `{ \"data\": โฆ }`์
๋๋ค. ๋จ์ผ ๋ฆฌ์์ค๋ ๋ชฉ๋ก์ด๋ ๊ฐ์ต๋๋ค. **๋ชฉ๋ก์ `data`๊ฐ ๋ฐฐ์ด์ด๊ณ `meta`๊ฐ ํญ์ ํจ๊ป ์ค๋ฆฝ๋๋ค** โ `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. ๋จ์ผ ๋ฆฌ์์ค ์๋ต์๋ `meta`๊ฐ ๋๊ฐ์ง ์์ต๋๋ค. ๋ดํฌ๋ฅผ ์ฐ์ง ์๋ ํ๋ฉด์ ๋์
๋๋ค. `/oauth/_*`์ `/.well-known/_*`๋ ๊ฐ๊ฐ RFC 6749ยทRFC 8414ยทRFC 9728์ด ์ต์์ ํ๋๋ฅผ ๊ท์ ํ๊ณ , ํ์ผ ๋ด์ฉ ์๋ต์ ๋ณธ๋ฌธ์ด JSON์ด ์๋๋๋ค. ์๋ฌ ์๋ต์๋ ๋ดํฌ๋ฅผ ์์ฐ์ง ์์ต๋๋ค โ ์๋ problem+json์ด ๋จ๋
์ผ๋ก ์ฑ
์์ง๋๋ค. ## ์กฐ๊ฑด๋ถ ์์ฒญ (ETag) `/v2`์ ๋ชจ๋ `GET` ์๋ต์ weak `ETag`(`W/\"โฆ\"`)๊ฐ ์ค๋ฆฝ๋๋ค. ๋ฐ์ ๊ฐ์ ๋ค์ ์์ฒญ์ `If-None-Match` ํค๋๋ก ๋๋ณด๋ด๋ฉด, ๋ด์ฉ์ด ๊ทธ๋๋ก์ผ ๋ `304 Not Modified`๋ฅผ ๋ณธ๋ฌธ ์์ด ๋ฐ์ต๋๋ค. ๊ฒฐ๊ณผ๊ฐ ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๊ฐ์ ์์์ ๋ฐ๋ณต ์กฐํํ๋ ์ฐ๋์ด๋ผ๋ฉด ์ด ํค๋ ํ๋๋ก ์ ์ก๋์ด ์ฌ๋ผ์ง๋๋ค. ## ์๋ฌ (RFC 9457 problem+json) ๋ชจ๋ ์๋ฌ ์๋ต์ `application/problem+json`์
๋๋ค. **HTTP status + `type` URI** ๋ก ๋ถ๊ธฐํ์ธ์. - `retryable`(boolean): ์๋ ์ฌ์๋ ์์ ์ฌ๋ถ. `true`(429ยท5xx transient)๋ฉด backoff ํ ์ฌ์๋ํ๊ณ , `false`๋ฉด ์์ฒญ์ ๊ณ ์ณ์ผ ํฉ๋๋ค. - `traceId`: ์์ฒญ ์ถ์ id. `X-Correlation-Id` ์๋ต ํค๋์ ๊ฐ์ ๊ฐ์
๋๋ค โ ๋ฌธ์ํ ๋ ์ด ๊ฐ์ ์ฒจ๋ถํ์ธ์. - `correlationId`: `traceId`์ ๊ฐ์ ๊ฐ์ ์ ์ด๋ฆ. ๊ธฐ์กด ์ฐ๋ ํธํ์ผ๋ก ํจ๊ป ์ค๋ฆฝ๋๋ค. ์ ์ฐ๋์ `traceId`๋ฅผ ์ฝ์ผ์ธ์. - `invalid-params`: ๊ฒ์ฆ ์คํจ(400 `โฆ/validation-failed`) ์ ์๋ฐ ํ๋ ๊ฒฝ๋ก ๋ชฉ๋ก(RFC 9457 ํ์ฅ, ๊ฐ ์์). `type`์ `https://problems.cmarket.io/partner/<slug>` ํํ์ **์์ ์๋ณ์**์
๋๋ค. RFC 9457 ยง3.1.1์ด ํ์ฉํ๋ ๋๋ก ์ด URI๋ **์ญ์ฐธ์กฐ(dereference)๋์ง ์์ต๋๋ค** โ ๋ธ๋ผ์ฐ์ ๋ก ์ด์ง ๋ง๊ณ ๋ฌธ์์ด ๋น๊ต๋ก๋ง ์ฐ์ธ์. slug ๋ชฉ๋ก๊ณผ ์๋ฏธ๋ ๊ฐ ์๋ํฌ์ธํธ์ ์๋ต ์ค๋ช
์ status ๋ณ๋ก ์ ํ ์์ต๋๋ค. ### ๋ฉฑ๋ฑ์ฑ ์๋ฐ: 409์ 422์ ์ฐจ์ด - `409` `โฆ/idempotency-key-conflict` โ ๊ฐ์ ํค์ **์ ์์ฒญ์ด ์์ง ์ฒ๋ฆฌ ์ค**์
๋๋ค. ์ ์ ๋ค ๊ฐ์ ํค๋ก ๋ค์ ๋ถ๋ฅด๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ต๋๋ค. - `422` `โฆ/idempotency-key-reused` โ ๊ฐ์ ํค๋ฅผ **๋ค๋ฅธ body** ๋ก ๋ณด๋์ต๋๋ค. ์ฌ์๋ํด๋ ์์ํ ๊ฐ์ ์คํจ์ด๋ ์ ํค๋ฅผ ์ฐ๊ฑฐ๋ body๋ฅผ ๋๋๋ฆฌ์ธ์. ## Rate Limit ์ ์ญ **60 ์์ฒญ/๋ถ per `client_id`**, ํ ํฐ ๋ฐ๊ธ(`/oauth/token`)์ **5 ์์ฒญ/๋ถ** ์
๋๋ค. ์ด๊ณผ ์ `429`(`type: โฆ/too-many-requests`). ์ฟผํฐ๋ ๋ ๊ฐ์ง ํ๊ธฐ๋ก ํจ๊ป ๋๊ฐ๋๋ค โ ์ ๊ท ์ฐ๋์ ํ์ค ํ๋๋ฅผ ์ฐ์ธ์. - **ํ์ค**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (์ ์ฑ
) ยท `RateLimit: \"default\";r=59;t=42` (์๋ r, ๋ฆฌ์
๊น์ง t ์ด) - **๋ ๊ฑฐ์**(๊ด์ฉ): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. ๊ธฐ์กด ์ฐ๋ ํธํ์ ์ํด ์ ์งํฉ๋๋ค. `429` ์์๋ `Retry-After`(์ด)๊ฐ ์ฐ์ ํฉ๋๋ค. ๋๋ ๋๊ธฐํ(ํ๋ชฉ ๋จ์ ๋ฐ๋ณต ๋ฑ๋ก ๋ฑ)๋ `Retry-After` ๋งํผ backoff ํ ์ฌ์๋ํ์ธ์. ## ์ถ์ ์์ฒญ์ `X-Correlation-Id` ํค๋๋ฅผ ์ค์ผ๋ฉด ๊ทธ๋๋ก echo ๋๊ณ , ์์ผ๋ฉด ์๋ฒ๊ฐ ๋ฐ๊ธํฉ๋๋ค. ๋ชจ๋ ์๋ต(์ฑ๊ณต/์๋ฌ)์ `X-Correlation-Id`๊ฐ ์ค๋ฆฝ๋๋ค. ## ์ ๋ฐฉํธํ โ ๋ชจ๋ฅด๋ ํ๋์ ๊ฐ์์ ๊นจ์ง์ง ์๊ฒ ๋ค์ ์
์ breaking ๋ณ๊ฒฝ์ผ๋ก ๋ณด์ง ์์ผ๋ฉฐ minor ๋ฆด๋ฆฌ์ค์์ ์๊ณ ์์ด ์ผ์ด๋ฉ๋๋ค. ์ด ์ ์ ๋ก ๊ตฌํํ์ธ์. - **์ ํ ํ๋ ์ถ๊ฐ**: ๋ชจ๋ฅด๋ ํ๋๋ ๋ฌด์ํ์ธ์. ์๊ฒฉ ํ์(unknown key ๊ฑฐ๋ถ)๋ฅผ ์ฐ์ง ๋ง์ธ์. - **enum ๊ฐ ์ถ๊ฐ**: ์ํยท๋์ฐฐ๋ฐฉ๋ฒ ๋ฑ์ ์ ๊ฐ์ด ์๊น๋๋ค. ๋ชจ๋ฅด๋ ๊ฐ์ ๋ง๋๋ฉด ์์ธ๋ฅผ ๋์ง์ง ๋ง๊ณ ์๋ฌธ ๋ฌธ์์ด์ ๋ณด์กดํ์ธ์. - **problem `type` slug ์ถ๊ฐ**: ๋ชจ๋ฅด๋ slug์ **HTTP status๋ก ํด๋ฐฑ**ํด ๋ถ๊ธฐํ์ธ์. ## ๋ฒ์ ์๋ช
(deprecation/sunset) - **_/v2** breaking ๋ณ๊ฒฝ์ CHANGELOG SemVer(major bump)์ `Deprecation`/`Sunset` ํค๋๋ก ํต์งํฉ๋๋ค. ์ด ํค๋๋ฅผ ๋ชจ๋ํฐ๋งํ์ธ์.
|
|
4
4
|
*
|
|
5
|
-
* The version of the OpenAPI document:
|
|
5
|
+
* The version of the OpenAPI document: 40.0.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. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token
|
|
6
|
+
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token`์์ ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ `Authorization: Bearer <token>` ํค๋๋ก ์ค์ผ์ธ์. ## ๊ถํ โ ๋ ๊ฐ์ ๋
๋ฆฝ๋ ์ถ `403`์ ๋ง๋ฌ๋ค๋ฉด ๋ ์ค ์ด๋ ์ถ์ ๊ฑธ๋ฆฐ ๊ฒ์ธ์ง ๋จผ์ ๊ตฌ๋ถํ์ธ์. - **์ค์ฝํ** = *๋ฌด์์ ํ ์ ์๋*. ํ ํฐ์ ๋ถ์ฌ๋ `bids:read`ยท`contracts:write` ๋ฑ์
๋๋ค. ๋ฏธ๋ณด์ ์ `โฆ/insufficient-scope`. - **๋ํ ๋ฒ์** = *๋๊ตฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ ์๋*. API ํค ์ค์ ์ด๋ฉฐ ์ค์ฝํ๋ก ํํ๋์ง ์์ต๋๋ค. ๋ฒ์ ๋ฐ์ด๋ฉด ์ค์ฝํ์ ๋ฌด๊ดํ๊ฒ 403์
๋๋ค. ๋ํ ๋ฒ์๋ ํค๋ง๋ค ๋ ์ค ํ๋๋ก ์ค์ ๋ฉ๋๋ค โ **์์ ๊ทธ๋ฃน ์ ์**(๊ธฐ๊ด ํค. ์ฌ์
์ฒยท๋ถ์ ๊ณ์ ์ด ์๋ก ์๊ฒจ๋ ์๋ ํฌํจ) ๋๋ **์ง์ ๋ฐ์ฃผ๊ธฐ๊ด ๋ชฉ๋ก**(๊ณ์ฝ์ผ๋ก ํฉ์๋ ๋ชฉ๋ก). ๋ฒ์๋ฅผ ๋ํ์ผ ํ๋ฉด ์ค์ฝํ๊ฐ ์๋๋ผ ํค ์ค์ ๋ณ๊ฒฝ์ ์์ฒญํ์ธ์. ## ์ฑ๊ณต ์๋ต ๋ดํฌ `/v2`์ ๋ชจ๋ 2xx ๋ณธ๋ฌธ์ `{ \"data\": โฆ }`์
๋๋ค. ๋จ์ผ ๋ฆฌ์์ค๋ ๋ชฉ๋ก์ด๋ ๊ฐ์ต๋๋ค. **๋ชฉ๋ก์ `data`๊ฐ ๋ฐฐ์ด์ด๊ณ `meta`๊ฐ ํญ์ ํจ๊ป ์ค๋ฆฝ๋๋ค** โ `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. ๋จ์ผ ๋ฆฌ์์ค ์๋ต์๋ `meta`๊ฐ ๋๊ฐ์ง ์์ต๋๋ค. ๋ดํฌ๋ฅผ ์ฐ์ง ์๋ ํ๋ฉด์ ๋์
๋๋ค. `/oauth/_*`์ `/.well-known/_*`๋ ๊ฐ๊ฐ RFC 6749ยทRFC 8414ยทRFC 9728์ด ์ต์์ ํ๋๋ฅผ ๊ท์ ํ๊ณ , ํ์ผ ๋ด์ฉ ์๋ต์ ๋ณธ๋ฌธ์ด JSON์ด ์๋๋๋ค. ์๋ฌ ์๋ต์๋ ๋ดํฌ๋ฅผ ์์ฐ์ง ์์ต๋๋ค โ ์๋ problem+json์ด ๋จ๋
์ผ๋ก ์ฑ
์์ง๋๋ค. ## ์กฐ๊ฑด๋ถ ์์ฒญ (ETag) `/v2`์ ๋ชจ๋ `GET` ์๋ต์ weak `ETag`(`W/\"โฆ\"`)๊ฐ ์ค๋ฆฝ๋๋ค. ๋ฐ์ ๊ฐ์ ๋ค์ ์์ฒญ์ `If-None-Match` ํค๋๋ก ๋๋ณด๋ด๋ฉด, ๋ด์ฉ์ด ๊ทธ๋๋ก์ผ ๋ `304 Not Modified`๋ฅผ ๋ณธ๋ฌธ ์์ด ๋ฐ์ต๋๋ค. ๊ฒฐ๊ณผ๊ฐ ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๊ฐ์ ์์์ ๋ฐ๋ณต ์กฐํํ๋ ์ฐ๋์ด๋ผ๋ฉด ์ด ํค๋ ํ๋๋ก ์ ์ก๋์ด ์ฌ๋ผ์ง๋๋ค. ## ์๋ฌ (RFC 9457 problem+json) ๋ชจ๋ ์๋ฌ ์๋ต์ `application/problem+json`์
๋๋ค. **HTTP status + `type` URI** ๋ก ๋ถ๊ธฐํ์ธ์. - `retryable`(boolean): ์๋ ์ฌ์๋ ์์ ์ฌ๋ถ. `true`(429ยท5xx transient)๋ฉด backoff ํ ์ฌ์๋ํ๊ณ , `false`๋ฉด ์์ฒญ์ ๊ณ ์ณ์ผ ํฉ๋๋ค. - `traceId`: ์์ฒญ ์ถ์ id. `X-Correlation-Id` ์๋ต ํค๋์ ๊ฐ์ ๊ฐ์
๋๋ค โ ๋ฌธ์ํ ๋ ์ด ๊ฐ์ ์ฒจ๋ถํ์ธ์. - `correlationId`: `traceId`์ ๊ฐ์ ๊ฐ์ ์ ์ด๋ฆ. ๊ธฐ์กด ์ฐ๋ ํธํ์ผ๋ก ํจ๊ป ์ค๋ฆฝ๋๋ค. ์ ์ฐ๋์ `traceId`๋ฅผ ์ฝ์ผ์ธ์. - `invalid-params`: ๊ฒ์ฆ ์คํจ(400 `โฆ/validation-failed`) ์ ์๋ฐ ํ๋ ๊ฒฝ๋ก ๋ชฉ๋ก(RFC 9457 ํ์ฅ, ๊ฐ ์์). `type`์ `https://problems.cmarket.io/partner/<slug>` ํํ์ **์์ ์๋ณ์**์
๋๋ค. RFC 9457 ยง3.1.1์ด ํ์ฉํ๋ ๋๋ก ์ด URI๋ **์ญ์ฐธ์กฐ(dereference)๋์ง ์์ต๋๋ค** โ ๋ธ๋ผ์ฐ์ ๋ก ์ด์ง ๋ง๊ณ ๋ฌธ์์ด ๋น๊ต๋ก๋ง ์ฐ์ธ์. slug ๋ชฉ๋ก๊ณผ ์๋ฏธ๋ ๊ฐ ์๋ํฌ์ธํธ์ ์๋ต ์ค๋ช
์ status ๋ณ๋ก ์ ํ ์์ต๋๋ค. ### ๋ฉฑ๋ฑ์ฑ ์๋ฐ: 409์ 422์ ์ฐจ์ด - `409` `โฆ/idempotency-key-conflict` โ ๊ฐ์ ํค์ **์ ์์ฒญ์ด ์์ง ์ฒ๋ฆฌ ์ค**์
๋๋ค. ์ ์ ๋ค ๊ฐ์ ํค๋ก ๋ค์ ๋ถ๋ฅด๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ต๋๋ค. - `422` `โฆ/idempotency-key-reused` โ ๊ฐ์ ํค๋ฅผ **๋ค๋ฅธ body** ๋ก ๋ณด๋์ต๋๋ค. ์ฌ์๋ํด๋ ์์ํ ๊ฐ์ ์คํจ์ด๋ ์ ํค๋ฅผ ์ฐ๊ฑฐ๋ body๋ฅผ ๋๋๋ฆฌ์ธ์. ## Rate Limit ์ ์ญ **60 ์์ฒญ/๋ถ per `client_id`**, ํ ํฐ ๋ฐ๊ธ(`/oauth/token`)์ **5 ์์ฒญ/๋ถ** ์
๋๋ค. ์ด๊ณผ ์ `429`(`type: โฆ/too-many-requests`). ์ฟผํฐ๋ ๋ ๊ฐ์ง ํ๊ธฐ๋ก ํจ๊ป ๋๊ฐ๋๋ค โ ์ ๊ท ์ฐ๋์ ํ์ค ํ๋๋ฅผ ์ฐ์ธ์. - **ํ์ค**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (์ ์ฑ
) ยท `RateLimit: \"default\";r=59;t=42` (์๋ r, ๋ฆฌ์
๊น์ง t ์ด) - **๋ ๊ฑฐ์**(๊ด์ฉ): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. ๊ธฐ์กด ์ฐ๋ ํธํ์ ์ํด ์ ์งํฉ๋๋ค. `429` ์์๋ `Retry-After`(์ด)๊ฐ ์ฐ์ ํฉ๋๋ค. ๋๋ ๋๊ธฐํ(ํ๋ชฉ ๋จ์ ๋ฐ๋ณต ๋ฑ๋ก ๋ฑ)๋ `Retry-After` ๋งํผ backoff ํ ์ฌ์๋ํ์ธ์. ## ์ถ์ ์์ฒญ์ `X-Correlation-Id` ํค๋๋ฅผ ์ค์ผ๋ฉด ๊ทธ๋๋ก echo ๋๊ณ , ์์ผ๋ฉด ์๋ฒ๊ฐ ๋ฐ๊ธํฉ๋๋ค. ๋ชจ๋ ์๋ต(์ฑ๊ณต/์๋ฌ)์ `X-Correlation-Id`๊ฐ ์ค๋ฆฝ๋๋ค. ## ์ ๋ฐฉํธํ โ ๋ชจ๋ฅด๋ ํ๋์ ๊ฐ์์ ๊นจ์ง์ง ์๊ฒ ๋ค์ ์
์ breaking ๋ณ๊ฒฝ์ผ๋ก ๋ณด์ง ์์ผ๋ฉฐ minor ๋ฆด๋ฆฌ์ค์์ ์๊ณ ์์ด ์ผ์ด๋ฉ๋๋ค. ์ด ์ ์ ๋ก ๊ตฌํํ์ธ์. - **์ ํ ํ๋ ์ถ๊ฐ**: ๋ชจ๋ฅด๋ ํ๋๋ ๋ฌด์ํ์ธ์. ์๊ฒฉ ํ์(unknown key ๊ฑฐ๋ถ)๋ฅผ ์ฐ์ง ๋ง์ธ์. - **enum ๊ฐ ์ถ๊ฐ**: ์ํยท๋์ฐฐ๋ฐฉ๋ฒ ๋ฑ์ ์ ๊ฐ์ด ์๊น๋๋ค. ๋ชจ๋ฅด๋ ๊ฐ์ ๋ง๋๋ฉด ์์ธ๋ฅผ ๋์ง์ง ๋ง๊ณ ์๋ฌธ ๋ฌธ์์ด์ ๋ณด์กดํ์ธ์. - **problem `type` slug ์ถ๊ฐ**: ๋ชจ๋ฅด๋ slug์ **HTTP status๋ก ํด๋ฐฑ**ํด ๋ถ๊ธฐํ์ธ์. ## ๋ฒ์ ์๋ช
(deprecation/sunset) - **_/v2** breaking ๋ณ๊ฒฝ์ CHANGELOG SemVer(major bump)์ `Deprecation`/`Sunset` ํค๋๋ก ํต์งํฉ๋๋ค. ์ด ํค๋๋ฅผ ๋ชจ๋ํฐ๋งํ์ธ์.
|
|
7
7
|
*
|
|
8
|
-
* The version of the OpenAPI document:
|
|
8
|
+
* The version of the OpenAPI document: 40.0.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).
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* CMARKET V6 Partner API
|
|
3
|
-
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token
|
|
3
|
+
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token`์์ ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ `Authorization: Bearer <token>` ํค๋๋ก ์ค์ผ์ธ์. ## ๊ถํ โ ๋ ๊ฐ์ ๋
๋ฆฝ๋ ์ถ `403`์ ๋ง๋ฌ๋ค๋ฉด ๋ ์ค ์ด๋ ์ถ์ ๊ฑธ๋ฆฐ ๊ฒ์ธ์ง ๋จผ์ ๊ตฌ๋ถํ์ธ์. - **์ค์ฝํ** = *๋ฌด์์ ํ ์ ์๋*. ํ ํฐ์ ๋ถ์ฌ๋ `bids:read`ยท`contracts:write` ๋ฑ์
๋๋ค. ๋ฏธ๋ณด์ ์ `โฆ/insufficient-scope`. - **๋ํ ๋ฒ์** = *๋๊ตฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ ์๋*. API ํค ์ค์ ์ด๋ฉฐ ์ค์ฝํ๋ก ํํ๋์ง ์์ต๋๋ค. ๋ฒ์ ๋ฐ์ด๋ฉด ์ค์ฝํ์ ๋ฌด๊ดํ๊ฒ 403์
๋๋ค. ๋ํ ๋ฒ์๋ ํค๋ง๋ค ๋ ์ค ํ๋๋ก ์ค์ ๋ฉ๋๋ค โ **์์ ๊ทธ๋ฃน ์ ์**(๊ธฐ๊ด ํค. ์ฌ์
์ฒยท๋ถ์ ๊ณ์ ์ด ์๋ก ์๊ฒจ๋ ์๋ ํฌํจ) ๋๋ **์ง์ ๋ฐ์ฃผ๊ธฐ๊ด ๋ชฉ๋ก**(๊ณ์ฝ์ผ๋ก ํฉ์๋ ๋ชฉ๋ก). ๋ฒ์๋ฅผ ๋ํ์ผ ํ๋ฉด ์ค์ฝํ๊ฐ ์๋๋ผ ํค ์ค์ ๋ณ๊ฒฝ์ ์์ฒญํ์ธ์. ## ์ฑ๊ณต ์๋ต ๋ดํฌ `/v2`์ ๋ชจ๋ 2xx ๋ณธ๋ฌธ์ `{ \"data\": โฆ }`์
๋๋ค. ๋จ์ผ ๋ฆฌ์์ค๋ ๋ชฉ๋ก์ด๋ ๊ฐ์ต๋๋ค. **๋ชฉ๋ก์ `data`๊ฐ ๋ฐฐ์ด์ด๊ณ `meta`๊ฐ ํญ์ ํจ๊ป ์ค๋ฆฝ๋๋ค** โ `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. ๋จ์ผ ๋ฆฌ์์ค ์๋ต์๋ `meta`๊ฐ ๋๊ฐ์ง ์์ต๋๋ค. ๋ดํฌ๋ฅผ ์ฐ์ง ์๋ ํ๋ฉด์ ๋์
๋๋ค. `/oauth/_*`์ `/.well-known/_*`๋ ๊ฐ๊ฐ RFC 6749ยทRFC 8414ยทRFC 9728์ด ์ต์์ ํ๋๋ฅผ ๊ท์ ํ๊ณ , ํ์ผ ๋ด์ฉ ์๋ต์ ๋ณธ๋ฌธ์ด JSON์ด ์๋๋๋ค. ์๋ฌ ์๋ต์๋ ๋ดํฌ๋ฅผ ์์ฐ์ง ์์ต๋๋ค โ ์๋ problem+json์ด ๋จ๋
์ผ๋ก ์ฑ
์์ง๋๋ค. ## ์กฐ๊ฑด๋ถ ์์ฒญ (ETag) `/v2`์ ๋ชจ๋ `GET` ์๋ต์ weak `ETag`(`W/\"โฆ\"`)๊ฐ ์ค๋ฆฝ๋๋ค. ๋ฐ์ ๊ฐ์ ๋ค์ ์์ฒญ์ `If-None-Match` ํค๋๋ก ๋๋ณด๋ด๋ฉด, ๋ด์ฉ์ด ๊ทธ๋๋ก์ผ ๋ `304 Not Modified`๋ฅผ ๋ณธ๋ฌธ ์์ด ๋ฐ์ต๋๋ค. ๊ฒฐ๊ณผ๊ฐ ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๊ฐ์ ์์์ ๋ฐ๋ณต ์กฐํํ๋ ์ฐ๋์ด๋ผ๋ฉด ์ด ํค๋ ํ๋๋ก ์ ์ก๋์ด ์ฌ๋ผ์ง๋๋ค. ## ์๋ฌ (RFC 9457 problem+json) ๋ชจ๋ ์๋ฌ ์๋ต์ `application/problem+json`์
๋๋ค. **HTTP status + `type` URI** ๋ก ๋ถ๊ธฐํ์ธ์. - `retryable`(boolean): ์๋ ์ฌ์๋ ์์ ์ฌ๋ถ. `true`(429ยท5xx transient)๋ฉด backoff ํ ์ฌ์๋ํ๊ณ , `false`๋ฉด ์์ฒญ์ ๊ณ ์ณ์ผ ํฉ๋๋ค. - `traceId`: ์์ฒญ ์ถ์ id. `X-Correlation-Id` ์๋ต ํค๋์ ๊ฐ์ ๊ฐ์
๋๋ค โ ๋ฌธ์ํ ๋ ์ด ๊ฐ์ ์ฒจ๋ถํ์ธ์. - `correlationId`: `traceId`์ ๊ฐ์ ๊ฐ์ ์ ์ด๋ฆ. ๊ธฐ์กด ์ฐ๋ ํธํ์ผ๋ก ํจ๊ป ์ค๋ฆฝ๋๋ค. ์ ์ฐ๋์ `traceId`๋ฅผ ์ฝ์ผ์ธ์. - `invalid-params`: ๊ฒ์ฆ ์คํจ(400 `โฆ/validation-failed`) ์ ์๋ฐ ํ๋ ๊ฒฝ๋ก ๋ชฉ๋ก(RFC 9457 ํ์ฅ, ๊ฐ ์์). `type`์ `https://problems.cmarket.io/partner/<slug>` ํํ์ **์์ ์๋ณ์**์
๋๋ค. RFC 9457 ยง3.1.1์ด ํ์ฉํ๋ ๋๋ก ์ด URI๋ **์ญ์ฐธ์กฐ(dereference)๋์ง ์์ต๋๋ค** โ ๋ธ๋ผ์ฐ์ ๋ก ์ด์ง ๋ง๊ณ ๋ฌธ์์ด ๋น๊ต๋ก๋ง ์ฐ์ธ์. slug ๋ชฉ๋ก๊ณผ ์๋ฏธ๋ ๊ฐ ์๋ํฌ์ธํธ์ ์๋ต ์ค๋ช
์ status ๋ณ๋ก ์ ํ ์์ต๋๋ค. ### ๋ฉฑ๋ฑ์ฑ ์๋ฐ: 409์ 422์ ์ฐจ์ด - `409` `โฆ/idempotency-key-conflict` โ ๊ฐ์ ํค์ **์ ์์ฒญ์ด ์์ง ์ฒ๋ฆฌ ์ค**์
๋๋ค. ์ ์ ๋ค ๊ฐ์ ํค๋ก ๋ค์ ๋ถ๋ฅด๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ต๋๋ค. - `422` `โฆ/idempotency-key-reused` โ ๊ฐ์ ํค๋ฅผ **๋ค๋ฅธ body** ๋ก ๋ณด๋์ต๋๋ค. ์ฌ์๋ํด๋ ์์ํ ๊ฐ์ ์คํจ์ด๋ ์ ํค๋ฅผ ์ฐ๊ฑฐ๋ body๋ฅผ ๋๋๋ฆฌ์ธ์. ## Rate Limit ์ ์ญ **60 ์์ฒญ/๋ถ per `client_id`**, ํ ํฐ ๋ฐ๊ธ(`/oauth/token`)์ **5 ์์ฒญ/๋ถ** ์
๋๋ค. ์ด๊ณผ ์ `429`(`type: โฆ/too-many-requests`). ์ฟผํฐ๋ ๋ ๊ฐ์ง ํ๊ธฐ๋ก ํจ๊ป ๋๊ฐ๋๋ค โ ์ ๊ท ์ฐ๋์ ํ์ค ํ๋๋ฅผ ์ฐ์ธ์. - **ํ์ค**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (์ ์ฑ
) ยท `RateLimit: \"default\";r=59;t=42` (์๋ r, ๋ฆฌ์
๊น์ง t ์ด) - **๋ ๊ฑฐ์**(๊ด์ฉ): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. ๊ธฐ์กด ์ฐ๋ ํธํ์ ์ํด ์ ์งํฉ๋๋ค. `429` ์์๋ `Retry-After`(์ด)๊ฐ ์ฐ์ ํฉ๋๋ค. ๋๋ ๋๊ธฐํ(ํ๋ชฉ ๋จ์ ๋ฐ๋ณต ๋ฑ๋ก ๋ฑ)๋ `Retry-After` ๋งํผ backoff ํ ์ฌ์๋ํ์ธ์. ## ์ถ์ ์์ฒญ์ `X-Correlation-Id` ํค๋๋ฅผ ์ค์ผ๋ฉด ๊ทธ๋๋ก echo ๋๊ณ , ์์ผ๋ฉด ์๋ฒ๊ฐ ๋ฐ๊ธํฉ๋๋ค. ๋ชจ๋ ์๋ต(์ฑ๊ณต/์๋ฌ)์ `X-Correlation-Id`๊ฐ ์ค๋ฆฝ๋๋ค. ## ์ ๋ฐฉํธํ โ ๋ชจ๋ฅด๋ ํ๋์ ๊ฐ์์ ๊นจ์ง์ง ์๊ฒ ๋ค์ ์
์ breaking ๋ณ๊ฒฝ์ผ๋ก ๋ณด์ง ์์ผ๋ฉฐ minor ๋ฆด๋ฆฌ์ค์์ ์๊ณ ์์ด ์ผ์ด๋ฉ๋๋ค. ์ด ์ ์ ๋ก ๊ตฌํํ์ธ์. - **์ ํ ํ๋ ์ถ๊ฐ**: ๋ชจ๋ฅด๋ ํ๋๋ ๋ฌด์ํ์ธ์. ์๊ฒฉ ํ์(unknown key ๊ฑฐ๋ถ)๋ฅผ ์ฐ์ง ๋ง์ธ์. - **enum ๊ฐ ์ถ๊ฐ**: ์ํยท๋์ฐฐ๋ฐฉ๋ฒ ๋ฑ์ ์ ๊ฐ์ด ์๊น๋๋ค. ๋ชจ๋ฅด๋ ๊ฐ์ ๋ง๋๋ฉด ์์ธ๋ฅผ ๋์ง์ง ๋ง๊ณ ์๋ฌธ ๋ฌธ์์ด์ ๋ณด์กดํ์ธ์. - **problem `type` slug ์ถ๊ฐ**: ๋ชจ๋ฅด๋ slug์ **HTTP status๋ก ํด๋ฐฑ**ํด ๋ถ๊ธฐํ์ธ์. ## ๋ฒ์ ์๋ช
(deprecation/sunset) - **_/v2** breaking ๋ณ๊ฒฝ์ CHANGELOG SemVer(major bump)์ `Deprecation`/`Sunset` ํค๋๋ก ํต์งํฉ๋๋ค. ์ด ํค๋๋ฅผ ๋ชจ๋ํฐ๋งํ์ธ์.
|
|
4
4
|
*
|
|
5
|
-
* The version of the OpenAPI document:
|
|
5
|
+
* The version of the OpenAPI document: 40.0.0
|
|
6
6
|
* Contact: semo.io.kr@gmail.com
|
|
7
7
|
*
|
|
8
8
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
@@ -19,7 +19,7 @@ export interface ProductResponseDto {
|
|
|
19
19
|
*/
|
|
20
20
|
'productName': string | null;
|
|
21
21
|
/**
|
|
22
|
-
* ํ๋ชฉ์ฝ๋ โ ๋ฐ์ฃผ๊ธฐ๊ด ERP
|
|
22
|
+
* ํ๋ชฉ์ฝ๋ โ ๋ฐ์ฃผ๊ธฐ๊ด ERP์ ํ๋ฒ๊ณผ ๋์กฐํ๋ ์ถ์
๋๋ค.
|
|
23
23
|
*/
|
|
24
24
|
'itemCode': string;
|
|
25
25
|
/**
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
/* eslint-disable */
|
|
4
4
|
/**
|
|
5
5
|
* CMARKET V6 Partner API
|
|
6
|
-
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token
|
|
6
|
+
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token`์์ ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ `Authorization: Bearer <token>` ํค๋๋ก ์ค์ผ์ธ์. ## ๊ถํ โ ๋ ๊ฐ์ ๋
๋ฆฝ๋ ์ถ `403`์ ๋ง๋ฌ๋ค๋ฉด ๋ ์ค ์ด๋ ์ถ์ ๊ฑธ๋ฆฐ ๊ฒ์ธ์ง ๋จผ์ ๊ตฌ๋ถํ์ธ์. - **์ค์ฝํ** = *๋ฌด์์ ํ ์ ์๋*. ํ ํฐ์ ๋ถ์ฌ๋ `bids:read`ยท`contracts:write` ๋ฑ์
๋๋ค. ๋ฏธ๋ณด์ ์ `โฆ/insufficient-scope`. - **๋ํ ๋ฒ์** = *๋๊ตฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ ์๋*. API ํค ์ค์ ์ด๋ฉฐ ์ค์ฝํ๋ก ํํ๋์ง ์์ต๋๋ค. ๋ฒ์ ๋ฐ์ด๋ฉด ์ค์ฝํ์ ๋ฌด๊ดํ๊ฒ 403์
๋๋ค. ๋ํ ๋ฒ์๋ ํค๋ง๋ค ๋ ์ค ํ๋๋ก ์ค์ ๋ฉ๋๋ค โ **์์ ๊ทธ๋ฃน ์ ์**(๊ธฐ๊ด ํค. ์ฌ์
์ฒยท๋ถ์ ๊ณ์ ์ด ์๋ก ์๊ฒจ๋ ์๋ ํฌํจ) ๋๋ **์ง์ ๋ฐ์ฃผ๊ธฐ๊ด ๋ชฉ๋ก**(๊ณ์ฝ์ผ๋ก ํฉ์๋ ๋ชฉ๋ก). ๋ฒ์๋ฅผ ๋ํ์ผ ํ๋ฉด ์ค์ฝํ๊ฐ ์๋๋ผ ํค ์ค์ ๋ณ๊ฒฝ์ ์์ฒญํ์ธ์. ## ์ฑ๊ณต ์๋ต ๋ดํฌ `/v2`์ ๋ชจ๋ 2xx ๋ณธ๋ฌธ์ `{ \"data\": โฆ }`์
๋๋ค. ๋จ์ผ ๋ฆฌ์์ค๋ ๋ชฉ๋ก์ด๋ ๊ฐ์ต๋๋ค. **๋ชฉ๋ก์ `data`๊ฐ ๋ฐฐ์ด์ด๊ณ `meta`๊ฐ ํญ์ ํจ๊ป ์ค๋ฆฝ๋๋ค** โ `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. ๋จ์ผ ๋ฆฌ์์ค ์๋ต์๋ `meta`๊ฐ ๋๊ฐ์ง ์์ต๋๋ค. ๋ดํฌ๋ฅผ ์ฐ์ง ์๋ ํ๋ฉด์ ๋์
๋๋ค. `/oauth/_*`์ `/.well-known/_*`๋ ๊ฐ๊ฐ RFC 6749ยทRFC 8414ยทRFC 9728์ด ์ต์์ ํ๋๋ฅผ ๊ท์ ํ๊ณ , ํ์ผ ๋ด์ฉ ์๋ต์ ๋ณธ๋ฌธ์ด JSON์ด ์๋๋๋ค. ์๋ฌ ์๋ต์๋ ๋ดํฌ๋ฅผ ์์ฐ์ง ์์ต๋๋ค โ ์๋ problem+json์ด ๋จ๋
์ผ๋ก ์ฑ
์์ง๋๋ค. ## ์กฐ๊ฑด๋ถ ์์ฒญ (ETag) `/v2`์ ๋ชจ๋ `GET` ์๋ต์ weak `ETag`(`W/\"โฆ\"`)๊ฐ ์ค๋ฆฝ๋๋ค. ๋ฐ์ ๊ฐ์ ๋ค์ ์์ฒญ์ `If-None-Match` ํค๋๋ก ๋๋ณด๋ด๋ฉด, ๋ด์ฉ์ด ๊ทธ๋๋ก์ผ ๋ `304 Not Modified`๋ฅผ ๋ณธ๋ฌธ ์์ด ๋ฐ์ต๋๋ค. ๊ฒฐ๊ณผ๊ฐ ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๊ฐ์ ์์์ ๋ฐ๋ณต ์กฐํํ๋ ์ฐ๋์ด๋ผ๋ฉด ์ด ํค๋ ํ๋๋ก ์ ์ก๋์ด ์ฌ๋ผ์ง๋๋ค. ## ์๋ฌ (RFC 9457 problem+json) ๋ชจ๋ ์๋ฌ ์๋ต์ `application/problem+json`์
๋๋ค. **HTTP status + `type` URI** ๋ก ๋ถ๊ธฐํ์ธ์. - `retryable`(boolean): ์๋ ์ฌ์๋ ์์ ์ฌ๋ถ. `true`(429ยท5xx transient)๋ฉด backoff ํ ์ฌ์๋ํ๊ณ , `false`๋ฉด ์์ฒญ์ ๊ณ ์ณ์ผ ํฉ๋๋ค. - `traceId`: ์์ฒญ ์ถ์ id. `X-Correlation-Id` ์๋ต ํค๋์ ๊ฐ์ ๊ฐ์
๋๋ค โ ๋ฌธ์ํ ๋ ์ด ๊ฐ์ ์ฒจ๋ถํ์ธ์. - `correlationId`: `traceId`์ ๊ฐ์ ๊ฐ์ ์ ์ด๋ฆ. ๊ธฐ์กด ์ฐ๋ ํธํ์ผ๋ก ํจ๊ป ์ค๋ฆฝ๋๋ค. ์ ์ฐ๋์ `traceId`๋ฅผ ์ฝ์ผ์ธ์. - `invalid-params`: ๊ฒ์ฆ ์คํจ(400 `โฆ/validation-failed`) ์ ์๋ฐ ํ๋ ๊ฒฝ๋ก ๋ชฉ๋ก(RFC 9457 ํ์ฅ, ๊ฐ ์์). `type`์ `https://problems.cmarket.io/partner/<slug>` ํํ์ **์์ ์๋ณ์**์
๋๋ค. RFC 9457 ยง3.1.1์ด ํ์ฉํ๋ ๋๋ก ์ด URI๋ **์ญ์ฐธ์กฐ(dereference)๋์ง ์์ต๋๋ค** โ ๋ธ๋ผ์ฐ์ ๋ก ์ด์ง ๋ง๊ณ ๋ฌธ์์ด ๋น๊ต๋ก๋ง ์ฐ์ธ์. slug ๋ชฉ๋ก๊ณผ ์๋ฏธ๋ ๊ฐ ์๋ํฌ์ธํธ์ ์๋ต ์ค๋ช
์ status ๋ณ๋ก ์ ํ ์์ต๋๋ค. ### ๋ฉฑ๋ฑ์ฑ ์๋ฐ: 409์ 422์ ์ฐจ์ด - `409` `โฆ/idempotency-key-conflict` โ ๊ฐ์ ํค์ **์ ์์ฒญ์ด ์์ง ์ฒ๋ฆฌ ์ค**์
๋๋ค. ์ ์ ๋ค ๊ฐ์ ํค๋ก ๋ค์ ๋ถ๋ฅด๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ต๋๋ค. - `422` `โฆ/idempotency-key-reused` โ ๊ฐ์ ํค๋ฅผ **๋ค๋ฅธ body** ๋ก ๋ณด๋์ต๋๋ค. ์ฌ์๋ํด๋ ์์ํ ๊ฐ์ ์คํจ์ด๋ ์ ํค๋ฅผ ์ฐ๊ฑฐ๋ body๋ฅผ ๋๋๋ฆฌ์ธ์. ## Rate Limit ์ ์ญ **60 ์์ฒญ/๋ถ per `client_id`**, ํ ํฐ ๋ฐ๊ธ(`/oauth/token`)์ **5 ์์ฒญ/๋ถ** ์
๋๋ค. ์ด๊ณผ ์ `429`(`type: โฆ/too-many-requests`). ์ฟผํฐ๋ ๋ ๊ฐ์ง ํ๊ธฐ๋ก ํจ๊ป ๋๊ฐ๋๋ค โ ์ ๊ท ์ฐ๋์ ํ์ค ํ๋๋ฅผ ์ฐ์ธ์. - **ํ์ค**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (์ ์ฑ
) ยท `RateLimit: \"default\";r=59;t=42` (์๋ r, ๋ฆฌ์
๊น์ง t ์ด) - **๋ ๊ฑฐ์**(๊ด์ฉ): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. ๊ธฐ์กด ์ฐ๋ ํธํ์ ์ํด ์ ์งํฉ๋๋ค. `429` ์์๋ `Retry-After`(์ด)๊ฐ ์ฐ์ ํฉ๋๋ค. ๋๋ ๋๊ธฐํ(ํ๋ชฉ ๋จ์ ๋ฐ๋ณต ๋ฑ๋ก ๋ฑ)๋ `Retry-After` ๋งํผ backoff ํ ์ฌ์๋ํ์ธ์. ## ์ถ์ ์์ฒญ์ `X-Correlation-Id` ํค๋๋ฅผ ์ค์ผ๋ฉด ๊ทธ๋๋ก echo ๋๊ณ , ์์ผ๋ฉด ์๋ฒ๊ฐ ๋ฐ๊ธํฉ๋๋ค. ๋ชจ๋ ์๋ต(์ฑ๊ณต/์๋ฌ)์ `X-Correlation-Id`๊ฐ ์ค๋ฆฝ๋๋ค. ## ์ ๋ฐฉํธํ โ ๋ชจ๋ฅด๋ ํ๋์ ๊ฐ์์ ๊นจ์ง์ง ์๊ฒ ๋ค์ ์
์ breaking ๋ณ๊ฒฝ์ผ๋ก ๋ณด์ง ์์ผ๋ฉฐ minor ๋ฆด๋ฆฌ์ค์์ ์๊ณ ์์ด ์ผ์ด๋ฉ๋๋ค. ์ด ์ ์ ๋ก ๊ตฌํํ์ธ์. - **์ ํ ํ๋ ์ถ๊ฐ**: ๋ชจ๋ฅด๋ ํ๋๋ ๋ฌด์ํ์ธ์. ์๊ฒฉ ํ์(unknown key ๊ฑฐ๋ถ)๋ฅผ ์ฐ์ง ๋ง์ธ์. - **enum ๊ฐ ์ถ๊ฐ**: ์ํยท๋์ฐฐ๋ฐฉ๋ฒ ๋ฑ์ ์ ๊ฐ์ด ์๊น๋๋ค. ๋ชจ๋ฅด๋ ๊ฐ์ ๋ง๋๋ฉด ์์ธ๋ฅผ ๋์ง์ง ๋ง๊ณ ์๋ฌธ ๋ฌธ์์ด์ ๋ณด์กดํ์ธ์. - **problem `type` slug ์ถ๊ฐ**: ๋ชจ๋ฅด๋ slug์ **HTTP status๋ก ํด๋ฐฑ**ํด ๋ถ๊ธฐํ์ธ์. ## ๋ฒ์ ์๋ช
(deprecation/sunset) - **_/v2** breaking ๋ณ๊ฒฝ์ CHANGELOG SemVer(major bump)์ `Deprecation`/`Sunset` ํค๋๋ก ํต์งํฉ๋๋ค. ์ด ํค๋๋ฅผ ๋ชจ๋ํฐ๋งํ์ธ์.
|
|
7
7
|
*
|
|
8
|
-
* The version of the OpenAPI document:
|
|
8
|
+
* The version of the OpenAPI document: 40.0.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).
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* CMARKET V6 Partner API
|
|
3
|
-
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token
|
|
3
|
+
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token`์์ ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ `Authorization: Bearer <token>` ํค๋๋ก ์ค์ผ์ธ์. ## ๊ถํ โ ๋ ๊ฐ์ ๋
๋ฆฝ๋ ์ถ `403`์ ๋ง๋ฌ๋ค๋ฉด ๋ ์ค ์ด๋ ์ถ์ ๊ฑธ๋ฆฐ ๊ฒ์ธ์ง ๋จผ์ ๊ตฌ๋ถํ์ธ์. - **์ค์ฝํ** = *๋ฌด์์ ํ ์ ์๋*. ํ ํฐ์ ๋ถ์ฌ๋ `bids:read`ยท`contracts:write` ๋ฑ์
๋๋ค. ๋ฏธ๋ณด์ ์ `โฆ/insufficient-scope`. - **๋ํ ๋ฒ์** = *๋๊ตฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ ์๋*. API ํค ์ค์ ์ด๋ฉฐ ์ค์ฝํ๋ก ํํ๋์ง ์์ต๋๋ค. ๋ฒ์ ๋ฐ์ด๋ฉด ์ค์ฝํ์ ๋ฌด๊ดํ๊ฒ 403์
๋๋ค. ๋ํ ๋ฒ์๋ ํค๋ง๋ค ๋ ์ค ํ๋๋ก ์ค์ ๋ฉ๋๋ค โ **์์ ๊ทธ๋ฃน ์ ์**(๊ธฐ๊ด ํค. ์ฌ์
์ฒยท๋ถ์ ๊ณ์ ์ด ์๋ก ์๊ฒจ๋ ์๋ ํฌํจ) ๋๋ **์ง์ ๋ฐ์ฃผ๊ธฐ๊ด ๋ชฉ๋ก**(๊ณ์ฝ์ผ๋ก ํฉ์๋ ๋ชฉ๋ก). ๋ฒ์๋ฅผ ๋ํ์ผ ํ๋ฉด ์ค์ฝํ๊ฐ ์๋๋ผ ํค ์ค์ ๋ณ๊ฒฝ์ ์์ฒญํ์ธ์. ## ์ฑ๊ณต ์๋ต ๋ดํฌ `/v2`์ ๋ชจ๋ 2xx ๋ณธ๋ฌธ์ `{ \"data\": โฆ }`์
๋๋ค. ๋จ์ผ ๋ฆฌ์์ค๋ ๋ชฉ๋ก์ด๋ ๊ฐ์ต๋๋ค. **๋ชฉ๋ก์ `data`๊ฐ ๋ฐฐ์ด์ด๊ณ `meta`๊ฐ ํญ์ ํจ๊ป ์ค๋ฆฝ๋๋ค** โ `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. ๋จ์ผ ๋ฆฌ์์ค ์๋ต์๋ `meta`๊ฐ ๋๊ฐ์ง ์์ต๋๋ค. ๋ดํฌ๋ฅผ ์ฐ์ง ์๋ ํ๋ฉด์ ๋์
๋๋ค. `/oauth/_*`์ `/.well-known/_*`๋ ๊ฐ๊ฐ RFC 6749ยทRFC 8414ยทRFC 9728์ด ์ต์์ ํ๋๋ฅผ ๊ท์ ํ๊ณ , ํ์ผ ๋ด์ฉ ์๋ต์ ๋ณธ๋ฌธ์ด JSON์ด ์๋๋๋ค. ์๋ฌ ์๋ต์๋ ๋ดํฌ๋ฅผ ์์ฐ์ง ์์ต๋๋ค โ ์๋ problem+json์ด ๋จ๋
์ผ๋ก ์ฑ
์์ง๋๋ค. ## ์กฐ๊ฑด๋ถ ์์ฒญ (ETag) `/v2`์ ๋ชจ๋ `GET` ์๋ต์ weak `ETag`(`W/\"โฆ\"`)๊ฐ ์ค๋ฆฝ๋๋ค. ๋ฐ์ ๊ฐ์ ๋ค์ ์์ฒญ์ `If-None-Match` ํค๋๋ก ๋๋ณด๋ด๋ฉด, ๋ด์ฉ์ด ๊ทธ๋๋ก์ผ ๋ `304 Not Modified`๋ฅผ ๋ณธ๋ฌธ ์์ด ๋ฐ์ต๋๋ค. ๊ฒฐ๊ณผ๊ฐ ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๊ฐ์ ์์์ ๋ฐ๋ณต ์กฐํํ๋ ์ฐ๋์ด๋ผ๋ฉด ์ด ํค๋ ํ๋๋ก ์ ์ก๋์ด ์ฌ๋ผ์ง๋๋ค. ## ์๋ฌ (RFC 9457 problem+json) ๋ชจ๋ ์๋ฌ ์๋ต์ `application/problem+json`์
๋๋ค. **HTTP status + `type` URI** ๋ก ๋ถ๊ธฐํ์ธ์. - `retryable`(boolean): ์๋ ์ฌ์๋ ์์ ์ฌ๋ถ. `true`(429ยท5xx transient)๋ฉด backoff ํ ์ฌ์๋ํ๊ณ , `false`๋ฉด ์์ฒญ์ ๊ณ ์ณ์ผ ํฉ๋๋ค. - `traceId`: ์์ฒญ ์ถ์ id. `X-Correlation-Id` ์๋ต ํค๋์ ๊ฐ์ ๊ฐ์
๋๋ค โ ๋ฌธ์ํ ๋ ์ด ๊ฐ์ ์ฒจ๋ถํ์ธ์. - `correlationId`: `traceId`์ ๊ฐ์ ๊ฐ์ ์ ์ด๋ฆ. ๊ธฐ์กด ์ฐ๋ ํธํ์ผ๋ก ํจ๊ป ์ค๋ฆฝ๋๋ค. ์ ์ฐ๋์ `traceId`๋ฅผ ์ฝ์ผ์ธ์. - `invalid-params`: ๊ฒ์ฆ ์คํจ(400 `โฆ/validation-failed`) ์ ์๋ฐ ํ๋ ๊ฒฝ๋ก ๋ชฉ๋ก(RFC 9457 ํ์ฅ, ๊ฐ ์์). `type`์ `https://problems.cmarket.io/partner/<slug>` ํํ์ **์์ ์๋ณ์**์
๋๋ค. RFC 9457 ยง3.1.1์ด ํ์ฉํ๋ ๋๋ก ์ด URI๋ **์ญ์ฐธ์กฐ(dereference)๋์ง ์์ต๋๋ค** โ ๋ธ๋ผ์ฐ์ ๋ก ์ด์ง ๋ง๊ณ ๋ฌธ์์ด ๋น๊ต๋ก๋ง ์ฐ์ธ์. slug ๋ชฉ๋ก๊ณผ ์๋ฏธ๋ ๊ฐ ์๋ํฌ์ธํธ์ ์๋ต ์ค๋ช
์ status ๋ณ๋ก ์ ํ ์์ต๋๋ค. ### ๋ฉฑ๋ฑ์ฑ ์๋ฐ: 409์ 422์ ์ฐจ์ด - `409` `โฆ/idempotency-key-conflict` โ ๊ฐ์ ํค์ **์ ์์ฒญ์ด ์์ง ์ฒ๋ฆฌ ์ค**์
๋๋ค. ์ ์ ๋ค ๊ฐ์ ํค๋ก ๋ค์ ๋ถ๋ฅด๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ต๋๋ค. - `422` `โฆ/idempotency-key-reused` โ ๊ฐ์ ํค๋ฅผ **๋ค๋ฅธ body** ๋ก ๋ณด๋์ต๋๋ค. ์ฌ์๋ํด๋ ์์ํ ๊ฐ์ ์คํจ์ด๋ ์ ํค๋ฅผ ์ฐ๊ฑฐ๋ body๋ฅผ ๋๋๋ฆฌ์ธ์. ## Rate Limit ์ ์ญ **60 ์์ฒญ/๋ถ per `client_id`**, ํ ํฐ ๋ฐ๊ธ(`/oauth/token`)์ **5 ์์ฒญ/๋ถ** ์
๋๋ค. ์ด๊ณผ ์ `429`(`type: โฆ/too-many-requests`). ์ฟผํฐ๋ ๋ ๊ฐ์ง ํ๊ธฐ๋ก ํจ๊ป ๋๊ฐ๋๋ค โ ์ ๊ท ์ฐ๋์ ํ์ค ํ๋๋ฅผ ์ฐ์ธ์. - **ํ์ค**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (์ ์ฑ
) ยท `RateLimit: \"default\";r=59;t=42` (์๋ r, ๋ฆฌ์
๊น์ง t ์ด) - **๋ ๊ฑฐ์**(๊ด์ฉ): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. ๊ธฐ์กด ์ฐ๋ ํธํ์ ์ํด ์ ์งํฉ๋๋ค. `429` ์์๋ `Retry-After`(์ด)๊ฐ ์ฐ์ ํฉ๋๋ค. ๋๋ ๋๊ธฐํ(ํ๋ชฉ ๋จ์ ๋ฐ๋ณต ๋ฑ๋ก ๋ฑ)๋ `Retry-After` ๋งํผ backoff ํ ์ฌ์๋ํ์ธ์. ## ์ถ์ ์์ฒญ์ `X-Correlation-Id` ํค๋๋ฅผ ์ค์ผ๋ฉด ๊ทธ๋๋ก echo ๋๊ณ , ์์ผ๋ฉด ์๋ฒ๊ฐ ๋ฐ๊ธํฉ๋๋ค. ๋ชจ๋ ์๋ต(์ฑ๊ณต/์๋ฌ)์ `X-Correlation-Id`๊ฐ ์ค๋ฆฝ๋๋ค. ## ์ ๋ฐฉํธํ โ ๋ชจ๋ฅด๋ ํ๋์ ๊ฐ์์ ๊นจ์ง์ง ์๊ฒ ๋ค์ ์
์ breaking ๋ณ๊ฒฝ์ผ๋ก ๋ณด์ง ์์ผ๋ฉฐ minor ๋ฆด๋ฆฌ์ค์์ ์๊ณ ์์ด ์ผ์ด๋ฉ๋๋ค. ์ด ์ ์ ๋ก ๊ตฌํํ์ธ์. - **์ ํ ํ๋ ์ถ๊ฐ**: ๋ชจ๋ฅด๋ ํ๋๋ ๋ฌด์ํ์ธ์. ์๊ฒฉ ํ์(unknown key ๊ฑฐ๋ถ)๋ฅผ ์ฐ์ง ๋ง์ธ์. - **enum ๊ฐ ์ถ๊ฐ**: ์ํยท๋์ฐฐ๋ฐฉ๋ฒ ๋ฑ์ ์ ๊ฐ์ด ์๊น๋๋ค. ๋ชจ๋ฅด๋ ๊ฐ์ ๋ง๋๋ฉด ์์ธ๋ฅผ ๋์ง์ง ๋ง๊ณ ์๋ฌธ ๋ฌธ์์ด์ ๋ณด์กดํ์ธ์. - **problem `type` slug ์ถ๊ฐ**: ๋ชจ๋ฅด๋ slug์ **HTTP status๋ก ํด๋ฐฑ**ํด ๋ถ๊ธฐํ์ธ์. ## ๋ฒ์ ์๋ช
(deprecation/sunset) - **_/v2** breaking ๋ณ๊ฒฝ์ CHANGELOG SemVer(major bump)์ `Deprecation`/`Sunset` ํค๋๋ก ํต์งํฉ๋๋ค. ์ด ํค๋๋ฅผ ๋ชจ๋ํฐ๋งํ์ธ์.
|
|
4
4
|
*
|
|
5
|
-
* The version of the OpenAPI document:
|
|
5
|
+
* The version of the OpenAPI document: 40.0.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).
|
|
@@ -11,11 +11,11 @@
|
|
|
11
11
|
*/
|
|
12
12
|
export interface ProtectedResourceMetadataDto {
|
|
13
13
|
/**
|
|
14
|
-
* ์ด ๋ณดํธ ์์์ ์๋ณ์(=์ด API
|
|
14
|
+
* ์ด ๋ณดํธ ์์์ ์๋ณ์(=์ด API์ origin). RFC 9728 ยง2 ํ์.
|
|
15
15
|
*/
|
|
16
16
|
'resource': string;
|
|
17
17
|
/**
|
|
18
|
-
* ์ด ์์์ ํ ํฐ์ ๋ฐ๊ธํ ์ ์๋ authorization server
|
|
18
|
+
* ์ด ์์์ ํ ํฐ์ ๋ฐ๊ธํ ์ ์๋ authorization server์ issuer ๋ชฉ๋ก. ํด๋ผ์ด์ธํธ๋ 401์ ๋ฐ์ผ๋ฉด ์ฌ๊ธฐ์ ํ ํฐ์ ๋ฐ๋๋ค.
|
|
19
19
|
*/
|
|
20
20
|
'authorization_servers': Array<string>;
|
|
21
21
|
/**
|
|
@@ -23,7 +23,7 @@ export interface ProtectedResourceMetadataDto {
|
|
|
23
23
|
*/
|
|
24
24
|
'scopes_supported': Array<string>;
|
|
25
25
|
/**
|
|
26
|
-
* access token ์ ๋ฌ ๋ฐฉ์ (RFC 6750). `header
|
|
26
|
+
* access token ์ ๋ฌ ๋ฐฉ์ (RFC 6750). `header`๋ง ๋ฐ๋๋ค โ ์ฟผ๋ฆฌ์คํธ๋งยท๋ณธ๋ฌธ ์ ๋ฌ์ ์ ๊ทผ ๋ก๊ทธยท๋ฆฌํผ๋ฌ๋ก ํ ํฐ์ด ์๋ ๊ฒฝ๋ก๋ค.
|
|
27
27
|
*/
|
|
28
28
|
'bearer_methods_supported': Array<string>;
|
|
29
29
|
/**
|
|
@@ -31,7 +31,7 @@ export interface ProtectedResourceMetadataDto {
|
|
|
31
31
|
*/
|
|
32
32
|
'dpop_signing_alg_values_supported': Array<string>;
|
|
33
33
|
/**
|
|
34
|
-
* DPoP ๋ฐ์ธ๋ฉ ํ ํฐ์ **์ ์ญ์ผ๋ก** ๊ฐ์ ํ๋์ง. false โ DPoP
|
|
34
|
+
* DPoP ๋ฐ์ธ๋ฉ ํ ํฐ์ **์ ์ญ์ผ๋ก** ๊ฐ์ ํ๋์ง. false โ DPoP๋ ํค ๋จ์ ์ค์ ์ด๋ผ ํํธ๋๋ง๋ค ๋ค๋ฅด๋ค. true๋ก ๊ด๊ณ ํ๋ฉด DPoP๋ฅผ ์ฐ์ง ์๋ ์ ์ ํค์ ํด๋ผ์ด์ธํธ๊ฐ ์ค์ค๋ก ์คํจํ๋ค.
|
|
35
35
|
*/
|
|
36
36
|
'dpop_bound_access_tokens_required': boolean;
|
|
37
37
|
/**
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
/* eslint-disable */
|
|
4
4
|
/**
|
|
5
5
|
* CMARKET V6 Partner API
|
|
6
|
-
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token
|
|
6
|
+
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token`์์ ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ `Authorization: Bearer <token>` ํค๋๋ก ์ค์ผ์ธ์. ## ๊ถํ โ ๋ ๊ฐ์ ๋
๋ฆฝ๋ ์ถ `403`์ ๋ง๋ฌ๋ค๋ฉด ๋ ์ค ์ด๋ ์ถ์ ๊ฑธ๋ฆฐ ๊ฒ์ธ์ง ๋จผ์ ๊ตฌ๋ถํ์ธ์. - **์ค์ฝํ** = *๋ฌด์์ ํ ์ ์๋*. ํ ํฐ์ ๋ถ์ฌ๋ `bids:read`ยท`contracts:write` ๋ฑ์
๋๋ค. ๋ฏธ๋ณด์ ์ `โฆ/insufficient-scope`. - **๋ํ ๋ฒ์** = *๋๊ตฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ ์๋*. API ํค ์ค์ ์ด๋ฉฐ ์ค์ฝํ๋ก ํํ๋์ง ์์ต๋๋ค. ๋ฒ์ ๋ฐ์ด๋ฉด ์ค์ฝํ์ ๋ฌด๊ดํ๊ฒ 403์
๋๋ค. ๋ํ ๋ฒ์๋ ํค๋ง๋ค ๋ ์ค ํ๋๋ก ์ค์ ๋ฉ๋๋ค โ **์์ ๊ทธ๋ฃน ์ ์**(๊ธฐ๊ด ํค. ์ฌ์
์ฒยท๋ถ์ ๊ณ์ ์ด ์๋ก ์๊ฒจ๋ ์๋ ํฌํจ) ๋๋ **์ง์ ๋ฐ์ฃผ๊ธฐ๊ด ๋ชฉ๋ก**(๊ณ์ฝ์ผ๋ก ํฉ์๋ ๋ชฉ๋ก). ๋ฒ์๋ฅผ ๋ํ์ผ ํ๋ฉด ์ค์ฝํ๊ฐ ์๋๋ผ ํค ์ค์ ๋ณ๊ฒฝ์ ์์ฒญํ์ธ์. ## ์ฑ๊ณต ์๋ต ๋ดํฌ `/v2`์ ๋ชจ๋ 2xx ๋ณธ๋ฌธ์ `{ \"data\": โฆ }`์
๋๋ค. ๋จ์ผ ๋ฆฌ์์ค๋ ๋ชฉ๋ก์ด๋ ๊ฐ์ต๋๋ค. **๋ชฉ๋ก์ `data`๊ฐ ๋ฐฐ์ด์ด๊ณ `meta`๊ฐ ํญ์ ํจ๊ป ์ค๋ฆฝ๋๋ค** โ `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. ๋จ์ผ ๋ฆฌ์์ค ์๋ต์๋ `meta`๊ฐ ๋๊ฐ์ง ์์ต๋๋ค. ๋ดํฌ๋ฅผ ์ฐ์ง ์๋ ํ๋ฉด์ ๋์
๋๋ค. `/oauth/_*`์ `/.well-known/_*`๋ ๊ฐ๊ฐ RFC 6749ยทRFC 8414ยทRFC 9728์ด ์ต์์ ํ๋๋ฅผ ๊ท์ ํ๊ณ , ํ์ผ ๋ด์ฉ ์๋ต์ ๋ณธ๋ฌธ์ด JSON์ด ์๋๋๋ค. ์๋ฌ ์๋ต์๋ ๋ดํฌ๋ฅผ ์์ฐ์ง ์์ต๋๋ค โ ์๋ problem+json์ด ๋จ๋
์ผ๋ก ์ฑ
์์ง๋๋ค. ## ์กฐ๊ฑด๋ถ ์์ฒญ (ETag) `/v2`์ ๋ชจ๋ `GET` ์๋ต์ weak `ETag`(`W/\"โฆ\"`)๊ฐ ์ค๋ฆฝ๋๋ค. ๋ฐ์ ๊ฐ์ ๋ค์ ์์ฒญ์ `If-None-Match` ํค๋๋ก ๋๋ณด๋ด๋ฉด, ๋ด์ฉ์ด ๊ทธ๋๋ก์ผ ๋ `304 Not Modified`๋ฅผ ๋ณธ๋ฌธ ์์ด ๋ฐ์ต๋๋ค. ๊ฒฐ๊ณผ๊ฐ ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๊ฐ์ ์์์ ๋ฐ๋ณต ์กฐํํ๋ ์ฐ๋์ด๋ผ๋ฉด ์ด ํค๋ ํ๋๋ก ์ ์ก๋์ด ์ฌ๋ผ์ง๋๋ค. ## ์๋ฌ (RFC 9457 problem+json) ๋ชจ๋ ์๋ฌ ์๋ต์ `application/problem+json`์
๋๋ค. **HTTP status + `type` URI** ๋ก ๋ถ๊ธฐํ์ธ์. - `retryable`(boolean): ์๋ ์ฌ์๋ ์์ ์ฌ๋ถ. `true`(429ยท5xx transient)๋ฉด backoff ํ ์ฌ์๋ํ๊ณ , `false`๋ฉด ์์ฒญ์ ๊ณ ์ณ์ผ ํฉ๋๋ค. - `traceId`: ์์ฒญ ์ถ์ id. `X-Correlation-Id` ์๋ต ํค๋์ ๊ฐ์ ๊ฐ์
๋๋ค โ ๋ฌธ์ํ ๋ ์ด ๊ฐ์ ์ฒจ๋ถํ์ธ์. - `correlationId`: `traceId`์ ๊ฐ์ ๊ฐ์ ์ ์ด๋ฆ. ๊ธฐ์กด ์ฐ๋ ํธํ์ผ๋ก ํจ๊ป ์ค๋ฆฝ๋๋ค. ์ ์ฐ๋์ `traceId`๋ฅผ ์ฝ์ผ์ธ์. - `invalid-params`: ๊ฒ์ฆ ์คํจ(400 `โฆ/validation-failed`) ์ ์๋ฐ ํ๋ ๊ฒฝ๋ก ๋ชฉ๋ก(RFC 9457 ํ์ฅ, ๊ฐ ์์). `type`์ `https://problems.cmarket.io/partner/<slug>` ํํ์ **์์ ์๋ณ์**์
๋๋ค. RFC 9457 ยง3.1.1์ด ํ์ฉํ๋ ๋๋ก ์ด URI๋ **์ญ์ฐธ์กฐ(dereference)๋์ง ์์ต๋๋ค** โ ๋ธ๋ผ์ฐ์ ๋ก ์ด์ง ๋ง๊ณ ๋ฌธ์์ด ๋น๊ต๋ก๋ง ์ฐ์ธ์. slug ๋ชฉ๋ก๊ณผ ์๋ฏธ๋ ๊ฐ ์๋ํฌ์ธํธ์ ์๋ต ์ค๋ช
์ status ๋ณ๋ก ์ ํ ์์ต๋๋ค. ### ๋ฉฑ๋ฑ์ฑ ์๋ฐ: 409์ 422์ ์ฐจ์ด - `409` `โฆ/idempotency-key-conflict` โ ๊ฐ์ ํค์ **์ ์์ฒญ์ด ์์ง ์ฒ๋ฆฌ ์ค**์
๋๋ค. ์ ์ ๋ค ๊ฐ์ ํค๋ก ๋ค์ ๋ถ๋ฅด๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ต๋๋ค. - `422` `โฆ/idempotency-key-reused` โ ๊ฐ์ ํค๋ฅผ **๋ค๋ฅธ body** ๋ก ๋ณด๋์ต๋๋ค. ์ฌ์๋ํด๋ ์์ํ ๊ฐ์ ์คํจ์ด๋ ์ ํค๋ฅผ ์ฐ๊ฑฐ๋ body๋ฅผ ๋๋๋ฆฌ์ธ์. ## Rate Limit ์ ์ญ **60 ์์ฒญ/๋ถ per `client_id`**, ํ ํฐ ๋ฐ๊ธ(`/oauth/token`)์ **5 ์์ฒญ/๋ถ** ์
๋๋ค. ์ด๊ณผ ์ `429`(`type: โฆ/too-many-requests`). ์ฟผํฐ๋ ๋ ๊ฐ์ง ํ๊ธฐ๋ก ํจ๊ป ๋๊ฐ๋๋ค โ ์ ๊ท ์ฐ๋์ ํ์ค ํ๋๋ฅผ ์ฐ์ธ์. - **ํ์ค**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (์ ์ฑ
) ยท `RateLimit: \"default\";r=59;t=42` (์๋ r, ๋ฆฌ์
๊น์ง t ์ด) - **๋ ๊ฑฐ์**(๊ด์ฉ): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. ๊ธฐ์กด ์ฐ๋ ํธํ์ ์ํด ์ ์งํฉ๋๋ค. `429` ์์๋ `Retry-After`(์ด)๊ฐ ์ฐ์ ํฉ๋๋ค. ๋๋ ๋๊ธฐํ(ํ๋ชฉ ๋จ์ ๋ฐ๋ณต ๋ฑ๋ก ๋ฑ)๋ `Retry-After` ๋งํผ backoff ํ ์ฌ์๋ํ์ธ์. ## ์ถ์ ์์ฒญ์ `X-Correlation-Id` ํค๋๋ฅผ ์ค์ผ๋ฉด ๊ทธ๋๋ก echo ๋๊ณ , ์์ผ๋ฉด ์๋ฒ๊ฐ ๋ฐ๊ธํฉ๋๋ค. ๋ชจ๋ ์๋ต(์ฑ๊ณต/์๋ฌ)์ `X-Correlation-Id`๊ฐ ์ค๋ฆฝ๋๋ค. ## ์ ๋ฐฉํธํ โ ๋ชจ๋ฅด๋ ํ๋์ ๊ฐ์์ ๊นจ์ง์ง ์๊ฒ ๋ค์ ์
์ breaking ๋ณ๊ฒฝ์ผ๋ก ๋ณด์ง ์์ผ๋ฉฐ minor ๋ฆด๋ฆฌ์ค์์ ์๊ณ ์์ด ์ผ์ด๋ฉ๋๋ค. ์ด ์ ์ ๋ก ๊ตฌํํ์ธ์. - **์ ํ ํ๋ ์ถ๊ฐ**: ๋ชจ๋ฅด๋ ํ๋๋ ๋ฌด์ํ์ธ์. ์๊ฒฉ ํ์(unknown key ๊ฑฐ๋ถ)๋ฅผ ์ฐ์ง ๋ง์ธ์. - **enum ๊ฐ ์ถ๊ฐ**: ์ํยท๋์ฐฐ๋ฐฉ๋ฒ ๋ฑ์ ์ ๊ฐ์ด ์๊น๋๋ค. ๋ชจ๋ฅด๋ ๊ฐ์ ๋ง๋๋ฉด ์์ธ๋ฅผ ๋์ง์ง ๋ง๊ณ ์๋ฌธ ๋ฌธ์์ด์ ๋ณด์กดํ์ธ์. - **problem `type` slug ์ถ๊ฐ**: ๋ชจ๋ฅด๋ slug์ **HTTP status๋ก ํด๋ฐฑ**ํด ๋ถ๊ธฐํ์ธ์. ## ๋ฒ์ ์๋ช
(deprecation/sunset) - **_/v2** breaking ๋ณ๊ฒฝ์ CHANGELOG SemVer(major bump)์ `Deprecation`/`Sunset` ํค๋๋ก ํต์งํฉ๋๋ค. ์ด ํค๋๋ฅผ ๋ชจ๋ํฐ๋งํ์ธ์.
|
|
7
7
|
*
|
|
8
|
-
* The version of the OpenAPI document:
|
|
8
|
+
* The version of the OpenAPI document: 40.0.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).
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* CMARKET V6 Partner API
|
|
3
|
-
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token
|
|
3
|
+
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token`์์ ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ `Authorization: Bearer <token>` ํค๋๋ก ์ค์ผ์ธ์. ## ๊ถํ โ ๋ ๊ฐ์ ๋
๋ฆฝ๋ ์ถ `403`์ ๋ง๋ฌ๋ค๋ฉด ๋ ์ค ์ด๋ ์ถ์ ๊ฑธ๋ฆฐ ๊ฒ์ธ์ง ๋จผ์ ๊ตฌ๋ถํ์ธ์. - **์ค์ฝํ** = *๋ฌด์์ ํ ์ ์๋*. ํ ํฐ์ ๋ถ์ฌ๋ `bids:read`ยท`contracts:write` ๋ฑ์
๋๋ค. ๋ฏธ๋ณด์ ์ `โฆ/insufficient-scope`. - **๋ํ ๋ฒ์** = *๋๊ตฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ ์๋*. API ํค ์ค์ ์ด๋ฉฐ ์ค์ฝํ๋ก ํํ๋์ง ์์ต๋๋ค. ๋ฒ์ ๋ฐ์ด๋ฉด ์ค์ฝํ์ ๋ฌด๊ดํ๊ฒ 403์
๋๋ค. ๋ํ ๋ฒ์๋ ํค๋ง๋ค ๋ ์ค ํ๋๋ก ์ค์ ๋ฉ๋๋ค โ **์์ ๊ทธ๋ฃน ์ ์**(๊ธฐ๊ด ํค. ์ฌ์
์ฒยท๋ถ์ ๊ณ์ ์ด ์๋ก ์๊ฒจ๋ ์๋ ํฌํจ) ๋๋ **์ง์ ๋ฐ์ฃผ๊ธฐ๊ด ๋ชฉ๋ก**(๊ณ์ฝ์ผ๋ก ํฉ์๋ ๋ชฉ๋ก). ๋ฒ์๋ฅผ ๋ํ์ผ ํ๋ฉด ์ค์ฝํ๊ฐ ์๋๋ผ ํค ์ค์ ๋ณ๊ฒฝ์ ์์ฒญํ์ธ์. ## ์ฑ๊ณต ์๋ต ๋ดํฌ `/v2`์ ๋ชจ๋ 2xx ๋ณธ๋ฌธ์ `{ \"data\": โฆ }`์
๋๋ค. ๋จ์ผ ๋ฆฌ์์ค๋ ๋ชฉ๋ก์ด๋ ๊ฐ์ต๋๋ค. **๋ชฉ๋ก์ `data`๊ฐ ๋ฐฐ์ด์ด๊ณ `meta`๊ฐ ํญ์ ํจ๊ป ์ค๋ฆฝ๋๋ค** โ `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. ๋จ์ผ ๋ฆฌ์์ค ์๋ต์๋ `meta`๊ฐ ๋๊ฐ์ง ์์ต๋๋ค. ๋ดํฌ๋ฅผ ์ฐ์ง ์๋ ํ๋ฉด์ ๋์
๋๋ค. `/oauth/_*`์ `/.well-known/_*`๋ ๊ฐ๊ฐ RFC 6749ยทRFC 8414ยทRFC 9728์ด ์ต์์ ํ๋๋ฅผ ๊ท์ ํ๊ณ , ํ์ผ ๋ด์ฉ ์๋ต์ ๋ณธ๋ฌธ์ด JSON์ด ์๋๋๋ค. ์๋ฌ ์๋ต์๋ ๋ดํฌ๋ฅผ ์์ฐ์ง ์์ต๋๋ค โ ์๋ problem+json์ด ๋จ๋
์ผ๋ก ์ฑ
์์ง๋๋ค. ## ์กฐ๊ฑด๋ถ ์์ฒญ (ETag) `/v2`์ ๋ชจ๋ `GET` ์๋ต์ weak `ETag`(`W/\"โฆ\"`)๊ฐ ์ค๋ฆฝ๋๋ค. ๋ฐ์ ๊ฐ์ ๋ค์ ์์ฒญ์ `If-None-Match` ํค๋๋ก ๋๋ณด๋ด๋ฉด, ๋ด์ฉ์ด ๊ทธ๋๋ก์ผ ๋ `304 Not Modified`๋ฅผ ๋ณธ๋ฌธ ์์ด ๋ฐ์ต๋๋ค. ๊ฒฐ๊ณผ๊ฐ ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๊ฐ์ ์์์ ๋ฐ๋ณต ์กฐํํ๋ ์ฐ๋์ด๋ผ๋ฉด ์ด ํค๋ ํ๋๋ก ์ ์ก๋์ด ์ฌ๋ผ์ง๋๋ค. ## ์๋ฌ (RFC 9457 problem+json) ๋ชจ๋ ์๋ฌ ์๋ต์ `application/problem+json`์
๋๋ค. **HTTP status + `type` URI** ๋ก ๋ถ๊ธฐํ์ธ์. - `retryable`(boolean): ์๋ ์ฌ์๋ ์์ ์ฌ๋ถ. `true`(429ยท5xx transient)๋ฉด backoff ํ ์ฌ์๋ํ๊ณ , `false`๋ฉด ์์ฒญ์ ๊ณ ์ณ์ผ ํฉ๋๋ค. - `traceId`: ์์ฒญ ์ถ์ id. `X-Correlation-Id` ์๋ต ํค๋์ ๊ฐ์ ๊ฐ์
๋๋ค โ ๋ฌธ์ํ ๋ ์ด ๊ฐ์ ์ฒจ๋ถํ์ธ์. - `correlationId`: `traceId`์ ๊ฐ์ ๊ฐ์ ์ ์ด๋ฆ. ๊ธฐ์กด ์ฐ๋ ํธํ์ผ๋ก ํจ๊ป ์ค๋ฆฝ๋๋ค. ์ ์ฐ๋์ `traceId`๋ฅผ ์ฝ์ผ์ธ์. - `invalid-params`: ๊ฒ์ฆ ์คํจ(400 `โฆ/validation-failed`) ์ ์๋ฐ ํ๋ ๊ฒฝ๋ก ๋ชฉ๋ก(RFC 9457 ํ์ฅ, ๊ฐ ์์). `type`์ `https://problems.cmarket.io/partner/<slug>` ํํ์ **์์ ์๋ณ์**์
๋๋ค. RFC 9457 ยง3.1.1์ด ํ์ฉํ๋ ๋๋ก ์ด URI๋ **์ญ์ฐธ์กฐ(dereference)๋์ง ์์ต๋๋ค** โ ๋ธ๋ผ์ฐ์ ๋ก ์ด์ง ๋ง๊ณ ๋ฌธ์์ด ๋น๊ต๋ก๋ง ์ฐ์ธ์. slug ๋ชฉ๋ก๊ณผ ์๋ฏธ๋ ๊ฐ ์๋ํฌ์ธํธ์ ์๋ต ์ค๋ช
์ status ๋ณ๋ก ์ ํ ์์ต๋๋ค. ### ๋ฉฑ๋ฑ์ฑ ์๋ฐ: 409์ 422์ ์ฐจ์ด - `409` `โฆ/idempotency-key-conflict` โ ๊ฐ์ ํค์ **์ ์์ฒญ์ด ์์ง ์ฒ๋ฆฌ ์ค**์
๋๋ค. ์ ์ ๋ค ๊ฐ์ ํค๋ก ๋ค์ ๋ถ๋ฅด๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ต๋๋ค. - `422` `โฆ/idempotency-key-reused` โ ๊ฐ์ ํค๋ฅผ **๋ค๋ฅธ body** ๋ก ๋ณด๋์ต๋๋ค. ์ฌ์๋ํด๋ ์์ํ ๊ฐ์ ์คํจ์ด๋ ์ ํค๋ฅผ ์ฐ๊ฑฐ๋ body๋ฅผ ๋๋๋ฆฌ์ธ์. ## Rate Limit ์ ์ญ **60 ์์ฒญ/๋ถ per `client_id`**, ํ ํฐ ๋ฐ๊ธ(`/oauth/token`)์ **5 ์์ฒญ/๋ถ** ์
๋๋ค. ์ด๊ณผ ์ `429`(`type: โฆ/too-many-requests`). ์ฟผํฐ๋ ๋ ๊ฐ์ง ํ๊ธฐ๋ก ํจ๊ป ๋๊ฐ๋๋ค โ ์ ๊ท ์ฐ๋์ ํ์ค ํ๋๋ฅผ ์ฐ์ธ์. - **ํ์ค**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (์ ์ฑ
) ยท `RateLimit: \"default\";r=59;t=42` (์๋ r, ๋ฆฌ์
๊น์ง t ์ด) - **๋ ๊ฑฐ์**(๊ด์ฉ): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. ๊ธฐ์กด ์ฐ๋ ํธํ์ ์ํด ์ ์งํฉ๋๋ค. `429` ์์๋ `Retry-After`(์ด)๊ฐ ์ฐ์ ํฉ๋๋ค. ๋๋ ๋๊ธฐํ(ํ๋ชฉ ๋จ์ ๋ฐ๋ณต ๋ฑ๋ก ๋ฑ)๋ `Retry-After` ๋งํผ backoff ํ ์ฌ์๋ํ์ธ์. ## ์ถ์ ์์ฒญ์ `X-Correlation-Id` ํค๋๋ฅผ ์ค์ผ๋ฉด ๊ทธ๋๋ก echo ๋๊ณ , ์์ผ๋ฉด ์๋ฒ๊ฐ ๋ฐ๊ธํฉ๋๋ค. ๋ชจ๋ ์๋ต(์ฑ๊ณต/์๋ฌ)์ `X-Correlation-Id`๊ฐ ์ค๋ฆฝ๋๋ค. ## ์ ๋ฐฉํธํ โ ๋ชจ๋ฅด๋ ํ๋์ ๊ฐ์์ ๊นจ์ง์ง ์๊ฒ ๋ค์ ์
์ breaking ๋ณ๊ฒฝ์ผ๋ก ๋ณด์ง ์์ผ๋ฉฐ minor ๋ฆด๋ฆฌ์ค์์ ์๊ณ ์์ด ์ผ์ด๋ฉ๋๋ค. ์ด ์ ์ ๋ก ๊ตฌํํ์ธ์. - **์ ํ ํ๋ ์ถ๊ฐ**: ๋ชจ๋ฅด๋ ํ๋๋ ๋ฌด์ํ์ธ์. ์๊ฒฉ ํ์(unknown key ๊ฑฐ๋ถ)๋ฅผ ์ฐ์ง ๋ง์ธ์. - **enum ๊ฐ ์ถ๊ฐ**: ์ํยท๋์ฐฐ๋ฐฉ๋ฒ ๋ฑ์ ์ ๊ฐ์ด ์๊น๋๋ค. ๋ชจ๋ฅด๋ ๊ฐ์ ๋ง๋๋ฉด ์์ธ๋ฅผ ๋์ง์ง ๋ง๊ณ ์๋ฌธ ๋ฌธ์์ด์ ๋ณด์กดํ์ธ์. - **problem `type` slug ์ถ๊ฐ**: ๋ชจ๋ฅด๋ slug์ **HTTP status๋ก ํด๋ฐฑ**ํด ๋ถ๊ธฐํ์ธ์. ## ๋ฒ์ ์๋ช
(deprecation/sunset) - **_/v2** breaking ๋ณ๊ฒฝ์ CHANGELOG SemVer(major bump)์ `Deprecation`/`Sunset` ํค๋๋ก ํต์งํฉ๋๋ค. ์ด ํค๋๋ฅผ ๋ชจ๋ํฐ๋งํ์ธ์.
|
|
4
4
|
*
|
|
5
|
-
* The version of the OpenAPI document:
|
|
5
|
+
* The version of the OpenAPI document: 40.0.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).
|
|
@@ -11,15 +11,15 @@
|
|
|
11
11
|
*/
|
|
12
12
|
export interface RegisterAwardRequestDto {
|
|
13
13
|
/**
|
|
14
|
-
* ๋์ฐฐ์(๊ณต๊ธ์ฌ) ํ์ ID. winnerSequence
|
|
14
|
+
* ๋์ฐฐ์(๊ณต๊ธ์ฌ) ํ์ ID. winnerSequence๊ฐ ์์ผ๋ฉด ํ์(๋์ฐฐ์ ์๋ณ). winnerSequence๊ฐ ์์ผ๋ฉด ์๋ต ๊ฐ๋ฅ.
|
|
15
15
|
*/
|
|
16
16
|
'winnerMemberId'?: string;
|
|
17
17
|
/**
|
|
18
|
-
* ๋์ฐฐ์ ์์ฐฐ ์๋ฒ(๋์ฐฐ ๊ฒฐ๊ณผ ์กฐํ์ sequence). ๋ณต์ ์์ฐฐ ์ ์ ํํ ์์ฐฐ ๊ฑด์ ์ง์ ํฉ๋๋ค. ์์ผ๋ฉด winnerMemberId
|
|
18
|
+
* ๋์ฐฐ์ ์์ฐฐ ์๋ฒ(๋์ฐฐ ๊ฒฐ๊ณผ ์กฐํ์ sequence). ๋ณต์ ์์ฐฐ ์ ์ ํํ ์์ฐฐ ๊ฑด์ ์ง์ ํฉ๋๋ค. ์์ผ๋ฉด winnerMemberId๋ก ์ฒซ ์์ฐฐ ๊ฑด์ ํด์ํฉ๋๋ค.
|
|
19
19
|
*/
|
|
20
20
|
'winnerSequence'?: number;
|
|
21
21
|
/**
|
|
22
|
-
* ๋ฉํํฌ๋ง์ผ
|
|
22
|
+
* ๋ฉํํฌ๋ง์ผ ๋ฎ์ด์ฐ๊ธฐ(YYYY-MM-DD). ์ง์ ํ๋ฉด ๊ณต๊ณ ์ ๋ฉํ์ผ์๊ฐ ์ด ๊ฐ์ด ๋ฉ๋๋ค. ์์ผ๋ฉด ๊ณต๊ณ ๋ฑ๋ก ์ ์ง์ ํ ๋ฉํ์ผ์๋ฅผ ์ ์งํฉ๋๋ค.
|
|
23
23
|
*/
|
|
24
24
|
'deliveryDateOverride'?: string;
|
|
25
25
|
}
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
/* eslint-disable */
|
|
4
4
|
/**
|
|
5
5
|
* CMARKET V6 Partner API
|
|
6
|
-
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token
|
|
6
|
+
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token`์์ ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ `Authorization: Bearer <token>` ํค๋๋ก ์ค์ผ์ธ์. ## ๊ถํ โ ๋ ๊ฐ์ ๋
๋ฆฝ๋ ์ถ `403`์ ๋ง๋ฌ๋ค๋ฉด ๋ ์ค ์ด๋ ์ถ์ ๊ฑธ๋ฆฐ ๊ฒ์ธ์ง ๋จผ์ ๊ตฌ๋ถํ์ธ์. - **์ค์ฝํ** = *๋ฌด์์ ํ ์ ์๋*. ํ ํฐ์ ๋ถ์ฌ๋ `bids:read`ยท`contracts:write` ๋ฑ์
๋๋ค. ๋ฏธ๋ณด์ ์ `โฆ/insufficient-scope`. - **๋ํ ๋ฒ์** = *๋๊ตฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ ์๋*. API ํค ์ค์ ์ด๋ฉฐ ์ค์ฝํ๋ก ํํ๋์ง ์์ต๋๋ค. ๋ฒ์ ๋ฐ์ด๋ฉด ์ค์ฝํ์ ๋ฌด๊ดํ๊ฒ 403์
๋๋ค. ๋ํ ๋ฒ์๋ ํค๋ง๋ค ๋ ์ค ํ๋๋ก ์ค์ ๋ฉ๋๋ค โ **์์ ๊ทธ๋ฃน ์ ์**(๊ธฐ๊ด ํค. ์ฌ์
์ฒยท๋ถ์ ๊ณ์ ์ด ์๋ก ์๊ฒจ๋ ์๋ ํฌํจ) ๋๋ **์ง์ ๋ฐ์ฃผ๊ธฐ๊ด ๋ชฉ๋ก**(๊ณ์ฝ์ผ๋ก ํฉ์๋ ๋ชฉ๋ก). ๋ฒ์๋ฅผ ๋ํ์ผ ํ๋ฉด ์ค์ฝํ๊ฐ ์๋๋ผ ํค ์ค์ ๋ณ๊ฒฝ์ ์์ฒญํ์ธ์. ## ์ฑ๊ณต ์๋ต ๋ดํฌ `/v2`์ ๋ชจ๋ 2xx ๋ณธ๋ฌธ์ `{ \"data\": โฆ }`์
๋๋ค. ๋จ์ผ ๋ฆฌ์์ค๋ ๋ชฉ๋ก์ด๋ ๊ฐ์ต๋๋ค. **๋ชฉ๋ก์ `data`๊ฐ ๋ฐฐ์ด์ด๊ณ `meta`๊ฐ ํญ์ ํจ๊ป ์ค๋ฆฝ๋๋ค** โ `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. ๋จ์ผ ๋ฆฌ์์ค ์๋ต์๋ `meta`๊ฐ ๋๊ฐ์ง ์์ต๋๋ค. ๋ดํฌ๋ฅผ ์ฐ์ง ์๋ ํ๋ฉด์ ๋์
๋๋ค. `/oauth/_*`์ `/.well-known/_*`๋ ๊ฐ๊ฐ RFC 6749ยทRFC 8414ยทRFC 9728์ด ์ต์์ ํ๋๋ฅผ ๊ท์ ํ๊ณ , ํ์ผ ๋ด์ฉ ์๋ต์ ๋ณธ๋ฌธ์ด JSON์ด ์๋๋๋ค. ์๋ฌ ์๋ต์๋ ๋ดํฌ๋ฅผ ์์ฐ์ง ์์ต๋๋ค โ ์๋ problem+json์ด ๋จ๋
์ผ๋ก ์ฑ
์์ง๋๋ค. ## ์กฐ๊ฑด๋ถ ์์ฒญ (ETag) `/v2`์ ๋ชจ๋ `GET` ์๋ต์ weak `ETag`(`W/\"โฆ\"`)๊ฐ ์ค๋ฆฝ๋๋ค. ๋ฐ์ ๊ฐ์ ๋ค์ ์์ฒญ์ `If-None-Match` ํค๋๋ก ๋๋ณด๋ด๋ฉด, ๋ด์ฉ์ด ๊ทธ๋๋ก์ผ ๋ `304 Not Modified`๋ฅผ ๋ณธ๋ฌธ ์์ด ๋ฐ์ต๋๋ค. ๊ฒฐ๊ณผ๊ฐ ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๊ฐ์ ์์์ ๋ฐ๋ณต ์กฐํํ๋ ์ฐ๋์ด๋ผ๋ฉด ์ด ํค๋ ํ๋๋ก ์ ์ก๋์ด ์ฌ๋ผ์ง๋๋ค. ## ์๋ฌ (RFC 9457 problem+json) ๋ชจ๋ ์๋ฌ ์๋ต์ `application/problem+json`์
๋๋ค. **HTTP status + `type` URI** ๋ก ๋ถ๊ธฐํ์ธ์. - `retryable`(boolean): ์๋ ์ฌ์๋ ์์ ์ฌ๋ถ. `true`(429ยท5xx transient)๋ฉด backoff ํ ์ฌ์๋ํ๊ณ , `false`๋ฉด ์์ฒญ์ ๊ณ ์ณ์ผ ํฉ๋๋ค. - `traceId`: ์์ฒญ ์ถ์ id. `X-Correlation-Id` ์๋ต ํค๋์ ๊ฐ์ ๊ฐ์
๋๋ค โ ๋ฌธ์ํ ๋ ์ด ๊ฐ์ ์ฒจ๋ถํ์ธ์. - `correlationId`: `traceId`์ ๊ฐ์ ๊ฐ์ ์ ์ด๋ฆ. ๊ธฐ์กด ์ฐ๋ ํธํ์ผ๋ก ํจ๊ป ์ค๋ฆฝ๋๋ค. ์ ์ฐ๋์ `traceId`๋ฅผ ์ฝ์ผ์ธ์. - `invalid-params`: ๊ฒ์ฆ ์คํจ(400 `โฆ/validation-failed`) ์ ์๋ฐ ํ๋ ๊ฒฝ๋ก ๋ชฉ๋ก(RFC 9457 ํ์ฅ, ๊ฐ ์์). `type`์ `https://problems.cmarket.io/partner/<slug>` ํํ์ **์์ ์๋ณ์**์
๋๋ค. RFC 9457 ยง3.1.1์ด ํ์ฉํ๋ ๋๋ก ์ด URI๋ **์ญ์ฐธ์กฐ(dereference)๋์ง ์์ต๋๋ค** โ ๋ธ๋ผ์ฐ์ ๋ก ์ด์ง ๋ง๊ณ ๋ฌธ์์ด ๋น๊ต๋ก๋ง ์ฐ์ธ์. slug ๋ชฉ๋ก๊ณผ ์๋ฏธ๋ ๊ฐ ์๋ํฌ์ธํธ์ ์๋ต ์ค๋ช
์ status ๋ณ๋ก ์ ํ ์์ต๋๋ค. ### ๋ฉฑ๋ฑ์ฑ ์๋ฐ: 409์ 422์ ์ฐจ์ด - `409` `โฆ/idempotency-key-conflict` โ ๊ฐ์ ํค์ **์ ์์ฒญ์ด ์์ง ์ฒ๋ฆฌ ์ค**์
๋๋ค. ์ ์ ๋ค ๊ฐ์ ํค๋ก ๋ค์ ๋ถ๋ฅด๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ต๋๋ค. - `422` `โฆ/idempotency-key-reused` โ ๊ฐ์ ํค๋ฅผ **๋ค๋ฅธ body** ๋ก ๋ณด๋์ต๋๋ค. ์ฌ์๋ํด๋ ์์ํ ๊ฐ์ ์คํจ์ด๋ ์ ํค๋ฅผ ์ฐ๊ฑฐ๋ body๋ฅผ ๋๋๋ฆฌ์ธ์. ## Rate Limit ์ ์ญ **60 ์์ฒญ/๋ถ per `client_id`**, ํ ํฐ ๋ฐ๊ธ(`/oauth/token`)์ **5 ์์ฒญ/๋ถ** ์
๋๋ค. ์ด๊ณผ ์ `429`(`type: โฆ/too-many-requests`). ์ฟผํฐ๋ ๋ ๊ฐ์ง ํ๊ธฐ๋ก ํจ๊ป ๋๊ฐ๋๋ค โ ์ ๊ท ์ฐ๋์ ํ์ค ํ๋๋ฅผ ์ฐ์ธ์. - **ํ์ค**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (์ ์ฑ
) ยท `RateLimit: \"default\";r=59;t=42` (์๋ r, ๋ฆฌ์
๊น์ง t ์ด) - **๋ ๊ฑฐ์**(๊ด์ฉ): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. ๊ธฐ์กด ์ฐ๋ ํธํ์ ์ํด ์ ์งํฉ๋๋ค. `429` ์์๋ `Retry-After`(์ด)๊ฐ ์ฐ์ ํฉ๋๋ค. ๋๋ ๋๊ธฐํ(ํ๋ชฉ ๋จ์ ๋ฐ๋ณต ๋ฑ๋ก ๋ฑ)๋ `Retry-After` ๋งํผ backoff ํ ์ฌ์๋ํ์ธ์. ## ์ถ์ ์์ฒญ์ `X-Correlation-Id` ํค๋๋ฅผ ์ค์ผ๋ฉด ๊ทธ๋๋ก echo ๋๊ณ , ์์ผ๋ฉด ์๋ฒ๊ฐ ๋ฐ๊ธํฉ๋๋ค. ๋ชจ๋ ์๋ต(์ฑ๊ณต/์๋ฌ)์ `X-Correlation-Id`๊ฐ ์ค๋ฆฝ๋๋ค. ## ์ ๋ฐฉํธํ โ ๋ชจ๋ฅด๋ ํ๋์ ๊ฐ์์ ๊นจ์ง์ง ์๊ฒ ๋ค์ ์
์ breaking ๋ณ๊ฒฝ์ผ๋ก ๋ณด์ง ์์ผ๋ฉฐ minor ๋ฆด๋ฆฌ์ค์์ ์๊ณ ์์ด ์ผ์ด๋ฉ๋๋ค. ์ด ์ ์ ๋ก ๊ตฌํํ์ธ์. - **์ ํ ํ๋ ์ถ๊ฐ**: ๋ชจ๋ฅด๋ ํ๋๋ ๋ฌด์ํ์ธ์. ์๊ฒฉ ํ์(unknown key ๊ฑฐ๋ถ)๋ฅผ ์ฐ์ง ๋ง์ธ์. - **enum ๊ฐ ์ถ๊ฐ**: ์ํยท๋์ฐฐ๋ฐฉ๋ฒ ๋ฑ์ ์ ๊ฐ์ด ์๊น๋๋ค. ๋ชจ๋ฅด๋ ๊ฐ์ ๋ง๋๋ฉด ์์ธ๋ฅผ ๋์ง์ง ๋ง๊ณ ์๋ฌธ ๋ฌธ์์ด์ ๋ณด์กดํ์ธ์. - **problem `type` slug ์ถ๊ฐ**: ๋ชจ๋ฅด๋ slug์ **HTTP status๋ก ํด๋ฐฑ**ํด ๋ถ๊ธฐํ์ธ์. ## ๋ฒ์ ์๋ช
(deprecation/sunset) - **_/v2** breaking ๋ณ๊ฒฝ์ CHANGELOG SemVer(major bump)์ `Deprecation`/`Sunset` ํค๋๋ก ํต์งํฉ๋๋ค. ์ด ํค๋๋ฅผ ๋ชจ๋ํฐ๋งํ์ธ์.
|
|
7
7
|
*
|
|
8
|
-
* The version of the OpenAPI document:
|
|
8
|
+
* The version of the OpenAPI document: 40.0.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).
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* CMARKET V6 Partner API
|
|
3
|
-
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token
|
|
3
|
+
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token`์์ ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ `Authorization: Bearer <token>` ํค๋๋ก ์ค์ผ์ธ์. ## ๊ถํ โ ๋ ๊ฐ์ ๋
๋ฆฝ๋ ์ถ `403`์ ๋ง๋ฌ๋ค๋ฉด ๋ ์ค ์ด๋ ์ถ์ ๊ฑธ๋ฆฐ ๊ฒ์ธ์ง ๋จผ์ ๊ตฌ๋ถํ์ธ์. - **์ค์ฝํ** = *๋ฌด์์ ํ ์ ์๋*. ํ ํฐ์ ๋ถ์ฌ๋ `bids:read`ยท`contracts:write` ๋ฑ์
๋๋ค. ๋ฏธ๋ณด์ ์ `โฆ/insufficient-scope`. - **๋ํ ๋ฒ์** = *๋๊ตฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ ์๋*. API ํค ์ค์ ์ด๋ฉฐ ์ค์ฝํ๋ก ํํ๋์ง ์์ต๋๋ค. ๋ฒ์ ๋ฐ์ด๋ฉด ์ค์ฝํ์ ๋ฌด๊ดํ๊ฒ 403์
๋๋ค. ๋ํ ๋ฒ์๋ ํค๋ง๋ค ๋ ์ค ํ๋๋ก ์ค์ ๋ฉ๋๋ค โ **์์ ๊ทธ๋ฃน ์ ์**(๊ธฐ๊ด ํค. ์ฌ์
์ฒยท๋ถ์ ๊ณ์ ์ด ์๋ก ์๊ฒจ๋ ์๋ ํฌํจ) ๋๋ **์ง์ ๋ฐ์ฃผ๊ธฐ๊ด ๋ชฉ๋ก**(๊ณ์ฝ์ผ๋ก ํฉ์๋ ๋ชฉ๋ก). ๋ฒ์๋ฅผ ๋ํ์ผ ํ๋ฉด ์ค์ฝํ๊ฐ ์๋๋ผ ํค ์ค์ ๋ณ๊ฒฝ์ ์์ฒญํ์ธ์. ## ์ฑ๊ณต ์๋ต ๋ดํฌ `/v2`์ ๋ชจ๋ 2xx ๋ณธ๋ฌธ์ `{ \"data\": โฆ }`์
๋๋ค. ๋จ์ผ ๋ฆฌ์์ค๋ ๋ชฉ๋ก์ด๋ ๊ฐ์ต๋๋ค. **๋ชฉ๋ก์ `data`๊ฐ ๋ฐฐ์ด์ด๊ณ `meta`๊ฐ ํญ์ ํจ๊ป ์ค๋ฆฝ๋๋ค** โ `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. ๋จ์ผ ๋ฆฌ์์ค ์๋ต์๋ `meta`๊ฐ ๋๊ฐ์ง ์์ต๋๋ค. ๋ดํฌ๋ฅผ ์ฐ์ง ์๋ ํ๋ฉด์ ๋์
๋๋ค. `/oauth/_*`์ `/.well-known/_*`๋ ๊ฐ๊ฐ RFC 6749ยทRFC 8414ยทRFC 9728์ด ์ต์์ ํ๋๋ฅผ ๊ท์ ํ๊ณ , ํ์ผ ๋ด์ฉ ์๋ต์ ๋ณธ๋ฌธ์ด JSON์ด ์๋๋๋ค. ์๋ฌ ์๋ต์๋ ๋ดํฌ๋ฅผ ์์ฐ์ง ์์ต๋๋ค โ ์๋ problem+json์ด ๋จ๋
์ผ๋ก ์ฑ
์์ง๋๋ค. ## ์กฐ๊ฑด๋ถ ์์ฒญ (ETag) `/v2`์ ๋ชจ๋ `GET` ์๋ต์ weak `ETag`(`W/\"โฆ\"`)๊ฐ ์ค๋ฆฝ๋๋ค. ๋ฐ์ ๊ฐ์ ๋ค์ ์์ฒญ์ `If-None-Match` ํค๋๋ก ๋๋ณด๋ด๋ฉด, ๋ด์ฉ์ด ๊ทธ๋๋ก์ผ ๋ `304 Not Modified`๋ฅผ ๋ณธ๋ฌธ ์์ด ๋ฐ์ต๋๋ค. ๊ฒฐ๊ณผ๊ฐ ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๊ฐ์ ์์์ ๋ฐ๋ณต ์กฐํํ๋ ์ฐ๋์ด๋ผ๋ฉด ์ด ํค๋ ํ๋๋ก ์ ์ก๋์ด ์ฌ๋ผ์ง๋๋ค. ## ์๋ฌ (RFC 9457 problem+json) ๋ชจ๋ ์๋ฌ ์๋ต์ `application/problem+json`์
๋๋ค. **HTTP status + `type` URI** ๋ก ๋ถ๊ธฐํ์ธ์. - `retryable`(boolean): ์๋ ์ฌ์๋ ์์ ์ฌ๋ถ. `true`(429ยท5xx transient)๋ฉด backoff ํ ์ฌ์๋ํ๊ณ , `false`๋ฉด ์์ฒญ์ ๊ณ ์ณ์ผ ํฉ๋๋ค. - `traceId`: ์์ฒญ ์ถ์ id. `X-Correlation-Id` ์๋ต ํค๋์ ๊ฐ์ ๊ฐ์
๋๋ค โ ๋ฌธ์ํ ๋ ์ด ๊ฐ์ ์ฒจ๋ถํ์ธ์. - `correlationId`: `traceId`์ ๊ฐ์ ๊ฐ์ ์ ์ด๋ฆ. ๊ธฐ์กด ์ฐ๋ ํธํ์ผ๋ก ํจ๊ป ์ค๋ฆฝ๋๋ค. ์ ์ฐ๋์ `traceId`๋ฅผ ์ฝ์ผ์ธ์. - `invalid-params`: ๊ฒ์ฆ ์คํจ(400 `โฆ/validation-failed`) ์ ์๋ฐ ํ๋ ๊ฒฝ๋ก ๋ชฉ๋ก(RFC 9457 ํ์ฅ, ๊ฐ ์์). `type`์ `https://problems.cmarket.io/partner/<slug>` ํํ์ **์์ ์๋ณ์**์
๋๋ค. RFC 9457 ยง3.1.1์ด ํ์ฉํ๋ ๋๋ก ์ด URI๋ **์ญ์ฐธ์กฐ(dereference)๋์ง ์์ต๋๋ค** โ ๋ธ๋ผ์ฐ์ ๋ก ์ด์ง ๋ง๊ณ ๋ฌธ์์ด ๋น๊ต๋ก๋ง ์ฐ์ธ์. slug ๋ชฉ๋ก๊ณผ ์๋ฏธ๋ ๊ฐ ์๋ํฌ์ธํธ์ ์๋ต ์ค๋ช
์ status ๋ณ๋ก ์ ํ ์์ต๋๋ค. ### ๋ฉฑ๋ฑ์ฑ ์๋ฐ: 409์ 422์ ์ฐจ์ด - `409` `โฆ/idempotency-key-conflict` โ ๊ฐ์ ํค์ **์ ์์ฒญ์ด ์์ง ์ฒ๋ฆฌ ์ค**์
๋๋ค. ์ ์ ๋ค ๊ฐ์ ํค๋ก ๋ค์ ๋ถ๋ฅด๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ต๋๋ค. - `422` `โฆ/idempotency-key-reused` โ ๊ฐ์ ํค๋ฅผ **๋ค๋ฅธ body** ๋ก ๋ณด๋์ต๋๋ค. ์ฌ์๋ํด๋ ์์ํ ๊ฐ์ ์คํจ์ด๋ ์ ํค๋ฅผ ์ฐ๊ฑฐ๋ body๋ฅผ ๋๋๋ฆฌ์ธ์. ## Rate Limit ์ ์ญ **60 ์์ฒญ/๋ถ per `client_id`**, ํ ํฐ ๋ฐ๊ธ(`/oauth/token`)์ **5 ์์ฒญ/๋ถ** ์
๋๋ค. ์ด๊ณผ ์ `429`(`type: โฆ/too-many-requests`). ์ฟผํฐ๋ ๋ ๊ฐ์ง ํ๊ธฐ๋ก ํจ๊ป ๋๊ฐ๋๋ค โ ์ ๊ท ์ฐ๋์ ํ์ค ํ๋๋ฅผ ์ฐ์ธ์. - **ํ์ค**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (์ ์ฑ
) ยท `RateLimit: \"default\";r=59;t=42` (์๋ r, ๋ฆฌ์
๊น์ง t ์ด) - **๋ ๊ฑฐ์**(๊ด์ฉ): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. ๊ธฐ์กด ์ฐ๋ ํธํ์ ์ํด ์ ์งํฉ๋๋ค. `429` ์์๋ `Retry-After`(์ด)๊ฐ ์ฐ์ ํฉ๋๋ค. ๋๋ ๋๊ธฐํ(ํ๋ชฉ ๋จ์ ๋ฐ๋ณต ๋ฑ๋ก ๋ฑ)๋ `Retry-After` ๋งํผ backoff ํ ์ฌ์๋ํ์ธ์. ## ์ถ์ ์์ฒญ์ `X-Correlation-Id` ํค๋๋ฅผ ์ค์ผ๋ฉด ๊ทธ๋๋ก echo ๋๊ณ , ์์ผ๋ฉด ์๋ฒ๊ฐ ๋ฐ๊ธํฉ๋๋ค. ๋ชจ๋ ์๋ต(์ฑ๊ณต/์๋ฌ)์ `X-Correlation-Id`๊ฐ ์ค๋ฆฝ๋๋ค. ## ์ ๋ฐฉํธํ โ ๋ชจ๋ฅด๋ ํ๋์ ๊ฐ์์ ๊นจ์ง์ง ์๊ฒ ๋ค์ ์
์ breaking ๋ณ๊ฒฝ์ผ๋ก ๋ณด์ง ์์ผ๋ฉฐ minor ๋ฆด๋ฆฌ์ค์์ ์๊ณ ์์ด ์ผ์ด๋ฉ๋๋ค. ์ด ์ ์ ๋ก ๊ตฌํํ์ธ์. - **์ ํ ํ๋ ์ถ๊ฐ**: ๋ชจ๋ฅด๋ ํ๋๋ ๋ฌด์ํ์ธ์. ์๊ฒฉ ํ์(unknown key ๊ฑฐ๋ถ)๋ฅผ ์ฐ์ง ๋ง์ธ์. - **enum ๊ฐ ์ถ๊ฐ**: ์ํยท๋์ฐฐ๋ฐฉ๋ฒ ๋ฑ์ ์ ๊ฐ์ด ์๊น๋๋ค. ๋ชจ๋ฅด๋ ๊ฐ์ ๋ง๋๋ฉด ์์ธ๋ฅผ ๋์ง์ง ๋ง๊ณ ์๋ฌธ ๋ฌธ์์ด์ ๋ณด์กดํ์ธ์. - **problem `type` slug ์ถ๊ฐ**: ๋ชจ๋ฅด๋ slug์ **HTTP status๋ก ํด๋ฐฑ**ํด ๋ถ๊ธฐํ์ธ์. ## ๋ฒ์ ์๋ช
(deprecation/sunset) - **_/v2** breaking ๋ณ๊ฒฝ์ CHANGELOG SemVer(major bump)์ `Deprecation`/`Sunset` ํค๋๋ก ํต์งํฉ๋๋ค. ์ด ํค๋๋ฅผ ๋ชจ๋ํฐ๋งํ์ธ์.
|
|
4
4
|
*
|
|
5
|
-
* The version of the OpenAPI document:
|
|
5
|
+
* The version of the OpenAPI document: 40.0.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. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token
|
|
6
|
+
* ์ธ๋ถ ERP ์ฐ๋์ฉ RESTful API. ## ์ธ์ฆ OAuth2 Bearer JWT (`client_credentials` ํ๋ก์ฐ). `/oauth/token`์์ ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ `Authorization: Bearer <token>` ํค๋๋ก ์ค์ผ์ธ์. ## ๊ถํ โ ๋ ๊ฐ์ ๋
๋ฆฝ๋ ์ถ `403`์ ๋ง๋ฌ๋ค๋ฉด ๋ ์ค ์ด๋ ์ถ์ ๊ฑธ๋ฆฐ ๊ฒ์ธ์ง ๋จผ์ ๊ตฌ๋ถํ์ธ์. - **์ค์ฝํ** = *๋ฌด์์ ํ ์ ์๋*. ํ ํฐ์ ๋ถ์ฌ๋ `bids:read`ยท`contracts:write` ๋ฑ์
๋๋ค. ๋ฏธ๋ณด์ ์ `โฆ/insufficient-scope`. - **๋ํ ๋ฒ์** = *๋๊ตฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ ์๋*. API ํค ์ค์ ์ด๋ฉฐ ์ค์ฝํ๋ก ํํ๋์ง ์์ต๋๋ค. ๋ฒ์ ๋ฐ์ด๋ฉด ์ค์ฝํ์ ๋ฌด๊ดํ๊ฒ 403์
๋๋ค. ๋ํ ๋ฒ์๋ ํค๋ง๋ค ๋ ์ค ํ๋๋ก ์ค์ ๋ฉ๋๋ค โ **์์ ๊ทธ๋ฃน ์ ์**(๊ธฐ๊ด ํค. ์ฌ์
์ฒยท๋ถ์ ๊ณ์ ์ด ์๋ก ์๊ฒจ๋ ์๋ ํฌํจ) ๋๋ **์ง์ ๋ฐ์ฃผ๊ธฐ๊ด ๋ชฉ๋ก**(๊ณ์ฝ์ผ๋ก ํฉ์๋ ๋ชฉ๋ก). ๋ฒ์๋ฅผ ๋ํ์ผ ํ๋ฉด ์ค์ฝํ๊ฐ ์๋๋ผ ํค ์ค์ ๋ณ๊ฒฝ์ ์์ฒญํ์ธ์. ## ์ฑ๊ณต ์๋ต ๋ดํฌ `/v2`์ ๋ชจ๋ 2xx ๋ณธ๋ฌธ์ `{ \"data\": โฆ }`์
๋๋ค. ๋จ์ผ ๋ฆฌ์์ค๋ ๋ชฉ๋ก์ด๋ ๊ฐ์ต๋๋ค. **๋ชฉ๋ก์ `data`๊ฐ ๋ฐฐ์ด์ด๊ณ `meta`๊ฐ ํญ์ ํจ๊ป ์ค๋ฆฝ๋๋ค** โ `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. ๋จ์ผ ๋ฆฌ์์ค ์๋ต์๋ `meta`๊ฐ ๋๊ฐ์ง ์์ต๋๋ค. ๋ดํฌ๋ฅผ ์ฐ์ง ์๋ ํ๋ฉด์ ๋์
๋๋ค. `/oauth/_*`์ `/.well-known/_*`๋ ๊ฐ๊ฐ RFC 6749ยทRFC 8414ยทRFC 9728์ด ์ต์์ ํ๋๋ฅผ ๊ท์ ํ๊ณ , ํ์ผ ๋ด์ฉ ์๋ต์ ๋ณธ๋ฌธ์ด JSON์ด ์๋๋๋ค. ์๋ฌ ์๋ต์๋ ๋ดํฌ๋ฅผ ์์ฐ์ง ์์ต๋๋ค โ ์๋ problem+json์ด ๋จ๋
์ผ๋ก ์ฑ
์์ง๋๋ค. ## ์กฐ๊ฑด๋ถ ์์ฒญ (ETag) `/v2`์ ๋ชจ๋ `GET` ์๋ต์ weak `ETag`(`W/\"โฆ\"`)๊ฐ ์ค๋ฆฝ๋๋ค. ๋ฐ์ ๊ฐ์ ๋ค์ ์์ฒญ์ `If-None-Match` ํค๋๋ก ๋๋ณด๋ด๋ฉด, ๋ด์ฉ์ด ๊ทธ๋๋ก์ผ ๋ `304 Not Modified`๋ฅผ ๋ณธ๋ฌธ ์์ด ๋ฐ์ต๋๋ค. ๊ฒฐ๊ณผ๊ฐ ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๊ฐ์ ์์์ ๋ฐ๋ณต ์กฐํํ๋ ์ฐ๋์ด๋ผ๋ฉด ์ด ํค๋ ํ๋๋ก ์ ์ก๋์ด ์ฌ๋ผ์ง๋๋ค. ## ์๋ฌ (RFC 9457 problem+json) ๋ชจ๋ ์๋ฌ ์๋ต์ `application/problem+json`์
๋๋ค. **HTTP status + `type` URI** ๋ก ๋ถ๊ธฐํ์ธ์. - `retryable`(boolean): ์๋ ์ฌ์๋ ์์ ์ฌ๋ถ. `true`(429ยท5xx transient)๋ฉด backoff ํ ์ฌ์๋ํ๊ณ , `false`๋ฉด ์์ฒญ์ ๊ณ ์ณ์ผ ํฉ๋๋ค. - `traceId`: ์์ฒญ ์ถ์ id. `X-Correlation-Id` ์๋ต ํค๋์ ๊ฐ์ ๊ฐ์
๋๋ค โ ๋ฌธ์ํ ๋ ์ด ๊ฐ์ ์ฒจ๋ถํ์ธ์. - `correlationId`: `traceId`์ ๊ฐ์ ๊ฐ์ ์ ์ด๋ฆ. ๊ธฐ์กด ์ฐ๋ ํธํ์ผ๋ก ํจ๊ป ์ค๋ฆฝ๋๋ค. ์ ์ฐ๋์ `traceId`๋ฅผ ์ฝ์ผ์ธ์. - `invalid-params`: ๊ฒ์ฆ ์คํจ(400 `โฆ/validation-failed`) ์ ์๋ฐ ํ๋ ๊ฒฝ๋ก ๋ชฉ๋ก(RFC 9457 ํ์ฅ, ๊ฐ ์์). `type`์ `https://problems.cmarket.io/partner/<slug>` ํํ์ **์์ ์๋ณ์**์
๋๋ค. RFC 9457 ยง3.1.1์ด ํ์ฉํ๋ ๋๋ก ์ด URI๋ **์ญ์ฐธ์กฐ(dereference)๋์ง ์์ต๋๋ค** โ ๋ธ๋ผ์ฐ์ ๋ก ์ด์ง ๋ง๊ณ ๋ฌธ์์ด ๋น๊ต๋ก๋ง ์ฐ์ธ์. slug ๋ชฉ๋ก๊ณผ ์๋ฏธ๋ ๊ฐ ์๋ํฌ์ธํธ์ ์๋ต ์ค๋ช
์ status ๋ณ๋ก ์ ํ ์์ต๋๋ค. ### ๋ฉฑ๋ฑ์ฑ ์๋ฐ: 409์ 422์ ์ฐจ์ด - `409` `โฆ/idempotency-key-conflict` โ ๊ฐ์ ํค์ **์ ์์ฒญ์ด ์์ง ์ฒ๋ฆฌ ์ค**์
๋๋ค. ์ ์ ๋ค ๊ฐ์ ํค๋ก ๋ค์ ๋ถ๋ฅด๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ต๋๋ค. - `422` `โฆ/idempotency-key-reused` โ ๊ฐ์ ํค๋ฅผ **๋ค๋ฅธ body** ๋ก ๋ณด๋์ต๋๋ค. ์ฌ์๋ํด๋ ์์ํ ๊ฐ์ ์คํจ์ด๋ ์ ํค๋ฅผ ์ฐ๊ฑฐ๋ body๋ฅผ ๋๋๋ฆฌ์ธ์. ## Rate Limit ์ ์ญ **60 ์์ฒญ/๋ถ per `client_id`**, ํ ํฐ ๋ฐ๊ธ(`/oauth/token`)์ **5 ์์ฒญ/๋ถ** ์
๋๋ค. ์ด๊ณผ ์ `429`(`type: โฆ/too-many-requests`). ์ฟผํฐ๋ ๋ ๊ฐ์ง ํ๊ธฐ๋ก ํจ๊ป ๋๊ฐ๋๋ค โ ์ ๊ท ์ฐ๋์ ํ์ค ํ๋๋ฅผ ์ฐ์ธ์. - **ํ์ค**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (์ ์ฑ
) ยท `RateLimit: \"default\";r=59;t=42` (์๋ r, ๋ฆฌ์
๊น์ง t ์ด) - **๋ ๊ฑฐ์**(๊ด์ฉ): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. ๊ธฐ์กด ์ฐ๋ ํธํ์ ์ํด ์ ์งํฉ๋๋ค. `429` ์์๋ `Retry-After`(์ด)๊ฐ ์ฐ์ ํฉ๋๋ค. ๋๋ ๋๊ธฐํ(ํ๋ชฉ ๋จ์ ๋ฐ๋ณต ๋ฑ๋ก ๋ฑ)๋ `Retry-After` ๋งํผ backoff ํ ์ฌ์๋ํ์ธ์. ## ์ถ์ ์์ฒญ์ `X-Correlation-Id` ํค๋๋ฅผ ์ค์ผ๋ฉด ๊ทธ๋๋ก echo ๋๊ณ , ์์ผ๋ฉด ์๋ฒ๊ฐ ๋ฐ๊ธํฉ๋๋ค. ๋ชจ๋ ์๋ต(์ฑ๊ณต/์๋ฌ)์ `X-Correlation-Id`๊ฐ ์ค๋ฆฝ๋๋ค. ## ์ ๋ฐฉํธํ โ ๋ชจ๋ฅด๋ ํ๋์ ๊ฐ์์ ๊นจ์ง์ง ์๊ฒ ๋ค์ ์
์ breaking ๋ณ๊ฒฝ์ผ๋ก ๋ณด์ง ์์ผ๋ฉฐ minor ๋ฆด๋ฆฌ์ค์์ ์๊ณ ์์ด ์ผ์ด๋ฉ๋๋ค. ์ด ์ ์ ๋ก ๊ตฌํํ์ธ์. - **์ ํ ํ๋ ์ถ๊ฐ**: ๋ชจ๋ฅด๋ ํ๋๋ ๋ฌด์ํ์ธ์. ์๊ฒฉ ํ์(unknown key ๊ฑฐ๋ถ)๋ฅผ ์ฐ์ง ๋ง์ธ์. - **enum ๊ฐ ์ถ๊ฐ**: ์ํยท๋์ฐฐ๋ฐฉ๋ฒ ๋ฑ์ ์ ๊ฐ์ด ์๊น๋๋ค. ๋ชจ๋ฅด๋ ๊ฐ์ ๋ง๋๋ฉด ์์ธ๋ฅผ ๋์ง์ง ๋ง๊ณ ์๋ฌธ ๋ฌธ์์ด์ ๋ณด์กดํ์ธ์. - **problem `type` slug ์ถ๊ฐ**: ๋ชจ๋ฅด๋ slug์ **HTTP status๋ก ํด๋ฐฑ**ํด ๋ถ๊ธฐํ์ธ์. ## ๋ฒ์ ์๋ช
(deprecation/sunset) - **_/v2** breaking ๋ณ๊ฒฝ์ CHANGELOG SemVer(major bump)์ `Deprecation`/`Sunset` ํค๋๋ก ํต์งํฉ๋๋ค. ์ด ํค๋๋ฅผ ๋ชจ๋ํฐ๋งํ์ธ์.
|
|
7
7
|
*
|
|
8
|
-
* The version of the OpenAPI document:
|
|
8
|
+
* The version of the OpenAPI document: 40.0.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).
|