ISDS.H(3)

πŸ“¦
version 0.11.2 Β· 5 versions
, in fedora 43

✨ isds.h(3) β€” API definition for libisds ✨

manual for Libisds Β· part 1 of 3 Β· bestie we are SO doing this πŸ’…


🌸 NAME 🌸

isds.h β€” API definition for libisds.


✨ SYNOPSIS ✨

#include <isds.h>

πŸ’… DESCRIPTION πŸ’…

This header file declares the inteface for the libisds library.


πŸŽ€ CONSTANTS πŸŽ€

πŸ’– Service locators πŸ’–

Addresses of known ISDS servers.

🌈 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_otp_locator
extern const char isds_otp_locator[];

Without OTP 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_otp_testing_locator
extern const char isds_otp_testing_locator[];

Without OTP 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 value 0.
  • 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_NOEXIST β€” Requested entity does 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 enum value.
  • IE_DATE β€” Invalid date value.
  • IE_2BIG β€” Value is too big.
  • IE_2SMALL β€” Value is too small.
  • IE_NOTUNIQ β€” Value is not uniq.
  • 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 β€” 0
  • ILL_CRIT β€” 10
  • ILL_ERR β€” 20
  • ILL_WARNING β€” 30
  • ILL_INFO β€” 40
  • ILL_DEBUG β€” 50
  • ILL_ALL β€” 100

🫢 isds_log_facility 🫢

typedef enum isds_log_facility;

Log facility. Known values:

  • ILF_NONE β€” 0x0
  • ILF_HTTP β€” 0x1
  • ILF_SOAP β€” 0x2
  • ILF_ISDS β€” 0x4
  • ILF_FILE β€” 0x8
  • ILF_SEC β€” 0x10
  • ILF_XML β€” 0x20
  • ILF_ALL β€” 0xFF

🫢 isds_option 🫢

typedef enum isds_option;

libisds option identifiers. Known values:

  • IOPT_TLS_VERIFY_SERVER β€” Option type is _Bool. Whether to verify server identity. Default value is true.
  • IOPT_TLS_CA_FILE β€” Option type is char *. Option value is a file name with certificate authority certificates. Default value depends on used cryptographic library.
  • IOPT_TLS_CA_DIRECTORY β€” Option type is char *, Option value is a directory with certificate authority certificates. Default value depends on used cryptographic library.
  • IOPT_TLS_CRL_FILE β€” Option type is char *. 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 is false.

🫢 isds_tls_option 🫢

typedef enum isds_tls_option;
Warning β€” This type is deprecated.

