#1 2025-11-25 09:48:59

MKi
Member
Registered: 2025-11-25
Posts: 1

application/xml in OpenApi

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?

Offline

#2 2025-11-25 12:31:16

ab
Administrator
From: France
Registered: 2010-06-21
Posts: 15,305
Website

Re: application/xml in OpenApi

You may try it, if the Payload parameter is in XML.

If it works, then create an issue on github, linking to this discussion, so that we would properly generate a Payload parameter for such application/xml input.

Offline

Board footer

Powered by FluxBB