User Tools

Site Tools



en:xml_direct

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
en:xml_direct [2025/08/04 09:14] – [Artiklid] toomasen:xml_direct [2025/12/18 12:50] (current) – [Access to the Interface (URL)] toomas
Line 1: Line 1:
-FIXME **This page is not fully translated, yet. Please help completing the translation.**\\ //(remove this paragraph once the translation is finished)// 
- 
 ======XML Direct ====== ======XML Direct ======
 =====Introduction ===== =====Introduction =====
Line 39: Line 37:
 A token must be used for access (see the ''API Key'' obtained in the previous chapter). The token replaces the older interface types' appkey and database name all at once. The token must be sent via the POST method in the ''TOKEN'' variable (similar to submitting an HTML form) to the given URL to get a result. In case of an incorrect or improperly sent token, the response is ''<result type=„5“ desc=„Unauthorized“/>''. In case token is missing the response is ''<err>token required</err>''. A token must be used for access (see the ''API Key'' obtained in the previous chapter). The token replaces the older interface types' appkey and database name all at once. The token must be sent via the POST method in the ''TOKEN'' variable (similar to submitting an HTML form) to the given URL to get a result. In case of an incorrect or improperly sent token, the response is ''<result type=„5“ desc=„Unauthorized“/>''. In case token is missing the response is ''<err>token required</err>''.
  
