ISDS.H.LIBDATOVK(3)
๐ธ NAME ๐ธ
Okay bestie, this is the manual page for ISDS.H.LIBDATOVK(3) โ the isds.h.libdatovka API definition for libdatovka, from the Manual for Libdatovka. ๐ Itโs giving โheader file that declares the interface for the libdatovka library,โ and weโre gonna get into every last constant and type. No cap.
โจ SYNOPSIS โจ
#include <libdatovka/isds.h>
๐ DESCRIPTION ๐
This header file declares interface for the libdatovka library. Thatโs the whole assignment, bestie โ it declares the interface. โจ
๐ CONSTANTS ๐
๐บ๏ธ Service locators
Addresses of known ISDS servers. These are the base URLs, and yes, there are production ones and testing ones. ๐
๐ญ Base URLs of production ISDS instance
isds_locatorโextern const char isds_locator[];โ without client certificate authentication.isds_cert_locatorโextern const char isds_cert_locator[];โ with client certificate authentication.isds_vodz_locatorโextern const char isds_vodz_locator[];โ high-volume data message locator without client certificate authentication.isds_vodz_cert_locatorโextern const char isds_vodz_cert_locator[];โ high-volume data message locator with client certificate authentication.isds_otp_locatorโextern const char isds_otp_locator[];โ with OTP authentication.isds_mep_locatorโextern const char isds_mep_locator[];โ with MEP authentication.
๐งช Base URLs of testing ISDS instance
isds_testing_locatorโextern const char isds_testing_locator[];โ without client certificate authentication.isds_cert_testing_locatorโextern const char isds_cert_testing_locator[];โ with client certificate authentication.isds_vodz_testing_locatorโextern const char isds_vodz_testing_locator[];โ high-volume data message locator without client certificate authentication.isds_vodz_cert_testing_locatorโextern const char isds_vodz_cert_testing_locator[];โ high-volume data message locator with client certificate authentication.isds_otp_testing_locatorโextern const char isds_otp_testing_locator[];โ with OTP authentication.isds_mep_testing_locatorโextern const char isds_mep_testing_locator[];โ with MEP authentication.
๐ฆ DATA TYPES ๐ฆ
๐งธ struct isds_ctx
struct isds_ctx;
Context for specific ISDS box.
๐ฅ isds_error
typedef enum isds_error;
Error code. Known values:
IE_SUCCESSโ no error. Numeric value0.IE_ERRORโ unspecified error.IE_NOTSUPโ operation is not supported.IE_INVALโ invalid value.IE_INVALID_CONTEXTโ the context is not valid.IE_NOT_LOGGED_INโ the context has not been logged in.IE_CONNECTION_CLOSEDโ network connection has been closed.IE_TIMED_OUTโ time limit for network operation exceeded.IE_NONEXISTโ requested entity doesnโt exist.IE_NOMEMโ not enough memory.IE_NETWORKโ network error.IE_HTTPโ error on HTTP level.IE_SOAPโ error on SOAP level.IE_XMLโ error on XML level.IE_ISDSโ problem with ISDS server.IE_ENUMโ invalid enumeration value.IE_DATEโ invalid date value.IE_TOO_BIGโ value is too big.IE_TOO_SMALLโ value is too small.IE_NOTUNIQโ value is not unique.IE_NOTEQUALโ compared values are not equal.IE_PARTIAL_SUCCESSโ operation on a vector succeeded for some values but failed for others.IE_ABORTEDโ operation was aborted by application request.IE_SECURITYโ security requirements were not satisfied.
๐ isds_log_level
typedef enum isds_log_level;
Log level. Known values:
ILL_NONEโ0ILL_CRITโ10ILL_ERRโ20ILL_WARNINGโ30ILL_INFOโ40ILL_DEBUGโ50ILL_ALLโ100
๐๏ธ isds_log_facility
typedef enum isds_log_facility;
Log facility. Known values:
ILF_NONEโ0x0ILF_HTTPโ0x1ILF_SOAPโ0x2ILF_ISDSโ0x4ILF_FILEโ0x8ILF_SECโ0x10ILF_XMLโ0x20ILF_ALLโ0xFF
โ๏ธ isds_option
typedef enum isds_option;
libdatovka option identifiers. Known values:
IOPT_TLS_VERIFY_SERVERโ option type is_Bool. Whether to verify server identity. Default value istrue.IOPT_TLS_CA_FILEโ option type ischar *. Option value is a file name with certificate authority certificates. Default value depends on used cryptographic library.IOPT_TLS_CA_DIRECTORYโ option type ischar *. Option value is a directory with certificate authority certificates. Default value depends on used cryptographic library.IOPT_TLS_CRL_FILEโ option type ischar *. Option value is a file name with certificate revocation list in PEM format. Default value depends on used cryptographic library.IOPT_NORMALIZE_MIME_TYPEโ option type is_Bool. Whether to normalize MIME type values. Default value isfalse.
๐งจ isds_tls_option
typedef enum isds_tls_option;
โ ๏ธ Warning: This type is deprecated.
TLS libdatovka option identifiers. Known values:
ITLS_VERIFY_SERVERโ option type is_Bool. Whether to verify server identity.ITLS_CA_FILEโ option type ischar *. Option value is a file name with certificate authority certificates.ITLS_CA_DIRECTORYโ option type ischar *. Option value is a directory name with certificate authority certificates.ITLS_CRL_FILEโ option type ischar *. Option value is a file name with certificate revocation list in PEM format.
๐ isds_pki_format
typedef enum isds_pki_format;
Cryptographic material encoding. Known values:
PKI_FORMAT_PEMโ PEM format.PKI_FORMAT_DERโ DER format.PKI_FORMAT_ENGโ the material is stored in a cryptographic engine.
๐ชช struct isds_pki_credentials
struct isds_pki_credentials;
This structure holds public key infrastructure cryptographic material to authenticate a client. Members are:
char *engine;โ string identifier of cryptographic engine to use (where key is stored). UseNULLfor no engine.isds_pki_format certificate_format;โ certificate format.char *certificate;โ a path to client certificate, or a certificate nickname in case of NSS as curl back-end, or key slot identifier inside cryptographic engine. Some cryptographic engines can pair certificate with key automatically (NULLvalue).isds_pki_format key_format;โ private key format.char *key;โ a path to client private key, or key identifier in case an engine is used.char *passphrase;โ zero terminated string with password for decrypting private key, or engine PIN. UseNULLfor no pass-phrase or to let the engine to ask for it.
๐ isds_otp_method
typedef enum isds_otp_method;
One-time password authentication method. Known values:
OTP_HMACโ HMAC-based OTP method.OTP_TIMEโ time-based OTP method.
๐งฟ isds_otp_resolution
typedef enum isds_otp_resolution;
One-time password authentication resolution. Known values:
OTP_RESOLUTION_SUCCESSโ authentication succeeded.OTP_RESOLUTION_UNKNOWNโ status is unknown.OTP_RESOLUTION_BAD_AUTHENTICATIONโ bad log-in. You can retry to log in.OTP_RESOLUTION_ACCESS_BLOCKEDโ access blocked for 60 minutes. (Because a brute force attack was detected.)OTP_RESOLUTION_PASSWORD_EXPIREDโ password has expired.
๐ Note: Itโs not clear which password expired: OTP or regular password?
OTP_RESOLUTION_TOO_FASTโ OTP cannot be sent repeatedly at this rate. (Minimal delay depends on TOTP window setting.)OTP_RESOLUTION_UNAUTHORIZEDโ user name is not allowed to access requested URI.OTP_RESOLUTION_TOTP_SENTโ OTP has been generated and sent by the ISDS to the user.OTP_RESOLUTION_TOTP_NOT_SENTโ OTP could not been sent by the ISDS. Retry later.
๐ฑ struct isds_otp
struct isds_otp;
This structure holds one-time password when authenticating a client and resolution of the authentication.
Input members are:
isds_otp_method method;โ select OTP method to use.char *otp_code;โ one-time password to use. PassNULL, if you do not know it yet (e.g. in case of first phase of time-based OTP authentication to request new code from ISDS.)
Output members are:
isds_otp_resolution resolution;โ fine-grade resolution of this OTP authentication attempt.
๐ฆ isds_DbType
typedef enum isds_DbType;
Box type. It classifies box owner by legal status. Known values:
DBTYPE_OVM_MAINโ this is a special value forisds_find_box_by_fulltext. Itโs not accepted by any other services.DBTYPE_SYSTEMโ this is a special value for sender of messages sent by the ISDS. You can find it only in incoming messages. Itโs not accepted by any other services.DBTYPE_OVMโ standard government (state or municipality or similar) office.DBTYPE_OVM_NOTARโ notary (stopped being used, replaced withOVM_PFO).DBTYPE_OVM_EXEKUTโ executor (stopped being used, replaced withOVM_PFO).DBTYPE_OVM_REQโ subsidiary office with OVM (governing) status assigned on request (section 6 and 7 of the act).DBTYPE_OVM_FOโ natural person with OVM status (without identification number).DBTYPE_OVM_PFOโ natural person in business with OVM status (e.g. notary or executor).DBTYPE_OVM_POโ juridical person with OVM status (arisen from previously existing PO or PO_REQ).DBTYPE_POโ standard commercial organization (listed in trade registry).DBTYPE_PO_ZAKโ other organization founded by an act (stopped being used, replaced with PO).DBTYPE_PO_REQโ an organization with a box assigned on its request.DBTYPE_PFOโ person in business.DBTYPE_PFO_ADVOKโ lawyer.DBTYPE_PFO_DANPORโ tax consultant.DBTYPE_PFO_INSSPRโ administrator of insolvency (stopped being used, replaced withOVM_PFO).DBTYPE_PFO_AUDITORโ statutory auditor.DBTYPE_PFO_ZNALECโ expert witness.DBTYPE_PFO_TLUMOCNIKโ sworn translator.DBTYPE_PFO_ARCHโ architect.DBTYPE_PFO_AIATโ authorised engineer / technician.DBTYPE_PFO_AZIโ authorised geodetics engineer.DBTYPE_PFO_REQโ person in business on its request.DBTYPE_FOโ standard person.
Some interfaces refer to gross box type. These are the shortest names of the identifiers. So like, for example, DBTYPE_OVM is a gross type for DB_OVM_NOTAR or DBTYPE_OVM. But not for DBTYPE_PO. iykyk ๐
isds_DbState
typedef enum isds_DbState;
Box status from the point of view of accessibility. The known values are:
DBSTATE_ACCESSIBLEโ the box is accessible, we're so back ๐DBSTATE_TEMP_INACCESSIBLEโ the box is temporarily inaccessible (at the request of the user).DBSTATE_NOT_YET_ACCESSIBLEโ the box has not yet been activated. it's giving "not born yet" energy.DBSTATE_PERM_INACCESSIBLEโ the box is permanently inaccessible. rip ๐ญDBSTATE_REMOVEDโ the box has been removed. gone gone.DBSTATE_TEMP_INACCESSIBLE_LAWโ the box is temporarily inaccessible (because of the reasons enumerated in the law). the law said no ๐
isds_privileges
typedef enum isds_privileges;
Distinct user permissions from the point of view of ISDS. Instances can be bitmaps of any of these distinct values. The distinct known values are:
PRIVIL_READ_NON_PERSONALโ the user can download and read messages withdmPersonalDeliveryequal tofalse.PRIVIL_READ_ALLโ the user can download and read messages withdmPersonalDeliveryequal totrue.PRIVIL_CREATE_DMโ the user can create and send messages, and the user can download outgoing (sent) messages.PRIVIL_VIEW_INFOโ the user can list messages and read data about a message post and delivery.PRIVIL_SEARCH_DBโ the user can search for boxes. (the original page says "can can", we love a little typo moment ๐ซถ)PRIVIL_OWNER_ADMโ the user can administer his box (to add and remove permitted users and to modify theirs permissions.)PRIVIL_READ_VAULTโ the user can read messages stored in the long term storage.
Note โ this permission is not used since 2012-05. like, retired. she's resting.
PRIVIL_ERASE_VAULTโ the user can delete messages from the long term storage.
enum isds_message_status
typedef enum isds_message_status isds_message_status;
Message status. The known values are:
MESSAGESTATE_SENTโ the message has been put into ISDS.MESSAGESTATE_STAMPEDโ the message was stamped by a time stamp authority. official โจMESSAGESTATE_INFECTEDโ the message included viruses. Infected documents have been removed from the message. ๐๐๐MESSAGESTATE_DELIVEREDโ the message was delivered. (dmDeliveryTimeis populated.)MESSAGESTATE_SUBSTITUTEDโ the message was delivered through fiction,dmAcceptanceTimeis populated.MESSAGESTATE_RECEIVEDโ the message was accepted (by user's log-in or user's explicit request).dmAcceptanceTimeis populated.MESSAGESTATE_READโ the message has been read by a user. seen โMESSAGESTATE_UNDELIVERABLEโ the message could not been delivered. (E.g. the recipient's box has been made inaccessible meantime.) ๐ญMESSAGESTATE_REMOVEDโ the message's content was deleted.MESSAGESTATE_IN_VAULTโ the message is stored in the long term storage.
The values can be combined into a bit mask for some functions. A special MESSAGESTATE_ANY macro denotes any of the states. very "select all" of it ๐
isds_hash_algorithm
typedef enum isds_hash_algorithm;
Hash algorithm types. The known values are:
HASH_ALGORITHM_MD5โ MD5.HASH_ALGORITHM_SHA_1โ SHA-1.HASH_ALGORITHM_SHA_224โ SHA-224.HASH_ALGORITHM_SHA_256โ SHA-256.HASH_ALGORITHM_SHA_384โ SHA-384.HASH_ALGORITHM_SHA_512โ SHA-256. ๐ (yes bestie, that's literally what the page says โ I'm not changing it, no cap)
isds_buffer_strategy
typedef enum isds_buffer_strategy;
Buffer storage strategy. This type defines how a function should embed an application-provided buffer into the raw element of the output structure. The known values are:
BUFFER_DONT_STOREโ don't fill the raw member. we pretend it's not there ๐BUFFER_COPYโ copy the buffer content into a newly allocated raw member.BUFFER_MOVEโ copy the pointer. Leave deallocation to the structure destructor (isds_*_free()).
struct isds_hash
struct isds_hash;
This is a hash value storage. The members are:
isds_hash_algorithm algorithm;โ hash algorithm.size_t length;โ hash value length in bytes.void *value;โ hash value as a byte stream.
struct isds_PersonName
struct isds_PersonName;
Name of a person. The members are:
char *pnFirstName;โ first name.char *pnMiddleName;โ middle name.char *pnLastName;โ current last name.char *pnLastNameAtBirth;โ last name at birth.
struct isds_BirthInfo
struct isds_BirthInfo;
Date and place of a birth. The members are:
struct tm *biDate;โ date of birth in local time at the birth place. Only thetm_year,tm_monandtm_mdaymembers of thestruct tmcarry a sane value. The others are undefined. โ ๏ธ like, do not go reading them, bestie, they're not cooked properly.char *biCity;โ city where a person was born.char *biCounty;โ region where a person was born. This is the kind of region that is called Bezirk in German and okres in Czech.char *biState;โ state wher a person was born. (again: the page's spelling, not mine ๐)
struct isds_Address
struct isds_Address;
Postal address. The members are:
char *adCity;โ city.char *adStreet;โ street.char *adNumberInStreet;โ identification of an entrance on the street. ฤรญslo orientaฤnรญ in Czech.char *adNumberInMunicipality;โ identification of a building in the municipality. ฤรญslo popisnรฉ in Czech.char *adZipCode;โ postal code for mail routing. ๐ฎchar *adState;โ state.
struct isds_DbOwnerInfo
struct isds_DbOwnerInfo;
Data about a box and his owner. NULL pointer values mean undefined values. The members are:
char *dbID;โ box identifier. The specification limits the length to 7 characters.isds_DbType *dbType;โ box type.char *ic;โ identifier of the owner.isds_PersonName *personName;โ name of a person owning the box.char *firmName;โ name of a firm owning the box.isds_BirthInfo *birthInfo;โ birth details of the person.isds_Address *address;โ postal address of the owner.char *nationality;โ nationality of the owner.char *email;โ e-mail addres of the owner. ๐งchar *telNumber;โ telephone number of the owner.char *identifier;โ external box identifier for data provider (OVM, PO, maybe PFO box types.) The specification limits the length to 20 characters.char *registryCode;โ PFO external registry code. The specification limits the length to 5 characters.long int *dbState;โ box state.1means the box is active.
Note โ the type islong intbecause the specification declares it asxsd:integer. Note โTODO: enum?(the page said it, I'm just the messenger ๐ง)
_Bool *dbEffectiveOVM;โ the box has OVM role (section 5a of the act)._Bool *dbOpenAddressing;โ this non-OVM box is free to receive messages from anybody. open door policy, we love to see it ๐ซถ
isds_UserType
typedef enum isds_UserType;
User type. The known values are:
USERTYPE_PRIMARYโ owner of the box. main character energy ๐USERTYPE_ENTRUSTEDโ user with limited access to the box.USERTYPE_ADMINISTRATORโ user who can manageUSERTYPE_ENTRUSTEDusers.USERTYPE_OFFICIALโ???USERTYPE_OFFICIAL_CERTโ???USERTYPE_LIQUIDATORโ company liquidator.USERTYPE_RECEIVERโ company receiver.USERTYPE_GUARDIANโ legal guardian.
(yes, two of them are literally ??? on the page. we respect the mystery ๐)
struct isds_DbUserInfo
struct isds_DbUserInfo;
Data about a user. NULL pointer values mean undefined values. The members are:
char *userID;โ user identifier. The specification limits the length from 6 to 12 characters.isds_UserType *userType;โ user type.long int *userPrivils;โ set of user permissions.isds_PersonName *personName;โ name of the user.isds_Address *address;โ postal address of the user.struct tm *biDate;โ date of birth in local time. Only thetm_year,tm_monandtm_mdaymembers of thestruct tmcarry a sane value. The others are undefined. โ ๏ธchar *ic;โ identifier a supervising firm. The specification limits the length to 8 characters.char *firmName;โ name of a supervising firm. The specification limits the length to 100 characters.char *caStreet;โ contact address. Street and number.char *caCity;โ Czech city of the contact address.char *caZipCode;โ postal code of the contact address.char *caState;โ abbreviated country of contact address. This value is optional and the implicit meaning isCZ.
isds_event_type
typedef enum isds_event_type;
Message event type. The known values are:
EVENT_UNKNOWNโ event unknown to this library. mystery era ๐ต๏ธEVENT_ACCEPTED_BY_RECIPIENTโ message has been delivered and accepted by recipient action.EVENT_ACCEPTED_BY_FICTIONโ message has been delivered, acceptance period timed out, the message is considered accepted.EVENT_ACCEPTED_BY_FICTION_NO_USERโ message has been delivered, acceptance period timed out because there was no user who could accept the message.EVENT_UNDELIVERABLEโ recipient box was made inaccessible, thus the message is undeliverable. ๐ญEVENT_COMMERCIAL_ACCEPTEDโ recipient confirmed acceptance of this commercial message. ๐ฐEVENT_ENTERED_SYSTEMโ the message entered the ISDSsystem, i.e. it has been just sent by a sender. (yes, "ISDSsystem" โ that's how it's written, no cap)EVENT_DELIVEREDโ the message has been delivered into recipient's box. ๐ฌEVENT_PRIMARY_LOGINโ primary user logged into recipient's box.EVENT_ENTRUSTED_LOGINโ entrusted user with capability to read logged into recipient's box.EVENT_SYSCERT_LOGINโ an application authenticated by system certificate logged into recipient's box.
struct isds_event
struct isds_event;
An event that happened in a message's life. All members are optional. The members are:
struct isds_timeval *time;โ when the event occurred.isds_event_type *type;โ type of the event.char *description;โ human-readable event description generated by the ISDS system. (very probably in Czech language ๐จ๐ฟ)
enum isds_IdLevel_value
enum isds_IdLevel_value;
Specifies which information the sender of a data message wants to publish about his person. like, their public profile settings, basically ๐
PUBLISH_USERTYPEโ publish information about the sender type. This information is always revealed to the recipient. no opting out, bestie.PUBLISH_PERSONNAMEโ publish sender's personal name.PUBLISH_BIDATEโ publish sender's birth date.PUBLISH_BICITYโ publish sender's birth city. This information is available only when the sender isSENDERTYPE_ENTRUSTEDof a FO or PFO box.PUBLISH_BICOUNTYโ publishes the sender's birth county ๐ผ. Heads up: this info is only available when the sender isSENDERTYPE_ENTRUSTEDof aFOorPFObox.PUBLISH_ADCODEโ publishes the sender's RUIAN address code ๐ก.PUBLISH_FULLADDRESSโ publishes the sender's full address, the whole thing ๐ฌ.PUBLISH_ROBIDENTโ publishes whether the sender is identified within the ROB ๐ชช.
๐ธ struct isds_envelope
struct isds_envelope;
Okay so bestie, this is the message envelope ๐ โ it's all the metadata about a message. Like, it does contain the message documents.
โ ๏ธ Big vibe check first: those string-length constraints are only forced on output members that get transmitted to the ISDS. The other direction (downloading from the ISDS) can totally break these rules ๐ญ. It shouldn't happen, but literally nobody knows how much an incompatible new version of the ISDS protocol will shake things up. This is the golden Internet rule, no cap: be strict on what you send, be tolerant on what you receive. โจ
These members apply to incoming messages only ๐
char *dmID;โ the message identifier. Max length is 20 characters ๐.char *dbIDSender;โ the box identifier of the sender. The special valueaaaaaaameans the message was sent by the ISDS system itself, not by another user ๐ป. Max length is 7 characters.char *dmSender;โ the sender's name. Max length is 100 characters ๐.char *dmSenderAddress;โ the sender's postal address. Max length is 100 characters ๐ฎ.long int *dmSenderType;โ the gross box type of the sender. You can useisds_DbTypeto enumerate some known box types. It's a generic integer because the protocol keeps the value unconstrained and the library must support any syntactically correct value ๐งฉ.char *dmRecipient;โ the recipient's name. Max length is 100 characters ๐ซถ.char *dmRecipientAddress;โ the recipient's postal address. Max length is 100 characters ๐ฌ._Bool *dmAmbiguousRecipient;โ the recipient has OVM role ๐ญ.
These members get assigned by the ISDS at different phases of the message life cycle ๐ซ
unsigned long int *dmOrdinal;โ the ordinal number in the list of incoming/outgoing messages ๐ข.enum isds_message_status *dmMessageStatus;โ the message state ๐.long int *dmAttachmentSize;โ size of the message documents in kilobytes. The value is rounded ๐๏ธ.struct isds_timeval *dmDeliveryTime;โ the time the message got delivered into the recipient's box. It'll beNULLif the message hasn't been delivered yet โณ.struct isds_timeval *dmAcceptanceTime;โ the time the recipient accepted the message. It'll beNULLif the message hasn't been accepted yet ๐.struct isds_hash *hash;โ the message digest. This is a hash of the substring representing theisds:dmDMXML subtree. You can use theisds_compute_message_hashfunction to compute a hash of the message and then compare it against this structure member usingisds_hash_cmp๐.void *timestamp;โ this is a binary image of a qualified time stamp of the hash value. The time stamp is provided by the ISDS system. Messages that haven't been stamped yet will have this valueNULL๐ฐ๏ธ.size_t timestamp_length;โ length of the timestamp value in bytes ๐.struct isds_list *events;โ the events the message passed through. It's a list ofisds_eventstructures ๐๏ธ.
These members apply to both outgoing and incoming messages ๐
char *dmSenderOrgUnit;โ sender's organisation unit as a string. Optional ๐ข.long int *dmSenderOrgUnitNum;โ sender's organisation unit as a number. Optional ๐ข.char *dbIDRecipient;โ recipient's box identifier. This one is mandatory, bestie, don't skip it ๐จ. Max length is 7 characters.char *dmRecipientOrgUnit;โ recipient's organisation unit as a string. Optional ๐ฌ.long int *dmRecipientOrgUnitNum;โ recipient's organisation unit as a number. Optional ๐ข.char *dmToHands;โ a person in the recipient's organisation. Optional ๐โโ๏ธ.char *dmAnnotation;โ the subject (title) of the message. Max length is 255 characters โ๏ธ.char *dmRecipientRefNumber;โ Czech: ฤรญslo jednacรญ pลรญjemce. Optional. Max length is 50 characters ๐.char *dmSenderRefNumber;โ Czech: ฤรญslo jednacรญ odesรญlatele. Optional. Max length is 50 chars ๐.char *dmRecipientIdent;โ Czech: spisovรก znaฤka pลรญjemce. Optional. Max length is 50 characters ๐๏ธ.char *dmSenderIdent;โ Czech: spisovรก znaฤka odesรญlatele. Optional. Max length is 50 chars ๐๏ธ.
The following five members make up a reference to an item from the Czech Act Collection ๐จ๐ฟ๐. The human-readable reference looks like Point (Paragraph) ยง Section Law/Year Coll. And these members apply to both incoming and outgoing messages:
long int *dmLegalTitleLaw;โ a number of an act mandating the authority โ๏ธ.long int *dmLegalTitleYear;โ a year of issuing the act mandating the authority ๐ .char *dmLegalTitleSect;โ a section of the act mandating the authority. Czech: paragraf ยง.char *dmLegalTitlePar;โ a paragraph of the act mandating the authority. Czech: odstavec ยถ.char *dmLegalTitlePoint;โ a point of the act mandating the authority. Czech: pรญsmeno ๐ค.
Other incoming/outgoing message members ๐
_Bool *dmPersonalDelivery;โ if true, only a person with higher privileges can read this message ๐._Bool *dmAllowSubstDelivery;โ allow delivery through fiction. I.e. even if the recipient did not read this message, the message is considered as delivered after (currently) 10 days โฑ๏ธ. This is called delivery through fiction. Only anOVMdbTypesender can set it.char *dmType;โ message type (commercial subtypes or government message) ๐.
Input values (when sending the message):
"I"โ a commercial message offering paying the response (initiatory message). It's necessary to define thedmSenderRefNumbermember."K"โ a commercial message paid by the sender."O"โ a commercial response paid by the sender of an initiatory message. It's necessary to copy a value from thedmSenderRefNumberof the initiatory message to thedmRecipientRefNumberof this message."V"โ a non-commercial government message. This is the default meaning if the value is undefined while sending a message.
Output values (when retrieving the message):
"A"โ this is a subsidized initiatory commercial message which can pay a response."B"โ this is a subsidized initiatory commercial message which has already paid the response."C"โ this is a subsidized initiatory commercial message where the response offer has expired."D"โ this is an externally subsidized commercial message."E"โ this is a commercial message prepaid by a stamp."G"โ this is a commercial message paid by a sponsor."I"โ see the input values."K"โ see the input values."O"โ see the input values."V"โ see the input values."X"โ this is an initiatory commercial message where the response offer has expired."Y"โ this is an initiatory commercial message which has already paid the response."Z"โ this is a limitedly subsidized commercial message.
Length of the value is exactly 1 UTF-8 character if defined ๐. That means it's still a zero-terminated character string.
_Bool *dmVODZ;โ set to true when downloading lists of sent or received messages and a particular message is a high-volume data message ๐๏ธ.long int *attsNum;โ set to the number of attachments when downloading lists of sent or received messages and a particular message is a high-volume data message ๐.
These members apply to outgoing messages only ๐ค
_Bool *dmOVM;โ OVM sending mode. Non-OVMdbTypeboxes that havedbEffectiveOVMequal to true MUST select between true (OVM mode) and false (non-OVM mode) ๐จ. Otherwise the value is optional and the default value is true._Bool *dmPublishOwnID;โ to allow revealing the sender's login name. The name will be available to the recipient through theisds_get_message_senderfunction. The sender's box type and identifier will always be available ๐. This feature exists because more users can have access to one box and the recipient couldn't tell who the sender was. This value is optional. Default value is false.int *idLevel;โ specifies which personal information about the sender should be revealed to the recipient ๐ชช. All specified information can be acquired by the recipient by using theisds_GetMessageAuthor2function. The sender's box type and identifier will always be available. The value ofdmPublishOwnIDMUST be set to true in order to specify which additional information the sender wants to disclose. The actual value of theidLevelis the sum of the actualenum isds_IdLevel_valuevalues โ.
๐ฆ isds_FileMetaType
typedef enum isds_FileMetaType;
Document type from the point of view of the hierarchy of documents in a message ๐๏ธ. The known values are:
FILEMETATYPE_MAINโ main document. There should be exactly one document of this type in a message ๐.FILEMETATYPE_ENCLOSUREโ an appendix. If a message has more documents, generic-purpose documents other than the main one should have this type ๐.FILEMETATYPE_SIGNATUREโ digital signature. This document is a signature of another document in the message โ๏ธ.FILEMETATYPE_METAโ XML document for electronic document information system, elektronickรก spisovรก sluลพba (ESS) in Czech, purpose ๐๏ธ.
๐ struct isds_document
struct isds_document;
A message document ๐. The members are:
_Bool is_xml;โ true if the document is an ISDS XML document. False if the document is an ISDS binary document ๐งฌ.xmlNodePtr xml_node_list;โ the XML node-set presenting the XML document content. This is a pointer to the first XML node of the XML representation of the message as stored in thexmlmember of theisds_messagestructure ๐ณ. Use thechildrenandnextmembers to walk through the document. See the libxml2 library documentation for more details. Thexml_node_listwill beNULLif the document is empty. It's valid only ifis_xmlis true.void *data;โ a binary document content. The encoding and format depends on thedmMimeTypemember value ๐งฑ. This is valid only ifis_xmlis false.size_t data_length;โ length of the data buffer in bytes ๐. It's valid only ifis_xmlis false.char *dmMimeType;โ the MIME type of the document. This one is mandatory, bestie, no skipping it ๐isds_FileMetaType dmFileMetaType;โ the document type used to build the document hierarchy inside a message.char *dmFileGuid;โ a message-local document identifier. It's literally a key ๐ you can use to point at this document from a different document via thedmUpFileGuidmember. Optional.char *dmUpFileGuid;โ a reference to an upper document's identifier, stored in thedmFileGuidmember of a different document. Use theisds_find_document_by_idfunction to go find that upper document. Also optional.char *dmFileDescr;โ the document name (title), like a file name, for example. Mandatory ๐ซถchar *dmFormat;โ a reference to an XML format definition that explains how to interpret the XML document. Like a URL to an XML schema, for instance. Optional.
struct isds_box_state_period ๐ฐ๏ธ
struct isds_box_state_period;
A box state that's valid in a time range. The members are:
struct isds_timeval *from;โ when the time range begins.struct isds_timeval *to;โ when the time range ends.long int dbState;โ the box state.1means the box is accessible. Any other value means the box is inaccessible. You can use theisds_DbStateenum to identify some of those states.
struct isds_dmMessageAuthor ๐ค
struct isds_dmMessageAuthor;
This is the response for GetMessageAuthor2. Members:
isds_sender_type *userType;โ the message sender type.struct isds_PersonName2 *personName;โ containspnGivenNamesandpnLastName.struct tm *biDate;โ date of birth in local time at the birth place. Onlytm_year,tm_monandtm_mdaycarry a sane value, so don't go trusting the rest ๐ญchar *biCity;โ city of birth.char *biCounty;โ county of birth (German: Bezirk, Czech: okres).char *adCode;โ RUIAN address code.char *fullAddress;โ the full address._Bool *robIdent;โ flag saying whether the person is identified within the ROB.
enum isds_message_type ๐
typedef enum isds_message_type isds_message_type;
Tells you which way the message is going โ received or sent:
MESSAGE_TYPE_RECEIVEDโ it's a received message.MESSAGE_TYPE_SENTโ it's a sent message.
enum isds_data_format ๐
typedef enum isds_data_format isds_data_format;
Specifies the data format:
FORMAT_XMLโ data in XML format.FORMAT_CSVโ data in CSV format.
enum isds_asyncReqType โก
typedef enum isds_asyncReqType isds_asyncReqType;
Specifies the synchronous request type:
ASYNC_REQ_TYPE_LIST_ERASEDโ the response for theGetListOfErasedMessagesrequest.
struct isds_erased_message ๐๏ธ
struct isds_erased_message;
Describes the entries in the lists of erased messages. Members:
char *dmID;โ message ID.char *dbIDSender;โ box ID of the sender.char *dmSender;โ sender name.char *dbIDRecipient;โ box ID of the recipient.char *dmRecipient;โ recipient name.char *dmAnnotation;โ subject (title) of the message.enum isds_message_status *dmMessageStatus;โ message state.struct isds_timeval *dmDeliveryTime;โ time of delivery into a box.struct isds_timeval *dmAcceptanceTime;โ time of acceptance of the message by a user.char *dmType;โ message type.
โจ FUNCTIONS โจ
Okay bestie, here's the function lineup ๐
const char *isds_strerror(const isds_error error);
struct isds_ctx *isds_ctx_create(void);
๐ SEE ALSO ๐
Go touch some other manuals, iykyk:
๐ AUTHORS ๐
- CZ.NIC, z. s. p. o. โ maintains libdatovka. Has been contributing to libisds.
- Petr Pรญsaล โ he has written libisds.
And that's a wrap, babe ๐ this page came from [FIXME: source] and it's dated 09/16/2026 โ go slay some ISDS calls, mwah ๐๐ฆ
๐ฆ where this page comes from
- opensuse-leap 16.0: libdatovka-devel 0.7.4-bp160.1.1 ยท LGPL-3.0-or-later AND GPL-3.0-or-later AND MIT
- opensuse-leap 16.0: libdatovka-devel 0.7.4-bp160.1.1 ยท LGPL-3.0-or-later AND GPL-3.0-or-later AND MIT
- opensuse-leap 16.0: libdatovka-devel 0.7.4-bp160.1.1 ยท LGPL-3.0-or-later AND GPL-3.0-or-later AND MIT
- opensuse-leap 16.0: libdatovka-devel 0.7.4-bp160.1.1 ยท LGPL-3.0-or-later AND GPL-3.0-or-later AND MIT
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms