@cmarket/partner-sdk 25.2.0 → 31.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +81 -18
- package/api/oauth-api.ts +75 -2
- package/api/partner-v1-api.ts +14 -14
- package/api/partner-v2-api.ts +1593 -258
- package/api/well-known-api.ts +2 -2
- package/api.ts +2 -2
- package/base.ts +2 -2
- package/common.ts +2 -2
- package/configuration.ts +2 -2
- package/dist/api/oauth-api.d.ts +36 -2
- package/dist/api/oauth-api.js +69 -2
- package/dist/api/partner-v1-api.d.ts +2 -2
- package/dist/api/partner-v1-api.js +14 -14
- package/dist/api/partner-v2-api.d.ts +763 -171
- package/dist/api/partner-v2-api.js +1500 -250
- package/dist/api/well-known-api.d.ts +2 -2
- package/dist/api/well-known-api.js +2 -2
- 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/oauth-api.d.ts +36 -2
- package/dist/esm/api/oauth-api.js +69 -2
- package/dist/esm/api/partner-v1-api.d.ts +2 -2
- package/dist/esm/api/partner-v1-api.js +14 -14
- package/dist/esm/api/partner-v2-api.d.ts +763 -171
- package/dist/esm/api/partner-v2-api.js +1500 -250
- package/dist/esm/api/well-known-api.d.ts +2 -2
- package/dist/esm/api/well-known-api.js +2 -2
- 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/acceptance-result-v1-response-dto.d.ts +2 -2
- package/dist/esm/models/acceptance-result-v1-response-dto.js +2 -2
- package/dist/esm/models/acceptance-status-response-dto.d.ts +33 -0
- package/dist/esm/models/acceptance-status-response-dto.js +14 -0
- package/dist/esm/models/acknowledge-product-receipt200-response.d.ts +21 -0
- package/dist/esm/models/acknowledge-product-receipt200-response.js +14 -0
- package/dist/esm/models/acknowledge-products-request-dto.d.ts +17 -0
- package/dist/esm/models/acknowledge-products-request-dto.js +14 -0
- package/dist/esm/models/acknowledge-products-v1-request-dto.d.ts +2 -2
- package/dist/esm/models/acknowledge-products-v1-request-dto.js +2 -2
- package/dist/esm/models/authorization-server-metadata-dto.d.ts +6 -2
- 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-response-dto.d.ts +2 -2
- package/dist/esm/models/award-registered-response-dto.js +2 -2
- package/dist/esm/models/award-registered-v2-response-dto.d.ts +2 -2
- package/dist/esm/models/award-registered-v2-response-dto.js +2 -2
- package/dist/esm/models/award-reverted-v2-response-dto.d.ts +25 -0
- package/dist/esm/models/award-reverted-v2-response-dto.js +16 -0
- package/dist/esm/models/bid-attachment-v1-dto.d.ts +2 -2
- package/dist/esm/models/bid-attachment-v1-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-bond-v1-dto.d.ts +2 -2
- package/dist/esm/models/bid-bond-v1-dto.js +2 -2
- package/dist/esm/models/bid-cancelled-response-dto.d.ts +25 -0
- package/dist/esm/models/bid-cancelled-response-dto.js +16 -0
- 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 +60 -0
- package/dist/esm/models/bid-contract-document-dto.js +19 -0
- package/dist/esm/models/bid-contract-documents-batch-v1-request-dto.d.ts +2 -2
- package/dist/esm/models/bid-contract-documents-batch-v1-request-dto.js +2 -2
- package/dist/esm/models/bid-contract-documents-v1-response-dto.d.ts +2 -2
- package/dist/esm/models/bid-contract-documents-v1-response-dto.js +2 -2
- package/dist/esm/models/bid-created-response-dto.d.ts +2 -2
- package/dist/esm/models/bid-created-response-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 +2 -2
- 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-document-v1-dto.d.ts +2 -2
- package/dist/esm/models/bid-document-v1-dto.js +2 -2
- package/dist/esm/models/bid-failed-response-dto.d.ts +2 -2
- package/dist/esm/models/bid-failed-response-dto.js +2 -2
- package/dist/esm/models/bid-failed-v2-response-dto.d.ts +2 -2
- package/dist/esm/models/bid-failed-v2-response-dto.js +2 -2
- package/dist/esm/models/bid-failure-reason.d.ts +2 -2
- package/dist/esm/models/bid-failure-reason.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-item-v1-dto.d.ts +2 -2
- package/dist/esm/models/bid-item-v1-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-manager-v1-dto.d.ts +2 -2
- package/dist/esm/models/bid-manager-v1-dto.js +2 -2
- package/dist/esm/models/bid-participant-summary-dto.d.ts +2 -2
- package/dist/esm/models/bid-participant-summary-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-published-response-dto.d.ts +2 -2
- package/dist/esm/models/bid-published-response-dto.js +2 -2
- package/dist/esm/models/bid-registered-response-dto.d.ts +2 -2
- package/dist/esm/models/bid-registered-response-dto.js +2 -2
- package/dist/esm/models/bid-result-participant-attachment-dto.d.ts +2 -2
- package/dist/esm/models/bid-result-participant-attachment-dto.js +2 -2
- package/dist/esm/models/bid-result-participant-dto.d.ts +2 -2
- package/dist/esm/models/bid-result-participant-dto.js +2 -2
- package/dist/esm/models/bid-result-v1-attachment-dto.d.ts +2 -2
- package/dist/esm/models/bid-result-v1-attachment-dto.js +2 -2
- package/dist/esm/models/bid-result-v1-bid-product-info-dto.d.ts +2 -2
- package/dist/esm/models/bid-result-v1-bid-product-info-dto.js +2 -2
- package/dist/esm/models/bid-result-v1-participant-dto.d.ts +2 -2
- package/dist/esm/models/bid-result-v1-participant-dto.js +2 -2
- package/dist/esm/models/bid-result-v1-product-dto.d.ts +2 -2
- package/dist/esm/models/bid-result-v1-product-dto.js +2 -2
- package/dist/esm/models/bid-results-batch-request-dto.d.ts +17 -0
- package/dist/esm/models/bid-results-batch-request-dto.js +14 -0
- package/dist/esm/models/bid-results-batch-v1-request-dto.d.ts +2 -2
- package/dist/esm/models/bid-results-batch-v1-request-dto.js +2 -2
- package/dist/esm/models/bid-results-response-dto.d.ts +2 -2
- package/dist/esm/models/bid-results-response-dto.js +2 -2
- package/dist/esm/models/bid-results-v1-response-dto.d.ts +2 -2
- package/dist/esm/models/bid-results-v1-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-statement-v1-response-dto.d.ts +2 -2
- package/dist/esm/models/bid-statement-v1-response-dto.js +2 -2
- package/dist/esm/models/bid-status.d.ts +2 -2
- package/dist/esm/models/bid-status.js +2 -2
- package/dist/esm/models/bid-summary-dto.d.ts +2 -2
- package/dist/esm/models/bid-summary-dto.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 +17 -0
- package/dist/esm/models/cancel-bid-request-dto.js +14 -0
- package/dist/esm/models/cancel-bid200-response.d.ts +21 -0
- package/dist/esm/models/cancel-bid200-response.js +14 -0
- 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 +2 -2
- package/dist/esm/models/complete-acceptance-request-dto.js +2 -2
- package/dist/esm/models/complete-acceptance-v1-request-dto.d.ts +2 -2
- package/dist/esm/models/complete-acceptance-v1-request-dto.js +2 -2
- package/dist/esm/models/complete-acceptance200-response.d.ts +21 -0
- package/dist/esm/models/complete-acceptance200-response.js +14 -0
- package/dist/esm/models/complete-invoice200-response.d.ts +21 -0
- package/dist/esm/models/complete-invoice200-response.js +14 -0
- package/dist/esm/models/contract-document-item-dto.d.ts +2 -2
- package/dist/esm/models/contract-document-item-dto.js +2 -2
- package/dist/esm/models/contract-documents-regenerated-response-dto.d.ts +2 -2
- package/dist/esm/models/contract-documents-regenerated-response-dto.js +2 -2
- package/dist/esm/models/contract-restriction-confirm-input-dto.d.ts +2 -2
- package/dist/esm/models/contract-restriction-confirm-input-dto.js +2 -2
- package/dist/esm/models/create-bid-request-dto.d.ts +2 -2
- package/dist/esm/models/create-bid-request-dto.js +2 -2
- package/dist/esm/models/create-bid-v1-request-dto.d.ts +2 -2
- package/dist/esm/models/create-bid-v1-request-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 +21 -0
- package/dist/esm/models/create-card-payment200-response.js +14 -0
- package/dist/esm/models/create-external-contract-documents-request-dto.d.ts +2 -2
- 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-webhook-endpoint-request-dto.d.ts +22 -0
- package/dist/esm/models/create-webhook-endpoint-request-dto.js +14 -0
- package/dist/esm/models/create-webhook-endpoint201-response.d.ts +21 -0
- package/dist/esm/models/create-webhook-endpoint201-response.js +14 -0
- package/dist/esm/models/external-contract-document-item-dto.d.ts +2 -2
- 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 +2 -2
- 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 +33 -0
- package/dist/esm/models/file-meta-response-dto.js +14 -0
- 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/file-uploaded-v1-response-dto.d.ts +2 -2
- package/dist/esm/models/file-uploaded-v1-response-dto.js +2 -2
- package/dist/esm/models/generated-external-contract-document-dto.d.ts +2 -2
- package/dist/esm/models/generated-external-contract-document-dto.js +2 -2
- package/dist/esm/models/get-bid-acceptance200-response.d.ts +21 -0
- package/dist/esm/models/get-bid-acceptance200-response.js +14 -0
- package/dist/esm/models/get-bid-results200-response.d.ts +21 -0
- package/dist/esm/models/get-bid-results200-response.js +14 -0
- package/dist/esm/models/get-bid-settlement200-response.d.ts +21 -0
- package/dist/esm/models/get-bid-settlement200-response.js +14 -0
- package/dist/esm/models/get-bid-statement200-response.d.ts +21 -0
- package/dist/esm/models/get-bid-statement200-response.js +14 -0
- package/dist/esm/models/get-bid200-response.d.ts +21 -0
- package/dist/esm/models/get-bid200-response.js +14 -0
- package/dist/esm/models/get-file-meta200-response.d.ts +21 -0
- package/dist/esm/models/get-file-meta200-response.js +14 -0
- package/dist/esm/models/get-supplier-card-payable-v2200-response.d.ts +21 -0
- package/dist/esm/models/get-supplier-card-payable-v2200-response.js +14 -0
- package/dist/esm/models/get-webhook-endpoint200-response.d.ts +21 -0
- package/dist/esm/models/get-webhook-endpoint200-response.js +14 -0
- package/dist/esm/models/health-controller-check200-response.d.ts +21 -0
- package/dist/esm/models/health-controller-check200-response.js +14 -0
- 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/hierarchical-region-v1-dto.d.ts +2 -2
- package/dist/esm/models/hierarchical-region-v1-dto.js +2 -2
- package/dist/esm/models/index.d.ts +54 -8
- package/dist/esm/models/index.js +54 -8
- package/dist/esm/models/introspect-request-dto.d.ts +46 -0
- package/dist/esm/models/introspect-request-dto.js +20 -0
- package/dist/esm/models/introspection-response-dto.d.ts +45 -0
- package/dist/esm/models/introspection-response-dto.js +14 -0
- 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/list-bid-contract-documents200-response.d.ts +21 -0
- package/dist/esm/models/list-bid-contract-documents200-response.js +14 -0
- package/dist/esm/models/list-bid-participants200-response.d.ts +21 -0
- package/dist/esm/models/list-bid-participants200-response.js +14 -0
- package/dist/esm/models/list-bid-results200-response.d.ts +21 -0
- package/dist/esm/models/list-bid-results200-response.js +14 -0
- package/dist/esm/models/list-bids-response-dto.d.ts +2 -2
- package/dist/esm/models/list-bids-response-dto.js +2 -2
- package/dist/esm/models/list-bids200-response.d.ts +21 -0
- package/dist/esm/models/list-bids200-response.js +14 -0
- package/dist/esm/models/list-products200-response.d.ts +21 -0
- package/dist/esm/models/list-products200-response.js +14 -0
- package/dist/esm/models/list-webhook-deliveries-response-dto.d.ts +22 -0
- package/dist/esm/models/list-webhook-deliveries-response-dto.js +14 -0
- package/dist/esm/models/list-webhook-deliveries200-response.d.ts +21 -0
- package/dist/esm/models/list-webhook-deliveries200-response.js +14 -0
- package/dist/esm/models/list-webhook-endpoints200-response.d.ts +21 -0
- package/dist/esm/models/list-webhook-endpoints200-response.js +14 -0
- 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-failed-v1-request-dto.d.ts +2 -2
- package/dist/esm/models/mark-bid-failed-v1-request-dto.js +2 -2
- package/dist/esm/models/mark-bid-failed201-response.d.ts +21 -0
- package/dist/esm/models/mark-bid-failed201-response.js +14 -0
- package/dist/esm/models/negotiation-score-v1-dto.d.ts +2 -2
- package/dist/esm/models/negotiation-score-v1-dto.js +2 -2
- package/dist/esm/models/negotiation-scored-response-dto.d.ts +2 -2
- package/dist/esm/models/negotiation-scored-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/partner-webhook-delivery-status.d.ts +18 -0
- package/dist/esm/models/partner-webhook-delivery-status.js +19 -0
- package/dist/esm/models/partner-webhook-endpoint-status.d.ts +19 -0
- package/dist/esm/models/partner-webhook-endpoint-status.js +20 -0
- package/dist/esm/models/partner-webhook-event-type.d.ts +22 -0
- package/dist/esm/models/partner-webhook-event-type.js +23 -0
- package/dist/esm/models/preconditions-dto.d.ts +2 -2
- package/dist/esm/models/preconditions-dto.js +2 -2
- package/dist/esm/models/preconditions-v1-dto.d.ts +2 -2
- package/dist/esm/models/preconditions-v1-dto.js +2 -2
- package/dist/esm/models/problem-details-dto.d.ts +7 -3
- package/dist/esm/models/problem-details-dto.js +2 -2
- package/dist/esm/models/product-receipt-response-dto.d.ts +17 -0
- package/dist/esm/models/product-receipt-response-dto.js +14 -0
- package/dist/esm/models/product-receipt-v1-response-dto.d.ts +2 -2
- package/dist/esm/models/product-receipt-v1-response-dto.js +2 -2
- package/dist/esm/models/product-response-dto.d.ts +77 -0
- package/dist/esm/models/product-response-dto.js +14 -0
- package/dist/esm/models/product-v1-response-dto.d.ts +2 -2
- package/dist/esm/models/product-v1-response-dto.js +2 -2
- package/dist/esm/models/protected-resource-metadata-dto.d.ts +2 -2
- package/dist/esm/models/protected-resource-metadata-dto.js +2 -2
- package/dist/esm/models/publish-bid200-response.d.ts +21 -0
- package/dist/esm/models/publish-bid200-response.js +14 -0
- package/dist/esm/models/regenerate-contract-documents201-response.d.ts +21 -0
- package/dist/esm/models/regenerate-contract-documents201-response.js +14 -0
- package/dist/esm/models/register-award-request-dto.d.ts +2 -2
- package/dist/esm/models/register-award-request-dto.js +2 -2
- package/dist/esm/models/register-award-v1-request-dto.d.ts +2 -2
- package/dist/esm/models/register-award-v1-request-dto.js +2 -2
- package/dist/esm/models/register-award201-response.d.ts +21 -0
- package/dist/esm/models/register-award201-response.js +14 -0
- package/dist/esm/models/register-bid201-response.d.ts +21 -0
- package/dist/esm/models/register-bid201-response.js +14 -0
- package/dist/esm/models/register-semo-contract-request-dto.d.ts +2 -2
- package/dist/esm/models/register-semo-contract-request-dto.js +2 -2
- package/dist/esm/models/request-split-invoice-v1-request-dto.d.ts +2 -2
- package/dist/esm/models/request-split-invoice-v1-request-dto.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 +17 -0
- package/dist/esm/models/revert-award-request-dto.js +14 -0
- package/dist/esm/models/revert-award200-response.d.ts +21 -0
- package/dist/esm/models/revert-award200-response.js +14 -0
- package/dist/esm/models/revoke-request-dto.d.ts +2 -2
- package/dist/esm/models/revoke-request-dto.js +2 -2
- package/dist/esm/models/semo-contract-registered-response-dto.d.ts +2 -2
- 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 +21 -0
- package/dist/esm/models/send-webhook-test-event200-response.js +14 -0
- package/dist/esm/models/split-invoice-v1-response-dto.d.ts +2 -2
- package/dist/esm/models/split-invoice-v1-response-dto.js +2 -2
- package/dist/esm/models/statement-document-dto.d.ts +2 -2
- 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/statement-v1-document-dto.d.ts +2 -2
- package/dist/esm/models/statement-v1-document-dto.js +2 -2
- package/dist/esm/models/statement-v1-product-dto.d.ts +2 -2
- package/dist/esm/models/statement-v1-product-dto.js +2 -2
- package/dist/esm/models/submit-negotiation-scores-v1-request-dto.d.ts +2 -2
- package/dist/esm/models/submit-negotiation-scores-v1-request-dto.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 +2 -2
- package/dist/esm/models/token-request-dto.js +2 -2
- package/dist/esm/models/token-response-dto.d.ts +2 -2
- package/dist/esm/models/token-response-dto.js +2 -2
- package/dist/esm/models/update-bid-request-dto.d.ts +2 -2
- package/dist/esm/models/update-bid-request-dto.js +2 -2
- package/dist/esm/models/update-bid200-response.d.ts +21 -0
- package/dist/esm/models/update-bid200-response.js +14 -0
- package/dist/esm/models/update-webhook-endpoint-request-dto.d.ts +27 -0
- package/dist/esm/models/update-webhook-endpoint-request-dto.js +14 -0
- package/dist/esm/models/upload-file-request-dto.d.ts +2 -2
- package/dist/esm/models/upload-file-request-dto.js +2 -2
- package/dist/esm/models/upload-file-v1-request-dto.d.ts +2 -2
- package/dist/esm/models/upload-file-v1-request-dto.js +2 -2
- package/dist/esm/models/upload-file201-response.d.ts +21 -0
- package/dist/esm/models/upload-file201-response.js +14 -0
- package/dist/esm/models/webhook-delivery-dto.d.ts +73 -0
- package/dist/esm/models/webhook-delivery-dto.js +21 -0
- package/dist/esm/models/webhook-endpoint-dto.d.ts +55 -0
- package/dist/esm/models/webhook-endpoint-dto.js +14 -0
- package/dist/esm/models/webhook-endpoint-with-secret-dto.d.ts +59 -0
- package/dist/esm/models/webhook-endpoint-with-secret-dto.js +14 -0
- package/dist/esm/models/webhook-test-result-dto.d.ts +25 -0
- package/dist/esm/models/webhook-test-result-dto.js +14 -0
- 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/acceptance-result-v1-response-dto.d.ts +2 -2
- package/dist/models/acceptance-result-v1-response-dto.js +2 -2
- package/dist/models/acceptance-status-response-dto.d.ts +33 -0
- package/dist/models/acceptance-status-response-dto.js +15 -0
- package/dist/models/acknowledge-product-receipt200-response.d.ts +21 -0
- package/dist/models/acknowledge-product-receipt200-response.js +15 -0
- package/dist/models/acknowledge-products-request-dto.d.ts +17 -0
- package/dist/models/acknowledge-products-request-dto.js +15 -0
- package/dist/models/acknowledge-products-v1-request-dto.d.ts +2 -2
- package/dist/models/acknowledge-products-v1-request-dto.js +2 -2
- package/dist/models/authorization-server-metadata-dto.d.ts +6 -2
- 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-response-dto.d.ts +2 -2
- package/dist/models/award-registered-response-dto.js +2 -2
- package/dist/models/award-registered-v2-response-dto.d.ts +2 -2
- package/dist/models/award-registered-v2-response-dto.js +2 -2
- package/dist/models/award-reverted-v2-response-dto.d.ts +25 -0
- package/dist/models/award-reverted-v2-response-dto.js +19 -0
- package/dist/models/bid-attachment-v1-dto.d.ts +2 -2
- package/dist/models/bid-attachment-v1-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-bond-v1-dto.d.ts +2 -2
- package/dist/models/bid-bond-v1-dto.js +2 -2
- package/dist/models/bid-cancelled-response-dto.d.ts +25 -0
- package/dist/models/bid-cancelled-response-dto.js +19 -0
- 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 +60 -0
- package/dist/models/bid-contract-document-dto.js +22 -0
- package/dist/models/bid-contract-documents-batch-v1-request-dto.d.ts +2 -2
- package/dist/models/bid-contract-documents-batch-v1-request-dto.js +2 -2
- package/dist/models/bid-contract-documents-v1-response-dto.d.ts +2 -2
- package/dist/models/bid-contract-documents-v1-response-dto.js +2 -2
- package/dist/models/bid-created-response-dto.d.ts +2 -2
- package/dist/models/bid-created-response-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 +2 -2
- 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-document-v1-dto.d.ts +2 -2
- package/dist/models/bid-document-v1-dto.js +2 -2
- package/dist/models/bid-failed-response-dto.d.ts +2 -2
- package/dist/models/bid-failed-response-dto.js +2 -2
- package/dist/models/bid-failed-v2-response-dto.d.ts +2 -2
- package/dist/models/bid-failed-v2-response-dto.js +2 -2
- package/dist/models/bid-failure-reason.d.ts +2 -2
- package/dist/models/bid-failure-reason.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-item-v1-dto.d.ts +2 -2
- package/dist/models/bid-item-v1-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-manager-v1-dto.d.ts +2 -2
- package/dist/models/bid-manager-v1-dto.js +2 -2
- package/dist/models/bid-participant-summary-dto.d.ts +2 -2
- package/dist/models/bid-participant-summary-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-published-response-dto.d.ts +2 -2
- package/dist/models/bid-published-response-dto.js +2 -2
- package/dist/models/bid-registered-response-dto.d.ts +2 -2
- package/dist/models/bid-registered-response-dto.js +2 -2
- package/dist/models/bid-result-participant-attachment-dto.d.ts +2 -2
- package/dist/models/bid-result-participant-attachment-dto.js +2 -2
- package/dist/models/bid-result-participant-dto.d.ts +2 -2
- package/dist/models/bid-result-participant-dto.js +2 -2
- package/dist/models/bid-result-v1-attachment-dto.d.ts +2 -2
- package/dist/models/bid-result-v1-attachment-dto.js +2 -2
- package/dist/models/bid-result-v1-bid-product-info-dto.d.ts +2 -2
- package/dist/models/bid-result-v1-bid-product-info-dto.js +2 -2
- package/dist/models/bid-result-v1-participant-dto.d.ts +2 -2
- package/dist/models/bid-result-v1-participant-dto.js +2 -2
- package/dist/models/bid-result-v1-product-dto.d.ts +2 -2
- package/dist/models/bid-result-v1-product-dto.js +2 -2
- package/dist/models/bid-results-batch-request-dto.d.ts +17 -0
- package/dist/models/bid-results-batch-request-dto.js +15 -0
- package/dist/models/bid-results-batch-v1-request-dto.d.ts +2 -2
- package/dist/models/bid-results-batch-v1-request-dto.js +2 -2
- package/dist/models/bid-results-response-dto.d.ts +2 -2
- package/dist/models/bid-results-response-dto.js +2 -2
- package/dist/models/bid-results-v1-response-dto.d.ts +2 -2
- package/dist/models/bid-results-v1-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-statement-v1-response-dto.d.ts +2 -2
- package/dist/models/bid-statement-v1-response-dto.js +2 -2
- package/dist/models/bid-status.d.ts +2 -2
- package/dist/models/bid-status.js +2 -2
- package/dist/models/bid-summary-dto.d.ts +2 -2
- package/dist/models/bid-summary-dto.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 +17 -0
- package/dist/models/cancel-bid-request-dto.js +15 -0
- package/dist/models/cancel-bid200-response.d.ts +21 -0
- package/dist/models/cancel-bid200-response.js +15 -0
- 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 +2 -2
- package/dist/models/complete-acceptance-request-dto.js +2 -2
- package/dist/models/complete-acceptance-v1-request-dto.d.ts +2 -2
- package/dist/models/complete-acceptance-v1-request-dto.js +2 -2
- package/dist/models/complete-acceptance200-response.d.ts +21 -0
- package/dist/models/complete-acceptance200-response.js +15 -0
- package/dist/models/complete-invoice200-response.d.ts +21 -0
- package/dist/models/complete-invoice200-response.js +15 -0
- package/dist/models/contract-document-item-dto.d.ts +2 -2
- package/dist/models/contract-document-item-dto.js +2 -2
- package/dist/models/contract-documents-regenerated-response-dto.d.ts +2 -2
- package/dist/models/contract-documents-regenerated-response-dto.js +2 -2
- package/dist/models/contract-restriction-confirm-input-dto.d.ts +2 -2
- package/dist/models/contract-restriction-confirm-input-dto.js +2 -2
- package/dist/models/create-bid-request-dto.d.ts +2 -2
- package/dist/models/create-bid-request-dto.js +2 -2
- package/dist/models/create-bid-v1-request-dto.d.ts +2 -2
- package/dist/models/create-bid-v1-request-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 +21 -0
- package/dist/models/create-card-payment200-response.js +15 -0
- package/dist/models/create-external-contract-documents-request-dto.d.ts +2 -2
- 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-webhook-endpoint-request-dto.d.ts +22 -0
- package/dist/models/create-webhook-endpoint-request-dto.js +15 -0
- package/dist/models/create-webhook-endpoint201-response.d.ts +21 -0
- package/dist/models/create-webhook-endpoint201-response.js +15 -0
- package/dist/models/external-contract-document-item-dto.d.ts +2 -2
- 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 +2 -2
- 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 +33 -0
- package/dist/models/file-meta-response-dto.js +15 -0
- package/dist/models/file-uploaded-response-dto.d.ts +2 -2
- package/dist/models/file-uploaded-response-dto.js +2 -2
- package/dist/models/file-uploaded-v1-response-dto.d.ts +2 -2
- package/dist/models/file-uploaded-v1-response-dto.js +2 -2
- package/dist/models/generated-external-contract-document-dto.d.ts +2 -2
- package/dist/models/generated-external-contract-document-dto.js +2 -2
- package/dist/models/get-bid-acceptance200-response.d.ts +21 -0
- package/dist/models/get-bid-acceptance200-response.js +15 -0
- package/dist/models/get-bid-results200-response.d.ts +21 -0
- package/dist/models/get-bid-results200-response.js +15 -0
- package/dist/models/get-bid-settlement200-response.d.ts +21 -0
- package/dist/models/get-bid-settlement200-response.js +15 -0
- package/dist/models/get-bid-statement200-response.d.ts +21 -0
- package/dist/models/get-bid-statement200-response.js +15 -0
- package/dist/models/get-bid200-response.d.ts +21 -0
- package/dist/models/get-bid200-response.js +15 -0
- package/dist/models/get-file-meta200-response.d.ts +21 -0
- package/dist/models/get-file-meta200-response.js +15 -0
- package/dist/models/get-supplier-card-payable-v2200-response.d.ts +21 -0
- package/dist/models/get-supplier-card-payable-v2200-response.js +15 -0
- package/dist/models/get-webhook-endpoint200-response.d.ts +21 -0
- package/dist/models/get-webhook-endpoint200-response.js +15 -0
- package/dist/models/health-controller-check200-response.d.ts +21 -0
- package/dist/models/health-controller-check200-response.js +15 -0
- 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/hierarchical-region-v1-dto.d.ts +2 -2
- package/dist/models/hierarchical-region-v1-dto.js +2 -2
- package/dist/models/index.d.ts +54 -8
- package/dist/models/index.js +54 -8
- package/dist/models/introspect-request-dto.d.ts +46 -0
- package/dist/models/introspect-request-dto.js +23 -0
- package/dist/models/introspection-response-dto.d.ts +45 -0
- package/dist/models/introspection-response-dto.js +15 -0
- 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/list-bid-contract-documents200-response.d.ts +21 -0
- package/dist/models/list-bid-contract-documents200-response.js +15 -0
- package/dist/models/list-bid-participants200-response.d.ts +21 -0
- package/dist/models/list-bid-participants200-response.js +15 -0
- package/dist/models/list-bid-results200-response.d.ts +21 -0
- package/dist/models/list-bid-results200-response.js +15 -0
- package/dist/models/list-bids-response-dto.d.ts +2 -2
- package/dist/models/list-bids-response-dto.js +2 -2
- package/dist/models/list-bids200-response.d.ts +21 -0
- package/dist/models/list-bids200-response.js +15 -0
- package/dist/models/list-products200-response.d.ts +21 -0
- package/dist/models/list-products200-response.js +15 -0
- package/dist/models/list-webhook-deliveries-response-dto.d.ts +22 -0
- package/dist/models/list-webhook-deliveries-response-dto.js +15 -0
- package/dist/models/list-webhook-deliveries200-response.d.ts +21 -0
- package/dist/models/list-webhook-deliveries200-response.js +15 -0
- package/dist/models/list-webhook-endpoints200-response.d.ts +21 -0
- package/dist/models/list-webhook-endpoints200-response.js +15 -0
- 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-failed-v1-request-dto.d.ts +2 -2
- package/dist/models/mark-bid-failed-v1-request-dto.js +2 -2
- package/dist/models/mark-bid-failed201-response.d.ts +21 -0
- package/dist/models/mark-bid-failed201-response.js +15 -0
- package/dist/models/negotiation-score-v1-dto.d.ts +2 -2
- package/dist/models/negotiation-score-v1-dto.js +2 -2
- package/dist/models/negotiation-scored-response-dto.d.ts +2 -2
- package/dist/models/negotiation-scored-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/partner-webhook-delivery-status.d.ts +18 -0
- package/dist/models/partner-webhook-delivery-status.js +22 -0
- package/dist/models/partner-webhook-endpoint-status.d.ts +19 -0
- package/dist/models/partner-webhook-endpoint-status.js +23 -0
- package/dist/models/partner-webhook-event-type.d.ts +22 -0
- package/dist/models/partner-webhook-event-type.js +26 -0
- package/dist/models/preconditions-dto.d.ts +2 -2
- package/dist/models/preconditions-dto.js +2 -2
- package/dist/models/preconditions-v1-dto.d.ts +2 -2
- package/dist/models/preconditions-v1-dto.js +2 -2
- package/dist/models/problem-details-dto.d.ts +7 -3
- package/dist/models/problem-details-dto.js +2 -2
- package/dist/models/product-receipt-response-dto.d.ts +17 -0
- package/dist/models/product-receipt-response-dto.js +15 -0
- package/dist/models/product-receipt-v1-response-dto.d.ts +2 -2
- package/dist/models/product-receipt-v1-response-dto.js +2 -2
- package/dist/models/product-response-dto.d.ts +77 -0
- package/dist/models/product-response-dto.js +15 -0
- package/dist/models/product-v1-response-dto.d.ts +2 -2
- package/dist/models/product-v1-response-dto.js +2 -2
- package/dist/models/protected-resource-metadata-dto.d.ts +2 -2
- package/dist/models/protected-resource-metadata-dto.js +2 -2
- package/dist/models/publish-bid200-response.d.ts +21 -0
- package/dist/models/publish-bid200-response.js +15 -0
- package/dist/models/regenerate-contract-documents201-response.d.ts +21 -0
- package/dist/models/regenerate-contract-documents201-response.js +15 -0
- package/dist/models/register-award-request-dto.d.ts +2 -2
- package/dist/models/register-award-request-dto.js +2 -2
- package/dist/models/register-award-v1-request-dto.d.ts +2 -2
- package/dist/models/register-award-v1-request-dto.js +2 -2
- package/dist/models/register-award201-response.d.ts +21 -0
- package/dist/models/register-award201-response.js +15 -0
- package/dist/models/register-bid201-response.d.ts +21 -0
- package/dist/models/register-bid201-response.js +15 -0
- package/dist/models/register-semo-contract-request-dto.d.ts +2 -2
- package/dist/models/register-semo-contract-request-dto.js +2 -2
- package/dist/models/request-split-invoice-v1-request-dto.d.ts +2 -2
- package/dist/models/request-split-invoice-v1-request-dto.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 +17 -0
- package/dist/models/revert-award-request-dto.js +15 -0
- package/dist/models/revert-award200-response.d.ts +21 -0
- package/dist/models/revert-award200-response.js +15 -0
- package/dist/models/revoke-request-dto.d.ts +2 -2
- package/dist/models/revoke-request-dto.js +2 -2
- package/dist/models/semo-contract-registered-response-dto.d.ts +2 -2
- 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 +21 -0
- package/dist/models/send-webhook-test-event200-response.js +15 -0
- package/dist/models/split-invoice-v1-response-dto.d.ts +2 -2
- package/dist/models/split-invoice-v1-response-dto.js +2 -2
- package/dist/models/statement-document-dto.d.ts +2 -2
- 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/statement-v1-document-dto.d.ts +2 -2
- package/dist/models/statement-v1-document-dto.js +2 -2
- package/dist/models/statement-v1-product-dto.d.ts +2 -2
- package/dist/models/statement-v1-product-dto.js +2 -2
- package/dist/models/submit-negotiation-scores-v1-request-dto.d.ts +2 -2
- package/dist/models/submit-negotiation-scores-v1-request-dto.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 +2 -2
- package/dist/models/token-request-dto.js +2 -2
- package/dist/models/token-response-dto.d.ts +2 -2
- package/dist/models/token-response-dto.js +2 -2
- package/dist/models/update-bid-request-dto.d.ts +2 -2
- package/dist/models/update-bid-request-dto.js +2 -2
- package/dist/models/update-bid200-response.d.ts +21 -0
- package/dist/models/update-bid200-response.js +15 -0
- package/dist/models/update-webhook-endpoint-request-dto.d.ts +27 -0
- package/dist/models/update-webhook-endpoint-request-dto.js +15 -0
- package/dist/models/upload-file-request-dto.d.ts +2 -2
- package/dist/models/upload-file-request-dto.js +2 -2
- package/dist/models/upload-file-v1-request-dto.d.ts +2 -2
- package/dist/models/upload-file-v1-request-dto.js +2 -2
- package/dist/models/upload-file201-response.d.ts +21 -0
- package/dist/models/upload-file201-response.js +15 -0
- package/dist/models/webhook-delivery-dto.d.ts +73 -0
- package/dist/models/webhook-delivery-dto.js +24 -0
- package/dist/models/webhook-endpoint-dto.d.ts +55 -0
- package/dist/models/webhook-endpoint-dto.js +15 -0
- package/dist/models/webhook-endpoint-with-secret-dto.d.ts +59 -0
- package/dist/models/webhook-endpoint-with-secret-dto.js +15 -0
- package/dist/models/webhook-test-result-dto.d.ts +25 -0
- package/dist/models/webhook-test-result-dto.js +15 -0
- package/docs/AcceptanceStatusResponseDto.md +28 -0
- package/docs/AcknowledgeProductReceipt200Response.md +22 -0
- package/docs/AcknowledgeProductsRequestDto.md +20 -0
- package/docs/AuthorizationServerMetadataDto.md +2 -0
- package/docs/AwardRevertedV2ResponseDto.md +22 -0
- package/docs/BidCancelledResponseDto.md +22 -0
- package/docs/BidContractDocumentDto.md +38 -0
- package/docs/{IssueTaxInvoiceRequestDto.md → BidResultsBatchRequestDto.md} +5 -5
- package/docs/CancelBid200Response.md +22 -0
- package/docs/CancelBidRequestDto.md +20 -0
- package/docs/CompleteAcceptance200Response.md +22 -0
- package/docs/CompleteInvoice200Response.md +22 -0
- package/docs/CreateCardPayment200Response.md +22 -0
- package/docs/CreateWebhookEndpoint201Response.md +22 -0
- package/docs/CreateWebhookEndpointRequestDto.md +22 -0
- package/docs/FileMetaResponseDto.md +28 -0
- package/docs/GetBid200Response.md +22 -0
- package/docs/GetBidAcceptance200Response.md +22 -0
- package/docs/GetBidResults200Response.md +22 -0
- package/docs/GetBidSettlement200Response.md +22 -0
- package/docs/GetBidStatement200Response.md +22 -0
- package/docs/GetFileMeta200Response.md +22 -0
- package/docs/GetSupplierCardPayableV2200Response.md +22 -0
- package/docs/GetWebhookEndpoint200Response.md +22 -0
- package/docs/HealthControllerCheck200Response.md +22 -0
- package/docs/IntrospectRequestDto.md +30 -0
- package/docs/IntrospectionResponseDto.md +34 -0
- package/docs/ListBidContractDocuments200Response.md +22 -0
- package/docs/ListBidParticipants200Response.md +22 -0
- package/docs/ListBidResults200Response.md +22 -0
- package/docs/ListBids200Response.md +22 -0
- package/docs/ListProducts200Response.md +22 -0
- package/docs/ListWebhookDeliveries200Response.md +22 -0
- package/docs/ListWebhookDeliveriesResponseDto.md +22 -0
- package/docs/ListWebhookEndpoints200Response.md +22 -0
- package/docs/MarkBidFailed201Response.md +22 -0
- package/docs/OauthApi.md +54 -0
- package/docs/PartnerV1Api.md +12 -12
- package/docs/PartnerV2Api.md +1233 -228
- package/docs/PartnerWebhookDeliveryStatus.md +14 -0
- package/docs/PartnerWebhookEndpointStatus.md +11 -0
- package/docs/PartnerWebhookEventType.md +17 -0
- package/docs/ProblemDetailsDto.md +3 -1
- package/docs/ProductReceiptResponseDto.md +20 -0
- package/docs/ProductResponseDto.md +50 -0
- package/docs/PublishBid200Response.md +22 -0
- package/docs/RegenerateContractDocuments201Response.md +22 -0
- package/docs/RegisterAward201Response.md +22 -0
- package/docs/RegisterBid201Response.md +22 -0
- package/docs/RevertAward200Response.md +22 -0
- package/docs/RevertAwardRequestDto.md +20 -0
- package/docs/SendWebhookTestEvent200Response.md +22 -0
- package/docs/UpdateBid200Response.md +22 -0
- package/docs/UpdateWebhookEndpointRequestDto.md +24 -0
- package/docs/UploadFile201Response.md +22 -0
- package/docs/WebhookDeliveryDto.md +42 -0
- package/docs/WebhookEndpointDto.md +38 -0
- package/docs/WebhookEndpointWithSecretDto.md +40 -0
- package/docs/WebhookTestResultDto.md +24 -0
- package/index.ts +2 -2
- package/models/acceptance-result-response-dto.ts +2 -2
- package/models/acceptance-result-v1-response-dto.ts +2 -2
- package/models/acceptance-status-response-dto.ts +39 -0
- package/models/acknowledge-product-receipt200-response.ts +27 -0
- package/models/acknowledge-products-request-dto.ts +23 -0
- package/models/acknowledge-products-v1-request-dto.ts +2 -2
- package/models/authorization-server-metadata-dto.ts +6 -2
- package/models/award-method-public.ts +2 -2
- package/models/award-registered-response-dto.ts +2 -2
- package/models/award-registered-v2-response-dto.ts +2 -2
- package/models/award-reverted-v2-response-dto.ts +34 -0
- package/models/bid-attachment-v1-dto.ts +2 -2
- package/models/bid-bond-dto.ts +2 -2
- package/models/bid-bond-v1-dto.ts +2 -2
- package/models/bid-cancelled-response-dto.ts +34 -0
- package/models/bid-contact-dto.ts +2 -2
- package/models/bid-contacts-dto.ts +2 -2
- package/models/bid-contract-document-dto.ts +69 -0
- package/models/bid-contract-documents-batch-v1-request-dto.ts +2 -2
- package/models/bid-contract-documents-v1-response-dto.ts +2 -2
- package/models/bid-created-response-dto.ts +2 -2
- package/models/bid-delivery-terms-dto.ts +2 -2
- package/models/bid-detail-response-dto.ts +2 -2
- package/models/bid-document-dto.ts +2 -2
- package/models/bid-document-v1-dto.ts +2 -2
- package/models/bid-failed-response-dto.ts +2 -2
- package/models/bid-failed-v2-response-dto.ts +2 -2
- package/models/bid-failure-reason.ts +2 -2
- package/models/bid-item-dto.ts +2 -2
- package/models/bid-item-v1-dto.ts +2 -2
- package/models/bid-lifecycle-dto.ts +2 -2
- package/models/bid-manager-dto.ts +2 -2
- package/models/bid-manager-v1-dto.ts +2 -2
- package/models/bid-participant-summary-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-published-response-dto.ts +2 -2
- package/models/bid-registered-response-dto.ts +2 -2
- package/models/bid-result-participant-attachment-dto.ts +2 -2
- package/models/bid-result-participant-dto.ts +2 -2
- package/models/bid-result-v1-attachment-dto.ts +2 -2
- package/models/bid-result-v1-bid-product-info-dto.ts +2 -2
- package/models/bid-result-v1-participant-dto.ts +2 -2
- package/models/bid-result-v1-product-dto.ts +2 -2
- package/models/bid-results-batch-request-dto.ts +23 -0
- package/models/bid-results-batch-v1-request-dto.ts +2 -2
- package/models/bid-results-response-dto.ts +2 -2
- package/models/bid-results-v1-response-dto.ts +2 -2
- 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-statement-v1-response-dto.ts +2 -2
- package/models/bid-status.ts +2 -2
- package/models/bid-summary-dto.ts +2 -2
- package/models/bid-updated-response-dto.ts +2 -2
- package/models/cancel-bid-request-dto.ts +23 -0
- package/models/cancel-bid200-response.ts +27 -0
- package/models/card-payment-request-response-dto.ts +2 -2
- package/models/complete-acceptance-request-dto.ts +2 -2
- package/models/complete-acceptance-v1-request-dto.ts +2 -2
- package/models/complete-acceptance200-response.ts +27 -0
- package/models/complete-invoice200-response.ts +27 -0
- package/models/contract-document-item-dto.ts +2 -2
- package/models/contract-documents-regenerated-response-dto.ts +2 -2
- package/models/contract-restriction-confirm-input-dto.ts +2 -2
- package/models/create-bid-request-dto.ts +2 -2
- package/models/create-bid-v1-request-dto.ts +2 -2
- package/models/create-card-payment-request-dto.ts +2 -2
- package/models/create-card-payment200-response.ts +27 -0
- package/models/create-external-contract-documents-request-dto.ts +2 -2
- package/models/create-external-contract-documents-response-dto.ts +2 -2
- package/models/create-webhook-endpoint-request-dto.ts +30 -0
- package/models/create-webhook-endpoint201-response.ts +27 -0
- package/models/external-contract-document-item-dto.ts +2 -2
- 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 +2 -2
- package/models/external-document-inputs-dto.ts +2 -2
- package/models/file-meta-response-dto.ts +39 -0
- package/models/file-uploaded-response-dto.ts +2 -2
- package/models/file-uploaded-v1-response-dto.ts +2 -2
- package/models/generated-external-contract-document-dto.ts +2 -2
- package/models/get-bid-acceptance200-response.ts +27 -0
- package/models/get-bid-results200-response.ts +27 -0
- package/models/get-bid-settlement200-response.ts +27 -0
- package/models/get-bid-statement200-response.ts +27 -0
- package/models/get-bid200-response.ts +27 -0
- package/models/get-file-meta200-response.ts +27 -0
- package/models/get-supplier-card-payable-v2200-response.ts +27 -0
- package/models/get-webhook-endpoint200-response.ts +27 -0
- package/models/health-controller-check200-response.ts +27 -0
- package/models/health-response-dto.ts +2 -2
- package/models/hierarchical-region-dto.ts +2 -2
- package/models/hierarchical-region-v1-dto.ts +2 -2
- package/models/index.ts +54 -8
- package/models/introspect-request-dto.ts +56 -0
- package/models/introspection-response-dto.ts +51 -0
- package/models/invalid-param-dto.ts +2 -2
- package/models/invoice-completed-response-dto.ts +2 -2
- package/models/list-bid-contract-documents200-response.ts +27 -0
- package/models/list-bid-participants200-response.ts +27 -0
- package/models/list-bid-results200-response.ts +27 -0
- package/models/list-bids-response-dto.ts +2 -2
- package/models/list-bids200-response.ts +27 -0
- package/models/list-products200-response.ts +27 -0
- package/models/list-webhook-deliveries-response-dto.ts +30 -0
- package/models/list-webhook-deliveries200-response.ts +27 -0
- package/models/list-webhook-endpoints200-response.ts +27 -0
- package/models/mark-bid-failed-request-dto.ts +2 -2
- package/models/mark-bid-failed-v1-request-dto.ts +2 -2
- package/models/mark-bid-failed201-response.ts +27 -0
- package/models/negotiation-score-v1-dto.ts +2 -2
- package/models/negotiation-scored-response-dto.ts +2 -2
- package/models/oauth-error-response-dto.ts +2 -2
- package/models/partner-webhook-delivery-status.ts +28 -0
- package/models/partner-webhook-endpoint-status.ts +29 -0
- package/models/partner-webhook-event-type.ts +32 -0
- package/models/preconditions-dto.ts +2 -2
- package/models/preconditions-v1-dto.ts +2 -2
- package/models/problem-details-dto.ts +7 -3
- package/models/product-receipt-response-dto.ts +23 -0
- package/models/product-receipt-v1-response-dto.ts +2 -2
- package/models/product-response-dto.ts +83 -0
- package/models/product-v1-response-dto.ts +2 -2
- package/models/protected-resource-metadata-dto.ts +2 -2
- package/models/publish-bid200-response.ts +27 -0
- package/models/regenerate-contract-documents201-response.ts +27 -0
- package/models/register-award-request-dto.ts +2 -2
- package/models/register-award-v1-request-dto.ts +2 -2
- package/models/register-award201-response.ts +27 -0
- package/models/register-bid201-response.ts +27 -0
- package/models/register-semo-contract-request-dto.ts +2 -2
- package/models/request-split-invoice-v1-request-dto.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 +23 -0
- package/models/revert-award200-response.ts +27 -0
- package/models/revoke-request-dto.ts +2 -2
- package/models/semo-contract-registered-response-dto.ts +2 -2
- package/models/semo-contract-taxinvoice-status-response-dto.ts +2 -2
- package/models/send-webhook-test-event200-response.ts +27 -0
- package/models/split-invoice-v1-response-dto.ts +2 -2
- package/models/statement-document-dto.ts +2 -2
- package/models/statement-product-dto.ts +2 -2
- package/models/statement-v1-document-dto.ts +2 -2
- package/models/statement-v1-product-dto.ts +2 -2
- package/models/submit-negotiation-scores-v1-request-dto.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 +2 -2
- package/models/token-response-dto.ts +2 -2
- package/models/update-bid-request-dto.ts +2 -2
- package/models/update-bid200-response.ts +27 -0
- package/models/update-webhook-endpoint-request-dto.ts +39 -0
- package/models/upload-file-request-dto.ts +2 -2
- package/models/upload-file-v1-request-dto.ts +2 -2
- package/models/upload-file201-response.ts +27 -0
- package/models/webhook-delivery-dto.ts +82 -0
- package/models/webhook-endpoint-dto.ts +67 -0
- package/models/webhook-endpoint-with-secret-dto.ts +71 -0
- package/models/webhook-test-result-dto.ts +31 -0
- package/package.json +1 -1
- package/dist/esm/models/close-sandbox-bid-response-dto.d.ts +0 -34
- package/dist/esm/models/close-sandbox-bid-response-dto.js +0 -21
- package/dist/esm/models/embed-launch-request-dto.d.ts +0 -33
- package/dist/esm/models/embed-launch-request-dto.js +0 -20
- package/dist/esm/models/embed-launch-response-dto.d.ts +0 -21
- package/dist/esm/models/embed-launch-response-dto.js +0 -14
- package/dist/esm/models/issue-tax-invoice-request-dto.d.ts +0 -17
- package/dist/esm/models/issue-tax-invoice-request-dto.js +0 -14
- package/dist/esm/models/negotiation-score-dto.d.ts +0 -25
- package/dist/esm/models/negotiation-score-dto.js +0 -14
- package/dist/esm/models/negotiation-scored-v2-response-dto.d.ts +0 -29
- package/dist/esm/models/negotiation-scored-v2-response-dto.js +0 -16
- package/dist/esm/models/submit-negotiation-scores-request-dto.d.ts +0 -22
- package/dist/esm/models/submit-negotiation-scores-request-dto.js +0 -14
- package/dist/esm/models/tax-invoice-issued-response-dto.d.ts +0 -33
- package/dist/esm/models/tax-invoice-issued-response-dto.js +0 -14
- package/dist/models/close-sandbox-bid-response-dto.d.ts +0 -34
- package/dist/models/close-sandbox-bid-response-dto.js +0 -24
- package/dist/models/embed-launch-request-dto.d.ts +0 -33
- package/dist/models/embed-launch-request-dto.js +0 -23
- package/dist/models/embed-launch-response-dto.d.ts +0 -21
- package/dist/models/embed-launch-response-dto.js +0 -15
- package/dist/models/issue-tax-invoice-request-dto.d.ts +0 -17
- package/dist/models/issue-tax-invoice-request-dto.js +0 -15
- package/dist/models/negotiation-score-dto.d.ts +0 -25
- package/dist/models/negotiation-score-dto.js +0 -15
- package/dist/models/negotiation-scored-v2-response-dto.d.ts +0 -29
- package/dist/models/negotiation-scored-v2-response-dto.js +0 -19
- package/dist/models/submit-negotiation-scores-request-dto.d.ts +0 -22
- package/dist/models/submit-negotiation-scores-request-dto.js +0 -15
- package/dist/models/tax-invoice-issued-response-dto.d.ts +0 -33
- package/dist/models/tax-invoice-issued-response-dto.js +0 -15
- package/docs/CloseSandboxBidResponseDto.md +0 -24
- package/docs/EmbedLaunchRequestDto.md +0 -24
- package/docs/EmbedLaunchResponseDto.md +0 -22
- package/docs/NegotiationScoreDto.md +0 -24
- package/docs/NegotiationScoredV2ResponseDto.md +0 -24
- package/docs/SubmitNegotiationScoresRequestDto.md +0 -22
- package/docs/TaxInvoiceIssuedResponseDto.md +0 -28
- package/models/close-sandbox-bid-response-dto.ts +0 -43
- package/models/embed-launch-request-dto.ts +0 -42
- package/models/embed-launch-response-dto.ts +0 -27
- package/models/issue-tax-invoice-request-dto.ts +0 -23
- package/models/negotiation-score-dto.ts +0 -31
- package/models/negotiation-scored-v2-response-dto.ts +0 -38
- package/models/submit-negotiation-scores-request-dto.ts +0 -30
- package/models/tax-invoice-issued-response-dto.ts +0 -39
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
/* eslint-disable */
|
|
3
3
|
/**
|
|
4
4
|
* CMARKET V6 Partner API
|
|
5
|
-
* 외부 ERP 연동용 RESTful API. ## 버전별 인증 - **_/v2** — OAuth2 Bearer JWT (`client_credentials` 플로우). `/oauth/token` 에서 토큰 발급 후 `Authorization: Bearer <token>` 헤더. - **_/v1** — V5 충실 platform-auth. `X-Platform-Id`(cate_set.api_id) / `X-Platform-Secret`(cate_set.api_secret, MD5-hex) 헤더로 전송. ## 권한 — 두 개의 독립된 축 `403` 을 만났다면 둘 중 어느 축에 걸린 것인지 먼저 구분할 것. - **스코프** = *무엇을 할 수 있나*. 토큰에 부여된 `bids:read`·`contracts:write` 등. 미보유 시 `…/insufficient-scope`. - **대행 범위** = *누구의 데이터를 다룰 수 있나*. API 키 설정이며 스코프로 표현되지 않는다. 범위 밖이면 스코프와 무관하게 403 이다. 대행 범위는 키마다 둘 중 하나로 설정된다 — **소속 그룹 전원**(기관 키. 사업처·부서 계정이 새로 생겨도 자동 포함) 또는 **지정 발주처 목록**(계약으로 합의된 목록). 범위를 넓혀야 하면 스코프가 아니라 키 설정 변경을 요청할 것. ## 에러 (RFC 9457 problem+json) 모든 에러 응답은 `application/problem+json`. 소비자는 **HTTP status + `type` URI** 로 분기한다. - `retryable`(boolean): 자동 재시도 안전 여부. `true`(429·5xx transient)면 backoff 후 재시도, `false`면 요청을 고쳐야 한다. - `
|
|
5
|
+
* 외부 ERP 연동용 RESTful API. ## 버전별 인증 - **_/v2** — OAuth2 Bearer JWT (`client_credentials` 플로우). `/oauth/token` 에서 토큰 발급 후 `Authorization: Bearer <token>` 헤더. - **_/v1** — V5 충실 platform-auth. `X-Platform-Id`(cate_set.api_id) / `X-Platform-Secret`(cate_set.api_secret, MD5-hex) 헤더로 전송. ## 권한 — 두 개의 독립된 축 `403` 을 만났다면 둘 중 어느 축에 걸린 것인지 먼저 구분할 것. - **스코프** = *무엇을 할 수 있나*. 토큰에 부여된 `bids:read`·`contracts:write` 등. 미보유 시 `…/insufficient-scope`. - **대행 범위** = *누구의 데이터를 다룰 수 있나*. API 키 설정이며 스코프로 표현되지 않는다. 범위 밖이면 스코프와 무관하게 403 이다. 대행 범위는 키마다 둘 중 하나로 설정된다 — **소속 그룹 전원**(기관 키. 사업처·부서 계정이 새로 생겨도 자동 포함) 또는 **지정 발주처 목록**(계약으로 합의된 목록). 범위를 넓혀야 하면 스코프가 아니라 키 설정 변경을 요청할 것. ## 성공 응답 봉투 `/v2` 의 모든 2xx 본문은 `{ \"data\": … }` 입니다. 단일 리소스든 목록이든 같습니다. 목록처럼 부가 정보가 있는 응답은 `meta` 가 함께 실립니다 — 예: `{ \"data\": [...], \"meta\": { \"nextCursor\": \"…\" } }`. 부가 정보가 없으면 `meta` 키는 아예 나가지 않습니다(빈 객체를 싣지 않습니다). 봉투를 쓰지 않는 표면은 셋입니다. `/oauth/_*` 와 `/.well-known/_*` 는 각각 RFC 6749·RFC 8414·RFC 9728 이 최상위 필드를 규정하고, `/v1/_*` 은 동결된 레거시 표면이며, 파일 내용 응답은 본문이 JSON 이 아닙니다. 에러 응답에는 봉투를 씌우지 않습니다 — 아래 problem+json 이 단독으로 책임집니다. ## 조건부 요청 (ETag) `/v2` 의 모든 `GET` 응답에 weak `ETag`(`W/\"…\"`)가 실립니다. 받은 값을 다음 요청의 `If-None-Match` 헤더로 되보내면, 내용이 그대로일 때 `304 Not Modified` 를 본문 없이 받습니다. 결과가 나기를 기다리며 같은 자원을 반복 조회하는 연동이라면 이 헤더 하나로 전송량이 사라집니다. 호출 횟수 자체를 줄이려면 웹훅을 사용하세요. ## 에러 (RFC 9457 problem+json) 모든 에러 응답은 `application/problem+json`. 소비자는 **HTTP status + `type` URI** 로 분기한다. - `retryable`(boolean): 자동 재시도 안전 여부. `true`(429·5xx transient)면 backoff 후 재시도, `false`면 요청을 고쳐야 한다. - `traceId`: 요청 추적 id. `X-Correlation-Id` 응답 헤더와 같은 값입니다 — 문의할 때 이 값을 첨부하세요. - `correlationId`: `traceId` 와 같은 값의 옛 이름. 기존 연동 호환으로 함께 실립니다. 새 연동은 `traceId` 를 읽으세요. - `invalid-params`: 검증 실패(400 `…/validation-failed`) 시 위반 필드 경로 목록(RFC 9457 확장, 값 없음). `type` 은 `https://problems.cmarket.io/partner/<slug>` 형태의 **안정 식별자**다. RFC 9457 §3.1.1 이 허용하는 대로 이 URI 는 **역참조(dereference)되지 않는다** — 브라우저로 열지 말고 문자열 비교로만 쓸 것. slug 목록과 의미는 각 엔드포인트의 응답 설명에 status 별로 명시돼 있다. 새 slug 은 추가될 수 있으므로, 모르는 slug 을 만나면 `type` 이 아니라 **HTTP status 로 폴백**하도록 구현할 것. ### 멱등성 위반: 409 와 422 의 차이 - `409` `…/idempotency-key-conflict` — 같은 키의 **원 요청이 아직 처리 중**이다. 잠시 뒤 같은 키로 다시 부르면 그 결과를 받는다. - `422` `…/idempotency-key-reused` — 같은 키를 **다른 body** 로 보냈다. 재시도해도 영원히 같은 실패다. 새 키를 쓰거나 body 를 되돌릴 것. ## 레이트 리밋 전역 **60 요청/분 per `client_id`**, 토큰 발급(`/oauth/token`)은 **5 요청/분**. 초과 시 `429`(`type: …/too-many-requests`). 쿼터는 두 가지 표기로 함께 나간다 — 신규 연동은 표준 필드를 쓸 것. - **표준**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (정책) · `RateLimit: \"default\";r=59;t=42` (잔량 r, 리셋까지 t 초) - **레거시**(관용): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. 기존 연동 호환을 위해 유지한다. `429` 에서는 `Retry-After`(초)가 우선한다. 대량 동기화(품목 단위 반복 등록 등)는 `Retry-After` 만큼 backoff 후 재시도할 것. ## 추적 요청에 `X-Correlation-Id` 헤더를 실으면 그대로 echo 되고, 없으면 서버가 발급한다. 모든 응답(성공/에러)에 `X-Correlation-Id` 가 실린다. ## 버전 수명(deprecation/sunset) - **_/v1** 은 레거시 V5 cutover 완료 시점까지 유지되는 충실 프록시입니다. 폐지 일정이 정해지면 /v1 응답에 헤더 세 개가 실립니다 — `Deprecation`(RFC 9745, `@<epoch초>`) · `Sunset`(RFC 8594, HTTP-date) · `Link`(RFC 8288, `rel=\"deprecation\"`/`rel=\"sunset\"` — 이전 안내 문서를 가리킵니다). 일정이 정해지기 전에는 셋 다 나가지 않습니다. 종료일이 지난 뒤의 호출은 `404` 가 아니라 **`410 Gone`** 과 `type: …/endpoint-sunset` 으로 거절됩니다. 둘의 뜻이 다릅니다 — `404` 는 \"그런 것이 있었는지 모르겠다\", `410` 은 \"있었고 의도적으로 없앴다\" 입니다. `410` 을 받으면 경로 오타를 의심하지 말고 /v2 로 이전하세요. - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` 헤더로 통지한다. 소비자는 이 헤더를 모니터링할 것.
|
|
6
6
|
*
|
|
7
|
-
* The version of the OpenAPI document:
|
|
7
|
+
* The version of the OpenAPI document: 31.1.0
|
|
8
8
|
* Contact: semo.io.kr@gmail.com
|
|
9
9
|
*
|
|
10
10
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
@@ -32,16 +32,62 @@ import { BASE_PATH, BaseAPI, operationServerMap } from '../base';
|
|
|
32
32
|
export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
33
33
|
return {
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
36
|
-
* @summary
|
|
37
|
-
* @param {string}
|
|
35
|
+
* 저장을 마친 물품을 전송완료로 표시해 다음 조회에서 제외합니다. **되돌릴 수 없습니다.** 표시한 물품은 `GET /v2/products` 로 다시 내려오지 않으므로, 자기 시스템에 저장이 끝난 뒤에 호출하세요. **표시 범위는 기관 그룹으로 잠깁니다.** 다른 기관의 물품 코드를 섞어 보내면 그 건은 표시되지 않고 `acknowledged` 가 요청 수보다 작게 돌아옵니다. **필수 스코프:** `products:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
36
|
+
* @summary 물품 수신확인
|
|
37
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
38
|
+
* @param {AcknowledgeProductsRequestDto} acknowledgeProductsRequestDto
|
|
39
|
+
* @param {*} [options] Override http request option.
|
|
40
|
+
* @throws {RequiredError}
|
|
41
|
+
*/
|
|
42
|
+
acknowledgeProductReceipt: (idempotencyKey_1, acknowledgeProductsRequestDto_1, ...args_1) => __awaiter(this, [idempotencyKey_1, acknowledgeProductsRequestDto_1, ...args_1], void 0, function* (idempotencyKey, acknowledgeProductsRequestDto, options = {}) {
|
|
43
|
+
// verify required parameter 'idempotencyKey' is not null or undefined
|
|
44
|
+
assertParamExists('acknowledgeProductReceipt', 'idempotencyKey', idempotencyKey);
|
|
45
|
+
// verify required parameter 'acknowledgeProductsRequestDto' is not null or undefined
|
|
46
|
+
assertParamExists('acknowledgeProductReceipt', 'acknowledgeProductsRequestDto', acknowledgeProductsRequestDto);
|
|
47
|
+
const localVarPath = `/v2/products/receipts`;
|
|
48
|
+
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
49
|
+
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
50
|
+
let baseOptions;
|
|
51
|
+
if (configuration) {
|
|
52
|
+
baseOptions = configuration.baseOptions;
|
|
53
|
+
}
|
|
54
|
+
const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
|
|
55
|
+
const localVarHeaderParameter = {};
|
|
56
|
+
const localVarQueryParameter = {};
|
|
57
|
+
// authentication partner-oauth2 required
|
|
58
|
+
// http bearer authentication required
|
|
59
|
+
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
60
|
+
localVarHeaderParameter['Content-Type'] = 'application/json';
|
|
61
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
62
|
+
if (idempotencyKey != null) {
|
|
63
|
+
localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
|
|
64
|
+
}
|
|
65
|
+
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
66
|
+
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
67
|
+
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
68
|
+
localVarRequestOptions.data = serializeDataIfNeeded(acknowledgeProductsRequestDto, localVarRequestOptions, configuration);
|
|
69
|
+
return {
|
|
70
|
+
url: toPathString(localVarUrlObj),
|
|
71
|
+
options: localVarRequestOptions,
|
|
72
|
+
};
|
|
73
|
+
}),
|
|
74
|
+
/**
|
|
75
|
+
* 진행중인 공고를 취소합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. **되돌릴 수 없습니다.** 취소 사유는 필수이며 공고 이력에 남습니다. **전제조건:** 진행중(ONGOING) 상태여야 합니다. **거부:** 진행중이 아니거나 이미 취소된 공고 → 409. 타 발주처 공고 → 403. **마감과의 차이:** 취소는 공고를 무효로 되돌리는 것이고, 유찰(`POST /v2/bids/{bidId}/fail`)은 응찰을 받았으나 낙찰자를 정하지 못한 종료입니다.
|
|
76
|
+
* @summary 공고 취소
|
|
77
|
+
* @param {string} bidId 공고 식별자(등록 응답의 bidId).
|
|
78
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
|
|
79
|
+
* @param {CancelBidRequestDto} cancelBidRequestDto
|
|
38
80
|
* @param {*} [options] Override http request option.
|
|
39
81
|
* @throws {RequiredError}
|
|
40
82
|
*/
|
|
41
|
-
|
|
83
|
+
cancelBid: (bidId_1, idempotencyKey_1, cancelBidRequestDto_1, ...args_1) => __awaiter(this, [bidId_1, idempotencyKey_1, cancelBidRequestDto_1, ...args_1], void 0, function* (bidId, idempotencyKey, cancelBidRequestDto, options = {}) {
|
|
42
84
|
// verify required parameter 'bidId' is not null or undefined
|
|
43
|
-
assertParamExists('
|
|
44
|
-
|
|
85
|
+
assertParamExists('cancelBid', 'bidId', bidId);
|
|
86
|
+
// verify required parameter 'idempotencyKey' is not null or undefined
|
|
87
|
+
assertParamExists('cancelBid', 'idempotencyKey', idempotencyKey);
|
|
88
|
+
// verify required parameter 'cancelBidRequestDto' is not null or undefined
|
|
89
|
+
assertParamExists('cancelBid', 'cancelBidRequestDto', cancelBidRequestDto);
|
|
90
|
+
const localVarPath = `/v2/bids/{bidId}/cancel`
|
|
45
91
|
.replace('{bidId}', encodeURIComponent(String(bidId)));
|
|
46
92
|
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
47
93
|
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
@@ -55,10 +101,15 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
55
101
|
// authentication partner-oauth2 required
|
|
56
102
|
// http bearer authentication required
|
|
57
103
|
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
58
|
-
localVarHeaderParameter['
|
|
104
|
+
localVarHeaderParameter['Content-Type'] = 'application/json';
|
|
105
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
106
|
+
if (idempotencyKey != null) {
|
|
107
|
+
localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
|
|
108
|
+
}
|
|
59
109
|
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
60
110
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
61
111
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
112
|
+
localVarRequestOptions.data = serializeDataIfNeeded(cancelBidRequestDto, localVarRequestOptions, configuration);
|
|
62
113
|
return {
|
|
63
114
|
url: toPathString(localVarUrlObj),
|
|
64
115
|
options: localVarRequestOptions,
|
|
@@ -95,7 +146,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
95
146
|
// http bearer authentication required
|
|
96
147
|
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
97
148
|
localVarHeaderParameter['Content-Type'] = 'application/json';
|
|
98
|
-
localVarHeaderParameter['Accept'] = 'application/json';
|
|
149
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
99
150
|
if (idempotencyKey != null) {
|
|
100
151
|
localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
|
|
101
152
|
}
|
|
@@ -135,7 +186,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
135
186
|
// authentication partner-oauth2 required
|
|
136
187
|
// http bearer authentication required
|
|
137
188
|
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
138
|
-
localVarHeaderParameter['Accept'] = 'application/json';
|
|
189
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
139
190
|
if (idempotencyKey != null) {
|
|
140
191
|
localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
|
|
141
192
|
}
|
|
@@ -148,19 +199,19 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
148
199
|
};
|
|
149
200
|
}),
|
|
150
201
|
/**
|
|
151
|
-
* 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동
|
|
202
|
+
* 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인되어 바로 결제할 수 있습니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 도메인 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
|
|
152
203
|
* @summary 결제창 발행
|
|
153
204
|
* @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
|
|
154
205
|
* @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
|
|
155
206
|
* @param {*} [options] Override http request option.
|
|
156
207
|
* @throws {RequiredError}
|
|
157
208
|
*/
|
|
158
|
-
|
|
209
|
+
createCardPayment: (idempotencyKey_1, createCardPaymentRequestDto_1, ...args_1) => __awaiter(this, [idempotencyKey_1, createCardPaymentRequestDto_1, ...args_1], void 0, function* (idempotencyKey, createCardPaymentRequestDto, options = {}) {
|
|
159
210
|
// verify required parameter 'idempotencyKey' is not null or undefined
|
|
160
|
-
assertParamExists('
|
|
211
|
+
assertParamExists('createCardPayment', 'idempotencyKey', idempotencyKey);
|
|
161
212
|
// verify required parameter 'createCardPaymentRequestDto' is not null or undefined
|
|
162
|
-
assertParamExists('
|
|
163
|
-
const localVarPath = `/v2/card-
|
|
213
|
+
assertParamExists('createCardPayment', 'createCardPaymentRequestDto', createCardPaymentRequestDto);
|
|
214
|
+
const localVarPath = `/v2/card-payments`;
|
|
164
215
|
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
165
216
|
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
166
217
|
let baseOptions;
|
|
@@ -174,7 +225,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
174
225
|
// http bearer authentication required
|
|
175
226
|
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
176
227
|
localVarHeaderParameter['Content-Type'] = 'application/json';
|
|
177
|
-
localVarHeaderParameter['Accept'] = 'application/json';
|
|
228
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
178
229
|
if (idempotencyKey != null) {
|
|
179
230
|
localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
|
|
180
231
|
}
|
|
@@ -188,16 +239,19 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
188
239
|
};
|
|
189
240
|
}),
|
|
190
241
|
/**
|
|
191
|
-
*
|
|
192
|
-
* @summary
|
|
193
|
-
* @param {
|
|
242
|
+
* 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인(APPROVED)되어 바로 결제 가능합니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. 거기서 카드를 골라 결제합니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/card-payment-requests/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요. --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
|
|
243
|
+
* @summary 결제창 발행
|
|
244
|
+
* @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
|
|
245
|
+
* @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
|
|
194
246
|
* @param {*} [options] Override http request option.
|
|
195
247
|
* @throws {RequiredError}
|
|
196
248
|
*/
|
|
197
|
-
|
|
198
|
-
// verify required parameter '
|
|
199
|
-
assertParamExists('
|
|
200
|
-
|
|
249
|
+
createCardPaymentRequest: (idempotencyKey_1, createCardPaymentRequestDto_1, ...args_1) => __awaiter(this, [idempotencyKey_1, createCardPaymentRequestDto_1, ...args_1], void 0, function* (idempotencyKey, createCardPaymentRequestDto, options = {}) {
|
|
250
|
+
// verify required parameter 'idempotencyKey' is not null or undefined
|
|
251
|
+
assertParamExists('createCardPaymentRequest', 'idempotencyKey', idempotencyKey);
|
|
252
|
+
// verify required parameter 'createCardPaymentRequestDto' is not null or undefined
|
|
253
|
+
assertParamExists('createCardPaymentRequest', 'createCardPaymentRequestDto', createCardPaymentRequestDto);
|
|
254
|
+
const localVarPath = `/v2/card-payment-requests`;
|
|
201
255
|
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
202
256
|
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
203
257
|
let baseOptions;
|
|
@@ -211,18 +265,21 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
211
265
|
// http bearer authentication required
|
|
212
266
|
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
213
267
|
localVarHeaderParameter['Content-Type'] = 'application/json';
|
|
214
|
-
localVarHeaderParameter['Accept'] = 'application/json';
|
|
268
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
269
|
+
if (idempotencyKey != null) {
|
|
270
|
+
localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
|
|
271
|
+
}
|
|
215
272
|
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
216
273
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
217
274
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
218
|
-
localVarRequestOptions.data = serializeDataIfNeeded(
|
|
275
|
+
localVarRequestOptions.data = serializeDataIfNeeded(createCardPaymentRequestDto, localVarRequestOptions, configuration);
|
|
219
276
|
return {
|
|
220
277
|
url: toPathString(localVarUrlObj),
|
|
221
278
|
options: localVarRequestOptions,
|
|
222
279
|
};
|
|
223
280
|
}),
|
|
224
281
|
/**
|
|
225
|
-
* 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `paperCodes` 와 같은 순서로 같은 개수가 돌아옵니다.** 각 항목의 `fileUrl` 을 그대로 쓰면 되고, `paperCode` 로 어느 요청에 대한 결과인지 대응시킬 수 있습니다. **`name` 의 출처는 서류에 따라 다릅니다.** 시스템이 렌더한 서류는 계약서류명이고, 공급사 사전등록 3종(11·12·13)은 **공급사가 등록한 원본 파일명**입니다 — 채팅 첨부 라벨로 그대로 쓰세요. **필요한 입력:** 발주기관·공급사는 회원 ID 만 주면 됩니다. 상호·사업자번호·대표자·주소·직인은 c-market 이 회원 정보에서 직접 채웁니다. **전부 성공 또는 전부 실패입니다.** 지원하지 않는 서류가 하나라도 섞이면(400) 아무것도 만들지 않습니다. 렌더가 필요한 서류를 요청하면서 `contract` 를 빠뜨려도 마찬가지입니다(422). **135(수의계약체결제한여부확인서)를 요청하면 추가 입력이 필요합니다.** `contract.subject`(발주내용)·`contract.category`(계약구분)·`contract.buyerDepartment`(발주부서)가 필수이고, `documentInputs.contractRestrictionConfirm.answers`에 서식 ①~⑧에 대한 **계약상대자**의 답변 8개를 순서대로 담아야 합니다(c-market 이 대신 만들어낼 수 없는 값입니다). ⑨(발주자 확인사항)는 `documentInputs.contractRestrictionConfirm.buyerConfirmation`으로 선택 전달하며, 생략하면 서식에 빈칸으로 인쇄됩니다. 문항 ①~⑧의 원문은 `answers` 필드 설명을 참고하세요. **164(퇴직자영입현황확인서)를 요청하면 퇴직자 명단이 필요합니다.** `contract.subject`(서식의 \"수의계약 대상건명\")가 필수이고, `documentInputs.retireeRoster.rows` 에 명단을 넣습니다(성명·직급 필수, 직급·입사일·근무기간·비고 선택, 최대 50행). **퇴직자가 없으면 `rows` 를 빈 배열로 보내세요** — 서식에 \"해당사항 없음\"으로 인쇄됩니다. 블록 자체를 생략하면 422 입니다(\"퇴직자 없음\"과 \"확인하지 않음\"을 구분할 수 없기 때문입니다). **승낙사항(4·184·185·186·189·197·208)을 요청하면 `contract.subject`(계약건명)가 필수입니다.** 서식 상단 \"건명\" 칸에 인쇄되는 값이라 비면 어느 계약의 승낙인지 알 수 없습니다. 그 외 추가 입력은 없습니다 — 갑(발주기관) 서명란은 `buyerId` 로, 을(공급사) 서명란은 `supplierId` 로 c-market 이 채웁니다. 발주기관이 기관 전용 승낙사항 서식을 쓰면 요청한 코드 그대로 응답하되 PDF 는 그 기관 서식으로 발급됩니다. **응답의 `fileUrl` 은 만료되지 않습니다.** 채팅 메시지 등에 그대로 저장해 두어도 됩니다. **생성 가능한 회원 범위:** 조회와 같습니다 — 이 API 키에 설정된 대행 범위 안의 회원만 가능합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
282
|
+
* 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `paperCodes` 와 같은 순서로 같은 개수가 돌아옵니다.** 각 항목의 `fileUrl` 을 그대로 쓰면 되고, `paperCode` 로 어느 요청에 대한 결과인지 대응시킬 수 있습니다. **`name` 의 출처는 서류에 따라 다릅니다.** 시스템이 렌더한 서류는 계약서류명이고, 공급사 사전등록 3종(11·12·13)은 **공급사가 등록한 원본 파일명**입니다 — 채팅 첨부 라벨로 그대로 쓰세요. **필요한 입력:** 발주기관·공급사는 회원 ID 만 주면 됩니다. 상호·사업자번호·대표자·주소·직인은 c-market 이 회원 정보에서 직접 채웁니다. **전부 성공 또는 전부 실패입니다.** 지원하지 않는 서류가 하나라도 섞이면(400) 아무것도 만들지 않습니다. 렌더가 필요한 서류를 요청하면서 `contract` 를 빠뜨려도 마찬가지입니다(422). **135(수의계약체결제한여부확인서)를 요청하면 추가 입력이 필요합니다.** `contract.subject`(발주내용)·`contract.category`(계약구분)·`contract.buyerDepartment`(발주부서)가 필수이고, `documentInputs.contractRestrictionConfirm.answers`에 서식 ①~⑧에 대한 **계약상대자**의 답변 8개를 순서대로 담아야 합니다(c-market 이 대신 만들어낼 수 없는 값입니다). ⑨(발주자 확인사항)는 `documentInputs.contractRestrictionConfirm.buyerConfirmation`으로 선택 전달하며, 생략하면 서식에 빈칸으로 인쇄됩니다. 문항 ①~⑧의 원문은 `answers` 필드 설명을 참고하세요. **164(퇴직자영입현황확인서)를 요청하면 퇴직자 명단이 필요합니다.** `contract.subject`(서식의 \"수의계약 대상건명\")가 필수이고, `documentInputs.retireeRoster.rows` 에 명단을 넣습니다(성명·직급 필수, 직급·입사일·근무기간·비고 선택, 최대 50행). **퇴직자가 없으면 `rows` 를 빈 배열로 보내세요** — 서식에 \"해당사항 없음\"으로 인쇄됩니다. 블록 자체를 생략하면 422 입니다(\"퇴직자 없음\"과 \"확인하지 않음\"을 구분할 수 없기 때문입니다). **승낙사항(4·184·185·186·189·197·208)을 요청하면 `contract.subject`(계약건명)가 필수입니다.** 서식 상단 \"건명\" 칸에 인쇄되는 값이라 비면 어느 계약의 승낙인지 알 수 없습니다. 그 외 추가 입력은 없습니다 — 갑(발주기관) 서명란은 `buyerId` 로, 을(공급사) 서명란은 `supplierId` 로 c-market 이 채웁니다. 발주기관이 기관 전용 승낙사항 서식을 쓰면 요청한 코드 그대로 응답하되 PDF 는 그 기관 서식으로 발급됩니다. **응답의 `fileUrl` 은 만료되지 않습니다.** 채팅 메시지 등에 그대로 저장해 두어도 됩니다. **생성 가능한 회원 범위:** 조회와 같습니다 — 이 API 키에 설정된 대행 범위 안의 회원만 가능합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수. --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidId}/contract-documents` 가 v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
|
|
226
283
|
* @summary 계약서류 생성
|
|
227
284
|
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
228
285
|
* @param {CreateExternalContractDocumentsRequestDto} createExternalContractDocumentsRequestDto
|
|
@@ -248,7 +305,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
248
305
|
// http bearer authentication required
|
|
249
306
|
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
250
307
|
localVarHeaderParameter['Content-Type'] = 'application/json';
|
|
251
|
-
localVarHeaderParameter['Accept'] = 'application/json';
|
|
308
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
252
309
|
if (idempotencyKey != null) {
|
|
253
310
|
localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
|
|
254
311
|
}
|
|
@@ -262,7 +319,98 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
262
319
|
};
|
|
263
320
|
}),
|
|
264
321
|
/**
|
|
265
|
-
*
|
|
322
|
+
* 수신 주소와 구독할 이벤트를 등록합니다. **호출 시점:** 연동 초기 1회. 수신 주소가 바뀌면 새로 만들지 말고 `PATCH` 로 고치세요 — 그래야 시크릿과 전송 이력이 유지됩니다. **서명 시크릿은 이 응답에서 한 번만 나갑니다.** 서버는 해시만 보관하므로 조회로 다시 받을 수 없습니다. 응답의 `secret` 을 즉시 안전한 곳에 보관하세요. 잃어버렸다면 복구가 아니라 `POST /v2/webhook-endpoints/{endpointId}/rotate-secret` 으로 **재발급**해야 합니다. **거절되는 경우와 고치는 법:** - `400` — `url` 이 HTTPS 가 아니거나 형식이 잘못됨, `eventTypes` 가 비었거나 목록 밖 값 (`ping` 은 구독 불가). 값을 고쳐 재시도하세요. - `400` — `Idempotency-Key` 헤더 누락/형식 오류. UUID v4 를 실어 보내세요. - `403` — 토큰에 `webhooks:write` 스코프가 없음. 키 발급 설정을 넓혀야 합니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. ### 서명 검증 (필수) 발송 요청마다 헤더 `X-CMarket-Signature` 가 실립니다. ``` X-CMarket-Signature: t=<unix초>,v1=<hex> ``` `v1` 은 `HMAC-SHA256(secret, \"${t}.${요청 본문 원문}\")` 의 소문자 hex 입니다. 1. 헤더를 `t` 와 `v1` 로 나눕니다. 2. `\"${t}.${본문}\"` 을 만듭니다. **본문은 파싱 전 원문 바이트**여야 합니다 — JSON 을 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. 등록 시 받은 시크릿으로 HMAC-SHA256 을 계산해 `v1` 과 비교합니다. 비교는 **상수 시간** 비교 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `t` 가 현재 시각으로부터 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). ### 중복 제거 `X-CMarket-Event-Id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. ### 응답과 재시도 2xx 를 돌려주면 성공입니다. 그 외(또는 무응답)는 실패로 보고 최대 7회 재시도합니다 — 간격은 10초 → 1분 → 5분 → 30분 → 2시간 → 6시간 → 24시간 입니다. 처리 시간이 길면 먼저 2xx 를 돌려주고 비동기로 처리하세요. 연속 실패가 20회에 닿으면 구독이 자동으로 `DISABLED` 로 내려가고 발송이 멈춥니다. 수신측을 고친 뒤 `PATCH /v2/webhook-endpoints/{endpointId}` 에 `{\"status\":\"ACTIVE\"}` 로 되살리세요. ### 구독 가능한 이벤트 `bid.closed` · `bid.awarded` · `bid.failed` · `bid.canceled` · `bid.award_reverted` `ping` 은 연결 확인 전용이라 구독할 수 없습니다 — 테스트 발송 경로에서만 나갑니다. ### 놓친 이벤트 확인 `GET /v2/webhook-deliveries` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
|
|
323
|
+
* @summary 웹훅 구독 등록
|
|
324
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
325
|
+
* @param {CreateWebhookEndpointRequestDto} createWebhookEndpointRequestDto
|
|
326
|
+
* @param {*} [options] Override http request option.
|
|
327
|
+
* @throws {RequiredError}
|
|
328
|
+
*/
|
|
329
|
+
createWebhookEndpoint: (idempotencyKey_1, createWebhookEndpointRequestDto_1, ...args_1) => __awaiter(this, [idempotencyKey_1, createWebhookEndpointRequestDto_1, ...args_1], void 0, function* (idempotencyKey, createWebhookEndpointRequestDto, options = {}) {
|
|
330
|
+
// verify required parameter 'idempotencyKey' is not null or undefined
|
|
331
|
+
assertParamExists('createWebhookEndpoint', 'idempotencyKey', idempotencyKey);
|
|
332
|
+
// verify required parameter 'createWebhookEndpointRequestDto' is not null or undefined
|
|
333
|
+
assertParamExists('createWebhookEndpoint', 'createWebhookEndpointRequestDto', createWebhookEndpointRequestDto);
|
|
334
|
+
const localVarPath = `/v2/webhook-endpoints`;
|
|
335
|
+
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
336
|
+
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
337
|
+
let baseOptions;
|
|
338
|
+
if (configuration) {
|
|
339
|
+
baseOptions = configuration.baseOptions;
|
|
340
|
+
}
|
|
341
|
+
const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
|
|
342
|
+
const localVarHeaderParameter = {};
|
|
343
|
+
const localVarQueryParameter = {};
|
|
344
|
+
// authentication partner-oauth2 required
|
|
345
|
+
// http bearer authentication required
|
|
346
|
+
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
347
|
+
localVarHeaderParameter['Content-Type'] = 'application/json';
|
|
348
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
349
|
+
if (idempotencyKey != null) {
|
|
350
|
+
localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
|
|
351
|
+
}
|
|
352
|
+
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
353
|
+
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
354
|
+
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
355
|
+
localVarRequestOptions.data = serializeDataIfNeeded(createWebhookEndpointRequestDto, localVarRequestOptions, configuration);
|
|
356
|
+
return {
|
|
357
|
+
url: toPathString(localVarUrlObj),
|
|
358
|
+
options: localVarRequestOptions,
|
|
359
|
+
};
|
|
360
|
+
}),
|
|
361
|
+
/**
|
|
362
|
+
* 구독을 삭제합니다. 이후 그 주소로는 아무 이벤트도 발송되지 않습니다. **호출 시점:** 연동을 종료할 때. 잠시만 멈추려면 삭제하지 말고 `PATCH … {\"status\":\"DISABLED\"}` 를 쓰세요 — 시크릿과 이벤트 구성이 남아 그대로 되살릴 수 있습니다. **되돌릴 수 없습니다.** 다시 등록하면 새 구독이고 서명 시크릿도 새 값입니다. **`If-Match` 가 필수입니다.** `GET` 으로 받은 `ETag` 를 실어 보내세요. - `428` — 헤더 누락. 조회 후 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다(누군가 수정했거나 발송기가 상태를 내렸습니다). 다시 조회해 정말 지울 대상이 맞는지 확인하고 최신 `ETag` 로 재시도하세요. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
363
|
+
* @summary 웹훅 구독 삭제
|
|
364
|
+
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
365
|
+
* @param {string} ifMatch
|
|
366
|
+
* @param {string} ifMatch2 직전 조회 응답의 `ETag` 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
|
|
367
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
368
|
+
* @param {*} [options] Override http request option.
|
|
369
|
+
* @throws {RequiredError}
|
|
370
|
+
*/
|
|
371
|
+
deleteWebhookEndpoint: (endpointId_1, ifMatch_1, ifMatch2_1, idempotencyKey_1, ...args_1) => __awaiter(this, [endpointId_1, ifMatch_1, ifMatch2_1, idempotencyKey_1, ...args_1], void 0, function* (endpointId, ifMatch, ifMatch2, idempotencyKey, options = {}) {
|
|
372
|
+
// verify required parameter 'endpointId' is not null or undefined
|
|
373
|
+
assertParamExists('deleteWebhookEndpoint', 'endpointId', endpointId);
|
|
374
|
+
// verify required parameter 'ifMatch' is not null or undefined
|
|
375
|
+
assertParamExists('deleteWebhookEndpoint', 'ifMatch', ifMatch);
|
|
376
|
+
// verify required parameter 'ifMatch2' is not null or undefined
|
|
377
|
+
assertParamExists('deleteWebhookEndpoint', 'ifMatch2', ifMatch2);
|
|
378
|
+
// verify required parameter 'idempotencyKey' is not null or undefined
|
|
379
|
+
assertParamExists('deleteWebhookEndpoint', 'idempotencyKey', idempotencyKey);
|
|
380
|
+
const localVarPath = `/v2/webhook-endpoints/{endpointId}`
|
|
381
|
+
.replace('{endpointId}', encodeURIComponent(String(endpointId)));
|
|
382
|
+
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
383
|
+
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
384
|
+
let baseOptions;
|
|
385
|
+
if (configuration) {
|
|
386
|
+
baseOptions = configuration.baseOptions;
|
|
387
|
+
}
|
|
388
|
+
const localVarRequestOptions = Object.assign(Object.assign({ method: 'DELETE' }, baseOptions), options);
|
|
389
|
+
const localVarHeaderParameter = {};
|
|
390
|
+
const localVarQueryParameter = {};
|
|
391
|
+
// authentication partner-oauth2 required
|
|
392
|
+
// http bearer authentication required
|
|
393
|
+
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
394
|
+
localVarHeaderParameter['Accept'] = 'application/problem+json';
|
|
395
|
+
if (ifMatch != null) {
|
|
396
|
+
localVarHeaderParameter['if-match'] = String(ifMatch);
|
|
397
|
+
}
|
|
398
|
+
if (ifMatch2 != null) {
|
|
399
|
+
localVarHeaderParameter['If-Match'] = String(ifMatch2);
|
|
400
|
+
}
|
|
401
|
+
if (idempotencyKey != null) {
|
|
402
|
+
localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
|
|
403
|
+
}
|
|
404
|
+
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
405
|
+
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
406
|
+
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
407
|
+
return {
|
|
408
|
+
url: toPathString(localVarUrlObj),
|
|
409
|
+
options: localVarRequestOptions,
|
|
410
|
+
};
|
|
411
|
+
}),
|
|
412
|
+
/**
|
|
413
|
+
* 무인증 — `fileKey` 자체가 capability 다(V5 `/download/{fileKey}` 와 같은 보안 모델). 파트너 응답의 `fileUrl`/`fullUrl` 이 이 URL 을 가리킨다. 요청 시점에 서명하므로 URL 을 저장해 두어도 만료되지 않는다. 응답은 실제 저장소 URL 로의 302 리다이렉트이며 리다이렉트 타깃은 1시간 뒤 만료되므로 302 자체를 캐시하지 말 것(`Cache-Control: no-store`). --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — `GET /v2/files/{fileKey}` 가 파일 메타와 `downloadUrl` 을 v2 응답 규약으로 돌려줍니다. 이 안정 URL 은 파트너 응답의 `fileUrl`/`fullUrl` 이 가리키는 주소라 계속 유지되며 중단 일정은 없습니다.
|
|
266
414
|
* @summary 파일 다운로드 — 안정 URL(302)
|
|
267
415
|
* @param {string} fileKey 파일 키 — UUIDv4 hex 32자. 업로드(`POST /v1|/v2/files`) 응답에서 받은 값.
|
|
268
416
|
* @param {*} [options] Override http request option.
|
|
@@ -314,7 +462,40 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
314
462
|
// authentication partner-oauth2 required
|
|
315
463
|
// http bearer authentication required
|
|
316
464
|
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
317
|
-
localVarHeaderParameter['Accept'] = 'application/json';
|
|
465
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
466
|
+
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
467
|
+
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
468
|
+
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
469
|
+
return {
|
|
470
|
+
url: toPathString(localVarUrlObj),
|
|
471
|
+
options: localVarRequestOptions,
|
|
472
|
+
};
|
|
473
|
+
}),
|
|
474
|
+
/**
|
|
475
|
+
* 공고의 납품·검수·계약완료 진행 상태를 조회합니다. 검수완료 전송의 읽기 카운터파트입니다. **세 축은 서로 다른 사건입니다.** - `delivered`: 낙찰 공급사가 납품(결과확인)을 보고했습니다. - `confirmed`/`confirmedAt`: 발주기관이 검수를 확인했습니다. - `contractCompletedAt`: 검수완료 전송이 원장에 반영된 시각입니다. 검수완료 전송(`POST /v2/bids/{bidId}/acceptance`)이 성사되었는지는 `contractCompletedAt` 이 채워졌는지로 확인하세요. **필수 스코프:** `contracts:read`
|
|
476
|
+
* @summary 검수 현황 조회
|
|
477
|
+
* @param {string} bidId 공고 ID(= backend bidId = 등록 응답의 bidNo).
|
|
478
|
+
* @param {*} [options] Override http request option.
|
|
479
|
+
* @throws {RequiredError}
|
|
480
|
+
*/
|
|
481
|
+
getBidAcceptance: (bidId_1, ...args_1) => __awaiter(this, [bidId_1, ...args_1], void 0, function* (bidId, options = {}) {
|
|
482
|
+
// verify required parameter 'bidId' is not null or undefined
|
|
483
|
+
assertParamExists('getBidAcceptance', 'bidId', bidId);
|
|
484
|
+
const localVarPath = `/v2/bids/{bidId}/acceptance`
|
|
485
|
+
.replace('{bidId}', encodeURIComponent(String(bidId)));
|
|
486
|
+
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
487
|
+
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
488
|
+
let baseOptions;
|
|
489
|
+
if (configuration) {
|
|
490
|
+
baseOptions = configuration.baseOptions;
|
|
491
|
+
}
|
|
492
|
+
const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
|
|
493
|
+
const localVarHeaderParameter = {};
|
|
494
|
+
const localVarQueryParameter = {};
|
|
495
|
+
// authentication partner-oauth2 required
|
|
496
|
+
// http bearer authentication required
|
|
497
|
+
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
498
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
318
499
|
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
319
500
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
320
501
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
@@ -333,7 +514,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
333
514
|
getBidResults: (bidId_1, ...args_1) => __awaiter(this, [bidId_1, ...args_1], void 0, function* (bidId, options = {}) {
|
|
334
515
|
// verify required parameter 'bidId' is not null or undefined
|
|
335
516
|
assertParamExists('getBidResults', 'bidId', bidId);
|
|
336
|
-
const localVarPath = `/v2/bids/{bidId}/
|
|
517
|
+
const localVarPath = `/v2/bids/{bidId}/result`
|
|
337
518
|
.replace('{bidId}', encodeURIComponent(String(bidId)));
|
|
338
519
|
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
339
520
|
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
@@ -347,7 +528,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
347
528
|
// authentication partner-oauth2 required
|
|
348
529
|
// http bearer authentication required
|
|
349
530
|
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
350
|
-
localVarHeaderParameter['Accept'] = 'application/json';
|
|
531
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
351
532
|
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
352
533
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
353
534
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
@@ -357,7 +538,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
357
538
|
};
|
|
358
539
|
}),
|
|
359
540
|
/**
|
|
360
|
-
* 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을
|
|
541
|
+
* 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 가시성 마스킹과는 직교한 정산 데이터이며 읽기 전용입니다. **필수 스코프:** `invoices:read` — 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
|
|
361
542
|
* @summary 입찰결과 정산정보 조회
|
|
362
543
|
* @param {string} bidId
|
|
363
544
|
* @param {*} [options] Override http request option.
|
|
@@ -380,7 +561,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
380
561
|
// authentication partner-oauth2 required
|
|
381
562
|
// http bearer authentication required
|
|
382
563
|
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
383
|
-
localVarHeaderParameter['Accept'] = 'application/json';
|
|
564
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
384
565
|
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
385
566
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
386
567
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
@@ -390,7 +571,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
390
571
|
};
|
|
391
572
|
}),
|
|
392
573
|
/**
|
|
393
|
-
* 낙찰 계약의 거래명세서(
|
|
574
|
+
* 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
|
|
394
575
|
* @summary 거래명세서 조회
|
|
395
576
|
* @param {string} bidId
|
|
396
577
|
* @param {number} [paperCode]
|
|
@@ -417,7 +598,40 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
417
598
|
if (paperCode !== undefined) {
|
|
418
599
|
localVarQueryParameter['paperCode'] = paperCode;
|
|
419
600
|
}
|
|
420
|
-
localVarHeaderParameter['Accept'] = 'application/json';
|
|
601
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
602
|
+
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
603
|
+
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
604
|
+
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
605
|
+
return {
|
|
606
|
+
url: toPathString(localVarUrlObj),
|
|
607
|
+
options: localVarRequestOptions,
|
|
608
|
+
};
|
|
609
|
+
}),
|
|
610
|
+
/**
|
|
611
|
+
* 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **구 경로:** 버전 없는 `GET /files/{fileKey}` 는 만료 없는 안정 주소이고 파트너 응답의 `fileUrl`/`fullUrl` 이 그 값을 가리킵니다. 인증도 스코프도 없는 옛 표면이라 신규 연동은 이 엔드포인트를 쓰세요. 구 경로는 당분간 유지됩니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** 하이픈 없는 16진수 32자가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. **필수 스코프:** `files:read`
|
|
612
|
+
* @summary 파일 조회(메타 + 내려받기 주소)
|
|
613
|
+
* @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(하이픈 없는 16진수 32자).
|
|
614
|
+
* @param {*} [options] Override http request option.
|
|
615
|
+
* @throws {RequiredError}
|
|
616
|
+
*/
|
|
617
|
+
getFileMeta: (fileKey_1, ...args_1) => __awaiter(this, [fileKey_1, ...args_1], void 0, function* (fileKey, options = {}) {
|
|
618
|
+
// verify required parameter 'fileKey' is not null or undefined
|
|
619
|
+
assertParamExists('getFileMeta', 'fileKey', fileKey);
|
|
620
|
+
const localVarPath = `/v2/files/{fileKey}`
|
|
621
|
+
.replace('{fileKey}', encodeURIComponent(String(fileKey)));
|
|
622
|
+
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
623
|
+
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
624
|
+
let baseOptions;
|
|
625
|
+
if (configuration) {
|
|
626
|
+
baseOptions = configuration.baseOptions;
|
|
627
|
+
}
|
|
628
|
+
const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
|
|
629
|
+
const localVarHeaderParameter = {};
|
|
630
|
+
const localVarQueryParameter = {};
|
|
631
|
+
// authentication partner-oauth2 required
|
|
632
|
+
// http bearer authentication required
|
|
633
|
+
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
634
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
421
635
|
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
422
636
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
423
637
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
@@ -460,7 +674,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
460
674
|
};
|
|
461
675
|
}),
|
|
462
676
|
/**
|
|
463
|
-
* 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write`
|
|
677
|
+
* 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
|
|
464
678
|
* @summary 공급사 카드결제 가능 여부
|
|
465
679
|
* @param {string} memberId 계약업체 회원 ID
|
|
466
680
|
* @param {*} [options] Override http request option.
|
|
@@ -493,13 +707,17 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
493
707
|
};
|
|
494
708
|
}),
|
|
495
709
|
/**
|
|
496
|
-
*
|
|
497
|
-
* @summary
|
|
710
|
+
* 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
|
|
711
|
+
* @summary 공급사 카드결제 가능 여부
|
|
712
|
+
* @param {string} memberId 계약업체 회원 ID
|
|
498
713
|
* @param {*} [options] Override http request option.
|
|
499
714
|
* @throws {RequiredError}
|
|
500
715
|
*/
|
|
501
|
-
|
|
502
|
-
|
|
716
|
+
getSupplierCardPayableV2: (memberId_1, ...args_1) => __awaiter(this, [memberId_1, ...args_1], void 0, function* (memberId, options = {}) {
|
|
717
|
+
// verify required parameter 'memberId' is not null or undefined
|
|
718
|
+
assertParamExists('getSupplierCardPayableV2', 'memberId', memberId);
|
|
719
|
+
const localVarPath = `/v2/suppliers/{memberId}/card-payable`
|
|
720
|
+
.replace('{memberId}', encodeURIComponent(String(memberId)));
|
|
503
721
|
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
504
722
|
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
505
723
|
let baseOptions;
|
|
@@ -509,7 +727,10 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
509
727
|
const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
|
|
510
728
|
const localVarHeaderParameter = {};
|
|
511
729
|
const localVarQueryParameter = {};
|
|
512
|
-
|
|
730
|
+
// authentication partner-oauth2 required
|
|
731
|
+
// http bearer authentication required
|
|
732
|
+
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
733
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
513
734
|
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
514
735
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
515
736
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
@@ -519,62 +740,46 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
519
740
|
};
|
|
520
741
|
}),
|
|
521
742
|
/**
|
|
522
|
-
*
|
|
523
|
-
* @summary
|
|
524
|
-
* @param {string}
|
|
525
|
-
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
526
|
-
* @param {IssueTaxInvoiceRequestDto} issueTaxInvoiceRequestDto
|
|
743
|
+
* 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
|
|
744
|
+
* @summary 웹훅 구독 단건 조회
|
|
745
|
+
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
527
746
|
* @param {*} [options] Override http request option.
|
|
528
747
|
* @throws {RequiredError}
|
|
529
748
|
*/
|
|
530
|
-
|
|
531
|
-
// verify required parameter '
|
|
532
|
-
assertParamExists('
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
// verify required parameter 'issueTaxInvoiceRequestDto' is not null or undefined
|
|
536
|
-
assertParamExists('issueTaxInvoice', 'issueTaxInvoiceRequestDto', issueTaxInvoiceRequestDto);
|
|
537
|
-
const localVarPath = `/v2/bids/{bidId}/tax-invoice`
|
|
538
|
-
.replace('{bidId}', encodeURIComponent(String(bidId)));
|
|
749
|
+
getWebhookEndpoint: (endpointId_1, ...args_1) => __awaiter(this, [endpointId_1, ...args_1], void 0, function* (endpointId, options = {}) {
|
|
750
|
+
// verify required parameter 'endpointId' is not null or undefined
|
|
751
|
+
assertParamExists('getWebhookEndpoint', 'endpointId', endpointId);
|
|
752
|
+
const localVarPath = `/v2/webhook-endpoints/{endpointId}`
|
|
753
|
+
.replace('{endpointId}', encodeURIComponent(String(endpointId)));
|
|
539
754
|
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
540
755
|
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
541
756
|
let baseOptions;
|
|
542
757
|
if (configuration) {
|
|
543
758
|
baseOptions = configuration.baseOptions;
|
|
544
759
|
}
|
|
545
|
-
const localVarRequestOptions = Object.assign(Object.assign({ method: '
|
|
760
|
+
const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
|
|
546
761
|
const localVarHeaderParameter = {};
|
|
547
762
|
const localVarQueryParameter = {};
|
|
548
763
|
// authentication partner-oauth2 required
|
|
549
764
|
// http bearer authentication required
|
|
550
765
|
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
551
|
-
localVarHeaderParameter['
|
|
552
|
-
localVarHeaderParameter['Accept'] = 'application/json';
|
|
553
|
-
if (idempotencyKey != null) {
|
|
554
|
-
localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
|
|
555
|
-
}
|
|
766
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
556
767
|
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
557
768
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
558
769
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
559
|
-
localVarRequestOptions.data = serializeDataIfNeeded(issueTaxInvoiceRequestDto, localVarRequestOptions, configuration);
|
|
560
770
|
return {
|
|
561
771
|
url: toPathString(localVarUrlObj),
|
|
562
772
|
options: localVarRequestOptions,
|
|
563
773
|
};
|
|
564
774
|
}),
|
|
565
775
|
/**
|
|
566
|
-
*
|
|
567
|
-
* @summary
|
|
568
|
-
* @param {number} [limit] 페이지 크기(1~100, 기본 100).
|
|
569
|
-
* @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 `nextCursor` 를 그대로 전달한다. 미지정 시 첫 페이지. `nextCursor=null` 이면 마지막 페이지다.
|
|
570
|
-
* @param {Array<string>} [bidIds] 조회할 공고 식별자 CSV(최대 100건). 지정 시 그 공고만 조회한다.
|
|
571
|
-
* @param {Array<BidPublicStatus>} [status] 공고 상태 필터(공개값) CSV. 지정 시 그중 하나라도 일치하는 공고만 조회한다.
|
|
572
|
-
* @param {Array<ListBidsIncludeEnum>} [include] 행별 확장 부착 CSV. `results`=응찰 참여자, `products`=공고 등록 품목, `contacts`=발주 담당자 성명·연락처·이메일. 미지정이면 부착하지 않는다(응답이 가볍고 조회 비용도 들지 않는다).
|
|
776
|
+
* ERP 연동 직전 회선·인증 endpoint 동작 확인용.
|
|
777
|
+
* @summary Partner API 헬스체크
|
|
573
778
|
* @param {*} [options] Override http request option.
|
|
574
779
|
* @throws {RequiredError}
|
|
575
780
|
*/
|
|
576
|
-
|
|
577
|
-
const localVarPath = `/
|
|
781
|
+
healthControllerCheck: (...args_1) => __awaiter(this, [...args_1], void 0, function* (options = {}) {
|
|
782
|
+
const localVarPath = `/health`;
|
|
578
783
|
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
579
784
|
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
580
785
|
let baseOptions;
|
|
@@ -584,25 +789,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
584
789
|
const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
|
|
585
790
|
const localVarHeaderParameter = {};
|
|
586
791
|
const localVarQueryParameter = {};
|
|
587
|
-
|
|
588
|
-
// http bearer authentication required
|
|
589
|
-
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
590
|
-
if (limit !== undefined) {
|
|
591
|
-
localVarQueryParameter['limit'] = limit;
|
|
592
|
-
}
|
|
593
|
-
if (cursor !== undefined) {
|
|
594
|
-
localVarQueryParameter['cursor'] = cursor;
|
|
595
|
-
}
|
|
596
|
-
if (bidIds) {
|
|
597
|
-
localVarQueryParameter['bidIds'] = bidIds;
|
|
598
|
-
}
|
|
599
|
-
if (status) {
|
|
600
|
-
localVarQueryParameter['status'] = status;
|
|
601
|
-
}
|
|
602
|
-
if (include) {
|
|
603
|
-
localVarQueryParameter['include'] = include;
|
|
604
|
-
}
|
|
605
|
-
localVarHeaderParameter['Accept'] = 'application/json';
|
|
792
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
606
793
|
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
607
794
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
608
795
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
@@ -612,19 +799,17 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
612
799
|
};
|
|
613
800
|
}),
|
|
614
801
|
/**
|
|
615
|
-
*
|
|
616
|
-
* @summary
|
|
617
|
-
* @param {string}
|
|
618
|
-
* @param {ListExternalContractDocumentsBidTypeEnum} bidType 거래유형.
|
|
802
|
+
* 공고의 계약서류 목록과 내려받기 주소를 조회합니다. **목록에 실리는 것:** 공고 전체에 공통인 서류(약관·자동생성 공통본)와 낙찰자에게 귀속된 서류를 함께 싣습니다. 낙찰자 귀속 서류는 `winnerSequence` 에 그 낙찰자의 응찰 순번이 들어갑니다. **아직 없는 서류도 실립니다.** 공고가 제출을 요구했지만 아직 올라오지 않은 서류는 `fileKey: null` 로 나타나므로, 제출 여부는 이 값으로 판정하세요. **자동생성 서류:** `autoGenerated: true` 인 서류는 c-market 이 만들어 줍니다. 만드는 중이면 `generationState` 가 `QUEUED`/`PROCESSING` 이고 `downloadUrl` 이 아직 없습니다. `DEAD_LETTER` 는 생성이 실패해 멈춘 상태이며, 같은 경로의 POST(재생성)로 다시 큐에 올립니다. **내려받기:** `downloadUrl` 은 유효기간 1시간의 서명 주소입니다. 저장해 두고 재사용하지 마시고 필요할 때 이 엔드포인트를 다시 호출하세요. 기간에 얽매이지 않으려면 `fileKey` 를 보관하시고 파일 내려받기 경로를 사용하세요. **보이는 범위:** 서버가 공고 낙찰방법과 진행 단계로 결정합니다. 응답을 그대로 사용하시고 클라이언트에서 다시 거르지 마세요. **필수 스코프:** `contracts:read`
|
|
803
|
+
* @summary 계약서류 목록 조회
|
|
804
|
+
* @param {string} bidId 공고번호(buy_idx, 예 CM…) 또는 외부 구매번호(bid_puchase_no).
|
|
619
805
|
* @param {*} [options] Override http request option.
|
|
620
806
|
* @throws {RequiredError}
|
|
621
807
|
*/
|
|
622
|
-
|
|
623
|
-
// verify required parameter '
|
|
624
|
-
assertParamExists('
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
const localVarPath = `/v2/contract-documents`;
|
|
808
|
+
listBidContractDocuments: (bidId_1, ...args_1) => __awaiter(this, [bidId_1, ...args_1], void 0, function* (bidId, options = {}) {
|
|
809
|
+
// verify required parameter 'bidId' is not null or undefined
|
|
810
|
+
assertParamExists('listBidContractDocuments', 'bidId', bidId);
|
|
811
|
+
const localVarPath = `/v2/bids/{bidId}/contract-documents`
|
|
812
|
+
.replace('{bidId}', encodeURIComponent(String(bidId)));
|
|
628
813
|
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
629
814
|
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
630
815
|
let baseOptions;
|
|
@@ -637,13 +822,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
637
822
|
// authentication partner-oauth2 required
|
|
638
823
|
// http bearer authentication required
|
|
639
824
|
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
640
|
-
|
|
641
|
-
localVarQueryParameter['buyerId'] = buyerId;
|
|
642
|
-
}
|
|
643
|
-
if (bidType !== undefined) {
|
|
644
|
-
localVarQueryParameter['bidType'] = bidType;
|
|
645
|
-
}
|
|
646
|
-
localVarHeaderParameter['Accept'] = 'application/json';
|
|
825
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
647
826
|
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
648
827
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
649
828
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
@@ -653,8 +832,269 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
653
832
|
};
|
|
654
833
|
}),
|
|
655
834
|
/**
|
|
656
|
-
*
|
|
657
|
-
* @summary
|
|
835
|
+
* 공고에 응찰한 업체 목록을 조회합니다. 스코프 `bids:read` 필수. **보이는 범위는 공고의 낙찰방법과 진행 단계가 결정합니다.** 개찰 전에는 업체명이 가려지고 (`companyName: null`), 순위는 산정 전까지 `null` 입니다. 이 판정은 서버가 소유하므로 응답을 그대로 사용하시고 클라이언트에서 다시 계산하지 마세요. 같은 목록이 `GET /v2/bids/{bidId}` 응답의 `participants` 에도 실립니다 — 응찰 현황만 필요하면 이 엔드포인트가 가볍습니다.
|
|
836
|
+
* @summary 응찰 현황 조회
|
|
837
|
+
* @param {string} bidId 공고 식별자(등록 응답의 bidId).
|
|
838
|
+
* @param {*} [options] Override http request option.
|
|
839
|
+
* @throws {RequiredError}
|
|
840
|
+
*/
|
|
841
|
+
listBidParticipants: (bidId_1, ...args_1) => __awaiter(this, [bidId_1, ...args_1], void 0, function* (bidId, options = {}) {
|
|
842
|
+
// verify required parameter 'bidId' is not null or undefined
|
|
843
|
+
assertParamExists('listBidParticipants', 'bidId', bidId);
|
|
844
|
+
const localVarPath = `/v2/bids/{bidId}/participants`
|
|
845
|
+
.replace('{bidId}', encodeURIComponent(String(bidId)));
|
|
846
|
+
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
847
|
+
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
848
|
+
let baseOptions;
|
|
849
|
+
if (configuration) {
|
|
850
|
+
baseOptions = configuration.baseOptions;
|
|
851
|
+
}
|
|
852
|
+
const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
|
|
853
|
+
const localVarHeaderParameter = {};
|
|
854
|
+
const localVarQueryParameter = {};
|
|
855
|
+
// authentication partner-oauth2 required
|
|
856
|
+
// http bearer authentication required
|
|
857
|
+
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
858
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
859
|
+
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
860
|
+
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
861
|
+
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
862
|
+
return {
|
|
863
|
+
url: toPathString(localVarUrlObj),
|
|
864
|
+
options: localVarRequestOptions,
|
|
865
|
+
};
|
|
866
|
+
}),
|
|
867
|
+
/**
|
|
868
|
+
* 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에는 `ETag` 가 실리므로, 다음 요청에 `If-None-Match` 로 되보내면 결과가 그대로일 때 `304` 를 본문 없이 받습니다 — 마감을 기다리는 동안의 전송량이 사라집니다. **식별자 전달:** `?bidIds=A,B,C`(쉼표) 또는 `?bidIds=A&bidIds=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다 — 요청한 건수와 받은 건수가 다를 수 있으니 `bidId` 로 대조하세요. **목록이 길어 URL 이 부담되면** `POST /v2/bid-results/query` 를 쓰세요. 응답은 같습니다.
|
|
869
|
+
* @summary 입찰 결과 배치 조회
|
|
870
|
+
* @param {string} bidIds 조회할 공고 식별자 목록. 쉼표로 구분하거나 `bidIds` 를 반복해 전달합니다. 최대 100건.
|
|
871
|
+
* @param {*} [options] Override http request option.
|
|
872
|
+
* @throws {RequiredError}
|
|
873
|
+
*/
|
|
874
|
+
listBidResults: (bidIds_1, ...args_1) => __awaiter(this, [bidIds_1, ...args_1], void 0, function* (bidIds, options = {}) {
|
|
875
|
+
// verify required parameter 'bidIds' is not null or undefined
|
|
876
|
+
assertParamExists('listBidResults', 'bidIds', bidIds);
|
|
877
|
+
const localVarPath = `/v2/bid-results`;
|
|
878
|
+
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
879
|
+
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
880
|
+
let baseOptions;
|
|
881
|
+
if (configuration) {
|
|
882
|
+
baseOptions = configuration.baseOptions;
|
|
883
|
+
}
|
|
884
|
+
const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
|
|
885
|
+
const localVarHeaderParameter = {};
|
|
886
|
+
const localVarQueryParameter = {};
|
|
887
|
+
// authentication partner-oauth2 required
|
|
888
|
+
// http bearer authentication required
|
|
889
|
+
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
890
|
+
if (bidIds !== undefined) {
|
|
891
|
+
localVarQueryParameter['bidIds'] = bidIds;
|
|
892
|
+
}
|
|
893
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
894
|
+
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
895
|
+
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
896
|
+
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
897
|
+
return {
|
|
898
|
+
url: toPathString(localVarUrlObj),
|
|
899
|
+
options: localVarRequestOptions,
|
|
900
|
+
};
|
|
901
|
+
}),
|
|
902
|
+
/**
|
|
903
|
+
* 발주처(API 키 바인딩)의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(쿼리에 buyerId 를 넣지 않습니다). **페이지네이션(cursor):** `limit`(1~100, 기본 100) + `cursor`(불투명 토큰). 응답의 `nextCursor` 를 다음 요청 `cursor` 로 전달하면 다음 페이지를 받습니다. `nextCursor=null` 이면 마지막 페이지입니다. **상태·낙찰방법:** 공개값(의미 문자열)으로 반환됩니다. 낙찰 여부는 상태가 아니라 낙찰 결과 조회의 `participants[].isWinner` 로 관측합니다(AWARDED 상태는 없습니다).
|
|
904
|
+
* @summary 공고 목록 조회
|
|
905
|
+
* @param {number} [limit] 페이지 크기(1~100, 기본 100).
|
|
906
|
+
* @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 `nextCursor` 를 그대로 전달한다. 미지정 시 첫 페이지. `nextCursor=null` 이면 마지막 페이지다.
|
|
907
|
+
* @param {Array<string>} [bidIds] 조회할 공고 식별자 CSV(최대 100건). 지정 시 그 공고만 조회한다.
|
|
908
|
+
* @param {Array<BidPublicStatus>} [status] 공고 상태 필터(공개값) CSV. 지정 시 그중 하나라도 일치하는 공고만 조회한다.
|
|
909
|
+
* @param {Array<ListBidsIncludeEnum>} [include] 행별 확장 부착 CSV. `results`=응찰 참여자, `products`=공고 등록 품목, `contacts`=발주 담당자 성명·연락처·이메일. 미지정이면 부착하지 않는다(응답이 가볍고 조회 비용도 들지 않는다).
|
|
910
|
+
* @param {*} [options] Override http request option.
|
|
911
|
+
* @throws {RequiredError}
|
|
912
|
+
*/
|
|
913
|
+
listBids: (limit_1, cursor_1, bidIds_1, status_1, include_1, ...args_1) => __awaiter(this, [limit_1, cursor_1, bidIds_1, status_1, include_1, ...args_1], void 0, function* (limit, cursor, bidIds, status, include, options = {}) {
|
|
914
|
+
const localVarPath = `/v2/bids`;
|
|
915
|
+
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
916
|
+
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
917
|
+
let baseOptions;
|
|
918
|
+
if (configuration) {
|
|
919
|
+
baseOptions = configuration.baseOptions;
|
|
920
|
+
}
|
|
921
|
+
const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
|
|
922
|
+
const localVarHeaderParameter = {};
|
|
923
|
+
const localVarQueryParameter = {};
|
|
924
|
+
// authentication partner-oauth2 required
|
|
925
|
+
// http bearer authentication required
|
|
926
|
+
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
927
|
+
if (limit !== undefined) {
|
|
928
|
+
localVarQueryParameter['limit'] = limit;
|
|
929
|
+
}
|
|
930
|
+
if (cursor !== undefined) {
|
|
931
|
+
localVarQueryParameter['cursor'] = cursor;
|
|
932
|
+
}
|
|
933
|
+
if (bidIds) {
|
|
934
|
+
localVarQueryParameter['bidIds'] = bidIds;
|
|
935
|
+
}
|
|
936
|
+
if (status) {
|
|
937
|
+
localVarQueryParameter['status'] = status;
|
|
938
|
+
}
|
|
939
|
+
if (include) {
|
|
940
|
+
localVarQueryParameter['include'] = include;
|
|
941
|
+
}
|
|
942
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
943
|
+
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
944
|
+
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
945
|
+
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
946
|
+
return {
|
|
947
|
+
url: toPathString(localVarUrlObj),
|
|
948
|
+
options: localVarRequestOptions,
|
|
949
|
+
};
|
|
950
|
+
}),
|
|
951
|
+
/**
|
|
952
|
+
* 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidId}/contract-documents` 가 v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
|
|
953
|
+
* @summary 거래에 필요한 계약서류 목록 조회
|
|
954
|
+
* @param {string} buyerId 발주기관 회원 ID(c-market memberId).
|
|
955
|
+
* @param {ListExternalContractDocumentsBidTypeEnum} bidType 거래유형.
|
|
956
|
+
* @param {*} [options] Override http request option.
|
|
957
|
+
* @throws {RequiredError}
|
|
958
|
+
*/
|
|
959
|
+
listExternalContractDocuments: (buyerId_1, bidType_1, ...args_1) => __awaiter(this, [buyerId_1, bidType_1, ...args_1], void 0, function* (buyerId, bidType, options = {}) {
|
|
960
|
+
// verify required parameter 'buyerId' is not null or undefined
|
|
961
|
+
assertParamExists('listExternalContractDocuments', 'buyerId', buyerId);
|
|
962
|
+
// verify required parameter 'bidType' is not null or undefined
|
|
963
|
+
assertParamExists('listExternalContractDocuments', 'bidType', bidType);
|
|
964
|
+
const localVarPath = `/v2/contract-documents`;
|
|
965
|
+
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
966
|
+
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
967
|
+
let baseOptions;
|
|
968
|
+
if (configuration) {
|
|
969
|
+
baseOptions = configuration.baseOptions;
|
|
970
|
+
}
|
|
971
|
+
const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
|
|
972
|
+
const localVarHeaderParameter = {};
|
|
973
|
+
const localVarQueryParameter = {};
|
|
974
|
+
// authentication partner-oauth2 required
|
|
975
|
+
// http bearer authentication required
|
|
976
|
+
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
977
|
+
if (buyerId !== undefined) {
|
|
978
|
+
localVarQueryParameter['buyerId'] = buyerId;
|
|
979
|
+
}
|
|
980
|
+
if (bidType !== undefined) {
|
|
981
|
+
localVarQueryParameter['bidType'] = bidType;
|
|
982
|
+
}
|
|
983
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
984
|
+
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
985
|
+
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
986
|
+
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
987
|
+
return {
|
|
988
|
+
url: toPathString(localVarUrlObj),
|
|
989
|
+
options: localVarRequestOptions,
|
|
990
|
+
};
|
|
991
|
+
}),
|
|
992
|
+
/**
|
|
993
|
+
* 기관에 공유된 물품 중 **아직 전송되지 않은 것**을 조회합니다. **증분 피드입니다.** 가져간 물품을 `POST /v2/products/receipts` 로 수신확인하면 다음 조회 결과에서 빠집니다. 수신확인을 하지 않으면 같은 물품이 계속 내려옵니다. **권장 흐름:** 조회 → 자기 시스템에 저장 → 저장에 성공한 물품 코드만 수신확인. 저장 전에 수신확인하면 그 물품은 다시 받을 수 없습니다. **조회 범위:** 요청 키가 대행하는 기관 그룹입니다. 기관 그룹이 설정되지 않은 키는 403 입니다. **필수 스코프:** `products:read`
|
|
994
|
+
* @summary 물품 카탈로그 조회
|
|
995
|
+
* @param {*} [options] Override http request option.
|
|
996
|
+
* @throws {RequiredError}
|
|
997
|
+
*/
|
|
998
|
+
listProducts: (...args_1) => __awaiter(this, [...args_1], void 0, function* (options = {}) {
|
|
999
|
+
const localVarPath = `/v2/products`;
|
|
1000
|
+
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
1001
|
+
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
1002
|
+
let baseOptions;
|
|
1003
|
+
if (configuration) {
|
|
1004
|
+
baseOptions = configuration.baseOptions;
|
|
1005
|
+
}
|
|
1006
|
+
const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
|
|
1007
|
+
const localVarHeaderParameter = {};
|
|
1008
|
+
const localVarQueryParameter = {};
|
|
1009
|
+
// authentication partner-oauth2 required
|
|
1010
|
+
// http bearer authentication required
|
|
1011
|
+
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
1012
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
1013
|
+
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
1014
|
+
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
1015
|
+
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
1016
|
+
return {
|
|
1017
|
+
url: toPathString(localVarUrlObj),
|
|
1018
|
+
options: localVarRequestOptions,
|
|
1019
|
+
};
|
|
1020
|
+
}),
|
|
1021
|
+
/**
|
|
1022
|
+
* 이 API 키의 웹훅 발송 시도를 최신순으로 조회합니다. 보낸 본문·수신측 응답 상태· 다음 재시도 예정 시각이 함께 실립니다. **호출 시점:** - 수신측 장애로 놓친 이벤트를 메울 때. 이 엔드포인트가 웹훅의 **폴링 대체 경로**입니다 — `status=EXHAUSTED` 로 걸러 다시 처리하면 됩니다. - \"이벤트가 안 온다\" 를 진단할 때. 발송 시도 자체가 없는지(구독·이벤트 타입 문제), 시도했지만 실패했는지(`responseStatus`·`responseBodyExcerpt`)를 여기서 가릅니다. **같은 이벤트가 여러 행으로 보입니다.** 재시도마다 한 행이며 `eventId` 가 같고 `attempt` 만 올라갑니다. 처리 여부는 `eventId` 기준으로 판단하세요. **페이지네이션:** `nextCursor` 를 다음 요청의 `cursor` 로 전달합니다. null 이면 마지막 페이지입니다. **`400`:** `status` 가 허용 값 밖이거나 `limit` 이 범위를 벗어났습니다 — 값을 고쳐 재시도하세요. **필수 스코프:** `webhooks:read`
|
|
1023
|
+
* @summary 웹훅 전송 이력 조회
|
|
1024
|
+
* @param {string} [endpointId] 이 구독의 전송만 조회합니다. 미지정이면 이 키의 모든 구독을 함께 조회합니다.
|
|
1025
|
+
* @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
|
|
1026
|
+
* @param {number} [limit] 페이지 크기(1~200, 기본 50).
|
|
1027
|
+
* @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 `nextCursor` 를 그대로 전달합니다. 미지정 시 첫 페이지.
|
|
1028
|
+
* @param {*} [options] Override http request option.
|
|
1029
|
+
* @throws {RequiredError}
|
|
1030
|
+
*/
|
|
1031
|
+
listWebhookDeliveries: (endpointId_1, status_1, limit_1, cursor_1, ...args_1) => __awaiter(this, [endpointId_1, status_1, limit_1, cursor_1, ...args_1], void 0, function* (endpointId, status, limit, cursor, options = {}) {
|
|
1032
|
+
const localVarPath = `/v2/webhook-deliveries`;
|
|
1033
|
+
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
1034
|
+
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
1035
|
+
let baseOptions;
|
|
1036
|
+
if (configuration) {
|
|
1037
|
+
baseOptions = configuration.baseOptions;
|
|
1038
|
+
}
|
|
1039
|
+
const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
|
|
1040
|
+
const localVarHeaderParameter = {};
|
|
1041
|
+
const localVarQueryParameter = {};
|
|
1042
|
+
// authentication partner-oauth2 required
|
|
1043
|
+
// http bearer authentication required
|
|
1044
|
+
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
1045
|
+
if (endpointId !== undefined) {
|
|
1046
|
+
localVarQueryParameter['endpointId'] = endpointId;
|
|
1047
|
+
}
|
|
1048
|
+
if (status !== undefined) {
|
|
1049
|
+
localVarQueryParameter['status'] = status;
|
|
1050
|
+
}
|
|
1051
|
+
if (limit !== undefined) {
|
|
1052
|
+
localVarQueryParameter['limit'] = limit;
|
|
1053
|
+
}
|
|
1054
|
+
if (cursor !== undefined) {
|
|
1055
|
+
localVarQueryParameter['cursor'] = cursor;
|
|
1056
|
+
}
|
|
1057
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
1058
|
+
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
1059
|
+
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
1060
|
+
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
1061
|
+
return {
|
|
1062
|
+
url: toPathString(localVarUrlObj),
|
|
1063
|
+
options: localVarRequestOptions,
|
|
1064
|
+
};
|
|
1065
|
+
}),
|
|
1066
|
+
/**
|
|
1067
|
+
* 이 API 키가 등록한 웹훅 구독을 모두 조회합니다. **호출 시점:** 연동 상태를 점검할 때, 또는 발송이 멈춘 이유(`status`·`consecutiveFailures`)를 확인할 때. 서명 시크릿은 여기에 실리지 않습니다. **필수 스코프:** `webhooks:read` ### 서명 검증 (필수) 발송 요청마다 헤더 `X-CMarket-Signature` 가 실립니다. ``` X-CMarket-Signature: t=<unix초>,v1=<hex> ``` `v1` 은 `HMAC-SHA256(secret, \"${t}.${요청 본문 원문}\")` 의 소문자 hex 입니다. 1. 헤더를 `t` 와 `v1` 로 나눕니다. 2. `\"${t}.${본문}\"` 을 만듭니다. **본문은 파싱 전 원문 바이트**여야 합니다 — JSON 을 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. 등록 시 받은 시크릿으로 HMAC-SHA256 을 계산해 `v1` 과 비교합니다. 비교는 **상수 시간** 비교 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `t` 가 현재 시각으로부터 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). ### 중복 제거 `X-CMarket-Event-Id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. ### 응답과 재시도 2xx 를 돌려주면 성공입니다. 그 외(또는 무응답)는 실패로 보고 최대 7회 재시도합니다 — 간격은 10초 → 1분 → 5분 → 30분 → 2시간 → 6시간 → 24시간 입니다. 처리 시간이 길면 먼저 2xx 를 돌려주고 비동기로 처리하세요. 연속 실패가 20회에 닿으면 구독이 자동으로 `DISABLED` 로 내려가고 발송이 멈춥니다. 수신측을 고친 뒤 `PATCH /v2/webhook-endpoints/{endpointId}` 에 `{\"status\":\"ACTIVE\"}` 로 되살리세요. ### 구독 가능한 이벤트 `bid.closed` · `bid.awarded` · `bid.failed` · `bid.canceled` · `bid.award_reverted` `ping` 은 연결 확인 전용이라 구독할 수 없습니다 — 테스트 발송 경로에서만 나갑니다. ### 놓친 이벤트 확인 `GET /v2/webhook-deliveries` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
|
|
1068
|
+
* @summary 웹훅 구독 목록 조회
|
|
1069
|
+
* @param {*} [options] Override http request option.
|
|
1070
|
+
* @throws {RequiredError}
|
|
1071
|
+
*/
|
|
1072
|
+
listWebhookEndpoints: (...args_1) => __awaiter(this, [...args_1], void 0, function* (options = {}) {
|
|
1073
|
+
const localVarPath = `/v2/webhook-endpoints`;
|
|
1074
|
+
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
1075
|
+
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
1076
|
+
let baseOptions;
|
|
1077
|
+
if (configuration) {
|
|
1078
|
+
baseOptions = configuration.baseOptions;
|
|
1079
|
+
}
|
|
1080
|
+
const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
|
|
1081
|
+
const localVarHeaderParameter = {};
|
|
1082
|
+
const localVarQueryParameter = {};
|
|
1083
|
+
// authentication partner-oauth2 required
|
|
1084
|
+
// http bearer authentication required
|
|
1085
|
+
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
1086
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
1087
|
+
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
1088
|
+
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
1089
|
+
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
1090
|
+
return {
|
|
1091
|
+
url: toPathString(localVarUrlObj),
|
|
1092
|
+
options: localVarRequestOptions,
|
|
1093
|
+
};
|
|
1094
|
+
}),
|
|
1095
|
+
/**
|
|
1096
|
+
* 공고를 유찰 상태로 전환합니다. **호출 시점:** 입찰 마감 후 유찰 사유가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 공고 상태가 유찰(FAILED)로 전환됩니다. - 유찰사유 코드와 상세가 기록됩니다. **유찰사유 값 목록(failureReasonCode — 공개값):** | 값 | 의미 | |------|------| | `ABOVE_TARGET_PRICE` | 예정가격 초과 | | `DEPT_MISMATCH` | 자격 미달 | | `NEEDS_EXPERTISE` | 전문성 필요 | | `OTHER` | 기타 (`failureReasonDetail` 필수) | | `NO_PARTICIPANT` | 참가자 없음 | | `SINGLE_PARTICIPANT` | 단독 참가 | | `LESS_THAN_TWO` | 2인 미만 | | `BELOW_MINIMUM` | 최저가 미달 | **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body 에 buyerId 를 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
1097
|
+
* @summary 유찰 처리
|
|
658
1098
|
* @param {string} bidId 공고 식별자(등록 응답의 bidId).
|
|
659
1099
|
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
660
1100
|
* @param {MarkBidFailedRequestDto} markBidFailedRequestDto
|
|
@@ -668,7 +1108,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
668
1108
|
assertParamExists('markBidFailed', 'idempotencyKey', idempotencyKey);
|
|
669
1109
|
// verify required parameter 'markBidFailedRequestDto' is not null or undefined
|
|
670
1110
|
assertParamExists('markBidFailed', 'markBidFailedRequestDto', markBidFailedRequestDto);
|
|
671
|
-
const localVarPath = `/v2/bids/{bidId}/
|
|
1111
|
+
const localVarPath = `/v2/bids/{bidId}/fail`
|
|
672
1112
|
.replace('{bidId}', encodeURIComponent(String(bidId)));
|
|
673
1113
|
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
674
1114
|
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
@@ -683,7 +1123,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
683
1123
|
// http bearer authentication required
|
|
684
1124
|
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
685
1125
|
localVarHeaderParameter['Content-Type'] = 'application/json';
|
|
686
|
-
localVarHeaderParameter['Accept'] = 'application/json';
|
|
1126
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
687
1127
|
if (idempotencyKey != null) {
|
|
688
1128
|
localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
|
|
689
1129
|
}
|
|
@@ -723,7 +1163,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
723
1163
|
// authentication partner-oauth2 required
|
|
724
1164
|
// http bearer authentication required
|
|
725
1165
|
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
726
|
-
localVarHeaderParameter['Accept'] = 'application/json';
|
|
1166
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
727
1167
|
if (idempotencyKey != null) {
|
|
728
1168
|
localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
|
|
729
1169
|
}
|
|
@@ -735,6 +1175,40 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
735
1175
|
options: localVarRequestOptions,
|
|
736
1176
|
};
|
|
737
1177
|
}),
|
|
1178
|
+
/**
|
|
1179
|
+
* `GET /v2/bid-results` 와 **완전히 같은 조회**이며, 식별자 목록을 본문으로 받습니다. 스코프 `bids:read`. 공고 식별자 100건이면 URL 이 1KB를 넘습니다 — 중간 프록시가 긴 URL 을 자르는 환경을 위한 대체 경로입니다. **부수효과가 없으므로 `Idempotency-Key` 는 필요하지 않습니다.** POST 인 것은 전송 형태의 문제일 뿐이며, 가능하면 캐시·`ETag` 가 동작하는 `GET` 쪽을 쓰세요.
|
|
1180
|
+
* @summary 입찰 결과 배치 조회 (본문 전달)
|
|
1181
|
+
* @param {BidResultsBatchRequestDto} bidResultsBatchRequestDto
|
|
1182
|
+
* @param {*} [options] Override http request option.
|
|
1183
|
+
* @throws {RequiredError}
|
|
1184
|
+
*/
|
|
1185
|
+
queryBidResults: (bidResultsBatchRequestDto_1, ...args_1) => __awaiter(this, [bidResultsBatchRequestDto_1, ...args_1], void 0, function* (bidResultsBatchRequestDto, options = {}) {
|
|
1186
|
+
// verify required parameter 'bidResultsBatchRequestDto' is not null or undefined
|
|
1187
|
+
assertParamExists('queryBidResults', 'bidResultsBatchRequestDto', bidResultsBatchRequestDto);
|
|
1188
|
+
const localVarPath = `/v2/bid-results/query`;
|
|
1189
|
+
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
1190
|
+
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
1191
|
+
let baseOptions;
|
|
1192
|
+
if (configuration) {
|
|
1193
|
+
baseOptions = configuration.baseOptions;
|
|
1194
|
+
}
|
|
1195
|
+
const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
|
|
1196
|
+
const localVarHeaderParameter = {};
|
|
1197
|
+
const localVarQueryParameter = {};
|
|
1198
|
+
// authentication partner-oauth2 required
|
|
1199
|
+
// http bearer authentication required
|
|
1200
|
+
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
1201
|
+
localVarHeaderParameter['Content-Type'] = 'application/json';
|
|
1202
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
1203
|
+
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
1204
|
+
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
1205
|
+
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
1206
|
+
localVarRequestOptions.data = serializeDataIfNeeded(bidResultsBatchRequestDto, localVarRequestOptions, configuration);
|
|
1207
|
+
return {
|
|
1208
|
+
url: toPathString(localVarUrlObj),
|
|
1209
|
+
options: localVarRequestOptions,
|
|
1210
|
+
};
|
|
1211
|
+
}),
|
|
738
1212
|
/**
|
|
739
1213
|
* 공고의 자동생성 계약서류(발주서·공고결과·표준계약서 등)를 생성/재생성합니다. **V6 대응:** `RegenerateAllContractPdfsCommand` — 웹 어드민의 \"계약 서류 일괄 재생성\"과 동일 경로. **호출 시점:** 낙찰(계약 시작) 후 계약서류가 필요하거나, 생성에 실패한 서류를 다시 만들 때. **부수효과:** - 생성 실패(DEAD_LETTER) 상태의 자동생성 PDF 가 재생성 큐에 등록됩니다(비동기). - 승낙사항(ACCEPTANCE) 계열은 운영자 승인 워크플로가 필요해 이 경로에서 제외됩니다. **응답:** 즉시 파일이 아니라 큐 등록 결과(`enqueuedCount`/`skippedCount`)를 반환합니다. 잠시 후 자동 생성됩니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
740
1214
|
* @summary 계약서류 생성(재생성)
|
|
@@ -762,7 +1236,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
762
1236
|
// authentication partner-oauth2 required
|
|
763
1237
|
// http bearer authentication required
|
|
764
1238
|
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
765
|
-
localVarHeaderParameter['Accept'] = 'application/json';
|
|
1239
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
766
1240
|
if (idempotencyKey != null) {
|
|
767
1241
|
localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
|
|
768
1242
|
}
|
|
@@ -805,7 +1279,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
805
1279
|
// http bearer authentication required
|
|
806
1280
|
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
807
1281
|
localVarHeaderParameter['Content-Type'] = 'application/json';
|
|
808
|
-
localVarHeaderParameter['Accept'] = 'application/json';
|
|
1282
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
809
1283
|
if (idempotencyKey != null) {
|
|
810
1284
|
localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
|
|
811
1285
|
}
|
|
@@ -821,11 +1295,14 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
821
1295
|
/**
|
|
822
1296
|
* 입찰 정보 등록. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수.
|
|
823
1297
|
* @summary 입찰 정보 전송(등록)
|
|
1298
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
|
|
824
1299
|
* @param {CreateBidRequestDto} createBidRequestDto
|
|
825
1300
|
* @param {*} [options] Override http request option.
|
|
826
1301
|
* @throws {RequiredError}
|
|
827
1302
|
*/
|
|
828
|
-
registerBid: (createBidRequestDto_1, ...args_1) => __awaiter(this, [createBidRequestDto_1, ...args_1], void 0, function* (createBidRequestDto, options = {}) {
|
|
1303
|
+
registerBid: (idempotencyKey_1, createBidRequestDto_1, ...args_1) => __awaiter(this, [idempotencyKey_1, createBidRequestDto_1, ...args_1], void 0, function* (idempotencyKey, createBidRequestDto, options = {}) {
|
|
1304
|
+
// verify required parameter 'idempotencyKey' is not null or undefined
|
|
1305
|
+
assertParamExists('registerBid', 'idempotencyKey', idempotencyKey);
|
|
829
1306
|
// verify required parameter 'createBidRequestDto' is not null or undefined
|
|
830
1307
|
assertParamExists('registerBid', 'createBidRequestDto', createBidRequestDto);
|
|
831
1308
|
const localVarPath = `/v2/bids`;
|
|
@@ -842,7 +1319,10 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
842
1319
|
// http bearer authentication required
|
|
843
1320
|
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
844
1321
|
localVarHeaderParameter['Content-Type'] = 'application/json';
|
|
845
|
-
localVarHeaderParameter['Accept'] = 'application/json';
|
|
1322
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
1323
|
+
if (idempotencyKey != null) {
|
|
1324
|
+
localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
|
|
1325
|
+
}
|
|
846
1326
|
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
847
1327
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
848
1328
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
@@ -879,7 +1359,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
879
1359
|
// http bearer authentication required
|
|
880
1360
|
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
881
1361
|
localVarHeaderParameter['Content-Type'] = 'application/json';
|
|
882
|
-
localVarHeaderParameter['Accept'] = 'application/json';
|
|
1362
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
883
1363
|
if (idempotencyKey != null) {
|
|
884
1364
|
localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
|
|
885
1365
|
}
|
|
@@ -893,22 +1373,22 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
893
1373
|
};
|
|
894
1374
|
}),
|
|
895
1375
|
/**
|
|
896
|
-
*
|
|
897
|
-
* @summary
|
|
1376
|
+
* 확정된 낙찰을 되돌려 공고를 낙찰대기(PENDING_AWARD) 상태로 보냅니다. 스코프 `awards:write` + `Idempotency-Key` 헤더 필수. **호출 시점:** 낙찰자가 계약을 포기했거나 낙찰 처리 자체가 잘못됐을 때. 되돌린 뒤 같은 공고에 다시 낙찰을 등록할 수 있습니다. **되돌릴 수 없는 경우 → 409:** - 수수료 결제가 이미 완료된 공고 - 세금계산서가 이미 발행된 공고 - 수입권공매 계열 낙찰방법(다수 낙찰자 구조라 되돌리기 단위가 다릅니다) **사유는 필수입니다** — 감사 대상 행위이며 공고 이력에 남습니다. **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
|
|
1377
|
+
* @summary 낙찰 되돌리기
|
|
898
1378
|
* @param {string} bidId 공고 식별자(등록 응답의 bidId).
|
|
899
|
-
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키
|
|
900
|
-
* @param {
|
|
1379
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
|
|
1380
|
+
* @param {RevertAwardRequestDto} revertAwardRequestDto
|
|
901
1381
|
* @param {*} [options] Override http request option.
|
|
902
1382
|
* @throws {RequiredError}
|
|
903
1383
|
*/
|
|
904
|
-
|
|
1384
|
+
revertAward: (bidId_1, idempotencyKey_1, revertAwardRequestDto_1, ...args_1) => __awaiter(this, [bidId_1, idempotencyKey_1, revertAwardRequestDto_1, ...args_1], void 0, function* (bidId, idempotencyKey, revertAwardRequestDto, options = {}) {
|
|
905
1385
|
// verify required parameter 'bidId' is not null or undefined
|
|
906
|
-
assertParamExists('
|
|
1386
|
+
assertParamExists('revertAward', 'bidId', bidId);
|
|
907
1387
|
// verify required parameter 'idempotencyKey' is not null or undefined
|
|
908
|
-
assertParamExists('
|
|
909
|
-
// verify required parameter '
|
|
910
|
-
assertParamExists('
|
|
911
|
-
const localVarPath = `/v2/bids/{bidId}/
|
|
1388
|
+
assertParamExists('revertAward', 'idempotencyKey', idempotencyKey);
|
|
1389
|
+
// verify required parameter 'revertAwardRequestDto' is not null or undefined
|
|
1390
|
+
assertParamExists('revertAward', 'revertAwardRequestDto', revertAwardRequestDto);
|
|
1391
|
+
const localVarPath = `/v2/bids/{bidId}/award`
|
|
912
1392
|
.replace('{bidId}', encodeURIComponent(String(bidId)));
|
|
913
1393
|
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
914
1394
|
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
@@ -916,21 +1396,99 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
916
1396
|
if (configuration) {
|
|
917
1397
|
baseOptions = configuration.baseOptions;
|
|
918
1398
|
}
|
|
919
|
-
const localVarRequestOptions = Object.assign(Object.assign({ method: '
|
|
1399
|
+
const localVarRequestOptions = Object.assign(Object.assign({ method: 'DELETE' }, baseOptions), options);
|
|
920
1400
|
const localVarHeaderParameter = {};
|
|
921
1401
|
const localVarQueryParameter = {};
|
|
922
1402
|
// authentication partner-oauth2 required
|
|
923
1403
|
// http bearer authentication required
|
|
924
1404
|
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
925
1405
|
localVarHeaderParameter['Content-Type'] = 'application/json';
|
|
926
|
-
localVarHeaderParameter['Accept'] = 'application/json';
|
|
1406
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
1407
|
+
if (idempotencyKey != null) {
|
|
1408
|
+
localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
|
|
1409
|
+
}
|
|
1410
|
+
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
1411
|
+
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
1412
|
+
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
1413
|
+
localVarRequestOptions.data = serializeDataIfNeeded(revertAwardRequestDto, localVarRequestOptions, configuration);
|
|
1414
|
+
return {
|
|
1415
|
+
url: toPathString(localVarUrlObj),
|
|
1416
|
+
options: localVarRequestOptions,
|
|
1417
|
+
};
|
|
1418
|
+
}),
|
|
1419
|
+
/**
|
|
1420
|
+
* 서명 시크릿을 새로 발급합니다. 응답의 `secretVersion` 이 1 올라갑니다. **호출 시점:** 시크릿을 분실했거나 유출이 의심될 때, 또는 주기적 교체 정책이 있을 때. **새 시크릿은 이 응답에서 한 번만 나갑니다.** 조회로 다시 받을 수 없습니다. **옛 시크릿은 즉시 무효입니다.** 유예 기간이 없으므로, 수신측이 새 값을 반영하기 전에 도착한 이벤트는 서명 검증에 실패합니다. 배포 순서를 이렇게 잡으세요 — ① 수신측이 옛 값과 새 값을 **둘 다** 받아들이도록 배포 → ② 이 엔드포인트 호출 → ③ 응답의 새 값을 반영 → ④ 옛 값 제거. 검증 실패로 non-2xx 를 돌려주면 실패로 집계되어 20회 연속 시 구독이 중지됩니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 같은 키로 재전송하면 **새로 발급하지 않고** 처음 발급한 값을 그대로 돌려줍니다(24시간) — 네트워크 오류로 응답을 놓쳤을 때 같은 키로 다시 부르세요.
|
|
1421
|
+
* @summary 웹훅 서명 시크릿 재발급
|
|
1422
|
+
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
1423
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
1424
|
+
* @param {*} [options] Override http request option.
|
|
1425
|
+
* @throws {RequiredError}
|
|
1426
|
+
*/
|
|
1427
|
+
rotateWebhookSecret: (endpointId_1, idempotencyKey_1, ...args_1) => __awaiter(this, [endpointId_1, idempotencyKey_1, ...args_1], void 0, function* (endpointId, idempotencyKey, options = {}) {
|
|
1428
|
+
// verify required parameter 'endpointId' is not null or undefined
|
|
1429
|
+
assertParamExists('rotateWebhookSecret', 'endpointId', endpointId);
|
|
1430
|
+
// verify required parameter 'idempotencyKey' is not null or undefined
|
|
1431
|
+
assertParamExists('rotateWebhookSecret', 'idempotencyKey', idempotencyKey);
|
|
1432
|
+
const localVarPath = `/v2/webhook-endpoints/{endpointId}/rotate-secret`
|
|
1433
|
+
.replace('{endpointId}', encodeURIComponent(String(endpointId)));
|
|
1434
|
+
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
1435
|
+
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
1436
|
+
let baseOptions;
|
|
1437
|
+
if (configuration) {
|
|
1438
|
+
baseOptions = configuration.baseOptions;
|
|
1439
|
+
}
|
|
1440
|
+
const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
|
|
1441
|
+
const localVarHeaderParameter = {};
|
|
1442
|
+
const localVarQueryParameter = {};
|
|
1443
|
+
// authentication partner-oauth2 required
|
|
1444
|
+
// http bearer authentication required
|
|
1445
|
+
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
1446
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
1447
|
+
if (idempotencyKey != null) {
|
|
1448
|
+
localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
|
|
1449
|
+
}
|
|
1450
|
+
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
1451
|
+
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
1452
|
+
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
1453
|
+
return {
|
|
1454
|
+
url: toPathString(localVarUrlObj),
|
|
1455
|
+
options: localVarRequestOptions,
|
|
1456
|
+
};
|
|
1457
|
+
}),
|
|
1458
|
+
/**
|
|
1459
|
+
* 등록된 주소로 `ping` 이벤트를 즉시 1회 보내고 그 결과를 돌려줍니다. **호출 시점:** 구독을 등록한 직후, 수신 주소를 바꾼 직후, 방화벽·인증서를 손본 뒤. **응답은 발송 결과이지 요청 실패가 아닙니다.** 수신측이 받지 못해도 HTTP `200` 에 `delivered: false` 로 옵니다 — `responseStatus`(수신측 상태)와 `error`(연결 거부·타임아웃· TLS 오류)를 보고 원인을 좁히세요. 이 발송에도 실제 이벤트와 **똑같은 서명 헤더**가 실리므로 검증 코드를 그대로 시험할 수 있습니다. `ping` 은 구독 목록에 넣을 수 없는 타입이니, 수신측이 모르는 `eventType` 을 만나면 버리도록 짜여 있다면 이 확인만 실패할 수 있습니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 다시 보내려면 **새 키**를 쓰세요 — 같은 키는 24시간 동안 직전 결과를 그대로 돌려줍니다(재발송하지 않습니다).
|
|
1460
|
+
* @summary 웹훅 연결 확인 발송
|
|
1461
|
+
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
1462
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
1463
|
+
* @param {*} [options] Override http request option.
|
|
1464
|
+
* @throws {RequiredError}
|
|
1465
|
+
*/
|
|
1466
|
+
sendWebhookTestEvent: (endpointId_1, idempotencyKey_1, ...args_1) => __awaiter(this, [endpointId_1, idempotencyKey_1, ...args_1], void 0, function* (endpointId, idempotencyKey, options = {}) {
|
|
1467
|
+
// verify required parameter 'endpointId' is not null or undefined
|
|
1468
|
+
assertParamExists('sendWebhookTestEvent', 'endpointId', endpointId);
|
|
1469
|
+
// verify required parameter 'idempotencyKey' is not null or undefined
|
|
1470
|
+
assertParamExists('sendWebhookTestEvent', 'idempotencyKey', idempotencyKey);
|
|
1471
|
+
const localVarPath = `/v2/webhook-endpoints/{endpointId}/test`
|
|
1472
|
+
.replace('{endpointId}', encodeURIComponent(String(endpointId)));
|
|
1473
|
+
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
1474
|
+
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
1475
|
+
let baseOptions;
|
|
1476
|
+
if (configuration) {
|
|
1477
|
+
baseOptions = configuration.baseOptions;
|
|
1478
|
+
}
|
|
1479
|
+
const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
|
|
1480
|
+
const localVarHeaderParameter = {};
|
|
1481
|
+
const localVarQueryParameter = {};
|
|
1482
|
+
// authentication partner-oauth2 required
|
|
1483
|
+
// http bearer authentication required
|
|
1484
|
+
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
1485
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
927
1486
|
if (idempotencyKey != null) {
|
|
928
1487
|
localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
|
|
929
1488
|
}
|
|
930
1489
|
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
931
1490
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
932
1491
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
933
|
-
localVarRequestOptions.data = serializeDataIfNeeded(submitNegotiationScoresRequestDto, localVarRequestOptions, configuration);
|
|
934
1492
|
return {
|
|
935
1493
|
url: toPathString(localVarUrlObj),
|
|
936
1494
|
options: localVarRequestOptions,
|
|
@@ -940,14 +1498,20 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
940
1498
|
* 등록된 공고의 내용을 수정합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. 진행중/초안 상태의 공고만 수정할 수 있습니다. **부수효과:** - 변경 내용이 반영되고 수정이력이 기록됩니다. - `hideEdit=true` 면 변경이력을 비공개 처리하고 노출 카운터 증가를 생략합니다. **수정 제약:** - 낙찰방법(awardMethod)은 수정 불가(잠금). - 참여자가 있으면 입찰방식/면허/예산/품목 일부가 잠깁니다. - 마감/취소된 공고는 수정할 수 없습니다. 한 섹션을 수정하려면 해당 섹션의 필수 필드를 함께 보내야 합니다(부분 섹션은 거부됨).
|
|
941
1499
|
* @summary 입찰 공고 수정
|
|
942
1500
|
* @param {string} bidId 공고 식별자(등록 응답의 bidId).
|
|
1501
|
+
* @param {string} ifMatch
|
|
1502
|
+
* @param {string} ifMatch2 수정하려는 공고의 ETag(필수). 직전 `GET /v2/bids/{bidId}` 응답의 `ETag` 헤더 값을 그대로 실어 보내세요. 누락하면 428, 그 사이 공고가 바뀌었으면 412 로 거절되며 아무것도 수정되지 않습니다.
|
|
943
1503
|
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
|
|
944
1504
|
* @param {UpdateBidRequestDto} updateBidRequestDto
|
|
945
1505
|
* @param {*} [options] Override http request option.
|
|
946
1506
|
* @throws {RequiredError}
|
|
947
1507
|
*/
|
|
948
|
-
updateBid: (bidId_1, idempotencyKey_1, updateBidRequestDto_1, ...args_1) => __awaiter(this, [bidId_1, idempotencyKey_1, updateBidRequestDto_1, ...args_1], void 0, function* (bidId, idempotencyKey, updateBidRequestDto, options = {}) {
|
|
1508
|
+
updateBid: (bidId_1, ifMatch_1, ifMatch2_1, idempotencyKey_1, updateBidRequestDto_1, ...args_1) => __awaiter(this, [bidId_1, ifMatch_1, ifMatch2_1, idempotencyKey_1, updateBidRequestDto_1, ...args_1], void 0, function* (bidId, ifMatch, ifMatch2, idempotencyKey, updateBidRequestDto, options = {}) {
|
|
949
1509
|
// verify required parameter 'bidId' is not null or undefined
|
|
950
1510
|
assertParamExists('updateBid', 'bidId', bidId);
|
|
1511
|
+
// verify required parameter 'ifMatch' is not null or undefined
|
|
1512
|
+
assertParamExists('updateBid', 'ifMatch', ifMatch);
|
|
1513
|
+
// verify required parameter 'ifMatch2' is not null or undefined
|
|
1514
|
+
assertParamExists('updateBid', 'ifMatch2', ifMatch2);
|
|
951
1515
|
// verify required parameter 'idempotencyKey' is not null or undefined
|
|
952
1516
|
assertParamExists('updateBid', 'idempotencyKey', idempotencyKey);
|
|
953
1517
|
// verify required parameter 'updateBidRequestDto' is not null or undefined
|
|
@@ -967,7 +1531,13 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
967
1531
|
// http bearer authentication required
|
|
968
1532
|
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
969
1533
|
localVarHeaderParameter['Content-Type'] = 'application/json';
|
|
970
|
-
localVarHeaderParameter['Accept'] = 'application/json';
|
|
1534
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
1535
|
+
if (ifMatch != null) {
|
|
1536
|
+
localVarHeaderParameter['if-match'] = String(ifMatch);
|
|
1537
|
+
}
|
|
1538
|
+
if (ifMatch2 != null) {
|
|
1539
|
+
localVarHeaderParameter['If-Match'] = String(ifMatch2);
|
|
1540
|
+
}
|
|
971
1541
|
if (idempotencyKey != null) {
|
|
972
1542
|
localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
|
|
973
1543
|
}
|
|
@@ -980,6 +1550,62 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
980
1550
|
options: localVarRequestOptions,
|
|
981
1551
|
};
|
|
982
1552
|
}),
|
|
1553
|
+
/**
|
|
1554
|
+
* 수신 주소·구독 이벤트·상태를 수정합니다. 보낸 필드만 바뀝니다. **호출 시점:** 수신 주소가 바뀌었을 때, 구독 이벤트를 늘리거나 줄일 때, 연속 실패로 자동 중지된 구독을 고친 뒤 되살릴 때(`{\"status\":\"ACTIVE\"}`). **`eventTypes` 는 치환입니다** — 보낸 목록이 곧 새 구독 목록입니다. 하나를 더하려면 기존 목록에 더한 **전체**를 보내세요. **`If-Match` 가 필수입니다.** 먼저 `GET /v2/webhook-endpoints/{endpointId}` 로 현재 `ETag` 를 받아 그대로 실어 보내세요. 이 헤더가 없으면 두 요청이 앞서거니 뒤서거니 하며 먼저 한 수정을 조용히 덮어씁니다. - `428` — 헤더를 빼먹었습니다. 조회 후 `ETag` 를 실어 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다. 다시 조회해 최신 `ETag` 로 재시도하세요. 아무것도 수정되지 않았습니다. **시크릿은 이 경로로 바뀌지 않습니다** — 재발급은 `rotate-secret` 입니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
1555
|
+
* @summary 웹훅 구독 수정
|
|
1556
|
+
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
1557
|
+
* @param {string} ifMatch
|
|
1558
|
+
* @param {string} ifMatch2 직전 조회 응답의 `ETag` 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
|
|
1559
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
1560
|
+
* @param {UpdateWebhookEndpointRequestDto} updateWebhookEndpointRequestDto
|
|
1561
|
+
* @param {*} [options] Override http request option.
|
|
1562
|
+
* @throws {RequiredError}
|
|
1563
|
+
*/
|
|
1564
|
+
updateWebhookEndpoint: (endpointId_1, ifMatch_1, ifMatch2_1, idempotencyKey_1, updateWebhookEndpointRequestDto_1, ...args_1) => __awaiter(this, [endpointId_1, ifMatch_1, ifMatch2_1, idempotencyKey_1, updateWebhookEndpointRequestDto_1, ...args_1], void 0, function* (endpointId, ifMatch, ifMatch2, idempotencyKey, updateWebhookEndpointRequestDto, options = {}) {
|
|
1565
|
+
// verify required parameter 'endpointId' is not null or undefined
|
|
1566
|
+
assertParamExists('updateWebhookEndpoint', 'endpointId', endpointId);
|
|
1567
|
+
// verify required parameter 'ifMatch' is not null or undefined
|
|
1568
|
+
assertParamExists('updateWebhookEndpoint', 'ifMatch', ifMatch);
|
|
1569
|
+
// verify required parameter 'ifMatch2' is not null or undefined
|
|
1570
|
+
assertParamExists('updateWebhookEndpoint', 'ifMatch2', ifMatch2);
|
|
1571
|
+
// verify required parameter 'idempotencyKey' is not null or undefined
|
|
1572
|
+
assertParamExists('updateWebhookEndpoint', 'idempotencyKey', idempotencyKey);
|
|
1573
|
+
// verify required parameter 'updateWebhookEndpointRequestDto' is not null or undefined
|
|
1574
|
+
assertParamExists('updateWebhookEndpoint', 'updateWebhookEndpointRequestDto', updateWebhookEndpointRequestDto);
|
|
1575
|
+
const localVarPath = `/v2/webhook-endpoints/{endpointId}`
|
|
1576
|
+
.replace('{endpointId}', encodeURIComponent(String(endpointId)));
|
|
1577
|
+
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
1578
|
+
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
|
|
1579
|
+
let baseOptions;
|
|
1580
|
+
if (configuration) {
|
|
1581
|
+
baseOptions = configuration.baseOptions;
|
|
1582
|
+
}
|
|
1583
|
+
const localVarRequestOptions = Object.assign(Object.assign({ method: 'PATCH' }, baseOptions), options);
|
|
1584
|
+
const localVarHeaderParameter = {};
|
|
1585
|
+
const localVarQueryParameter = {};
|
|
1586
|
+
// authentication partner-oauth2 required
|
|
1587
|
+
// http bearer authentication required
|
|
1588
|
+
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
1589
|
+
localVarHeaderParameter['Content-Type'] = 'application/json';
|
|
1590
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
1591
|
+
if (ifMatch != null) {
|
|
1592
|
+
localVarHeaderParameter['if-match'] = String(ifMatch);
|
|
1593
|
+
}
|
|
1594
|
+
if (ifMatch2 != null) {
|
|
1595
|
+
localVarHeaderParameter['If-Match'] = String(ifMatch2);
|
|
1596
|
+
}
|
|
1597
|
+
if (idempotencyKey != null) {
|
|
1598
|
+
localVarHeaderParameter['Idempotency-Key'] = String(idempotencyKey);
|
|
1599
|
+
}
|
|
1600
|
+
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
1601
|
+
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
1602
|
+
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
1603
|
+
localVarRequestOptions.data = serializeDataIfNeeded(updateWebhookEndpointRequestDto, localVarRequestOptions, configuration);
|
|
1604
|
+
return {
|
|
1605
|
+
url: toPathString(localVarUrlObj),
|
|
1606
|
+
options: localVarRequestOptions,
|
|
1607
|
+
};
|
|
1608
|
+
}),
|
|
983
1609
|
/**
|
|
984
1610
|
* 스코프 `files:write` + `Idempotency-Key` 헤더 필수. base64 또는 url 중 정확히 하나를 제출한다.
|
|
985
1611
|
* @summary 입찰 첨부파일 업로드(base64 또는 url) → fileKey
|
|
@@ -1004,7 +1630,7 @@ export const PartnerV2ApiAxiosParamCreator = function (configuration) {
|
|
|
1004
1630
|
// http bearer authentication required
|
|
1005
1631
|
yield setBearerAuthToObject(localVarHeaderParameter, configuration);
|
|
1006
1632
|
localVarHeaderParameter['Content-Type'] = 'application/json';
|
|
1007
|
-
localVarHeaderParameter['Accept'] = 'application/json';
|
|
1633
|
+
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
1008
1634
|
setSearchParams(localVarUrlObj, localVarQueryParameter);
|
|
1009
1635
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
1010
1636
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
@@ -1023,18 +1649,37 @@ export const PartnerV2ApiFp = function (configuration) {
|
|
|
1023
1649
|
const localVarAxiosParamCreator = PartnerV2ApiAxiosParamCreator(configuration);
|
|
1024
1650
|
return {
|
|
1025
1651
|
/**
|
|
1026
|
-
*
|
|
1027
|
-
* @summary
|
|
1028
|
-
* @param {string}
|
|
1652
|
+
* 저장을 마친 물품을 전송완료로 표시해 다음 조회에서 제외합니다. **되돌릴 수 없습니다.** 표시한 물품은 `GET /v2/products` 로 다시 내려오지 않으므로, 자기 시스템에 저장이 끝난 뒤에 호출하세요. **표시 범위는 기관 그룹으로 잠깁니다.** 다른 기관의 물품 코드를 섞어 보내면 그 건은 표시되지 않고 `acknowledged` 가 요청 수보다 작게 돌아옵니다. **필수 스코프:** `products:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
1653
|
+
* @summary 물품 수신확인
|
|
1654
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
1655
|
+
* @param {AcknowledgeProductsRequestDto} acknowledgeProductsRequestDto
|
|
1029
1656
|
* @param {*} [options] Override http request option.
|
|
1030
1657
|
* @throws {RequiredError}
|
|
1031
1658
|
*/
|
|
1032
|
-
|
|
1659
|
+
acknowledgeProductReceipt(idempotencyKey, acknowledgeProductsRequestDto, options) {
|
|
1033
1660
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1034
1661
|
var _a, _b, _c;
|
|
1035
|
-
const localVarAxiosArgs = yield localVarAxiosParamCreator.
|
|
1662
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.acknowledgeProductReceipt(idempotencyKey, acknowledgeProductsRequestDto, options);
|
|
1036
1663
|
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1037
|
-
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.
|
|
1664
|
+
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.acknowledgeProductReceipt']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1665
|
+
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
1666
|
+
});
|
|
1667
|
+
},
|
|
1668
|
+
/**
|
|
1669
|
+
* 진행중인 공고를 취소합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. **되돌릴 수 없습니다.** 취소 사유는 필수이며 공고 이력에 남습니다. **전제조건:** 진행중(ONGOING) 상태여야 합니다. **거부:** 진행중이 아니거나 이미 취소된 공고 → 409. 타 발주처 공고 → 403. **마감과의 차이:** 취소는 공고를 무효로 되돌리는 것이고, 유찰(`POST /v2/bids/{bidId}/fail`)은 응찰을 받았으나 낙찰자를 정하지 못한 종료입니다.
|
|
1670
|
+
* @summary 공고 취소
|
|
1671
|
+
* @param {string} bidId 공고 식별자(등록 응답의 bidId).
|
|
1672
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
|
|
1673
|
+
* @param {CancelBidRequestDto} cancelBidRequestDto
|
|
1674
|
+
* @param {*} [options] Override http request option.
|
|
1675
|
+
* @throws {RequiredError}
|
|
1676
|
+
*/
|
|
1677
|
+
cancelBid(bidId, idempotencyKey, cancelBidRequestDto, options) {
|
|
1678
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1679
|
+
var _a, _b, _c;
|
|
1680
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.cancelBid(bidId, idempotencyKey, cancelBidRequestDto, options);
|
|
1681
|
+
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1682
|
+
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.cancelBid']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1038
1683
|
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
1039
1684
|
});
|
|
1040
1685
|
},
|
|
@@ -1074,40 +1719,41 @@ export const PartnerV2ApiFp = function (configuration) {
|
|
|
1074
1719
|
});
|
|
1075
1720
|
},
|
|
1076
1721
|
/**
|
|
1077
|
-
* 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동
|
|
1722
|
+
* 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인되어 바로 결제할 수 있습니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 도메인 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
|
|
1078
1723
|
* @summary 결제창 발행
|
|
1079
1724
|
* @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
|
|
1080
1725
|
* @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
|
|
1081
1726
|
* @param {*} [options] Override http request option.
|
|
1082
1727
|
* @throws {RequiredError}
|
|
1083
1728
|
*/
|
|
1084
|
-
|
|
1729
|
+
createCardPayment(idempotencyKey, createCardPaymentRequestDto, options) {
|
|
1085
1730
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1086
1731
|
var _a, _b, _c;
|
|
1087
|
-
const localVarAxiosArgs = yield localVarAxiosParamCreator.
|
|
1732
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.createCardPayment(idempotencyKey, createCardPaymentRequestDto, options);
|
|
1088
1733
|
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1089
|
-
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.
|
|
1734
|
+
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.createCardPayment']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1090
1735
|
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
1091
1736
|
});
|
|
1092
1737
|
},
|
|
1093
1738
|
/**
|
|
1094
|
-
*
|
|
1095
|
-
* @summary
|
|
1096
|
-
* @param {
|
|
1739
|
+
* 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인(APPROVED)되어 바로 결제 가능합니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. 거기서 카드를 골라 결제합니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/card-payment-requests/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요. --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
|
|
1740
|
+
* @summary 결제창 발행
|
|
1741
|
+
* @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
|
|
1742
|
+
* @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
|
|
1097
1743
|
* @param {*} [options] Override http request option.
|
|
1098
1744
|
* @throws {RequiredError}
|
|
1099
1745
|
*/
|
|
1100
|
-
|
|
1746
|
+
createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options) {
|
|
1101
1747
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1102
1748
|
var _a, _b, _c;
|
|
1103
|
-
const localVarAxiosArgs = yield localVarAxiosParamCreator.
|
|
1749
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options);
|
|
1104
1750
|
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1105
|
-
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.
|
|
1751
|
+
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.createCardPaymentRequest']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1106
1752
|
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
1107
1753
|
});
|
|
1108
1754
|
},
|
|
1109
1755
|
/**
|
|
1110
|
-
* 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `paperCodes` 와 같은 순서로 같은 개수가 돌아옵니다.** 각 항목의 `fileUrl` 을 그대로 쓰면 되고, `paperCode` 로 어느 요청에 대한 결과인지 대응시킬 수 있습니다. **`name` 의 출처는 서류에 따라 다릅니다.** 시스템이 렌더한 서류는 계약서류명이고, 공급사 사전등록 3종(11·12·13)은 **공급사가 등록한 원본 파일명**입니다 — 채팅 첨부 라벨로 그대로 쓰세요. **필요한 입력:** 발주기관·공급사는 회원 ID 만 주면 됩니다. 상호·사업자번호·대표자·주소·직인은 c-market 이 회원 정보에서 직접 채웁니다. **전부 성공 또는 전부 실패입니다.** 지원하지 않는 서류가 하나라도 섞이면(400) 아무것도 만들지 않습니다. 렌더가 필요한 서류를 요청하면서 `contract` 를 빠뜨려도 마찬가지입니다(422). **135(수의계약체결제한여부확인서)를 요청하면 추가 입력이 필요합니다.** `contract.subject`(발주내용)·`contract.category`(계약구분)·`contract.buyerDepartment`(발주부서)가 필수이고, `documentInputs.contractRestrictionConfirm.answers`에 서식 ①~⑧에 대한 **계약상대자**의 답변 8개를 순서대로 담아야 합니다(c-market 이 대신 만들어낼 수 없는 값입니다). ⑨(발주자 확인사항)는 `documentInputs.contractRestrictionConfirm.buyerConfirmation`으로 선택 전달하며, 생략하면 서식에 빈칸으로 인쇄됩니다. 문항 ①~⑧의 원문은 `answers` 필드 설명을 참고하세요. **164(퇴직자영입현황확인서)를 요청하면 퇴직자 명단이 필요합니다.** `contract.subject`(서식의 \"수의계약 대상건명\")가 필수이고, `documentInputs.retireeRoster.rows` 에 명단을 넣습니다(성명·직급 필수, 직급·입사일·근무기간·비고 선택, 최대 50행). **퇴직자가 없으면 `rows` 를 빈 배열로 보내세요** — 서식에 \"해당사항 없음\"으로 인쇄됩니다. 블록 자체를 생략하면 422 입니다(\"퇴직자 없음\"과 \"확인하지 않음\"을 구분할 수 없기 때문입니다). **승낙사항(4·184·185·186·189·197·208)을 요청하면 `contract.subject`(계약건명)가 필수입니다.** 서식 상단 \"건명\" 칸에 인쇄되는 값이라 비면 어느 계약의 승낙인지 알 수 없습니다. 그 외 추가 입력은 없습니다 — 갑(발주기관) 서명란은 `buyerId` 로, 을(공급사) 서명란은 `supplierId` 로 c-market 이 채웁니다. 발주기관이 기관 전용 승낙사항 서식을 쓰면 요청한 코드 그대로 응답하되 PDF 는 그 기관 서식으로 발급됩니다. **응답의 `fileUrl` 은 만료되지 않습니다.** 채팅 메시지 등에 그대로 저장해 두어도 됩니다. **생성 가능한 회원 범위:** 조회와 같습니다 — 이 API 키에 설정된 대행 범위 안의 회원만 가능합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
1756
|
+
* 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `paperCodes` 와 같은 순서로 같은 개수가 돌아옵니다.** 각 항목의 `fileUrl` 을 그대로 쓰면 되고, `paperCode` 로 어느 요청에 대한 결과인지 대응시킬 수 있습니다. **`name` 의 출처는 서류에 따라 다릅니다.** 시스템이 렌더한 서류는 계약서류명이고, 공급사 사전등록 3종(11·12·13)은 **공급사가 등록한 원본 파일명**입니다 — 채팅 첨부 라벨로 그대로 쓰세요. **필요한 입력:** 발주기관·공급사는 회원 ID 만 주면 됩니다. 상호·사업자번호·대표자·주소·직인은 c-market 이 회원 정보에서 직접 채웁니다. **전부 성공 또는 전부 실패입니다.** 지원하지 않는 서류가 하나라도 섞이면(400) 아무것도 만들지 않습니다. 렌더가 필요한 서류를 요청하면서 `contract` 를 빠뜨려도 마찬가지입니다(422). **135(수의계약체결제한여부확인서)를 요청하면 추가 입력이 필요합니다.** `contract.subject`(발주내용)·`contract.category`(계약구분)·`contract.buyerDepartment`(발주부서)가 필수이고, `documentInputs.contractRestrictionConfirm.answers`에 서식 ①~⑧에 대한 **계약상대자**의 답변 8개를 순서대로 담아야 합니다(c-market 이 대신 만들어낼 수 없는 값입니다). ⑨(발주자 확인사항)는 `documentInputs.contractRestrictionConfirm.buyerConfirmation`으로 선택 전달하며, 생략하면 서식에 빈칸으로 인쇄됩니다. 문항 ①~⑧의 원문은 `answers` 필드 설명을 참고하세요. **164(퇴직자영입현황확인서)를 요청하면 퇴직자 명단이 필요합니다.** `contract.subject`(서식의 \"수의계약 대상건명\")가 필수이고, `documentInputs.retireeRoster.rows` 에 명단을 넣습니다(성명·직급 필수, 직급·입사일·근무기간·비고 선택, 최대 50행). **퇴직자가 없으면 `rows` 를 빈 배열로 보내세요** — 서식에 \"해당사항 없음\"으로 인쇄됩니다. 블록 자체를 생략하면 422 입니다(\"퇴직자 없음\"과 \"확인하지 않음\"을 구분할 수 없기 때문입니다). **승낙사항(4·184·185·186·189·197·208)을 요청하면 `contract.subject`(계약건명)가 필수입니다.** 서식 상단 \"건명\" 칸에 인쇄되는 값이라 비면 어느 계약의 승낙인지 알 수 없습니다. 그 외 추가 입력은 없습니다 — 갑(발주기관) 서명란은 `buyerId` 로, 을(공급사) 서명란은 `supplierId` 로 c-market 이 채웁니다. 발주기관이 기관 전용 승낙사항 서식을 쓰면 요청한 코드 그대로 응답하되 PDF 는 그 기관 서식으로 발급됩니다. **응답의 `fileUrl` 은 만료되지 않습니다.** 채팅 메시지 등에 그대로 저장해 두어도 됩니다. **생성 가능한 회원 범위:** 조회와 같습니다 — 이 API 키에 설정된 대행 범위 안의 회원만 가능합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수. --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidId}/contract-documents` 가 v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
|
|
1111
1757
|
* @summary 계약서류 생성
|
|
1112
1758
|
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
1113
1759
|
* @param {CreateExternalContractDocumentsRequestDto} createExternalContractDocumentsRequestDto
|
|
@@ -1124,7 +1770,43 @@ export const PartnerV2ApiFp = function (configuration) {
|
|
|
1124
1770
|
});
|
|
1125
1771
|
},
|
|
1126
1772
|
/**
|
|
1127
|
-
*
|
|
1773
|
+
* 수신 주소와 구독할 이벤트를 등록합니다. **호출 시점:** 연동 초기 1회. 수신 주소가 바뀌면 새로 만들지 말고 `PATCH` 로 고치세요 — 그래야 시크릿과 전송 이력이 유지됩니다. **서명 시크릿은 이 응답에서 한 번만 나갑니다.** 서버는 해시만 보관하므로 조회로 다시 받을 수 없습니다. 응답의 `secret` 을 즉시 안전한 곳에 보관하세요. 잃어버렸다면 복구가 아니라 `POST /v2/webhook-endpoints/{endpointId}/rotate-secret` 으로 **재발급**해야 합니다. **거절되는 경우와 고치는 법:** - `400` — `url` 이 HTTPS 가 아니거나 형식이 잘못됨, `eventTypes` 가 비었거나 목록 밖 값 (`ping` 은 구독 불가). 값을 고쳐 재시도하세요. - `400` — `Idempotency-Key` 헤더 누락/형식 오류. UUID v4 를 실어 보내세요. - `403` — 토큰에 `webhooks:write` 스코프가 없음. 키 발급 설정을 넓혀야 합니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. ### 서명 검증 (필수) 발송 요청마다 헤더 `X-CMarket-Signature` 가 실립니다. ``` X-CMarket-Signature: t=<unix초>,v1=<hex> ``` `v1` 은 `HMAC-SHA256(secret, \"${t}.${요청 본문 원문}\")` 의 소문자 hex 입니다. 1. 헤더를 `t` 와 `v1` 로 나눕니다. 2. `\"${t}.${본문}\"` 을 만듭니다. **본문은 파싱 전 원문 바이트**여야 합니다 — JSON 을 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. 등록 시 받은 시크릿으로 HMAC-SHA256 을 계산해 `v1` 과 비교합니다. 비교는 **상수 시간** 비교 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `t` 가 현재 시각으로부터 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). ### 중복 제거 `X-CMarket-Event-Id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. ### 응답과 재시도 2xx 를 돌려주면 성공입니다. 그 외(또는 무응답)는 실패로 보고 최대 7회 재시도합니다 — 간격은 10초 → 1분 → 5분 → 30분 → 2시간 → 6시간 → 24시간 입니다. 처리 시간이 길면 먼저 2xx 를 돌려주고 비동기로 처리하세요. 연속 실패가 20회에 닿으면 구독이 자동으로 `DISABLED` 로 내려가고 발송이 멈춥니다. 수신측을 고친 뒤 `PATCH /v2/webhook-endpoints/{endpointId}` 에 `{\"status\":\"ACTIVE\"}` 로 되살리세요. ### 구독 가능한 이벤트 `bid.closed` · `bid.awarded` · `bid.failed` · `bid.canceled` · `bid.award_reverted` `ping` 은 연결 확인 전용이라 구독할 수 없습니다 — 테스트 발송 경로에서만 나갑니다. ### 놓친 이벤트 확인 `GET /v2/webhook-deliveries` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
|
|
1774
|
+
* @summary 웹훅 구독 등록
|
|
1775
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
1776
|
+
* @param {CreateWebhookEndpointRequestDto} createWebhookEndpointRequestDto
|
|
1777
|
+
* @param {*} [options] Override http request option.
|
|
1778
|
+
* @throws {RequiredError}
|
|
1779
|
+
*/
|
|
1780
|
+
createWebhookEndpoint(idempotencyKey, createWebhookEndpointRequestDto, options) {
|
|
1781
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1782
|
+
var _a, _b, _c;
|
|
1783
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.createWebhookEndpoint(idempotencyKey, createWebhookEndpointRequestDto, options);
|
|
1784
|
+
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1785
|
+
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.createWebhookEndpoint']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1786
|
+
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
1787
|
+
});
|
|
1788
|
+
},
|
|
1789
|
+
/**
|
|
1790
|
+
* 구독을 삭제합니다. 이후 그 주소로는 아무 이벤트도 발송되지 않습니다. **호출 시점:** 연동을 종료할 때. 잠시만 멈추려면 삭제하지 말고 `PATCH … {\"status\":\"DISABLED\"}` 를 쓰세요 — 시크릿과 이벤트 구성이 남아 그대로 되살릴 수 있습니다. **되돌릴 수 없습니다.** 다시 등록하면 새 구독이고 서명 시크릿도 새 값입니다. **`If-Match` 가 필수입니다.** `GET` 으로 받은 `ETag` 를 실어 보내세요. - `428` — 헤더 누락. 조회 후 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다(누군가 수정했거나 발송기가 상태를 내렸습니다). 다시 조회해 정말 지울 대상이 맞는지 확인하고 최신 `ETag` 로 재시도하세요. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
1791
|
+
* @summary 웹훅 구독 삭제
|
|
1792
|
+
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
1793
|
+
* @param {string} ifMatch
|
|
1794
|
+
* @param {string} ifMatch2 직전 조회 응답의 `ETag` 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
|
|
1795
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
1796
|
+
* @param {*} [options] Override http request option.
|
|
1797
|
+
* @throws {RequiredError}
|
|
1798
|
+
*/
|
|
1799
|
+
deleteWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, options) {
|
|
1800
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1801
|
+
var _a, _b, _c;
|
|
1802
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.deleteWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, options);
|
|
1803
|
+
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1804
|
+
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.deleteWebhookEndpoint']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1805
|
+
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
1806
|
+
});
|
|
1807
|
+
},
|
|
1808
|
+
/**
|
|
1809
|
+
* 무인증 — `fileKey` 자체가 capability 다(V5 `/download/{fileKey}` 와 같은 보안 모델). 파트너 응답의 `fileUrl`/`fullUrl` 이 이 URL 을 가리킨다. 요청 시점에 서명하므로 URL 을 저장해 두어도 만료되지 않는다. 응답은 실제 저장소 URL 로의 302 리다이렉트이며 리다이렉트 타깃은 1시간 뒤 만료되므로 302 자체를 캐시하지 말 것(`Cache-Control: no-store`). --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — `GET /v2/files/{fileKey}` 가 파일 메타와 `downloadUrl` 을 v2 응답 규약으로 돌려줍니다. 이 안정 URL 은 파트너 응답의 `fileUrl`/`fullUrl` 이 가리키는 주소라 계속 유지되며 중단 일정은 없습니다.
|
|
1128
1810
|
* @summary 파일 다운로드 — 안정 URL(302)
|
|
1129
1811
|
* @param {string} fileKey 파일 키 — UUIDv4 hex 32자. 업로드(`POST /v1|/v2/files`) 응답에서 받은 값.
|
|
1130
1812
|
* @param {*} [options] Override http request option.
|
|
@@ -1155,6 +1837,22 @@ export const PartnerV2ApiFp = function (configuration) {
|
|
|
1155
1837
|
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
1156
1838
|
});
|
|
1157
1839
|
},
|
|
1840
|
+
/**
|
|
1841
|
+
* 공고의 납품·검수·계약완료 진행 상태를 조회합니다. 검수완료 전송의 읽기 카운터파트입니다. **세 축은 서로 다른 사건입니다.** - `delivered`: 낙찰 공급사가 납품(결과확인)을 보고했습니다. - `confirmed`/`confirmedAt`: 발주기관이 검수를 확인했습니다. - `contractCompletedAt`: 검수완료 전송이 원장에 반영된 시각입니다. 검수완료 전송(`POST /v2/bids/{bidId}/acceptance`)이 성사되었는지는 `contractCompletedAt` 이 채워졌는지로 확인하세요. **필수 스코프:** `contracts:read`
|
|
1842
|
+
* @summary 검수 현황 조회
|
|
1843
|
+
* @param {string} bidId 공고 ID(= backend bidId = 등록 응답의 bidNo).
|
|
1844
|
+
* @param {*} [options] Override http request option.
|
|
1845
|
+
* @throws {RequiredError}
|
|
1846
|
+
*/
|
|
1847
|
+
getBidAcceptance(bidId, options) {
|
|
1848
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1849
|
+
var _a, _b, _c;
|
|
1850
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.getBidAcceptance(bidId, options);
|
|
1851
|
+
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1852
|
+
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.getBidAcceptance']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1853
|
+
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
1854
|
+
});
|
|
1855
|
+
},
|
|
1158
1856
|
/**
|
|
1159
1857
|
* 공고의 응찰 참여 업체·순위·낙찰 여부를 조회한다. scope bids:read.
|
|
1160
1858
|
* @summary 입찰 결과 조회
|
|
@@ -1172,7 +1870,7 @@ export const PartnerV2ApiFp = function (configuration) {
|
|
|
1172
1870
|
});
|
|
1173
1871
|
},
|
|
1174
1872
|
/**
|
|
1175
|
-
* 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을
|
|
1873
|
+
* 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 가시성 마스킹과는 직교한 정산 데이터이며 읽기 전용입니다. **필수 스코프:** `invoices:read` — 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
|
|
1176
1874
|
* @summary 입찰결과 정산정보 조회
|
|
1177
1875
|
* @param {string} bidId
|
|
1178
1876
|
* @param {*} [options] Override http request option.
|
|
@@ -1188,7 +1886,7 @@ export const PartnerV2ApiFp = function (configuration) {
|
|
|
1188
1886
|
});
|
|
1189
1887
|
},
|
|
1190
1888
|
/**
|
|
1191
|
-
* 낙찰 계약의 거래명세서(
|
|
1889
|
+
* 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
|
|
1192
1890
|
* @summary 거래명세서 조회
|
|
1193
1891
|
* @param {string} bidId
|
|
1194
1892
|
* @param {number} [paperCode]
|
|
@@ -1204,6 +1902,22 @@ export const PartnerV2ApiFp = function (configuration) {
|
|
|
1204
1902
|
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
1205
1903
|
});
|
|
1206
1904
|
},
|
|
1905
|
+
/**
|
|
1906
|
+
* 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **구 경로:** 버전 없는 `GET /files/{fileKey}` 는 만료 없는 안정 주소이고 파트너 응답의 `fileUrl`/`fullUrl` 이 그 값을 가리킵니다. 인증도 스코프도 없는 옛 표면이라 신규 연동은 이 엔드포인트를 쓰세요. 구 경로는 당분간 유지됩니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** 하이픈 없는 16진수 32자가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. **필수 스코프:** `files:read`
|
|
1907
|
+
* @summary 파일 조회(메타 + 내려받기 주소)
|
|
1908
|
+
* @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(하이픈 없는 16진수 32자).
|
|
1909
|
+
* @param {*} [options] Override http request option.
|
|
1910
|
+
* @throws {RequiredError}
|
|
1911
|
+
*/
|
|
1912
|
+
getFileMeta(fileKey, options) {
|
|
1913
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1914
|
+
var _a, _b, _c;
|
|
1915
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.getFileMeta(fileKey, options);
|
|
1916
|
+
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1917
|
+
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.getFileMeta']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1918
|
+
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
1919
|
+
});
|
|
1920
|
+
},
|
|
1207
1921
|
/**
|
|
1208
1922
|
* 등록한 계약의 계산서 발행 상태를 확인합니다. **언제 쓰나:** 씨마켓이 보내는 발행완료 통지를 놓쳤을 때의 **복구 경로**입니다. 평상시에는 통지를 받아 처리하고, 상태가 어긋난 것 같을 때 이 API 로 되읽으세요. **필수 스코프:** `contracts:read`
|
|
1209
1923
|
* @summary 계산서 발행 상태 조회
|
|
@@ -1221,7 +1935,7 @@ export const PartnerV2ApiFp = function (configuration) {
|
|
|
1221
1935
|
});
|
|
1222
1936
|
},
|
|
1223
1937
|
/**
|
|
1224
|
-
* 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write`
|
|
1938
|
+
* 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
|
|
1225
1939
|
* @summary 공급사 카드결제 가능 여부
|
|
1226
1940
|
* @param {string} memberId 계약업체 회원 ID
|
|
1227
1941
|
* @param {*} [options] Override http request option.
|
|
@@ -1236,6 +1950,38 @@ export const PartnerV2ApiFp = function (configuration) {
|
|
|
1236
1950
|
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
1237
1951
|
});
|
|
1238
1952
|
},
|
|
1953
|
+
/**
|
|
1954
|
+
* 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
|
|
1955
|
+
* @summary 공급사 카드결제 가능 여부
|
|
1956
|
+
* @param {string} memberId 계약업체 회원 ID
|
|
1957
|
+
* @param {*} [options] Override http request option.
|
|
1958
|
+
* @throws {RequiredError}
|
|
1959
|
+
*/
|
|
1960
|
+
getSupplierCardPayableV2(memberId, options) {
|
|
1961
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1962
|
+
var _a, _b, _c;
|
|
1963
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.getSupplierCardPayableV2(memberId, options);
|
|
1964
|
+
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1965
|
+
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.getSupplierCardPayableV2']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1966
|
+
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
1967
|
+
});
|
|
1968
|
+
},
|
|
1969
|
+
/**
|
|
1970
|
+
* 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
|
|
1971
|
+
* @summary 웹훅 구독 단건 조회
|
|
1972
|
+
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
1973
|
+
* @param {*} [options] Override http request option.
|
|
1974
|
+
* @throws {RequiredError}
|
|
1975
|
+
*/
|
|
1976
|
+
getWebhookEndpoint(endpointId, options) {
|
|
1977
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1978
|
+
var _a, _b, _c;
|
|
1979
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.getWebhookEndpoint(endpointId, options);
|
|
1980
|
+
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1981
|
+
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.getWebhookEndpoint']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1982
|
+
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
1983
|
+
});
|
|
1984
|
+
},
|
|
1239
1985
|
/**
|
|
1240
1986
|
* ERP 연동 직전 회선·인증 endpoint 동작 확인용.
|
|
1241
1987
|
* @summary Partner API 헬스체크
|
|
@@ -1252,20 +1998,50 @@ export const PartnerV2ApiFp = function (configuration) {
|
|
|
1252
1998
|
});
|
|
1253
1999
|
},
|
|
1254
2000
|
/**
|
|
1255
|
-
*
|
|
1256
|
-
* @summary
|
|
2001
|
+
* 공고의 계약서류 목록과 내려받기 주소를 조회합니다. **목록에 실리는 것:** 공고 전체에 공통인 서류(약관·자동생성 공통본)와 낙찰자에게 귀속된 서류를 함께 싣습니다. 낙찰자 귀속 서류는 `winnerSequence` 에 그 낙찰자의 응찰 순번이 들어갑니다. **아직 없는 서류도 실립니다.** 공고가 제출을 요구했지만 아직 올라오지 않은 서류는 `fileKey: null` 로 나타나므로, 제출 여부는 이 값으로 판정하세요. **자동생성 서류:** `autoGenerated: true` 인 서류는 c-market 이 만들어 줍니다. 만드는 중이면 `generationState` 가 `QUEUED`/`PROCESSING` 이고 `downloadUrl` 이 아직 없습니다. `DEAD_LETTER` 는 생성이 실패해 멈춘 상태이며, 같은 경로의 POST(재생성)로 다시 큐에 올립니다. **내려받기:** `downloadUrl` 은 유효기간 1시간의 서명 주소입니다. 저장해 두고 재사용하지 마시고 필요할 때 이 엔드포인트를 다시 호출하세요. 기간에 얽매이지 않으려면 `fileKey` 를 보관하시고 파일 내려받기 경로를 사용하세요. **보이는 범위:** 서버가 공고 낙찰방법과 진행 단계로 결정합니다. 응답을 그대로 사용하시고 클라이언트에서 다시 거르지 마세요. **필수 스코프:** `contracts:read`
|
|
2002
|
+
* @summary 계약서류 목록 조회
|
|
2003
|
+
* @param {string} bidId 공고번호(buy_idx, 예 CM…) 또는 외부 구매번호(bid_puchase_no).
|
|
2004
|
+
* @param {*} [options] Override http request option.
|
|
2005
|
+
* @throws {RequiredError}
|
|
2006
|
+
*/
|
|
2007
|
+
listBidContractDocuments(bidId, options) {
|
|
2008
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
2009
|
+
var _a, _b, _c;
|
|
2010
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.listBidContractDocuments(bidId, options);
|
|
2011
|
+
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
2012
|
+
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.listBidContractDocuments']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
2013
|
+
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
2014
|
+
});
|
|
2015
|
+
},
|
|
2016
|
+
/**
|
|
2017
|
+
* 공고에 응찰한 업체 목록을 조회합니다. 스코프 `bids:read` 필수. **보이는 범위는 공고의 낙찰방법과 진행 단계가 결정합니다.** 개찰 전에는 업체명이 가려지고 (`companyName: null`), 순위는 산정 전까지 `null` 입니다. 이 판정은 서버가 소유하므로 응답을 그대로 사용하시고 클라이언트에서 다시 계산하지 마세요. 같은 목록이 `GET /v2/bids/{bidId}` 응답의 `participants` 에도 실립니다 — 응찰 현황만 필요하면 이 엔드포인트가 가볍습니다.
|
|
2018
|
+
* @summary 응찰 현황 조회
|
|
1257
2019
|
* @param {string} bidId 공고 식별자(등록 응답의 bidId).
|
|
1258
|
-
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
1259
|
-
* @param {IssueTaxInvoiceRequestDto} issueTaxInvoiceRequestDto
|
|
1260
2020
|
* @param {*} [options] Override http request option.
|
|
1261
2021
|
* @throws {RequiredError}
|
|
1262
2022
|
*/
|
|
1263
|
-
|
|
2023
|
+
listBidParticipants(bidId, options) {
|
|
2024
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
2025
|
+
var _a, _b, _c;
|
|
2026
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.listBidParticipants(bidId, options);
|
|
2027
|
+
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
2028
|
+
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.listBidParticipants']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
2029
|
+
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
2030
|
+
});
|
|
2031
|
+
},
|
|
2032
|
+
/**
|
|
2033
|
+
* 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에는 `ETag` 가 실리므로, 다음 요청에 `If-None-Match` 로 되보내면 결과가 그대로일 때 `304` 를 본문 없이 받습니다 — 마감을 기다리는 동안의 전송량이 사라집니다. **식별자 전달:** `?bidIds=A,B,C`(쉼표) 또는 `?bidIds=A&bidIds=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다 — 요청한 건수와 받은 건수가 다를 수 있으니 `bidId` 로 대조하세요. **목록이 길어 URL 이 부담되면** `POST /v2/bid-results/query` 를 쓰세요. 응답은 같습니다.
|
|
2034
|
+
* @summary 입찰 결과 배치 조회
|
|
2035
|
+
* @param {string} bidIds 조회할 공고 식별자 목록. 쉼표로 구분하거나 `bidIds` 를 반복해 전달합니다. 최대 100건.
|
|
2036
|
+
* @param {*} [options] Override http request option.
|
|
2037
|
+
* @throws {RequiredError}
|
|
2038
|
+
*/
|
|
2039
|
+
listBidResults(bidIds, options) {
|
|
1264
2040
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1265
2041
|
var _a, _b, _c;
|
|
1266
|
-
const localVarAxiosArgs = yield localVarAxiosParamCreator.
|
|
2042
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.listBidResults(bidIds, options);
|
|
1267
2043
|
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1268
|
-
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.
|
|
2044
|
+
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.listBidResults']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1269
2045
|
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
1270
2046
|
});
|
|
1271
2047
|
},
|
|
@@ -1280,29 +2056,78 @@ export const PartnerV2ApiFp = function (configuration) {
|
|
|
1280
2056
|
* @param {*} [options] Override http request option.
|
|
1281
2057
|
* @throws {RequiredError}
|
|
1282
2058
|
*/
|
|
1283
|
-
listBids(limit, cursor, bidIds, status, include, options) {
|
|
2059
|
+
listBids(limit, cursor, bidIds, status, include, options) {
|
|
2060
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
2061
|
+
var _a, _b, _c;
|
|
2062
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.listBids(limit, cursor, bidIds, status, include, options);
|
|
2063
|
+
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
2064
|
+
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.listBids']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
2065
|
+
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
2066
|
+
});
|
|
2067
|
+
},
|
|
2068
|
+
/**
|
|
2069
|
+
* 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidId}/contract-documents` 가 v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
|
|
2070
|
+
* @summary 거래에 필요한 계약서류 목록 조회
|
|
2071
|
+
* @param {string} buyerId 발주기관 회원 ID(c-market memberId).
|
|
2072
|
+
* @param {ListExternalContractDocumentsBidTypeEnum} bidType 거래유형.
|
|
2073
|
+
* @param {*} [options] Override http request option.
|
|
2074
|
+
* @throws {RequiredError}
|
|
2075
|
+
*/
|
|
2076
|
+
listExternalContractDocuments(buyerId, bidType, options) {
|
|
2077
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
2078
|
+
var _a, _b, _c;
|
|
2079
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.listExternalContractDocuments(buyerId, bidType, options);
|
|
2080
|
+
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
2081
|
+
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.listExternalContractDocuments']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
2082
|
+
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
2083
|
+
});
|
|
2084
|
+
},
|
|
2085
|
+
/**
|
|
2086
|
+
* 기관에 공유된 물품 중 **아직 전송되지 않은 것**을 조회합니다. **증분 피드입니다.** 가져간 물품을 `POST /v2/products/receipts` 로 수신확인하면 다음 조회 결과에서 빠집니다. 수신확인을 하지 않으면 같은 물품이 계속 내려옵니다. **권장 흐름:** 조회 → 자기 시스템에 저장 → 저장에 성공한 물품 코드만 수신확인. 저장 전에 수신확인하면 그 물품은 다시 받을 수 없습니다. **조회 범위:** 요청 키가 대행하는 기관 그룹입니다. 기관 그룹이 설정되지 않은 키는 403 입니다. **필수 스코프:** `products:read`
|
|
2087
|
+
* @summary 물품 카탈로그 조회
|
|
2088
|
+
* @param {*} [options] Override http request option.
|
|
2089
|
+
* @throws {RequiredError}
|
|
2090
|
+
*/
|
|
2091
|
+
listProducts(options) {
|
|
2092
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
2093
|
+
var _a, _b, _c;
|
|
2094
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.listProducts(options);
|
|
2095
|
+
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
2096
|
+
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.listProducts']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
2097
|
+
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
2098
|
+
});
|
|
2099
|
+
},
|
|
2100
|
+
/**
|
|
2101
|
+
* 이 API 키의 웹훅 발송 시도를 최신순으로 조회합니다. 보낸 본문·수신측 응답 상태· 다음 재시도 예정 시각이 함께 실립니다. **호출 시점:** - 수신측 장애로 놓친 이벤트를 메울 때. 이 엔드포인트가 웹훅의 **폴링 대체 경로**입니다 — `status=EXHAUSTED` 로 걸러 다시 처리하면 됩니다. - \"이벤트가 안 온다\" 를 진단할 때. 발송 시도 자체가 없는지(구독·이벤트 타입 문제), 시도했지만 실패했는지(`responseStatus`·`responseBodyExcerpt`)를 여기서 가릅니다. **같은 이벤트가 여러 행으로 보입니다.** 재시도마다 한 행이며 `eventId` 가 같고 `attempt` 만 올라갑니다. 처리 여부는 `eventId` 기준으로 판단하세요. **페이지네이션:** `nextCursor` 를 다음 요청의 `cursor` 로 전달합니다. null 이면 마지막 페이지입니다. **`400`:** `status` 가 허용 값 밖이거나 `limit` 이 범위를 벗어났습니다 — 값을 고쳐 재시도하세요. **필수 스코프:** `webhooks:read`
|
|
2102
|
+
* @summary 웹훅 전송 이력 조회
|
|
2103
|
+
* @param {string} [endpointId] 이 구독의 전송만 조회합니다. 미지정이면 이 키의 모든 구독을 함께 조회합니다.
|
|
2104
|
+
* @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
|
|
2105
|
+
* @param {number} [limit] 페이지 크기(1~200, 기본 50).
|
|
2106
|
+
* @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 `nextCursor` 를 그대로 전달합니다. 미지정 시 첫 페이지.
|
|
2107
|
+
* @param {*} [options] Override http request option.
|
|
2108
|
+
* @throws {RequiredError}
|
|
2109
|
+
*/
|
|
2110
|
+
listWebhookDeliveries(endpointId, status, limit, cursor, options) {
|
|
1284
2111
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1285
2112
|
var _a, _b, _c;
|
|
1286
|
-
const localVarAxiosArgs = yield localVarAxiosParamCreator.
|
|
2113
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.listWebhookDeliveries(endpointId, status, limit, cursor, options);
|
|
1287
2114
|
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1288
|
-
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.
|
|
2115
|
+
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.listWebhookDeliveries']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1289
2116
|
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
1290
2117
|
});
|
|
1291
2118
|
},
|
|
1292
2119
|
/**
|
|
1293
|
-
*
|
|
1294
|
-
* @summary
|
|
1295
|
-
* @param {string} buyerId 발주기관 회원 ID(c-market memberId).
|
|
1296
|
-
* @param {ListExternalContractDocumentsBidTypeEnum} bidType 거래유형.
|
|
2120
|
+
* 이 API 키가 등록한 웹훅 구독을 모두 조회합니다. **호출 시점:** 연동 상태를 점검할 때, 또는 발송이 멈춘 이유(`status`·`consecutiveFailures`)를 확인할 때. 서명 시크릿은 여기에 실리지 않습니다. **필수 스코프:** `webhooks:read` ### 서명 검증 (필수) 발송 요청마다 헤더 `X-CMarket-Signature` 가 실립니다. ``` X-CMarket-Signature: t=<unix초>,v1=<hex> ``` `v1` 은 `HMAC-SHA256(secret, \"${t}.${요청 본문 원문}\")` 의 소문자 hex 입니다. 1. 헤더를 `t` 와 `v1` 로 나눕니다. 2. `\"${t}.${본문}\"` 을 만듭니다. **본문은 파싱 전 원문 바이트**여야 합니다 — JSON 을 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. 등록 시 받은 시크릿으로 HMAC-SHA256 을 계산해 `v1` 과 비교합니다. 비교는 **상수 시간** 비교 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `t` 가 현재 시각으로부터 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). ### 중복 제거 `X-CMarket-Event-Id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. ### 응답과 재시도 2xx 를 돌려주면 성공입니다. 그 외(또는 무응답)는 실패로 보고 최대 7회 재시도합니다 — 간격은 10초 → 1분 → 5분 → 30분 → 2시간 → 6시간 → 24시간 입니다. 처리 시간이 길면 먼저 2xx 를 돌려주고 비동기로 처리하세요. 연속 실패가 20회에 닿으면 구독이 자동으로 `DISABLED` 로 내려가고 발송이 멈춥니다. 수신측을 고친 뒤 `PATCH /v2/webhook-endpoints/{endpointId}` 에 `{\"status\":\"ACTIVE\"}` 로 되살리세요. ### 구독 가능한 이벤트 `bid.closed` · `bid.awarded` · `bid.failed` · `bid.canceled` · `bid.award_reverted` `ping` 은 연결 확인 전용이라 구독할 수 없습니다 — 테스트 발송 경로에서만 나갑니다. ### 놓친 이벤트 확인 `GET /v2/webhook-deliveries` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
|
|
2121
|
+
* @summary 웹훅 구독 목록 조회
|
|
1297
2122
|
* @param {*} [options] Override http request option.
|
|
1298
2123
|
* @throws {RequiredError}
|
|
1299
2124
|
*/
|
|
1300
|
-
|
|
2125
|
+
listWebhookEndpoints(options) {
|
|
1301
2126
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1302
2127
|
var _a, _b, _c;
|
|
1303
|
-
const localVarAxiosArgs = yield localVarAxiosParamCreator.
|
|
2128
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.listWebhookEndpoints(options);
|
|
1304
2129
|
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1305
|
-
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.
|
|
2130
|
+
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.listWebhookEndpoints']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1306
2131
|
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
1307
2132
|
});
|
|
1308
2133
|
},
|
|
@@ -1341,6 +2166,22 @@ export const PartnerV2ApiFp = function (configuration) {
|
|
|
1341
2166
|
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
1342
2167
|
});
|
|
1343
2168
|
},
|
|
2169
|
+
/**
|
|
2170
|
+
* `GET /v2/bid-results` 와 **완전히 같은 조회**이며, 식별자 목록을 본문으로 받습니다. 스코프 `bids:read`. 공고 식별자 100건이면 URL 이 1KB를 넘습니다 — 중간 프록시가 긴 URL 을 자르는 환경을 위한 대체 경로입니다. **부수효과가 없으므로 `Idempotency-Key` 는 필요하지 않습니다.** POST 인 것은 전송 형태의 문제일 뿐이며, 가능하면 캐시·`ETag` 가 동작하는 `GET` 쪽을 쓰세요.
|
|
2171
|
+
* @summary 입찰 결과 배치 조회 (본문 전달)
|
|
2172
|
+
* @param {BidResultsBatchRequestDto} bidResultsBatchRequestDto
|
|
2173
|
+
* @param {*} [options] Override http request option.
|
|
2174
|
+
* @throws {RequiredError}
|
|
2175
|
+
*/
|
|
2176
|
+
queryBidResults(bidResultsBatchRequestDto, options) {
|
|
2177
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
2178
|
+
var _a, _b, _c;
|
|
2179
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.queryBidResults(bidResultsBatchRequestDto, options);
|
|
2180
|
+
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
2181
|
+
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.queryBidResults']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
2182
|
+
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
2183
|
+
});
|
|
2184
|
+
},
|
|
1344
2185
|
/**
|
|
1345
2186
|
* 공고의 자동생성 계약서류(발주서·공고결과·표준계약서 등)를 생성/재생성합니다. **V6 대응:** `RegenerateAllContractPdfsCommand` — 웹 어드민의 \"계약 서류 일괄 재생성\"과 동일 경로. **호출 시점:** 낙찰(계약 시작) 후 계약서류가 필요하거나, 생성에 실패한 서류를 다시 만들 때. **부수효과:** - 생성 실패(DEAD_LETTER) 상태의 자동생성 PDF 가 재생성 큐에 등록됩니다(비동기). - 승낙사항(ACCEPTANCE) 계열은 운영자 승인 워크플로가 필요해 이 경로에서 제외됩니다. **응답:** 즉시 파일이 아니라 큐 등록 결과(`enqueuedCount`/`skippedCount`)를 반환합니다. 잠시 후 자동 생성됩니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
1346
2187
|
* @summary 계약서류 생성(재생성)
|
|
@@ -1379,14 +2220,15 @@ export const PartnerV2ApiFp = function (configuration) {
|
|
|
1379
2220
|
/**
|
|
1380
2221
|
* 입찰 정보 등록. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수.
|
|
1381
2222
|
* @summary 입찰 정보 전송(등록)
|
|
2223
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
|
|
1382
2224
|
* @param {CreateBidRequestDto} createBidRequestDto
|
|
1383
2225
|
* @param {*} [options] Override http request option.
|
|
1384
2226
|
* @throws {RequiredError}
|
|
1385
2227
|
*/
|
|
1386
|
-
registerBid(createBidRequestDto, options) {
|
|
2228
|
+
registerBid(idempotencyKey, createBidRequestDto, options) {
|
|
1387
2229
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1388
2230
|
var _a, _b, _c;
|
|
1389
|
-
const localVarAxiosArgs = yield localVarAxiosParamCreator.registerBid(createBidRequestDto, options);
|
|
2231
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.registerBid(idempotencyKey, createBidRequestDto, options);
|
|
1390
2232
|
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1391
2233
|
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.registerBid']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1392
2234
|
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
@@ -1410,20 +2252,54 @@ export const PartnerV2ApiFp = function (configuration) {
|
|
|
1410
2252
|
});
|
|
1411
2253
|
},
|
|
1412
2254
|
/**
|
|
1413
|
-
*
|
|
1414
|
-
* @summary
|
|
2255
|
+
* 확정된 낙찰을 되돌려 공고를 낙찰대기(PENDING_AWARD) 상태로 보냅니다. 스코프 `awards:write` + `Idempotency-Key` 헤더 필수. **호출 시점:** 낙찰자가 계약을 포기했거나 낙찰 처리 자체가 잘못됐을 때. 되돌린 뒤 같은 공고에 다시 낙찰을 등록할 수 있습니다. **되돌릴 수 없는 경우 → 409:** - 수수료 결제가 이미 완료된 공고 - 세금계산서가 이미 발행된 공고 - 수입권공매 계열 낙찰방법(다수 낙찰자 구조라 되돌리기 단위가 다릅니다) **사유는 필수입니다** — 감사 대상 행위이며 공고 이력에 남습니다. **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
|
|
2256
|
+
* @summary 낙찰 되돌리기
|
|
1415
2257
|
* @param {string} bidId 공고 식별자(등록 응답의 bidId).
|
|
2258
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
|
|
2259
|
+
* @param {RevertAwardRequestDto} revertAwardRequestDto
|
|
2260
|
+
* @param {*} [options] Override http request option.
|
|
2261
|
+
* @throws {RequiredError}
|
|
2262
|
+
*/
|
|
2263
|
+
revertAward(bidId, idempotencyKey, revertAwardRequestDto, options) {
|
|
2264
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
2265
|
+
var _a, _b, _c;
|
|
2266
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.revertAward(bidId, idempotencyKey, revertAwardRequestDto, options);
|
|
2267
|
+
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
2268
|
+
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.revertAward']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
2269
|
+
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
2270
|
+
});
|
|
2271
|
+
},
|
|
2272
|
+
/**
|
|
2273
|
+
* 서명 시크릿을 새로 발급합니다. 응답의 `secretVersion` 이 1 올라갑니다. **호출 시점:** 시크릿을 분실했거나 유출이 의심될 때, 또는 주기적 교체 정책이 있을 때. **새 시크릿은 이 응답에서 한 번만 나갑니다.** 조회로 다시 받을 수 없습니다. **옛 시크릿은 즉시 무효입니다.** 유예 기간이 없으므로, 수신측이 새 값을 반영하기 전에 도착한 이벤트는 서명 검증에 실패합니다. 배포 순서를 이렇게 잡으세요 — ① 수신측이 옛 값과 새 값을 **둘 다** 받아들이도록 배포 → ② 이 엔드포인트 호출 → ③ 응답의 새 값을 반영 → ④ 옛 값 제거. 검증 실패로 non-2xx 를 돌려주면 실패로 집계되어 20회 연속 시 구독이 중지됩니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 같은 키로 재전송하면 **새로 발급하지 않고** 처음 발급한 값을 그대로 돌려줍니다(24시간) — 네트워크 오류로 응답을 놓쳤을 때 같은 키로 다시 부르세요.
|
|
2274
|
+
* @summary 웹훅 서명 시크릿 재발급
|
|
2275
|
+
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
1416
2276
|
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
1417
|
-
* @param {SubmitNegotiationScoresRequestDto} submitNegotiationScoresRequestDto
|
|
1418
2277
|
* @param {*} [options] Override http request option.
|
|
1419
2278
|
* @throws {RequiredError}
|
|
1420
2279
|
*/
|
|
1421
|
-
|
|
2280
|
+
rotateWebhookSecret(endpointId, idempotencyKey, options) {
|
|
1422
2281
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1423
2282
|
var _a, _b, _c;
|
|
1424
|
-
const localVarAxiosArgs = yield localVarAxiosParamCreator.
|
|
2283
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.rotateWebhookSecret(endpointId, idempotencyKey, options);
|
|
1425
2284
|
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1426
|
-
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.
|
|
2285
|
+
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.rotateWebhookSecret']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
2286
|
+
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
2287
|
+
});
|
|
2288
|
+
},
|
|
2289
|
+
/**
|
|
2290
|
+
* 등록된 주소로 `ping` 이벤트를 즉시 1회 보내고 그 결과를 돌려줍니다. **호출 시점:** 구독을 등록한 직후, 수신 주소를 바꾼 직후, 방화벽·인증서를 손본 뒤. **응답은 발송 결과이지 요청 실패가 아닙니다.** 수신측이 받지 못해도 HTTP `200` 에 `delivered: false` 로 옵니다 — `responseStatus`(수신측 상태)와 `error`(연결 거부·타임아웃· TLS 오류)를 보고 원인을 좁히세요. 이 발송에도 실제 이벤트와 **똑같은 서명 헤더**가 실리므로 검증 코드를 그대로 시험할 수 있습니다. `ping` 은 구독 목록에 넣을 수 없는 타입이니, 수신측이 모르는 `eventType` 을 만나면 버리도록 짜여 있다면 이 확인만 실패할 수 있습니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 다시 보내려면 **새 키**를 쓰세요 — 같은 키는 24시간 동안 직전 결과를 그대로 돌려줍니다(재발송하지 않습니다).
|
|
2291
|
+
* @summary 웹훅 연결 확인 발송
|
|
2292
|
+
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
2293
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
2294
|
+
* @param {*} [options] Override http request option.
|
|
2295
|
+
* @throws {RequiredError}
|
|
2296
|
+
*/
|
|
2297
|
+
sendWebhookTestEvent(endpointId, idempotencyKey, options) {
|
|
2298
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
2299
|
+
var _a, _b, _c;
|
|
2300
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.sendWebhookTestEvent(endpointId, idempotencyKey, options);
|
|
2301
|
+
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
2302
|
+
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.sendWebhookTestEvent']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1427
2303
|
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
1428
2304
|
});
|
|
1429
2305
|
},
|
|
@@ -1431,20 +2307,42 @@ export const PartnerV2ApiFp = function (configuration) {
|
|
|
1431
2307
|
* 등록된 공고의 내용을 수정합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. 진행중/초안 상태의 공고만 수정할 수 있습니다. **부수효과:** - 변경 내용이 반영되고 수정이력이 기록됩니다. - `hideEdit=true` 면 변경이력을 비공개 처리하고 노출 카운터 증가를 생략합니다. **수정 제약:** - 낙찰방법(awardMethod)은 수정 불가(잠금). - 참여자가 있으면 입찰방식/면허/예산/품목 일부가 잠깁니다. - 마감/취소된 공고는 수정할 수 없습니다. 한 섹션을 수정하려면 해당 섹션의 필수 필드를 함께 보내야 합니다(부분 섹션은 거부됨).
|
|
1432
2308
|
* @summary 입찰 공고 수정
|
|
1433
2309
|
* @param {string} bidId 공고 식별자(등록 응답의 bidId).
|
|
2310
|
+
* @param {string} ifMatch
|
|
2311
|
+
* @param {string} ifMatch2 수정하려는 공고의 ETag(필수). 직전 `GET /v2/bids/{bidId}` 응답의 `ETag` 헤더 값을 그대로 실어 보내세요. 누락하면 428, 그 사이 공고가 바뀌었으면 412 로 거절되며 아무것도 수정되지 않습니다.
|
|
1434
2312
|
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
|
|
1435
2313
|
* @param {UpdateBidRequestDto} updateBidRequestDto
|
|
1436
2314
|
* @param {*} [options] Override http request option.
|
|
1437
2315
|
* @throws {RequiredError}
|
|
1438
2316
|
*/
|
|
1439
|
-
updateBid(bidId, idempotencyKey, updateBidRequestDto, options) {
|
|
2317
|
+
updateBid(bidId, ifMatch, ifMatch2, idempotencyKey, updateBidRequestDto, options) {
|
|
1440
2318
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1441
2319
|
var _a, _b, _c;
|
|
1442
|
-
const localVarAxiosArgs = yield localVarAxiosParamCreator.updateBid(bidId, idempotencyKey, updateBidRequestDto, options);
|
|
2320
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.updateBid(bidId, ifMatch, ifMatch2, idempotencyKey, updateBidRequestDto, options);
|
|
1443
2321
|
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1444
2322
|
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.updateBid']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1445
2323
|
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
1446
2324
|
});
|
|
1447
2325
|
},
|
|
2326
|
+
/**
|
|
2327
|
+
* 수신 주소·구독 이벤트·상태를 수정합니다. 보낸 필드만 바뀝니다. **호출 시점:** 수신 주소가 바뀌었을 때, 구독 이벤트를 늘리거나 줄일 때, 연속 실패로 자동 중지된 구독을 고친 뒤 되살릴 때(`{\"status\":\"ACTIVE\"}`). **`eventTypes` 는 치환입니다** — 보낸 목록이 곧 새 구독 목록입니다. 하나를 더하려면 기존 목록에 더한 **전체**를 보내세요. **`If-Match` 가 필수입니다.** 먼저 `GET /v2/webhook-endpoints/{endpointId}` 로 현재 `ETag` 를 받아 그대로 실어 보내세요. 이 헤더가 없으면 두 요청이 앞서거니 뒤서거니 하며 먼저 한 수정을 조용히 덮어씁니다. - `428` — 헤더를 빼먹었습니다. 조회 후 `ETag` 를 실어 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다. 다시 조회해 최신 `ETag` 로 재시도하세요. 아무것도 수정되지 않았습니다. **시크릿은 이 경로로 바뀌지 않습니다** — 재발급은 `rotate-secret` 입니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
2328
|
+
* @summary 웹훅 구독 수정
|
|
2329
|
+
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
2330
|
+
* @param {string} ifMatch
|
|
2331
|
+
* @param {string} ifMatch2 직전 조회 응답의 `ETag` 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
|
|
2332
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
2333
|
+
* @param {UpdateWebhookEndpointRequestDto} updateWebhookEndpointRequestDto
|
|
2334
|
+
* @param {*} [options] Override http request option.
|
|
2335
|
+
* @throws {RequiredError}
|
|
2336
|
+
*/
|
|
2337
|
+
updateWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, updateWebhookEndpointRequestDto, options) {
|
|
2338
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
2339
|
+
var _a, _b, _c;
|
|
2340
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.updateWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, updateWebhookEndpointRequestDto, options);
|
|
2341
|
+
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
2342
|
+
const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PartnerV2Api.updateWebhookEndpoint']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
2343
|
+
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
2344
|
+
});
|
|
2345
|
+
},
|
|
1448
2346
|
/**
|
|
1449
2347
|
* 스코프 `files:write` + `Idempotency-Key` 헤더 필수. base64 또는 url 중 정확히 하나를 제출한다.
|
|
1450
2348
|
* @summary 입찰 첨부파일 업로드(base64 또는 url) → fileKey
|
|
@@ -1470,14 +2368,27 @@ export const PartnerV2ApiFactory = function (configuration, basePath, axios) {
|
|
|
1470
2368
|
const localVarFp = PartnerV2ApiFp(configuration);
|
|
1471
2369
|
return {
|
|
1472
2370
|
/**
|
|
1473
|
-
*
|
|
1474
|
-
* @summary
|
|
1475
|
-
* @param {string}
|
|
2371
|
+
* 저장을 마친 물품을 전송완료로 표시해 다음 조회에서 제외합니다. **되돌릴 수 없습니다.** 표시한 물품은 `GET /v2/products` 로 다시 내려오지 않으므로, 자기 시스템에 저장이 끝난 뒤에 호출하세요. **표시 범위는 기관 그룹으로 잠깁니다.** 다른 기관의 물품 코드를 섞어 보내면 그 건은 표시되지 않고 `acknowledged` 가 요청 수보다 작게 돌아옵니다. **필수 스코프:** `products:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
2372
|
+
* @summary 물품 수신확인
|
|
2373
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
2374
|
+
* @param {AcknowledgeProductsRequestDto} acknowledgeProductsRequestDto
|
|
2375
|
+
* @param {*} [options] Override http request option.
|
|
2376
|
+
* @throws {RequiredError}
|
|
2377
|
+
*/
|
|
2378
|
+
acknowledgeProductReceipt(idempotencyKey, acknowledgeProductsRequestDto, options) {
|
|
2379
|
+
return localVarFp.acknowledgeProductReceipt(idempotencyKey, acknowledgeProductsRequestDto, options).then((request) => request(axios, basePath));
|
|
2380
|
+
},
|
|
2381
|
+
/**
|
|
2382
|
+
* 진행중인 공고를 취소합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. **되돌릴 수 없습니다.** 취소 사유는 필수이며 공고 이력에 남습니다. **전제조건:** 진행중(ONGOING) 상태여야 합니다. **거부:** 진행중이 아니거나 이미 취소된 공고 → 409. 타 발주처 공고 → 403. **마감과의 차이:** 취소는 공고를 무효로 되돌리는 것이고, 유찰(`POST /v2/bids/{bidId}/fail`)은 응찰을 받았으나 낙찰자를 정하지 못한 종료입니다.
|
|
2383
|
+
* @summary 공고 취소
|
|
2384
|
+
* @param {string} bidId 공고 식별자(등록 응답의 bidId).
|
|
2385
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
|
|
2386
|
+
* @param {CancelBidRequestDto} cancelBidRequestDto
|
|
1476
2387
|
* @param {*} [options] Override http request option.
|
|
1477
2388
|
* @throws {RequiredError}
|
|
1478
2389
|
*/
|
|
1479
|
-
|
|
1480
|
-
return localVarFp.
|
|
2390
|
+
cancelBid(bidId, idempotencyKey, cancelBidRequestDto, options) {
|
|
2391
|
+
return localVarFp.cancelBid(bidId, idempotencyKey, cancelBidRequestDto, options).then((request) => request(axios, basePath));
|
|
1481
2392
|
},
|
|
1482
2393
|
/**
|
|
1483
2394
|
* 낙찰 공고의 검수(납품 검수)가 완료되었음을 기록합니다. **V5 대응:** `acceptanceCompleteSend` — BidApi.xml `acceptanceComplete` 액션의 V6 후속. **호출 시점:** 낙찰자(공급사)가 납품을 완료하고 구매자가 검수를 확인한 시점. 공고 상태가 낙찰(AWARDED) 상태여야 합니다. **부수효과:** - 검수완료 상태가 기록됩니다. - 응답은 204가 아닌 200입니다 — 멱등성 인터셉터가 구체 바디를 캐시하고 SDK 가 타입드 응답을 필요로 하기 때문. **V5-compat 안내:** 거래명세서·검수보고서에 찍힐 구매사 사업자정보·담당자·작성일자 override(11종)는 modern v2 표면에서 제거됐습니다. 필요 시 V5 충실 카운터파트 `POST /v1/bids/{bidId}/acceptance`(`CompleteAcceptanceV1RequestDto`)를 사용하세요. **낙찰자 식별:** `winnerMemberId`(공급사 memberId). 내부 joinSeq 해소는 backend 가 처리합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
@@ -1503,28 +2414,29 @@ export const PartnerV2ApiFactory = function (configuration, basePath, axios) {
|
|
|
1503
2414
|
return localVarFp.completeInvoice(bidId, idempotencyKey, options).then((request) => request(axios, basePath));
|
|
1504
2415
|
},
|
|
1505
2416
|
/**
|
|
1506
|
-
* 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동
|
|
2417
|
+
* 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인되어 바로 결제할 수 있습니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 도메인 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
|
|
1507
2418
|
* @summary 결제창 발행
|
|
1508
2419
|
* @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
|
|
1509
2420
|
* @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
|
|
1510
2421
|
* @param {*} [options] Override http request option.
|
|
1511
2422
|
* @throws {RequiredError}
|
|
1512
2423
|
*/
|
|
1513
|
-
|
|
1514
|
-
return localVarFp.
|
|
2424
|
+
createCardPayment(idempotencyKey, createCardPaymentRequestDto, options) {
|
|
2425
|
+
return localVarFp.createCardPayment(idempotencyKey, createCardPaymentRequestDto, options).then((request) => request(axios, basePath));
|
|
1515
2426
|
},
|
|
1516
2427
|
/**
|
|
1517
|
-
*
|
|
1518
|
-
* @summary
|
|
1519
|
-
* @param {
|
|
2428
|
+
* 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인(APPROVED)되어 바로 결제 가능합니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. 거기서 카드를 골라 결제합니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/card-payment-requests/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요. --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
|
|
2429
|
+
* @summary 결제창 발행
|
|
2430
|
+
* @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
|
|
2431
|
+
* @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
|
|
1520
2432
|
* @param {*} [options] Override http request option.
|
|
1521
2433
|
* @throws {RequiredError}
|
|
1522
2434
|
*/
|
|
1523
|
-
|
|
1524
|
-
return localVarFp.
|
|
2435
|
+
createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options) {
|
|
2436
|
+
return localVarFp.createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options).then((request) => request(axios, basePath));
|
|
1525
2437
|
},
|
|
1526
2438
|
/**
|
|
1527
|
-
* 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `paperCodes` 와 같은 순서로 같은 개수가 돌아옵니다.** 각 항목의 `fileUrl` 을 그대로 쓰면 되고, `paperCode` 로 어느 요청에 대한 결과인지 대응시킬 수 있습니다. **`name` 의 출처는 서류에 따라 다릅니다.** 시스템이 렌더한 서류는 계약서류명이고, 공급사 사전등록 3종(11·12·13)은 **공급사가 등록한 원본 파일명**입니다 — 채팅 첨부 라벨로 그대로 쓰세요. **필요한 입력:** 발주기관·공급사는 회원 ID 만 주면 됩니다. 상호·사업자번호·대표자·주소·직인은 c-market 이 회원 정보에서 직접 채웁니다. **전부 성공 또는 전부 실패입니다.** 지원하지 않는 서류가 하나라도 섞이면(400) 아무것도 만들지 않습니다. 렌더가 필요한 서류를 요청하면서 `contract` 를 빠뜨려도 마찬가지입니다(422). **135(수의계약체결제한여부확인서)를 요청하면 추가 입력이 필요합니다.** `contract.subject`(발주내용)·`contract.category`(계약구분)·`contract.buyerDepartment`(발주부서)가 필수이고, `documentInputs.contractRestrictionConfirm.answers`에 서식 ①~⑧에 대한 **계약상대자**의 답변 8개를 순서대로 담아야 합니다(c-market 이 대신 만들어낼 수 없는 값입니다). ⑨(발주자 확인사항)는 `documentInputs.contractRestrictionConfirm.buyerConfirmation`으로 선택 전달하며, 생략하면 서식에 빈칸으로 인쇄됩니다. 문항 ①~⑧의 원문은 `answers` 필드 설명을 참고하세요. **164(퇴직자영입현황확인서)를 요청하면 퇴직자 명단이 필요합니다.** `contract.subject`(서식의 \"수의계약 대상건명\")가 필수이고, `documentInputs.retireeRoster.rows` 에 명단을 넣습니다(성명·직급 필수, 직급·입사일·근무기간·비고 선택, 최대 50행). **퇴직자가 없으면 `rows` 를 빈 배열로 보내세요** — 서식에 \"해당사항 없음\"으로 인쇄됩니다. 블록 자체를 생략하면 422 입니다(\"퇴직자 없음\"과 \"확인하지 않음\"을 구분할 수 없기 때문입니다). **승낙사항(4·184·185·186·189·197·208)을 요청하면 `contract.subject`(계약건명)가 필수입니다.** 서식 상단 \"건명\" 칸에 인쇄되는 값이라 비면 어느 계약의 승낙인지 알 수 없습니다. 그 외 추가 입력은 없습니다 — 갑(발주기관) 서명란은 `buyerId` 로, 을(공급사) 서명란은 `supplierId` 로 c-market 이 채웁니다. 발주기관이 기관 전용 승낙사항 서식을 쓰면 요청한 코드 그대로 응답하되 PDF 는 그 기관 서식으로 발급됩니다. **응답의 `fileUrl` 은 만료되지 않습니다.** 채팅 메시지 등에 그대로 저장해 두어도 됩니다. **생성 가능한 회원 범위:** 조회와 같습니다 — 이 API 키에 설정된 대행 범위 안의 회원만 가능합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
2439
|
+
* 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `paperCodes` 와 같은 순서로 같은 개수가 돌아옵니다.** 각 항목의 `fileUrl` 을 그대로 쓰면 되고, `paperCode` 로 어느 요청에 대한 결과인지 대응시킬 수 있습니다. **`name` 의 출처는 서류에 따라 다릅니다.** 시스템이 렌더한 서류는 계약서류명이고, 공급사 사전등록 3종(11·12·13)은 **공급사가 등록한 원본 파일명**입니다 — 채팅 첨부 라벨로 그대로 쓰세요. **필요한 입력:** 발주기관·공급사는 회원 ID 만 주면 됩니다. 상호·사업자번호·대표자·주소·직인은 c-market 이 회원 정보에서 직접 채웁니다. **전부 성공 또는 전부 실패입니다.** 지원하지 않는 서류가 하나라도 섞이면(400) 아무것도 만들지 않습니다. 렌더가 필요한 서류를 요청하면서 `contract` 를 빠뜨려도 마찬가지입니다(422). **135(수의계약체결제한여부확인서)를 요청하면 추가 입력이 필요합니다.** `contract.subject`(발주내용)·`contract.category`(계약구분)·`contract.buyerDepartment`(발주부서)가 필수이고, `documentInputs.contractRestrictionConfirm.answers`에 서식 ①~⑧에 대한 **계약상대자**의 답변 8개를 순서대로 담아야 합니다(c-market 이 대신 만들어낼 수 없는 값입니다). ⑨(발주자 확인사항)는 `documentInputs.contractRestrictionConfirm.buyerConfirmation`으로 선택 전달하며, 생략하면 서식에 빈칸으로 인쇄됩니다. 문항 ①~⑧의 원문은 `answers` 필드 설명을 참고하세요. **164(퇴직자영입현황확인서)를 요청하면 퇴직자 명단이 필요합니다.** `contract.subject`(서식의 \"수의계약 대상건명\")가 필수이고, `documentInputs.retireeRoster.rows` 에 명단을 넣습니다(성명·직급 필수, 직급·입사일·근무기간·비고 선택, 최대 50행). **퇴직자가 없으면 `rows` 를 빈 배열로 보내세요** — 서식에 \"해당사항 없음\"으로 인쇄됩니다. 블록 자체를 생략하면 422 입니다(\"퇴직자 없음\"과 \"확인하지 않음\"을 구분할 수 없기 때문입니다). **승낙사항(4·184·185·186·189·197·208)을 요청하면 `contract.subject`(계약건명)가 필수입니다.** 서식 상단 \"건명\" 칸에 인쇄되는 값이라 비면 어느 계약의 승낙인지 알 수 없습니다. 그 외 추가 입력은 없습니다 — 갑(발주기관) 서명란은 `buyerId` 로, 을(공급사) 서명란은 `supplierId` 로 c-market 이 채웁니다. 발주기관이 기관 전용 승낙사항 서식을 쓰면 요청한 코드 그대로 응답하되 PDF 는 그 기관 서식으로 발급됩니다. **응답의 `fileUrl` 은 만료되지 않습니다.** 채팅 메시지 등에 그대로 저장해 두어도 됩니다. **생성 가능한 회원 범위:** 조회와 같습니다 — 이 API 키에 설정된 대행 범위 안의 회원만 가능합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수. --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidId}/contract-documents` 가 v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
|
|
1528
2440
|
* @summary 계약서류 생성
|
|
1529
2441
|
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
1530
2442
|
* @param {CreateExternalContractDocumentsRequestDto} createExternalContractDocumentsRequestDto
|
|
@@ -1535,7 +2447,31 @@ export const PartnerV2ApiFactory = function (configuration, basePath, axios) {
|
|
|
1535
2447
|
return localVarFp.createExternalContractDocuments(idempotencyKey, createExternalContractDocumentsRequestDto, options).then((request) => request(axios, basePath));
|
|
1536
2448
|
},
|
|
1537
2449
|
/**
|
|
1538
|
-
*
|
|
2450
|
+
* 수신 주소와 구독할 이벤트를 등록합니다. **호출 시점:** 연동 초기 1회. 수신 주소가 바뀌면 새로 만들지 말고 `PATCH` 로 고치세요 — 그래야 시크릿과 전송 이력이 유지됩니다. **서명 시크릿은 이 응답에서 한 번만 나갑니다.** 서버는 해시만 보관하므로 조회로 다시 받을 수 없습니다. 응답의 `secret` 을 즉시 안전한 곳에 보관하세요. 잃어버렸다면 복구가 아니라 `POST /v2/webhook-endpoints/{endpointId}/rotate-secret` 으로 **재발급**해야 합니다. **거절되는 경우와 고치는 법:** - `400` — `url` 이 HTTPS 가 아니거나 형식이 잘못됨, `eventTypes` 가 비었거나 목록 밖 값 (`ping` 은 구독 불가). 값을 고쳐 재시도하세요. - `400` — `Idempotency-Key` 헤더 누락/형식 오류. UUID v4 를 실어 보내세요. - `403` — 토큰에 `webhooks:write` 스코프가 없음. 키 발급 설정을 넓혀야 합니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. ### 서명 검증 (필수) 발송 요청마다 헤더 `X-CMarket-Signature` 가 실립니다. ``` X-CMarket-Signature: t=<unix초>,v1=<hex> ``` `v1` 은 `HMAC-SHA256(secret, \"${t}.${요청 본문 원문}\")` 의 소문자 hex 입니다. 1. 헤더를 `t` 와 `v1` 로 나눕니다. 2. `\"${t}.${본문}\"` 을 만듭니다. **본문은 파싱 전 원문 바이트**여야 합니다 — JSON 을 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. 등록 시 받은 시크릿으로 HMAC-SHA256 을 계산해 `v1` 과 비교합니다. 비교는 **상수 시간** 비교 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `t` 가 현재 시각으로부터 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). ### 중복 제거 `X-CMarket-Event-Id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. ### 응답과 재시도 2xx 를 돌려주면 성공입니다. 그 외(또는 무응답)는 실패로 보고 최대 7회 재시도합니다 — 간격은 10초 → 1분 → 5분 → 30분 → 2시간 → 6시간 → 24시간 입니다. 처리 시간이 길면 먼저 2xx 를 돌려주고 비동기로 처리하세요. 연속 실패가 20회에 닿으면 구독이 자동으로 `DISABLED` 로 내려가고 발송이 멈춥니다. 수신측을 고친 뒤 `PATCH /v2/webhook-endpoints/{endpointId}` 에 `{\"status\":\"ACTIVE\"}` 로 되살리세요. ### 구독 가능한 이벤트 `bid.closed` · `bid.awarded` · `bid.failed` · `bid.canceled` · `bid.award_reverted` `ping` 은 연결 확인 전용이라 구독할 수 없습니다 — 테스트 발송 경로에서만 나갑니다. ### 놓친 이벤트 확인 `GET /v2/webhook-deliveries` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
|
|
2451
|
+
* @summary 웹훅 구독 등록
|
|
2452
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
2453
|
+
* @param {CreateWebhookEndpointRequestDto} createWebhookEndpointRequestDto
|
|
2454
|
+
* @param {*} [options] Override http request option.
|
|
2455
|
+
* @throws {RequiredError}
|
|
2456
|
+
*/
|
|
2457
|
+
createWebhookEndpoint(idempotencyKey, createWebhookEndpointRequestDto, options) {
|
|
2458
|
+
return localVarFp.createWebhookEndpoint(idempotencyKey, createWebhookEndpointRequestDto, options).then((request) => request(axios, basePath));
|
|
2459
|
+
},
|
|
2460
|
+
/**
|
|
2461
|
+
* 구독을 삭제합니다. 이후 그 주소로는 아무 이벤트도 발송되지 않습니다. **호출 시점:** 연동을 종료할 때. 잠시만 멈추려면 삭제하지 말고 `PATCH … {\"status\":\"DISABLED\"}` 를 쓰세요 — 시크릿과 이벤트 구성이 남아 그대로 되살릴 수 있습니다. **되돌릴 수 없습니다.** 다시 등록하면 새 구독이고 서명 시크릿도 새 값입니다. **`If-Match` 가 필수입니다.** `GET` 으로 받은 `ETag` 를 실어 보내세요. - `428` — 헤더 누락. 조회 후 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다(누군가 수정했거나 발송기가 상태를 내렸습니다). 다시 조회해 정말 지울 대상이 맞는지 확인하고 최신 `ETag` 로 재시도하세요. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
2462
|
+
* @summary 웹훅 구독 삭제
|
|
2463
|
+
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
2464
|
+
* @param {string} ifMatch
|
|
2465
|
+
* @param {string} ifMatch2 직전 조회 응답의 `ETag` 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
|
|
2466
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
2467
|
+
* @param {*} [options] Override http request option.
|
|
2468
|
+
* @throws {RequiredError}
|
|
2469
|
+
*/
|
|
2470
|
+
deleteWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, options) {
|
|
2471
|
+
return localVarFp.deleteWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, options).then((request) => request(axios, basePath));
|
|
2472
|
+
},
|
|
2473
|
+
/**
|
|
2474
|
+
* 무인증 — `fileKey` 자체가 capability 다(V5 `/download/{fileKey}` 와 같은 보안 모델). 파트너 응답의 `fileUrl`/`fullUrl` 이 이 URL 을 가리킨다. 요청 시점에 서명하므로 URL 을 저장해 두어도 만료되지 않는다. 응답은 실제 저장소 URL 로의 302 리다이렉트이며 리다이렉트 타깃은 1시간 뒤 만료되므로 302 자체를 캐시하지 말 것(`Cache-Control: no-store`). --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — `GET /v2/files/{fileKey}` 가 파일 메타와 `downloadUrl` 을 v2 응답 규약으로 돌려줍니다. 이 안정 URL 은 파트너 응답의 `fileUrl`/`fullUrl` 이 가리키는 주소라 계속 유지되며 중단 일정은 없습니다.
|
|
1539
2475
|
* @summary 파일 다운로드 — 안정 URL(302)
|
|
1540
2476
|
* @param {string} fileKey 파일 키 — UUIDv4 hex 32자. 업로드(`POST /v1|/v2/files`) 응답에서 받은 값.
|
|
1541
2477
|
* @param {*} [options] Override http request option.
|
|
@@ -1554,6 +2490,16 @@ export const PartnerV2ApiFactory = function (configuration, basePath, axios) {
|
|
|
1554
2490
|
getBid(bidId, options) {
|
|
1555
2491
|
return localVarFp.getBid(bidId, options).then((request) => request(axios, basePath));
|
|
1556
2492
|
},
|
|
2493
|
+
/**
|
|
2494
|
+
* 공고의 납품·검수·계약완료 진행 상태를 조회합니다. 검수완료 전송의 읽기 카운터파트입니다. **세 축은 서로 다른 사건입니다.** - `delivered`: 낙찰 공급사가 납품(결과확인)을 보고했습니다. - `confirmed`/`confirmedAt`: 발주기관이 검수를 확인했습니다. - `contractCompletedAt`: 검수완료 전송이 원장에 반영된 시각입니다. 검수완료 전송(`POST /v2/bids/{bidId}/acceptance`)이 성사되었는지는 `contractCompletedAt` 이 채워졌는지로 확인하세요. **필수 스코프:** `contracts:read`
|
|
2495
|
+
* @summary 검수 현황 조회
|
|
2496
|
+
* @param {string} bidId 공고 ID(= backend bidId = 등록 응답의 bidNo).
|
|
2497
|
+
* @param {*} [options] Override http request option.
|
|
2498
|
+
* @throws {RequiredError}
|
|
2499
|
+
*/
|
|
2500
|
+
getBidAcceptance(bidId, options) {
|
|
2501
|
+
return localVarFp.getBidAcceptance(bidId, options).then((request) => request(axios, basePath));
|
|
2502
|
+
},
|
|
1557
2503
|
/**
|
|
1558
2504
|
* 공고의 응찰 참여 업체·순위·낙찰 여부를 조회한다. scope bids:read.
|
|
1559
2505
|
* @summary 입찰 결과 조회
|
|
@@ -1565,7 +2511,7 @@ export const PartnerV2ApiFactory = function (configuration, basePath, axios) {
|
|
|
1565
2511
|
return localVarFp.getBidResults(bidId, options).then((request) => request(axios, basePath));
|
|
1566
2512
|
},
|
|
1567
2513
|
/**
|
|
1568
|
-
* 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을
|
|
2514
|
+
* 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 가시성 마스킹과는 직교한 정산 데이터이며 읽기 전용입니다. **필수 스코프:** `invoices:read` — 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
|
|
1569
2515
|
* @summary 입찰결과 정산정보 조회
|
|
1570
2516
|
* @param {string} bidId
|
|
1571
2517
|
* @param {*} [options] Override http request option.
|
|
@@ -1575,7 +2521,7 @@ export const PartnerV2ApiFactory = function (configuration, basePath, axios) {
|
|
|
1575
2521
|
return localVarFp.getBidSettlement(bidId, options).then((request) => request(axios, basePath));
|
|
1576
2522
|
},
|
|
1577
2523
|
/**
|
|
1578
|
-
* 낙찰 계약의 거래명세서(
|
|
2524
|
+
* 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
|
|
1579
2525
|
* @summary 거래명세서 조회
|
|
1580
2526
|
* @param {string} bidId
|
|
1581
2527
|
* @param {number} [paperCode]
|
|
@@ -1585,6 +2531,16 @@ export const PartnerV2ApiFactory = function (configuration, basePath, axios) {
|
|
|
1585
2531
|
getBidStatement(bidId, paperCode, options) {
|
|
1586
2532
|
return localVarFp.getBidStatement(bidId, paperCode, options).then((request) => request(axios, basePath));
|
|
1587
2533
|
},
|
|
2534
|
+
/**
|
|
2535
|
+
* 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **구 경로:** 버전 없는 `GET /files/{fileKey}` 는 만료 없는 안정 주소이고 파트너 응답의 `fileUrl`/`fullUrl` 이 그 값을 가리킵니다. 인증도 스코프도 없는 옛 표면이라 신규 연동은 이 엔드포인트를 쓰세요. 구 경로는 당분간 유지됩니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** 하이픈 없는 16진수 32자가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. **필수 스코프:** `files:read`
|
|
2536
|
+
* @summary 파일 조회(메타 + 내려받기 주소)
|
|
2537
|
+
* @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(하이픈 없는 16진수 32자).
|
|
2538
|
+
* @param {*} [options] Override http request option.
|
|
2539
|
+
* @throws {RequiredError}
|
|
2540
|
+
*/
|
|
2541
|
+
getFileMeta(fileKey, options) {
|
|
2542
|
+
return localVarFp.getFileMeta(fileKey, options).then((request) => request(axios, basePath));
|
|
2543
|
+
},
|
|
1588
2544
|
/**
|
|
1589
2545
|
* 등록한 계약의 계산서 발행 상태를 확인합니다. **언제 쓰나:** 씨마켓이 보내는 발행완료 통지를 놓쳤을 때의 **복구 경로**입니다. 평상시에는 통지를 받아 처리하고, 상태가 어긋난 것 같을 때 이 API 로 되읽으세요. **필수 스코프:** `contracts:read`
|
|
1590
2546
|
* @summary 계산서 발행 상태 조회
|
|
@@ -1596,7 +2552,7 @@ export const PartnerV2ApiFactory = function (configuration, basePath, axios) {
|
|
|
1596
2552
|
return localVarFp.getSemoContractTaxinvoiceStatus(externalContractId, options).then((request) => request(axios, basePath));
|
|
1597
2553
|
},
|
|
1598
2554
|
/**
|
|
1599
|
-
* 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write`
|
|
2555
|
+
* 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
|
|
1600
2556
|
* @summary 공급사 카드결제 가능 여부
|
|
1601
2557
|
* @param {string} memberId 계약업체 회원 ID
|
|
1602
2558
|
* @param {*} [options] Override http request option.
|
|
@@ -1605,6 +2561,26 @@ export const PartnerV2ApiFactory = function (configuration, basePath, axios) {
|
|
|
1605
2561
|
getSupplierCardPayable(memberId, options) {
|
|
1606
2562
|
return localVarFp.getSupplierCardPayable(memberId, options).then((request) => request(axios, basePath));
|
|
1607
2563
|
},
|
|
2564
|
+
/**
|
|
2565
|
+
* 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
|
|
2566
|
+
* @summary 공급사 카드결제 가능 여부
|
|
2567
|
+
* @param {string} memberId 계약업체 회원 ID
|
|
2568
|
+
* @param {*} [options] Override http request option.
|
|
2569
|
+
* @throws {RequiredError}
|
|
2570
|
+
*/
|
|
2571
|
+
getSupplierCardPayableV2(memberId, options) {
|
|
2572
|
+
return localVarFp.getSupplierCardPayableV2(memberId, options).then((request) => request(axios, basePath));
|
|
2573
|
+
},
|
|
2574
|
+
/**
|
|
2575
|
+
* 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
|
|
2576
|
+
* @summary 웹훅 구독 단건 조회
|
|
2577
|
+
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
2578
|
+
* @param {*} [options] Override http request option.
|
|
2579
|
+
* @throws {RequiredError}
|
|
2580
|
+
*/
|
|
2581
|
+
getWebhookEndpoint(endpointId, options) {
|
|
2582
|
+
return localVarFp.getWebhookEndpoint(endpointId, options).then((request) => request(axios, basePath));
|
|
2583
|
+
},
|
|
1608
2584
|
/**
|
|
1609
2585
|
* ERP 연동 직전 회선·인증 endpoint 동작 확인용.
|
|
1610
2586
|
* @summary Partner API 헬스체크
|
|
@@ -1615,16 +2591,34 @@ export const PartnerV2ApiFactory = function (configuration, basePath, axios) {
|
|
|
1615
2591
|
return localVarFp.healthControllerCheck(options).then((request) => request(axios, basePath));
|
|
1616
2592
|
},
|
|
1617
2593
|
/**
|
|
1618
|
-
*
|
|
1619
|
-
* @summary
|
|
2594
|
+
* 공고의 계약서류 목록과 내려받기 주소를 조회합니다. **목록에 실리는 것:** 공고 전체에 공통인 서류(약관·자동생성 공통본)와 낙찰자에게 귀속된 서류를 함께 싣습니다. 낙찰자 귀속 서류는 `winnerSequence` 에 그 낙찰자의 응찰 순번이 들어갑니다. **아직 없는 서류도 실립니다.** 공고가 제출을 요구했지만 아직 올라오지 않은 서류는 `fileKey: null` 로 나타나므로, 제출 여부는 이 값으로 판정하세요. **자동생성 서류:** `autoGenerated: true` 인 서류는 c-market 이 만들어 줍니다. 만드는 중이면 `generationState` 가 `QUEUED`/`PROCESSING` 이고 `downloadUrl` 이 아직 없습니다. `DEAD_LETTER` 는 생성이 실패해 멈춘 상태이며, 같은 경로의 POST(재생성)로 다시 큐에 올립니다. **내려받기:** `downloadUrl` 은 유효기간 1시간의 서명 주소입니다. 저장해 두고 재사용하지 마시고 필요할 때 이 엔드포인트를 다시 호출하세요. 기간에 얽매이지 않으려면 `fileKey` 를 보관하시고 파일 내려받기 경로를 사용하세요. **보이는 범위:** 서버가 공고 낙찰방법과 진행 단계로 결정합니다. 응답을 그대로 사용하시고 클라이언트에서 다시 거르지 마세요. **필수 스코프:** `contracts:read`
|
|
2595
|
+
* @summary 계약서류 목록 조회
|
|
2596
|
+
* @param {string} bidId 공고번호(buy_idx, 예 CM…) 또는 외부 구매번호(bid_puchase_no).
|
|
2597
|
+
* @param {*} [options] Override http request option.
|
|
2598
|
+
* @throws {RequiredError}
|
|
2599
|
+
*/
|
|
2600
|
+
listBidContractDocuments(bidId, options) {
|
|
2601
|
+
return localVarFp.listBidContractDocuments(bidId, options).then((request) => request(axios, basePath));
|
|
2602
|
+
},
|
|
2603
|
+
/**
|
|
2604
|
+
* 공고에 응찰한 업체 목록을 조회합니다. 스코프 `bids:read` 필수. **보이는 범위는 공고의 낙찰방법과 진행 단계가 결정합니다.** 개찰 전에는 업체명이 가려지고 (`companyName: null`), 순위는 산정 전까지 `null` 입니다. 이 판정은 서버가 소유하므로 응답을 그대로 사용하시고 클라이언트에서 다시 계산하지 마세요. 같은 목록이 `GET /v2/bids/{bidId}` 응답의 `participants` 에도 실립니다 — 응찰 현황만 필요하면 이 엔드포인트가 가볍습니다.
|
|
2605
|
+
* @summary 응찰 현황 조회
|
|
1620
2606
|
* @param {string} bidId 공고 식별자(등록 응답의 bidId).
|
|
1621
|
-
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
1622
|
-
* @param {IssueTaxInvoiceRequestDto} issueTaxInvoiceRequestDto
|
|
1623
2607
|
* @param {*} [options] Override http request option.
|
|
1624
2608
|
* @throws {RequiredError}
|
|
1625
2609
|
*/
|
|
1626
|
-
|
|
1627
|
-
return localVarFp.
|
|
2610
|
+
listBidParticipants(bidId, options) {
|
|
2611
|
+
return localVarFp.listBidParticipants(bidId, options).then((request) => request(axios, basePath));
|
|
2612
|
+
},
|
|
2613
|
+
/**
|
|
2614
|
+
* 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에는 `ETag` 가 실리므로, 다음 요청에 `If-None-Match` 로 되보내면 결과가 그대로일 때 `304` 를 본문 없이 받습니다 — 마감을 기다리는 동안의 전송량이 사라집니다. **식별자 전달:** `?bidIds=A,B,C`(쉼표) 또는 `?bidIds=A&bidIds=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다 — 요청한 건수와 받은 건수가 다를 수 있으니 `bidId` 로 대조하세요. **목록이 길어 URL 이 부담되면** `POST /v2/bid-results/query` 를 쓰세요. 응답은 같습니다.
|
|
2615
|
+
* @summary 입찰 결과 배치 조회
|
|
2616
|
+
* @param {string} bidIds 조회할 공고 식별자 목록. 쉼표로 구분하거나 `bidIds` 를 반복해 전달합니다. 최대 100건.
|
|
2617
|
+
* @param {*} [options] Override http request option.
|
|
2618
|
+
* @throws {RequiredError}
|
|
2619
|
+
*/
|
|
2620
|
+
listBidResults(bidIds, options) {
|
|
2621
|
+
return localVarFp.listBidResults(bidIds, options).then((request) => request(axios, basePath));
|
|
1628
2622
|
},
|
|
1629
2623
|
/**
|
|
1630
2624
|
* 발주처(API 키 바인딩)의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(쿼리에 buyerId 를 넣지 않습니다). **페이지네이션(cursor):** `limit`(1~100, 기본 100) + `cursor`(불투명 토큰). 응답의 `nextCursor` 를 다음 요청 `cursor` 로 전달하면 다음 페이지를 받습니다. `nextCursor=null` 이면 마지막 페이지입니다. **상태·낙찰방법:** 공개값(의미 문자열)으로 반환됩니다. 낙찰 여부는 상태가 아니라 낙찰 결과 조회의 `participants[].isWinner` 로 관측합니다(AWARDED 상태는 없습니다).
|
|
@@ -1641,7 +2635,7 @@ export const PartnerV2ApiFactory = function (configuration, basePath, axios) {
|
|
|
1641
2635
|
return localVarFp.listBids(limit, cursor, bidIds, status, include, options).then((request) => request(axios, basePath));
|
|
1642
2636
|
},
|
|
1643
2637
|
/**
|
|
1644
|
-
* 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read`
|
|
2638
|
+
* 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidId}/contract-documents` 가 v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
|
|
1645
2639
|
* @summary 거래에 필요한 계약서류 목록 조회
|
|
1646
2640
|
* @param {string} buyerId 발주기관 회원 ID(c-market memberId).
|
|
1647
2641
|
* @param {ListExternalContractDocumentsBidTypeEnum} bidType 거래유형.
|
|
@@ -1651,6 +2645,37 @@ export const PartnerV2ApiFactory = function (configuration, basePath, axios) {
|
|
|
1651
2645
|
listExternalContractDocuments(buyerId, bidType, options) {
|
|
1652
2646
|
return localVarFp.listExternalContractDocuments(buyerId, bidType, options).then((request) => request(axios, basePath));
|
|
1653
2647
|
},
|
|
2648
|
+
/**
|
|
2649
|
+
* 기관에 공유된 물품 중 **아직 전송되지 않은 것**을 조회합니다. **증분 피드입니다.** 가져간 물품을 `POST /v2/products/receipts` 로 수신확인하면 다음 조회 결과에서 빠집니다. 수신확인을 하지 않으면 같은 물품이 계속 내려옵니다. **권장 흐름:** 조회 → 자기 시스템에 저장 → 저장에 성공한 물품 코드만 수신확인. 저장 전에 수신확인하면 그 물품은 다시 받을 수 없습니다. **조회 범위:** 요청 키가 대행하는 기관 그룹입니다. 기관 그룹이 설정되지 않은 키는 403 입니다. **필수 스코프:** `products:read`
|
|
2650
|
+
* @summary 물품 카탈로그 조회
|
|
2651
|
+
* @param {*} [options] Override http request option.
|
|
2652
|
+
* @throws {RequiredError}
|
|
2653
|
+
*/
|
|
2654
|
+
listProducts(options) {
|
|
2655
|
+
return localVarFp.listProducts(options).then((request) => request(axios, basePath));
|
|
2656
|
+
},
|
|
2657
|
+
/**
|
|
2658
|
+
* 이 API 키의 웹훅 발송 시도를 최신순으로 조회합니다. 보낸 본문·수신측 응답 상태· 다음 재시도 예정 시각이 함께 실립니다. **호출 시점:** - 수신측 장애로 놓친 이벤트를 메울 때. 이 엔드포인트가 웹훅의 **폴링 대체 경로**입니다 — `status=EXHAUSTED` 로 걸러 다시 처리하면 됩니다. - \"이벤트가 안 온다\" 를 진단할 때. 발송 시도 자체가 없는지(구독·이벤트 타입 문제), 시도했지만 실패했는지(`responseStatus`·`responseBodyExcerpt`)를 여기서 가릅니다. **같은 이벤트가 여러 행으로 보입니다.** 재시도마다 한 행이며 `eventId` 가 같고 `attempt` 만 올라갑니다. 처리 여부는 `eventId` 기준으로 판단하세요. **페이지네이션:** `nextCursor` 를 다음 요청의 `cursor` 로 전달합니다. null 이면 마지막 페이지입니다. **`400`:** `status` 가 허용 값 밖이거나 `limit` 이 범위를 벗어났습니다 — 값을 고쳐 재시도하세요. **필수 스코프:** `webhooks:read`
|
|
2659
|
+
* @summary 웹훅 전송 이력 조회
|
|
2660
|
+
* @param {string} [endpointId] 이 구독의 전송만 조회합니다. 미지정이면 이 키의 모든 구독을 함께 조회합니다.
|
|
2661
|
+
* @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
|
|
2662
|
+
* @param {number} [limit] 페이지 크기(1~200, 기본 50).
|
|
2663
|
+
* @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 `nextCursor` 를 그대로 전달합니다. 미지정 시 첫 페이지.
|
|
2664
|
+
* @param {*} [options] Override http request option.
|
|
2665
|
+
* @throws {RequiredError}
|
|
2666
|
+
*/
|
|
2667
|
+
listWebhookDeliveries(endpointId, status, limit, cursor, options) {
|
|
2668
|
+
return localVarFp.listWebhookDeliveries(endpointId, status, limit, cursor, options).then((request) => request(axios, basePath));
|
|
2669
|
+
},
|
|
2670
|
+
/**
|
|
2671
|
+
* 이 API 키가 등록한 웹훅 구독을 모두 조회합니다. **호출 시점:** 연동 상태를 점검할 때, 또는 발송이 멈춘 이유(`status`·`consecutiveFailures`)를 확인할 때. 서명 시크릿은 여기에 실리지 않습니다. **필수 스코프:** `webhooks:read` ### 서명 검증 (필수) 발송 요청마다 헤더 `X-CMarket-Signature` 가 실립니다. ``` X-CMarket-Signature: t=<unix초>,v1=<hex> ``` `v1` 은 `HMAC-SHA256(secret, \"${t}.${요청 본문 원문}\")` 의 소문자 hex 입니다. 1. 헤더를 `t` 와 `v1` 로 나눕니다. 2. `\"${t}.${본문}\"` 을 만듭니다. **본문은 파싱 전 원문 바이트**여야 합니다 — JSON 을 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. 등록 시 받은 시크릿으로 HMAC-SHA256 을 계산해 `v1` 과 비교합니다. 비교는 **상수 시간** 비교 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `t` 가 현재 시각으로부터 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). ### 중복 제거 `X-CMarket-Event-Id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. ### 응답과 재시도 2xx 를 돌려주면 성공입니다. 그 외(또는 무응답)는 실패로 보고 최대 7회 재시도합니다 — 간격은 10초 → 1분 → 5분 → 30분 → 2시간 → 6시간 → 24시간 입니다. 처리 시간이 길면 먼저 2xx 를 돌려주고 비동기로 처리하세요. 연속 실패가 20회에 닿으면 구독이 자동으로 `DISABLED` 로 내려가고 발송이 멈춥니다. 수신측을 고친 뒤 `PATCH /v2/webhook-endpoints/{endpointId}` 에 `{\"status\":\"ACTIVE\"}` 로 되살리세요. ### 구독 가능한 이벤트 `bid.closed` · `bid.awarded` · `bid.failed` · `bid.canceled` · `bid.award_reverted` `ping` 은 연결 확인 전용이라 구독할 수 없습니다 — 테스트 발송 경로에서만 나갑니다. ### 놓친 이벤트 확인 `GET /v2/webhook-deliveries` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
|
|
2672
|
+
* @summary 웹훅 구독 목록 조회
|
|
2673
|
+
* @param {*} [options] Override http request option.
|
|
2674
|
+
* @throws {RequiredError}
|
|
2675
|
+
*/
|
|
2676
|
+
listWebhookEndpoints(options) {
|
|
2677
|
+
return localVarFp.listWebhookEndpoints(options).then((request) => request(axios, basePath));
|
|
2678
|
+
},
|
|
1654
2679
|
/**
|
|
1655
2680
|
* 공고를 유찰 상태로 전환합니다. **호출 시점:** 입찰 마감 후 유찰 사유가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 공고 상태가 유찰(FAILED)로 전환됩니다. - 유찰사유 코드와 상세가 기록됩니다. **유찰사유 값 목록(failureReasonCode — 공개값):** | 값 | 의미 | |------|------| | `ABOVE_TARGET_PRICE` | 예정가격 초과 | | `DEPT_MISMATCH` | 자격 미달 | | `NEEDS_EXPERTISE` | 전문성 필요 | | `OTHER` | 기타 (`failureReasonDetail` 필수) | | `NO_PARTICIPANT` | 참가자 없음 | | `SINGLE_PARTICIPANT` | 단독 참가 | | `LESS_THAN_TWO` | 2인 미만 | | `BELOW_MINIMUM` | 최저가 미달 | **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body 에 buyerId 를 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
1656
2681
|
* @summary 유찰 처리
|
|
@@ -1674,6 +2699,16 @@ export const PartnerV2ApiFactory = function (configuration, basePath, axios) {
|
|
|
1674
2699
|
publishBid(bidId, idempotencyKey, options) {
|
|
1675
2700
|
return localVarFp.publishBid(bidId, idempotencyKey, options).then((request) => request(axios, basePath));
|
|
1676
2701
|
},
|
|
2702
|
+
/**
|
|
2703
|
+
* `GET /v2/bid-results` 와 **완전히 같은 조회**이며, 식별자 목록을 본문으로 받습니다. 스코프 `bids:read`. 공고 식별자 100건이면 URL 이 1KB를 넘습니다 — 중간 프록시가 긴 URL 을 자르는 환경을 위한 대체 경로입니다. **부수효과가 없으므로 `Idempotency-Key` 는 필요하지 않습니다.** POST 인 것은 전송 형태의 문제일 뿐이며, 가능하면 캐시·`ETag` 가 동작하는 `GET` 쪽을 쓰세요.
|
|
2704
|
+
* @summary 입찰 결과 배치 조회 (본문 전달)
|
|
2705
|
+
* @param {BidResultsBatchRequestDto} bidResultsBatchRequestDto
|
|
2706
|
+
* @param {*} [options] Override http request option.
|
|
2707
|
+
* @throws {RequiredError}
|
|
2708
|
+
*/
|
|
2709
|
+
queryBidResults(bidResultsBatchRequestDto, options) {
|
|
2710
|
+
return localVarFp.queryBidResults(bidResultsBatchRequestDto, options).then((request) => request(axios, basePath));
|
|
2711
|
+
},
|
|
1677
2712
|
/**
|
|
1678
2713
|
* 공고의 자동생성 계약서류(발주서·공고결과·표준계약서 등)를 생성/재생성합니다. **V6 대응:** `RegenerateAllContractPdfsCommand` — 웹 어드민의 \"계약 서류 일괄 재생성\"과 동일 경로. **호출 시점:** 낙찰(계약 시작) 후 계약서류가 필요하거나, 생성에 실패한 서류를 다시 만들 때. **부수효과:** - 생성 실패(DEAD_LETTER) 상태의 자동생성 PDF 가 재생성 큐에 등록됩니다(비동기). - 승낙사항(ACCEPTANCE) 계열은 운영자 승인 워크플로가 필요해 이 경로에서 제외됩니다. **응답:** 즉시 파일이 아니라 큐 등록 결과(`enqueuedCount`/`skippedCount`)를 반환합니다. 잠시 후 자동 생성됩니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
1679
2714
|
* @summary 계약서류 생성(재생성)
|
|
@@ -1700,12 +2735,13 @@ export const PartnerV2ApiFactory = function (configuration, basePath, axios) {
|
|
|
1700
2735
|
/**
|
|
1701
2736
|
* 입찰 정보 등록. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수.
|
|
1702
2737
|
* @summary 입찰 정보 전송(등록)
|
|
2738
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
|
|
1703
2739
|
* @param {CreateBidRequestDto} createBidRequestDto
|
|
1704
2740
|
* @param {*} [options] Override http request option.
|
|
1705
2741
|
* @throws {RequiredError}
|
|
1706
2742
|
*/
|
|
1707
|
-
registerBid(createBidRequestDto, options) {
|
|
1708
|
-
return localVarFp.registerBid(createBidRequestDto, options).then((request) => request(axios, basePath));
|
|
2743
|
+
registerBid(idempotencyKey, createBidRequestDto, options) {
|
|
2744
|
+
return localVarFp.registerBid(idempotencyKey, createBidRequestDto, options).then((request) => request(axios, basePath));
|
|
1709
2745
|
},
|
|
1710
2746
|
/**
|
|
1711
2747
|
* 외부에서 맺어진 계약 1건을 씨마켓의 **세금계산서 발행 대상**으로 등록합니다. **등록 후 동선:** 발주기관이 씨마켓 [나의 계약 관리] 에서 계산서 발급을 요청하고, 공급기업이 같은 화면에서 발행합니다. 계산서의 **공급자는 공급기업, 공급받는자는 발주기관**입니다. **대금 흐름:** 씨마켓은 이 거래의 대금을 받지 않습니다 — 발행 경로만 제공합니다. **금액:** `supplyPrice` 는 **부가세를 뺀 과세 공급가액**입니다(결제창 API 가 부가세 포함가를 받는 것과 다릅니다). 과세·면세 공급가액이 모두 0 이면 400 입니다. **사전 조건:** 두 회원 ID 가 씨마켓에 실재해야 합니다. 회원 ID 가 곧 소유권이라, 없는 회원으로 등록하면 아무도 열 수 없는 계산서 대상이 됩니다. **필수 스코프:** `contracts:write`. 바인딩된 발주처 외의 발주기관을 대신하려면 대행 범위에 그 회원이 있어야 합니다. **멱등성:** `externalContractId` 가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 대상을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
|
|
@@ -1719,28 +2755,66 @@ export const PartnerV2ApiFactory = function (configuration, basePath, axios) {
|
|
|
1719
2755
|
return localVarFp.registerSemoContract(idempotencyKey, registerSemoContractRequestDto, options).then((request) => request(axios, basePath));
|
|
1720
2756
|
},
|
|
1721
2757
|
/**
|
|
1722
|
-
*
|
|
1723
|
-
* @summary
|
|
2758
|
+
* 확정된 낙찰을 되돌려 공고를 낙찰대기(PENDING_AWARD) 상태로 보냅니다. 스코프 `awards:write` + `Idempotency-Key` 헤더 필수. **호출 시점:** 낙찰자가 계약을 포기했거나 낙찰 처리 자체가 잘못됐을 때. 되돌린 뒤 같은 공고에 다시 낙찰을 등록할 수 있습니다. **되돌릴 수 없는 경우 → 409:** - 수수료 결제가 이미 완료된 공고 - 세금계산서가 이미 발행된 공고 - 수입권공매 계열 낙찰방법(다수 낙찰자 구조라 되돌리기 단위가 다릅니다) **사유는 필수입니다** — 감사 대상 행위이며 공고 이력에 남습니다. **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
|
|
2759
|
+
* @summary 낙찰 되돌리기
|
|
1724
2760
|
* @param {string} bidId 공고 식별자(등록 응답의 bidId).
|
|
2761
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
|
|
2762
|
+
* @param {RevertAwardRequestDto} revertAwardRequestDto
|
|
2763
|
+
* @param {*} [options] Override http request option.
|
|
2764
|
+
* @throws {RequiredError}
|
|
2765
|
+
*/
|
|
2766
|
+
revertAward(bidId, idempotencyKey, revertAwardRequestDto, options) {
|
|
2767
|
+
return localVarFp.revertAward(bidId, idempotencyKey, revertAwardRequestDto, options).then((request) => request(axios, basePath));
|
|
2768
|
+
},
|
|
2769
|
+
/**
|
|
2770
|
+
* 서명 시크릿을 새로 발급합니다. 응답의 `secretVersion` 이 1 올라갑니다. **호출 시점:** 시크릿을 분실했거나 유출이 의심될 때, 또는 주기적 교체 정책이 있을 때. **새 시크릿은 이 응답에서 한 번만 나갑니다.** 조회로 다시 받을 수 없습니다. **옛 시크릿은 즉시 무효입니다.** 유예 기간이 없으므로, 수신측이 새 값을 반영하기 전에 도착한 이벤트는 서명 검증에 실패합니다. 배포 순서를 이렇게 잡으세요 — ① 수신측이 옛 값과 새 값을 **둘 다** 받아들이도록 배포 → ② 이 엔드포인트 호출 → ③ 응답의 새 값을 반영 → ④ 옛 값 제거. 검증 실패로 non-2xx 를 돌려주면 실패로 집계되어 20회 연속 시 구독이 중지됩니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 같은 키로 재전송하면 **새로 발급하지 않고** 처음 발급한 값을 그대로 돌려줍니다(24시간) — 네트워크 오류로 응답을 놓쳤을 때 같은 키로 다시 부르세요.
|
|
2771
|
+
* @summary 웹훅 서명 시크릿 재발급
|
|
2772
|
+
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
2773
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
2774
|
+
* @param {*} [options] Override http request option.
|
|
2775
|
+
* @throws {RequiredError}
|
|
2776
|
+
*/
|
|
2777
|
+
rotateWebhookSecret(endpointId, idempotencyKey, options) {
|
|
2778
|
+
return localVarFp.rotateWebhookSecret(endpointId, idempotencyKey, options).then((request) => request(axios, basePath));
|
|
2779
|
+
},
|
|
2780
|
+
/**
|
|
2781
|
+
* 등록된 주소로 `ping` 이벤트를 즉시 1회 보내고 그 결과를 돌려줍니다. **호출 시점:** 구독을 등록한 직후, 수신 주소를 바꾼 직후, 방화벽·인증서를 손본 뒤. **응답은 발송 결과이지 요청 실패가 아닙니다.** 수신측이 받지 못해도 HTTP `200` 에 `delivered: false` 로 옵니다 — `responseStatus`(수신측 상태)와 `error`(연결 거부·타임아웃· TLS 오류)를 보고 원인을 좁히세요. 이 발송에도 실제 이벤트와 **똑같은 서명 헤더**가 실리므로 검증 코드를 그대로 시험할 수 있습니다. `ping` 은 구독 목록에 넣을 수 없는 타입이니, 수신측이 모르는 `eventType` 을 만나면 버리도록 짜여 있다면 이 확인만 실패할 수 있습니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 다시 보내려면 **새 키**를 쓰세요 — 같은 키는 24시간 동안 직전 결과를 그대로 돌려줍니다(재발송하지 않습니다).
|
|
2782
|
+
* @summary 웹훅 연결 확인 발송
|
|
2783
|
+
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
1725
2784
|
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
1726
|
-
* @param {SubmitNegotiationScoresRequestDto} submitNegotiationScoresRequestDto
|
|
1727
2785
|
* @param {*} [options] Override http request option.
|
|
1728
2786
|
* @throws {RequiredError}
|
|
1729
2787
|
*/
|
|
1730
|
-
|
|
1731
|
-
return localVarFp.
|
|
2788
|
+
sendWebhookTestEvent(endpointId, idempotencyKey, options) {
|
|
2789
|
+
return localVarFp.sendWebhookTestEvent(endpointId, idempotencyKey, options).then((request) => request(axios, basePath));
|
|
1732
2790
|
},
|
|
1733
2791
|
/**
|
|
1734
2792
|
* 등록된 공고의 내용을 수정합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. 진행중/초안 상태의 공고만 수정할 수 있습니다. **부수효과:** - 변경 내용이 반영되고 수정이력이 기록됩니다. - `hideEdit=true` 면 변경이력을 비공개 처리하고 노출 카운터 증가를 생략합니다. **수정 제약:** - 낙찰방법(awardMethod)은 수정 불가(잠금). - 참여자가 있으면 입찰방식/면허/예산/품목 일부가 잠깁니다. - 마감/취소된 공고는 수정할 수 없습니다. 한 섹션을 수정하려면 해당 섹션의 필수 필드를 함께 보내야 합니다(부분 섹션은 거부됨).
|
|
1735
2793
|
* @summary 입찰 공고 수정
|
|
1736
2794
|
* @param {string} bidId 공고 식별자(등록 응답의 bidId).
|
|
2795
|
+
* @param {string} ifMatch
|
|
2796
|
+
* @param {string} ifMatch2 수정하려는 공고의 ETag(필수). 직전 `GET /v2/bids/{bidId}` 응답의 `ETag` 헤더 값을 그대로 실어 보내세요. 누락하면 428, 그 사이 공고가 바뀌었으면 412 로 거절되며 아무것도 수정되지 않습니다.
|
|
1737
2797
|
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
|
|
1738
2798
|
* @param {UpdateBidRequestDto} updateBidRequestDto
|
|
1739
2799
|
* @param {*} [options] Override http request option.
|
|
1740
2800
|
* @throws {RequiredError}
|
|
1741
2801
|
*/
|
|
1742
|
-
updateBid(bidId, idempotencyKey, updateBidRequestDto, options) {
|
|
1743
|
-
return localVarFp.updateBid(bidId, idempotencyKey, updateBidRequestDto, options).then((request) => request(axios, basePath));
|
|
2802
|
+
updateBid(bidId, ifMatch, ifMatch2, idempotencyKey, updateBidRequestDto, options) {
|
|
2803
|
+
return localVarFp.updateBid(bidId, ifMatch, ifMatch2, idempotencyKey, updateBidRequestDto, options).then((request) => request(axios, basePath));
|
|
2804
|
+
},
|
|
2805
|
+
/**
|
|
2806
|
+
* 수신 주소·구독 이벤트·상태를 수정합니다. 보낸 필드만 바뀝니다. **호출 시점:** 수신 주소가 바뀌었을 때, 구독 이벤트를 늘리거나 줄일 때, 연속 실패로 자동 중지된 구독을 고친 뒤 되살릴 때(`{\"status\":\"ACTIVE\"}`). **`eventTypes` 는 치환입니다** — 보낸 목록이 곧 새 구독 목록입니다. 하나를 더하려면 기존 목록에 더한 **전체**를 보내세요. **`If-Match` 가 필수입니다.** 먼저 `GET /v2/webhook-endpoints/{endpointId}` 로 현재 `ETag` 를 받아 그대로 실어 보내세요. 이 헤더가 없으면 두 요청이 앞서거니 뒤서거니 하며 먼저 한 수정을 조용히 덮어씁니다. - `428` — 헤더를 빼먹었습니다. 조회 후 `ETag` 를 실어 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다. 다시 조회해 최신 `ETag` 로 재시도하세요. 아무것도 수정되지 않았습니다. **시크릿은 이 경로로 바뀌지 않습니다** — 재발급은 `rotate-secret` 입니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
2807
|
+
* @summary 웹훅 구독 수정
|
|
2808
|
+
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
2809
|
+
* @param {string} ifMatch
|
|
2810
|
+
* @param {string} ifMatch2 직전 조회 응답의 `ETag` 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
|
|
2811
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
2812
|
+
* @param {UpdateWebhookEndpointRequestDto} updateWebhookEndpointRequestDto
|
|
2813
|
+
* @param {*} [options] Override http request option.
|
|
2814
|
+
* @throws {RequiredError}
|
|
2815
|
+
*/
|
|
2816
|
+
updateWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, updateWebhookEndpointRequestDto, options) {
|
|
2817
|
+
return localVarFp.updateWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, updateWebhookEndpointRequestDto, options).then((request) => request(axios, basePath));
|
|
1744
2818
|
},
|
|
1745
2819
|
/**
|
|
1746
2820
|
* 스코프 `files:write` + `Idempotency-Key` 헤더 필수. base64 또는 url 중 정확히 하나를 제출한다.
|
|
@@ -1759,14 +2833,27 @@ export const PartnerV2ApiFactory = function (configuration, basePath, axios) {
|
|
|
1759
2833
|
*/
|
|
1760
2834
|
export class PartnerV2Api extends BaseAPI {
|
|
1761
2835
|
/**
|
|
1762
|
-
*
|
|
1763
|
-
* @summary
|
|
1764
|
-
* @param {string}
|
|
2836
|
+
* 저장을 마친 물품을 전송완료로 표시해 다음 조회에서 제외합니다. **되돌릴 수 없습니다.** 표시한 물품은 `GET /v2/products` 로 다시 내려오지 않으므로, 자기 시스템에 저장이 끝난 뒤에 호출하세요. **표시 범위는 기관 그룹으로 잠깁니다.** 다른 기관의 물품 코드를 섞어 보내면 그 건은 표시되지 않고 `acknowledged` 가 요청 수보다 작게 돌아옵니다. **필수 스코프:** `products:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
2837
|
+
* @summary 물품 수신확인
|
|
2838
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
2839
|
+
* @param {AcknowledgeProductsRequestDto} acknowledgeProductsRequestDto
|
|
2840
|
+
* @param {*} [options] Override http request option.
|
|
2841
|
+
* @throws {RequiredError}
|
|
2842
|
+
*/
|
|
2843
|
+
acknowledgeProductReceipt(idempotencyKey, acknowledgeProductsRequestDto, options) {
|
|
2844
|
+
return PartnerV2ApiFp(this.configuration).acknowledgeProductReceipt(idempotencyKey, acknowledgeProductsRequestDto, options).then((request) => request(this.axios, this.basePath));
|
|
2845
|
+
}
|
|
2846
|
+
/**
|
|
2847
|
+
* 진행중인 공고를 취소합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. **되돌릴 수 없습니다.** 취소 사유는 필수이며 공고 이력에 남습니다. **전제조건:** 진행중(ONGOING) 상태여야 합니다. **거부:** 진행중이 아니거나 이미 취소된 공고 → 409. 타 발주처 공고 → 403. **마감과의 차이:** 취소는 공고를 무효로 되돌리는 것이고, 유찰(`POST /v2/bids/{bidId}/fail`)은 응찰을 받았으나 낙찰자를 정하지 못한 종료입니다.
|
|
2848
|
+
* @summary 공고 취소
|
|
2849
|
+
* @param {string} bidId 공고 식별자(등록 응답의 bidId).
|
|
2850
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
|
|
2851
|
+
* @param {CancelBidRequestDto} cancelBidRequestDto
|
|
1765
2852
|
* @param {*} [options] Override http request option.
|
|
1766
2853
|
* @throws {RequiredError}
|
|
1767
2854
|
*/
|
|
1768
|
-
|
|
1769
|
-
return PartnerV2ApiFp(this.configuration).
|
|
2855
|
+
cancelBid(bidId, idempotencyKey, cancelBidRequestDto, options) {
|
|
2856
|
+
return PartnerV2ApiFp(this.configuration).cancelBid(bidId, idempotencyKey, cancelBidRequestDto, options).then((request) => request(this.axios, this.basePath));
|
|
1770
2857
|
}
|
|
1771
2858
|
/**
|
|
1772
2859
|
* 낙찰 공고의 검수(납품 검수)가 완료되었음을 기록합니다. **V5 대응:** `acceptanceCompleteSend` — BidApi.xml `acceptanceComplete` 액션의 V6 후속. **호출 시점:** 낙찰자(공급사)가 납품을 완료하고 구매자가 검수를 확인한 시점. 공고 상태가 낙찰(AWARDED) 상태여야 합니다. **부수효과:** - 검수완료 상태가 기록됩니다. - 응답은 204가 아닌 200입니다 — 멱등성 인터셉터가 구체 바디를 캐시하고 SDK 가 타입드 응답을 필요로 하기 때문. **V5-compat 안내:** 거래명세서·검수보고서에 찍힐 구매사 사업자정보·담당자·작성일자 override(11종)는 modern v2 표면에서 제거됐습니다. 필요 시 V5 충실 카운터파트 `POST /v1/bids/{bidId}/acceptance`(`CompleteAcceptanceV1RequestDto`)를 사용하세요. **낙찰자 식별:** `winnerMemberId`(공급사 memberId). 내부 joinSeq 해소는 backend 가 처리합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
@@ -1792,28 +2879,29 @@ export class PartnerV2Api extends BaseAPI {
|
|
|
1792
2879
|
return PartnerV2ApiFp(this.configuration).completeInvoice(bidId, idempotencyKey, options).then((request) => request(this.axios, this.basePath));
|
|
1793
2880
|
}
|
|
1794
2881
|
/**
|
|
1795
|
-
* 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동
|
|
2882
|
+
* 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인되어 바로 결제할 수 있습니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 도메인 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
|
|
1796
2883
|
* @summary 결제창 발행
|
|
1797
2884
|
* @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
|
|
1798
2885
|
* @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
|
|
1799
2886
|
* @param {*} [options] Override http request option.
|
|
1800
2887
|
* @throws {RequiredError}
|
|
1801
2888
|
*/
|
|
1802
|
-
|
|
1803
|
-
return PartnerV2ApiFp(this.configuration).
|
|
2889
|
+
createCardPayment(idempotencyKey, createCardPaymentRequestDto, options) {
|
|
2890
|
+
return PartnerV2ApiFp(this.configuration).createCardPayment(idempotencyKey, createCardPaymentRequestDto, options).then((request) => request(this.axios, this.basePath));
|
|
1804
2891
|
}
|
|
1805
2892
|
/**
|
|
1806
|
-
*
|
|
1807
|
-
* @summary
|
|
1808
|
-
* @param {
|
|
2893
|
+
* 발주기관이 특정 업체에게 카드로 지불하는 거래(결제창) 1건을 만듭니다. **대금 흐름:** 카드 승인이 **그 업체의 가맹점**으로 나가므로 대금은 씨마켓을 거치지 않고 업체로 직행합니다. **발행 직후 상태:** 자동 승인(APPROVED)되어 바로 결제 가능합니다. **사용자 동선:** 응답의 `payUrl` 로 발주기관을 보내면 그 결제창 한 건만 걸러진 화면이 열립니다. 거기서 카드를 골라 결제합니다. **사전 조건:** 계약업체가 씨마켓 회원이고 카드결제에 가입(가맹)돼 있어야 합니다 — `GET /v2/card-payment-requests/suppliers/{memberId}/card-payable` 로 미리 확인하세요. 미가입 업체로 발행하면 400 입니다. **필수 스코프:** `payments:write`. 어느 발주기관을 대신할 수 있는지는 스코프가 아니라 API 키의 대행 범위 설정이 정합니다. **멱등성:** `externalRef`(파트너 측 거래 식별자)가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 결제창을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요. --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
|
|
2894
|
+
* @summary 결제창 발행
|
|
2895
|
+
* @param {string} idempotencyKey 재시도 안전을 위한 멱등 키.
|
|
2896
|
+
* @param {CreateCardPaymentRequestDto} createCardPaymentRequestDto
|
|
1809
2897
|
* @param {*} [options] Override http request option.
|
|
1810
2898
|
* @throws {RequiredError}
|
|
1811
2899
|
*/
|
|
1812
|
-
|
|
1813
|
-
return PartnerV2ApiFp(this.configuration).
|
|
2900
|
+
createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options) {
|
|
2901
|
+
return PartnerV2ApiFp(this.configuration).createCardPaymentRequest(idempotencyKey, createCardPaymentRequestDto, options).then((request) => request(this.axios, this.basePath));
|
|
1814
2902
|
}
|
|
1815
2903
|
/**
|
|
1816
|
-
* 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `paperCodes` 와 같은 순서로 같은 개수가 돌아옵니다.** 각 항목의 `fileUrl` 을 그대로 쓰면 되고, `paperCode` 로 어느 요청에 대한 결과인지 대응시킬 수 있습니다. **`name` 의 출처는 서류에 따라 다릅니다.** 시스템이 렌더한 서류는 계약서류명이고, 공급사 사전등록 3종(11·12·13)은 **공급사가 등록한 원본 파일명**입니다 — 채팅 첨부 라벨로 그대로 쓰세요. **필요한 입력:** 발주기관·공급사는 회원 ID 만 주면 됩니다. 상호·사업자번호·대표자·주소·직인은 c-market 이 회원 정보에서 직접 채웁니다. **전부 성공 또는 전부 실패입니다.** 지원하지 않는 서류가 하나라도 섞이면(400) 아무것도 만들지 않습니다. 렌더가 필요한 서류를 요청하면서 `contract` 를 빠뜨려도 마찬가지입니다(422). **135(수의계약체결제한여부확인서)를 요청하면 추가 입력이 필요합니다.** `contract.subject`(발주내용)·`contract.category`(계약구분)·`contract.buyerDepartment`(발주부서)가 필수이고, `documentInputs.contractRestrictionConfirm.answers`에 서식 ①~⑧에 대한 **계약상대자**의 답변 8개를 순서대로 담아야 합니다(c-market 이 대신 만들어낼 수 없는 값입니다). ⑨(발주자 확인사항)는 `documentInputs.contractRestrictionConfirm.buyerConfirmation`으로 선택 전달하며, 생략하면 서식에 빈칸으로 인쇄됩니다. 문항 ①~⑧의 원문은 `answers` 필드 설명을 참고하세요. **164(퇴직자영입현황확인서)를 요청하면 퇴직자 명단이 필요합니다.** `contract.subject`(서식의 \"수의계약 대상건명\")가 필수이고, `documentInputs.retireeRoster.rows` 에 명단을 넣습니다(성명·직급 필수, 직급·입사일·근무기간·비고 선택, 최대 50행). **퇴직자가 없으면 `rows` 를 빈 배열로 보내세요** — 서식에 \"해당사항 없음\"으로 인쇄됩니다. 블록 자체를 생략하면 422 입니다(\"퇴직자 없음\"과 \"확인하지 않음\"을 구분할 수 없기 때문입니다). **승낙사항(4·184·185·186·189·197·208)을 요청하면 `contract.subject`(계약건명)가 필수입니다.** 서식 상단 \"건명\" 칸에 인쇄되는 값이라 비면 어느 계약의 승낙인지 알 수 없습니다. 그 외 추가 입력은 없습니다 — 갑(발주기관) 서명란은 `buyerId` 로, 을(공급사) 서명란은 `supplierId` 로 c-market 이 채웁니다. 발주기관이 기관 전용 승낙사항 서식을 쓰면 요청한 코드 그대로 응답하되 PDF 는 그 기관 서식으로 발급됩니다. **응답의 `fileUrl` 은 만료되지 않습니다.** 채팅 메시지 등에 그대로 저장해 두어도 됩니다. **생성 가능한 회원 범위:** 조회와 같습니다 — 이 API 키에 설정된 대행 범위 안의 회원만 가능합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
2904
|
+
* 공고 없이 성사된 거래의 계약서류를 생성합니다. **호출 시점:** 계약이 체결된 직후. **요청한 `paperCodes` 와 같은 순서로 같은 개수가 돌아옵니다.** 각 항목의 `fileUrl` 을 그대로 쓰면 되고, `paperCode` 로 어느 요청에 대한 결과인지 대응시킬 수 있습니다. **`name` 의 출처는 서류에 따라 다릅니다.** 시스템이 렌더한 서류는 계약서류명이고, 공급사 사전등록 3종(11·12·13)은 **공급사가 등록한 원본 파일명**입니다 — 채팅 첨부 라벨로 그대로 쓰세요. **필요한 입력:** 발주기관·공급사는 회원 ID 만 주면 됩니다. 상호·사업자번호·대표자·주소·직인은 c-market 이 회원 정보에서 직접 채웁니다. **전부 성공 또는 전부 실패입니다.** 지원하지 않는 서류가 하나라도 섞이면(400) 아무것도 만들지 않습니다. 렌더가 필요한 서류를 요청하면서 `contract` 를 빠뜨려도 마찬가지입니다(422). **135(수의계약체결제한여부확인서)를 요청하면 추가 입력이 필요합니다.** `contract.subject`(발주내용)·`contract.category`(계약구분)·`contract.buyerDepartment`(발주부서)가 필수이고, `documentInputs.contractRestrictionConfirm.answers`에 서식 ①~⑧에 대한 **계약상대자**의 답변 8개를 순서대로 담아야 합니다(c-market 이 대신 만들어낼 수 없는 값입니다). ⑨(발주자 확인사항)는 `documentInputs.contractRestrictionConfirm.buyerConfirmation`으로 선택 전달하며, 생략하면 서식에 빈칸으로 인쇄됩니다. 문항 ①~⑧의 원문은 `answers` 필드 설명을 참고하세요. **164(퇴직자영입현황확인서)를 요청하면 퇴직자 명단이 필요합니다.** `contract.subject`(서식의 \"수의계약 대상건명\")가 필수이고, `documentInputs.retireeRoster.rows` 에 명단을 넣습니다(성명·직급 필수, 직급·입사일·근무기간·비고 선택, 최대 50행). **퇴직자가 없으면 `rows` 를 빈 배열로 보내세요** — 서식에 \"해당사항 없음\"으로 인쇄됩니다. 블록 자체를 생략하면 422 입니다(\"퇴직자 없음\"과 \"확인하지 않음\"을 구분할 수 없기 때문입니다). **승낙사항(4·184·185·186·189·197·208)을 요청하면 `contract.subject`(계약건명)가 필수입니다.** 서식 상단 \"건명\" 칸에 인쇄되는 값이라 비면 어느 계약의 승낙인지 알 수 없습니다. 그 외 추가 입력은 없습니다 — 갑(발주기관) 서명란은 `buyerId` 로, 을(공급사) 서명란은 `supplierId` 로 c-market 이 채웁니다. 발주기관이 기관 전용 승낙사항 서식을 쓰면 요청한 코드 그대로 응답하되 PDF 는 그 기관 서식으로 발급됩니다. **응답의 `fileUrl` 은 만료되지 않습니다.** 채팅 메시지 등에 그대로 저장해 두어도 됩니다. **생성 가능한 회원 범위:** 조회와 같습니다 — 이 API 키에 설정된 대행 범위 안의 회원만 가능합니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수. --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidId}/contract-documents` 가 v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
|
|
1817
2905
|
* @summary 계약서류 생성
|
|
1818
2906
|
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
1819
2907
|
* @param {CreateExternalContractDocumentsRequestDto} createExternalContractDocumentsRequestDto
|
|
@@ -1824,7 +2912,31 @@ export class PartnerV2Api extends BaseAPI {
|
|
|
1824
2912
|
return PartnerV2ApiFp(this.configuration).createExternalContractDocuments(idempotencyKey, createExternalContractDocumentsRequestDto, options).then((request) => request(this.axios, this.basePath));
|
|
1825
2913
|
}
|
|
1826
2914
|
/**
|
|
1827
|
-
*
|
|
2915
|
+
* 수신 주소와 구독할 이벤트를 등록합니다. **호출 시점:** 연동 초기 1회. 수신 주소가 바뀌면 새로 만들지 말고 `PATCH` 로 고치세요 — 그래야 시크릿과 전송 이력이 유지됩니다. **서명 시크릿은 이 응답에서 한 번만 나갑니다.** 서버는 해시만 보관하므로 조회로 다시 받을 수 없습니다. 응답의 `secret` 을 즉시 안전한 곳에 보관하세요. 잃어버렸다면 복구가 아니라 `POST /v2/webhook-endpoints/{endpointId}/rotate-secret` 으로 **재발급**해야 합니다. **거절되는 경우와 고치는 법:** - `400` — `url` 이 HTTPS 가 아니거나 형식이 잘못됨, `eventTypes` 가 비었거나 목록 밖 값 (`ping` 은 구독 불가). 값을 고쳐 재시도하세요. - `400` — `Idempotency-Key` 헤더 누락/형식 오류. UUID v4 를 실어 보내세요. - `403` — 토큰에 `webhooks:write` 스코프가 없음. 키 발급 설정을 넓혀야 합니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. ### 서명 검증 (필수) 발송 요청마다 헤더 `X-CMarket-Signature` 가 실립니다. ``` X-CMarket-Signature: t=<unix초>,v1=<hex> ``` `v1` 은 `HMAC-SHA256(secret, \"${t}.${요청 본문 원문}\")` 의 소문자 hex 입니다. 1. 헤더를 `t` 와 `v1` 로 나눕니다. 2. `\"${t}.${본문}\"` 을 만듭니다. **본문은 파싱 전 원문 바이트**여야 합니다 — JSON 을 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. 등록 시 받은 시크릿으로 HMAC-SHA256 을 계산해 `v1` 과 비교합니다. 비교는 **상수 시간** 비교 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `t` 가 현재 시각으로부터 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). ### 중복 제거 `X-CMarket-Event-Id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. ### 응답과 재시도 2xx 를 돌려주면 성공입니다. 그 외(또는 무응답)는 실패로 보고 최대 7회 재시도합니다 — 간격은 10초 → 1분 → 5분 → 30분 → 2시간 → 6시간 → 24시간 입니다. 처리 시간이 길면 먼저 2xx 를 돌려주고 비동기로 처리하세요. 연속 실패가 20회에 닿으면 구독이 자동으로 `DISABLED` 로 내려가고 발송이 멈춥니다. 수신측을 고친 뒤 `PATCH /v2/webhook-endpoints/{endpointId}` 에 `{\"status\":\"ACTIVE\"}` 로 되살리세요. ### 구독 가능한 이벤트 `bid.closed` · `bid.awarded` · `bid.failed` · `bid.canceled` · `bid.award_reverted` `ping` 은 연결 확인 전용이라 구독할 수 없습니다 — 테스트 발송 경로에서만 나갑니다. ### 놓친 이벤트 확인 `GET /v2/webhook-deliveries` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
|
|
2916
|
+
* @summary 웹훅 구독 등록
|
|
2917
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
2918
|
+
* @param {CreateWebhookEndpointRequestDto} createWebhookEndpointRequestDto
|
|
2919
|
+
* @param {*} [options] Override http request option.
|
|
2920
|
+
* @throws {RequiredError}
|
|
2921
|
+
*/
|
|
2922
|
+
createWebhookEndpoint(idempotencyKey, createWebhookEndpointRequestDto, options) {
|
|
2923
|
+
return PartnerV2ApiFp(this.configuration).createWebhookEndpoint(idempotencyKey, createWebhookEndpointRequestDto, options).then((request) => request(this.axios, this.basePath));
|
|
2924
|
+
}
|
|
2925
|
+
/**
|
|
2926
|
+
* 구독을 삭제합니다. 이후 그 주소로는 아무 이벤트도 발송되지 않습니다. **호출 시점:** 연동을 종료할 때. 잠시만 멈추려면 삭제하지 말고 `PATCH … {\"status\":\"DISABLED\"}` 를 쓰세요 — 시크릿과 이벤트 구성이 남아 그대로 되살릴 수 있습니다. **되돌릴 수 없습니다.** 다시 등록하면 새 구독이고 서명 시크릿도 새 값입니다. **`If-Match` 가 필수입니다.** `GET` 으로 받은 `ETag` 를 실어 보내세요. - `428` — 헤더 누락. 조회 후 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다(누군가 수정했거나 발송기가 상태를 내렸습니다). 다시 조회해 정말 지울 대상이 맞는지 확인하고 최신 `ETag` 로 재시도하세요. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
2927
|
+
* @summary 웹훅 구독 삭제
|
|
2928
|
+
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
2929
|
+
* @param {string} ifMatch
|
|
2930
|
+
* @param {string} ifMatch2 직전 조회 응답의 `ETag` 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
|
|
2931
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
2932
|
+
* @param {*} [options] Override http request option.
|
|
2933
|
+
* @throws {RequiredError}
|
|
2934
|
+
*/
|
|
2935
|
+
deleteWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, options) {
|
|
2936
|
+
return PartnerV2ApiFp(this.configuration).deleteWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, options).then((request) => request(this.axios, this.basePath));
|
|
2937
|
+
}
|
|
2938
|
+
/**
|
|
2939
|
+
* 무인증 — `fileKey` 자체가 capability 다(V5 `/download/{fileKey}` 와 같은 보안 모델). 파트너 응답의 `fileUrl`/`fullUrl` 이 이 URL 을 가리킨다. 요청 시점에 서명하므로 URL 을 저장해 두어도 만료되지 않는다. 응답은 실제 저장소 URL 로의 302 리다이렉트이며 리다이렉트 타깃은 1시간 뒤 만료되므로 302 자체를 캐시하지 말 것(`Cache-Control: no-store`). --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — `GET /v2/files/{fileKey}` 가 파일 메타와 `downloadUrl` 을 v2 응답 규약으로 돌려줍니다. 이 안정 URL 은 파트너 응답의 `fileUrl`/`fullUrl` 이 가리키는 주소라 계속 유지되며 중단 일정은 없습니다.
|
|
1828
2940
|
* @summary 파일 다운로드 — 안정 URL(302)
|
|
1829
2941
|
* @param {string} fileKey 파일 키 — UUIDv4 hex 32자. 업로드(`POST /v1|/v2/files`) 응답에서 받은 값.
|
|
1830
2942
|
* @param {*} [options] Override http request option.
|
|
@@ -1843,6 +2955,16 @@ export class PartnerV2Api extends BaseAPI {
|
|
|
1843
2955
|
getBid(bidId, options) {
|
|
1844
2956
|
return PartnerV2ApiFp(this.configuration).getBid(bidId, options).then((request) => request(this.axios, this.basePath));
|
|
1845
2957
|
}
|
|
2958
|
+
/**
|
|
2959
|
+
* 공고의 납품·검수·계약완료 진행 상태를 조회합니다. 검수완료 전송의 읽기 카운터파트입니다. **세 축은 서로 다른 사건입니다.** - `delivered`: 낙찰 공급사가 납품(결과확인)을 보고했습니다. - `confirmed`/`confirmedAt`: 발주기관이 검수를 확인했습니다. - `contractCompletedAt`: 검수완료 전송이 원장에 반영된 시각입니다. 검수완료 전송(`POST /v2/bids/{bidId}/acceptance`)이 성사되었는지는 `contractCompletedAt` 이 채워졌는지로 확인하세요. **필수 스코프:** `contracts:read`
|
|
2960
|
+
* @summary 검수 현황 조회
|
|
2961
|
+
* @param {string} bidId 공고 ID(= backend bidId = 등록 응답의 bidNo).
|
|
2962
|
+
* @param {*} [options] Override http request option.
|
|
2963
|
+
* @throws {RequiredError}
|
|
2964
|
+
*/
|
|
2965
|
+
getBidAcceptance(bidId, options) {
|
|
2966
|
+
return PartnerV2ApiFp(this.configuration).getBidAcceptance(bidId, options).then((request) => request(this.axios, this.basePath));
|
|
2967
|
+
}
|
|
1846
2968
|
/**
|
|
1847
2969
|
* 공고의 응찰 참여 업체·순위·낙찰 여부를 조회한다. scope bids:read.
|
|
1848
2970
|
* @summary 입찰 결과 조회
|
|
@@ -1854,7 +2976,7 @@ export class PartnerV2Api extends BaseAPI {
|
|
|
1854
2976
|
return PartnerV2ApiFp(this.configuration).getBidResults(bidId, options).then((request) => request(this.axios, this.basePath));
|
|
1855
2977
|
}
|
|
1856
2978
|
/**
|
|
1857
|
-
* 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을
|
|
2979
|
+
* 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 가시성 마스킹과는 직교한 정산 데이터이며 읽기 전용입니다. **필수 스코프:** `invoices:read` — 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
|
|
1858
2980
|
* @summary 입찰결과 정산정보 조회
|
|
1859
2981
|
* @param {string} bidId
|
|
1860
2982
|
* @param {*} [options] Override http request option.
|
|
@@ -1864,7 +2986,7 @@ export class PartnerV2Api extends BaseAPI {
|
|
|
1864
2986
|
return PartnerV2ApiFp(this.configuration).getBidSettlement(bidId, options).then((request) => request(this.axios, this.basePath));
|
|
1865
2987
|
}
|
|
1866
2988
|
/**
|
|
1867
|
-
* 낙찰 계약의 거래명세서(
|
|
2989
|
+
* 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
|
|
1868
2990
|
* @summary 거래명세서 조회
|
|
1869
2991
|
* @param {string} bidId
|
|
1870
2992
|
* @param {number} [paperCode]
|
|
@@ -1874,6 +2996,16 @@ export class PartnerV2Api extends BaseAPI {
|
|
|
1874
2996
|
getBidStatement(bidId, paperCode, options) {
|
|
1875
2997
|
return PartnerV2ApiFp(this.configuration).getBidStatement(bidId, paperCode, options).then((request) => request(this.axios, this.basePath));
|
|
1876
2998
|
}
|
|
2999
|
+
/**
|
|
3000
|
+
* 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **구 경로:** 버전 없는 `GET /files/{fileKey}` 는 만료 없는 안정 주소이고 파트너 응답의 `fileUrl`/`fullUrl` 이 그 값을 가리킵니다. 인증도 스코프도 없는 옛 표면이라 신규 연동은 이 엔드포인트를 쓰세요. 구 경로는 당분간 유지됩니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** 하이픈 없는 16진수 32자가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. **필수 스코프:** `files:read`
|
|
3001
|
+
* @summary 파일 조회(메타 + 내려받기 주소)
|
|
3002
|
+
* @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(하이픈 없는 16진수 32자).
|
|
3003
|
+
* @param {*} [options] Override http request option.
|
|
3004
|
+
* @throws {RequiredError}
|
|
3005
|
+
*/
|
|
3006
|
+
getFileMeta(fileKey, options) {
|
|
3007
|
+
return PartnerV2ApiFp(this.configuration).getFileMeta(fileKey, options).then((request) => request(this.axios, this.basePath));
|
|
3008
|
+
}
|
|
1877
3009
|
/**
|
|
1878
3010
|
* 등록한 계약의 계산서 발행 상태를 확인합니다. **언제 쓰나:** 씨마켓이 보내는 발행완료 통지를 놓쳤을 때의 **복구 경로**입니다. 평상시에는 통지를 받아 처리하고, 상태가 어긋난 것 같을 때 이 API 로 되읽으세요. **필수 스코프:** `contracts:read`
|
|
1879
3011
|
* @summary 계산서 발행 상태 조회
|
|
@@ -1885,7 +3017,7 @@ export class PartnerV2Api extends BaseAPI {
|
|
|
1885
3017
|
return PartnerV2ApiFp(this.configuration).getSemoContractTaxinvoiceStatus(externalContractId, options).then((request) => request(this.axios, this.basePath));
|
|
1886
3018
|
}
|
|
1887
3019
|
/**
|
|
1888
|
-
* 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write`
|
|
3020
|
+
* 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어는 지지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **필수 스코프:** `payments:write` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 이미 있습니다 — 같은 기능을 v2 응답 규약으로 제공하는 `POST /v2/card-payments` 와 `GET /v2/suppliers/{memberId}/card-payable` 를 신규 연동에 권합니다. 이 경로도 계속 동작하며 중단 일정은 없습니다.
|
|
1889
3021
|
* @summary 공급사 카드결제 가능 여부
|
|
1890
3022
|
* @param {string} memberId 계약업체 회원 ID
|
|
1891
3023
|
* @param {*} [options] Override http request option.
|
|
@@ -1894,6 +3026,26 @@ export class PartnerV2Api extends BaseAPI {
|
|
|
1894
3026
|
getSupplierCardPayable(memberId, options) {
|
|
1895
3027
|
return PartnerV2ApiFp(this.configuration).getSupplierCardPayable(memberId, options).then((request) => request(this.axios, this.basePath));
|
|
1896
3028
|
}
|
|
3029
|
+
/**
|
|
3030
|
+
* 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
|
|
3031
|
+
* @summary 공급사 카드결제 가능 여부
|
|
3032
|
+
* @param {string} memberId 계약업체 회원 ID
|
|
3033
|
+
* @param {*} [options] Override http request option.
|
|
3034
|
+
* @throws {RequiredError}
|
|
3035
|
+
*/
|
|
3036
|
+
getSupplierCardPayableV2(memberId, options) {
|
|
3037
|
+
return PartnerV2ApiFp(this.configuration).getSupplierCardPayableV2(memberId, options).then((request) => request(this.axios, this.basePath));
|
|
3038
|
+
}
|
|
3039
|
+
/**
|
|
3040
|
+
* 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
|
|
3041
|
+
* @summary 웹훅 구독 단건 조회
|
|
3042
|
+
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
3043
|
+
* @param {*} [options] Override http request option.
|
|
3044
|
+
* @throws {RequiredError}
|
|
3045
|
+
*/
|
|
3046
|
+
getWebhookEndpoint(endpointId, options) {
|
|
3047
|
+
return PartnerV2ApiFp(this.configuration).getWebhookEndpoint(endpointId, options).then((request) => request(this.axios, this.basePath));
|
|
3048
|
+
}
|
|
1897
3049
|
/**
|
|
1898
3050
|
* ERP 연동 직전 회선·인증 endpoint 동작 확인용.
|
|
1899
3051
|
* @summary Partner API 헬스체크
|
|
@@ -1904,16 +3056,34 @@ export class PartnerV2Api extends BaseAPI {
|
|
|
1904
3056
|
return PartnerV2ApiFp(this.configuration).healthControllerCheck(options).then((request) => request(this.axios, this.basePath));
|
|
1905
3057
|
}
|
|
1906
3058
|
/**
|
|
1907
|
-
*
|
|
1908
|
-
* @summary
|
|
3059
|
+
* 공고의 계약서류 목록과 내려받기 주소를 조회합니다. **목록에 실리는 것:** 공고 전체에 공통인 서류(약관·자동생성 공통본)와 낙찰자에게 귀속된 서류를 함께 싣습니다. 낙찰자 귀속 서류는 `winnerSequence` 에 그 낙찰자의 응찰 순번이 들어갑니다. **아직 없는 서류도 실립니다.** 공고가 제출을 요구했지만 아직 올라오지 않은 서류는 `fileKey: null` 로 나타나므로, 제출 여부는 이 값으로 판정하세요. **자동생성 서류:** `autoGenerated: true` 인 서류는 c-market 이 만들어 줍니다. 만드는 중이면 `generationState` 가 `QUEUED`/`PROCESSING` 이고 `downloadUrl` 이 아직 없습니다. `DEAD_LETTER` 는 생성이 실패해 멈춘 상태이며, 같은 경로의 POST(재생성)로 다시 큐에 올립니다. **내려받기:** `downloadUrl` 은 유효기간 1시간의 서명 주소입니다. 저장해 두고 재사용하지 마시고 필요할 때 이 엔드포인트를 다시 호출하세요. 기간에 얽매이지 않으려면 `fileKey` 를 보관하시고 파일 내려받기 경로를 사용하세요. **보이는 범위:** 서버가 공고 낙찰방법과 진행 단계로 결정합니다. 응답을 그대로 사용하시고 클라이언트에서 다시 거르지 마세요. **필수 스코프:** `contracts:read`
|
|
3060
|
+
* @summary 계약서류 목록 조회
|
|
3061
|
+
* @param {string} bidId 공고번호(buy_idx, 예 CM…) 또는 외부 구매번호(bid_puchase_no).
|
|
3062
|
+
* @param {*} [options] Override http request option.
|
|
3063
|
+
* @throws {RequiredError}
|
|
3064
|
+
*/
|
|
3065
|
+
listBidContractDocuments(bidId, options) {
|
|
3066
|
+
return PartnerV2ApiFp(this.configuration).listBidContractDocuments(bidId, options).then((request) => request(this.axios, this.basePath));
|
|
3067
|
+
}
|
|
3068
|
+
/**
|
|
3069
|
+
* 공고에 응찰한 업체 목록을 조회합니다. 스코프 `bids:read` 필수. **보이는 범위는 공고의 낙찰방법과 진행 단계가 결정합니다.** 개찰 전에는 업체명이 가려지고 (`companyName: null`), 순위는 산정 전까지 `null` 입니다. 이 판정은 서버가 소유하므로 응답을 그대로 사용하시고 클라이언트에서 다시 계산하지 마세요. 같은 목록이 `GET /v2/bids/{bidId}` 응답의 `participants` 에도 실립니다 — 응찰 현황만 필요하면 이 엔드포인트가 가볍습니다.
|
|
3070
|
+
* @summary 응찰 현황 조회
|
|
1909
3071
|
* @param {string} bidId 공고 식별자(등록 응답의 bidId).
|
|
1910
|
-
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
1911
|
-
* @param {IssueTaxInvoiceRequestDto} issueTaxInvoiceRequestDto
|
|
1912
3072
|
* @param {*} [options] Override http request option.
|
|
1913
3073
|
* @throws {RequiredError}
|
|
1914
3074
|
*/
|
|
1915
|
-
|
|
1916
|
-
return PartnerV2ApiFp(this.configuration).
|
|
3075
|
+
listBidParticipants(bidId, options) {
|
|
3076
|
+
return PartnerV2ApiFp(this.configuration).listBidParticipants(bidId, options).then((request) => request(this.axios, this.basePath));
|
|
3077
|
+
}
|
|
3078
|
+
/**
|
|
3079
|
+
* 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에는 `ETag` 가 실리므로, 다음 요청에 `If-None-Match` 로 되보내면 결과가 그대로일 때 `304` 를 본문 없이 받습니다 — 마감을 기다리는 동안의 전송량이 사라집니다. **식별자 전달:** `?bidIds=A,B,C`(쉼표) 또는 `?bidIds=A&bidIds=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다 — 요청한 건수와 받은 건수가 다를 수 있으니 `bidId` 로 대조하세요. **목록이 길어 URL 이 부담되면** `POST /v2/bid-results/query` 를 쓰세요. 응답은 같습니다.
|
|
3080
|
+
* @summary 입찰 결과 배치 조회
|
|
3081
|
+
* @param {string} bidIds 조회할 공고 식별자 목록. 쉼표로 구분하거나 `bidIds` 를 반복해 전달합니다. 최대 100건.
|
|
3082
|
+
* @param {*} [options] Override http request option.
|
|
3083
|
+
* @throws {RequiredError}
|
|
3084
|
+
*/
|
|
3085
|
+
listBidResults(bidIds, options) {
|
|
3086
|
+
return PartnerV2ApiFp(this.configuration).listBidResults(bidIds, options).then((request) => request(this.axios, this.basePath));
|
|
1917
3087
|
}
|
|
1918
3088
|
/**
|
|
1919
3089
|
* 발주처(API 키 바인딩)의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(쿼리에 buyerId 를 넣지 않습니다). **페이지네이션(cursor):** `limit`(1~100, 기본 100) + `cursor`(불투명 토큰). 응답의 `nextCursor` 를 다음 요청 `cursor` 로 전달하면 다음 페이지를 받습니다. `nextCursor=null` 이면 마지막 페이지입니다. **상태·낙찰방법:** 공개값(의미 문자열)으로 반환됩니다. 낙찰 여부는 상태가 아니라 낙찰 결과 조회의 `participants[].isWinner` 로 관측합니다(AWARDED 상태는 없습니다).
|
|
@@ -1930,7 +3100,7 @@ export class PartnerV2Api extends BaseAPI {
|
|
|
1930
3100
|
return PartnerV2ApiFp(this.configuration).listBids(limit, cursor, bidIds, status, include, options).then((request) => request(this.axios, this.basePath));
|
|
1931
3101
|
}
|
|
1932
3102
|
/**
|
|
1933
|
-
* 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read`
|
|
3103
|
+
* 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidId}/contract-documents` 가 v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
|
|
1934
3104
|
* @summary 거래에 필요한 계약서류 목록 조회
|
|
1935
3105
|
* @param {string} buyerId 발주기관 회원 ID(c-market memberId).
|
|
1936
3106
|
* @param {ListExternalContractDocumentsBidTypeEnum} bidType 거래유형.
|
|
@@ -1940,6 +3110,37 @@ export class PartnerV2Api extends BaseAPI {
|
|
|
1940
3110
|
listExternalContractDocuments(buyerId, bidType, options) {
|
|
1941
3111
|
return PartnerV2ApiFp(this.configuration).listExternalContractDocuments(buyerId, bidType, options).then((request) => request(this.axios, this.basePath));
|
|
1942
3112
|
}
|
|
3113
|
+
/**
|
|
3114
|
+
* 기관에 공유된 물품 중 **아직 전송되지 않은 것**을 조회합니다. **증분 피드입니다.** 가져간 물품을 `POST /v2/products/receipts` 로 수신확인하면 다음 조회 결과에서 빠집니다. 수신확인을 하지 않으면 같은 물품이 계속 내려옵니다. **권장 흐름:** 조회 → 자기 시스템에 저장 → 저장에 성공한 물품 코드만 수신확인. 저장 전에 수신확인하면 그 물품은 다시 받을 수 없습니다. **조회 범위:** 요청 키가 대행하는 기관 그룹입니다. 기관 그룹이 설정되지 않은 키는 403 입니다. **필수 스코프:** `products:read`
|
|
3115
|
+
* @summary 물품 카탈로그 조회
|
|
3116
|
+
* @param {*} [options] Override http request option.
|
|
3117
|
+
* @throws {RequiredError}
|
|
3118
|
+
*/
|
|
3119
|
+
listProducts(options) {
|
|
3120
|
+
return PartnerV2ApiFp(this.configuration).listProducts(options).then((request) => request(this.axios, this.basePath));
|
|
3121
|
+
}
|
|
3122
|
+
/**
|
|
3123
|
+
* 이 API 키의 웹훅 발송 시도를 최신순으로 조회합니다. 보낸 본문·수신측 응답 상태· 다음 재시도 예정 시각이 함께 실립니다. **호출 시점:** - 수신측 장애로 놓친 이벤트를 메울 때. 이 엔드포인트가 웹훅의 **폴링 대체 경로**입니다 — `status=EXHAUSTED` 로 걸러 다시 처리하면 됩니다. - \"이벤트가 안 온다\" 를 진단할 때. 발송 시도 자체가 없는지(구독·이벤트 타입 문제), 시도했지만 실패했는지(`responseStatus`·`responseBodyExcerpt`)를 여기서 가릅니다. **같은 이벤트가 여러 행으로 보입니다.** 재시도마다 한 행이며 `eventId` 가 같고 `attempt` 만 올라갑니다. 처리 여부는 `eventId` 기준으로 판단하세요. **페이지네이션:** `nextCursor` 를 다음 요청의 `cursor` 로 전달합니다. null 이면 마지막 페이지입니다. **`400`:** `status` 가 허용 값 밖이거나 `limit` 이 범위를 벗어났습니다 — 값을 고쳐 재시도하세요. **필수 스코프:** `webhooks:read`
|
|
3124
|
+
* @summary 웹훅 전송 이력 조회
|
|
3125
|
+
* @param {string} [endpointId] 이 구독의 전송만 조회합니다. 미지정이면 이 키의 모든 구독을 함께 조회합니다.
|
|
3126
|
+
* @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
|
|
3127
|
+
* @param {number} [limit] 페이지 크기(1~200, 기본 50).
|
|
3128
|
+
* @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 `nextCursor` 를 그대로 전달합니다. 미지정 시 첫 페이지.
|
|
3129
|
+
* @param {*} [options] Override http request option.
|
|
3130
|
+
* @throws {RequiredError}
|
|
3131
|
+
*/
|
|
3132
|
+
listWebhookDeliveries(endpointId, status, limit, cursor, options) {
|
|
3133
|
+
return PartnerV2ApiFp(this.configuration).listWebhookDeliveries(endpointId, status, limit, cursor, options).then((request) => request(this.axios, this.basePath));
|
|
3134
|
+
}
|
|
3135
|
+
/**
|
|
3136
|
+
* 이 API 키가 등록한 웹훅 구독을 모두 조회합니다. **호출 시점:** 연동 상태를 점검할 때, 또는 발송이 멈춘 이유(`status`·`consecutiveFailures`)를 확인할 때. 서명 시크릿은 여기에 실리지 않습니다. **필수 스코프:** `webhooks:read` ### 서명 검증 (필수) 발송 요청마다 헤더 `X-CMarket-Signature` 가 실립니다. ``` X-CMarket-Signature: t=<unix초>,v1=<hex> ``` `v1` 은 `HMAC-SHA256(secret, \"${t}.${요청 본문 원문}\")` 의 소문자 hex 입니다. 1. 헤더를 `t` 와 `v1` 로 나눕니다. 2. `\"${t}.${본문}\"` 을 만듭니다. **본문은 파싱 전 원문 바이트**여야 합니다 — JSON 을 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. 등록 시 받은 시크릿으로 HMAC-SHA256 을 계산해 `v1` 과 비교합니다. 비교는 **상수 시간** 비교 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `t` 가 현재 시각으로부터 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). ### 중복 제거 `X-CMarket-Event-Id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. ### 응답과 재시도 2xx 를 돌려주면 성공입니다. 그 외(또는 무응답)는 실패로 보고 최대 7회 재시도합니다 — 간격은 10초 → 1분 → 5분 → 30분 → 2시간 → 6시간 → 24시간 입니다. 처리 시간이 길면 먼저 2xx 를 돌려주고 비동기로 처리하세요. 연속 실패가 20회에 닿으면 구독이 자동으로 `DISABLED` 로 내려가고 발송이 멈춥니다. 수신측을 고친 뒤 `PATCH /v2/webhook-endpoints/{endpointId}` 에 `{\"status\":\"ACTIVE\"}` 로 되살리세요. ### 구독 가능한 이벤트 `bid.closed` · `bid.awarded` · `bid.failed` · `bid.canceled` · `bid.award_reverted` `ping` 은 연결 확인 전용이라 구독할 수 없습니다 — 테스트 발송 경로에서만 나갑니다. ### 놓친 이벤트 확인 `GET /v2/webhook-deliveries` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
|
|
3137
|
+
* @summary 웹훅 구독 목록 조회
|
|
3138
|
+
* @param {*} [options] Override http request option.
|
|
3139
|
+
* @throws {RequiredError}
|
|
3140
|
+
*/
|
|
3141
|
+
listWebhookEndpoints(options) {
|
|
3142
|
+
return PartnerV2ApiFp(this.configuration).listWebhookEndpoints(options).then((request) => request(this.axios, this.basePath));
|
|
3143
|
+
}
|
|
1943
3144
|
/**
|
|
1944
3145
|
* 공고를 유찰 상태로 전환합니다. **호출 시점:** 입찰 마감 후 유찰 사유가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 공고 상태가 유찰(FAILED)로 전환됩니다. - 유찰사유 코드와 상세가 기록됩니다. **유찰사유 값 목록(failureReasonCode — 공개값):** | 값 | 의미 | |------|------| | `ABOVE_TARGET_PRICE` | 예정가격 초과 | | `DEPT_MISMATCH` | 자격 미달 | | `NEEDS_EXPERTISE` | 전문성 필요 | | `OTHER` | 기타 (`failureReasonDetail` 필수) | | `NO_PARTICIPANT` | 참가자 없음 | | `SINGLE_PARTICIPANT` | 단독 참가 | | `LESS_THAN_TWO` | 2인 미만 | | `BELOW_MINIMUM` | 최저가 미달 | **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(요청 body 에 buyerId 를 넣지 않습니다). **필수 스코프:** `awards:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
1945
3146
|
* @summary 유찰 처리
|
|
@@ -1963,6 +3164,16 @@ export class PartnerV2Api extends BaseAPI {
|
|
|
1963
3164
|
publishBid(bidId, idempotencyKey, options) {
|
|
1964
3165
|
return PartnerV2ApiFp(this.configuration).publishBid(bidId, idempotencyKey, options).then((request) => request(this.axios, this.basePath));
|
|
1965
3166
|
}
|
|
3167
|
+
/**
|
|
3168
|
+
* `GET /v2/bid-results` 와 **완전히 같은 조회**이며, 식별자 목록을 본문으로 받습니다. 스코프 `bids:read`. 공고 식별자 100건이면 URL 이 1KB를 넘습니다 — 중간 프록시가 긴 URL 을 자르는 환경을 위한 대체 경로입니다. **부수효과가 없으므로 `Idempotency-Key` 는 필요하지 않습니다.** POST 인 것은 전송 형태의 문제일 뿐이며, 가능하면 캐시·`ETag` 가 동작하는 `GET` 쪽을 쓰세요.
|
|
3169
|
+
* @summary 입찰 결과 배치 조회 (본문 전달)
|
|
3170
|
+
* @param {BidResultsBatchRequestDto} bidResultsBatchRequestDto
|
|
3171
|
+
* @param {*} [options] Override http request option.
|
|
3172
|
+
* @throws {RequiredError}
|
|
3173
|
+
*/
|
|
3174
|
+
queryBidResults(bidResultsBatchRequestDto, options) {
|
|
3175
|
+
return PartnerV2ApiFp(this.configuration).queryBidResults(bidResultsBatchRequestDto, options).then((request) => request(this.axios, this.basePath));
|
|
3176
|
+
}
|
|
1966
3177
|
/**
|
|
1967
3178
|
* 공고의 자동생성 계약서류(발주서·공고결과·표준계약서 등)를 생성/재생성합니다. **V6 대응:** `RegenerateAllContractPdfsCommand` — 웹 어드민의 \"계약 서류 일괄 재생성\"과 동일 경로. **호출 시점:** 낙찰(계약 시작) 후 계약서류가 필요하거나, 생성에 실패한 서류를 다시 만들 때. **부수효과:** - 생성 실패(DEAD_LETTER) 상태의 자동생성 PDF 가 재생성 큐에 등록됩니다(비동기). - 승낙사항(ACCEPTANCE) 계열은 운영자 승인 워크플로가 필요해 이 경로에서 제외됩니다. **응답:** 즉시 파일이 아니라 큐 등록 결과(`enqueuedCount`/`skippedCount`)를 반환합니다. 잠시 후 자동 생성됩니다. **필수 스코프:** `contracts:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
1968
3179
|
* @summary 계약서류 생성(재생성)
|
|
@@ -1989,12 +3200,13 @@ export class PartnerV2Api extends BaseAPI {
|
|
|
1989
3200
|
/**
|
|
1990
3201
|
* 입찰 정보 등록. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수.
|
|
1991
3202
|
* @summary 입찰 정보 전송(등록)
|
|
3203
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
|
|
1992
3204
|
* @param {CreateBidRequestDto} createBidRequestDto
|
|
1993
3205
|
* @param {*} [options] Override http request option.
|
|
1994
3206
|
* @throws {RequiredError}
|
|
1995
3207
|
*/
|
|
1996
|
-
registerBid(createBidRequestDto, options) {
|
|
1997
|
-
return PartnerV2ApiFp(this.configuration).registerBid(createBidRequestDto, options).then((request) => request(this.axios, this.basePath));
|
|
3208
|
+
registerBid(idempotencyKey, createBidRequestDto, options) {
|
|
3209
|
+
return PartnerV2ApiFp(this.configuration).registerBid(idempotencyKey, createBidRequestDto, options).then((request) => request(this.axios, this.basePath));
|
|
1998
3210
|
}
|
|
1999
3211
|
/**
|
|
2000
3212
|
* 외부에서 맺어진 계약 1건을 씨마켓의 **세금계산서 발행 대상**으로 등록합니다. **등록 후 동선:** 발주기관이 씨마켓 [나의 계약 관리] 에서 계산서 발급을 요청하고, 공급기업이 같은 화면에서 발행합니다. 계산서의 **공급자는 공급기업, 공급받는자는 발주기관**입니다. **대금 흐름:** 씨마켓은 이 거래의 대금을 받지 않습니다 — 발행 경로만 제공합니다. **금액:** `supplyPrice` 는 **부가세를 뺀 과세 공급가액**입니다(결제창 API 가 부가세 포함가를 받는 것과 다릅니다). 과세·면세 공급가액이 모두 0 이면 400 입니다. **사전 조건:** 두 회원 ID 가 씨마켓에 실재해야 합니다. 회원 ID 가 곧 소유권이라, 없는 회원으로 등록하면 아무도 열 수 없는 계산서 대상이 됩니다. **필수 스코프:** `contracts:write`. 바인딩된 발주처 외의 발주기관을 대신하려면 대행 범위에 그 회원이 있어야 합니다. **멱등성:** `externalContractId` 가 멱등키입니다. 같은 값으로 재요청하면 새로 만들지 않고 기존 대상을 돌려줍니다(`reused=true`). `Idempotency-Key` 헤더도 함께 사용하세요.
|
|
@@ -2008,28 +3220,66 @@ export class PartnerV2Api extends BaseAPI {
|
|
|
2008
3220
|
return PartnerV2ApiFp(this.configuration).registerSemoContract(idempotencyKey, registerSemoContractRequestDto, options).then((request) => request(this.axios, this.basePath));
|
|
2009
3221
|
}
|
|
2010
3222
|
/**
|
|
2011
|
-
*
|
|
2012
|
-
* @summary
|
|
3223
|
+
* 확정된 낙찰을 되돌려 공고를 낙찰대기(PENDING_AWARD) 상태로 보냅니다. 스코프 `awards:write` + `Idempotency-Key` 헤더 필수. **호출 시점:** 낙찰자가 계약을 포기했거나 낙찰 처리 자체가 잘못됐을 때. 되돌린 뒤 같은 공고에 다시 낙찰을 등록할 수 있습니다. **되돌릴 수 없는 경우 → 409:** - 수수료 결제가 이미 완료된 공고 - 세금계산서가 이미 발행된 공고 - 수입권공매 계열 낙찰방법(다수 낙찰자 구조라 되돌리기 단위가 다릅니다) **사유는 필수입니다** — 감사 대상 행위이며 공고 이력에 남습니다. **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
|
|
3224
|
+
* @summary 낙찰 되돌리기
|
|
2013
3225
|
* @param {string} bidId 공고 식별자(등록 응답의 bidId).
|
|
3226
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 재전송 시 캐시 응답 반환(24시간).
|
|
3227
|
+
* @param {RevertAwardRequestDto} revertAwardRequestDto
|
|
3228
|
+
* @param {*} [options] Override http request option.
|
|
3229
|
+
* @throws {RequiredError}
|
|
3230
|
+
*/
|
|
3231
|
+
revertAward(bidId, idempotencyKey, revertAwardRequestDto, options) {
|
|
3232
|
+
return PartnerV2ApiFp(this.configuration).revertAward(bidId, idempotencyKey, revertAwardRequestDto, options).then((request) => request(this.axios, this.basePath));
|
|
3233
|
+
}
|
|
3234
|
+
/**
|
|
3235
|
+
* 서명 시크릿을 새로 발급합니다. 응답의 `secretVersion` 이 1 올라갑니다. **호출 시점:** 시크릿을 분실했거나 유출이 의심될 때, 또는 주기적 교체 정책이 있을 때. **새 시크릿은 이 응답에서 한 번만 나갑니다.** 조회로 다시 받을 수 없습니다. **옛 시크릿은 즉시 무효입니다.** 유예 기간이 없으므로, 수신측이 새 값을 반영하기 전에 도착한 이벤트는 서명 검증에 실패합니다. 배포 순서를 이렇게 잡으세요 — ① 수신측이 옛 값과 새 값을 **둘 다** 받아들이도록 배포 → ② 이 엔드포인트 호출 → ③ 응답의 새 값을 반영 → ④ 옛 값 제거. 검증 실패로 non-2xx 를 돌려주면 실패로 집계되어 20회 연속 시 구독이 중지됩니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 같은 키로 재전송하면 **새로 발급하지 않고** 처음 발급한 값을 그대로 돌려줍니다(24시간) — 네트워크 오류로 응답을 놓쳤을 때 같은 키로 다시 부르세요.
|
|
3236
|
+
* @summary 웹훅 서명 시크릿 재발급
|
|
3237
|
+
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
3238
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
3239
|
+
* @param {*} [options] Override http request option.
|
|
3240
|
+
* @throws {RequiredError}
|
|
3241
|
+
*/
|
|
3242
|
+
rotateWebhookSecret(endpointId, idempotencyKey, options) {
|
|
3243
|
+
return PartnerV2ApiFp(this.configuration).rotateWebhookSecret(endpointId, idempotencyKey, options).then((request) => request(this.axios, this.basePath));
|
|
3244
|
+
}
|
|
3245
|
+
/**
|
|
3246
|
+
* 등록된 주소로 `ping` 이벤트를 즉시 1회 보내고 그 결과를 돌려줍니다. **호출 시점:** 구독을 등록한 직후, 수신 주소를 바꾼 직후, 방화벽·인증서를 손본 뒤. **응답은 발송 결과이지 요청 실패가 아닙니다.** 수신측이 받지 못해도 HTTP `200` 에 `delivered: false` 로 옵니다 — `responseStatus`(수신측 상태)와 `error`(연결 거부·타임아웃· TLS 오류)를 보고 원인을 좁히세요. 이 발송에도 실제 이벤트와 **똑같은 서명 헤더**가 실리므로 검증 코드를 그대로 시험할 수 있습니다. `ping` 은 구독 목록에 넣을 수 없는 타입이니, 수신측이 모르는 `eventType` 을 만나면 버리도록 짜여 있다면 이 확인만 실패할 수 있습니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수. 다시 보내려면 **새 키**를 쓰세요 — 같은 키는 24시간 동안 직전 결과를 그대로 돌려줍니다(재발송하지 않습니다).
|
|
3247
|
+
* @summary 웹훅 연결 확인 발송
|
|
3248
|
+
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
2014
3249
|
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
2015
|
-
* @param {SubmitNegotiationScoresRequestDto} submitNegotiationScoresRequestDto
|
|
2016
3250
|
* @param {*} [options] Override http request option.
|
|
2017
3251
|
* @throws {RequiredError}
|
|
2018
3252
|
*/
|
|
2019
|
-
|
|
2020
|
-
return PartnerV2ApiFp(this.configuration).
|
|
3253
|
+
sendWebhookTestEvent(endpointId, idempotencyKey, options) {
|
|
3254
|
+
return PartnerV2ApiFp(this.configuration).sendWebhookTestEvent(endpointId, idempotencyKey, options).then((request) => request(this.axios, this.basePath));
|
|
2021
3255
|
}
|
|
2022
3256
|
/**
|
|
2023
3257
|
* 등록된 공고의 내용을 수정합니다. 스코프 `bids:write` + `Idempotency-Key` 헤더 필수. 진행중/초안 상태의 공고만 수정할 수 있습니다. **부수효과:** - 변경 내용이 반영되고 수정이력이 기록됩니다. - `hideEdit=true` 면 변경이력을 비공개 처리하고 노출 카운터 증가를 생략합니다. **수정 제약:** - 낙찰방법(awardMethod)은 수정 불가(잠금). - 참여자가 있으면 입찰방식/면허/예산/품목 일부가 잠깁니다. - 마감/취소된 공고는 수정할 수 없습니다. 한 섹션을 수정하려면 해당 섹션의 필수 필드를 함께 보내야 합니다(부분 섹션은 거부됨).
|
|
2024
3258
|
* @summary 입찰 공고 수정
|
|
2025
3259
|
* @param {string} bidId 공고 식별자(등록 응답의 bidId).
|
|
3260
|
+
* @param {string} ifMatch
|
|
3261
|
+
* @param {string} ifMatch2 수정하려는 공고의 ETag(필수). 직전 `GET /v2/bids/{bidId}` 응답의 `ETag` 헤더 값을 그대로 실어 보내세요. 누락하면 428, 그 사이 공고가 바뀌었으면 412 로 거절되며 아무것도 수정되지 않습니다.
|
|
2026
3262
|
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환.
|
|
2027
3263
|
* @param {UpdateBidRequestDto} updateBidRequestDto
|
|
2028
3264
|
* @param {*} [options] Override http request option.
|
|
2029
3265
|
* @throws {RequiredError}
|
|
2030
3266
|
*/
|
|
2031
|
-
updateBid(bidId, idempotencyKey, updateBidRequestDto, options) {
|
|
2032
|
-
return PartnerV2ApiFp(this.configuration).updateBid(bidId, idempotencyKey, updateBidRequestDto, options).then((request) => request(this.axios, this.basePath));
|
|
3267
|
+
updateBid(bidId, ifMatch, ifMatch2, idempotencyKey, updateBidRequestDto, options) {
|
|
3268
|
+
return PartnerV2ApiFp(this.configuration).updateBid(bidId, ifMatch, ifMatch2, idempotencyKey, updateBidRequestDto, options).then((request) => request(this.axios, this.basePath));
|
|
3269
|
+
}
|
|
3270
|
+
/**
|
|
3271
|
+
* 수신 주소·구독 이벤트·상태를 수정합니다. 보낸 필드만 바뀝니다. **호출 시점:** 수신 주소가 바뀌었을 때, 구독 이벤트를 늘리거나 줄일 때, 연속 실패로 자동 중지된 구독을 고친 뒤 되살릴 때(`{\"status\":\"ACTIVE\"}`). **`eventTypes` 는 치환입니다** — 보낸 목록이 곧 새 구독 목록입니다. 하나를 더하려면 기존 목록에 더한 **전체**를 보내세요. **`If-Match` 가 필수입니다.** 먼저 `GET /v2/webhook-endpoints/{endpointId}` 로 현재 `ETag` 를 받아 그대로 실어 보내세요. 이 헤더가 없으면 두 요청이 앞서거니 뒤서거니 하며 먼저 한 수정을 조용히 덮어씁니다. - `428` — 헤더를 빼먹었습니다. 조회 후 `ETag` 를 실어 재시도하세요. - `412` — 그 사이 구독이 바뀌었습니다. 다시 조회해 최신 `ETag` 로 재시도하세요. 아무것도 수정되지 않았습니다. **시크릿은 이 경로로 바뀌지 않습니다** — 재발급은 `rotate-secret` 입니다. **필수 스코프:** `webhooks:write` **멱등성:** `Idempotency-Key` 헤더 필수.
|
|
3272
|
+
* @summary 웹훅 구독 수정
|
|
3273
|
+
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
3274
|
+
* @param {string} ifMatch
|
|
3275
|
+
* @param {string} ifMatch2 직전 조회 응답의 `ETag` 값. 누락하면 428, 그 사이 구독이 바뀌었으면 412 로 거절되며 아무것도 변경되지 않습니다.
|
|
3276
|
+
* @param {string} idempotencyKey 멱등성 키(1~255자, [A-Za-z0-9_-]). 동일 키 + 동일 body 재전송 시 캐시 응답 반환(24시간). UUID v4 권장.
|
|
3277
|
+
* @param {UpdateWebhookEndpointRequestDto} updateWebhookEndpointRequestDto
|
|
3278
|
+
* @param {*} [options] Override http request option.
|
|
3279
|
+
* @throws {RequiredError}
|
|
3280
|
+
*/
|
|
3281
|
+
updateWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, updateWebhookEndpointRequestDto, options) {
|
|
3282
|
+
return PartnerV2ApiFp(this.configuration).updateWebhookEndpoint(endpointId, ifMatch, ifMatch2, idempotencyKey, updateWebhookEndpointRequestDto, options).then((request) => request(this.axios, this.basePath));
|
|
2033
3283
|
}
|
|
2034
3284
|
/**
|
|
2035
3285
|
* 스코프 `files:write` + `Idempotency-Key` 헤더 필수. base64 또는 url 중 정확히 하나를 제출한다.
|