-**curl example **+{{page>en:xmlcore#general_technical_requirements}} 
 + 
 +====curl example ====
 <code> <code>
 curl --location 'https://login.directo.ee/xmlcore/cap_xml_direct/xmlcore.asp' \ curl --location 'https://login.directo.ee/xmlcore/cap_xml_direct/xmlcore.asp' \
Line 49: Line 49:
 </code> </code>
  
 +
 +**put**
 +<code>
 +url --location 'https://login.directo.ee/xmlcore/cap_xml_direct/xmlcore_maht.asp' \
 +--header 'Content-Type: application/x-www-form-urlencoded' \
 +--data-urlencode 'token=••••••' \
 +--data-urlencode 'put=1' \
 +--data-urlencode 'what=order' \
 +--data-urlencode 'xmldata=<?xml version="1.0" encoding="utf-8"?>
 +<orders>
 +    <order number="100034" date="2024-07-11T00:00:00" vatzone="0" paymentterm="K" object="xx,WEB,XML,WEBSHOP" currency="EUR" currate="1.000000000" customercode="TEST1" customername="Test klient OÜ" salesman="XML" deliverymethod="KULLER" customerordernumber="#1" email="xx.yyy@directo.ee" stock="PL" country="EE" phone="+372xxxxxx" address1="Mõisa tee 4" address2="10101, Tallinn" address3="Eesti" deliveryaddress1="Mõisa 4" deliveryaddress2="10101, Tallinn" deliveryaddress3="Eesti" deliveryname="deliveryname3" factoring="001" deliveryterm="CFR" language="eng" deliverymethodcomment="Testing field" text1="Testing field 2" text2="Testing field 3">
 +        <rows>
 +            <row item="0001" price="37.5" quantity="1" sum="37.5" rn="1" rr="1"/>
 +            <row item="0002" price="20.83" quantity="1" sum="20.83" rn="2" rr="2"/>
 +        </rows>
 + <attachments>
 + <attachment>
 + <data>VGVzdA==</data>
 + <name>Test.txt</name>
 +      </attachment>
 +    </attachments>
 +    </order>
 +</orders>'
 +</code>
  
 =====Price ====== =====Price ======
Line 634: Line 658:
 |XML |xd_supplieritemtype |0 |ITEM |0 = supplier item; 1 = sales item | |XML |xd_supplieritemtype |0 |ITEM |0 = supplier item; 1 = sales item |
 |XML |type |1 |ITEM |1 = stock item | |XML |type |1 |ITEM |1 = stock item |
-===Ostuarved ===+===Purchase Invoices ===
  
 what=purchase what=purchase
-[[https://login.directo.ee/xmlcore/cap_xml_direct/xml_IN_oarved.xsd|Skeem ]]+[[https://login.directo.ee/xmlcore/cap_xml_direct/xml_IN_oarved.xsd|Schema ]]
  
-==Päis== +==Header== 
-^XML väli^SQL väli^UI väli^Selgitus^+^XML field^SQL field^UI field^Explanation^
 |session_id|x| | for internal use at Directo side, do not send this field! | |session_id|x| | for internal use at Directo side, do not send this field! |
 |number|number|Number| document number/ID, mandatory; It must be unique for each document and remain same if more than one transaction of the same document is necessary | |number|number|Number| document number/ID, mandatory; It must be unique for each document and remain same if more than one transaction of the same document is necessary |
-|date|aeg|Arve aeg| ALT.FROM: current time | +|date|aeg|Invoice time| ALT.FROM: current time | 
-|duedate|tas_aeg|Tas. aeg| | +|duedate|tas_aeg|Due time| | 
-|sum|summa|Tasuda| sum with vat | +|sum|summa|To be paid| sum with vat | 
-|supplierinvoiceno|hankija_arve|Hankija arve| | +|supplierinvoiceno|hankija_arve|Supplier invoice| | 
-|paymentterm|tingimus|Tasting.| ALT.FROM: supplier | +|paymentterm|tingimus|Payterm.| ALT.FROM: supplier | 
-|suppliercode|hankija_kood|Hankija| |+|suppliercode|hankija_kood|Supplier| |
 |suppliername|hankija_nimi|| ALT.FROM: supplier | |suppliername|hankija_nimi|| ALT.FROM: supplier |
 |bankaccount|pangakonto| | ALT.FROM: supplier | |bankaccount|pangakonto| | ALT.FROM: supplier |
-|reference|viide|Viitenumber| ALT.FROM: supplier | +|reference|viide|Reference number| ALT.FROM: supplier | 
-|transactiontime|kande_aeg|Opaeg| | +|transactiontime|kande_aeg|Opertime| | 
-|creditaccount|kred_konto|Kredkonto| ALT.FROM: supplier > glob.settings | +|creditaccount|kred_konto|Credaccount| ALT.FROM: supplier > glob.settings | 
-|factoring|arve_tasub|Arve tasub| | +|factoring|arve_tasub|Invoice paid by| | 
-|currency|valuuta|Valuuta| ALT.FROM: glob.settings > 'EUR'+|currency|valuuta|Currency| ALT.FROM: glob.settings > 'EUR'
-|currencyrate|kurssbv1|Kurss| ALT.FROM: ECB current published rates | +|currencyrate|kurssbv1|Rate| ALT.FROM: ECB current published rates | 
-|vatzone|maa|KM Maa (peidetud väli)| local = 0, EU = 1, export = 2 ,  ALT.FROM: supplier > 0 | +|vatzone|maa|VAT Zone (hidden field)| local = 0, EU = 1, export = 2 ,  ALT.FROM: supplier > 0 | 
-|comment|kommentaar|Kommentaar| | +|comment|kommentaar|Comment| | 
-|vat|arvestatudkm|KM kokku| | +|vat|arvestatudkm|VAT total| | 
-|object|objekt|Objekt| ALT.FROM: supplier > tr.params | +|object|objekt|Object| ALT.FROM: supplier > tr.params | 
-|bankcode|pangakood|Pangakood| | +|bankcode|pangakood|Bank code| | 
-|creditpurchase|kredost|Kredost| | +|creditpurchase|kredost|Cred. purch.| | 
-|purchaseorder|ostutellimus|Ostutellimus| | +|purchaseorder|ostutellimus|Purchase order| | 
-|project|projekt|Projekt| | +|project|projekt|Project| | 
-|email|email|meil| ALT.FROM: supplier | +|email|email|e-mail| ALT.FROM: supplier | 
-|stockreceipt|sissetulek|Sissetulek| | +|stockreceipt|sissetulek|Stock receipt| | 
-|country|asumaa|Saatjariik| ALT.FROM: supplier | +|country|asumaa|Origin country| ALT.FROM: supplier | 
-|prepayment|ettemaks|Ettemaks| | +|prepayment|ettemaks|Prepayment| | 
-|status|staatus|Staatus| | +|status|staatus|Status| | 
-|type|tyyp|Tüüp| | +|type|tyyp|Type| | 
-|dividedsum|jagatav_summa|Jagatav summa| | +|dividedsum|jagatav_summa|Divisible sum| | 
-|vatdate|km_aeg|KM aeg| ALT.FROM: date > current time | +|vatdate|km_aeg|VAT time| ALT.FROM: date > current time | 
-|reclamation|reklamatsioon|Reklamatsioon| | +|reclamation|reklamatsioon|Reclamation| | 
-|reclamationcomment|rekl_selgitus|Reklselgitus| | +|reclamationcomment|rekl_selgitus|Reclexplanation| | 
-|asset|inventar|Inventar| |+|asset|inventar|Asset| |
 |datafield1|lisa_field1|| | |datafield1|lisa_field1|| |
 |datafield2|lisa_field2|| | |datafield2|lisa_field2|| |
Line 683: Line 707:
 |datafield6|lisa_field6|| | |datafield6|lisa_field6|| |
 |datafield7|lisa_field7|| | |datafield7|lisa_field7|| |
-|intcomment|sisekommentaar|Sisekommentaar| | +|intcomment|sisekommentaar|Internal comment| | 
-|supplier_class|hankija_klass|Klass| | +|supplier_class|hankija_klass|Class| | 
-|supplier_vatcountry|hankija_maa_tasu|KM-maa| local = 0, EU = 1, export = 2 ,  ALT.FROM: customer > 0 | +|supplier_vatcountry|hankija_maa_tasu|VAT-zone| local = 0, EU = 1, export = 2 ,  ALT.FROM: customer > 0 | 
-|supplier_regno|hankija_regnr1|Reg nr 1| | +|supplier_regno|hankija_regnr1|Reg no 1| | 
-|supplier_vatregno|hankija_kmregnr|Km reg nr| | +|supplier_vatregno|hankija_kmregnr|VAT reg no| | 
-|supplier_type|hankija_tyyp|Tüüp| | +|supplier_type|hankija_tyyp|Type| | 
-|confirm|kinnita|Olek| "1" - confirm document |+|confirm|kinnita|State| "1" - confirm document |
  
-==read == +==rows == 
-^XML väli^SQL väli^UI väli^Selgitus+^XML field^SQL field^UI field^Explanation
-|account|konto|Konto| | +|account|konto|Account| | 
-|object|objekt|Objekt ALT.FROM: project | +|object|objekt|Object| ALT.FROM: project | 
-|name|sisu|Sisu|  ALT.FROM: account | +|name|sisu|Content|  ALT.FROM: account | 
-|linetotalwovat|summa|Summa| | +|linetotalwovat|summa|Sum| | 
-|vatcode|kmkood|KMK|  ALT.FROM: supplier > account > object | +|vatcode|kmkood|VAT code|  ALT.FROM: supplier > account > object | 
-|project|projekt|Projekt| | +|project|projekt|Project| | 
-|customer|klient_kood|Klient| | +|customer|klient_kood|Customer| | 
-|item|artikkel|Artikkel| | +|item|artikkel|Item| | 
-|quantity|kogus|Kogus| | +|quantity|kogus|Quantity| | 
-|date1|r_aeg1|Algus| | +|date1|r_aeg1|Start| | 
-|date2|r_aeg2|Lõpp| | +|date2|r_aeg2|End| | 
-|contract|leping|Leping| | +|contract|leping|Contract| | 
-|user|kasutaja|Kasutaja| |+|user|kasutaja|User| |
 |oid|oid|OID| | |oid|oid|OID| |
 |orderrn|trn|| | |orderrn|trn|| |
-|asset|r_inventar|Inventar| | +|asset|r_inventar|Asset| | 
-|price|myygihind|Müügihind| |+|price|myygihind|Sales price| |
 |constant1|konstant1| | | |constant1|konstant1| | |
 |constant2|konstant2| | | |constant2|konstant2| | |
Line 718: Line 742:
 |text3|tekst3|| | |text3|tekst3|| |
 |text4|tekst4|| | |text4|tekst4|| |
-|intcomment|r_sisekommentaar|Sisekommentaar| | +|intcomment|r_sisekommentaar|Internal comment| | 
-|vatsum|km|KM| | +|vatsum|km|VAT| | 
-|rn|rn|Nr| |+|rn|rn|No.| |
  
-==manused == +==attachments == 
-^XML väli^SQL väli^UI väli^Selgitus^+^XML field^SQL field^UI field^Explanation^
 |name |attachment_name | | | |name |attachment_name | | |
 |description |attachment_kirjeldus | | | |description |attachment_kirjeldus | | |
-|code |kood| | for updating excisting attachments, do not send this field for new attachments |+|code |kood| | for updating existing attachments, do not send this field for new attachments |
 |sharepoint_link |cloud_preview_query| | external Sharepoint attachment link  | |sharepoint_link |cloud_preview_query| | external Sharepoint attachment link  |
 |gdrive_link |cloud_gdrive| | external Google Drive attachment link  | |gdrive_link |cloud_gdrive| | external Google Drive attachment link  |
 |ext_link|cloud_ext_link | | external attachment link, must be full external link starting with <code>http://</code>  | |ext_link|cloud_ext_link | | external attachment link, must be full external link starting with <code>http://</code>  |
- +==Purchase invoice transport parameters == 
-==Ostuarve transpordi parameetrid == +TYPE  CODE                      PARAMETER 1  ^ PARAMETER 2  ^ EXPLANATION                                                                                                      
-TÜÜP  KOOD                      PARAMEETER 1  ^ PARAMEETER 2  ^ SELGITUS                                                                                                                          +| XML   | xd_autosupplier           | 1             | PURCHASE      | Automatic creation of a related supplier if the supplier code does not exista unique reg. number is a prerequisite 
-| XML   | xd_autosupplier           | 1             | PURCHASE      | Automaatne seotud hankija loominekui hankija koodi ei eksisteeri, unikaalne regnr on eelduseks                                  +| XML   | xd_autosupplier_autocode  | 0             | PURCHASE      | When creating a related supplierthe code is created in the interface, a unique reg. number is required and system settings for supplier codes are necessary 
-| XML   | xd_autosupplier_autocode  | 0             | PURCHASE      | Seotud hankija loomisel luuakse kood liidesesunikaalne reg.number on vajalik ja hankija koodi süsteemiseadistused on vajalikud  +| XML   | xd_update                 | 0             | PURCHASE      | Allow document update if there are no related documents                                                          
-| XML   | xd_update                 | 0             | PURCHASE      | Luba dokumendi update, kui puuduvad seotud dokumendid                                                                             +| XML   | supplier_update           | 0             | PURCHASE      | Partial update of supplier data, (email, ... ) fields need to be specified in the spec                             
-| XML   | supplier_update           | 0             | PURCHASE      | Hankija andmete osaline update, (email, ... ) väljad on vaja spekis täpsustada                                                    +| XML   | xd_object                 | VEEB          | PURCHASE      | Default objectif not sent                                                                                      
-| XML   | xd_object                 | VEEB          | PURCHASE      | Vaikimisi objektkui ei saadeta                                                                                                  +| XML   | xd_confirm                | 0             | PURCHASE      | Automatic document confirmationthis can also be controlled with the XML field "confirm"   
-| XML   | xd_confirm                | 0             | PURCHASE      | Automaatne dokumendi kinnitamineseda saab ka juhtida XML väljaga "confirm"                                                      | +===Resources ===
- +
- +
-===Ressursid ===+
  
 what=resource what=resource
-[[https://login.directo.ee/xmlcore/cap_xml_direct/xml_IN_ressursid.xsd|Skeem ]]+[[https://login.directo.ee/xmlcore/cap_xml_direct/xml_IN_ressursid.xsd|Schema ]]
  
  
  
-== Päis: == +== Header: == 
-^XML väli^SQL väli^UI väli^Selgitus^+^XML field^SQL field^UI field^Explanation^
 |session_id|x| | | |session_id|x| | |
 |ext_unique_id|ext_unique_id| | | |ext_unique_id|ext_unique_id| | |
Line 770: Line 791:
 |confirm|kinnita| | | |confirm|kinnita| | |
  
-== Read: == +== Rows: == 
-^XML väli^SQL väli^UI väli^Selgitus^+^XML field^SQL field^UI field^Explanation^
 |item|artikkel| | | |item|artikkel| | |
 |quantity|kogus| | | |quantity|kogus| | |
Line 815: Line 836:
 |delete|kustuta| | | |delete|kustuta| | |
 |rn|rn| | | |rn|rn| | |
 +==== Outputs ====
  
-==== Väljundid ====+=== Items (Items) ===
  
-=== Artiklid (Items) ===+  * what=item  [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_artiklid.xsd|Schema ]] \\ Filters: class,code,type,barcode,supplier,supplieritem,closed,ts
  
-  * what=item  [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_artiklid.xsd|Skeem ]] \\ Filtridclass,code,type,barcode,supplier,supplieritem,closed,ts+== Item stock limits (Item stock limits) == 
 +  * what=itemstocklimit [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_artiklid_laolimiidid.xsd|Schema ]] \\ Filters: code,stock,ts
  
-== Artikli laolimiidid (Item stock limits) == +== Item packages (Item packages) == 
-  * what=itemstocklimit [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_artiklid_laolimiidid.xsd|Skeem ]] \\ Filtrid: code,stock,ts+  * what=itempackage [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_artiklid_pakendid.xsd|Schema ]] \\ Filters: code,ts
  
-== Artikli pakendid (Item packages) == +== Item relations (Item relations) == 
-  * what=itempackage [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_artiklid_pakendid.xsd|Skeem ]] \\ Filtrid: code,ts+  * what=itemrelitem [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_artiklid_seotud.xsd|Schema ]] \\ Filters: code,ts
  
