This page is not fully translated, yet.
Warehouse Management Interface WMS Direct – enter data only once and directly at the point of origin
Users of Directo business software who deal with warehouse management and production can simplify and automate their workflows by using the new interface WMS Direct.
WMS Direct is a new standard interface in Directo business software for managing logistics and warehouse documents with external WMS solutions (WMS = Warehouse Management System). Using this powerful new interface allows you to handle various warehouse processes completely paperless in an external application (goods receipt, order picking, inventories, production, etc.). With WMS Direct, you can do this quickly, easily, and securely. In short, it saves your time and minimizes the risk of errors.
WMS Direct features:
In summary, WMS Direct means that warehouse-related data is always entered only once, directly at the point and time of origin.
The WMS Direct interface costs €199/month (excluding VAT). See the price list. The number of transactions and devices accessing the interface is not limited per monthly package.
NB! This amount only covers the use of the WMS Direct solution in Directo software; necessary scanners and other hardware are additional (not a service provided by Directo).
WMS Direct is developed for seamless cooperation with WMS solutions, and users do not need to worry about obsolescence or changes due to technological evolution, as all updates are included in the monthly fee. Installation costs are also included in the monthly fee.
WMS Direct can be used with any warehouse management system if the service provider is willing to develop their software to allow integration with Directo. To order the service, contact us, and we will help you start integrating Directo with your current WMS software or recommend reliable WMS providers we have worked with, who already have the necessary developments for using the WMS Direct interface.
Some WMS service providers with experience in WMS Direct:
| Output | Input | ||||||
|---|---|---|---|---|---|---|---|
| Header | Row | ||||||
| View | Add | Edit | Delete | Add | Edit | Delete | |
| Articles | x | - | x | - | |||
| Article classes | x | ||||||
| Batch additional info | x | - | - | - | x | x | - |
| Batch classes | x | - | - | - | - | - | - |
| Recipes | x | ||||||
| Article history | x | ||||||
| Warehouses | x | ||||||
| Stock levels free | x | ||||||
| Stock levels shelf | x | ||||||
| Customers | x | ||||||
| Suppliers | x | ||||||
| Users | x | ||||||
| Objects | x | ||||||
| Projects | x | ||||||
| Shelves | x | ||||||
| Work centers | x | ||||||
| Sales orders | x | ||||||
| Deliveries | x | - | x | - | -4 | x | - |
| Receipts | x | x/- 2 | x | - | x | x | - |
| Inventories | x | x | x | - | x | x | x |
| Warehouse movements | x | x | x | - | x | x | - |
| Productions | x | x | x | - | x | x | - |
| Purchase orders | x | ||||||
| Write-offs | x | x | x | - | x | x | - |
| Invoice (warehouse affecting) | x | x | x | - | x | x | - |
| Returns | x | x | x | - | x | x | - |
| Deletions | x | ||||||
2 - Create receipt based on purchase order number, and create receipt if no purchase order exists
4 - Rows can be added to delivery only if the item exists in the original delivery
The interface assumes that documents are created in Directo. If a document is created via the interface, all required information (account, objects, projects, etc.) must be provided, as the interface cannot behave like the Directo UI. The interface is standard, i.e., uniform for all clients, and all developments are the same for all clients. Output interfaces show all records, and restrictions can be applied using query filters.
To reduce data volume, it is necessary to use the TimeStamp (ts) filter.
Compared to usual xmlcore interfaces, WMS Direct uses a new common endpoint. Accordingly, there are some differences to consider.
Access endpoint (Base URL): https://login.directo.ee/xmlcore/wmsd/xmlcore.asp
Access requires a token. Finding the token.
The token replaces the older appkey and database name method.
The token must be sent via POST in the variable TOKEN (similar to an HTML form submission) to the URL to get results. Incorrect or incorrectly sent tokens return <result type=“5” desc=“Unauthorized”/>
If the TOKEN variable is not used, the response is <err>token required</err>
CURL example
curl --location 'https://login.directo.ee/xmlcore/wmsd/xmlcore.asp' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'token=••••••' \ --data-urlencode 'get=1' \ --data-urlencode 'what=xxxxx' \ --data-urlencode 'ts=xx.xx.xxxx'
To find the interface XML key:
1. Log in to Directo with a user having SUPER rights
2. Open the employee card 'XML'
3. Go to the Admin tab
4. Go to the XML interfaces section
5. On the line WMS Direct click the button
to view the key
Test web interface: https://login.directo.ee/xmlcore/wmsd/webupload.html
Output and Input for Postman can be downloaded here and then imported as a Postman Collection for testing.
Schema: https://login.directo.ee/xmlcore/wmsd/ws_artiklid.xsd
what=item
get=1
Filter “class”,“code”,“type”,“barcode”,“supplier”,“supplieritem”,“closed”,“ts”
Schema: https://login.directo.ee/xmlcore/wmsd/xml_IN_artiklid.xsd
what=item
put=1
Schema: https://login.directo.ee/xmlcore/wmsd/ws_artikliklassid.xsd
what=itemclass
get=1
Filter “code”,“master”
For entering info into batch/sn additional fields for a specific article batch. Batch must already exist. Do not use field qty!!!
Schema: https://login.directo.ee/xmlcore/wmsd/xml_IN_sn_lisavaljad.xsd
what=sndatafield
put=1
For retrieving batch/sn additional field info by batch/sn and article code
Schema: https://login.directo.ee/xmlcore/wmsd/ws_sn_lisavaljad.xsd
what=sndatafield
get=1
Filter: “code”,“class”,“sn”
Needed to get batch/sn structure info
Schema: https://login.directo.ee/xmlcore/wmsd/ws_sn_lisavalja_klassid.xsd
what=sndatafieldclass
get=1
Filter “code”,“class”
type explanation: 1=number; 3=time; 4=option (See also: Lisaväljad)
Schema: https://login.directo.ee/xmlcore/wmsd/ws_retseptid.xsd
what=recipe
get=1
Filter “code”,“ts”
Only outputs. Can query stock by TimeStamp using ts filter. Using ts filter shows also items whose quantity changed to zero during the period. Without ts, only quantities greater than zero are shown.
First time, load all stock without using
ts filter!
Schema: https://login.directo.ee/xmlcore/wmsd/ws_laoseis.xsd
what=stocklevel
get=1
Filter “code”,“stock”,“ts”
Note:
Schema: https://login.directo.ee/xmlcore/wmsd/ws_laoseis_riiul.xsd
what=shelfstocklevel
get=1
Filter “code”,“stock”,“shelf”,“ts”
Article history is intended for viewing the movement history (in-out movements) of an item.
Schema: https://login.directo.ee/xmlcore/wmsd/ws_artikli_ajalugu.xsd
what=itemhistoryrow
get=1
Filter “code”,“stock”,“type”,“date1”,“date2”
Schema: https://login.directo.ee/xmlcore/wmsd/ws_laod.xsd
what=stock
get=1
Filter “code”,“closed”
https://login.directo.ee/xmlcore/wmsd/ws_kliendid.xsd
what=customer
get=1
Filter “code”,“loyaltycard”,“regno”,“email”,“phone”,“closed”,“ts”,“class”
https://login.directo.ee/xmlcore/wmsd/ws_hankijad.xsd
what=supplier
get=1
Filter “code”,“class”,“regno”,“email”,“type”,“closed”,“ts”
Schema: https://login.directo.ee/xmlcore/wmsd/ws_kasutajad.xsd
what=user
get=1
Filter “code”,“internalcode”,“idnumber”,“closed”,“email”,“ts”
Schema: https://login.directo.ee/xmlcore/wmsd/ws_objektid.xsd
what=object
get=1
Filter “code”,“master”,“type”,“level”,“ts”
Schema: https://login.directo.ee/xmlcore/wmsd/ws_projektid.xsd
what=project
get=1
Filter “code”,“customer”,“supplier”,“orderer”,“contract”,“closed”,“ts”
Schema: https://login.directo.ee/xmlcore/wmsd/ws_riiulid.xsd
what=shelf
get=1
Filter “stock”
Schema: https://login.directo.ee/xmlcore/wmsd/ws_tookeskused.xsd
what=workcenter
get=1
Filter “code”
Sales order documents are informative and output-only.
Schema: https://login.directo.ee/xmlcore/wmsd/ws_tellimused.xsd
what=order
get=1
| Filter | Description |
|---|---|
| number | Sales order number |
| customercode | Customer code |
| class | Customer class |
| orderercode | Orderer code |
| date1,date2 | Order date range |
| object | Order object |
| stock | Warehouse |
| confirmed | Confirmed order |
| ts | Timestamp – last modification |
Schema: https://login.directo.ee/xmlcore/wmsd/ws_lahetused.xsd
what=delivery
get=1
Filter “number”,“ordernumber”,“customercode”,“status”,“stock”,“confirmed”,“ts”
In the delivery interface, existing delivery documents can be modified.
Schema: https://login.directo.ee/xmlcore/wmsd/xml_IN_lahetused.xsd
what=delivery
put=1
The delivery number locates the order and triggers the invoice creation procedure for all delivered but unbilled items. The interface returns the created invoice number.
In delivery input, confirm=2 means confirm and create confirmed invoice (not direct invoice!).
If a delivery needs to be locked so that the document cannot be modified in Directo while the WMS system is processing it, statuses and Directo setting “Delivery statuses that lock the delivery” must be used.
The receipt interface is for creating Receipt documents based on Purchase Orders. It is recommended to post the entire document at once to avoid complexity, though posting line by line is possible.
Schema: https://login.directo.ee/xmlcore/wmsd/ws_sissetulekud.xsd
what=stockreceipt
get=1
Filter “number”,“date1”,“date2”,“supplier”,“confirmed”,“status”,“ts”,“stock”
The receipt interface allows modification of existing documents. To create a new document, the relation to the purchase order must be posted exactly (see Exceptions).
Schema: https://login.directo.ee/xmlcore/wmsd/xml_IN_sissetulekud.xsd
what=stockreceipt
put=1
| TYPE | CODE | PARAM1 | PARAM2 | DESCRIPTION |
|---|---|---|---|---|
| XML | wmsd_confirm | 0 | STOCKRECEIPT | Automatic document confirmation, can also be controlled with XML field “confirm” |
| XML | wmsd_stock | PL | STOCKRECEIPT | Default warehouse if not sent |
| XML | wmsd_supplier_update | 0 | STOCKRECEIPT | Partial supplier update (email, etc.); fields must be specified in spec |
| XML | wmsd_autosupplier | 0 | STOCKRECEIPT | Automatic creation of related supplier if supplier code does not exist, unique regno required |
| XML | wmsd_autosupplier_autocode | 0 | STOCKRECEIPT | Code is created in the interface when creating a related supplier; unique reg. number required; Directo system settings needed |
| XML | wmsd_series | DOK | STOCKRECEIPT | Series for creating document number in interface, “uniqueid” transport parameter must be configured; schema must include “ext_unique_id” |
| XML | wmsd_uniqueid | lisa_field7 | STOCKRECEIPT | Database field for external unique identifier (e.g., customer_order, lisa_field7, customer card); if document number/code not sent, “ext_unique_id” must exist in schema |
| XML | wmsd_ladu_sis_kreedit | xxxxxxx | STOCKRECEIPT | Default account; used if missing in interface or supplier card |
| XML | wmsd_valuuta | EUR | STOCKRECEIPT | Default currency; if missing, EUR is used |
<rows> <row item=“8000-5669” rn=“2” qty=“1.000” serialnumber=“ZZZ”/> <row item=“8000-5669” rn=“2” qty=“1.000” serialnumber=“AAA”/> </rows> Original row deleted<?xml version="1.0" encoding="utf-8"?>
<stockreceipts>
<stockreceipt number="100001" supplier="0001" suppliername="Directo OÜ" stock="TL1" user="SUPER" purchaseorder="100001">
<rows>
<row item="0001" qty="10" orn="1" />
<row item="0002" qty="10" purchaseorder="100002" orn="1" />
</rows>
</stockreceipt>
</stockreceipts>
To perform inventory:
NB! If inventory document number is missing, interface creates a new document!
Schema: https://login.directo.ee/xmlcore/wmsd/ws_inventuurid.xsd
what=taking
get=1
Filter “number”,“chain”,“stock”,“confirmed”,“ts”
Interface allows adding and modifying existing inventory documents.
Schema: https://login.directo.ee/xmlcore/wmsd/xml_IN_inventuurid.xsd
what=taking
put=1
Before inventory:
Movement interfaces can be used for transfers between warehouses, rearrangement within shelves (shelf-based inventory)
Directo displays status info on movement document; status field not in schema
Status field in Directo
| Database | Directo browser | Description |
| 0 | 0 | Not received or not confirmed |
| 1 | O | Partially received and confirmed |
| 2 | L | Received and confirmed |
Field parentmovement
Used when one movement is part of a series of sequential movements. Links each movement to its original or previous movement (“parent”).
Allows:
Example: Item moved from warehouse (movement A) to intermediate (movement B) to final destination (movement C)
This allows system (or API) to trace back to original movement.
Field optional for simple movements; important for complex or multi-step movements.
Can modify and add movement documents.
Schema https://login.directo.ee/xmlcore/wmsd/xml_IN_liikumised.xsd
what=movement
put=1
To lock a movement document during WMS processing, statuses and Directo setting “Warehouse movement statuses that lock the movement” must be used.
Schema https://login.directo.ee/xmlcore/wmsd/ws_liikumised.xsd
what=movement
get=1
Filter “number”,“fromstock”,“tostock”,“confirmed”,“ts”
Schema: https://login.directo.ee/xmlcore/wmsd/ws_tootmised.xsd
what=production
get=1
Filter “number”,“productiondate”,“status”,“kinnitatud”,“ts”
Can modify and add production documents.
Schema: https://login.directo.ee/xmlcore/wmsd/xml_IN_tootmised.xsd
what=production
put=1
| TYPE | CODE | PARAM1 | PARAM2 | DESCRIPTION |
|---|---|---|---|---|
| XML | wmsd_object | PRODUCTION | Default object if not sent | |
| XML | wmsd_account | PRODUCTION | Default account if not sent |
Schema https://login.directo.ee/xmlcore/wmsd/ws_otellimused.xsd
what=purchaseorder
get=1
Filter “number”,“date1”,“date2”,“supplier”,“confirmed”,“status”,“type”,“ts”,“stock”
To create receipt from purchase order, post exactly same data and ensure receipt references PO lines!
Schema: https://login.directo.ee/xmlcore/wmsd/ws_mahakandmised.xsd
what=writeoff
get=1
Filter “number”,“status”,“project”,“stock”,“ts”
Add and modify documents. See also projektid
Schema: https://login.directo.ee/xmlcore/wmsd/xml_IN_mahakandmised.xsd
what=writeoff
put=1
WRITE-OFF ACCOUNT
Schema https://login.directo.ee/xmlcore/wmsd/ws_arved.xsd
what=invoice
get=1
Filter “number”,“customercode”,“transactiondate”,“date1”,“date2”,“ts”,“status”
Add and modify documents.
https://login.directo.ee/xmlcore/wmsd/xml_IN_arved.xsd
what=invoice
put=1
Default parameters not required.
| TYPE | CODE | PARAM1 | PARAM2 | DESCRIPTION |
|---|---|---|---|---|
| XML | wmsd_changestock | 0 | INVOICE | Inventory affecting invoice (Param.1=1 modifies stock) |
| XML | wmsd_uniqueid | lisa_field1 | INVOICE | Database field for external unique identifier; must exist in schema if doc number/code not sent |
| XML | wmsd_autocustomer_autocode | 0 | INVOICE | Creates customer code automatically; unique email required; system settings required |
| XML | wmsd_update | 1 | INVOICE | Allow document update if related documents missing |
| XML | wmsd_series | DOK | INVOICE | Series for document number creation; uniqueid transport parameter must be configured; schema must include “ext_unique_id” |
| XML | wmsd_customer_update | 0 | INVOICE | Partial update of customer data (name, email, phone) |
| XML | wmsd_object | INVOICE | Default object if not sent | |
| XML | wmsd_salesman | XML | INVOICE | Default salesperson |
| XML | wmsd_stock | PL | INVOICE | Default warehouse if not sent |
| XML | wmsd_confirm | 0 | INVOICE | Automatic document confirmation; can also be controlled via XML “confirm” |
| XML | wmsd_paymentvatcode | 0 | INVOICE | VAT code for related receipt line; must exist in schema |
| XML | wmsd_confirmpayment | 1 | INVOICE | Automatic confirmation of related receipt; must exist in schema |
| XML | wmsd_posinvoice | 0 | INVOICE | 1=POS invoice |
| XML | wmsd_autocustomer | 0 | INVOICE | Automatic related customer creation if code does not exist |
| XML | wmsd_2_salesman | TEST | INVOICE | Default salesperson |
| XML | wmsd_updateconfirmed | 1 | INVOICE | Allows modifying header fields on confirmed document |
Schema: https://login.directo.ee/xmlcore/wmsd/ws_tagastused.xsd
what=stockreturn
get=1
Filter number, customercode, status, project, stock, confirmed, ts
Create and modify documents.
Schema: https://login.directo.ee/xmlcore/wmsd/xml_IN_tagastused.xsd
what=stockreturn
put=1
confirm=1, document confirmed and cannot be changed
Interface outputs information about all deletions in Directo!
Schema: https://login.directo.ee/xmlcore/wmsd/ws_kustutamised.xsd
what=delete
get=1
Filters: document, ts
Document filter explanations:
| document | name |
|---|---|
| allahindluskood | Discount codes |
| ametikoht | Positions |
| artikkel | Articles |
| aal_retsept | AAL recipes |
| variant | Variants |
| aklassid | Article classes |
| arvutid | Computers |
| color | Colors |
| kurss | Exchange rates |
| elukoht | Residences |
| event_prioriteedid | Event priorities |
| event_statuses | Event statuses |
| event_types | Event types |
| event | Events |
| eventk | Event repetitions |
| aastaaru | Annual reports |
| algsaldo | Opening balances |
| bilanss | Balance |
| fin_kaive | Revenue declaration |
| fin_kasu | Profit statement |
| fin_stat | Financial – Statistics |
| eelarve | Budgets |
| kanne | Entries |
| finkm | VAT codes |
| konto | Accounts |
| kulutus | Expenses |
| fin_kulutus_marsruut | Expense routes |
| fin_kulutus_tyyp | Expense types |
| objekt | Objects |
| obj_tase | Object levels |
| fin_retseptid | Financial recipes |
| tasaarveldus | Offsetting |
| valjamaks | Payouts |
| valjavote | Bank statements |
| valjavotte_reeglid | Bank statement import rules |
| hankija | Suppliers |
| hankija_klass | Supplier classes |
| haridus | Educations |
| hinnakiri | Price lists |
| int_pv_tegevused | Fixed assets activities |
| inventar_pv | Fixed assets |
| inventar_vv | Small assets |
| inventar | Assets |
| kl_inventar | Customer assets |
| inventar_hinnamuutus | Fixed assets revaluation |
| inventar_id | Asset ID |
| inventar_inventuur | Asset inventory |
| inventar_mahakandmine | Asset write-off |
| fin_varamah | Reason for asset write-off |
| inventar_muutused_pv | Fixed asset changes |
| inventar_muutused_vv | Small asset changes |
| inv_klass | Asset classes |
| inv_reg_klass | Asset depreciation classes |
| kalendrimall | Calendar template |
| kampaania | Campaigns |
| kassaK | Correspondences |
| kassa_liikumine | Cash movements |
| kassain | Cash in |
| kassaT | Payment methods |
| kassaout | Cash out |
| user | Users |
| personal | Staff |
| kas_klass | User groups |
| keel | Languages |
| klient | Customers |
| klklassid | Customer classes |
| klient_inventuur | Customer inventory |
| kl_myyk | Customer sales |
| finkmmaa | VAT countries |
| kontakt | Contacts |
| asumaad | Countries |
| ladu_cn8 | CN8 codes |
| hinnamuutus | Price changes |
| hinnamuutused_staatused | Price change statuses |
| hinnamuutused_tyybid | Price change types |
| inventuur | Inventories |
| kuluarvestus | Expense accounting |
| lahetus | Deliveries |
| ladu_lahetused_staatused | Delivery statuses |
| lahting | Warehouse delivery conditions |
| ladulah | Warehouse delivery methods |
| liikumine | Movements |
| maha | Write-offs |
| sissetulek | Receipts |
| tagastus | Returns |
| tehinguliigid | Transaction types |
| ladu_tellimus | Warehouse orders |
| ltell_staatused | Warehouse order statuses |
| ladu_tollikood | Customs codes |
| laod | Warehouse list |
| leping | Contracts |
| lepingu_staatused | Contract statuses |
| lepingu_tyybid | Contract types |
| lepklassid | Contract classes |
| ale_grupp | Discount groups |
| arve | Invoices |
| kassa_arve | Cash invoices |
| myygi_eelarve | Sales budgets |
| hinnavalem | Price formulas |
| laekumine | Receipts |
| tingimus | Payment terms |
| myygipaevad | Sales days |
| naitude_seosed | Reading connections |
| nousolekute_kanalid | Consent channels |
| nousolekute_liigid | Consent types |
| oarve | Purchase invoices |
| tasumine | Payments |
| osakond | Departments |
| oskused | Skills |
| ostpakkumine | Purchase offers |
| ostugrupid | Purchase groups |
| otellimus | Purchase orders |
| otell_staatused | Purchase order statuses |
| pakendi_klassid_aruanne | Package report classes |
| pakkumine | Offers |
| pakkumise_staatused | Offer statuses |
| pakkeyksuse_klassid | Package unit classes |
| pakkeyksus | Package units |
| pank | Banks |
| per_ajad | Work times |
| per_liigid | Time types |
| per_lisatasud | Salary additions |
| per_lopu_alus | Employment termination bases |
| maks_valem | Tax formulas |
| palk | Salary |
| palgagrupid | Salary groups |
| palk_valem | Salary formulas |
| per_pyhad | Holidays |
| per_tasu | Salary payments |
| periood | Periods |
| projekt | Projects |
| proj_stat | Project statuses |
| proj_tyyp | Project types |
| ressurs | Resources |
| retseptid | Recipe list |
| seeria | Series |
| seeriaFin | Financial series |
| seisaku_pohjused | Downtime reasons |
| sn_klassid | Serial number classes |
| statj | Statistical distribution |
| statk | Statistics locations |
| tagastuskood | Return codes |
| taitur | Executors |
| tegevusplaan | Activity plans |
| tellimus | Orders |
| tell_jargud | Order sequences |
| tell_staatused | Order statuses |
| tell_tyybid | Order types |
| toode_staatused | Production statuses |
| aru_toode_res | Product resource |
| tookeskuse_grupp | Workcenter group |
| tookeskused | Workcenters |
| tookeskuste_liinid | Workcenter lines |
| tr_params | Transport parameters |
| tr_dok | Document transport |
| uuringu_tyybid | Study types |
| uuring | Studies |
| valuuta | Currencies |
| yld_aadressid | Addresses |
| yld_aadressid_tyybid | Address types |
| lisavaljad | Extra fields |
| datatyyp | Extra data types |
| data_relation | Extra data relations |
| maakond | Counties |
| menetlus_mallid | Procedure templates |
| yld_otsing | General search |
| tegevus | Activities |
| tekstid | Texts |
type=“0” means success
| type | description |
|---|---|
| 0 | Created |
| 0 | Updated (if document update feature is used) |
| 0 | Confirmed (if auto document confirmation is used) |
| 2 | Too secure location |
| 3 | Database is moved to a new server. Takes about 15 minutes |
| 4 | Database is closed - user count is zero |
| 5 | Unauthorized |
| 6 | Invalid user given |
| 7 | Invalid IP source given |
| 8 | Invalid xml given: … |
| 9 | Error on import: … |
| 11 | Duplicate |
| 12 | Missing document identifier |
| 13 | Missing customer code / Missing customer regno (if code is not used) |
| 14 | Update not allowed (if document is committed or has related documents) |
| 17 | Document insert failed |
| 18 | uniqueid field not found (needs to be set up correctly in transport parameters) |
| 19 | Removal of document not allowed |
| 29 | Not confirmed: … (if auto document confirmation is used) |
| 30 | Created (creation of related document like customer, payment etc.) |
| 30 | Updated (update of related document like customer, payment etc.) |
| 30 | Confirmed (confirmed related document like payment etc.) |
| 31 | … not found (prerequisite of creation of related document like customer, payment etc. not met) |
| 39 | … not confirmed: … (if auto document confirmation for related document is in use) |
| 99 | No processable XML data found for document: … |