@cmarket/partner-sdk 38.2.0 → 38.3.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 +13 -4
- package/api/embed-api.ts +1 -1
- package/api/oauth-api.ts +1 -1
- package/api/partner-api-api.ts +155 -78
- package/api/products-api.ts +15 -8
- package/api/webhooks-api.ts +690 -0
- package/api/well-known-api.ts +1 -1
- package/api.ts +1 -1
- package/base.ts +1 -1
- package/common.ts +1 -1
- package/configuration.ts +1 -1
- package/dist/api/embed-api.d.ts +1 -1
- package/dist/api/embed-api.js +1 -1
- package/dist/api/oauth-api.d.ts +1 -1
- package/dist/api/oauth-api.js +1 -1
- package/dist/api/partner-api-api.d.ts +89 -45
- package/dist/api/partner-api-api.js +155 -78
- package/dist/api/products-api.d.ts +9 -5
- package/dist/api/products-api.js +15 -8
- package/dist/api/webhooks-api.d.ts +328 -0
- package/dist/api/webhooks-api.js +675 -0
- package/dist/api/well-known-api.d.ts +1 -1
- package/dist/api/well-known-api.js +1 -1
- package/dist/api.d.ts +1 -1
- package/dist/api.js +1 -1
- package/dist/base.d.ts +1 -1
- package/dist/base.js +1 -1
- package/dist/common.d.ts +1 -1
- package/dist/common.js +1 -1
- package/dist/configuration.d.ts +1 -1
- package/dist/configuration.js +1 -1
- package/dist/esm/api/embed-api.d.ts +1 -1
- package/dist/esm/api/embed-api.js +1 -1
- package/dist/esm/api/oauth-api.d.ts +1 -1
- package/dist/esm/api/oauth-api.js +1 -1
- package/dist/esm/api/partner-api-api.d.ts +89 -45
- package/dist/esm/api/partner-api-api.js +155 -78
- package/dist/esm/api/products-api.d.ts +9 -5
- package/dist/esm/api/products-api.js +15 -8
- package/dist/esm/api/webhooks-api.d.ts +328 -0
- package/dist/esm/api/webhooks-api.js +668 -0
- package/dist/esm/api/well-known-api.d.ts +1 -1
- package/dist/esm/api/well-known-api.js +1 -1
- package/dist/esm/api.d.ts +1 -1
- package/dist/esm/api.js +1 -1
- package/dist/esm/base.d.ts +1 -1
- package/dist/esm/base.js +1 -1
- package/dist/esm/common.d.ts +1 -1
- package/dist/esm/common.js +1 -1
- package/dist/esm/configuration.d.ts +1 -1
- package/dist/esm/configuration.js +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/models/acceptance-result-response-dto.d.ts +1 -1
- package/dist/esm/models/acceptance-result-response-dto.js +1 -1
- package/dist/esm/models/acknowledge-product-receipt200-response.d.ts +1 -1
- package/dist/esm/models/acknowledge-product-receipt200-response.js +1 -1
- package/dist/esm/models/acknowledge-products-request-dto.d.ts +1 -1
- package/dist/esm/models/acknowledge-products-request-dto.js +1 -1
- package/dist/esm/models/api-catalog-dto.d.ts +1 -1
- package/dist/esm/models/api-catalog-dto.js +1 -1
- package/dist/esm/models/api-catalog-entry-dto.d.ts +1 -1
- package/dist/esm/models/api-catalog-entry-dto.js +1 -1
- package/dist/esm/models/api-catalog-link-dto.d.ts +1 -1
- package/dist/esm/models/api-catalog-link-dto.js +1 -1
- package/dist/esm/models/authorization-server-metadata-dto.d.ts +1 -1
- package/dist/esm/models/authorization-server-metadata-dto.js +1 -1
- package/dist/esm/models/award-method-public.d.ts +1 -1
- package/dist/esm/models/award-method-public.js +1 -1
- package/dist/esm/models/award-registered-v2-response-dto.d.ts +1 -1
- package/dist/esm/models/award-registered-v2-response-dto.js +1 -1
- package/dist/esm/models/award-reverted-v2-response-dto.d.ts +1 -1
- package/dist/esm/models/award-reverted-v2-response-dto.js +1 -1
- package/dist/esm/models/bid-acceptance-dto.d.ts +1 -1
- package/dist/esm/models/bid-acceptance-dto.js +1 -1
- package/dist/esm/models/bid-attachment-input-dto.d.ts +1 -1
- package/dist/esm/models/bid-attachment-input-dto.js +1 -1
- package/dist/esm/models/bid-bond-dto.d.ts +1 -1
- package/dist/esm/models/bid-bond-dto.js +1 -1
- package/dist/esm/models/bid-cancelled-response-dto.d.ts +1 -1
- package/dist/esm/models/bid-cancelled-response-dto.js +1 -1
- package/dist/esm/models/bid-contact-dto.d.ts +1 -1
- package/dist/esm/models/bid-contact-dto.js +1 -1
- package/dist/esm/models/bid-contacts-dto.d.ts +1 -1
- package/dist/esm/models/bid-contacts-dto.js +1 -1
- package/dist/esm/models/bid-contract-document-dto.d.ts +1 -1
- package/dist/esm/models/bid-contract-document-dto.js +1 -1
- package/dist/esm/models/bid-delivery-terms-dto.d.ts +1 -1
- package/dist/esm/models/bid-delivery-terms-dto.js +1 -1
- package/dist/esm/models/bid-detail-response-dto.d.ts +1 -1
- package/dist/esm/models/bid-detail-response-dto.js +1 -1
- package/dist/esm/models/bid-document-dto.d.ts +1 -1
- package/dist/esm/models/bid-document-dto.js +1 -1
- package/dist/esm/models/bid-failed-v2-response-dto.d.ts +1 -1
- package/dist/esm/models/bid-failed-v2-response-dto.js +1 -1
- package/dist/esm/models/bid-item-dto.d.ts +1 -1
- package/dist/esm/models/bid-item-dto.js +1 -1
- package/dist/esm/models/bid-lifecycle-dto.d.ts +1 -1
- package/dist/esm/models/bid-lifecycle-dto.js +1 -1
- package/dist/esm/models/bid-manager-dto.d.ts +1 -1
- package/dist/esm/models/bid-manager-dto.js +1 -1
- package/dist/esm/models/bid-payment-terms-dto.d.ts +1 -1
- package/dist/esm/models/bid-payment-terms-dto.js +1 -1
- package/dist/esm/models/bid-product-dto.d.ts +1 -1
- package/dist/esm/models/bid-product-dto.js +1 -1
- package/dist/esm/models/bid-public-status.d.ts +1 -1
- package/dist/esm/models/bid-public-status.js +1 -1
- package/dist/esm/models/bid-registered-response-dto.d.ts +1 -1
- package/dist/esm/models/bid-registered-response-dto.js +1 -1
- package/dist/esm/models/bid-result-participant-attachment-dto.d.ts +1 -1
- package/dist/esm/models/bid-result-participant-attachment-dto.js +1 -1
- package/dist/esm/models/bid-result-participant-dto.d.ts +1 -1
- package/dist/esm/models/bid-result-participant-dto.js +1 -1
- package/dist/esm/models/bid-results-response-dto.d.ts +1 -1
- package/dist/esm/models/bid-results-response-dto.js +1 -1
- package/dist/esm/models/bid-settlement-line-item-dto.d.ts +1 -1
- package/dist/esm/models/bid-settlement-line-item-dto.js +1 -1
- package/dist/esm/models/bid-settlement-participant-dto.d.ts +1 -1
- package/dist/esm/models/bid-settlement-participant-dto.js +1 -1
- package/dist/esm/models/bid-settlement-response-dto.d.ts +1 -1
- package/dist/esm/models/bid-settlement-response-dto.js +1 -1
- package/dist/esm/models/bid-statement-response-dto.d.ts +1 -1
- package/dist/esm/models/bid-statement-response-dto.js +1 -1
- package/dist/esm/models/bid-summary-dto.d.ts +1 -1
- package/dist/esm/models/bid-summary-dto.js +1 -1
- package/dist/esm/models/bid-type-public.d.ts +1 -1
- package/dist/esm/models/bid-type-public.js +1 -1
- package/dist/esm/models/bid-updated-response-dto.d.ts +1 -1
- package/dist/esm/models/bid-updated-response-dto.js +1 -1
- package/dist/esm/models/cancel-bid-request-dto.d.ts +1 -1
- package/dist/esm/models/cancel-bid-request-dto.js +1 -1
- package/dist/esm/models/cancel-bid200-response.d.ts +1 -1
- package/dist/esm/models/cancel-bid200-response.js +1 -1
- package/dist/esm/models/card-payment-request-response-dto.d.ts +1 -1
- package/dist/esm/models/card-payment-request-response-dto.js +1 -1
- package/dist/esm/models/complete-acceptance-request-dto.d.ts +1 -1
- package/dist/esm/models/complete-acceptance-request-dto.js +1 -1
- package/dist/esm/models/complete-acceptance200-response.d.ts +1 -1
- package/dist/esm/models/complete-acceptance200-response.js +1 -1
- package/dist/esm/models/complete-invoice200-response.d.ts +1 -1
- package/dist/esm/models/complete-invoice200-response.js +1 -1
- package/dist/esm/models/complete-upload-request-dto.d.ts +1 -1
- package/dist/esm/models/complete-upload-request-dto.js +1 -1
- package/dist/esm/models/contract-restriction-confirm-input-dto.d.ts +1 -1
- package/dist/esm/models/contract-restriction-confirm-input-dto.js +1 -1
- package/dist/esm/models/create-bid-request-dto.d.ts +1 -1
- package/dist/esm/models/create-bid-request-dto.js +1 -1
- package/dist/esm/models/create-card-payment-dto.d.ts +1 -1
- package/dist/esm/models/create-card-payment-dto.js +1 -1
- package/dist/esm/models/create-card-payment-request-dto.d.ts +1 -1
- package/dist/esm/models/create-card-payment-request-dto.js +1 -1
- package/dist/esm/models/create-card-payment200-response.d.ts +1 -1
- package/dist/esm/models/create-card-payment200-response.js +1 -1
- package/dist/esm/models/create-embed-launch201-response.d.ts +1 -1
- package/dist/esm/models/create-embed-launch201-response.js +1 -1
- package/dist/esm/models/create-external-contract-documents-request-dto.d.ts +1 -1
- package/dist/esm/models/create-external-contract-documents-request-dto.js +1 -1
- package/dist/esm/models/create-external-contract-documents-response-dto.d.ts +1 -1
- package/dist/esm/models/create-external-contract-documents-response-dto.js +1 -1
- package/dist/esm/models/create-file-upload-url201-response.d.ts +1 -1
- package/dist/esm/models/create-file-upload-url201-response.js +1 -1
- package/dist/esm/models/create-upload-url-request-dto.d.ts +1 -1
- package/dist/esm/models/create-upload-url-request-dto.js +1 -1
- package/dist/esm/models/create-webhook-endpoint-request-dto.d.ts +1 -1
- package/dist/esm/models/create-webhook-endpoint-request-dto.js +1 -1
- package/dist/esm/models/create-webhook-endpoint201-response.d.ts +1 -1
- package/dist/esm/models/create-webhook-endpoint201-response.js +1 -1
- package/dist/esm/models/delivery-date-type-public.d.ts +1 -1
- package/dist/esm/models/delivery-date-type-public.js +1 -1
- package/dist/esm/models/delivery-method-public.d.ts +1 -1
- package/dist/esm/models/delivery-method-public.js +1 -1
- package/dist/esm/models/embed-launch-request-dto.d.ts +1 -1
- package/dist/esm/models/embed-launch-request-dto.js +1 -1
- package/dist/esm/models/embed-launch-response-dto.d.ts +1 -1
- package/dist/esm/models/embed-launch-response-dto.js +1 -1
- package/dist/esm/models/excellent-procurement-public.d.ts +1 -1
- package/dist/esm/models/excellent-procurement-public.js +1 -1
- package/dist/esm/models/external-contract-document-item-dto.d.ts +1 -1
- package/dist/esm/models/external-contract-document-item-dto.js +1 -1
- package/dist/esm/models/external-contract-documents-response-dto.d.ts +1 -1
- package/dist/esm/models/external-contract-documents-response-dto.js +1 -1
- package/dist/esm/models/external-contract-item-dto.d.ts +1 -1
- package/dist/esm/models/external-contract-item-dto.js +1 -1
- package/dist/esm/models/external-contract-snapshot-dto.d.ts +1 -1
- package/dist/esm/models/external-contract-snapshot-dto.js +1 -1
- package/dist/esm/models/external-document-inputs-dto.d.ts +1 -1
- package/dist/esm/models/external-document-inputs-dto.js +1 -1
- package/dist/esm/models/file-meta-response-dto.d.ts +1 -1
- package/dist/esm/models/file-meta-response-dto.js +1 -1
- package/dist/esm/models/file-uploaded-response-dto.d.ts +1 -1
- package/dist/esm/models/file-uploaded-response-dto.js +1 -1
- package/dist/esm/models/generated-external-contract-document-dto.d.ts +1 -1
- package/dist/esm/models/generated-external-contract-document-dto.js +1 -1
- package/dist/esm/models/get-bid-settlement200-response.d.ts +1 -1
- package/dist/esm/models/get-bid-settlement200-response.js +1 -1
- package/dist/esm/models/get-bid-statement200-response.d.ts +1 -1
- package/dist/esm/models/get-bid-statement200-response.js +1 -1
- package/dist/esm/models/get-bid200-response.d.ts +1 -1
- package/dist/esm/models/get-bid200-response.js +1 -1
- package/dist/esm/models/get-file-meta200-response.d.ts +1 -1
- package/dist/esm/models/get-file-meta200-response.js +1 -1
- package/dist/esm/models/get-supplier-card-payable-v2200-response.d.ts +1 -1
- package/dist/esm/models/get-supplier-card-payable-v2200-response.js +1 -1
- package/dist/esm/models/get-webhook-endpoint200-response.d.ts +1 -1
- package/dist/esm/models/get-webhook-endpoint200-response.js +1 -1
- package/dist/esm/models/green-product-public.d.ts +1 -1
- package/dist/esm/models/green-product-public.js +1 -1
- package/dist/esm/models/health-controller-check200-response.d.ts +1 -1
- package/dist/esm/models/health-controller-check200-response.js +1 -1
- package/dist/esm/models/health-response-dto.d.ts +1 -1
- package/dist/esm/models/health-response-dto.js +1 -1
- package/dist/esm/models/hierarchical-region-dto.d.ts +1 -1
- package/dist/esm/models/hierarchical-region-dto.js +1 -1
- package/dist/esm/models/index.d.ts +9 -0
- package/dist/esm/models/index.js +9 -0
- package/dist/esm/models/introspect-request-dto.d.ts +1 -1
- package/dist/esm/models/introspect-request-dto.js +1 -1
- package/dist/esm/models/introspection-response-dto.d.ts +1 -1
- package/dist/esm/models/introspection-response-dto.js +1 -1
- package/dist/esm/models/invalid-param-dto.d.ts +1 -1
- package/dist/esm/models/invalid-param-dto.js +1 -1
- package/dist/esm/models/invoice-completed-response-dto.d.ts +1 -1
- package/dist/esm/models/invoice-completed-response-dto.js +1 -1
- package/dist/esm/models/invoice-split-response-dto.d.ts +1 -1
- package/dist/esm/models/invoice-split-response-dto.js +1 -1
- package/dist/esm/models/legal-mandatory-public.d.ts +1 -1
- package/dist/esm/models/legal-mandatory-public.js +1 -1
- package/dist/esm/models/list-bid-results200-response.d.ts +1 -1
- package/dist/esm/models/list-bid-results200-response.js +1 -1
- package/dist/esm/models/list-bids200-response-meta.d.ts +1 -1
- package/dist/esm/models/list-bids200-response-meta.js +1 -1
- package/dist/esm/models/list-bids200-response.d.ts +1 -1
- package/dist/esm/models/list-bids200-response.js +1 -1
- package/dist/esm/models/list-products200-response.d.ts +1 -1
- package/dist/esm/models/list-products200-response.js +1 -1
- package/dist/esm/models/list-webhook-deliveries-response-dto.d.ts +1 -1
- package/dist/esm/models/list-webhook-deliveries-response-dto.js +1 -1
- package/dist/esm/models/list-webhook-deliveries200-response.d.ts +1 -1
- package/dist/esm/models/list-webhook-deliveries200-response.js +1 -1
- package/dist/esm/models/list-webhook-endpoints200-response.d.ts +1 -1
- package/dist/esm/models/list-webhook-endpoints200-response.js +1 -1
- package/dist/esm/models/mark-bid-failed-request-dto.d.ts +1 -1
- package/dist/esm/models/mark-bid-failed-request-dto.js +1 -1
- package/dist/esm/models/mark-bid-failed201-response.d.ts +1 -1
- package/dist/esm/models/mark-bid-failed201-response.js +1 -1
- package/dist/esm/models/negotiation-score-dto.d.ts +1 -1
- package/dist/esm/models/negotiation-score-dto.js +1 -1
- package/dist/esm/models/negotiation-scored-v2-response-dto.d.ts +1 -1
- package/dist/esm/models/negotiation-scored-v2-response-dto.js +1 -1
- package/dist/esm/models/oauth-error-response-dto.d.ts +1 -1
- package/dist/esm/models/oauth-error-response-dto.js +1 -1
- package/dist/esm/models/on-bid-award-reverted-request.d.ts +16 -0
- package/dist/esm/models/on-bid-award-reverted-request.js +14 -0
- package/dist/esm/models/on-bid-awarded-request.d.ts +16 -0
- package/dist/esm/models/on-bid-awarded-request.js +14 -0
- package/dist/esm/models/on-bid-canceled-request.d.ts +16 -0
- package/dist/esm/models/on-bid-canceled-request.js +14 -0
- package/dist/esm/models/on-bid-closed-request.d.ts +16 -0
- package/dist/esm/models/on-bid-closed-request.js +14 -0
- package/dist/esm/models/on-bid-failed-request.d.ts +16 -0
- package/dist/esm/models/on-bid-failed-request.js +14 -0
- package/dist/esm/models/on-ping-request.d.ts +16 -0
- package/dist/esm/models/on-ping-request.js +14 -0
- package/dist/esm/models/partner-webhook-delivery-status.d.ts +1 -1
- package/dist/esm/models/partner-webhook-delivery-status.js +1 -1
- package/dist/esm/models/partner-webhook-endpoint-status.d.ts +1 -1
- package/dist/esm/models/partner-webhook-endpoint-status.js +1 -1
- package/dist/esm/models/partner-webhook-event-type.d.ts +1 -1
- package/dist/esm/models/partner-webhook-event-type.js +1 -1
- package/dist/esm/models/payment-method-public.d.ts +1 -1
- package/dist/esm/models/payment-method-public.js +1 -1
- package/dist/esm/models/preconditions-dto.d.ts +1 -1
- package/dist/esm/models/preconditions-dto.js +1 -1
- package/dist/esm/models/problem-details-dto.d.ts +1 -1
- package/dist/esm/models/problem-details-dto.js +1 -1
- package/dist/esm/models/product-receipt-response-dto.d.ts +1 -1
- package/dist/esm/models/product-receipt-response-dto.js +1 -1
- package/dist/esm/models/product-response-dto.d.ts +1 -1
- package/dist/esm/models/product-response-dto.js +1 -1
- package/dist/esm/models/protected-resource-metadata-dto.d.ts +1 -1
- package/dist/esm/models/protected-resource-metadata-dto.js +1 -1
- package/dist/esm/models/register-award-request-dto.d.ts +1 -1
- package/dist/esm/models/register-award-request-dto.js +1 -1
- package/dist/esm/models/register-award201-response.d.ts +1 -1
- package/dist/esm/models/register-award201-response.js +1 -1
- package/dist/esm/models/register-bid201-response.d.ts +1 -1
- package/dist/esm/models/register-bid201-response.js +1 -1
- package/dist/esm/models/register-semo-contract-request-dto.d.ts +1 -1
- package/dist/esm/models/register-semo-contract-request-dto.js +1 -1
- package/dist/esm/models/request-invoice-split-request-dto.d.ts +1 -1
- package/dist/esm/models/request-invoice-split-request-dto.js +1 -1
- package/dist/esm/models/request-invoice-split200-response.d.ts +1 -1
- package/dist/esm/models/request-invoice-split200-response.js +1 -1
- package/dist/esm/models/retiree-roster-input-dto.d.ts +1 -1
- package/dist/esm/models/retiree-roster-input-dto.js +1 -1
- package/dist/esm/models/retiree-roster-row-dto.d.ts +1 -1
- package/dist/esm/models/retiree-roster-row-dto.js +1 -1
- package/dist/esm/models/revert-award-request-dto.d.ts +1 -1
- package/dist/esm/models/revert-award-request-dto.js +1 -1
- package/dist/esm/models/revert-award200-response.d.ts +1 -1
- package/dist/esm/models/revert-award200-response.js +1 -1
- package/dist/esm/models/revoke-request-dto.d.ts +1 -1
- package/dist/esm/models/revoke-request-dto.js +1 -1
- package/dist/esm/models/semo-contract-registered-response-dto.d.ts +1 -1
- package/dist/esm/models/semo-contract-registered-response-dto.js +1 -1
- package/dist/esm/models/semo-contract-taxinvoice-status-response-dto.d.ts +1 -1
- package/dist/esm/models/semo-contract-taxinvoice-status-response-dto.js +1 -1
- package/dist/esm/models/send-webhook-test-event200-response.d.ts +1 -1
- package/dist/esm/models/send-webhook-test-event200-response.js +1 -1
- package/dist/esm/models/statement-document-dto.d.ts +1 -1
- package/dist/esm/models/statement-document-dto.js +1 -1
- package/dist/esm/models/statement-product-dto.d.ts +1 -1
- package/dist/esm/models/statement-product-dto.js +1 -1
- package/dist/esm/models/submit-negotiation-scores-request-dto.d.ts +1 -1
- package/dist/esm/models/submit-negotiation-scores-request-dto.js +1 -1
- package/dist/esm/models/submit-negotiation-scores201-response.d.ts +1 -1
- package/dist/esm/models/submit-negotiation-scores201-response.js +1 -1
- package/dist/esm/models/supplier-card-payable-response-dto.d.ts +1 -1
- package/dist/esm/models/supplier-card-payable-response-dto.js +1 -1
- package/dist/esm/models/supplier-tax-type.d.ts +1 -1
- package/dist/esm/models/supplier-tax-type.js +1 -1
- package/dist/esm/models/token-request-dto.d.ts +1 -1
- package/dist/esm/models/token-request-dto.js +1 -1
- package/dist/esm/models/token-response-dto.d.ts +1 -1
- package/dist/esm/models/token-response-dto.js +1 -1
- package/dist/esm/models/update-bid-request-dto.d.ts +1 -1
- package/dist/esm/models/update-bid-request-dto.js +1 -1
- package/dist/esm/models/update-bid200-response.d.ts +1 -1
- package/dist/esm/models/update-bid200-response.js +1 -1
- package/dist/esm/models/update-webhook-endpoint-request-dto.d.ts +1 -1
- package/dist/esm/models/update-webhook-endpoint-request-dto.js +1 -1
- package/dist/esm/models/upload-file-request-dto.d.ts +1 -1
- package/dist/esm/models/upload-file-request-dto.js +1 -1
- package/dist/esm/models/upload-file201-response.d.ts +1 -1
- package/dist/esm/models/upload-file201-response.js +1 -1
- package/dist/esm/models/upload-url-created-response-dto.d.ts +1 -1
- package/dist/esm/models/upload-url-created-response-dto.js +1 -1
- package/dist/esm/models/webhook-bid-event-data.d.ts +33 -0
- package/dist/esm/models/webhook-bid-event-data.js +14 -0
- package/dist/esm/models/webhook-delivery-dto.d.ts +1 -1
- package/dist/esm/models/webhook-delivery-dto.js +1 -1
- package/dist/esm/models/webhook-endpoint-dto.d.ts +1 -1
- package/dist/esm/models/webhook-endpoint-dto.js +1 -1
- package/dist/esm/models/webhook-endpoint-with-secret-dto.d.ts +1 -1
- package/dist/esm/models/webhook-endpoint-with-secret-dto.js +1 -1
- package/dist/esm/models/webhook-event-envelope.d.ts +34 -0
- package/dist/esm/models/webhook-event-envelope.js +14 -0
- package/dist/esm/models/webhook-ping-event-data.d.ts +20 -0
- package/dist/esm/models/webhook-ping-event-data.js +14 -0
- package/dist/esm/models/webhook-test-result-dto.d.ts +1 -1
- package/dist/esm/models/webhook-test-result-dto.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/models/acceptance-result-response-dto.d.ts +1 -1
- package/dist/models/acceptance-result-response-dto.js +1 -1
- package/dist/models/acknowledge-product-receipt200-response.d.ts +1 -1
- package/dist/models/acknowledge-product-receipt200-response.js +1 -1
- package/dist/models/acknowledge-products-request-dto.d.ts +1 -1
- package/dist/models/acknowledge-products-request-dto.js +1 -1
- package/dist/models/api-catalog-dto.d.ts +1 -1
- package/dist/models/api-catalog-dto.js +1 -1
- package/dist/models/api-catalog-entry-dto.d.ts +1 -1
- package/dist/models/api-catalog-entry-dto.js +1 -1
- package/dist/models/api-catalog-link-dto.d.ts +1 -1
- package/dist/models/api-catalog-link-dto.js +1 -1
- package/dist/models/authorization-server-metadata-dto.d.ts +1 -1
- package/dist/models/authorization-server-metadata-dto.js +1 -1
- package/dist/models/award-method-public.d.ts +1 -1
- package/dist/models/award-method-public.js +1 -1
- package/dist/models/award-registered-v2-response-dto.d.ts +1 -1
- package/dist/models/award-registered-v2-response-dto.js +1 -1
- package/dist/models/award-reverted-v2-response-dto.d.ts +1 -1
- package/dist/models/award-reverted-v2-response-dto.js +1 -1
- package/dist/models/bid-acceptance-dto.d.ts +1 -1
- package/dist/models/bid-acceptance-dto.js +1 -1
- package/dist/models/bid-attachment-input-dto.d.ts +1 -1
- package/dist/models/bid-attachment-input-dto.js +1 -1
- package/dist/models/bid-bond-dto.d.ts +1 -1
- package/dist/models/bid-bond-dto.js +1 -1
- package/dist/models/bid-cancelled-response-dto.d.ts +1 -1
- package/dist/models/bid-cancelled-response-dto.js +1 -1
- package/dist/models/bid-contact-dto.d.ts +1 -1
- package/dist/models/bid-contact-dto.js +1 -1
- package/dist/models/bid-contacts-dto.d.ts +1 -1
- package/dist/models/bid-contacts-dto.js +1 -1
- package/dist/models/bid-contract-document-dto.d.ts +1 -1
- package/dist/models/bid-contract-document-dto.js +1 -1
- package/dist/models/bid-delivery-terms-dto.d.ts +1 -1
- package/dist/models/bid-delivery-terms-dto.js +1 -1
- package/dist/models/bid-detail-response-dto.d.ts +1 -1
- package/dist/models/bid-detail-response-dto.js +1 -1
- package/dist/models/bid-document-dto.d.ts +1 -1
- package/dist/models/bid-document-dto.js +1 -1
- package/dist/models/bid-failed-v2-response-dto.d.ts +1 -1
- package/dist/models/bid-failed-v2-response-dto.js +1 -1
- package/dist/models/bid-item-dto.d.ts +1 -1
- package/dist/models/bid-item-dto.js +1 -1
- package/dist/models/bid-lifecycle-dto.d.ts +1 -1
- package/dist/models/bid-lifecycle-dto.js +1 -1
- package/dist/models/bid-manager-dto.d.ts +1 -1
- package/dist/models/bid-manager-dto.js +1 -1
- package/dist/models/bid-payment-terms-dto.d.ts +1 -1
- package/dist/models/bid-payment-terms-dto.js +1 -1
- package/dist/models/bid-product-dto.d.ts +1 -1
- package/dist/models/bid-product-dto.js +1 -1
- package/dist/models/bid-public-status.d.ts +1 -1
- package/dist/models/bid-public-status.js +1 -1
- package/dist/models/bid-registered-response-dto.d.ts +1 -1
- package/dist/models/bid-registered-response-dto.js +1 -1
- package/dist/models/bid-result-participant-attachment-dto.d.ts +1 -1
- package/dist/models/bid-result-participant-attachment-dto.js +1 -1
- package/dist/models/bid-result-participant-dto.d.ts +1 -1
- package/dist/models/bid-result-participant-dto.js +1 -1
- package/dist/models/bid-results-response-dto.d.ts +1 -1
- package/dist/models/bid-results-response-dto.js +1 -1
- package/dist/models/bid-settlement-line-item-dto.d.ts +1 -1
- package/dist/models/bid-settlement-line-item-dto.js +1 -1
- package/dist/models/bid-settlement-participant-dto.d.ts +1 -1
- package/dist/models/bid-settlement-participant-dto.js +1 -1
- package/dist/models/bid-settlement-response-dto.d.ts +1 -1
- package/dist/models/bid-settlement-response-dto.js +1 -1
- package/dist/models/bid-statement-response-dto.d.ts +1 -1
- package/dist/models/bid-statement-response-dto.js +1 -1
- package/dist/models/bid-summary-dto.d.ts +1 -1
- package/dist/models/bid-summary-dto.js +1 -1
- package/dist/models/bid-type-public.d.ts +1 -1
- package/dist/models/bid-type-public.js +1 -1
- package/dist/models/bid-updated-response-dto.d.ts +1 -1
- package/dist/models/bid-updated-response-dto.js +1 -1
- package/dist/models/cancel-bid-request-dto.d.ts +1 -1
- package/dist/models/cancel-bid-request-dto.js +1 -1
- package/dist/models/cancel-bid200-response.d.ts +1 -1
- package/dist/models/cancel-bid200-response.js +1 -1
- package/dist/models/card-payment-request-response-dto.d.ts +1 -1
- package/dist/models/card-payment-request-response-dto.js +1 -1
- package/dist/models/complete-acceptance-request-dto.d.ts +1 -1
- package/dist/models/complete-acceptance-request-dto.js +1 -1
- package/dist/models/complete-acceptance200-response.d.ts +1 -1
- package/dist/models/complete-acceptance200-response.js +1 -1
- package/dist/models/complete-invoice200-response.d.ts +1 -1
- package/dist/models/complete-invoice200-response.js +1 -1
- package/dist/models/complete-upload-request-dto.d.ts +1 -1
- package/dist/models/complete-upload-request-dto.js +1 -1
- package/dist/models/contract-restriction-confirm-input-dto.d.ts +1 -1
- package/dist/models/contract-restriction-confirm-input-dto.js +1 -1
- package/dist/models/create-bid-request-dto.d.ts +1 -1
- package/dist/models/create-bid-request-dto.js +1 -1
- package/dist/models/create-card-payment-dto.d.ts +1 -1
- package/dist/models/create-card-payment-dto.js +1 -1
- package/dist/models/create-card-payment-request-dto.d.ts +1 -1
- package/dist/models/create-card-payment-request-dto.js +1 -1
- package/dist/models/create-card-payment200-response.d.ts +1 -1
- package/dist/models/create-card-payment200-response.js +1 -1
- package/dist/models/create-embed-launch201-response.d.ts +1 -1
- package/dist/models/create-embed-launch201-response.js +1 -1
- package/dist/models/create-external-contract-documents-request-dto.d.ts +1 -1
- package/dist/models/create-external-contract-documents-request-dto.js +1 -1
- package/dist/models/create-external-contract-documents-response-dto.d.ts +1 -1
- package/dist/models/create-external-contract-documents-response-dto.js +1 -1
- package/dist/models/create-file-upload-url201-response.d.ts +1 -1
- package/dist/models/create-file-upload-url201-response.js +1 -1
- package/dist/models/create-upload-url-request-dto.d.ts +1 -1
- package/dist/models/create-upload-url-request-dto.js +1 -1
- package/dist/models/create-webhook-endpoint-request-dto.d.ts +1 -1
- package/dist/models/create-webhook-endpoint-request-dto.js +1 -1
- package/dist/models/create-webhook-endpoint201-response.d.ts +1 -1
- package/dist/models/create-webhook-endpoint201-response.js +1 -1
- package/dist/models/delivery-date-type-public.d.ts +1 -1
- package/dist/models/delivery-date-type-public.js +1 -1
- package/dist/models/delivery-method-public.d.ts +1 -1
- package/dist/models/delivery-method-public.js +1 -1
- package/dist/models/embed-launch-request-dto.d.ts +1 -1
- package/dist/models/embed-launch-request-dto.js +1 -1
- package/dist/models/embed-launch-response-dto.d.ts +1 -1
- package/dist/models/embed-launch-response-dto.js +1 -1
- package/dist/models/excellent-procurement-public.d.ts +1 -1
- package/dist/models/excellent-procurement-public.js +1 -1
- package/dist/models/external-contract-document-item-dto.d.ts +1 -1
- package/dist/models/external-contract-document-item-dto.js +1 -1
- package/dist/models/external-contract-documents-response-dto.d.ts +1 -1
- package/dist/models/external-contract-documents-response-dto.js +1 -1
- package/dist/models/external-contract-item-dto.d.ts +1 -1
- package/dist/models/external-contract-item-dto.js +1 -1
- package/dist/models/external-contract-snapshot-dto.d.ts +1 -1
- package/dist/models/external-contract-snapshot-dto.js +1 -1
- package/dist/models/external-document-inputs-dto.d.ts +1 -1
- package/dist/models/external-document-inputs-dto.js +1 -1
- package/dist/models/file-meta-response-dto.d.ts +1 -1
- package/dist/models/file-meta-response-dto.js +1 -1
- package/dist/models/file-uploaded-response-dto.d.ts +1 -1
- package/dist/models/file-uploaded-response-dto.js +1 -1
- package/dist/models/generated-external-contract-document-dto.d.ts +1 -1
- package/dist/models/generated-external-contract-document-dto.js +1 -1
- package/dist/models/get-bid-settlement200-response.d.ts +1 -1
- package/dist/models/get-bid-settlement200-response.js +1 -1
- package/dist/models/get-bid-statement200-response.d.ts +1 -1
- package/dist/models/get-bid-statement200-response.js +1 -1
- package/dist/models/get-bid200-response.d.ts +1 -1
- package/dist/models/get-bid200-response.js +1 -1
- package/dist/models/get-file-meta200-response.d.ts +1 -1
- package/dist/models/get-file-meta200-response.js +1 -1
- package/dist/models/get-supplier-card-payable-v2200-response.d.ts +1 -1
- package/dist/models/get-supplier-card-payable-v2200-response.js +1 -1
- package/dist/models/get-webhook-endpoint200-response.d.ts +1 -1
- package/dist/models/get-webhook-endpoint200-response.js +1 -1
- package/dist/models/green-product-public.d.ts +1 -1
- package/dist/models/green-product-public.js +1 -1
- package/dist/models/health-controller-check200-response.d.ts +1 -1
- package/dist/models/health-controller-check200-response.js +1 -1
- package/dist/models/health-response-dto.d.ts +1 -1
- package/dist/models/health-response-dto.js +1 -1
- package/dist/models/hierarchical-region-dto.d.ts +1 -1
- package/dist/models/hierarchical-region-dto.js +1 -1
- package/dist/models/index.d.ts +9 -0
- package/dist/models/index.js +9 -0
- package/dist/models/introspect-request-dto.d.ts +1 -1
- package/dist/models/introspect-request-dto.js +1 -1
- package/dist/models/introspection-response-dto.d.ts +1 -1
- package/dist/models/introspection-response-dto.js +1 -1
- package/dist/models/invalid-param-dto.d.ts +1 -1
- package/dist/models/invalid-param-dto.js +1 -1
- package/dist/models/invoice-completed-response-dto.d.ts +1 -1
- package/dist/models/invoice-completed-response-dto.js +1 -1
- package/dist/models/invoice-split-response-dto.d.ts +1 -1
- package/dist/models/invoice-split-response-dto.js +1 -1
- package/dist/models/legal-mandatory-public.d.ts +1 -1
- package/dist/models/legal-mandatory-public.js +1 -1
- package/dist/models/list-bid-results200-response.d.ts +1 -1
- package/dist/models/list-bid-results200-response.js +1 -1
- package/dist/models/list-bids200-response-meta.d.ts +1 -1
- package/dist/models/list-bids200-response-meta.js +1 -1
- package/dist/models/list-bids200-response.d.ts +1 -1
- package/dist/models/list-bids200-response.js +1 -1
- package/dist/models/list-products200-response.d.ts +1 -1
- package/dist/models/list-products200-response.js +1 -1
- package/dist/models/list-webhook-deliveries-response-dto.d.ts +1 -1
- package/dist/models/list-webhook-deliveries-response-dto.js +1 -1
- package/dist/models/list-webhook-deliveries200-response.d.ts +1 -1
- package/dist/models/list-webhook-deliveries200-response.js +1 -1
- package/dist/models/list-webhook-endpoints200-response.d.ts +1 -1
- package/dist/models/list-webhook-endpoints200-response.js +1 -1
- package/dist/models/mark-bid-failed-request-dto.d.ts +1 -1
- package/dist/models/mark-bid-failed-request-dto.js +1 -1
- package/dist/models/mark-bid-failed201-response.d.ts +1 -1
- package/dist/models/mark-bid-failed201-response.js +1 -1
- package/dist/models/negotiation-score-dto.d.ts +1 -1
- package/dist/models/negotiation-score-dto.js +1 -1
- package/dist/models/negotiation-scored-v2-response-dto.d.ts +1 -1
- package/dist/models/negotiation-scored-v2-response-dto.js +1 -1
- package/dist/models/oauth-error-response-dto.d.ts +1 -1
- package/dist/models/oauth-error-response-dto.js +1 -1
- package/dist/models/on-bid-award-reverted-request.d.ts +16 -0
- package/dist/models/on-bid-award-reverted-request.js +15 -0
- package/dist/models/on-bid-awarded-request.d.ts +16 -0
- package/dist/models/on-bid-awarded-request.js +15 -0
- package/dist/models/on-bid-canceled-request.d.ts +16 -0
- package/dist/models/on-bid-canceled-request.js +15 -0
- package/dist/models/on-bid-closed-request.d.ts +16 -0
- package/dist/models/on-bid-closed-request.js +15 -0
- package/dist/models/on-bid-failed-request.d.ts +16 -0
- package/dist/models/on-bid-failed-request.js +15 -0
- package/dist/models/on-ping-request.d.ts +16 -0
- package/dist/models/on-ping-request.js +15 -0
- package/dist/models/partner-webhook-delivery-status.d.ts +1 -1
- package/dist/models/partner-webhook-delivery-status.js +1 -1
- package/dist/models/partner-webhook-endpoint-status.d.ts +1 -1
- package/dist/models/partner-webhook-endpoint-status.js +1 -1
- package/dist/models/partner-webhook-event-type.d.ts +1 -1
- package/dist/models/partner-webhook-event-type.js +1 -1
- package/dist/models/payment-method-public.d.ts +1 -1
- package/dist/models/payment-method-public.js +1 -1
- package/dist/models/preconditions-dto.d.ts +1 -1
- package/dist/models/preconditions-dto.js +1 -1
- package/dist/models/problem-details-dto.d.ts +1 -1
- package/dist/models/problem-details-dto.js +1 -1
- package/dist/models/product-receipt-response-dto.d.ts +1 -1
- package/dist/models/product-receipt-response-dto.js +1 -1
- package/dist/models/product-response-dto.d.ts +1 -1
- package/dist/models/product-response-dto.js +1 -1
- package/dist/models/protected-resource-metadata-dto.d.ts +1 -1
- package/dist/models/protected-resource-metadata-dto.js +1 -1
- package/dist/models/register-award-request-dto.d.ts +1 -1
- package/dist/models/register-award-request-dto.js +1 -1
- package/dist/models/register-award201-response.d.ts +1 -1
- package/dist/models/register-award201-response.js +1 -1
- package/dist/models/register-bid201-response.d.ts +1 -1
- package/dist/models/register-bid201-response.js +1 -1
- package/dist/models/register-semo-contract-request-dto.d.ts +1 -1
- package/dist/models/register-semo-contract-request-dto.js +1 -1
- package/dist/models/request-invoice-split-request-dto.d.ts +1 -1
- package/dist/models/request-invoice-split-request-dto.js +1 -1
- package/dist/models/request-invoice-split200-response.d.ts +1 -1
- package/dist/models/request-invoice-split200-response.js +1 -1
- package/dist/models/retiree-roster-input-dto.d.ts +1 -1
- package/dist/models/retiree-roster-input-dto.js +1 -1
- package/dist/models/retiree-roster-row-dto.d.ts +1 -1
- package/dist/models/retiree-roster-row-dto.js +1 -1
- package/dist/models/revert-award-request-dto.d.ts +1 -1
- package/dist/models/revert-award-request-dto.js +1 -1
- package/dist/models/revert-award200-response.d.ts +1 -1
- package/dist/models/revert-award200-response.js +1 -1
- package/dist/models/revoke-request-dto.d.ts +1 -1
- package/dist/models/revoke-request-dto.js +1 -1
- package/dist/models/semo-contract-registered-response-dto.d.ts +1 -1
- package/dist/models/semo-contract-registered-response-dto.js +1 -1
- package/dist/models/semo-contract-taxinvoice-status-response-dto.d.ts +1 -1
- package/dist/models/semo-contract-taxinvoice-status-response-dto.js +1 -1
- package/dist/models/send-webhook-test-event200-response.d.ts +1 -1
- package/dist/models/send-webhook-test-event200-response.js +1 -1
- package/dist/models/statement-document-dto.d.ts +1 -1
- package/dist/models/statement-document-dto.js +1 -1
- package/dist/models/statement-product-dto.d.ts +1 -1
- package/dist/models/statement-product-dto.js +1 -1
- package/dist/models/submit-negotiation-scores-request-dto.d.ts +1 -1
- package/dist/models/submit-negotiation-scores-request-dto.js +1 -1
- package/dist/models/submit-negotiation-scores201-response.d.ts +1 -1
- package/dist/models/submit-negotiation-scores201-response.js +1 -1
- package/dist/models/supplier-card-payable-response-dto.d.ts +1 -1
- package/dist/models/supplier-card-payable-response-dto.js +1 -1
- package/dist/models/supplier-tax-type.d.ts +1 -1
- package/dist/models/supplier-tax-type.js +1 -1
- package/dist/models/token-request-dto.d.ts +1 -1
- package/dist/models/token-request-dto.js +1 -1
- package/dist/models/token-response-dto.d.ts +1 -1
- package/dist/models/token-response-dto.js +1 -1
- package/dist/models/update-bid-request-dto.d.ts +1 -1
- package/dist/models/update-bid-request-dto.js +1 -1
- package/dist/models/update-bid200-response.d.ts +1 -1
- package/dist/models/update-bid200-response.js +1 -1
- package/dist/models/update-webhook-endpoint-request-dto.d.ts +1 -1
- package/dist/models/update-webhook-endpoint-request-dto.js +1 -1
- package/dist/models/upload-file-request-dto.d.ts +1 -1
- package/dist/models/upload-file-request-dto.js +1 -1
- package/dist/models/upload-file201-response.d.ts +1 -1
- package/dist/models/upload-file201-response.js +1 -1
- package/dist/models/upload-url-created-response-dto.d.ts +1 -1
- package/dist/models/upload-url-created-response-dto.js +1 -1
- package/dist/models/webhook-bid-event-data.d.ts +33 -0
- package/dist/models/webhook-bid-event-data.js +15 -0
- package/dist/models/webhook-delivery-dto.d.ts +1 -1
- package/dist/models/webhook-delivery-dto.js +1 -1
- package/dist/models/webhook-endpoint-dto.d.ts +1 -1
- package/dist/models/webhook-endpoint-dto.js +1 -1
- package/dist/models/webhook-endpoint-with-secret-dto.d.ts +1 -1
- package/dist/models/webhook-endpoint-with-secret-dto.js +1 -1
- package/dist/models/webhook-event-envelope.d.ts +34 -0
- package/dist/models/webhook-event-envelope.js +15 -0
- package/dist/models/webhook-ping-event-data.d.ts +20 -0
- package/dist/models/webhook-ping-event-data.js +15 -0
- package/dist/models/webhook-test-result-dto.d.ts +1 -1
- package/dist/models/webhook-test-result-dto.js +1 -1
- package/docs/OnBidAwardRevertedRequest.md +26 -0
- package/docs/OnBidAwardedRequest.md +26 -0
- package/docs/OnBidCanceledRequest.md +26 -0
- package/docs/OnBidClosedRequest.md +26 -0
- package/docs/OnBidFailedRequest.md +26 -0
- package/docs/OnPingRequest.md +26 -0
- package/docs/PartnerApiApi.md +65 -13
- package/docs/ProductsApi.md +5 -1
- package/docs/WebhookBidEventData.md +27 -0
- package/docs/WebhookEventEnvelope.md +27 -0
- package/docs/WebhookPingEventData.md +21 -0
- package/docs/WebhooksApi.md +403 -0
- package/index.ts +1 -1
- package/models/acceptance-result-response-dto.ts +1 -1
- package/models/acknowledge-product-receipt200-response.ts +1 -1
- package/models/acknowledge-products-request-dto.ts +1 -1
- package/models/api-catalog-dto.ts +1 -1
- package/models/api-catalog-entry-dto.ts +1 -1
- package/models/api-catalog-link-dto.ts +1 -1
- package/models/authorization-server-metadata-dto.ts +1 -1
- package/models/award-method-public.ts +1 -1
- package/models/award-registered-v2-response-dto.ts +1 -1
- package/models/award-reverted-v2-response-dto.ts +1 -1
- package/models/bid-acceptance-dto.ts +1 -1
- package/models/bid-attachment-input-dto.ts +1 -1
- package/models/bid-bond-dto.ts +1 -1
- package/models/bid-cancelled-response-dto.ts +1 -1
- package/models/bid-contact-dto.ts +1 -1
- package/models/bid-contacts-dto.ts +1 -1
- package/models/bid-contract-document-dto.ts +1 -1
- package/models/bid-delivery-terms-dto.ts +1 -1
- package/models/bid-detail-response-dto.ts +1 -1
- package/models/bid-document-dto.ts +1 -1
- package/models/bid-failed-v2-response-dto.ts +1 -1
- package/models/bid-item-dto.ts +1 -1
- package/models/bid-lifecycle-dto.ts +1 -1
- package/models/bid-manager-dto.ts +1 -1
- package/models/bid-payment-terms-dto.ts +1 -1
- package/models/bid-product-dto.ts +1 -1
- package/models/bid-public-status.ts +1 -1
- package/models/bid-registered-response-dto.ts +1 -1
- package/models/bid-result-participant-attachment-dto.ts +1 -1
- package/models/bid-result-participant-dto.ts +1 -1
- package/models/bid-results-response-dto.ts +1 -1
- package/models/bid-settlement-line-item-dto.ts +1 -1
- package/models/bid-settlement-participant-dto.ts +1 -1
- package/models/bid-settlement-response-dto.ts +1 -1
- package/models/bid-statement-response-dto.ts +1 -1
- package/models/bid-summary-dto.ts +1 -1
- package/models/bid-type-public.ts +1 -1
- package/models/bid-updated-response-dto.ts +1 -1
- package/models/cancel-bid-request-dto.ts +1 -1
- package/models/cancel-bid200-response.ts +1 -1
- package/models/card-payment-request-response-dto.ts +1 -1
- package/models/complete-acceptance-request-dto.ts +1 -1
- package/models/complete-acceptance200-response.ts +1 -1
- package/models/complete-invoice200-response.ts +1 -1
- package/models/complete-upload-request-dto.ts +1 -1
- package/models/contract-restriction-confirm-input-dto.ts +1 -1
- package/models/create-bid-request-dto.ts +1 -1
- package/models/create-card-payment-dto.ts +1 -1
- package/models/create-card-payment-request-dto.ts +1 -1
- package/models/create-card-payment200-response.ts +1 -1
- package/models/create-embed-launch201-response.ts +1 -1
- package/models/create-external-contract-documents-request-dto.ts +1 -1
- package/models/create-external-contract-documents-response-dto.ts +1 -1
- package/models/create-file-upload-url201-response.ts +1 -1
- package/models/create-upload-url-request-dto.ts +1 -1
- package/models/create-webhook-endpoint-request-dto.ts +1 -1
- package/models/create-webhook-endpoint201-response.ts +1 -1
- package/models/delivery-date-type-public.ts +1 -1
- package/models/delivery-method-public.ts +1 -1
- package/models/embed-launch-request-dto.ts +1 -1
- package/models/embed-launch-response-dto.ts +1 -1
- package/models/excellent-procurement-public.ts +1 -1
- package/models/external-contract-document-item-dto.ts +1 -1
- package/models/external-contract-documents-response-dto.ts +1 -1
- package/models/external-contract-item-dto.ts +1 -1
- package/models/external-contract-snapshot-dto.ts +1 -1
- package/models/external-document-inputs-dto.ts +1 -1
- package/models/file-meta-response-dto.ts +1 -1
- package/models/file-uploaded-response-dto.ts +1 -1
- package/models/generated-external-contract-document-dto.ts +1 -1
- package/models/get-bid-settlement200-response.ts +1 -1
- package/models/get-bid-statement200-response.ts +1 -1
- package/models/get-bid200-response.ts +1 -1
- package/models/get-file-meta200-response.ts +1 -1
- package/models/get-supplier-card-payable-v2200-response.ts +1 -1
- package/models/get-webhook-endpoint200-response.ts +1 -1
- package/models/green-product-public.ts +1 -1
- package/models/health-controller-check200-response.ts +1 -1
- package/models/health-response-dto.ts +1 -1
- package/models/hierarchical-region-dto.ts +1 -1
- package/models/index.ts +9 -0
- package/models/introspect-request-dto.ts +1 -1
- package/models/introspection-response-dto.ts +1 -1
- package/models/invalid-param-dto.ts +1 -1
- package/models/invoice-completed-response-dto.ts +1 -1
- package/models/invoice-split-response-dto.ts +1 -1
- package/models/legal-mandatory-public.ts +1 -1
- package/models/list-bid-results200-response.ts +1 -1
- package/models/list-bids200-response-meta.ts +1 -1
- package/models/list-bids200-response.ts +1 -1
- package/models/list-products200-response.ts +1 -1
- package/models/list-webhook-deliveries-response-dto.ts +1 -1
- package/models/list-webhook-deliveries200-response.ts +1 -1
- package/models/list-webhook-endpoints200-response.ts +1 -1
- package/models/mark-bid-failed-request-dto.ts +1 -1
- package/models/mark-bid-failed201-response.ts +1 -1
- package/models/negotiation-score-dto.ts +1 -1
- package/models/negotiation-scored-v2-response-dto.ts +1 -1
- package/models/oauth-error-response-dto.ts +1 -1
- package/models/on-bid-award-reverted-request.ts +28 -0
- package/models/on-bid-awarded-request.ts +28 -0
- package/models/on-bid-canceled-request.ts +28 -0
- package/models/on-bid-closed-request.ts +28 -0
- package/models/on-bid-failed-request.ts +28 -0
- package/models/on-ping-request.ts +28 -0
- package/models/partner-webhook-delivery-status.ts +1 -1
- package/models/partner-webhook-endpoint-status.ts +1 -1
- package/models/partner-webhook-event-type.ts +1 -1
- package/models/payment-method-public.ts +1 -1
- package/models/preconditions-dto.ts +1 -1
- package/models/problem-details-dto.ts +1 -1
- package/models/product-receipt-response-dto.ts +1 -1
- package/models/product-response-dto.ts +1 -1
- package/models/protected-resource-metadata-dto.ts +1 -1
- package/models/register-award-request-dto.ts +1 -1
- package/models/register-award201-response.ts +1 -1
- package/models/register-bid201-response.ts +1 -1
- package/models/register-semo-contract-request-dto.ts +1 -1
- package/models/request-invoice-split-request-dto.ts +1 -1
- package/models/request-invoice-split200-response.ts +1 -1
- package/models/retiree-roster-input-dto.ts +1 -1
- package/models/retiree-roster-row-dto.ts +1 -1
- package/models/revert-award-request-dto.ts +1 -1
- package/models/revert-award200-response.ts +1 -1
- package/models/revoke-request-dto.ts +1 -1
- package/models/semo-contract-registered-response-dto.ts +1 -1
- package/models/semo-contract-taxinvoice-status-response-dto.ts +1 -1
- package/models/send-webhook-test-event200-response.ts +1 -1
- package/models/statement-document-dto.ts +1 -1
- package/models/statement-product-dto.ts +1 -1
- package/models/submit-negotiation-scores-request-dto.ts +1 -1
- package/models/submit-negotiation-scores201-response.ts +1 -1
- package/models/supplier-card-payable-response-dto.ts +1 -1
- package/models/supplier-tax-type.ts +1 -1
- package/models/token-request-dto.ts +1 -1
- package/models/token-response-dto.ts +1 -1
- package/models/update-bid-request-dto.ts +1 -1
- package/models/update-bid200-response.ts +1 -1
- package/models/update-webhook-endpoint-request-dto.ts +1 -1
- package/models/upload-file-request-dto.ts +1 -1
- package/models/upload-file201-response.ts +1 -1
- package/models/upload-url-created-response-dto.ts +1 -1
- package/models/webhook-bid-event-data.ts +43 -0
- package/models/webhook-delivery-dto.ts +1 -1
- package/models/webhook-endpoint-dto.ts +1 -1
- package/models/webhook-endpoint-with-secret-dto.ts +1 -1
- package/models/webhook-event-envelope.ts +38 -0
- package/models/webhook-ping-event-data.ts +26 -0
- package/models/webhook-test-result-dto.ts +1 -1
- package/package.json +1 -1
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* CMARKET V6 Partner API
|
|
6
6
|
* 외부 ERP 연동용 RESTful API. ## 인증 OAuth2 Bearer JWT (`client_credentials` 플로우). `/oauth/token` 에서 토큰을 발급받아 `Authorization: Bearer <token>` 헤더로 실으세요. ## 권한 — 두 개의 독립된 축 `403` 을 만났다면 둘 중 어느 축에 걸린 것인지 먼저 구분하세요. - **스코프** = *무엇을 할 수 있나*. 토큰에 부여된 `bids:read`·`contracts:write` 등입니다. 미보유 시 `…/insufficient-scope`. - **대행 범위** = *누구의 데이터를 다룰 수 있나*. API 키 설정이며 스코프로 표현되지 않습니다. 범위 밖이면 스코프와 무관하게 403 입니다. 대행 범위는 키마다 둘 중 하나로 설정됩니다 — **소속 그룹 전원**(기관 키. 사업처·부서 계정이 새로 생겨도 자동 포함) 또는 **지정 발주처 목록**(계약으로 합의된 목록). 범위를 넓혀야 하면 스코프가 아니라 키 설정 변경을 요청하세요. ## 성공 응답 봉투 `/v2` 의 모든 2xx 본문은 `{ \"data\": … }` 입니다. 단일 리소스든 목록이든 같습니다. **목록은 `data` 가 배열이고 `meta` 가 항상 함께 실립니다** — `{ \"data\": [...], \"meta\": { \"nextCursor\": \"Mg==\", \"hasMore\": true } }`. 단일 리소스 응답에는 `meta` 가 나가지 않습니다. 봉투를 쓰지 않는 표면은 둘입니다. `/oauth/_*` 와 `/.well-known/_*` 는 각각 RFC 6749·RFC 8414·RFC 9728 이 최상위 필드를 규정하고, 파일 내용 응답은 본문이 JSON 이 아닙니다. 에러 응답에는 봉투를 씌우지 않습니다 — 아래 problem+json 이 단독으로 책임집니다. ## 조건부 요청 (ETag) `/v2` 의 모든 `GET` 응답에 weak `ETag`(`W/\"…\"`)가 실립니다. 받은 값을 다음 요청의 `If-None-Match` 헤더로 되보내면, 내용이 그대로일 때 `304 Not Modified` 를 본문 없이 받습니다. 결과가 나기를 기다리며 같은 자원을 반복 조회하는 연동이라면 이 헤더 하나로 전송량이 사라집니다. ## 에러 (RFC 9457 problem+json) 모든 에러 응답은 `application/problem+json` 입니다. **HTTP status + `type` URI** 로 분기하세요. - `retryable`(boolean): 자동 재시도 안전 여부. `true`(429·5xx transient)면 backoff 후 재시도하고, `false`면 요청을 고쳐야 합니다. - `traceId`: 요청 추적 id. `X-Correlation-Id` 응답 헤더와 같은 값입니다 — 문의할 때 이 값을 첨부하세요. - `correlationId`: `traceId` 와 같은 값의 옛 이름. 기존 연동 호환으로 함께 실립니다. 새 연동은 `traceId` 를 읽으세요. - `invalid-params`: 검증 실패(400 `…/validation-failed`) 시 위반 필드 경로 목록(RFC 9457 확장, 값 없음). `type` 은 `https://problems.cmarket.io/partner/<slug>` 형태의 **안정 식별자**입니다. RFC 9457 §3.1.1 이 허용하는 대로 이 URI 는 **역참조(dereference)되지 않습니다** — 브라우저로 열지 말고 문자열 비교로만 쓰세요. slug 목록과 의미는 각 엔드포인트의 응답 설명에 status 별로 적혀 있습니다. ### 멱등성 위반: 409 와 422 의 차이 - `409` `…/idempotency-key-conflict` — 같은 키의 **원 요청이 아직 처리 중**입니다. 잠시 뒤 같은 키로 다시 부르면 그 결과를 받습니다. - `422` `…/idempotency-key-reused` — 같은 키를 **다른 body** 로 보냈습니다. 재시도해도 영원히 같은 실패이니 새 키를 쓰거나 body 를 되돌리세요. ## Rate Limit 전역 **60 요청/분 per `client_id`**, 토큰 발급(`/oauth/token`)은 **5 요청/분** 입니다. 초과 시 `429`(`type: …/too-many-requests`). 쿼터는 두 가지 표기로 함께 나갑니다 — 신규 연동은 표준 필드를 쓰세요. - **표준**(`draft-ietf-httpapi-ratelimit-headers`, Structured Fields): `RateLimit-Policy: \"default\";q=60;w=60` (정책) · `RateLimit: \"default\";r=59;t=42` (잔량 r, 리셋까지 t 초) - **레거시**(관용): `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`. 기존 연동 호환을 위해 유지합니다. `429` 에서는 `Retry-After`(초)가 우선합니다. 대량 동기화(품목 단위 반복 등록 등)는 `Retry-After` 만큼 backoff 후 재시도하세요. ## 추적 요청에 `X-Correlation-Id` 헤더를 실으면 그대로 echo 되고, 없으면 서버가 발급합니다. 모든 응답(성공/에러)에 `X-Correlation-Id` 가 실립니다. ## 전방호환 — 모르는 필드와 값에서 깨지지 않게 다음 셋은 breaking 변경으로 보지 않으며 minor 릴리스에서 예고 없이 일어납니다. 이 전제로 구현하세요. - **선택 필드 추가**: 모르는 필드는 무시하세요. 엄격 파서(unknown key 거부)를 쓰지 마세요. - **enum 값 추가**: 상태·낙찰방법 등에 새 값이 생깁니다. 모르는 값을 만나면 예외를 던지지 말고 원문 문자열을 보존하세요. - **problem `type` slug 추가**: 모르는 slug 은 **HTTP status 로 폴백**해 분기하세요. ## 버전 수명(deprecation/sunset) - **_/v2** breaking 변경은 CHANGELOG SemVer(major bump)와 `Deprecation`/`Sunset` 헤더로 통지합니다. 이 헤더를 모니터링하세요.
|
|
7
7
|
*
|
|
8
|
-
* The version of the OpenAPI document: 38.
|
|
8
|
+
* The version of the OpenAPI document: 38.3.0
|
|
9
9
|
* Contact: semo.io.kr@gmail.com
|
|
10
10
|
*
|
|
11
11
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
@@ -443,10 +443,11 @@ const PartnerApiApiAxiosParamCreator = function (configuration) {
|
|
|
443
443
|
* 공고의 모든 정보를 한 번에 조회합니다 — 기본 정보·납품/대금 조건·담당자·품목, 응찰 참여자(투찰가·순위·낙찰 여부), 계약서류, 검수 진행 상태, 라이프사이클 하위 상태. 스코프 `bids:read`. ERP 는 이 엔드포인트를 폴링해 async 처리(정산 마감 등)의 성사를 관측합니다. **낙찰 여부:** 이 응답의 `status` 가 아니라 `participants[].isWinner` 로 관측합니다. AWARDED 라는 공고 상태는 존재하지 않으며(낙찰 직후 공고는 CONTRACT_IN_PROGRESS 로 전이) `status === \'AWARDED\'` 를 기다리면 영원히 도달하지 않습니다. **여러 건을 한 번에:** 공고마다 이 조회를 반복하지 말고 `GET /v2/bid-results` 배치 조회를 쓰세요. **계약서류는 이 응답에 실립니다.** `contractDocuments[]` 가 서류별 `paperCode`·`paperName`· `fileKey`·`downloadUrl`·`uploadedAt`·`winnerSequence` 를 담습니다 — 계약서류만 따로 받는 엔드포인트는 두지 않습니다. `generationState` 는 **관측 전용**이며 `DEAD_LETTER` 가 보이면 자동 재시도가 소진된 상태라 API 로 되살릴 수 없습니다(운영에 문의하세요). **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
|
|
444
444
|
* @summary 공고 상세 조회
|
|
445
445
|
* @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
|
|
446
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
446
447
|
* @param {*} [options] Override http request option.
|
|
447
448
|
* @throws {RequiredError}
|
|
448
449
|
*/
|
|
449
|
-
getBid: (bidRef_1, ...args_1) => __awaiter(this, [bidRef_1, ...args_1], void 0, function* (bidRef, options = {}) {
|
|
450
|
+
getBid: (bidRef_1, ifNoneMatch_1, ...args_1) => __awaiter(this, [bidRef_1, ifNoneMatch_1, ...args_1], void 0, function* (bidRef, ifNoneMatch, options = {}) {
|
|
450
451
|
// verify required parameter 'bidRef' is not null or undefined
|
|
451
452
|
(0, common_1.assertParamExists)('getBid', 'bidRef', bidRef);
|
|
452
453
|
const localVarPath = `/v2/bids/{bidRef}`
|
|
@@ -464,6 +465,9 @@ const PartnerApiApiAxiosParamCreator = function (configuration) {
|
|
|
464
465
|
// oauth required
|
|
465
466
|
yield (0, common_1.setOAuthToObject)(localVarHeaderParameter, "partner-oauth2", ["bids:read"], configuration);
|
|
466
467
|
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
468
|
+
if (ifNoneMatch != null) {
|
|
469
|
+
localVarHeaderParameter['If-None-Match'] = String(ifNoneMatch);
|
|
470
|
+
}
|
|
467
471
|
(0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
|
|
468
472
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
469
473
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
@@ -476,10 +480,11 @@ const PartnerApiApiAxiosParamCreator = function (configuration) {
|
|
|
476
480
|
* 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 다른 조회에서 일부 참가자 정보가 가려지는 경우와 무관하게, 이 정산 정보는 읽기 전용으로 항상 그대로 제공됩니다. **필수 스코프:** `invoices:read` — 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
|
|
477
481
|
* @summary 정산 정보 조회
|
|
478
482
|
* @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
|
|
483
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
479
484
|
* @param {*} [options] Override http request option.
|
|
480
485
|
* @throws {RequiredError}
|
|
481
486
|
*/
|
|
482
|
-
getBidSettlement: (bidRef_1, ...args_1) => __awaiter(this, [bidRef_1, ...args_1], void 0, function* (bidRef, options = {}) {
|
|
487
|
+
getBidSettlement: (bidRef_1, ifNoneMatch_1, ...args_1) => __awaiter(this, [bidRef_1, ifNoneMatch_1, ...args_1], void 0, function* (bidRef, ifNoneMatch, options = {}) {
|
|
483
488
|
// verify required parameter 'bidRef' is not null or undefined
|
|
484
489
|
(0, common_1.assertParamExists)('getBidSettlement', 'bidRef', bidRef);
|
|
485
490
|
const localVarPath = `/v2/bids/{bidRef}/settlement`
|
|
@@ -497,6 +502,9 @@ const PartnerApiApiAxiosParamCreator = function (configuration) {
|
|
|
497
502
|
// oauth required
|
|
498
503
|
yield (0, common_1.setOAuthToObject)(localVarHeaderParameter, "partner-oauth2", ["invoices:read"], configuration);
|
|
499
504
|
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
505
|
+
if (ifNoneMatch != null) {
|
|
506
|
+
localVarHeaderParameter['If-None-Match'] = String(ifNoneMatch);
|
|
507
|
+
}
|
|
500
508
|
(0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
|
|
501
509
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
502
510
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
@@ -510,10 +518,11 @@ const PartnerApiApiAxiosParamCreator = function (configuration) {
|
|
|
510
518
|
* @summary 거래명세서 조회
|
|
511
519
|
* @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
|
|
512
520
|
* @param {number} [paperCode]
|
|
521
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
513
522
|
* @param {*} [options] Override http request option.
|
|
514
523
|
* @throws {RequiredError}
|
|
515
524
|
*/
|
|
516
|
-
getBidStatement: (bidRef_1, paperCode_1, ...args_1) => __awaiter(this, [bidRef_1, paperCode_1, ...args_1], void 0, function* (bidRef, paperCode, options = {}) {
|
|
525
|
+
getBidStatement: (bidRef_1, paperCode_1, ifNoneMatch_1, ...args_1) => __awaiter(this, [bidRef_1, paperCode_1, ifNoneMatch_1, ...args_1], void 0, function* (bidRef, paperCode, ifNoneMatch, options = {}) {
|
|
517
526
|
// verify required parameter 'bidRef' is not null or undefined
|
|
518
527
|
(0, common_1.assertParamExists)('getBidStatement', 'bidRef', bidRef);
|
|
519
528
|
const localVarPath = `/v2/bids/{bidRef}/statement`
|
|
@@ -534,6 +543,9 @@ const PartnerApiApiAxiosParamCreator = function (configuration) {
|
|
|
534
543
|
localVarQueryParameter['paperCode'] = paperCode;
|
|
535
544
|
}
|
|
536
545
|
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
546
|
+
if (ifNoneMatch != null) {
|
|
547
|
+
localVarHeaderParameter['If-None-Match'] = String(ifNoneMatch);
|
|
548
|
+
}
|
|
537
549
|
(0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
|
|
538
550
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
539
551
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
@@ -546,10 +558,11 @@ const PartnerApiApiAxiosParamCreator = function (configuration) {
|
|
|
546
558
|
* 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **대부분은 이 조회가 필요 없습니다.** 공고·결과 응답의 첨부 항목에 파일명과 내려받기 주소 (`fileUrl`/`fullUrl`, 만료 없는 안정 주소)가 이미 실려 있습니다. 이 엔드포인트는 그 주소를 들고 있지 않고 `fileKey` 만 아는 경우(예: 업로드 직후 크기 확인)를 위한 것입니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** fileKey 는 **영문 대소문자·숫자 32자**이고, 그 형태가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. 키를 16진수(hex)로 가정해 클라이언트에서 걸러내지 마세요 — 업로드된 파일의 키에는 hex 가 아닌 문자가 들어갑니다. **필수 스코프:** `files:read`
|
|
547
559
|
* @summary 파일 정보 조회
|
|
548
560
|
* @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(영문 대소문자·숫자 32자).
|
|
561
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
549
562
|
* @param {*} [options] Override http request option.
|
|
550
563
|
* @throws {RequiredError}
|
|
551
564
|
*/
|
|
552
|
-
getFileMeta: (fileKey_1, ...args_1) => __awaiter(this, [fileKey_1, ...args_1], void 0, function* (fileKey, options = {}) {
|
|
565
|
+
getFileMeta: (fileKey_1, ifNoneMatch_1, ...args_1) => __awaiter(this, [fileKey_1, ifNoneMatch_1, ...args_1], void 0, function* (fileKey, ifNoneMatch, options = {}) {
|
|
553
566
|
// verify required parameter 'fileKey' is not null or undefined
|
|
554
567
|
(0, common_1.assertParamExists)('getFileMeta', 'fileKey', fileKey);
|
|
555
568
|
const localVarPath = `/v2/files/{fileKey}`
|
|
@@ -567,6 +580,9 @@ const PartnerApiApiAxiosParamCreator = function (configuration) {
|
|
|
567
580
|
// oauth required
|
|
568
581
|
yield (0, common_1.setOAuthToObject)(localVarHeaderParameter, "partner-oauth2", ["files:read"], configuration);
|
|
569
582
|
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
583
|
+
if (ifNoneMatch != null) {
|
|
584
|
+
localVarHeaderParameter['If-None-Match'] = String(ifNoneMatch);
|
|
585
|
+
}
|
|
570
586
|
(0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
|
|
571
587
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
572
588
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
@@ -612,10 +628,11 @@ const PartnerApiApiAxiosParamCreator = function (configuration) {
|
|
|
612
628
|
* 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
|
|
613
629
|
* @summary 공급사 카드결제 가능 여부
|
|
614
630
|
* @param {string} memberId 계약업체 회원 ID
|
|
631
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
615
632
|
* @param {*} [options] Override http request option.
|
|
616
633
|
* @throws {RequiredError}
|
|
617
634
|
*/
|
|
618
|
-
getSupplierCardPayableV2: (memberId_1, ...args_1) => __awaiter(this, [memberId_1, ...args_1], void 0, function* (memberId, options = {}) {
|
|
635
|
+
getSupplierCardPayableV2: (memberId_1, ifNoneMatch_1, ...args_1) => __awaiter(this, [memberId_1, ifNoneMatch_1, ...args_1], void 0, function* (memberId, ifNoneMatch, options = {}) {
|
|
619
636
|
// verify required parameter 'memberId' is not null or undefined
|
|
620
637
|
(0, common_1.assertParamExists)('getSupplierCardPayableV2', 'memberId', memberId);
|
|
621
638
|
const localVarPath = `/v2/suppliers/{memberId}/card-payable`
|
|
@@ -633,6 +650,9 @@ const PartnerApiApiAxiosParamCreator = function (configuration) {
|
|
|
633
650
|
// oauth required
|
|
634
651
|
yield (0, common_1.setOAuthToObject)(localVarHeaderParameter, "partner-oauth2", ["payments:read"], configuration);
|
|
635
652
|
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
653
|
+
if (ifNoneMatch != null) {
|
|
654
|
+
localVarHeaderParameter['If-None-Match'] = String(ifNoneMatch);
|
|
655
|
+
}
|
|
636
656
|
(0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
|
|
637
657
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
638
658
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
@@ -645,10 +665,11 @@ const PartnerApiApiAxiosParamCreator = function (configuration) {
|
|
|
645
665
|
* 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
|
|
646
666
|
* @summary 웹훅 구독 단건 조회
|
|
647
667
|
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
668
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
648
669
|
* @param {*} [options] Override http request option.
|
|
649
670
|
* @throws {RequiredError}
|
|
650
671
|
*/
|
|
651
|
-
getWebhookEndpoint: (endpointId_1, ...args_1) => __awaiter(this, [endpointId_1, ...args_1], void 0, function* (endpointId, options = {}) {
|
|
672
|
+
getWebhookEndpoint: (endpointId_1, ifNoneMatch_1, ...args_1) => __awaiter(this, [endpointId_1, ifNoneMatch_1, ...args_1], void 0, function* (endpointId, ifNoneMatch, options = {}) {
|
|
652
673
|
// verify required parameter 'endpointId' is not null or undefined
|
|
653
674
|
(0, common_1.assertParamExists)('getWebhookEndpoint', 'endpointId', endpointId);
|
|
654
675
|
const localVarPath = `/v2/webhook-endpoints/{endpointId}`
|
|
@@ -666,6 +687,9 @@ const PartnerApiApiAxiosParamCreator = function (configuration) {
|
|
|
666
687
|
// oauth required
|
|
667
688
|
yield (0, common_1.setOAuthToObject)(localVarHeaderParameter, "partner-oauth2", ["webhooks:read"], configuration);
|
|
668
689
|
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
690
|
+
if (ifNoneMatch != null) {
|
|
691
|
+
localVarHeaderParameter['If-None-Match'] = String(ifNoneMatch);
|
|
692
|
+
}
|
|
669
693
|
(0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
|
|
670
694
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
671
695
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
@@ -677,10 +701,11 @@ const PartnerApiApiAxiosParamCreator = function (configuration) {
|
|
|
677
701
|
/**
|
|
678
702
|
* ERP 연동 직전 회선·인증 endpoint 동작 확인용.
|
|
679
703
|
* @summary Partner API 헬스체크
|
|
704
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
680
705
|
* @param {*} [options] Override http request option.
|
|
681
706
|
* @throws {RequiredError}
|
|
682
707
|
*/
|
|
683
|
-
healthControllerCheck: (...args_1) => __awaiter(this, [...args_1], void 0, function* (options = {}) {
|
|
708
|
+
healthControllerCheck: (ifNoneMatch_1, ...args_1) => __awaiter(this, [ifNoneMatch_1, ...args_1], void 0, function* (ifNoneMatch, options = {}) {
|
|
684
709
|
const localVarPath = `/health`;
|
|
685
710
|
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
686
711
|
const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
|
|
@@ -692,6 +717,9 @@ const PartnerApiApiAxiosParamCreator = function (configuration) {
|
|
|
692
717
|
const localVarHeaderParameter = {};
|
|
693
718
|
const localVarQueryParameter = {};
|
|
694
719
|
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
720
|
+
if (ifNoneMatch != null) {
|
|
721
|
+
localVarHeaderParameter['If-None-Match'] = String(ifNoneMatch);
|
|
722
|
+
}
|
|
695
723
|
(0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
|
|
696
724
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
697
725
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
@@ -704,10 +732,11 @@ const PartnerApiApiAxiosParamCreator = function (configuration) {
|
|
|
704
732
|
* 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고를 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에 실린 `ETag` 를 다음 요청의 `If-None-Match` 로 되보내면, 결과가 그대로일 때 `304` 를 본문 없이 받습니다. **식별자 전달:** `?bidRefs=A,B,C`(쉼표) 또는 `?bidRefs=A&bidRefs=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다. 요청한 건수와 받은 건수가 다를 수 있으므로, 보낸 값이 공고번호였다면 `bidId` 로, 구매번호였다면 `purchaseNo` 로 대조하세요. **공고 하나만 볼 때도** `bidRefs` 에 하나만 넣으면 됩니다. 응찰 결과 외에 납품 조건·품목·계약서류까지 필요하면 `GET /v2/bids/{bidRef}` 상세 조회를 쓰세요.
|
|
705
733
|
* @summary 공고 결과 조회
|
|
706
734
|
* @param {string} bidRefs 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. 쉼표로 구분하거나 `bidRefs` 를 반복해 전달합니다. 최대 100건입니다.
|
|
735
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
707
736
|
* @param {*} [options] Override http request option.
|
|
708
737
|
* @throws {RequiredError}
|
|
709
738
|
*/
|
|
710
|
-
listBidResults: (bidRefs_1, ...args_1) => __awaiter(this, [bidRefs_1, ...args_1], void 0, function* (bidRefs, options = {}) {
|
|
739
|
+
listBidResults: (bidRefs_1, ifNoneMatch_1, ...args_1) => __awaiter(this, [bidRefs_1, ifNoneMatch_1, ...args_1], void 0, function* (bidRefs, ifNoneMatch, options = {}) {
|
|
711
740
|
// verify required parameter 'bidRefs' is not null or undefined
|
|
712
741
|
(0, common_1.assertParamExists)('listBidResults', 'bidRefs', bidRefs);
|
|
713
742
|
const localVarPath = `/v2/bid-results`;
|
|
@@ -727,6 +756,9 @@ const PartnerApiApiAxiosParamCreator = function (configuration) {
|
|
|
727
756
|
localVarQueryParameter['bidRefs'] = bidRefs;
|
|
728
757
|
}
|
|
729
758
|
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
759
|
+
if (ifNoneMatch != null) {
|
|
760
|
+
localVarHeaderParameter['If-None-Match'] = String(ifNoneMatch);
|
|
761
|
+
}
|
|
730
762
|
(0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
|
|
731
763
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
732
764
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
@@ -743,10 +775,11 @@ const PartnerApiApiAxiosParamCreator = function (configuration) {
|
|
|
743
775
|
* @param {Array<string>} [bidRefs] 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. CSV 로 전달하며 최대 100건. 지정 시 그 공고만 조회합니다.
|
|
744
776
|
* @param {Array<BidPublicStatus>} [status] 공고 상태 필터(공개값) CSV. 지정 시 그중 하나라도 일치하는 공고만 조회합니다.
|
|
745
777
|
* @param {Array<ListBidsIncludeEnum>} [include] 행별 확장 부착 CSV. `results`=응찰 참여자, `products`=공고 등록 품목, `contacts`=발주 담당자 성명·연락처·이메일. 미지정이면 부착하지 않는다(응답이 가볍고 조회 비용도 들지 않는다).
|
|
778
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
746
779
|
* @param {*} [options] Override http request option.
|
|
747
780
|
* @throws {RequiredError}
|
|
748
781
|
*/
|
|
749
|
-
listBids: (limit_1, cursor_1, bidRefs_1, status_1, include_1, ...args_1) => __awaiter(this, [limit_1, cursor_1, bidRefs_1, status_1, include_1, ...args_1], void 0, function* (limit, cursor, bidRefs, status, include, options = {}) {
|
|
782
|
+
listBids: (limit_1, cursor_1, bidRefs_1, status_1, include_1, ifNoneMatch_1, ...args_1) => __awaiter(this, [limit_1, cursor_1, bidRefs_1, status_1, include_1, ifNoneMatch_1, ...args_1], void 0, function* (limit, cursor, bidRefs, status, include, ifNoneMatch, options = {}) {
|
|
750
783
|
const localVarPath = `/v2/bids`;
|
|
751
784
|
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
752
785
|
const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
|
|
@@ -776,6 +809,9 @@ const PartnerApiApiAxiosParamCreator = function (configuration) {
|
|
|
776
809
|
localVarQueryParameter['include'] = include;
|
|
777
810
|
}
|
|
778
811
|
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
812
|
+
if (ifNoneMatch != null) {
|
|
813
|
+
localVarHeaderParameter['If-None-Match'] = String(ifNoneMatch);
|
|
814
|
+
}
|
|
779
815
|
(0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
|
|
780
816
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
781
817
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
@@ -832,10 +868,11 @@ const PartnerApiApiAxiosParamCreator = function (configuration) {
|
|
|
832
868
|
* @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
|
|
833
869
|
* @param {number} [limit] 페이지 크기(1~200, 기본 50).
|
|
834
870
|
* @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 `nextCursor` 를 그대로 전달합니다. 미지정 시 첫 페이지.
|
|
871
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
835
872
|
* @param {*} [options] Override http request option.
|
|
836
873
|
* @throws {RequiredError}
|
|
837
874
|
*/
|
|
838
|
-
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 = {}) {
|
|
875
|
+
listWebhookDeliveries: (endpointId_1, status_1, limit_1, cursor_1, ifNoneMatch_1, ...args_1) => __awaiter(this, [endpointId_1, status_1, limit_1, cursor_1, ifNoneMatch_1, ...args_1], void 0, function* (endpointId, status, limit, cursor, ifNoneMatch, options = {}) {
|
|
839
876
|
const localVarPath = `/v2/webhook-deliveries`;
|
|
840
877
|
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
841
878
|
const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
|
|
@@ -862,6 +899,9 @@ const PartnerApiApiAxiosParamCreator = function (configuration) {
|
|
|
862
899
|
localVarQueryParameter['cursor'] = cursor;
|
|
863
900
|
}
|
|
864
901
|
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
902
|
+
if (ifNoneMatch != null) {
|
|
903
|
+
localVarHeaderParameter['If-None-Match'] = String(ifNoneMatch);
|
|
904
|
+
}
|
|
865
905
|
(0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
|
|
866
906
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
867
907
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
@@ -873,10 +913,11 @@ const PartnerApiApiAxiosParamCreator = function (configuration) {
|
|
|
873
913
|
/**
|
|
874
914
|
* 이 API 키가 등록한 웹훅 구독을 모두 조회합니다. **호출 시점:** 연동 상태를 점검할 때, 또는 발송이 멈춘 이유(`status`·`consecutiveFailures`)를 확인할 때. 서명 시크릿은 여기에 실리지 않습니다. **필수 스코프:** `webhooks:read` ### 서명 검증 (필수) 서명은 **[Standard Webhooks](https://www.standardwebhooks.com)** 규약을 그대로 따릅니다. 직접 구현하지 말고 각 언어의 `standardwebhooks` 라이브러리에 등록 시 받은 시크릿 (`whsec_…`)을 그대로 넘기세요 — 그것이 이 형식을 쓰는 이유입니다. ```java // Java Webhook webhook = new Webhook(secret); // secret = \"whsec_…\" webhook.verify(rawBody, headers); // 실패하면 예외 ``` ```ts // Node / TypeScript import { Webhook } from \'standardwebhooks\'; new Webhook(secret).verify(rawBody, headers); ``` 라이브러리를 쓸 수 없다면 발송 요청에 실리는 헤더는 셋입니다. ``` webhook-id: evt_01J8Z7Q3K9 webhook-timestamp: 1774915200 webhook-signature: v1,K5oZfzN95Z9UVu1EsfQmfVNQhnkZ2pj9o9NDN/H/pI4= ``` 1. 시크릿에서 `whsec_` 접두어를 떼고 **base64 디코드**합니다 — 그 바이트가 HMAC 키입니다 (시크릿 문자열 자체가 아닙니다). 2. `\"${webhook-id}.${webhook-timestamp}.${본문 원문}\"` 을 만듭니다. **본문은 파싱 전 원문 바이트**여야 합니다 — JSON 을 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. HMAC-SHA256 을 계산해 **base64** 로 인코딩하고, `webhook-signature` 의 `v1,` 뒤 값과 비교합니다. 비교는 **상수 시간** 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `webhook-timestamp` 가 현재 시각에서 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). `webhook-signature` 는 공백으로 구분된 **여러 서명**을 실을 수 있는 형식입니다(키 회전용). 지금은 항상 하나지만, 검증기는 목록으로 읽고 **하나라도 맞으면 통과**하도록 짜세요. ### 중복 제거 `webhook-id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. 편의를 위해 `webhook-event-type` 헤더에 이벤트 타입(본문 `type` 과 같은 값)도 실립니다 — 본문을 파싱하기 전에 관심 없는 타입을 버릴 수 있습니다. 표준에는 없는 확장이라 검증 라이브러리는 이 헤더를 무시합니다. ### 응답과 재시도 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
|
|
875
915
|
* @summary 웹훅 구독 목록 조회
|
|
916
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
876
917
|
* @param {*} [options] Override http request option.
|
|
877
918
|
* @throws {RequiredError}
|
|
878
919
|
*/
|
|
879
|
-
listWebhookEndpoints: (...args_1) => __awaiter(this, [...args_1], void 0, function* (options = {}) {
|
|
920
|
+
listWebhookEndpoints: (ifNoneMatch_1, ...args_1) => __awaiter(this, [ifNoneMatch_1, ...args_1], void 0, function* (ifNoneMatch, options = {}) {
|
|
880
921
|
const localVarPath = `/v2/webhook-endpoints`;
|
|
881
922
|
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
|
882
923
|
const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
|
|
@@ -891,6 +932,9 @@ const PartnerApiApiAxiosParamCreator = function (configuration) {
|
|
|
891
932
|
// oauth required
|
|
892
933
|
yield (0, common_1.setOAuthToObject)(localVarHeaderParameter, "partner-oauth2", ["webhooks:read"], configuration);
|
|
893
934
|
localVarHeaderParameter['Accept'] = 'application/json,application/problem+json';
|
|
935
|
+
if (ifNoneMatch != null) {
|
|
936
|
+
localVarHeaderParameter['If-None-Match'] = String(ifNoneMatch);
|
|
937
|
+
}
|
|
894
938
|
(0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
|
|
895
939
|
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
|
896
940
|
localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
|
|
@@ -1603,13 +1647,14 @@ const PartnerApiApiFp = function (configuration) {
|
|
|
1603
1647
|
* 공고의 모든 정보를 한 번에 조회합니다 — 기본 정보·납품/대금 조건·담당자·품목, 응찰 참여자(투찰가·순위·낙찰 여부), 계약서류, 검수 진행 상태, 라이프사이클 하위 상태. 스코프 `bids:read`. ERP 는 이 엔드포인트를 폴링해 async 처리(정산 마감 등)의 성사를 관측합니다. **낙찰 여부:** 이 응답의 `status` 가 아니라 `participants[].isWinner` 로 관측합니다. AWARDED 라는 공고 상태는 존재하지 않으며(낙찰 직후 공고는 CONTRACT_IN_PROGRESS 로 전이) `status === \'AWARDED\'` 를 기다리면 영원히 도달하지 않습니다. **여러 건을 한 번에:** 공고마다 이 조회를 반복하지 말고 `GET /v2/bid-results` 배치 조회를 쓰세요. **계약서류는 이 응답에 실립니다.** `contractDocuments[]` 가 서류별 `paperCode`·`paperName`· `fileKey`·`downloadUrl`·`uploadedAt`·`winnerSequence` 를 담습니다 — 계약서류만 따로 받는 엔드포인트는 두지 않습니다. `generationState` 는 **관측 전용**이며 `DEAD_LETTER` 가 보이면 자동 재시도가 소진된 상태라 API 로 되살릴 수 없습니다(운영에 문의하세요). **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
|
|
1604
1648
|
* @summary 공고 상세 조회
|
|
1605
1649
|
* @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
|
|
1650
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
1606
1651
|
* @param {*} [options] Override http request option.
|
|
1607
1652
|
* @throws {RequiredError}
|
|
1608
1653
|
*/
|
|
1609
|
-
getBid(bidRef, options) {
|
|
1654
|
+
getBid(bidRef, ifNoneMatch, options) {
|
|
1610
1655
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1611
1656
|
var _a, _b, _c;
|
|
1612
|
-
const localVarAxiosArgs = yield localVarAxiosParamCreator.getBid(bidRef, options);
|
|
1657
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.getBid(bidRef, ifNoneMatch, options);
|
|
1613
1658
|
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1614
1659
|
const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerApiApi.getBid']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1615
1660
|
return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
@@ -1619,13 +1664,14 @@ const PartnerApiApiFp = function (configuration) {
|
|
|
1619
1664
|
* 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 다른 조회에서 일부 참가자 정보가 가려지는 경우와 무관하게, 이 정산 정보는 읽기 전용으로 항상 그대로 제공됩니다. **필수 스코프:** `invoices:read` — 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
|
|
1620
1665
|
* @summary 정산 정보 조회
|
|
1621
1666
|
* @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
|
|
1667
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
1622
1668
|
* @param {*} [options] Override http request option.
|
|
1623
1669
|
* @throws {RequiredError}
|
|
1624
1670
|
*/
|
|
1625
|
-
getBidSettlement(bidRef, options) {
|
|
1671
|
+
getBidSettlement(bidRef, ifNoneMatch, options) {
|
|
1626
1672
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1627
1673
|
var _a, _b, _c;
|
|
1628
|
-
const localVarAxiosArgs = yield localVarAxiosParamCreator.getBidSettlement(bidRef, options);
|
|
1674
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.getBidSettlement(bidRef, ifNoneMatch, options);
|
|
1629
1675
|
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1630
1676
|
const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerApiApi.getBidSettlement']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1631
1677
|
return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
@@ -1636,13 +1682,14 @@ const PartnerApiApiFp = function (configuration) {
|
|
|
1636
1682
|
* @summary 거래명세서 조회
|
|
1637
1683
|
* @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
|
|
1638
1684
|
* @param {number} [paperCode]
|
|
1685
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
1639
1686
|
* @param {*} [options] Override http request option.
|
|
1640
1687
|
* @throws {RequiredError}
|
|
1641
1688
|
*/
|
|
1642
|
-
getBidStatement(bidRef, paperCode, options) {
|
|
1689
|
+
getBidStatement(bidRef, paperCode, ifNoneMatch, options) {
|
|
1643
1690
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1644
1691
|
var _a, _b, _c;
|
|
1645
|
-
const localVarAxiosArgs = yield localVarAxiosParamCreator.getBidStatement(bidRef, paperCode, options);
|
|
1692
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.getBidStatement(bidRef, paperCode, ifNoneMatch, options);
|
|
1646
1693
|
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1647
1694
|
const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerApiApi.getBidStatement']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1648
1695
|
return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
@@ -1652,13 +1699,14 @@ const PartnerApiApiFp = function (configuration) {
|
|
|
1652
1699
|
* 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **대부분은 이 조회가 필요 없습니다.** 공고·결과 응답의 첨부 항목에 파일명과 내려받기 주소 (`fileUrl`/`fullUrl`, 만료 없는 안정 주소)가 이미 실려 있습니다. 이 엔드포인트는 그 주소를 들고 있지 않고 `fileKey` 만 아는 경우(예: 업로드 직후 크기 확인)를 위한 것입니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** fileKey 는 **영문 대소문자·숫자 32자**이고, 그 형태가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. 키를 16진수(hex)로 가정해 클라이언트에서 걸러내지 마세요 — 업로드된 파일의 키에는 hex 가 아닌 문자가 들어갑니다. **필수 스코프:** `files:read`
|
|
1653
1700
|
* @summary 파일 정보 조회
|
|
1654
1701
|
* @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(영문 대소문자·숫자 32자).
|
|
1702
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
1655
1703
|
* @param {*} [options] Override http request option.
|
|
1656
1704
|
* @throws {RequiredError}
|
|
1657
1705
|
*/
|
|
1658
|
-
getFileMeta(fileKey, options) {
|
|
1706
|
+
getFileMeta(fileKey, ifNoneMatch, options) {
|
|
1659
1707
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1660
1708
|
var _a, _b, _c;
|
|
1661
|
-
const localVarAxiosArgs = yield localVarAxiosParamCreator.getFileMeta(fileKey, options);
|
|
1709
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.getFileMeta(fileKey, ifNoneMatch, options);
|
|
1662
1710
|
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1663
1711
|
const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerApiApi.getFileMeta']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1664
1712
|
return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
@@ -1684,13 +1732,14 @@ const PartnerApiApiFp = function (configuration) {
|
|
|
1684
1732
|
* 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
|
|
1685
1733
|
* @summary 공급사 카드결제 가능 여부
|
|
1686
1734
|
* @param {string} memberId 계약업체 회원 ID
|
|
1735
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
1687
1736
|
* @param {*} [options] Override http request option.
|
|
1688
1737
|
* @throws {RequiredError}
|
|
1689
1738
|
*/
|
|
1690
|
-
getSupplierCardPayableV2(memberId, options) {
|
|
1739
|
+
getSupplierCardPayableV2(memberId, ifNoneMatch, options) {
|
|
1691
1740
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1692
1741
|
var _a, _b, _c;
|
|
1693
|
-
const localVarAxiosArgs = yield localVarAxiosParamCreator.getSupplierCardPayableV2(memberId, options);
|
|
1742
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.getSupplierCardPayableV2(memberId, ifNoneMatch, options);
|
|
1694
1743
|
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1695
1744
|
const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerApiApi.getSupplierCardPayableV2']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1696
1745
|
return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
@@ -1700,13 +1749,14 @@ const PartnerApiApiFp = function (configuration) {
|
|
|
1700
1749
|
* 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
|
|
1701
1750
|
* @summary 웹훅 구독 단건 조회
|
|
1702
1751
|
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
1752
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
1703
1753
|
* @param {*} [options] Override http request option.
|
|
1704
1754
|
* @throws {RequiredError}
|
|
1705
1755
|
*/
|
|
1706
|
-
getWebhookEndpoint(endpointId, options) {
|
|
1756
|
+
getWebhookEndpoint(endpointId, ifNoneMatch, options) {
|
|
1707
1757
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1708
1758
|
var _a, _b, _c;
|
|
1709
|
-
const localVarAxiosArgs = yield localVarAxiosParamCreator.getWebhookEndpoint(endpointId, options);
|
|
1759
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.getWebhookEndpoint(endpointId, ifNoneMatch, options);
|
|
1710
1760
|
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1711
1761
|
const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerApiApi.getWebhookEndpoint']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1712
1762
|
return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
@@ -1715,13 +1765,14 @@ const PartnerApiApiFp = function (configuration) {
|
|
|
1715
1765
|
/**
|
|
1716
1766
|
* ERP 연동 직전 회선·인증 endpoint 동작 확인용.
|
|
1717
1767
|
* @summary Partner API 헬스체크
|
|
1768
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
1718
1769
|
* @param {*} [options] Override http request option.
|
|
1719
1770
|
* @throws {RequiredError}
|
|
1720
1771
|
*/
|
|
1721
|
-
healthControllerCheck(options) {
|
|
1772
|
+
healthControllerCheck(ifNoneMatch, options) {
|
|
1722
1773
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1723
1774
|
var _a, _b, _c;
|
|
1724
|
-
const localVarAxiosArgs = yield localVarAxiosParamCreator.healthControllerCheck(options);
|
|
1775
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.healthControllerCheck(ifNoneMatch, options);
|
|
1725
1776
|
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1726
1777
|
const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerApiApi.healthControllerCheck']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1727
1778
|
return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
@@ -1731,13 +1782,14 @@ const PartnerApiApiFp = function (configuration) {
|
|
|
1731
1782
|
* 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고를 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에 실린 `ETag` 를 다음 요청의 `If-None-Match` 로 되보내면, 결과가 그대로일 때 `304` 를 본문 없이 받습니다. **식별자 전달:** `?bidRefs=A,B,C`(쉼표) 또는 `?bidRefs=A&bidRefs=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다. 요청한 건수와 받은 건수가 다를 수 있으므로, 보낸 값이 공고번호였다면 `bidId` 로, 구매번호였다면 `purchaseNo` 로 대조하세요. **공고 하나만 볼 때도** `bidRefs` 에 하나만 넣으면 됩니다. 응찰 결과 외에 납품 조건·품목·계약서류까지 필요하면 `GET /v2/bids/{bidRef}` 상세 조회를 쓰세요.
|
|
1732
1783
|
* @summary 공고 결과 조회
|
|
1733
1784
|
* @param {string} bidRefs 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. 쉼표로 구분하거나 `bidRefs` 를 반복해 전달합니다. 최대 100건입니다.
|
|
1785
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
1734
1786
|
* @param {*} [options] Override http request option.
|
|
1735
1787
|
* @throws {RequiredError}
|
|
1736
1788
|
*/
|
|
1737
|
-
listBidResults(bidRefs, options) {
|
|
1789
|
+
listBidResults(bidRefs, ifNoneMatch, options) {
|
|
1738
1790
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1739
1791
|
var _a, _b, _c;
|
|
1740
|
-
const localVarAxiosArgs = yield localVarAxiosParamCreator.listBidResults(bidRefs, options);
|
|
1792
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.listBidResults(bidRefs, ifNoneMatch, options);
|
|
1741
1793
|
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1742
1794
|
const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerApiApi.listBidResults']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1743
1795
|
return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
@@ -1751,13 +1803,14 @@ const PartnerApiApiFp = function (configuration) {
|
|
|
1751
1803
|
* @param {Array<string>} [bidRefs] 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. CSV 로 전달하며 최대 100건. 지정 시 그 공고만 조회합니다.
|
|
1752
1804
|
* @param {Array<BidPublicStatus>} [status] 공고 상태 필터(공개값) CSV. 지정 시 그중 하나라도 일치하는 공고만 조회합니다.
|
|
1753
1805
|
* @param {Array<ListBidsIncludeEnum>} [include] 행별 확장 부착 CSV. `results`=응찰 참여자, `products`=공고 등록 품목, `contacts`=발주 담당자 성명·연락처·이메일. 미지정이면 부착하지 않는다(응답이 가볍고 조회 비용도 들지 않는다).
|
|
1806
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
1754
1807
|
* @param {*} [options] Override http request option.
|
|
1755
1808
|
* @throws {RequiredError}
|
|
1756
1809
|
*/
|
|
1757
|
-
listBids(limit, cursor, bidRefs, status, include, options) {
|
|
1810
|
+
listBids(limit, cursor, bidRefs, status, include, ifNoneMatch, options) {
|
|
1758
1811
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1759
1812
|
var _a, _b, _c;
|
|
1760
|
-
const localVarAxiosArgs = yield localVarAxiosParamCreator.listBids(limit, cursor, bidRefs, status, include, options);
|
|
1813
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.listBids(limit, cursor, bidRefs, status, include, ifNoneMatch, options);
|
|
1761
1814
|
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1762
1815
|
const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerApiApi.listBids']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1763
1816
|
return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
@@ -1787,13 +1840,14 @@ const PartnerApiApiFp = function (configuration) {
|
|
|
1787
1840
|
* @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
|
|
1788
1841
|
* @param {number} [limit] 페이지 크기(1~200, 기본 50).
|
|
1789
1842
|
* @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 `nextCursor` 를 그대로 전달합니다. 미지정 시 첫 페이지.
|
|
1843
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
1790
1844
|
* @param {*} [options] Override http request option.
|
|
1791
1845
|
* @throws {RequiredError}
|
|
1792
1846
|
*/
|
|
1793
|
-
listWebhookDeliveries(endpointId, status, limit, cursor, options) {
|
|
1847
|
+
listWebhookDeliveries(endpointId, status, limit, cursor, ifNoneMatch, options) {
|
|
1794
1848
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1795
1849
|
var _a, _b, _c;
|
|
1796
|
-
const localVarAxiosArgs = yield localVarAxiosParamCreator.listWebhookDeliveries(endpointId, status, limit, cursor, options);
|
|
1850
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.listWebhookDeliveries(endpointId, status, limit, cursor, ifNoneMatch, options);
|
|
1797
1851
|
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1798
1852
|
const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerApiApi.listWebhookDeliveries']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1799
1853
|
return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
@@ -1802,13 +1856,14 @@ const PartnerApiApiFp = function (configuration) {
|
|
|
1802
1856
|
/**
|
|
1803
1857
|
* 이 API 키가 등록한 웹훅 구독을 모두 조회합니다. **호출 시점:** 연동 상태를 점검할 때, 또는 발송이 멈춘 이유(`status`·`consecutiveFailures`)를 확인할 때. 서명 시크릿은 여기에 실리지 않습니다. **필수 스코프:** `webhooks:read` ### 서명 검증 (필수) 서명은 **[Standard Webhooks](https://www.standardwebhooks.com)** 규약을 그대로 따릅니다. 직접 구현하지 말고 각 언어의 `standardwebhooks` 라이브러리에 등록 시 받은 시크릿 (`whsec_…`)을 그대로 넘기세요 — 그것이 이 형식을 쓰는 이유입니다. ```java // Java Webhook webhook = new Webhook(secret); // secret = \"whsec_…\" webhook.verify(rawBody, headers); // 실패하면 예외 ``` ```ts // Node / TypeScript import { Webhook } from \'standardwebhooks\'; new Webhook(secret).verify(rawBody, headers); ``` 라이브러리를 쓸 수 없다면 발송 요청에 실리는 헤더는 셋입니다. ``` webhook-id: evt_01J8Z7Q3K9 webhook-timestamp: 1774915200 webhook-signature: v1,K5oZfzN95Z9UVu1EsfQmfVNQhnkZ2pj9o9NDN/H/pI4= ``` 1. 시크릿에서 `whsec_` 접두어를 떼고 **base64 디코드**합니다 — 그 바이트가 HMAC 키입니다 (시크릿 문자열 자체가 아닙니다). 2. `\"${webhook-id}.${webhook-timestamp}.${본문 원문}\"` 을 만듭니다. **본문은 파싱 전 원문 바이트**여야 합니다 — JSON 을 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. HMAC-SHA256 을 계산해 **base64** 로 인코딩하고, `webhook-signature` 의 `v1,` 뒤 값과 비교합니다. 비교는 **상수 시간** 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `webhook-timestamp` 가 현재 시각에서 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). `webhook-signature` 는 공백으로 구분된 **여러 서명**을 실을 수 있는 형식입니다(키 회전용). 지금은 항상 하나지만, 검증기는 목록으로 읽고 **하나라도 맞으면 통과**하도록 짜세요. ### 중복 제거 `webhook-id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. 편의를 위해 `webhook-event-type` 헤더에 이벤트 타입(본문 `type` 과 같은 값)도 실립니다 — 본문을 파싱하기 전에 관심 없는 타입을 버릴 수 있습니다. 표준에는 없는 확장이라 검증 라이브러리는 이 헤더를 무시합니다. ### 응답과 재시도 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
|
|
1804
1858
|
* @summary 웹훅 구독 목록 조회
|
|
1859
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
1805
1860
|
* @param {*} [options] Override http request option.
|
|
1806
1861
|
* @throws {RequiredError}
|
|
1807
1862
|
*/
|
|
1808
|
-
listWebhookEndpoints(options) {
|
|
1863
|
+
listWebhookEndpoints(ifNoneMatch, options) {
|
|
1809
1864
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1810
1865
|
var _a, _b, _c;
|
|
1811
|
-
const localVarAxiosArgs = yield localVarAxiosParamCreator.listWebhookEndpoints(options);
|
|
1866
|
+
const localVarAxiosArgs = yield localVarAxiosParamCreator.listWebhookEndpoints(ifNoneMatch, options);
|
|
1812
1867
|
const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
|
|
1813
1868
|
const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PartnerApiApi.listWebhookEndpoints']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
|
|
1814
1869
|
return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
|
|
@@ -2153,42 +2208,46 @@ const PartnerApiApiFactory = function (configuration, basePath, axios) {
|
|
|
2153
2208
|
* 공고의 모든 정보를 한 번에 조회합니다 — 기본 정보·납품/대금 조건·담당자·품목, 응찰 참여자(투찰가·순위·낙찰 여부), 계약서류, 검수 진행 상태, 라이프사이클 하위 상태. 스코프 `bids:read`. ERP 는 이 엔드포인트를 폴링해 async 처리(정산 마감 등)의 성사를 관측합니다. **낙찰 여부:** 이 응답의 `status` 가 아니라 `participants[].isWinner` 로 관측합니다. AWARDED 라는 공고 상태는 존재하지 않으며(낙찰 직후 공고는 CONTRACT_IN_PROGRESS 로 전이) `status === \'AWARDED\'` 를 기다리면 영원히 도달하지 않습니다. **여러 건을 한 번에:** 공고마다 이 조회를 반복하지 말고 `GET /v2/bid-results` 배치 조회를 쓰세요. **계약서류는 이 응답에 실립니다.** `contractDocuments[]` 가 서류별 `paperCode`·`paperName`· `fileKey`·`downloadUrl`·`uploadedAt`·`winnerSequence` 를 담습니다 — 계약서류만 따로 받는 엔드포인트는 두지 않습니다. `generationState` 는 **관측 전용**이며 `DEAD_LETTER` 가 보이면 자동 재시도가 소진된 상태라 API 로 되살릴 수 없습니다(운영에 문의하세요). **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
|
|
2154
2209
|
* @summary 공고 상세 조회
|
|
2155
2210
|
* @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
|
|
2211
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
2156
2212
|
* @param {*} [options] Override http request option.
|
|
2157
2213
|
* @throws {RequiredError}
|
|
2158
2214
|
*/
|
|
2159
|
-
getBid(bidRef, options) {
|
|
2160
|
-
return localVarFp.getBid(bidRef, options).then((request) => request(axios, basePath));
|
|
2215
|
+
getBid(bidRef, ifNoneMatch, options) {
|
|
2216
|
+
return localVarFp.getBid(bidRef, ifNoneMatch, options).then((request) => request(axios, basePath));
|
|
2161
2217
|
},
|
|
2162
2218
|
/**
|
|
2163
2219
|
* 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 다른 조회에서 일부 참가자 정보가 가려지는 경우와 무관하게, 이 정산 정보는 읽기 전용으로 항상 그대로 제공됩니다. **필수 스코프:** `invoices:read` — 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
|
|
2164
2220
|
* @summary 정산 정보 조회
|
|
2165
2221
|
* @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
|
|
2222
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
2166
2223
|
* @param {*} [options] Override http request option.
|
|
2167
2224
|
* @throws {RequiredError}
|
|
2168
2225
|
*/
|
|
2169
|
-
getBidSettlement(bidRef, options) {
|
|
2170
|
-
return localVarFp.getBidSettlement(bidRef, options).then((request) => request(axios, basePath));
|
|
2226
|
+
getBidSettlement(bidRef, ifNoneMatch, options) {
|
|
2227
|
+
return localVarFp.getBidSettlement(bidRef, ifNoneMatch, options).then((request) => request(axios, basePath));
|
|
2171
2228
|
},
|
|
2172
2229
|
/**
|
|
2173
2230
|
* 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
|
|
2174
2231
|
* @summary 거래명세서 조회
|
|
2175
2232
|
* @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
|
|
2176
2233
|
* @param {number} [paperCode]
|
|
2234
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
2177
2235
|
* @param {*} [options] Override http request option.
|
|
2178
2236
|
* @throws {RequiredError}
|
|
2179
2237
|
*/
|
|
2180
|
-
getBidStatement(bidRef, paperCode, options) {
|
|
2181
|
-
return localVarFp.getBidStatement(bidRef, paperCode, options).then((request) => request(axios, basePath));
|
|
2238
|
+
getBidStatement(bidRef, paperCode, ifNoneMatch, options) {
|
|
2239
|
+
return localVarFp.getBidStatement(bidRef, paperCode, ifNoneMatch, options).then((request) => request(axios, basePath));
|
|
2182
2240
|
},
|
|
2183
2241
|
/**
|
|
2184
2242
|
* 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **대부분은 이 조회가 필요 없습니다.** 공고·결과 응답의 첨부 항목에 파일명과 내려받기 주소 (`fileUrl`/`fullUrl`, 만료 없는 안정 주소)가 이미 실려 있습니다. 이 엔드포인트는 그 주소를 들고 있지 않고 `fileKey` 만 아는 경우(예: 업로드 직후 크기 확인)를 위한 것입니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** fileKey 는 **영문 대소문자·숫자 32자**이고, 그 형태가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. 키를 16진수(hex)로 가정해 클라이언트에서 걸러내지 마세요 — 업로드된 파일의 키에는 hex 가 아닌 문자가 들어갑니다. **필수 스코프:** `files:read`
|
|
2185
2243
|
* @summary 파일 정보 조회
|
|
2186
2244
|
* @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(영문 대소문자·숫자 32자).
|
|
2245
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
2187
2246
|
* @param {*} [options] Override http request option.
|
|
2188
2247
|
* @throws {RequiredError}
|
|
2189
2248
|
*/
|
|
2190
|
-
getFileMeta(fileKey, options) {
|
|
2191
|
-
return localVarFp.getFileMeta(fileKey, options).then((request) => request(axios, basePath));
|
|
2249
|
+
getFileMeta(fileKey, ifNoneMatch, options) {
|
|
2250
|
+
return localVarFp.getFileMeta(fileKey, ifNoneMatch, options).then((request) => request(axios, basePath));
|
|
2192
2251
|
},
|
|
2193
2252
|
/**
|
|
2194
2253
|
* 등록한 계약의 계산서 발행 상태를 확인합니다. **언제 쓰나:** 씨마켓이 보내는 발행완료 통지를 놓쳤을 때의 **복구 경로**입니다. 평상시에는 통지를 받아 처리하고, 상태가 어긋난 것 같을 때 이 API 로 되읽으세요. **필수 스코프:** `contracts:read`
|
|
@@ -2204,40 +2263,44 @@ const PartnerApiApiFactory = function (configuration, basePath, axios) {
|
|
|
2204
2263
|
* 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
|
|
2205
2264
|
* @summary 공급사 카드결제 가능 여부
|
|
2206
2265
|
* @param {string} memberId 계약업체 회원 ID
|
|
2266
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
2207
2267
|
* @param {*} [options] Override http request option.
|
|
2208
2268
|
* @throws {RequiredError}
|
|
2209
2269
|
*/
|
|
2210
|
-
getSupplierCardPayableV2(memberId, options) {
|
|
2211
|
-
return localVarFp.getSupplierCardPayableV2(memberId, options).then((request) => request(axios, basePath));
|
|
2270
|
+
getSupplierCardPayableV2(memberId, ifNoneMatch, options) {
|
|
2271
|
+
return localVarFp.getSupplierCardPayableV2(memberId, ifNoneMatch, options).then((request) => request(axios, basePath));
|
|
2212
2272
|
},
|
|
2213
2273
|
/**
|
|
2214
2274
|
* 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
|
|
2215
2275
|
* @summary 웹훅 구독 단건 조회
|
|
2216
2276
|
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
2277
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
2217
2278
|
* @param {*} [options] Override http request option.
|
|
2218
2279
|
* @throws {RequiredError}
|
|
2219
2280
|
*/
|
|
2220
|
-
getWebhookEndpoint(endpointId, options) {
|
|
2221
|
-
return localVarFp.getWebhookEndpoint(endpointId, options).then((request) => request(axios, basePath));
|
|
2281
|
+
getWebhookEndpoint(endpointId, ifNoneMatch, options) {
|
|
2282
|
+
return localVarFp.getWebhookEndpoint(endpointId, ifNoneMatch, options).then((request) => request(axios, basePath));
|
|
2222
2283
|
},
|
|
2223
2284
|
/**
|
|
2224
2285
|
* ERP 연동 직전 회선·인증 endpoint 동작 확인용.
|
|
2225
2286
|
* @summary Partner API 헬스체크
|
|
2287
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
2226
2288
|
* @param {*} [options] Override http request option.
|
|
2227
2289
|
* @throws {RequiredError}
|
|
2228
2290
|
*/
|
|
2229
|
-
healthControllerCheck(options) {
|
|
2230
|
-
return localVarFp.healthControllerCheck(options).then((request) => request(axios, basePath));
|
|
2291
|
+
healthControllerCheck(ifNoneMatch, options) {
|
|
2292
|
+
return localVarFp.healthControllerCheck(ifNoneMatch, options).then((request) => request(axios, basePath));
|
|
2231
2293
|
},
|
|
2232
2294
|
/**
|
|
2233
2295
|
* 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고를 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에 실린 `ETag` 를 다음 요청의 `If-None-Match` 로 되보내면, 결과가 그대로일 때 `304` 를 본문 없이 받습니다. **식별자 전달:** `?bidRefs=A,B,C`(쉼표) 또는 `?bidRefs=A&bidRefs=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다. 요청한 건수와 받은 건수가 다를 수 있으므로, 보낸 값이 공고번호였다면 `bidId` 로, 구매번호였다면 `purchaseNo` 로 대조하세요. **공고 하나만 볼 때도** `bidRefs` 에 하나만 넣으면 됩니다. 응찰 결과 외에 납품 조건·품목·계약서류까지 필요하면 `GET /v2/bids/{bidRef}` 상세 조회를 쓰세요.
|
|
2234
2296
|
* @summary 공고 결과 조회
|
|
2235
2297
|
* @param {string} bidRefs 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. 쉼표로 구분하거나 `bidRefs` 를 반복해 전달합니다. 최대 100건입니다.
|
|
2298
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
2236
2299
|
* @param {*} [options] Override http request option.
|
|
2237
2300
|
* @throws {RequiredError}
|
|
2238
2301
|
*/
|
|
2239
|
-
listBidResults(bidRefs, options) {
|
|
2240
|
-
return localVarFp.listBidResults(bidRefs, options).then((request) => request(axios, basePath));
|
|
2302
|
+
listBidResults(bidRefs, ifNoneMatch, options) {
|
|
2303
|
+
return localVarFp.listBidResults(bidRefs, ifNoneMatch, options).then((request) => request(axios, basePath));
|
|
2241
2304
|
},
|
|
2242
2305
|
/**
|
|
2243
2306
|
* 발주처(API 키 바인딩)의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(쿼리에 buyerId 를 넣지 않습니다). **페이지네이션(cursor):** `limit`(1~100, 기본 100) + `cursor`(불투명 토큰). 응답 `meta.nextCursor` 를 다음 요청 `cursor` 로 전달하면 다음 페이지를 받습니다. `meta.hasMore` 가 `false`(= `nextCursor` 가 `null`)이면 마지막 페이지입니다. 목록 자체는 `data` 에 배열로 실립니다. **상태·낙찰방법:** 공개값(의미 문자열)으로 반환됩니다. 낙찰 여부는 상태가 아니라 낙찰 결과 조회의 `participants[].isWinner` 로 관측합니다(AWARDED 상태는 없습니다).
|
|
@@ -2247,11 +2310,12 @@ const PartnerApiApiFactory = function (configuration, basePath, axios) {
|
|
|
2247
2310
|
* @param {Array<string>} [bidRefs] 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. CSV 로 전달하며 최대 100건. 지정 시 그 공고만 조회합니다.
|
|
2248
2311
|
* @param {Array<BidPublicStatus>} [status] 공고 상태 필터(공개값) CSV. 지정 시 그중 하나라도 일치하는 공고만 조회합니다.
|
|
2249
2312
|
* @param {Array<ListBidsIncludeEnum>} [include] 행별 확장 부착 CSV. `results`=응찰 참여자, `products`=공고 등록 품목, `contacts`=발주 담당자 성명·연락처·이메일. 미지정이면 부착하지 않는다(응답이 가볍고 조회 비용도 들지 않는다).
|
|
2313
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
2250
2314
|
* @param {*} [options] Override http request option.
|
|
2251
2315
|
* @throws {RequiredError}
|
|
2252
2316
|
*/
|
|
2253
|
-
listBids(limit, cursor, bidRefs, status, include, options) {
|
|
2254
|
-
return localVarFp.listBids(limit, cursor, bidRefs, status, include, options).then((request) => request(axios, basePath));
|
|
2317
|
+
listBids(limit, cursor, bidRefs, status, include, ifNoneMatch, options) {
|
|
2318
|
+
return localVarFp.listBids(limit, cursor, bidRefs, status, include, ifNoneMatch, options).then((request) => request(axios, basePath));
|
|
2255
2319
|
},
|
|
2256
2320
|
/**
|
|
2257
2321
|
* 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidRef}/contract-documents` 가 v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
|
|
@@ -2271,20 +2335,22 @@ const PartnerApiApiFactory = function (configuration, basePath, axios) {
|
|
|
2271
2335
|
* @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
|
|
2272
2336
|
* @param {number} [limit] 페이지 크기(1~200, 기본 50).
|
|
2273
2337
|
* @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 `nextCursor` 를 그대로 전달합니다. 미지정 시 첫 페이지.
|
|
2338
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
2274
2339
|
* @param {*} [options] Override http request option.
|
|
2275
2340
|
* @throws {RequiredError}
|
|
2276
2341
|
*/
|
|
2277
|
-
listWebhookDeliveries(endpointId, status, limit, cursor, options) {
|
|
2278
|
-
return localVarFp.listWebhookDeliveries(endpointId, status, limit, cursor, options).then((request) => request(axios, basePath));
|
|
2342
|
+
listWebhookDeliveries(endpointId, status, limit, cursor, ifNoneMatch, options) {
|
|
2343
|
+
return localVarFp.listWebhookDeliveries(endpointId, status, limit, cursor, ifNoneMatch, options).then((request) => request(axios, basePath));
|
|
2279
2344
|
},
|
|
2280
2345
|
/**
|
|
2281
2346
|
* 이 API 키가 등록한 웹훅 구독을 모두 조회합니다. **호출 시점:** 연동 상태를 점검할 때, 또는 발송이 멈춘 이유(`status`·`consecutiveFailures`)를 확인할 때. 서명 시크릿은 여기에 실리지 않습니다. **필수 스코프:** `webhooks:read` ### 서명 검증 (필수) 서명은 **[Standard Webhooks](https://www.standardwebhooks.com)** 규약을 그대로 따릅니다. 직접 구현하지 말고 각 언어의 `standardwebhooks` 라이브러리에 등록 시 받은 시크릿 (`whsec_…`)을 그대로 넘기세요 — 그것이 이 형식을 쓰는 이유입니다. ```java // Java Webhook webhook = new Webhook(secret); // secret = \"whsec_…\" webhook.verify(rawBody, headers); // 실패하면 예외 ``` ```ts // Node / TypeScript import { Webhook } from \'standardwebhooks\'; new Webhook(secret).verify(rawBody, headers); ``` 라이브러리를 쓸 수 없다면 발송 요청에 실리는 헤더는 셋입니다. ``` webhook-id: evt_01J8Z7Q3K9 webhook-timestamp: 1774915200 webhook-signature: v1,K5oZfzN95Z9UVu1EsfQmfVNQhnkZ2pj9o9NDN/H/pI4= ``` 1. 시크릿에서 `whsec_` 접두어를 떼고 **base64 디코드**합니다 — 그 바이트가 HMAC 키입니다 (시크릿 문자열 자체가 아닙니다). 2. `\"${webhook-id}.${webhook-timestamp}.${본문 원문}\"` 을 만듭니다. **본문은 파싱 전 원문 바이트**여야 합니다 — JSON 을 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. HMAC-SHA256 을 계산해 **base64** 로 인코딩하고, `webhook-signature` 의 `v1,` 뒤 값과 비교합니다. 비교는 **상수 시간** 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `webhook-timestamp` 가 현재 시각에서 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). `webhook-signature` 는 공백으로 구분된 **여러 서명**을 실을 수 있는 형식입니다(키 회전용). 지금은 항상 하나지만, 검증기는 목록으로 읽고 **하나라도 맞으면 통과**하도록 짜세요. ### 중복 제거 `webhook-id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. 편의를 위해 `webhook-event-type` 헤더에 이벤트 타입(본문 `type` 과 같은 값)도 실립니다 — 본문을 파싱하기 전에 관심 없는 타입을 버릴 수 있습니다. 표준에는 없는 확장이라 검증 라이브러리는 이 헤더를 무시합니다. ### 응답과 재시도 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
|
|
2282
2347
|
* @summary 웹훅 구독 목록 조회
|
|
2348
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
2283
2349
|
* @param {*} [options] Override http request option.
|
|
2284
2350
|
* @throws {RequiredError}
|
|
2285
2351
|
*/
|
|
2286
|
-
listWebhookEndpoints(options) {
|
|
2287
|
-
return localVarFp.listWebhookEndpoints(options).then((request) => request(axios, basePath));
|
|
2352
|
+
listWebhookEndpoints(ifNoneMatch, options) {
|
|
2353
|
+
return localVarFp.listWebhookEndpoints(ifNoneMatch, options).then((request) => request(axios, basePath));
|
|
2288
2354
|
},
|
|
2289
2355
|
/**
|
|
2290
2356
|
* 공고를 유찰 상태로 전환합니다. **호출 시점:** 입찰 마감 후 유찰 사유가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 공고 상태가 유찰(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` 헤더 필수.
|
|
@@ -2551,42 +2617,46 @@ class PartnerApiApi extends base_1.BaseAPI {
|
|
|
2551
2617
|
* 공고의 모든 정보를 한 번에 조회합니다 — 기본 정보·납품/대금 조건·담당자·품목, 응찰 참여자(투찰가·순위·낙찰 여부), 계약서류, 검수 진행 상태, 라이프사이클 하위 상태. 스코프 `bids:read`. ERP 는 이 엔드포인트를 폴링해 async 처리(정산 마감 등)의 성사를 관측합니다. **낙찰 여부:** 이 응답의 `status` 가 아니라 `participants[].isWinner` 로 관측합니다. AWARDED 라는 공고 상태는 존재하지 않으며(낙찰 직후 공고는 CONTRACT_IN_PROGRESS 로 전이) `status === \'AWARDED\'` 를 기다리면 영원히 도달하지 않습니다. **여러 건을 한 번에:** 공고마다 이 조회를 반복하지 말고 `GET /v2/bid-results` 배치 조회를 쓰세요. **계약서류는 이 응답에 실립니다.** `contractDocuments[]` 가 서류별 `paperCode`·`paperName`· `fileKey`·`downloadUrl`·`uploadedAt`·`winnerSequence` 를 담습니다 — 계약서류만 따로 받는 엔드포인트는 두지 않습니다. `generationState` 는 **관측 전용**이며 `DEAD_LETTER` 가 보이면 자동 재시도가 소진된 상태라 API 로 되살릴 수 없습니다(운영에 문의하세요). **소유권:** 요청 파트너 키가 소유한 발주처 공고여야 합니다(타 발주처 공고 → 403).
|
|
2552
2618
|
* @summary 공고 상세 조회
|
|
2553
2619
|
* @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
|
|
2620
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
2554
2621
|
* @param {*} [options] Override http request option.
|
|
2555
2622
|
* @throws {RequiredError}
|
|
2556
2623
|
*/
|
|
2557
|
-
getBid(bidRef, options) {
|
|
2558
|
-
return (0, exports.PartnerApiApiFp)(this.configuration).getBid(bidRef, options).then((request) => request(this.axios, this.basePath));
|
|
2624
|
+
getBid(bidRef, ifNoneMatch, options) {
|
|
2625
|
+
return (0, exports.PartnerApiApiFp)(this.configuration).getBid(bidRef, ifNoneMatch, options).then((request) => request(this.axios, this.basePath));
|
|
2559
2626
|
}
|
|
2560
2627
|
/**
|
|
2561
2628
|
* 낙찰 공급사의 사업자·계좌·공급가액/부가세·응찰 품목내역을 조회합니다. 대금 지급에 필요한 정보입니다. 다른 조회에서 일부 참가자 정보가 가려지는 경우와 무관하게, 이 정산 정보는 읽기 전용으로 항상 그대로 제공됩니다. **필수 스코프:** `invoices:read` — 종전에는 `bids:read` 를 요구했습니다. 대금·계좌가 실리는 응답이라 공고 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
|
|
2562
2629
|
* @summary 정산 정보 조회
|
|
2563
2630
|
* @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
|
|
2631
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
2564
2632
|
* @param {*} [options] Override http request option.
|
|
2565
2633
|
* @throws {RequiredError}
|
|
2566
2634
|
*/
|
|
2567
|
-
getBidSettlement(bidRef, options) {
|
|
2568
|
-
return (0, exports.PartnerApiApiFp)(this.configuration).getBidSettlement(bidRef, options).then((request) => request(this.axios, this.basePath));
|
|
2635
|
+
getBidSettlement(bidRef, ifNoneMatch, options) {
|
|
2636
|
+
return (0, exports.PartnerApiApiFp)(this.configuration).getBidSettlement(bidRef, ifNoneMatch, options).then((request) => request(this.axios, this.basePath));
|
|
2569
2637
|
}
|
|
2570
2638
|
/**
|
|
2571
2639
|
* 낙찰 계약의 거래명세서(문서 헤더와 품목 라인)를 조회합니다. **필수 스코프:** `invoices:read` — 종전에는 `contracts:read` 를 요구했습니다. 금액이 실리는 정산 계열 문서라 계약서류 조회 권한과 분리했습니다. 이 엔드포인트를 쓰시던 키에는 `invoices:read` 를 추가로 부여받으셔야 합니다.
|
|
2572
2640
|
* @summary 거래명세서 조회
|
|
2573
2641
|
* @param {string} bidRef 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다.
|
|
2574
2642
|
* @param {number} [paperCode]
|
|
2643
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
2575
2644
|
* @param {*} [options] Override http request option.
|
|
2576
2645
|
* @throws {RequiredError}
|
|
2577
2646
|
*/
|
|
2578
|
-
getBidStatement(bidRef, paperCode, options) {
|
|
2579
|
-
return (0, exports.PartnerApiApiFp)(this.configuration).getBidStatement(bidRef, paperCode, options).then((request) => request(this.axios, this.basePath));
|
|
2647
|
+
getBidStatement(bidRef, paperCode, ifNoneMatch, options) {
|
|
2648
|
+
return (0, exports.PartnerApiApiFp)(this.configuration).getBidStatement(bidRef, paperCode, ifNoneMatch, options).then((request) => request(this.axios, this.basePath));
|
|
2580
2649
|
}
|
|
2581
2650
|
/**
|
|
2582
2651
|
* 파일명·크기·업로드 시각과 내려받기 주소를 함께 조회합니다. **내려받기:** 응답의 `downloadUrl` 로 파일을 받으세요. 요청 시점에 서명하므로 유효기간이 있습니다 — 저장해 두고 재사용하지 마시고 필요할 때 이 조회를 다시 호출하세요. **대부분은 이 조회가 필요 없습니다.** 공고·결과 응답의 첨부 항목에 파일명과 내려받기 주소 (`fileUrl`/`fullUrl`, 만료 없는 안정 주소)가 이미 실려 있습니다. 이 엔드포인트는 그 주소를 들고 있지 않고 `fileKey` 만 아는 경우(예: 업로드 직후 크기 확인)를 위한 것입니다. **MIME 타입은 싣지 않습니다.** 저장소가 그 값을 신뢰할 수 있게 보관하지 않아서, 지어내면 그것으로 분기한 쪽이 조용히 틀립니다. 확장자는 `fileName` 에 그대로 들어 있습니다. **형식이 틀린 키는 404 가 아니라 400 입니다.** fileKey 는 **영문 대소문자·숫자 32자**이고, 그 형태가 아닌 값은 애초에 키가 될 수 없으므로 그렇게 답합니다. 형식은 맞지만 없는 키는 404 입니다. 키를 16진수(hex)로 가정해 클라이언트에서 걸러내지 마세요 — 업로드된 파일의 키에는 hex 가 아닌 문자가 들어갑니다. **필수 스코프:** `files:read`
|
|
2583
2652
|
* @summary 파일 정보 조회
|
|
2584
2653
|
* @param {string} fileKey 파일 키 — 업로드 응답의 fileKey(영문 대소문자·숫자 32자).
|
|
2654
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
2585
2655
|
* @param {*} [options] Override http request option.
|
|
2586
2656
|
* @throws {RequiredError}
|
|
2587
2657
|
*/
|
|
2588
|
-
getFileMeta(fileKey, options) {
|
|
2589
|
-
return (0, exports.PartnerApiApiFp)(this.configuration).getFileMeta(fileKey, options).then((request) => request(this.axios, this.basePath));
|
|
2658
|
+
getFileMeta(fileKey, ifNoneMatch, options) {
|
|
2659
|
+
return (0, exports.PartnerApiApiFp)(this.configuration).getFileMeta(fileKey, ifNoneMatch, options).then((request) => request(this.axios, this.basePath));
|
|
2590
2660
|
}
|
|
2591
2661
|
/**
|
|
2592
2662
|
* 등록한 계약의 계산서 발행 상태를 확인합니다. **언제 쓰나:** 씨마켓이 보내는 발행완료 통지를 놓쳤을 때의 **복구 경로**입니다. 평상시에는 통지를 받아 처리하고, 상태가 어긋난 것 같을 때 이 API 로 되읽으세요. **필수 스코프:** `contracts:read`
|
|
@@ -2602,40 +2672,44 @@ class PartnerApiApi extends base_1.BaseAPI {
|
|
|
2602
2672
|
* 계약업체가 카드결제로 대금을 받을 수 있는 상태인지 확인합니다(씨마켓 회원 + 카드결제 가맹). **결제수단을 사용자에게 보여주기 전에** 호출하세요. 불가한 업체로 결제창을 만들면 만들어지기는 하지만 결제가 막혀, 사용자가 막다른 길에 갇힙니다. **응답은 가부와 사유뿐입니다.** 업체의 상호·사업자번호 같은 식별정보는 싣지 않습니다. **필수 스코프:** `payments:read` — 구 경로(`/v2/card-payment-requests/suppliers/{id}/card-payable`)는 조회인데도 `payments:write` 를 요구했습니다. 그쪽은 동결 표면이라 그대로 둡니다.
|
|
2603
2673
|
* @summary 공급사 카드결제 가능 여부
|
|
2604
2674
|
* @param {string} memberId 계약업체 회원 ID
|
|
2675
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
2605
2676
|
* @param {*} [options] Override http request option.
|
|
2606
2677
|
* @throws {RequiredError}
|
|
2607
2678
|
*/
|
|
2608
|
-
getSupplierCardPayableV2(memberId, options) {
|
|
2609
|
-
return (0, exports.PartnerApiApiFp)(this.configuration).getSupplierCardPayableV2(memberId, options).then((request) => request(this.axios, this.basePath));
|
|
2679
|
+
getSupplierCardPayableV2(memberId, ifNoneMatch, options) {
|
|
2680
|
+
return (0, exports.PartnerApiApiFp)(this.configuration).getSupplierCardPayableV2(memberId, ifNoneMatch, options).then((request) => request(this.axios, this.basePath));
|
|
2610
2681
|
}
|
|
2611
2682
|
/**
|
|
2612
2683
|
* 구독 1건의 현재 상태를 조회합니다. 서명 시크릿은 실리지 않습니다. **수정·삭제 전에 먼저 호출하세요.** 응답 헤더 `ETag` 를 `If-Match` 에 그대로 실어야 `PATCH`/`DELETE` 가 통과합니다. **`404`:** 없는 구독이거나 다른 파트너 키의 구독입니다 — `endpointId` 를 확인하세요. **필수 스코프:** `webhooks:read`
|
|
2613
2684
|
* @summary 웹훅 구독 단건 조회
|
|
2614
2685
|
* @param {string} endpointId 구독 식별자(등록 응답의 `endpointId`).
|
|
2686
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
2615
2687
|
* @param {*} [options] Override http request option.
|
|
2616
2688
|
* @throws {RequiredError}
|
|
2617
2689
|
*/
|
|
2618
|
-
getWebhookEndpoint(endpointId, options) {
|
|
2619
|
-
return (0, exports.PartnerApiApiFp)(this.configuration).getWebhookEndpoint(endpointId, options).then((request) => request(this.axios, this.basePath));
|
|
2690
|
+
getWebhookEndpoint(endpointId, ifNoneMatch, options) {
|
|
2691
|
+
return (0, exports.PartnerApiApiFp)(this.configuration).getWebhookEndpoint(endpointId, ifNoneMatch, options).then((request) => request(this.axios, this.basePath));
|
|
2620
2692
|
}
|
|
2621
2693
|
/**
|
|
2622
2694
|
* ERP 연동 직전 회선·인증 endpoint 동작 확인용.
|
|
2623
2695
|
* @summary Partner API 헬스체크
|
|
2696
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
2624
2697
|
* @param {*} [options] Override http request option.
|
|
2625
2698
|
* @throws {RequiredError}
|
|
2626
2699
|
*/
|
|
2627
|
-
healthControllerCheck(options) {
|
|
2628
|
-
return (0, exports.PartnerApiApiFp)(this.configuration).healthControllerCheck(options).then((request) => request(this.axios, this.basePath));
|
|
2700
|
+
healthControllerCheck(ifNoneMatch, options) {
|
|
2701
|
+
return (0, exports.PartnerApiApiFp)(this.configuration).healthControllerCheck(ifNoneMatch, options).then((request) => request(this.axios, this.basePath));
|
|
2629
2702
|
}
|
|
2630
2703
|
/**
|
|
2631
2704
|
* 여러 공고의 응찰 결과를 한 번에 조회합니다. 스코프 `bids:read`. **이 엔드포인트를 폴링에 쓰세요.** 공고를 하나씩 조회하는 대신 최대 100건을 한 왕복으로 받습니다. 응답에 실린 `ETag` 를 다음 요청의 `If-None-Match` 로 되보내면, 결과가 그대로일 때 `304` 를 본문 없이 받습니다. **식별자 전달:** `?bidRefs=A,B,C`(쉼표) 또는 `?bidRefs=A&bidRefs=B`(반복) 둘 다 됩니다. **없는 공고는 응답에서 빠집니다.** 존재하지 않거나 대행 범위 밖인 식별자는 오류가 아니라 누락으로 처리됩니다. 요청한 건수와 받은 건수가 다를 수 있으므로, 보낸 값이 공고번호였다면 `bidId` 로, 구매번호였다면 `purchaseNo` 로 대조하세요. **공고 하나만 볼 때도** `bidRefs` 에 하나만 넣으면 됩니다. 응찰 결과 외에 납품 조건·품목·계약서류까지 필요하면 `GET /v2/bids/{bidRef}` 상세 조회를 쓰세요.
|
|
2632
2705
|
* @summary 공고 결과 조회
|
|
2633
2706
|
* @param {string} bidRefs 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. 쉼표로 구분하거나 `bidRefs` 를 반복해 전달합니다. 최대 100건입니다.
|
|
2707
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
2634
2708
|
* @param {*} [options] Override http request option.
|
|
2635
2709
|
* @throws {RequiredError}
|
|
2636
2710
|
*/
|
|
2637
|
-
listBidResults(bidRefs, options) {
|
|
2638
|
-
return (0, exports.PartnerApiApiFp)(this.configuration).listBidResults(bidRefs, options).then((request) => request(this.axios, this.basePath));
|
|
2711
|
+
listBidResults(bidRefs, ifNoneMatch, options) {
|
|
2712
|
+
return (0, exports.PartnerApiApiFp)(this.configuration).listBidResults(bidRefs, ifNoneMatch, options).then((request) => request(this.axios, this.basePath));
|
|
2639
2713
|
}
|
|
2640
2714
|
/**
|
|
2641
2715
|
* 발주처(API 키 바인딩)의 공고를 게시일 최신순으로 조회합니다. 스코프 `bids:read`. **발주처:** API 키에 바인딩된 발주처로 자동 스코프됩니다(쿼리에 buyerId 를 넣지 않습니다). **페이지네이션(cursor):** `limit`(1~100, 기본 100) + `cursor`(불투명 토큰). 응답 `meta.nextCursor` 를 다음 요청 `cursor` 로 전달하면 다음 페이지를 받습니다. `meta.hasMore` 가 `false`(= `nextCursor` 가 `null`)이면 마지막 페이지입니다. 목록 자체는 `data` 에 배열로 실립니다. **상태·낙찰방법:** 공개값(의미 문자열)으로 반환됩니다. 낙찰 여부는 상태가 아니라 낙찰 결과 조회의 `participants[].isWinner` 로 관측합니다(AWARDED 상태는 없습니다).
|
|
@@ -2645,11 +2719,12 @@ class PartnerApiApi extends base_1.BaseAPI {
|
|
|
2645
2719
|
* @param {Array<string>} [bidRefs] 조회할 공고 식별자 목록. 발주기관 자체 구매번호(권장) 또는 c-market 공고번호. 구매번호는 키에 바인딩된 발주처 범위에서 최신 라운드 공고로 해소됩니다. 두 형식을 섞어 보내도 됩니다. CSV 로 전달하며 최대 100건. 지정 시 그 공고만 조회합니다.
|
|
2646
2720
|
* @param {Array<BidPublicStatus>} [status] 공고 상태 필터(공개값) CSV. 지정 시 그중 하나라도 일치하는 공고만 조회합니다.
|
|
2647
2721
|
* @param {Array<ListBidsIncludeEnum>} [include] 행별 확장 부착 CSV. `results`=응찰 참여자, `products`=공고 등록 품목, `contacts`=발주 담당자 성명·연락처·이메일. 미지정이면 부착하지 않는다(응답이 가볍고 조회 비용도 들지 않는다).
|
|
2722
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
2648
2723
|
* @param {*} [options] Override http request option.
|
|
2649
2724
|
* @throws {RequiredError}
|
|
2650
2725
|
*/
|
|
2651
|
-
listBids(limit, cursor, bidRefs, status, include, options) {
|
|
2652
|
-
return (0, exports.PartnerApiApiFp)(this.configuration).listBids(limit, cursor, bidRefs, status, include, options).then((request) => request(this.axios, this.basePath));
|
|
2726
|
+
listBids(limit, cursor, bidRefs, status, include, ifNoneMatch, options) {
|
|
2727
|
+
return (0, exports.PartnerApiApiFp)(this.configuration).listBids(limit, cursor, bidRefs, status, include, ifNoneMatch, options).then((request) => request(this.axios, this.basePath));
|
|
2653
2728
|
}
|
|
2654
2729
|
/**
|
|
2655
2730
|
* 발주기관 회원과 거래유형으로 **그 거래에 필요한 계약서류 목록**을 조회합니다. **용도:** 공고(입찰)를 거치지 않는 거래 — 예: 채팅 기반 견적 — 에서 계약 전에 \"어떤 서류가 필요한가\"를 보여줄 때. **판정 기준:** 발주기관이 속한 그룹에 배정된 계약서류 중 그 거래유형에 적용되는 것 전부입니다. 운영자가 어드민에서 배정을 바꾸면 별도 배포 없이 즉시 반영됩니다. **응답 해석:** - `isDefault=true` — 운영자가 기본값(★)으로 켜 둔 서류입니다. 선택 화면에서 **미리 체크된 상태로** 보여주세요. 목록이 이 값으로 걸러져 있지는 않습니다. - `autoGenerated=true` — c-market 이 데이터를 채워 PDF 로 만들어 주는 서류입니다. 생성 API 의 `paperCodes` 에 넣을 수 있습니다. - `autoGenerated=false` — 이 API 로는 만들 수 없는 서류입니다(거래명세서처럼 세금계산서 발행 같은 별도 시점이 필요한 서류). 목록에서 감추지 말고 사용자가 직접 첨부하도록 안내하세요. **조회 가능한 회원 범위:** 이 API 키에 설정된 대행 범위(소속 그룹 전원 또는 지정 회원 목록) 안의 회원만 조회할 수 있습니다. 범위 밖이면 403 입니다. 대행 범위는 키 설정이며 스코프와는 별개 축입니다. **필수 스코프:** `contracts:read` --- **응답 형태가 동결된 표면입니다.** 이미 연동 중인 시스템이 있어 응답 필드를 추가하거나 이름을 바꾸지 않습니다. 다른 `/v2` 엔드포인트와 달리 `{data,meta}` 봉투를 씌우지 않으므로 응답 본문이 곧 위 스키마입니다. 지금 연동하셔도 계속 동작합니다 — 다만 이 경로에 새 기능이 추가되지는 않습니다. **대체 계획:** 공고 기반 거래의 계약서류는 `GET /v2/bids/{bidRef}/contract-documents` 가 v2 응답 규약으로 제공합니다. 공고 없는 거래(이 엔드포인트)의 신 표면은 아직 없습니다 — 만들 때 이 설명에 새 경로와 이관 기간을 함께 적습니다.
|
|
@@ -2669,20 +2744,22 @@ class PartnerApiApi extends base_1.BaseAPI {
|
|
|
2669
2744
|
* @param {PartnerWebhookDeliveryStatus} [status] 전송 상태 필터. 미지정이면 전부.
|
|
2670
2745
|
* @param {number} [limit] 페이지 크기(1~200, 기본 50).
|
|
2671
2746
|
* @param {string} [cursor] 다음 페이지 커서(불투명 토큰). 직전 응답의 `nextCursor` 를 그대로 전달합니다. 미지정 시 첫 페이지.
|
|
2747
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
2672
2748
|
* @param {*} [options] Override http request option.
|
|
2673
2749
|
* @throws {RequiredError}
|
|
2674
2750
|
*/
|
|
2675
|
-
listWebhookDeliveries(endpointId, status, limit, cursor, options) {
|
|
2676
|
-
return (0, exports.PartnerApiApiFp)(this.configuration).listWebhookDeliveries(endpointId, status, limit, cursor, options).then((request) => request(this.axios, this.basePath));
|
|
2751
|
+
listWebhookDeliveries(endpointId, status, limit, cursor, ifNoneMatch, options) {
|
|
2752
|
+
return (0, exports.PartnerApiApiFp)(this.configuration).listWebhookDeliveries(endpointId, status, limit, cursor, ifNoneMatch, options).then((request) => request(this.axios, this.basePath));
|
|
2677
2753
|
}
|
|
2678
2754
|
/**
|
|
2679
2755
|
* 이 API 키가 등록한 웹훅 구독을 모두 조회합니다. **호출 시점:** 연동 상태를 점검할 때, 또는 발송이 멈춘 이유(`status`·`consecutiveFailures`)를 확인할 때. 서명 시크릿은 여기에 실리지 않습니다. **필수 스코프:** `webhooks:read` ### 서명 검증 (필수) 서명은 **[Standard Webhooks](https://www.standardwebhooks.com)** 규약을 그대로 따릅니다. 직접 구현하지 말고 각 언어의 `standardwebhooks` 라이브러리에 등록 시 받은 시크릿 (`whsec_…`)을 그대로 넘기세요 — 그것이 이 형식을 쓰는 이유입니다. ```java // Java Webhook webhook = new Webhook(secret); // secret = \"whsec_…\" webhook.verify(rawBody, headers); // 실패하면 예외 ``` ```ts // Node / TypeScript import { Webhook } from \'standardwebhooks\'; new Webhook(secret).verify(rawBody, headers); ``` 라이브러리를 쓸 수 없다면 발송 요청에 실리는 헤더는 셋입니다. ``` webhook-id: evt_01J8Z7Q3K9 webhook-timestamp: 1774915200 webhook-signature: v1,K5oZfzN95Z9UVu1EsfQmfVNQhnkZ2pj9o9NDN/H/pI4= ``` 1. 시크릿에서 `whsec_` 접두어를 떼고 **base64 디코드**합니다 — 그 바이트가 HMAC 키입니다 (시크릿 문자열 자체가 아닙니다). 2. `\"${webhook-id}.${webhook-timestamp}.${본문 원문}\"` 을 만듭니다. **본문은 파싱 전 원문 바이트**여야 합니다 — JSON 을 다시 직렬화하면 공백·키 순서가 달라져 서명이 맞지 않습니다. 3. HMAC-SHA256 을 계산해 **base64** 로 인코딩하고, `webhook-signature` 의 `v1,` 뒤 값과 비교합니다. 비교는 **상수 시간** 함수를 쓰세요(Node `crypto.timingSafeEqual`, Java `MessageDigest.isEqual`). 4. `webhook-timestamp` 가 현재 시각에서 **5분** 이상 지났으면 거절하세요(재전송 공격 방어). `webhook-signature` 는 공백으로 구분된 **여러 서명**을 실을 수 있는 형식입니다(키 회전용). 지금은 항상 하나지만, 검증기는 목록으로 읽고 **하나라도 맞으면 통과**하도록 짜세요. ### 중복 제거 `webhook-id` 헤더가 이벤트 식별자입니다. **재시도에도 같은 값이 옵니다** — 이미 처리한 값이면 무시하세요. 같은 이벤트를 두 번 받는 것은 정상 동작이며, 중복 제거는 수신측 책임입니다. 편의를 위해 `webhook-event-type` 헤더에 이벤트 타입(본문 `type` 과 같은 값)도 실립니다 — 본문을 파싱하기 전에 관심 없는 타입을 버릴 수 있습니다. 표준에는 없는 확장이라 검증 라이브러리는 이 헤더를 무시합니다. ### 응답과 재시도 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` 가 발송 시도 이력(본문·응답 상태·다음 재시도 시각)을 돌려줍니다. 수신측 장애 구간을 메울 때 이 엔드포인트를 폴링 대체 경로로 쓰세요.
|
|
2680
2756
|
* @summary 웹훅 구독 목록 조회
|
|
2757
|
+
* @param {string} [ifNoneMatch] 직전 응답의 `ETag` 값. 내용이 그대로면 본문 없이 `304` 로 끝납니다 — 폴링에서 전송량과 파싱 비용이 사라집니다.
|
|
2681
2758
|
* @param {*} [options] Override http request option.
|
|
2682
2759
|
* @throws {RequiredError}
|
|
2683
2760
|
*/
|
|
2684
|
-
listWebhookEndpoints(options) {
|
|
2685
|
-
return (0, exports.PartnerApiApiFp)(this.configuration).listWebhookEndpoints(options).then((request) => request(this.axios, this.basePath));
|
|
2761
|
+
listWebhookEndpoints(ifNoneMatch, options) {
|
|
2762
|
+
return (0, exports.PartnerApiApiFp)(this.configuration).listWebhookEndpoints(ifNoneMatch, options).then((request) => request(this.axios, this.basePath));
|
|
2686
2763
|
}
|
|
2687
2764
|
/**
|
|
2688
2765
|
* 공고를 유찰 상태로 전환합니다. **호출 시점:** 입찰 마감 후 유찰 사유가 확정되었을 때. 공고가 입찰완료(마감) 상태에서 호출합니다. **부수효과:** - 공고 상태가 유찰(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` 헤더 필수.
|