-== Seotud artikli (Item relations) == +=== Customers (Customers) ===
-  * what=itemrelitem [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_artiklid_seotud.xsd|Skeem ]] \\ Filtrid: code,ts+
  
-=== Kliendid (Customers) ===+  * what=customer [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_kliendid.xsd|Schema ]] \\ Filters: code,loyaltycard,regno,email,phone,closed,ts
  
-  * what=customer [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_kliendid.xsd|Skeem ]] \\ Filtrid: code,loyaltycard,regno,email,phone,closed,ts +=== Suppliers (Suppliers) ===
- +
-=== Hankijad (Suppliers) ===+
  
   * what=supplier   * what=supplier
-  * [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_hankijad.xsd|Skeem ]] \\ +  * [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_hankijad.xsd|Schema ]] \\ 
-  * Filtrid: code,regno,email,closed,ts +  * Filters: code,regno,email,closed,ts
- +
-=== Laoseis (Stock levels) === +
-  * what=stocklevel [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_laoseis.xsd|Skeem ]] \\ +
-  * what= stocklevel_sn [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_laoseis_sn.xsd|Skeem ]] \\ +
-  * what=stocklevel_variant [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_laoseis_variandid.xsd|Skeem ]] \\ +
-  * Filtrid: code,stock,ts +
- +
-=== Hinnavalemi read (Price formula rows) ===+
  
