The data definition format is the same if you read, create or updates a table definition. There are a few extra when you update field definitions, like "newname" to support renaming of columns, "makedfordelete" : true for deleting a field and "newtablename"  for renaming a table, but that is all. Below is lists for the different sections.

var tabledef = {
    "tdf": {
        "fdef": [
            {
                "derived": "current date",
                "hasindex": "yes",
                "isreqired": "no",
                "isunique": "no",
                "isvirtual": "no",
                "name": "AddedDate",
                "preventedit": "yes",
                "readsec": "Low3",
                "type": "date",
                "writesec": "Low3"
            },
....
    ],
    "tablecreatesecurity": "Medium3",
    "tabledeletesecurity": "Medium3",
    "tabledopreservedataonmodify": true,
    "tablehasencrypteddata": false,
    "tablemodifysecurity": "Medium3",
    "tableviewsecurity": "Low3",
    "tname": "Address"
}

Structure of a definition

Few things to know about values

Since a most things in DataEase are written as string, we allow the same for values in the JSON. This is to ease settings and to be able to use the Remote JSON engine without resorting to Remote("@setvalue:bool","true") and the like. There for if you use a string with "yes", "true", "True", "1" etc. that all will bee seen as true in the definition. When definitions is returned, the will bee seen as "yes" as long as the server i not set to show true values. For number this means we support "100" (string value 100) as numbers as well.

Table part

The table definition part is the one you get from tableded["tdf"] without looking at the fdef array. The values has to do with security and ownership of the table. 

newtname string used when you want to rename an existing table. Then old name is tname and new name is set in newtname (not implemented yet)
prismuseisodatetime
(Read only)
bool Tell user if server used ISO 8601 for date and time format. If so the server will send dates as YYYYMMDD to the user and accept YYYYMMDD and YYYY-MM-DD from the user. If false the server will use the format set by the operating system the server is running on.
prismusenumber
(Read only)
bool Read only. Read only value from prism, telling browser that we support number as values for number fields in this table. This means that server will serve numeric values as numbers (int or float) and expect the same back when creating or updating data.
tablecreatesecurity int/string Low3-High. See own table for values. Default is Medium3.
tabledeletesecurity int/string Low3-High. See own table for values.Default is Medium3.
tabledopreservedataonmodify bool true or false if you want to keep current date/time when modify records are done or if you want prism to recalculate the current date/time. Default is true.
tablehasencrypteddata bool true or false if data is/should be encrypted. Default is false.
tablemodifysecurity int/string Low3-High. See own table for values.Default Medium3.
tableviewsecurity int/string Low3-High. See own table for values. Default is Low3.
tableownership int 0 = Not Owned, 1 = DFD, 2 = DFW. Default is 3.
tname
(Read only)
string Name of table when it exists.

here

Field part

choices array A list of string that defines the choices
decimals int
Number of decimals in fixed, float and money
derived string The derivation used when calculating values for this field (default none)
format string The format used for numeric string (default none)
hasindex bool If a index is used on the field (default no)
isdeleted bool This is only used if we update a table and want to delete a field from the definition
isreqired bool Tell if the field must have a value other than blank
isunique bool Set if field must be unique or not (default no)
isvirtual bool Is this field a calculated field only
length int Length of the field.
name string Used when you create a new field that do not exist to set the name of the field
newname string Used to rename a exiting field to a new name
preventedit bool Tell if the field should only be populated by formulas
readsec Int/string Low3-High. See own table for values.
rule string
The validation rule on the field
type string/int The field type to use. There is a table explaining them further down
writesec Int/string Low3-High. See own table for values.

here

Security levels

High 1 The maximum level you can have
Medium1 2
Medium2 3
Medium3 4
Low1 5
Low2 6
Low3 7 The lowest security level where you are still logged in.

here

Field types

text 0
A text field with a fixed size
numstring 1
A number with formatting
integer 2 A number without decimals
fixed 3 A number with a fixed number of decimals
float 4 A floating point number that can have as many decimals as needed
time 5 A time in the form HH:MM:SS
date 6 A date
money 7 A fixed number with formating
bool 8 A yes/no
choice 9 A fixed choice field that can have 0-255 different values
memo
13 A memo field up to 2GB stored in a bin file and referenced in tdf

here