Proszę czekać, ładujemy treść.
Pierwsze kroki z Public API (/api/v1/*) — token, submissions, webhooki
Cel: uruchomić end-to-end flow:
X-API-TokenPOST /api/v1/submissionsksef.outgoing.queuedWygeneruj token w panelu KSeFCore i zapisz go jako zmienną środowiskową:
export KSEFCORE_API_TOKEN="..."
export KSEFCORE_BASE_URL="https://<twoj-host-ksefcore>"
Webhook to HTTP POST na Twój URL.
Minimalny handler powinien:
2xx szybkoX-Event-Idcurl -sS "$KSEFCORE_BASE_URL/api/v1/webhooks" \
-H "X-API-Token: $KSEFCORE_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "erp-webhook",
"url": "https://<twoj-host>/ksefcore/webhooks",
"events": [
"ksef.outgoing.queued",
"ksef.outgoing.sent",
"ksef.outgoing.accepted",
"ksef.outgoing.rejected",
"ksef.outgoing.failed"
]
}'
Z odpowiedzi zapisz secret — jest zwracany tylko raz.
curl -sS "$KSEFCORE_BASE_URL/api/v1/submissions" \
-H "X-API-Token: $KSEFCORE_API_TOKEN" \
-H "Idempotency-Key: demo-001" \
-F "xml=@./invoice.xml" \
-F "context_type=nip" \
-F "context_value=<NIP>" \
-F "mode=online"
Odpowiedź zawiera m.in. submission_id.
Czekaj na jeden z finalnych eventów:
ksef.outgoing.acceptedksef.outgoing.rejectedksef.outgoing.failedcurl -sS "$KSEFCORE_BASE_URL/api/v1/submissions/<submission_id>" \
-H "X-API-Token: $KSEFCORE_API_TOKEN"
Zakończ polling gdy status jest finalny.
403: brak scope albo token nie jest powiązany z klientem.409: konflikt wersji / duplikat (patrz: API → Submissions → Idempotency).GET /api/v1/webhooks/deliveries.