-  * what=priceformularow [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_hinnavalemid.xsd|Skeem ]] \\ Filtridclass,code,ts+=== Stock levels (Stock levels) === 
 +  * what=stocklevel [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_laoseis.xsd|Schema ]] \\ 
 +  * what= stocklevel_sn [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_laoseis_sn.xsd|Schema ]] \\ 
 +  * what=stocklevel_variant [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_laoseis_variandid.xsd|Schema ]] \\ 
 +  * Filters: code,stock,ts
  
-=== Artikli klassid (Item classes) ===+=== Price formula rows (Price formula rows) ===
  
-  * what=itemclass [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_artikliklassid.xsd|Skeem ]] \\ Filtrid: code,master+  * what=priceformularow [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_hinnavalemid.xsd|Schema ]] \\ Filtersclass,code,ts
  
-=== Arved (Invoices) ===+=== Item classes (Item classes) ===
  
-  * what=invoice [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_arved.xsd|Skeem ]] \\ Filtridnumber,customercode,transactiondate,date1,date2,ts, ordernumber+  * what=itemclass [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_artikliklassid.xsd|Schema ]] \\ Filterscode,master
  
-=== Tellimused (Orders) ===+=== Invoices (Invoices) ===
  
-  * what=order [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_tellimused.xsd|Skeem ]] \\ Filtrid: number,date1,date2,ts, projekt, customerordernumber, stock, status+  * what=invoice [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_arved.xsd|Schema ]] \\ Filters: number,customercode,transactiondate,date1,date2,ts, ordernumber
  
