The protocol is made by segments; every segment identifies a particular action you want to perform. They are built by two messages: one is the request and one is the response. Every message is made of two portions: the first one is the header and is the same every time, the second one stores the messages you want to send and is variable. The portions are stored in an envelope. The tag envelope stores the whole message and the tag header stores the header, as you can notice in the example below:

The envelope store the message, the tag envelope store the header. The header like below:

<?xml version="1.0" encoding="UTF-8"?>
<envelope>
    <header>
        <actor>test</actor>
        <user>test</user>
        <password>test</password>
        <version>0.1b</version>
        <timestamp>20210424170000</timestamp>
        <transaction>12345</transaction>
    </header>
    <!-- REQUEST MESSAGE  -->
</envelope>

The header is composed by six fields: system client identifier (actor), system user identifier (user), password, protocol version (version), timestamp and a field (transaction) that identifies the current transaction. In the response message the header doesn’t contain actor, user and password.

In the response message the header non contain the actor, the user and password fields

<?xml version="1.0" encoding="UTF-8"?>
<envelope>
    <header>
        <version>0.1b</version>
        <timestamp>20210424170000</timestamp>
        <transaction>12345</transaction>
    </header>
    <!-- RESPONSE MESSAGE -->
</envelope>