sk_api_schema 0.3.4 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +1 -0
- data/README.rdoc +81 -41
- data/json/v1.0/address.json +24 -22
- data/json/v1.0/attachment.json +26 -17
- data/json/v1.0/auth_permission.json +18 -11
- data/json/v1.0/client.json +42 -37
- data/json/v1.0/comment.json +17 -11
- data/json/v1.0/company.json +67 -46
- data/json/v1.0/credit_note.json +29 -15
- data/json/v1.0/document.json +23 -14
- data/json/v1.0/email.json +39 -25
- data/json/v1.0/email_template.json +22 -15
- data/json/v1.0/estimate.json +25 -14
- data/json/v1.0/export.json +27 -18
- data/json/v1.0/export_template.json +22 -15
- data/json/v1.0/invoice.json +29 -15
- data/json/v1.0/language.json +10 -6
- data/json/v1.0/line_item.json +17 -10
- data/json/v1.0/order.json +26 -15
- data/json/v1.0/payment.json +20 -13
- data/json/v1.0/payment_reminder.json +26 -14
- data/json/v1.0/product.json +17 -9
- data/json/v1.0/recurring.json +26 -15
- data/json/v1.0/sub.json +16 -10
- data/json/v1.0/tag.json +12 -9
- data/json/v1.0/text_template.json +20 -14
- data/json/v1.0/user.json +45 -31
- data/lib/sk_api_schema/version.rb +1 -1
- metadata +3 -3
data/CHANGELOG.rdoc
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
A more detailed view of the changes can be found in the {commit messages}[https://github.com/salesking/sk_api_schema/commits/]
|
4
4
|
|
5
5
|
2012-06
|
6
|
+
* add payments link to invoice, credit_note
|
6
7
|
* add due_date and due_days to order
|
7
8
|
* Deprecate payment.method in favour of payment.payment_method bcs 'method' is a keyword in programming
|
8
9
|
* test with travis-ci.org
|
data/README.rdoc
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
= SalesKing API Schema
|
2
2
|
|
3
|
-
|
3
|
+
{<img src="https://secure.travis-ci.org/salesking/sk_api_schema.png?branch=master" alt="Build Status" />}[http://travis-ci.org/salesking/sk_api_schema]
|
4
|
+
|
5
|
+
Our API (objects,resources) is described with JSON Schema (http://json-schema.org).
|
6
|
+
Each Object has its own description, with those top-level keys:
|
4
7
|
|
5
8
|
{
|
6
|
-
"title": "client",
|
7
|
-
"properties": {
|
8
|
-
"links": [ .. ]
|
9
|
+
"title": "client", // object type
|
10
|
+
"properties": { .. }, // field descriptions
|
11
|
+
"links": [ .. ] // CRUD actions, relationships to other resources
|
9
12
|
}
|
10
|
-
The properties-section defines the fields. CRUD actions and
|
11
|
-
relationships with other resources are found in the link-section.
|
12
13
|
|
13
14
|
Look into the /json/ folder for the resources schema-files - https://github.com/salesking/sk_api_schema/tree/master/json/v1.0
|
14
15
|
|
@@ -24,38 +25,6 @@ Other languages should take advantage of the raw json files.
|
|
24
25
|
* {API Intro}[http://dev.blog.salesking.eu/api/]
|
25
26
|
* {Ruby SDK - API Client}[https://github.com/salesking/sk_sdk]
|
26
27
|
|
27
|
-
== Versioning
|
28
|
-
|
29
|
-
The main API-version is kept in the folder-name and as long as there are no major
|
30
|
-
changes(breaking backwards compatibility), the version number will remain.
|
31
|
-
|
32
|
-
You can see the current schema at:
|
33
|
-
my.salesking.eu/api/schema
|
34
|
-
my.salesking.eu/api/clients/schema
|
35
|
-
|
36
|
-
The schema main version(NOT the gem version) can be set with the "v" url parameter
|
37
|
-
in any call, but is pretty useless as long as we are in v1.0
|
38
|
-
my.salesking.eu/api/clients?v='1.0'
|
39
|
-
|
40
|
-
The gem has its own version number. A new gem version indicates a change, but
|
41
|
-
we first try it on our staging environment before any live instances are
|
42
|
-
updated and the schema becomes public available. The gem is used by SalesKing
|
43
|
-
to deliver it's data BUT changes might not be directly reflected as stated.
|
44
|
-
To see the current gem version use:
|
45
|
-
|
46
|
-
my.salesking.eu/api/schema?gem_version=1
|
47
|
-
|
48
|
-
== Save the planet
|
49
|
-
|
50
|
-
By default the API returns an object with all available properties(fields). You
|
51
|
-
can limit those by passing comma-separated string(or array) in the fields
|
52
|
-
parameter:
|
53
|
-
my.salesking.eu/api/clients?fields=id,organisation
|
54
|
-
|
55
|
-
my.salesking.eu/api/clients?fields[]=id&fields[]=organisation
|
56
|
-
|
57
|
-
Please try to only request the fields you really need, to save computing power!
|
58
|
-
|
59
28
|
== Object Basic's
|
60
29
|
|
61
30
|
Primary object types in SK are:
|
@@ -99,15 +68,86 @@ of each schema.
|
|
99
68
|
# all invoices of a client
|
100
69
|
/clients/:id/invoices
|
101
70
|
|
71
|
+
== Field types & formats
|
72
|
+
|
73
|
+
Most of the fields are of type 'string'. Their format(espacially date fields)
|
74
|
+
is casted on our side. We try to go with the {formats}[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.23] and {types}[http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.1] defined by JSON-Schema
|
75
|
+
|
76
|
+
All text MUST be UTF-8 encoded.
|
77
|
+
|
78
|
+
Some example fields:
|
79
|
+
|
80
|
+
"title":{
|
81
|
+
"description": " Cut-off after 255 Characters",
|
82
|
+
"type":"string",
|
83
|
+
"maxLength": 255
|
84
|
+
},
|
85
|
+
"notes_before":{
|
86
|
+
"description": "Long Text is a custom format: see notes below",
|
87
|
+
"type":"string"
|
88
|
+
"format":"text"
|
89
|
+
},
|
90
|
+
"net_total":{
|
91
|
+
"description": "Number with 2 decimals places",
|
92
|
+
"readonly":true,
|
93
|
+
"type":"number"
|
94
|
+
},
|
95
|
+
"status":{
|
96
|
+
"description": "Allowed values are in enum list",
|
97
|
+
"default":"draft",
|
98
|
+
"enum":["draft","open","closed","rejected","billed" ],
|
99
|
+
"type":"string"
|
100
|
+
},
|
101
|
+
"created_at":{
|
102
|
+
"description": "Date time ISO 8601 format: YYYY-MM-DDThh:mm:ssZ",
|
103
|
+
"format":"date-time",
|
104
|
+
"readonly":true,
|
105
|
+
"type":"string"
|
106
|
+
},
|
107
|
+
|
108
|
+
*Text-Format* length varies, between ~16,000 to 65.535, with the occurence of non-ASCII Characters {see this post on stackoverflow}[http://stackoverflow.com/questions/4420164/how-much-utf-8-text-fits-in-a-mysql-text-field]
|
109
|
+
|
110
|
+
== Versioning
|
111
|
+
|
112
|
+
The main API-version is kept in the folder-name and as long as there are no major
|
113
|
+
changes(breaking backwards compatibility), the version number will remain.
|
114
|
+
|
115
|
+
You can see the current schema at:
|
116
|
+
my.salesking.eu/api/schema
|
117
|
+
my.salesking.eu/api/clients/schema
|
118
|
+
|
119
|
+
The schema main version(NOT the gem version) can be set with the "v" url parameter
|
120
|
+
in any call, but is pretty useless as long as we are in v1.0
|
121
|
+
my.salesking.eu/api/clients?v='1.0'
|
122
|
+
|
123
|
+
The gem has its own version number. A new gem version indicates a change, but
|
124
|
+
we first try it on our staging environment before any live instances are
|
125
|
+
updated and the schema becomes public available. The gem is used by SalesKing
|
126
|
+
to deliver it's data BUT changes might not be directly reflected as stated.
|
127
|
+
To see the current gem version use:
|
128
|
+
|
129
|
+
my.salesking.eu/api/schema?gem_version=1
|
130
|
+
|
131
|
+
== Save the planet
|
132
|
+
|
133
|
+
By default the API returns an object with all available properties(fields). You
|
134
|
+
can limit those by passing comma-separated string(or array) in the fields
|
135
|
+
parameter:
|
136
|
+
my.salesking.eu/api/clients?fields=id,organisation
|
137
|
+
|
138
|
+
my.salesking.eu/api/clients?fields[]=id&fields[]=organisation
|
139
|
+
|
140
|
+
Please try to only request the fields you really need, to save computing power!
|
141
|
+
|
142
|
+
|
102
143
|
== Install
|
103
144
|
|
104
145
|
gem install sk_api_schema
|
105
146
|
|
106
147
|
== Test
|
107
148
|
|
108
|
-
{
|
109
|
-
|
110
|
-
Install required gems with bundler and go for it:
|
149
|
+
Tested with {travis-ci}[http://travis-ci.org/salesking/sk_api_schema], but of
|
150
|
+
course you can run them too. Install required gems with bundler and go for it:
|
111
151
|
# git clone
|
112
152
|
# cd into sk_api_schema dir
|
113
153
|
bundle install
|
data/json/v1.0/address.json
CHANGED
@@ -1,79 +1,81 @@
|
|
1
1
|
{ "type":"object",
|
2
2
|
"title": "address",
|
3
3
|
"description":"An address in SK is maintained within it's parent object(client, company). The first address(default_address) is used inside the address field of new documents. With multiple addresses sorting(first) is done by date, newest first. So if you add a new adddress it will be the new default one. See order and type property for details about ordering and accessing parcel work or home addresses.",
|
4
|
-
"properties":
|
5
|
-
"id":
|
6
|
-
"description":
|
4
|
+
"properties":{
|
5
|
+
"id":{
|
6
|
+
"description":"Unique identifier - UUID",
|
7
7
|
"identity":true,
|
8
8
|
"readonly":true,
|
9
|
-
"type":"string"
|
9
|
+
"type":"string",
|
10
|
+
"maxLength": 22,
|
11
|
+
"minLength":22
|
10
12
|
},
|
11
|
-
"city":
|
13
|
+
"city":{
|
12
14
|
"description": "City for the address. Must at least be present for an address.",
|
13
15
|
"required":true,
|
14
16
|
"type":"string",
|
15
17
|
"maxLength": 100
|
16
18
|
},
|
17
|
-
"address1":
|
19
|
+
"address1":{
|
18
20
|
"description": "Should contain the street or otherwise primary address information.",
|
19
21
|
"type":"string",
|
20
22
|
"maxLength": 100
|
21
23
|
},
|
22
|
-
"address2":
|
24
|
+
"address2":{
|
23
25
|
"description": "Additional address information, like floor number",
|
24
26
|
"type":"string",
|
25
27
|
"maxLength": 100
|
26
28
|
},
|
27
|
-
"pobox":
|
29
|
+
"pobox":{
|
28
30
|
"description": "Post office box number",
|
29
31
|
"type":"string",
|
30
32
|
"maxLength": 10
|
31
33
|
},
|
32
|
-
"zip":
|
34
|
+
"zip":{
|
33
35
|
"description": "Zip number of the city. Length must be between 4..10",
|
34
36
|
"type":"string",
|
35
37
|
"maxLength": 10
|
36
38
|
},
|
37
|
-
"state":
|
39
|
+
"state":{
|
38
40
|
"description": "Country state of address",
|
39
41
|
"type":"string",
|
40
42
|
"maxLength": 100
|
41
43
|
},
|
42
|
-
"country":
|
44
|
+
"country":{
|
43
45
|
"description": "Country of the address.",
|
44
46
|
"type":"string",
|
45
47
|
"maxLength": 100
|
46
48
|
},
|
47
|
-
"created_at":
|
49
|
+
"created_at":{
|
48
50
|
"description": "Date the object was created in SK. Never changes afterwards",
|
49
51
|
"format":"date-time",
|
50
52
|
"readonly":true,
|
51
53
|
"type":"string"
|
52
54
|
},
|
53
|
-
"updated_at":
|
55
|
+
"updated_at":{
|
54
56
|
"description": "Date the object was edited in SK.",
|
55
57
|
"format":"date-time",
|
56
58
|
"readonly":true,
|
57
59
|
"type":"string"
|
58
60
|
},
|
59
|
-
"address_type":
|
61
|
+
"address_type":{
|
60
62
|
"description": "Type of the address, as seen by vCard definition. There can only be one type. Inside of SK you can use placeholders like client.parcel_address.city to access the first parcel adr(Same for work_ / home_). <br/>Besides the placeholder default_address, always returns the first address found. Sorting is done by the order(if set) else by date, newest first.",
|
61
63
|
"enum":["work","home", "parcel"],
|
62
64
|
"type":"string"
|
63
65
|
},
|
64
|
-
"order":
|
66
|
+
"order":{
|
65
67
|
"description": "Addresses are normally sorted by date, newest first. If you need to strongly rely on their sorting e.g. default_address (always first) or have multiple addresses of one type(3 parcel), use this field for all adrs. <br/>Single adrs are used in placeholders like: addresses.2.city, returning the second adr found(not necessarily one with order=2).",
|
66
68
|
"type":"integer"
|
67
69
|
},
|
68
|
-
"lat":
|
69
|
-
"description": "
|
70
|
-
"type":"
|
70
|
+
"lat":{
|
71
|
+
"description": "Geo-Location latitude",
|
72
|
+
"type":"number"
|
71
73
|
},
|
72
|
-
"long":
|
73
|
-
"description": "
|
74
|
-
"type":"
|
74
|
+
"long":{
|
75
|
+
"description": "Geo-Location longitude",
|
76
|
+
"type":"number"
|
75
77
|
},
|
76
|
-
"_destroy":
|
78
|
+
"_destroy":{
|
77
79
|
"description": "When set an existing address will be deleted. This switch is only used when addresses are passed-in nested inside their parent object(a contact).",
|
78
80
|
"type":"boolean"
|
79
81
|
}
|
data/json/v1.0/attachment.json
CHANGED
@@ -1,53 +1,60 @@
|
|
1
1
|
{ "type":"object",
|
2
2
|
"title": "attachment",
|
3
3
|
"description":"An file attachment",
|
4
|
-
"properties":
|
5
|
-
"id":
|
4
|
+
"properties":{
|
5
|
+
"id":{
|
6
6
|
"description": "uuid of the object.",
|
7
7
|
"identity":true,
|
8
8
|
"readonly":true,
|
9
|
-
"type":"string"
|
9
|
+
"type":"string",
|
10
|
+
"maxLength": 22,
|
11
|
+
"minLength":22
|
10
12
|
},
|
11
|
-
"filename":
|
13
|
+
"filename":{
|
12
14
|
"description": "The filename as set when uploaded",
|
13
15
|
"readonly":true,
|
14
|
-
"type":"string"
|
16
|
+
"type":"string",
|
17
|
+
"maxLength": 255
|
15
18
|
},
|
16
|
-
"disk_filename":
|
19
|
+
"disk_filename":{
|
17
20
|
"description": "Unique filename set by SK",
|
18
21
|
"readonly":true,
|
19
|
-
"type":"string"
|
22
|
+
"type":"string",
|
23
|
+
"maxLength": 255
|
20
24
|
},
|
21
|
-
"url":
|
25
|
+
"url":{
|
22
26
|
"description": "File download url. Unique and valid for 15 minutes, public accessible.",
|
23
27
|
"readonly":true,
|
24
|
-
"type":"string"
|
28
|
+
"type":"string",
|
29
|
+
"format": "uri"
|
25
30
|
},
|
26
|
-
"related_object_type":
|
31
|
+
"related_object_type":{
|
27
32
|
"description": "Object type of the attachment parent. Is the camelcased base class name: Document for invoice, credit_note,.., Contact for client",
|
28
33
|
"required":true,
|
29
34
|
"type":"string"
|
30
35
|
},
|
31
|
-
"related_object_id":
|
36
|
+
"related_object_id":{
|
32
37
|
"description": "uuid of the attachment parent object.",
|
33
38
|
"required":true,
|
34
|
-
"type":"string"
|
39
|
+
"type":"string",
|
40
|
+
"maxLength": 22,
|
41
|
+
"minLength":22
|
35
42
|
},
|
36
|
-
"content_type":
|
43
|
+
"content_type":{
|
37
44
|
"description": "Auto detected on upload. Might not always reflect the real content type",
|
38
45
|
"readonly":true,
|
39
46
|
"type":"string"
|
40
47
|
},
|
41
|
-
"size":
|
48
|
+
"size":{
|
42
49
|
"description": "Filesize in kb. Auto detected on upload.",
|
43
50
|
"readonly":true,
|
44
51
|
"type":"integer"
|
45
52
|
},
|
46
|
-
"is_signed":
|
53
|
+
"is_signed":{
|
47
54
|
"description": "True if the file(pdf) has been digitally signed.",
|
48
55
|
"type":"boolean"
|
49
56
|
},
|
50
|
-
"created_at":
|
57
|
+
"created_at":{
|
51
58
|
"description": "Date the object was created in SK. Never changes afterwards",
|
52
59
|
"format":"date-time",
|
53
60
|
"readonly":true,
|
@@ -55,7 +62,9 @@
|
|
55
62
|
},
|
56
63
|
"team_id":{
|
57
64
|
"description": "A team uuid. If set only the team and its parent teams can see the record.",
|
58
|
-
"type":"string"
|
65
|
+
"type":"string",
|
66
|
+
"maxLength": 22,
|
67
|
+
"minLength":22
|
59
68
|
}
|
60
69
|
|
61
70
|
},
|
@@ -1,29 +1,36 @@
|
|
1
1
|
{"type":"object",
|
2
2
|
"title": "auth_permission",
|
3
3
|
"description": "A Permission authorises someone to execute actions(grants privileges) in the scope of a context. The context is a resource f.ex: clients, and the privileges a group of actions like: index, show, edit, update. A permission to read invoices has the context: invoices and as privileges: index,show.",
|
4
|
-
"properties":
|
5
|
-
"id":
|
4
|
+
"properties":{
|
5
|
+
"id":{
|
6
|
+
"description":"Unique identifier - UUID",
|
6
7
|
"identity":true,
|
7
8
|
"readonly":true,
|
8
|
-
"type":"string"
|
9
|
+
"type":"string",
|
10
|
+
"maxLength": 22,
|
11
|
+
"minLength":22
|
9
12
|
},
|
10
|
-
"full_name":
|
13
|
+
"full_name":{
|
11
14
|
"description": "Context_name and name localized: API Clients read - API Kunden anzeigen",
|
12
|
-
"type":"string"
|
15
|
+
"type":"string",
|
16
|
+
"maxLength": 255
|
13
17
|
},
|
14
|
-
"name":
|
18
|
+
"name":{
|
15
19
|
"description": "Name for the permission. Since a permission groups multiple privileges the name reflects what someone is allowed to do: read, update, delete. With 'read' granting acccess to the 'index' and 'show' actions of a resource.",
|
16
|
-
"type":"string"
|
20
|
+
"type":"string",
|
21
|
+
"maxLength": 255
|
17
22
|
},
|
18
23
|
"context_name":{
|
19
|
-
"description": "The context for the permission,
|
24
|
+
"description": "The context for the permission, being a resource: clients, emails",
|
20
25
|
"readonly":true,
|
21
|
-
"type":"string"
|
26
|
+
"type":"string",
|
27
|
+
"maxLength": 255
|
22
28
|
},
|
23
|
-
"privilege_list":
|
29
|
+
"privilege_list":{
|
24
30
|
"description": "A permission has many privileges which define the actions someone can execute. Such actions are resource methods like index, update, edit, show",
|
25
31
|
"type":"string",
|
26
|
-
"readonly":true
|
32
|
+
"readonly":true,
|
33
|
+
"maxLength": 255
|
27
34
|
}
|
28
35
|
},
|
29
36
|
|
data/json/v1.0/client.json
CHANGED
@@ -1,88 +1,91 @@
|
|
1
1
|
{"type":"object",
|
2
2
|
"title": "client",
|
3
3
|
"description": "A client as seen by SalesKing",
|
4
|
-
"properties":
|
5
|
-
"id":
|
4
|
+
"properties":{
|
5
|
+
"id":{
|
6
|
+
"description":"Unique identifier - UUID",
|
6
7
|
"identity":true,
|
7
8
|
"readonly":true,
|
8
|
-
"type":"string"
|
9
|
+
"type":"string",
|
10
|
+
"maxLength": 22,
|
11
|
+
"minLength":22
|
9
12
|
},
|
10
|
-
"number":
|
13
|
+
"number":{
|
11
14
|
"description": "Unique number, auto-created by SK for new client without number.",
|
12
15
|
"type":"string",
|
13
16
|
"maxLength": 50
|
14
17
|
},
|
15
|
-
"organisation":
|
18
|
+
"organisation":{
|
16
19
|
"description": "Name of a company. This or lastname must be present",
|
17
20
|
"required" : true,
|
18
21
|
"type":"string",
|
19
22
|
"maxLength": 100
|
20
23
|
},
|
21
|
-
"last_name":
|
24
|
+
"last_name":{
|
22
25
|
"description": "Last name of a person. At least this or the organisation field must be filled for new records",
|
23
26
|
"type":"string",
|
24
27
|
"maxLength": 50
|
25
28
|
},
|
26
|
-
"first_name":
|
29
|
+
"first_name":{
|
27
30
|
"description": "First name of a person.",
|
28
31
|
"type":"string",
|
29
32
|
"maxLength": 50
|
30
33
|
},
|
31
|
-
"gender":
|
34
|
+
"gender":{
|
32
35
|
"description": "Can be empty for a company. Is used in salutation",
|
33
36
|
"enum":["male", "female"],
|
34
37
|
"type":"string"
|
35
38
|
},
|
36
|
-
"notes":
|
39
|
+
"notes":{
|
37
40
|
"description": "Notes for a contact. For day to day information you should use comments instead.",
|
38
41
|
"type":"string",
|
39
|
-
"
|
42
|
+
"format": "text"
|
40
43
|
},
|
41
|
-
"position":
|
44
|
+
"position":{
|
42
45
|
"description": "Position of a person in a company.",
|
43
46
|
"type":"string",
|
44
47
|
"maxLength": 50
|
45
48
|
},
|
46
|
-
"title":
|
49
|
+
"title":{
|
47
50
|
"description": "Academical title of a person e.g. Dr., Prof",
|
48
51
|
"type":"string",
|
49
52
|
"maxLength": 50
|
50
53
|
},
|
51
|
-
"tax_number":
|
54
|
+
"tax_number":{
|
52
55
|
"description": "Tax number, normally applies to a private person",
|
53
56
|
"type":"string",
|
54
57
|
"maxLength": 30
|
55
58
|
},
|
56
|
-
"vat_number":
|
59
|
+
"vat_number":{
|
57
60
|
"description": "VAT number, for a company or person paying value added taxes.",
|
58
61
|
"type":"string",
|
59
62
|
"maxLength": 30
|
60
63
|
},
|
61
|
-
"email":
|
64
|
+
"email":{
|
62
65
|
"description": "Email address of the contact.",
|
63
66
|
"type":"string",
|
64
67
|
"maxLength": 100
|
65
68
|
},
|
66
|
-
"url":
|
69
|
+
"url":{
|
67
70
|
"description": "An url associated with the person, e.g its company website.",
|
68
71
|
"type":"string",
|
69
72
|
"maxLength": 255
|
70
73
|
},
|
71
|
-
"birthday":
|
74
|
+
"birthday":{
|
72
75
|
"format":"date",
|
73
76
|
"type":"string"
|
74
77
|
},
|
75
|
-
"tag_list":
|
76
|
-
"description": "Space separated list of tags.",
|
78
|
+
"tag_list":{
|
79
|
+
"description": "Space separated list of tags. Are split and saved as Tag objects on create, update.",
|
77
80
|
"type":"string"
|
78
81
|
},
|
79
|
-
"created_at":
|
82
|
+
"created_at":{
|
80
83
|
"description": "Date the record was created in SK. Never changes afterwards.",
|
81
84
|
"format":"date-time",
|
82
85
|
"readonly":true,
|
83
86
|
"type":"string"
|
84
87
|
},
|
85
|
-
"updated_at":
|
88
|
+
"updated_at":{
|
86
89
|
"description": "Last date when the record was edited.",
|
87
90
|
"format":"date-time",
|
88
91
|
"readonly":true,
|
@@ -98,81 +101,83 @@
|
|
98
101
|
"enum":["cash","bank_transfer","credit_card","paypal","direct_debit","cheque", "moneybookers", "premium_sms"],
|
99
102
|
"type":"string"
|
100
103
|
},
|
101
|
-
"bank_name":
|
104
|
+
"bank_name":{
|
102
105
|
"description": "Bank name",
|
103
106
|
"type":"string",
|
104
107
|
"maxLength": 70
|
105
108
|
},
|
106
|
-
"bank_number":
|
109
|
+
"bank_number":{
|
107
110
|
"description": "Bank number",
|
108
111
|
"type":"string",
|
109
112
|
"maxLength": 35
|
110
113
|
},
|
111
|
-
"bank_account_number":
|
114
|
+
"bank_account_number":{
|
112
115
|
"description": "Bank account number.",
|
113
116
|
"type":"string",
|
114
117
|
"maxLength": 35
|
115
118
|
},
|
116
|
-
"bank_iban":
|
119
|
+
"bank_iban":{
|
117
120
|
"description": "IBAN Number of the bank account. Is validated",
|
118
121
|
"type":"string",
|
119
122
|
"maxLength": 35
|
120
123
|
},
|
121
|
-
"bank_swift":
|
124
|
+
"bank_swift":{
|
122
125
|
"description": "SWIFT BIC- Bank Identifier Code",
|
123
126
|
"type":"string",
|
124
127
|
"maxLength": 11
|
125
128
|
},
|
126
|
-
"bank_owner":
|
129
|
+
"bank_owner":{
|
127
130
|
"description": "Bank account owner",
|
128
131
|
"type":"string",
|
129
132
|
"maxLength": 70
|
130
133
|
},
|
131
|
-
"phone_fax":
|
134
|
+
"phone_fax":{
|
132
135
|
"description": "Fax number",
|
133
136
|
"type":"string",
|
134
137
|
"maxLength": 30
|
135
138
|
},
|
136
|
-
"phone_office":
|
139
|
+
"phone_office":{
|
137
140
|
"description": "Office phone number",
|
138
141
|
"type":"string",
|
139
142
|
"maxLength": 30
|
140
143
|
},
|
141
|
-
"phone_home":
|
144
|
+
"phone_home":{
|
142
145
|
"description": "Private phone number",
|
143
146
|
"type":"string",
|
144
147
|
"maxLength": 30
|
145
148
|
},
|
146
|
-
"phone_mobile":
|
149
|
+
"phone_mobile":{
|
147
150
|
"description": "Mobile phone number",
|
148
151
|
"type":"string",
|
149
152
|
"maxLength": 30
|
150
153
|
},
|
151
|
-
"lock_version":
|
154
|
+
"lock_version":{
|
152
155
|
"description": "Increased on every edit, so SK can detect/prevent a concurrent edit by another user. First save wins.",
|
153
156
|
"type":"integer"
|
154
157
|
},
|
155
|
-
"cash_discount":
|
158
|
+
"cash_discount":{
|
156
159
|
"description": "Default cash discount for new invoices.",
|
157
160
|
"type":"number"
|
158
161
|
},
|
159
|
-
"due_days":
|
162
|
+
"due_days":{
|
160
163
|
"description": "Default due days for new invoices.",
|
161
164
|
"type":"integer"
|
162
165
|
},
|
163
|
-
"address_field":
|
166
|
+
"address_field":{
|
164
167
|
"description": "Returns the address field used on new docs. Consist of Organisation name and default(first) address",
|
165
168
|
"readonly":true,
|
166
169
|
"type":"string"
|
167
170
|
},
|
168
|
-
"addresses":
|
171
|
+
"addresses":{
|
169
172
|
"description": "A client can have many addresses, sorted by date descending(new first). Default address is the most recent one.",
|
170
173
|
"type":"array",
|
171
174
|
"properties" : {"$ref":"./address.json#properties"}
|
172
175
|
},
|
173
176
|
"team_id":{
|
174
177
|
"description": "A team uuid. If set only the team and its parent teams can see the record.",
|
175
|
-
"type":"string"
|
178
|
+
"type":"string",
|
179
|
+
"maxLength": 22,
|
180
|
+
"minLength":22
|
176
181
|
}
|
177
182
|
},
|
178
183
|
"links":[
|