home | help
ISDS.H.LIBDATOVK(3)	      Manual for Libdatovka	     ISDS.H.LIBDATOVK(3)

NAME
     isds.h.libdatovka - API definition for libdatovka

SYNOPSIS
     #include <libdatovka/isds.h>

DESCRIPTION
     This header file declares interface for the libdatovka 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_vodz_locator

		extern const char isds_vodz_locator[];

	    High-volume  data message locator without client certificate authen-
	    tication.

	 isds_vodz_cert_locator

		extern const char isds_vodz_cert_locator[];

	    High-volume data message locator with client certificate authentica-
	    tion.

	 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  authen-
	    tication.

	 isds_vodz_cert_testing_locator

		extern const char isds_vodz_cert_testing_locator[];

	    High-volume data message locator with client certificate authentica-
	    tion.

	 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 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_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. Know 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. Know 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;

     libdatovka 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 au-
	 thority certificates. Default value depends on used  cryptographic  li-
	 brary.

     IOPT_TLS_CA_DIRECTORY
	 Option type is char *, Option value is a directory with certificate au-
	 thority  certificates.  Default value depends on used cryptographic li-
	 brary.

     IOPT_TLS_CRL_FILE
	 Option type is char *. Option value is a file name with certificat  re-
	 vocation  list  in  PEM  format.  Default value depends on used crypto-
	 graphic library.

     IOPT_NORMALIZE_MIME_TYPE
	 Optiona 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 libdatovka 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 au-
	 thority certificates.

     ITLS_CA_DIRECTORY
	 Option  type  is char *. Option value is a directory name with certifi-
	 cate authority certificates.

     ITLS_CRL_FILE
	 Option type is char *. Option value is a file name with certificate re-
	 vocation 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 en-
	 gine  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  de-
	 tected.)

     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. 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 ac-
	 cepted 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 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 (sec-
	 tion 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   with
	 OVM_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. 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_INACCESSIBLE
	 The box is temporarily inaccessible (at the request of the user).

     DBSTATE_NOT_YET_ACCESSIBLE
	 The box has not yet been activated.

     DBSTATE_PERM_INACCESSIBLE
	 The box is permanently inaccessible.

     DBSTATE_REMOVED
	 The box has been removed.

     DBSTATE_TEMP_INACCESSIBLE_LAW
	 The  box is temporarily inaccessible (because of the reasons enumerated
	 in the law).

   isds_privileges
	 typedef enum isds_privileges;

     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 equal
	 to false.

     PRIVIL_READ_ALL
	 The user can download and read messages with  dmPersonalDelivery  equal
	 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  de-
	 livery.

     PRIVIL_SEARCH_DB
	 The user can can search for boxes.

     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.

     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. Known values are:

     MESSAGESTATE_SENT
	 The message has been put into ISDS.

     MESSAGESTATE_STAMPED
	 Message was stamped by a time stamp authority.

     MESSAGESTATE_INFECTED
	 The message included viruses. 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,  dmAcceptanceTime  is  popu-
	 lated.

     MESSAGESTATE_RECEIVED
	 The message was accepted (by user's log-in or user's explicit request).
	 dmAcceptanceTime is populated.

     MESSAGESTATE_READ
	 The message has been read by a user.

     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.

   isds_hash_algorithm
	 typedef enum isds_hash_algorithm;

     Hash algorithm types. 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.

   isds_buffer_strategy
	 typedef enum isds_buffer_strategy;

     Buffer storage strategy. This type defines how a function should embed  ap-
     plication	provided buffer into raw element of output structure. Known val-
     ues are:

     BUFFER_DONT_STORE
	 Don't fill raw member.

     BUFFER_COPY
	 Copy buffer content into newly allocated raw member.

     BUFFER_MOVE
	 Copy  pointer.  Leave	 deallocation	to   structure	 destructor   (-
	 isds_*_free()).

   struct isds_hash
	 struct isds_hash;

     This is a hash value storage. 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. 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. Members are:

     struct tm *biDate;
	 Date  of  birth  in local time at the birth place. Only tm_year, tm_mon
	 and tm_mday members of the struct tm carry sane value. Others are unde-
	 fined.

     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.

   struct isds_Address
	 struct isds_Address;

     Postal address. Members are:

     char *adCity;
	 City.

     char *adStreet;
	 Street.

     char *adNumberInStreet;
	 Identification  of  an  entrance  on  the  street.  AAslo orientaAnA in
	 Czech.

     char *adNumberInMunicipality;
	 Identification of a building in the municipality.  AAslo popisnA(C)  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.
     Members are:

     char *dbID;
	 Box identifier. 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.) Specification limits the length to 20 characters.

     char *registryCode;
	 PFO  external registry code. Specification limits the length to 5 char-
	 acters.

     long int *dbState;
	 Box state. 1 means the box is active.

	     Note
	     The  type	is  long  int  because	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.

   isds_UserType
	 typedef enum isds_UserType;

     User type. Known values are:

     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 are:

     char *userID;
	 User  identifier.  Specification limits the length from 6 to 12 charac-
	 ters.

     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 tm_year, tm_mon and	tm_mday  members
	 of the struct tm carry sane value. Others are undefined.

     char *ic;
	 Identifier  a	supervising  firm.  Specification limits the length to 8
	 characters.

     char *firmName;
	 Name of a supervising firm. 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 im-
	 plicit meaning is CZ.

   isds_event_type
	 typedef enum isds_event_type;

     Message event type. Known values are:

     EVENT_UNKNOWN
	 Event unknown to this library.

     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.

     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  recipi-
	 ent's box.

   struct isds_event
	 struct isds_event;

     An event that happened in a message life. All members are optional. 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.

     PUBLISH_USERTYPE
	 Publish  information  about the sender type. This information is always
	 revealed to the recipient.

     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
	 sender is SENDERTYPE_ENTRUSTED of a FO or PFO box.

     PUBLISH_BICOUNTY
	 Publish  sender's birth county. This information is available only when
	 sender is SENDERTYPE_ENTRUSTED of a FO or PFO box.

     PUBLISH_ADCODE
	 Publish sender's RUIAN address code.

     PUBLISH_FULLADDRESS
	 Publish sender's full address.

     PUBLISH_ROBIDENT
	 Publish information whether sender is identified within the ROB.

   struct isds_envelope
	 struct isds_envelope;

     Message envelope. These are the metadata about a message. It  does  contain
     the message documents.

     Be  ware  that the string length constraints are forced only on output mem-
     bers 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 re-
     ceive.

     Following members apply to incoming messages only:

     char *dmID;
	 Message identifier. Maximal length is 20 characters.

     char *dbIDSender;
	 Box  identifier  of the sender. 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.

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

     unsigned long int *dmOrdinal;
	 Ordinal number in list of incoming/outgoing messages.

     enum isds_message_status *dmMessageStatus;
	 Message state.

     long int *dmAttachmentSize;
	 Size of message documents in kilobytes. The value is rounded.

     struct isds_timeval *dmDeliveryTime;
	 The time of delivering the message into recipient's  box.  It	will  be
	 NULL, if the message has not been delivered yet.

     struct isds_timeval *dmAcceptanceTime;
	 The time of accepting the message by the recipient. It will be NULL, if
	 message has not been accepted yet.

     struct isds_hash *hash;
	 The  message  digest.	This  is  a  hash  of  a  substring representing
	 isds:dmDM XML subtree. You can use  isds_compute_message_hash	function
	 to  compute  a  hash  of  the	message and then compare it against this
	 structure member using isds_hash_cmp function.

     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 have	not  yet
	 been stamped will have this value NULL.

     size_t timestamp_length;
	 Length of the timestamp value in bytes.

     struct isds_list *events;
	 Events the message passed trough. It's a list of isds_event structures.

     Following members apply to both outgoing and incoming messages:

     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.

     char *dmRecipientOrgUnit;
	 Recipient's organisation unit as a string. This is optional.

     long int *dmRecipientOrgUnitNum;
	 Recipient's organisation unit of 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: AAslo jednacA pAAjemce. This is optional. Maximal length  is  50
	 characters.

     char *dmSenderRefNumber;
	 Czech:  AAslo	jednacA odesAlatele. This is optional. Maximal length is
	 50 chars.

     char *dmRecipientIdent;
	 Czech: spisovA! znaAka pAAjemce. This is optional. Maximal length is 50
	 characters.

     char *dmSenderIdent;
	 Czech: spisovA! znaAka odesAlatele This is optional. Maximal length  is
	 50 chars.

     Following five members constitute a reference to an item from the Czech Act
     Collection.  The  human-readable  reference  looks  like  Point (Paragraph)
     <section> Section Law/Year Coll.  The 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: pAsmeno.

     Other incoming/outgoing message members:

     _Bool *dmPersonalDelivery;
	 If true, only 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  (cur-
	 rently)  10 days. This is called delivery through fiction. Only OVM db-
	 Type sender 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  mes-
	     sage). 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 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  al-
	     ready paid the response.

	 "C"
	     This  is  a  subsidized initiatory commercial message where the re-
	     sponse 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 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 number of attachments when downloading lists of sent or received
	 messages and a particular message is a high-volume data message.

     Following members apply to outgoing messages only:

     _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.

     _Bool *dmPublishOwnID;
	 To allow to reveal 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.

     int *idLevel;
	 Specifies  which  personal  information  about the sender should be re-
	 vealed to the recipient. All specified information can be  acquired  by
	 the   recipient  by  using  the  isds_GetMessageAuthor2  function.  The
	 sender's box type and identifier will always be available. The value of
	 dmPublishOwnID MUST be set to true in order to specify which additional
	 information the sender wants to  disclose.  The  actual  value  of  the
	 idLevel is the sum of actual enum isds_IdLevel_value values.

   isds_FileMetaType
	 typedef enum isds_FileMetaType;

     Document  type  from  point of view of 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.

     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,  elektronickA!
	 spisovA! sluA3/4ba (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
	 first	XML  node  of the XML representation of the message as stored in
	 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 the is_xml is true.

     void *data;
	 A   binary  document  content.  The  encoding	and  format  depends  on
	 dmMimeType member value. This is valid only if the is_xml is false.

     size_t data_length;
	 Length of the data buffer in bytes. It's valid only if  the  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
	 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 isds_timeval *from;
	 Time range beginning.

     struct isds_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.

   struct isds_dmMessageAuthor
	 struct isds_dmMessageAuthor;

     Response for GetMessageAuthor2. Members are:

     isds_sender_type *userType;
	 Message sender type.

     struct isds_PersonName2 *personName;
	 Contains pnGivenNames and pnLastName.

     struct tm *biDate;
	 Date  of  birth  in local time at birth place, only tm_year, tm_mon and
	 tm_mday carry sane value.

     char *biCity;
	 City of birth.

     char *biCounty;
	 County of birth (German: Bezirk, Czech: okres).

     char *adCode;
	 RUIAN address code.

     char *fullAddress;
	 Full address.

     _Bool *robIdent;
	 Flag whether the person is identifiers within the ROB.

   enum isds_message_type
	 typedef enum isds_message_type isds_message_type;

     Specifies the direction of the message - whether the message is received or
     sent:

     MESSAGE_TYPE_RECEIVED
	 Specifies a received message.

     MESSAGE_TYPE_SENT
	 Specifies a sent message.

   enum isds_data_format
	 typedef enum isds_data_format isds_data_format;

     Specifies data format:

     FORMAT_XML
	 Data in XML format.

     FORMAT_CSV
	 Data in CSV format.

   enum isds_asyncReqType
	 typedef enum isds_asyncReqType isds_asyncReqType;

     Specifies synchronous request type:

     ASYNC_REQ_TYPE_LIST_ERASED
	 Response for the GetListOfErasedMessages request.

   struct isds_erased_message
	 struct isds_erased_message;

     Describes entries in the lists of erased messages. Members are:

     char *dmID;
	 Message ID.

     char *dbIDSender;
	 Box ID of sender.

     char *dmSender;
	 Sender name.

     char *dbIDRecipient;
	 Box ID of 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
     *

	 const char *isds_strerror(const isds_error error);

     *

	 struct isds_ctx *isds_ctx_create(void);

SEE ALSO
     libcurl(3), libdatovka(3), time.h(0p)

AUTHORS
     CZ.NIC, z. s. p. o.
	 Maintains libdatovka. Has been contributing to libisds.

     Petr P~AsaoA
	 He has written libisds.

[FIXME: source] 		   08/27/2026		     ISDS.H.LIBDATOVK(3)

home | help