You are not logged in.
Pages: 1
Hello,
as I saw in the topic https://synopse.info/forum/viewtopic.php?id=7026
multipart/form-data is not supported yet.
I've looked in the source and noticed, that only application/json is supported - is it right?
Now, my problem: I am writing client service for this OpenApi specification: https://ksef-test.mf.gov.pl/docs/v2/openapi.json
There is (only one!) endpoint that needs requestBody as application/xml:
"/api/v2/auth/xades-signature": {
"post": {
"tags": [
"Uzyskiwanie dostępu"
],
"summary": "Uwierzytelnienie z wykorzystaniem podpisu XAdES",
"description": "Rozpoczyna operację uwierzytelniania za pomocą dokumentu XML podpisanego podpisem elektronicznym XAdES.\n\n> Więcej informacji:\n> - [Przygotowanie dokumentu XML](https://github.com/CIRFMF/ksef-docs/blob/main/uwierzytelnianie.md#1-przygotowanie-dokumentu-xml-authtokenrequest)\n> - [Podpis dokumentu XML](https://github.com/CIRFMF/ksef-docs/blob/main/uwierzytelnianie.md#2-podpisanie-dokumentu-xades)\n> - [Schemat XSD](/docs/v2/schemas/authv2.xsd)",
"parameters": [
{
"name": "verifyCertificateChain",
"in": "query",
"description": "Wymuszenie weryfikacji zaufania łańcucha certyfikatu wraz ze sprawdzeniem statusu certyfikatu (OCSP/CRL) na środowiskach które umożliwiają wykorzystanie samodzielnie wygenerowanych certyfikatów.",
"schema": {
"type": "boolean"
}
}
],
"requestBody": {
"content": {
"application/xml": {
"schema": {
"type": "string"
},
"example": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<AuthTokenRequest xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://ksef.mf.gov.pl/auth/token/2.0\">\n <Challenge>20250625-CR-20F5EE4000-DA48AE4124-46</Challenge>\n <ContextIdentifier>\n <Nip>5265877635</Nip>\n </ContextIdentifier>\n <SubjectIdentifierType>certificateSubject</SubjectIdentifierType>\n <ds:Signature xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\" Id=\"Signature-9707709\">\n <!-- Tu powinien być podpis XAdES -->\n </ds:Signature>\n</AuthTokenRequest>"
}
},
"required": true
},
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AuthenticationInitResponse"
},
"example": {
"referenceNumber": "20250514-AU-2DFC46C000-3AC6D5877F-D4",
"authenticationToken": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbi10eXBlIjoiT3BlcmF0aW9uVG9rZW4iLCJvcGVyYXRpb24tcmVmZXJlbmNlLW51bWJlciI6IjIwMjUwNTE0LUFVLTJERkM0NkMwMDAtM0FDNkQ1ODc3Ri1ENCIsImV4cCI6MTc0NzIzMTcxOSwiaWF0IjoxNzQ3MjI5MDE5LCJpc3MiOiJrc2VmLWFwaS10aSIsImF1ZCI6ImtzZWYtYXBpLXRpIn0.rtRcV2mR9SiuJwpQaQHsbAXvvVsdNKG4DJsdiJctIeU",
"validUntil": "2025-07-11T12:23:56.0154302+00:00"
}
}
}
}
},
"400": {
"description": " | ExceptionCode | ExceptionDescription | Details | \n|---------------------|---------------------------------------------------------------------|-------------------------------------------------------------|\n| 21001 | Nieczytelna treść. | |\n| 21111 | Nieprawidłowe wyzwanie autoryzacyjne. | |\n| 21115 | Nieprawidłowy certyfikat. | |\n| 21117 | Nieprawidłowy identyfikator podmiotu dla wskazanego typu kontekstu. | |\n| 21217 | Nieprawidłowe kodowanie znaków. | |\n| 21401 | Dokument nie jest zgodny ze schemą (xsd). | {treść błędu walidacji} |\n| 21406 | Konflikt podpisu i typu uwierzytelnienia. | |\n| 9101 | Nieprawidłowy dokument. | |\n| 9102 | Brak podpisu. | |\n| 9103 | Przekroczona liczba dozwolonych podpisów. | |\n| 9105 | Nieprawidłowy podpis. | |\n| 21405 | Błąd walidacji danych wejściowych. | {treść błędu z walidatora} |",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ExceptionResponse"
}
}
},
"x-summary": "Bad Request"
}
}
}
},Is there simple workaround of this problem?
I was thinking of manually changing function body in client.pas file from
function TKsefClient.PostApiV2AuthXadesSignature(
VerifyCertificateChain: boolean): TAuthenticationInitResponse;
begin
fClient.Request('POST', '/api/v2/auth/xades-signature', [], [
'verifyCertificateChain', VerifyCertificateChain], [],
result, TypeInfo(TAuthenticationInitResponse), OnError1);
end;to something like this
function TKsefClient.PostApiV2AuthXadesSignature(
const Payload: RawUtf8; VerifyCertificateChain: boolean): TAuthenticationInitResponse;
begin
fClient.Request(
'POST',
'/api/v2/auth/xades-signature',
[],
['verifyCertificateChain', VerifyCertificateChain],
[],
Payload,
result,
TypeInfo(RawUtf8),
TypeInfo(TAuthenticationInitResponse),
OnError1);
end;Is it enough, or it is not so simple?
Pages: 1