TLS libisds option identifiers. Known values:

  • ITLS_VERIFY_SERVER β€” Option type is _Bool. Whether to verify server identity.
  • ITLS_CA_FILE β€” Option type is char *. Option value is a file name with certificate authority certificates.
  • ITLS_CA_DIRECTORY β€” Option type is char *. Option value is a directory name with certificate authority certificates.
  • ITLS_CRL_FILE β€” Option type is char *. 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). Use NULL for 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 (NULL value).
  • 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. Use NULL for 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_TO_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. Pass NULL, 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 his legal status. Known values:

  • DBTYPE_OVM_MAIN β€” This is a special value for isds_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 incomming 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 with OVM_PFO).
  • DBTYPE_OVM_EXEKUT β€” Executor (stopped being used, replaced with OVM_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.
  • DBTYPE_PFO_AUDITOR β€” Statutory auditor.
  • DBTYPE_FO β€” Standard person.

Some interfaces refer to gross box type. These are the shortest names of the identifiers. For example, DBTYPE_OVM is a gross type for DB_OVM_NOTAR or DBTYPE_OVM. But not for DBTYPE_PO.

🫢 isds_DbState 🫢

typedef enum isds_DbState;

Box status from point of view of accessibility. Known values:

  • DBSTATE_ACCESSIBLE β€” The box is accessible.
  • DBSTATE_TEMP_UNACCESSIBLE β€” The box is temporarily inaccessible (at the request of the user).
  • DBSTATE_NOT_YET_ACCESSIBLE β€” The box has not yet been activated.
  • DBSTATE_PERM_UNACCESSIBLE β€” The box is permanently inaccessible.
  • DBSTATE_REMOVED β€” The box has been removed.
  • DBSTATE_TEMP_UNACCESSIBLE_LAW β€” The box is temporarily inaccessible (because of the reasons enumerated in the law).

🫢 isds_priviledges 🫢

typedef enum isds_priviledges;

Distinct user permissions from point of view of ISDS. Instances can be bitmaps of any of these distinct values. Distinct known values are:

  • PRIVIL_READ_NON_PERSONAL β€” The user can download and read messages with dmPersonalDelivery equaled to false.
  • PRIVIL_READ_ALL β€” The user can download and read messages with dmPersonalDelivery equaled to true.
  • PRIVIL_CREATE_DM β€” The user can create and send messages, 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 πŸ” like, they get to go looking through the box directory.
  • PRIVIL_OWNER_ADM β€” the user can administer their own box: adding and removing permitted users, and tweaking those users' permissions. Main character admin energy πŸ‘‘.
  • PRIVIL_READ_VAULT β€” the user can read messages stored in the long term storage (the vault, the archives, the ✨vault✨).
Note: this permission has not been used since 2012-05. Not me calling it retro πŸ’€ it's just literally unused.
  • PRIVIL_ERASE_VAULT β€” the user can delete messages from the long term storage. Poof, gone, into the void 🫠.

🌸 isds_message_status 🌸

typedef enum isds_message_status;

Message status, bestie. The states a message can be in. Here's the whole roster, no skips:

  • MESSAGESTATE_SENT β€” the message has been put into ISDS. It's out there now πŸ¦‹.
  • MESSAGESTATE_STAMPED β€” the message was stamped by a time stamp authority. Official. Certified. Slay ⭐.
  • MESSAGESTATE_INFECTED β€” the message included viruses 😭 and the infected documents have been removed from the message.
  • MESSAGESTATE_DELIVERED β€” the message was delivered. (dmDeliveryTime is populated.)
  • MESSAGESTATE_SUBSTITUTED β€” the message was delivered through fiction, and dmAcceptanceTime is populated. (Yes, "through fiction" β€” it's a legal-delivery thing, iykyk.)
  • MESSAGESTATE_RECEIVED β€” the message was accepted, either by the user's log-in or by the user's explicit request. dmAcceptanceTime is populated.
  • MESSAGESTATE_READ β€” the message has been read by a user πŸ‘€.
  • MESSAGESTATE_UNDELIVERABLE β€” the message could not be delivered. (E.g. the recipient's box has been made inaccessible in the meantime.) L for the sender fr πŸ˜”.
  • MESSAGESTATE_REMOVED β€” the message's content was deleted.
  • MESSAGESTATE_IN_SAFE β€” the message is stored in the long term storage. Safe and sound 🧚.

The values can be combined into a bit mask for some functions. And a special MESSAGESTATE_ANY macro denotes any of the states β€” a little "any of the above" energy ✨.


πŸ”₯ isds_hash_algorithm πŸ”₯

typedef enum isds_hash_algorithm;

Hash algorithm types, the whole fam:

  • 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. (Yeah. That's what the page says. I am simply the messenger πŸ’€)

πŸŽ€ isds_buffer_strategy πŸŽ€

typedef enum isds_buffer_strategy;

Buffer storage strategy. This type is basically the rules of the road for how a function should embed an application-provided buffer into the raw element of an output structure. Known values:

  • BUFFER_DONT_STORE β€” don't fill the raw member. Just vibes, no data.
  • BUFFER_COPY β€” copy the buffer content into a newly allocated raw member. Fresh copy, freshly allocated 🫢.
  • BUFFER_MOVE β€” copy the pointer. Deallocation is left to the structure destructor (isds_*_free()). So like, hand it over, it's theirs now, they clean up.

πŸ’œ struct isds_hash πŸ’œ

struct isds_hash;

This is a hash value storage. Members:

  • isds_hash_algorithm algorithm; β€” the 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. Members:

  • 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. Members:

  • struct tm *biDate; β€” date of birth in local time at the birth place. Only the tm_year, tm_mon and tm_mday members of the struct tm carry a sane value. The others are undefined β€” do not trust them, do not look at them πŸ™ˆ.
  • 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 where a person was born.

πŸ¦‹ struct isds_Address πŸ¦‹

struct isds_Address;

Postal address. Members:

  • 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 its owner. NULL pointer values mean undefined values. Members:

  • 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 address 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. 1 means the box is active βœ….
Note: the type is long int because the specification declares it as xsd:integer.
Note: TODO: enum?
  • _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 inbox, no gatekeeping πŸ’Œ.

πŸ‘‘ isds_UserType πŸ‘‘

typedef enum isds_UserType;

User type. Known values:

  • USERTYPE_PRIMARY β€” owner of the box.
  • USERTYPE_ENTRUSTED β€” user with limited access to the box.
  • USERTYPE_ADMINISTRATOR β€” user who can manage USERTYPE_ENTRUSTED users.
  • USERTYPE_OFFICIAL β€” ???
  • USERTYPE_OFFICIAL_CERT β€” ???
  • USERTYPE_LIQUIDATOR β€” company liquidator.
  • USERTYPE_RECEIVER β€” company receiver.
  • USERTYPE_GUARDIAN β€” legal guardian.

πŸ’… struct isds_DbUserInfo πŸ’…

struct isds_DbUserInfo;

Data about a user. NULL pointer values mean undefined values. Members:

  • 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 the tm_year, tm_mon and tm_mday members of the struct tm carry a sane value. The others are undefined πŸ™ˆ.
  • char *ic; β€” identifier of 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 the contact address. This value is optional and the implicit meaning is CZ.

πŸ“ isds_event_type πŸ“

typedef enum isds_event_type;

Message event type. Known values:

  • EVENT_UKNOWN β€” event unknown to this library. (That's the spelling, bestie, it's UKNOWN in the code and it stays that way.)
  • EVENT_ACCEPTED_BY_RECIPIENT β€” the message has been delivered and accepted by a recipient action.
  • EVENT_ACCEPTED_BY_FICTION β€” the message has been delivered, the acceptance period timed out, and the message is considered as accepted.
  • EVENT_UNDELIVERABLE β€” the recipient box was made inaccessible, so the message is undeliverable 😭.
  • EVENT_COMMERCIAL_ACCEPTED β€” the recipient confirmed acceptance of this commercial message.
  • EVENT_ENTERED_SYSTEM β€” the message entered the ISDS system, i.e. it has just been sent by a sender. Fresh out the gate πŸ¦‹.
  • EVENT_DELIVERED β€” the message has been delivered into the recipient's box.
  • EVENT_PRIMARY_LOGIN β€” primary user logged into the recipient's box.
  • EVENT_ENTRUSTED_LOGIN β€” an entrusted user with the capability to read logged into the recipient's box.
  • EVENT_SYSCERT_LOGIN β€” an application authenticated by a system certificate logged into the recipient's box.

✨ struct isds_event ✨

struct isds_event;

An event that happened in a message's life. All members are optional. Members:

  • struct timeval *time; β€” when the event occurred.
  • isds_event_type *type; β€” type of the event.
  • charr *description; β€” human-readable event description generated by the ISDS system. (Very probably in Czech language.) Yeah, it says charr up there. We keep it. No cap πŸ’€.

🧚 struct isds_envelope 🧚

struct isds_envelope;

Message envelope. This is the metadata about a message. It does not contain the message documents.

Warning: be aware that the string length constraints are forced only on output members transmitted to the ISDS. The other direction (downloading from the ISDS) can break these rules. It should not happen, but nobody knows how much incompatible new version of the ISDS protocol will be. This is the gold Internet rule: be strict on what you send, be tolerant on what you receive. 🫢

The following members apply to incoming messages only:

  • char *dmID; β€” message identifier. Maximal length is 20 characters.
  • char *dbIDSender; β€” box identifier of the sender. The special value aaaaaaa means the message was sent by the ISDS system. Not by another user. Maximal length is 7 characters.
  • char *dmSender; β€” sender's name. Maximal length is 100 characters.
  • char *dmSenderAddress; β€” postal address of the sender. Maximal length is 100 characters.
  • long int *dmSenderType; β€” gross box type of the sender. You can use isds_DbType to enumerate some known box types. This is a generic integer because the protocol keeps the value unconstrained and the library must support any syntactically correct value.
  • char *dmRecipient; β€” recipient's name. Maximal length is 100 characters.
  • char *dmRecipientAddress; β€” postal address of the recipient. Maximal length is 100 characters.
  • _Bool *dmAmbiguousRecipient; β€” the recipient has OVM role.

The following members are assigned by the ISDS in different phases of the message life cycle:

  • unsigned long int *dmOrdinal; β€” ordinal number in the list of incoming/outgoing messages.
  • isds_message_status *dmMessageStatus; β€” message state.
  • long int *dmAttachmentSize; β€” size of message documents in kilobytes. The value is rounded.
  • struct timeval *dmDeliveryTime; β€” the time of delivering the message into the recipient's box. It will be NULL if the message has not been delivered yet.
  • struct timeval *dmAcceptanceTime; β€” the moment the recipient accepted the message. It's NULL if the message hasn't been accepted yet, bestie. No cap.
  • struct isds_hash *hash; β€” the message digest. It's a hash of a substring representing the isds:dmDM XML subtree. You can use isds_compute_message_hash to compute a hash of the message and then compare it against this struct member using isds_hash_cmp. Iconic hash behavior.
  • void *timestamp; β€” 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 value NULL. Not me waiting for my timestamp.
  • size_t timestamp_length; β€” length of the timestamp value in bytes.
  • struct isds_list *events; β€” events the message passed through. It's a list of isds_event structures. Track the journey, periodt.

These next ones apply to both outgoing and incoming messages, fr fr:

  • char *dmSenderOrgUnit; β€” sender's organisation unit as a string. This is optional.
  • long int *dmSenderOrgUnitNum; β€” sender's organisation unit as a number. This is optional.
  • char *dbIDRecipient; β€” recipient's box identifier. This is mandatory. Maximal length is 7 characters. You can't skip this one, bestie.
  • char *dmRecipientOrgUnit; β€” recipient's organisation unit as a string. This is optional.
  • long int *dmRecipientOrgUnitNum; β€” recipient's organisation unit as a number. This is optional.
  • char *dmToHands; β€” a person in recipient's organisation. This is optional.
  • char *dmAnnotation; β€” a subject (title) of the message. Maximal length is 255 characters.
  • char *dmRecipientRefNumber; β€” Czech: číslo jednacΓ­ pΕ™Γ­jemce. This is optional. Maximal length is 50 characters.
  • char *dmSenderRefNumber; β€” Czech: číslo jednacΓ­ odesΓ­latele. This is optional. Maximal length is 50 chars.
  • char *dmRecipientIdent; β€” Czech: spisovΓ‘ značka pΕ™Γ­jemce. This is optional. Maximal length is 50 characters.
  • char *dmSenderIdent; β€” Czech: spisovΓ‘ značka odesΓ­latele. This is optional. Maximal length is 50 chars.

The next five members constitute a reference to an item from the Czech Act Collection. The human-readable reference looks like Point (Paragraph) Β§ Section Law/Year Coll. 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, because there's always more:

  • _Bool *dmPersonalDelivery; β€” if true, only a person with higher privileges can read this message. VIP only, iykyk.
  • _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 OVM dbType senders can set it. 10 days? The audacity.
  • 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 dmSenderRefNumber member.
      • "K" β€” a commercial message paid by the sender.
      • "O" β€” a commercial response paid by the sender of a initiatory message. It's necessary to copy a value from the dmSenderRefNumber of the initiatory message to the dmRecipientRefNumber of this message.
      • "V" β€” a noncommercial 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 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. One character, but make it iconic.

These members apply to outgoing messages only, bestie:

  • _Bool *dmOVM; β€” OVM sending mode. Non-OVM dbType boxes that have dbEffectiveOVM equal to true MUST select between true (OVM mode) and false (non-OVM mode). Otherwise the value is optional and the default value is true. MUST, no cap.
  • _Bool *dmPublishOwnID; β€” to allow revealing sender's login name. The name will be available to the recipient through isds_get_message_sender function. The sender's box type and identifier will be always available. This feature exists because more users can have access to one box and the recipient could not tell who was the sender. This value is optional. Default value is false. Optional, default false, stay mysterious if you want.

πŸ¦‹ isds_FileMetaType πŸ¦‹

typedef enum isds_FileMetaType;

Document type from the point of view of the hierarchy of documents in a message. Known values are:

  • FILEMETATYPE_MAIN β€” main document. There should be exactly one document of this type in a message. Exactly one, periodt.
  • 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. 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; β€” 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 the xml member of isds_message structure. Use children and next members to walk through the document. See libxml2 library documentation for more details. The xml_node_list will be NULL if the document is empty. It's valid only if is_xml is true.
  • void *data; β€” a binary document content. The encoding and format depends on dmMimeType member value. This is valid only if is_xml is false.
  • size_t data_length; β€” length of the data buffer in bytes. It's valid only if is_xml is false.
  • char *dmMimeType; β€” MIME type of document. This member is mandatory.
  • isds_FileMetaType dmFileMetaType; β€” document type to create document hierarchy inside a message.
  • char *dmFileGuid; β€” message-local document identifier. It can be used as a key to refer to this document by dmUpFileGuid member from a different document. This is optional.
  • char *dmUpFileGuid; β€” a reference to upper document identifier stored in dmFileGuid member of a different document. You can use isds_find_document_by_id function to locate the upper document. This value is optional.
  • char *dmFileDescr; β€” document name (title). E.g. a file name. This value is mandatory.
  • char *dmFormat; β€” a reference to XML format definition that explains how to interpret the XML document. E.g. a URL to an XML schema. This value is optional.

✨ struct isds_box_state_period ✨

struct isds_box_state_period;

A box state valid in the time range. Members are:

  • struct timeval *from; β€” time range beginning.
  • struct timeval *to; β€” time range end.
  • long int dbState; β€” box state. 1 means the box is accessible. Other values mean the box is inaccessible. You can use isds_DbState enum to identify some states.

πŸ”₯ FUNCTIONS πŸ”₯

  • const char *isds_strerror(const isds_error error);
  • struct isds_ctx *isds_ctx_create(void);

That's the whole function lineup, bestie. πŸ’–

🌈 SEE ALSO 🌈

πŸ‘‘ AUTHOR πŸ‘‘

Petr PΓ­saΕ™ β€” he has written libisds. Absolute legend behavior.


This page is from libisds, dated 07/24/2025. Stay slay, bestie. πŸ’…βœ¨

πŸ“¦ where this page comes from