Overview
#
Nervatura
gRPC specification. For more examples, see
Nervatura example application
Table of Contents
#
Messages
#
Address
#
RequestUpdate Key->ID keys:
-
id
: Value is a generated unique key identifier: {nervatype}/{refnumber}~{rownumber}. The rownumber is the order of multiple {nervatype}/{refnumber} keys. For example: customer/DMCUST/00001~1
-
nervatype
: Valid values: customer, employee, event, place, product, project, tool, trans
-
ref_id
: Valid values: customer/{custnumber}, employee/{empnumber}, event/{calnumber}, place/{planumber}, product/{partnumber},
project/{pronumber}, tool/{serial}, trans/{transnumber}
Barcode
#
RequestUpdate Key->ID keys:
-
id
: Barcode code
-
barcodetype
: Valid values: CODE_128, CODE_39, EAN_13, EAN_8, QR
-
product_id
: Product partnumber
Field |
Type |
Description |
id |
int64 |
|
code |
string |
Each product can be connected to any number of bar codes, but the code must remain unique to ensure that the product is clearly identifiable. |
product_id |
int64 |
Reference to
Product.id |
description |
string |
Comment related to the barcode. Informal, has no role in identification. |
barcodetype |
int64 |
Reference to
Groups.id (only where groupname = ‘barcodetype’). |
qty |
double |
The actual amount of the products identified by the barcode. For example can be used for packaged goods, tray packaging. |
defcode |
bool |
If more than one bar code is assigned, this will be the default. Because of the uniqueness of the barcode the product is always clearly identifiable, but in reverse case (eg. in case the barcode should be printed on a document) we must assign one being the default for that product. |
RequestUpdate Key->ID keys:
-
id
: The value is a generated constant key identifier: {nervatype}/{refnumber}~{rownumber}. The rownumber is the order of multiple {nervatype}/{refnumber} keys.
-
nervatype
: Valid values: customer, employee, event, place, product, project, tool, trans
-
ref_id
: Valid values: customer/{custnumber}, employee/{empnumber}, event/{calnumber}, place/{planumber}, product/{partnumber}, project/{pronumber}, tool/{serial}, trans/{transnumber}
Currency
#
RequestUpdate Key->ID keys:
Field |
Type |
Description |
id |
int64 |
|
curr |
string |
The ISO 4217 code of the currency. |
description |
string |
The name of the currency. |
digit |
int64 |
The number of decimal places used for recording and rounding by the program. Default: 2 |
defrate |
double |
Default Rate. You can specify an exchange rate vs. the default currency, which will be used by the reports. |
cround |
int64 |
Rounding value for cash. Could be used in case the smallest banknote in circulation for that certain currency is not 1. |
metadata |
repeated MetaData |
Currency meta data |
Customer
#
RequestUpdate Key->ID keys:
Field |
Type |
Description |
id |
int64 |
|
custtype |
int64 |
Reference to
Groups.id (only where groupname = ‘custtype’) |
custnumber |
string |
Unique ID. If you set it to numberdef, it will be generated at the first data save. The format and value of the next data in row is taken from the numberdef (numberkey = custnumber) data series. |
custname |
string |
Full name of the customer |
taxnumber |
string |
|
account |
string |
|
notax |
bool |
Tax-free |
terms |
int64 |
Payment per. |
creditlimit |
double |
Customer’s credit limit. Data is used by financial reports. |
discount |
double |
If new product line is added (offer, order, invoice etc.) all products will receive the discount percentage specified in this field. If the product has a separate customer price, the value specified here will not be considered by the program. |
notes |
string |
|
inactive |
bool |
|
metadata |
repeated MetaData |
Customer meta data |
Deffield
#
RequestUpdate Key->ID keys:
-
id
: Deffield fieldname
-
nervatype
: Valid values: address, barcode, contact, currency, customer, employee, event, item, link, log, movement, payment, price, place, product, project, rate, tax, tool, trans, setting
-
subtype
: All groupvalue from Groups, where groupname equal custtype, placetype, protype, toolgroup, transtype
-
fieldtype
: Valid values: bool, date, time, float, integer, string, valuelist, notes, urlink, password, customer, tool, transitem, transmovement, transpayment, product, project, employee, place
Field |
Type |
Description |
id |
int64 |
|
fieldname |
string |
|
nervatype |
int64 |
Reference to
Groups.id (only where groupname = ’nervatype') |
oneof _subtype.subtype |
optional int64 |
Reference to
Groups.id (where groupname in (‘custtype’,‘placetype’,’ protype’,’toolgroup’,’transtype’)) |
fieldtype |
int64 |
Reference to
Groups.id (only where groupname = ‘fieldtype’) |
description |
string |
|
valuelist |
string |
If fieldtype=valuelist: valid values are listed, separated by ~ |
addnew |
bool |
When selected, the attribute in case of adding a new element (eg a new customer or employee is created) will automatically be created with the default value according to its type and also will be attached to the new element. |
visible |
bool |
Can appear or not (hidden value) on the entry forms |
readonly |
bool |
The value of the attribute can not be changed in the program interface |
Employee
#
RequestUpdate Key->ID keys:
-
id
: Employee empnumber
-
usergroup
: All groupvalue from Groups, where groupname equal usergroup
-
department
: All groupvalue from Groups, where groupname equal department
Field |
Type |
Description |
id |
int64 |
|
empnumber |
string |
Unique ID. If you set it to numberdef, it will be generated at the first data save. The format and value of the next data in row is taken from the numberdef (numberkey = empnumber) data series. |
oneof _username.username |
optional string |
Database login name. Should be unique on database level. |
usergroup |
int64 |
Reference to
Groups.id (only where groupname = ‘usergroup’) |
oneof _startdate.startdate |
optional string |
|
oneof _enddate.enddate |
optional string |
|
oneof _department.department |
optional int64 |
Reference to
Groups.id (only where groupname = ‘department’) |
registration_key |
string |
|
inactive |
bool |
|
metadata |
repeated MetaData |
Employee meta data |
Event
#
RequestUpdate Key->ID keys:
-
id
: Event calnumber
-
nervatype
: Valid values: customer, employee, place, product, project, tool, trans
-
ref_id
: Valid values: customer/{custnumber}, employee/{empnumber}, place/{planumber}, product/{partnumber}, project/{pronumber}, tool/{serial}, trans/{transnumber}
-
eventgroup
: All groupvalue from Groups, where groupname equal eventgroup
Fieldvalue
#
RequestUpdate Key->ID keys:
-
id
: The value is a generated constant key identifier: {refnumber}~~{fieldname}~{rownumber}. The rownumber is the order of multiple {refnumber}~~{fieldname} keys.
-
ref_id
: Valid values: {nervatype}/{refnumber}
Groups
#
RequestUpdate Key->ID keys:
id
: Group groupname~groupvalue
Item
#
RequestUpdate Key->ID keys:
-
id
: Trans and Item transnumber~rownumber
-
trans_id
: Trans transnumber
-
product_id
: Product partnumber
-
tax_id
: Tax taxcode
Link
#
RequestUpdate Key->ID keys:
-
id
: {nervatype_1}~{refnumber_1}~~{nervatype_2}~{refnumber_2}
-
nervatype_1
: All groupvalue from Groups, where groupname equal nervatype
-
ref_id_1
: {nervatype_1}/{refnumber_1}
-
nervatype_2
: All groupvalue from Groups, where groupname equal nervatype
Field |
Type |
Description |
id |
int64 |
|
nervatype_1 |
int64 |
Reference to
Groups.id (only where groupname = ’nervatype') |
ref_id_1 |
int64 |
Reference to {nervatype}.id |
nervatype_2 |
int64 |
Reference to
Groups.id (only where groupname = ’nervatype') |
ref_id_2 |
int64 |
Reference to {nervatype}.id |
metadata |
repeated MetaData |
Link meta data |
Log
#
RequestUpdate Key->ID keys:
-
id
: {empnumber}~{crdate}'
-
employee_id
: Employee empnumber
-
ref_id
: {nervatype}/{refnumber}
-
nervatype
: All groupvalue from Groups, where groupname equal nervatype
-
logstate
: Valid values: update, closed, deleted, print, login, logout
Movement
#
RequestUpdate Key->ID keys:
-
id
: Trans and Item transnumber~rownumber
-
trans_id
: Trans transnumber
-
product_id
: Product partnumber
-
movetype
: Valid values: inventory, tool, plan, head
-
tool_id
: Tool serial
-
place_id
: Place planumber
Numberdef
#
RequestUpdate Key->ID keys:
Field |
Type |
Description |
id |
int64 |
|
numberkey |
string |
Unique key |
prefix |
string |
The text prefix of the identifier. It can be any length, but usage of special characters, spaces in the text is not recommended. |
curvalue |
int64 |
The current status of the counter, the next sequence number will be one value higher than this one. It is possible to re-set the counter, but the uniqueness must be ensured in all cases! |
isyear |
bool |
If selected, the created identifier will contain the year. |
sep |
string |
The separator character in the identifier. Default: “/” |
len |
int64 |
The value field is arranged in such length to the right and filled with zeros. |
description |
string |
|
visible |
bool |
|
readonly |
bool |
|
orderby |
int64 |
|
Pattern
#
RequestUpdate Key->ID keys:
Payment
#
RequestUpdate Key->ID keys:
Place
#
RequestUpdate Key->ID keys:
Field |
Type |
Description |
id |
int64 |
|
planumber |
string |
Unique ID. If you set it to numberdef, it will be generated at the first data save. The format and value of the next data in row is taken from the numberdef (numberkey = planumber) data series. |
placetype |
int64 |
Reference to
Groups.id (only where groupname = ‘placetype’) |
description |
string |
|
oneof _curr.curr |
optional string |
|
defplace |
bool |
|
notes |
string |
|
inactive |
bool |
|
metadata |
repeated MetaData |
Place meta data |
Price
#
RequestUpdate Key->ID keys:
Field |
Type |
Description |
id |
int64 |
|
product_id |
int64 |
Reference to
Product.id |
validfrom |
string |
Start of validity, mandatory data. |
oneof _validto.validto |
optional string |
End of validity, can be left empty. |
curr |
string |
|
qty |
double |
Price ranges can also be specified, thus different price can be set for a smaller and bigger quantity of the same product. The quantity should be used as the lower threshold, ie. this should be the minimum quantity for the price set. |
pricevalue |
double |
Price value |
vendorprice |
bool |
Supplier (if marked) or customer price. By default the customer price. |
metadata |
repeated MetaData |
Price meta data |
Product
#
RequestUpdate Key->ID keys:
Field |
Type |
Description |
id |
int64 |
|
partnumber |
string |
Unique ID. If you set it to numberdef, it will be generated at the first data save. The format and value of the next data in row is taken from the numberdef (numberkey = partnumber) data series. |
protype |
int64 |
Reference to
Groups.id (only where groupname = ‘protype’) |
description |
string |
The full name of the product or short description. |
unit |
string |
|
tax_id |
int64 |
Reference to
Tax.id |
notes |
string |
|
webitem |
bool |
|
inactive |
bool |
|
metadata |
repeated MetaData |
Product meta data |
Project
#
RequestUpdate Key->ID keys:
Rate
#
RequestUpdate Key->ID keys:
-
id
: Rate ratetype~ratedate~curr~planumber
-
place_id
: Place planumber
-
ratetype
: Valid values: rate, buy, sell,average
-
rategroup
: all groupvalue from Groups, where groupname equal rategroup
RequestDatabaseCreate
#
New database props.
Field |
Type |
Description |
alias |
string |
Alias name of the database |
demo |
bool |
Create a DEMO database |
RequestDelete
#
Delete parameters
Field |
Type |
Description |
nervatype |
DataType |
|
id |
int64 |
The object ID |
key |
string |
Use Key instead of ID |
RequestEmpty
#
No parameters
RequestFunction
#
RequestFunction.ValuesEntry
#
RequestGet
#
RequestReport
#
RequestReport.FiltersEntry
#
RequestReportDelete
#
Field |
Type |
Description |
reportkey |
string |
Example : ntr_invoice_en |
RequestReportInstall
#
Admin user group membership required.
Field |
Type |
Description |
reportkey |
string |
Example : ntr_invoice_en |
RequestReportList
#
Field |
Type |
Description |
label |
string |
|
RequestTokenDecode
#
Field |
Type |
Description |
value |
string |
Access token code. |
RequestUpdate
#
RequestUpdate.Item
#
RequestUpdate.Item.KeysEntry
#
RequestUpdate.Item.ValuesEntry
#
RequestUserLogin
#
Field |
Type |
Description |
username |
string |
Employee username or Customer custnumber (email or phone number) |
password |
string |
|
database |
string |
Optional. Default value: NT_DEFAULT_ALIAS |
RequestUserPassword
#
Field |
Type |
Description |
password |
string |
New password |
confirm |
string |
New password confirmation |
username |
string |
Optional. Only if different from the logged in user. Admin user group membership required. |
custnumber |
string |
Optional. Only if different from the logged in user. Admin user group membership required. |
RequestView
#
Only “select” queries and functions can be executed. Changes to the data are not saved in the database.
RequestView.Query
#
Field |
Type |
Description |
key |
string |
Give the query a unique name |
text |
string |
The SQL query as a string |
values |
repeated Value |
The array of parameter values |
ResponseDatabaseCreate
#
Result log data
ResponseEmpty
#
Does not return content.
ResponseFunction
#
Field |
Type |
Description |
value |
bytes |
|
ResponseGet
#
ResponseGet.Value
#
ResponseReport
#
Field |
Type |
Description |
value |
bytes |
|
ResponseReportInstall
#
Field |
Type |
Description |
id |
int64 |
Returns a new report ID. |
ResponseReportList
#
Returns all installable files from the NT_REPORT_DIR directory (empty value: all available built-in Nervatura Reports)
ResponseReportList.Info
#
ResponseRows
#
ResponseRows.Item
#
ResponseRows.Item.ValuesEntry
#
ResponseTokenDecode
#
Access token claims.
ResponseTokenLogin
#
Token user properties
ResponseTokenRefresh
#
Field |
Type |
Description |
value |
string |
Access token code. |
ResponseUpdate
#
If the ID (or Key) value is missing, it creates a new item.
Field |
Type |
Description |
values |
repeated int64 |
Returns the all new/updated IDs values. |
ResponseUserLogin
#
Field |
Type |
Description |
token |
string |
Access JWT token |
engine |
string |
Type of database |
version |
string |
Service version |
ResponseView
#
ResponseView.ValuesEntry
#
Tax
#
RequestUpdate Key->ID keys:
RequestUpdate Key->ID keys:
-
id
: Tool serial
-
toolgroup
: all groupvalue from Groups, where groupname equal toolgroup
-
product_id
: Product partnumber
Field |
Type |
Description |
id |
int64 |
|
serial |
string |
Unique ID. If you set it to numberdef, it will be generated at the first data save. The format and value of the next data in row is taken from the numberdef (numberkey = serial) data series. |
description |
string |
|
product_id |
int64 |
Reference to
Product.id |
oneof _toolgroup.toolgroup |
optional int64 |
Reference to
Groups.id (only where groupname = ’toolgroup') |
notes |
string |
|
inactive |
bool |
|
metadata |
repeated MetaData |
Tool meta data |
Trans
#
RequestUpdate Key->ID keys:
-
id
: Trans transnumber
-
transtype
: all groupvalue from Groups, where groupname equal transtype
-
direction
: Valid values in, out, transfer
-
customer_id
: Customer custnumber
-
employee_id
: Employee empnumber
-
department
: all groupvalue from Groups, where groupname equal department
-
project_id
: Project pronumber
-
place_id
: Place planumber
-
paidtype
: all groupvalue from Groups, where groupname equal paidtype
-
transtate
: all groupvalue from Groups, where groupname equal transtate
UiAudit
#
RequestUpdate Key->ID keys:
-
id
: UiAudit {usergroup}~{nervatype}~{transtype}
-
usergroup
: all groupvalue from Groups, where groupname equal usergroup
-
nervatype
: all groupvalue from Groups, where groupname equal nervatype
-
subtype
: all groupvalue from Groups, where groupname equal transtype, movetype, protype, custtype, placetype
-
inputfilter
: Valid values disabled, readonly, update, all
Field |
Type |
Description |
id |
int64 |
|
usergroup |
int64 |
Reference to
Groups.id (only where groupname = ‘usergroup’) |
nervatype |
int64 |
Reference to
Groups.id (only where groupname = ’nervatype') |
oneof _subtype.subtype |
optional int64 |
Reference to
Groups.id (only where groupname = ‘movetype’) |
inputfilter |
int64 |
Reference to
Groups.id (only where groupname = ‘inputfilter’) |
supervisor |
bool |
|
RequestUpdate Key->ID keys:
RequestUpdate Key->ID keys:
UiMessage
#
RequestUpdate Key->ID keys:
id
: UiMessage {secname}~{fieldname}~{lang}
UiPrintqueue
#
UiReport
#
RequestUpdate Key->ID keys:
-
id
: UiReport reportkey
-
nervatype
: all groupvalue from Groups, where groupname equal nervatype
-
transtype
: all groupvalue from Groups, where groupname equal transtype
-
direction
: all groupvalue from Groups, where groupname equal direction
-
filetype
: all groupvalue from Groups, where groupname equal filetype
UiUserconfig
#
RequestUpdate Key->ID keys:
Value
#
Enums
#
DataType
#
ReportOrientation
#
Name |
Number |
Description |
portrait |
0 |
|
landscape |
1 |
|
ReportOutput
#
Name |
Number |
Description |
auto |
0 |
|
xml |
1 |
|
data |
2 |
|
base64 |
3 |
|
ReportSize
#
Name |
Number |
Description |
a3 |
0 |
|
a4 |
1 |
|
a5 |
2 |
|
letter |
3 |
|
legal |
4 |
|
ReportType
#
Name |
Number |
Description |
report_none |
0 |
|
report_customer |
1 |
|
report_employee |
2 |
|
report_event |
3 |
|
report_place |
4 |
|
report_product |
5 |
|
report_project |
6 |
|
report_tool |
7 |
|
report_trans |
8 |
|
Scalar Value Types
#
.proto Type |
Notes |
C++ Type |
Java Type |
Python Type |
double |
|
double |
double |
float |
int64 |
Uses variable-length encoding |
int64 |
long |
int/long |
bool |
|
bool |
boolean |
boolean |
string |
A string must always contain UTF-8 encoded or 7-bit ASCII text. |
string |
String |
str/unicode |
bytes |
May contain any arbitrary sequence of bytes. |
string |
ByteString |
str |