-=== Finantskanded (Transactions) ===+=== Orders (Orders) ===
  
-  * what=transaction [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_kanded.xsd|Skeem ]] \\ Filtrid: number,date1,date2,ts+  * what=order [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_tellimused.xsd|Schema ]] \\ Filters: number,date1,date2,ts, projekt, customerordernumber, stock, status
  
-=== Laekumised (Receipts) ===+=== Financial transactions (Transactions) ===
  
-  * what=receipt [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_laekumised.xsd|Skeem ]] \\ Filtrid: number,date1,date2,ts+  * what=transaction [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_kanded.xsd|Schema ]] \\ Filters: number,date1,date2,ts
  
-=== Ostuarved (Purchase) ===+=== Receipts (Receipts) ===
  
-  * what=purchase [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_oarved.xsd|Skeem ]] \\ Filtrid: number,date1,date2,supplier,confirmed,status,ts+  * what=receipt [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_laekumised.xsd|Schema ]] \\ Filters: number,date1,date2,ts
  
-=== Ressursid (Resources) === +=== Purchase Invoices (Purchase) ===
-  * what=resource [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_ressursid.xsd|Skeem ]] \\  +
-  * Filtrid: number,confirmed,ts+
  
-=== Kustutatud dokumendid (Deleted documents ) ===+  * what=purchase [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_oarved.xsd|Schema ]] \\ Filters: number,date1,date2,supplier,confirmed,status,ts
  
-  * what=delete [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_kustutamised.xsd|Skeem ]] \\ Filtrid: number,code,document,ts+=== Resources (Resources) === 
 +  * what=resource [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_ressursid.xsd|Schema ]] \\  
 +  * Filters: number,confirmed,ts
  
 +=== Deleted documents (Deleted documents ) ===
  
 +  * what=delete [[https://login.directo.ee/xmlcore/cap_xml_direct/ws_kustutamised.xsd|Schema ]] \\ Filters: number,code,document,ts
en/xml_direct.1754288087.txt.gz · Last modified: 2025/08/04 09:14 by toomas

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki