sk_api_schema 0.10.5 → 0.10.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -1
- data/README.rdoc +1 -1
- data/json/v1.0/account.json +2 -2
- data/json/v1.0/contact.json +2 -2
- data/json/v1.0/line_item.json +3 -3
- data/json/v1.0/product.json +2 -2
- data/json/v1.0/sub.json +3 -3
- data/json/v2.0/account.json +172 -0
- data/json/v2.0/account_billing.json +131 -0
- data/json/v2.0/account_entry.json +212 -0
- data/json/v2.0/address.json +85 -0
- data/json/v2.0/attachment.json +133 -0
- data/json/v2.0/auth_permission.json +75 -0
- data/json/v2.0/client.json +318 -0
- data/json/v2.0/comment.json +122 -0
- data/json/v2.0/company.json +141 -0
- data/json/v2.0/contact.json +418 -0
- data/json/v2.0/credit_note.json +380 -0
- data/json/v2.0/divider_item.json +47 -0
- data/json/v2.0/document.json +240 -0
- data/json/v2.0/email.json +191 -0
- data/json/v2.0/email_template.json +132 -0
- data/json/v2.0/estimate.json +408 -0
- data/json/v2.0/export.json +142 -0
- data/json/v2.0/export_template.json +100 -0
- data/json/v2.0/invoice.json +407 -0
- data/json/v2.0/language.json +82 -0
- data/json/v2.0/line_item.json +121 -0
- data/json/v2.0/order.json +373 -0
- data/json/v2.0/payment.json +148 -0
- data/json/v2.0/payment_reminder.json +301 -0
- data/json/v2.0/pdf_template.json +99 -0
- data/json/v2.0/product.json +144 -0
- data/json/v2.0/recurring.json +340 -0
- data/json/v2.0/sub.json +60 -0
- data/json/v2.0/sub_total_item.json +57 -0
- data/json/v2.0/tag.json +76 -0
- data/json/v2.0/task.json +229 -0
- data/json/v2.0/text_template.json +95 -0
- data/json/v2.0/user.json +103 -0
- data/lib/sk_api_schema/version.rb +1 -1
- metadata +35 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: abde1b5b42fecd8924f6807b99891be589fd17a0
|
4
|
+
data.tar.gz: 397c6504cd713e94ced42ac68b45951fe9fdeea3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25bfc2130cb635266c2e9775797881bfb68c2b4e61c72babaab55405441507545746e3598a35c6f20dbf8b83a7d2b1639ada0e8281825f90b2804334f2131df2
|
7
|
+
data.tar.gz: e6e78e2f97eace77224d1f552155912ab29f7355338fe0502b5b0322c7f847a249f477a6b9de858902347ddd843bd0ea9b3471ed2f0f97ba785614dc283e972f
|
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
# SalesKing API Changelog
|
2
2
|
|
3
3
|
See [commit messages](https://github.com/salesking/sk_api_schema/commits/) for details.
|
4
|
-
Also sign up to our [Developer Newsletter](http://www.salesking.eu/dev/newsletter/) to stay up-to-date
|
4
|
+
Also sign up to our [Developer Newsletter](http://www.salesking.eu/dev/newsletter/) to stay up-to-date!
|
5
|
+
|
6
|
+
##2015-10
|
7
|
+
|
8
|
+
* Update description to clarify number field decimal places length
|
9
|
+
* Contact fix lead_ref/lead_source to be strings
|
5
10
|
|
6
11
|
##2014-08
|
7
12
|
|
data/README.rdoc
CHANGED
@@ -27,7 +27,7 @@ Other languages should take advantage of the raw json files.
|
|
27
27
|
== Tutorial & Docs
|
28
28
|
|
29
29
|
* {API Browser}[http://sk-api-browser.herokuapp.com/]
|
30
|
-
* {API Intro}[
|
30
|
+
* {API Intro}[https://developer.salesking.eu/articles/tips-tricks/api-documentation]
|
31
31
|
* {Ruby SDK - API Client}[https://github.com/salesking/sk_sdk]
|
32
32
|
* {PHP SDK - API Client}[https://github.com/salesking/salesking_php_sdk]
|
33
33
|
* {Python SDK - API Client}[https://github.com/salesking/salesking_python_sdk]
|
data/json/v1.0/account.json
CHANGED
@@ -38,11 +38,11 @@
|
|
38
38
|
"type":"number"
|
39
39
|
},
|
40
40
|
"default_price":{
|
41
|
-
"description": "The default price single for new account entries
|
41
|
+
"description": "The default price single for new account entries, if price single is empty on create. Max 6 decimal places.",
|
42
42
|
"type":"number"
|
43
43
|
},
|
44
44
|
"default_unit":{
|
45
|
-
"description": "The default quantity unit for new account entries
|
45
|
+
"description": "The default quantity unit for new account entries, if unit is empty on create.",
|
46
46
|
"type":"string",
|
47
47
|
"maxLength": 30
|
48
48
|
},
|
data/json/v1.0/contact.json
CHANGED
@@ -207,11 +207,11 @@
|
|
207
207
|
},
|
208
208
|
"lead_source":{
|
209
209
|
"description": "Lead source describing where a contact came from e.g. a campaign name, website, facebook, URL",
|
210
|
-
"type":"
|
210
|
+
"type":"string"
|
211
211
|
},
|
212
212
|
"lead_ref":{
|
213
213
|
"description": "Lead reference e.g. a tracking id, web-url",
|
214
|
-
"type":"
|
214
|
+
"type":"string"
|
215
215
|
},
|
216
216
|
"lead_date":{
|
217
217
|
"description": "Lead date e.g. date of first contact with your company. YYYY-MM-DD",
|
data/json/v1.0/line_item.json
CHANGED
@@ -37,12 +37,12 @@
|
|
37
37
|
"format": "text"
|
38
38
|
},
|
39
39
|
"price_single":{
|
40
|
-
"description": "Net price of a single item. If a product id is given, price_single is taken from the product if not set.",
|
40
|
+
"description": "Net price of a single item. If a product id is given, price_single is taken from the product if not set. Max 6 decimal places.",
|
41
41
|
"type":"number",
|
42
42
|
"required" : true
|
43
43
|
},
|
44
44
|
"cost":{
|
45
|
-
"description": "Cost price for a single item. Used to calculate the gross margin",
|
45
|
+
"description": "Cost price for a single item. Used to calculate the gross margin. Max 6 decimal places.",
|
46
46
|
"type":"number"
|
47
47
|
},
|
48
48
|
"cost_total":{
|
@@ -84,7 +84,7 @@
|
|
84
84
|
"maxLength": 30
|
85
85
|
},
|
86
86
|
"quantity":{
|
87
|
-
"description": "Quantity of the item. Must be >= 0",
|
87
|
+
"description": "Quantity of the item. Must be >= 0. Max 6 decimal places.",
|
88
88
|
"type":"number",
|
89
89
|
"minimum":0,
|
90
90
|
"default": 1
|
data/json/v1.0/product.json
CHANGED
@@ -32,12 +32,12 @@
|
|
32
32
|
"type":"string"
|
33
33
|
},
|
34
34
|
"price":{
|
35
|
-
"description": "Net price of a single product",
|
35
|
+
"description": "Net price of a single product. Max 6 decimal places.",
|
36
36
|
"type":"number",
|
37
37
|
"required":true
|
38
38
|
},
|
39
39
|
"cost":{
|
40
|
-
"description": "Cost price of a single product",
|
40
|
+
"description": "Cost price of a single product. Max 6 decimal places.",
|
41
41
|
"type":"number"
|
42
42
|
},
|
43
43
|
"category_name":{
|
data/json/v1.0/sub.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{"type":"object",
|
2
2
|
"title": "sub",
|
3
3
|
"name": "sub",
|
4
|
-
"description": "Subscribe to push notifications(webhooks) about object livecycle events like new, update or delete. Only returns subscription for the current app, so you MUST be using oAuth. When a user removes your app its subs are also deleted. <br/>To register you must supply <br/>- callback_url: receives a
|
4
|
+
"description": "Subscribe to push notifications(webhooks) about object livecycle events like new, update or delete. Only returns subscription for the current app, so you MUST be using oAuth. When a user removes your app its subs are also deleted. <br/>To register you must supply <br/>- callback_url: receives a POST containing a JSON object with the object in it's latest state, the user_id & subdomain, company_id, hmac-signed with your app secret as base64 encode string.<br/>- channel: defining the event, made up of the SINGULAR object name and the action: invoice.delete, payment.new<br/> - register auth_permissions: An app MUST request non-api permissions f.ex.: clients:create. Perms(on company,app,user,team) are checked before any publishing, so if a user cannot create clients in the interface, his apps will not receive any callbacks.",
|
5
5
|
"properties":{
|
6
6
|
"id":{
|
7
7
|
"description":"Unique identifier - UUID",
|
@@ -18,7 +18,7 @@
|
|
18
18
|
"maxLength": 100
|
19
19
|
},
|
20
20
|
"callback_url":{
|
21
|
-
"description": "An url receiving the notification. The url MUST be within the url of the current app and receives a POST
|
21
|
+
"description": "An url receiving the notification. The url MUST be within the url of the current app and receives a POST having the signed_request parameter containing an base64 encoded JSON object in the body.",
|
22
22
|
"type":"string",
|
23
23
|
"format":"uri",
|
24
24
|
"required":true,
|
@@ -57,4 +57,4 @@
|
|
57
57
|
"href": "subs/channels"
|
58
58
|
}
|
59
59
|
]
|
60
|
-
}
|
60
|
+
}
|
@@ -0,0 +1,172 @@
|
|
1
|
+
{ "type":"object",
|
2
|
+
"title": "account",
|
3
|
+
"name": "account",
|
4
|
+
"description": "BETA An account to track times, expenses, projects, usages, etc. Those are single entry accounts, opposed to double entry accounting in bookkeeping accounts.",
|
5
|
+
"properties":{
|
6
|
+
"id":{
|
7
|
+
"description":"Unique identifier - UUID",
|
8
|
+
"identity":true,
|
9
|
+
"readonly":true,
|
10
|
+
"type":"string",
|
11
|
+
"maxLength": 22,
|
12
|
+
"minLength":22
|
13
|
+
},
|
14
|
+
"number":{
|
15
|
+
"description": "Unique number assigned by you or if empty SK account number schema.",
|
16
|
+
"type":"string",
|
17
|
+
"maxLength": 50
|
18
|
+
},
|
19
|
+
"name":{
|
20
|
+
"description": "The name of the account",
|
21
|
+
"type":"string",
|
22
|
+
"required":true,
|
23
|
+
"maxLength": 100
|
24
|
+
},
|
25
|
+
"description":{
|
26
|
+
"description": "Account description",
|
27
|
+
"type":"string",
|
28
|
+
"format":"text",
|
29
|
+
"maxLength": 255
|
30
|
+
},
|
31
|
+
"balance":{
|
32
|
+
"description": "The account balance is the sum of all entries, also those from sub-accounts.",
|
33
|
+
"type":"number",
|
34
|
+
"readonly":true
|
35
|
+
},
|
36
|
+
"budget":{
|
37
|
+
"description": "If an account is used to track budgetary things f.ex. projects, this fields can be used to perform calculations like: Are we still inside the allowed budget?",
|
38
|
+
"type":"number"
|
39
|
+
},
|
40
|
+
"default_price":{
|
41
|
+
"description": "The default price single for new account entries, if price single is empty on create. Max 6 decimal places.",
|
42
|
+
"type":"number"
|
43
|
+
},
|
44
|
+
"default_unit":{
|
45
|
+
"description": "The default quantity unit for new account entries, if unit is empty on create.",
|
46
|
+
"type":"string",
|
47
|
+
"maxLength": 30
|
48
|
+
},
|
49
|
+
"hide_fields":{
|
50
|
+
"description": "A list of account entry field names. The fields are hidden on account entry lists and forms so one can focus on the important inputs. For example hide: tax,description,billed_at",
|
51
|
+
"type":"string",
|
52
|
+
"maxLength": 255
|
53
|
+
},
|
54
|
+
"contact_id":{
|
55
|
+
"description": "The contacts uuid to which the account is related.",
|
56
|
+
"type":"string",
|
57
|
+
"maxLength": 22,
|
58
|
+
"minLength":22
|
59
|
+
},
|
60
|
+
"document_id":{
|
61
|
+
"description": "Document uuid, related to the account.",
|
62
|
+
"type":"string",
|
63
|
+
"maxLength": 22,
|
64
|
+
"minLength":22
|
65
|
+
},
|
66
|
+
"created_at":{
|
67
|
+
"description": "Date the object was created in SK. Never changes afterwards",
|
68
|
+
"format":"date-time",
|
69
|
+
"readonly":true,
|
70
|
+
"type":"string"
|
71
|
+
},
|
72
|
+
"updated_at":{
|
73
|
+
"description": "Date the object was edited in SK.",
|
74
|
+
"format":"date-time",
|
75
|
+
"readonly":true,
|
76
|
+
"type":"string"
|
77
|
+
},
|
78
|
+
"team_id":{
|
79
|
+
"description": "A team uuid. If set only the team and its parent teams can see the record.",
|
80
|
+
"type":"string",
|
81
|
+
"maxLength": 22,
|
82
|
+
"minLength":22
|
83
|
+
},
|
84
|
+
"creator_id":{
|
85
|
+
"description": "The user uuid who created the record.",
|
86
|
+
"type":"string",
|
87
|
+
"maxLength": 22,
|
88
|
+
"minLength":22,
|
89
|
+
"readonly":true
|
90
|
+
}
|
91
|
+
},
|
92
|
+
"links":[
|
93
|
+
{ "rel": "self",
|
94
|
+
"href": "accounts/{id}"
|
95
|
+
},
|
96
|
+
{ "rel": "instances",
|
97
|
+
"href": "accounts",
|
98
|
+
"properties" : {
|
99
|
+
"filter[q]":{
|
100
|
+
"title" : "Search",
|
101
|
+
"description": "Wildcard search in number, name, description",
|
102
|
+
"type":"string"
|
103
|
+
},
|
104
|
+
"filter[number]":{
|
105
|
+
"title" : "By number",
|
106
|
+
"description": "Search by exact number",
|
107
|
+
"type":"string"
|
108
|
+
},
|
109
|
+
"filter[balance_from]":{
|
110
|
+
"title" : "By balance from",
|
111
|
+
"description": "Find account with a balance greater(>=) than given number.",
|
112
|
+
"type":"number"
|
113
|
+
},
|
114
|
+
"filter[balance_to]":{
|
115
|
+
"title" : "By balance to",
|
116
|
+
"description": "Find accounts with a balance smaller(<=) than given number.",
|
117
|
+
"type":"number"
|
118
|
+
},
|
119
|
+
"filter[contact_ids]":{
|
120
|
+
"title" : "Contacts",
|
121
|
+
"description": "Find objects belonging to a single or a list of contacts, use ids comma separated.",
|
122
|
+
"type" : "string"
|
123
|
+
},
|
124
|
+
"filter[parent_id]":{
|
125
|
+
"title" : "By parent",
|
126
|
+
"description": "Search children of the given account.",
|
127
|
+
"type":"string"
|
128
|
+
},
|
129
|
+
"page":{
|
130
|
+
"title" : "Page",
|
131
|
+
"description": "In paginated results set the page to look for",
|
132
|
+
"type":"number"
|
133
|
+
},
|
134
|
+
"per_page":{
|
135
|
+
"title" : "Per page",
|
136
|
+
"description": "Results per page. Default is 50, max is 200",
|
137
|
+
"type":"number"
|
138
|
+
},
|
139
|
+
"sort_by":{
|
140
|
+
"title" : "Sort by",
|
141
|
+
"description": "Sort the results by the given field => number",
|
142
|
+
"enum":["name","number","balance", "created_at", "updated_at"],
|
143
|
+
"type": "string"
|
144
|
+
},
|
145
|
+
"sort":{
|
146
|
+
"title" : "Sort",
|
147
|
+
"enum":["ASC","DESC"],
|
148
|
+
"description": "Sort the results in ASC or DESC",
|
149
|
+
"type": "string"
|
150
|
+
}
|
151
|
+
}
|
152
|
+
},
|
153
|
+
{ "rel": "destroy",
|
154
|
+
"href": "accounts/{id}",
|
155
|
+
"method": "DELETE"
|
156
|
+
},
|
157
|
+
{ "rel": "update",
|
158
|
+
"href": "accounts/{id}",
|
159
|
+
"method": "PUT"
|
160
|
+
},
|
161
|
+
{ "rel": "create",
|
162
|
+
"href": "accounts",
|
163
|
+
"method": "POST"
|
164
|
+
},
|
165
|
+
{ "rel": "account_entries",
|
166
|
+
"href": "accounts/{id}/account_entries"
|
167
|
+
},
|
168
|
+
{ "rel": "account_billings",
|
169
|
+
"href": "accounts/{id}/account_billings"
|
170
|
+
}
|
171
|
+
]
|
172
|
+
}
|
@@ -0,0 +1,131 @@
|
|
1
|
+
{ "type":"object",
|
2
|
+
"title": "account_billing",
|
3
|
+
"name": "account_billing",
|
4
|
+
"description": "BETA An account billing serves as the glue between an account a document and their related account entries and line items. It also lets one keep track of who billed what and when. A billing is created from billable account entries, which are turned into line items for a document.",
|
5
|
+
"properties":{
|
6
|
+
"id":{
|
7
|
+
"description":"Unique identifier - UUID",
|
8
|
+
"identity":true,
|
9
|
+
"readonly":true,
|
10
|
+
"type":"string",
|
11
|
+
"maxLength": 22,
|
12
|
+
"minLength":22
|
13
|
+
},
|
14
|
+
"name":{
|
15
|
+
"description": "A note for the billing e.g. happyPDF usage April 2014. The field is wildcard searchable",
|
16
|
+
"type":"string",
|
17
|
+
"maxLength": 100
|
18
|
+
},
|
19
|
+
"account_id":{
|
20
|
+
"description": "The related account. Must be set for entries to be found.",
|
21
|
+
"type":"string",
|
22
|
+
"required":true,
|
23
|
+
"maxLength": 22,
|
24
|
+
"minLength":22
|
25
|
+
},
|
26
|
+
"group_entries_by":{
|
27
|
+
"description": "Group multiple account entries into single line items, when creating a billing+document from entries. Account entries MUST have the SAME price_single and quantity unit, to land in a group. Date base groups also require the SAME entry name.",
|
28
|
+
"type":"string",
|
29
|
+
"enum": ["name", "day", "week", "month", "year"]
|
30
|
+
},
|
31
|
+
"document_type":{
|
32
|
+
"description": "The document type to create. CamelCase document class name. Invoice by default",
|
33
|
+
"type":"string",
|
34
|
+
"default" : "Invoice",
|
35
|
+
"enum": ["Invoice", "CreditNote", "Order", "Estimate"]
|
36
|
+
},
|
37
|
+
"set_billed_at":{
|
38
|
+
"description": "Set billed at date for related account entries.",
|
39
|
+
"type":"boolean",
|
40
|
+
"default" : false
|
41
|
+
},
|
42
|
+
"document_id":{
|
43
|
+
"description": "The document created by the billing.",
|
44
|
+
"type":"string",
|
45
|
+
"readonly": true,
|
46
|
+
"maxLength": 22,
|
47
|
+
"minLength":22
|
48
|
+
},
|
49
|
+
"created_at":{
|
50
|
+
"description": "Date the object was created in SK. Never changes afterwards",
|
51
|
+
"format":"date-time",
|
52
|
+
"readonly":true,
|
53
|
+
"type":"string"
|
54
|
+
},
|
55
|
+
"team_id":{
|
56
|
+
"description": "A team uuid. Is inferred from the accounts team id.",
|
57
|
+
"type":"string",
|
58
|
+
"maxLength": 22,
|
59
|
+
"minLength":22
|
60
|
+
},
|
61
|
+
"creator_id":{
|
62
|
+
"description": "User who created the record.",
|
63
|
+
"type":"string",
|
64
|
+
"maxLength": 22,
|
65
|
+
"minLength":22,
|
66
|
+
"readonly":true
|
67
|
+
}
|
68
|
+
},
|
69
|
+
"links":[
|
70
|
+
{ "rel": "self",
|
71
|
+
"href": "account_billings/{id}"
|
72
|
+
},
|
73
|
+
{ "rel": "instances",
|
74
|
+
"href": "account_billings",
|
75
|
+
"properties" : {
|
76
|
+
"filter[q]":{
|
77
|
+
"title" : "Search",
|
78
|
+
"description": "Wildcard search in name",
|
79
|
+
"type":"string"
|
80
|
+
},
|
81
|
+
"filter[account_ids]":{
|
82
|
+
"title" : "Accounts",
|
83
|
+
"description": "Find objects belonging to a single or a list of accounts, use ids comma separated.",
|
84
|
+
"type" : "string"
|
85
|
+
},
|
86
|
+
"filter[created_at_from]":{
|
87
|
+
"title" : "From creation date",
|
88
|
+
"description": "Objects with a date eq/after the date. YYYY-MM-DD",
|
89
|
+
"format" : "date",
|
90
|
+
"type" : "string"
|
91
|
+
},
|
92
|
+
"filter[created_at_to]":{
|
93
|
+
"title" : "To creation date",
|
94
|
+
"description": "Objects with a creation until the date(<=). ISO 8601 format YYY-MM-DDThh:mm:ss+z or just a date YYY-MM-DD. If date is given the time is set to the end of the day(23:59:59) so all objects created on that day are included. A time should be already utc time.",
|
95
|
+
"format" : "date",
|
96
|
+
"type" : "string"
|
97
|
+
},
|
98
|
+
"page":{
|
99
|
+
"title" : "Page",
|
100
|
+
"description": "In paginated results set the page to look for",
|
101
|
+
"type":"number"
|
102
|
+
},
|
103
|
+
"per_page":{
|
104
|
+
"title" : "Per page",
|
105
|
+
"description": "Results per page. Default is 50, max is 200",
|
106
|
+
"type":"number"
|
107
|
+
},
|
108
|
+
"sort_by":{
|
109
|
+
"title" : "Sort by",
|
110
|
+
"description": "Sort the results by the given field => number",
|
111
|
+
"enum":["name","number","balance", "created_at", "updated_at"],
|
112
|
+
"type": "string"
|
113
|
+
},
|
114
|
+
"sort":{
|
115
|
+
"title" : "Sort",
|
116
|
+
"enum":["ASC","DESC"],
|
117
|
+
"description": "Sort the results in ASC or DESC",
|
118
|
+
"type": "string"
|
119
|
+
}
|
120
|
+
}
|
121
|
+
},
|
122
|
+
{ "rel": "destroy",
|
123
|
+
"href": "account_billings/{id}",
|
124
|
+
"method": "DELETE"
|
125
|
+
},
|
126
|
+
{ "rel": "create",
|
127
|
+
"href": "account_billings",
|
128
|
+
"method": "POST"
|
129
|
+
}
|
130
|
+
]
|
131
|
+
}
|
@@ -0,0 +1,212 @@
|
|
1
|
+
{ "type":"object",
|
2
|
+
"title": "account_entry",
|
3
|
+
"name": "account_entry",
|
4
|
+
"description": "A entry for an account",
|
5
|
+
"properties":{
|
6
|
+
"id":{
|
7
|
+
"description":"Unique identifier - UUID",
|
8
|
+
"identity":true,
|
9
|
+
"readonly":true,
|
10
|
+
"type":"string",
|
11
|
+
"maxLength": 22,
|
12
|
+
"minLength":22
|
13
|
+
},
|
14
|
+
"account_id":{
|
15
|
+
"description":"Account the entry belongs to.",
|
16
|
+
"required":true,
|
17
|
+
"type":"string",
|
18
|
+
"maxLength": 22,
|
19
|
+
"minLength":22
|
20
|
+
},
|
21
|
+
"document_id":{
|
22
|
+
"description":"Document the entry is related to. This relation is set by an account billing.",
|
23
|
+
"readonly":true,
|
24
|
+
"type":"string",
|
25
|
+
"maxLength": 22,
|
26
|
+
"minLength":22
|
27
|
+
},
|
28
|
+
"item_id":{
|
29
|
+
"description":"Line item on the document the entry is related to. This relation is set by an account billing or when a document is booked onto an account.",
|
30
|
+
"readonly":true,
|
31
|
+
"type":"string",
|
32
|
+
"maxLength": 22,
|
33
|
+
"minLength":22
|
34
|
+
},
|
35
|
+
"name":{
|
36
|
+
"description": "The name of an entry",
|
37
|
+
"type":"string",
|
38
|
+
"maxLength": 50
|
39
|
+
},
|
40
|
+
"description":{
|
41
|
+
"description": "Entry description",
|
42
|
+
"type":"string",
|
43
|
+
"format": "text"
|
44
|
+
},
|
45
|
+
"price_single":{
|
46
|
+
"description": "Net price of a single entry. If a product id is given, price_single is taken from the product if not set.",
|
47
|
+
"type":"number",
|
48
|
+
"required" : true
|
49
|
+
},
|
50
|
+
"net_total":{
|
51
|
+
"description": "Net price of a single entry. Calculated from price_single * quantity",
|
52
|
+
"readonly":true,
|
53
|
+
"type":"number"
|
54
|
+
},
|
55
|
+
"tax":{
|
56
|
+
"description": "Tax percentage",
|
57
|
+
"type":"number"
|
58
|
+
},
|
59
|
+
"quantity_unit":{
|
60
|
+
"description": "Quantity unit e.g: kg, days, month, ..",
|
61
|
+
"type":"string",
|
62
|
+
"maxLength": 30
|
63
|
+
},
|
64
|
+
"quantity":{
|
65
|
+
"description": "Quantity of the entry.",
|
66
|
+
"type":"number",
|
67
|
+
"default": 1
|
68
|
+
},
|
69
|
+
"date":{
|
70
|
+
"description": "Date of the entry. Defaults to today. Entries are sorted by date per default.",
|
71
|
+
"format":"date-time",
|
72
|
+
"type":"string"
|
73
|
+
},
|
74
|
+
"billable":{
|
75
|
+
"description": "True if the entry can be billed.",
|
76
|
+
"type":"boolean",
|
77
|
+
"default": false
|
78
|
+
},
|
79
|
+
"billed_at":{
|
80
|
+
"description": "Date the object was billed. Automatically set when the entry is used on an invoice.",
|
81
|
+
"format":"date-time",
|
82
|
+
"type":"string"
|
83
|
+
},
|
84
|
+
"created_at":{
|
85
|
+
"description": "Date the object was created. Never changes afterwards",
|
86
|
+
"format":"date-time",
|
87
|
+
"readonly":true,
|
88
|
+
"type":"string"
|
89
|
+
},
|
90
|
+
"updated_at":{
|
91
|
+
"description": "Date the object was edited.",
|
92
|
+
"format":"date-time",
|
93
|
+
"readonly":true,
|
94
|
+
"type":"string"
|
95
|
+
},
|
96
|
+
"_destroy":{
|
97
|
+
"description": "When set an existing entry will be deleted. This switch is used for entries passed during batch operations.",
|
98
|
+
"type":"boolean"
|
99
|
+
}
|
100
|
+
},
|
101
|
+
"links":[
|
102
|
+
|
103
|
+
{ "rel": "self",
|
104
|
+
"href": "account_entries/{id}"
|
105
|
+
},
|
106
|
+
{ "rel": "instances",
|
107
|
+
"href": "account_entries",
|
108
|
+
"properties" : {
|
109
|
+
"page":{
|
110
|
+
"title" : "Page",
|
111
|
+
"description": "In paginated results set the page to look for",
|
112
|
+
"type":"number"
|
113
|
+
},
|
114
|
+
"per_page":{
|
115
|
+
"title" : "Per page",
|
116
|
+
"description": "Results per page. Default is 50, max is 200",
|
117
|
+
"type":"number"
|
118
|
+
},
|
119
|
+
"filter[q]":{
|
120
|
+
"title" : "Search",
|
121
|
+
"description": "Wildcard search in name, description",
|
122
|
+
"type":"string"
|
123
|
+
},
|
124
|
+
"filter[account_ids]":{
|
125
|
+
"title" : "Search by related accounts",
|
126
|
+
"description": "Set multiple account ids comma separated or as array",
|
127
|
+
"type":"string"
|
128
|
+
},
|
129
|
+
"filter[document_ids]":{
|
130
|
+
"title" : "Search by related documents",
|
131
|
+
"description": "Set multiple document ids comma separated or as array",
|
132
|
+
"type":"string"
|
133
|
+
},
|
134
|
+
"filter[ids]":{
|
135
|
+
"title" : "Search by account entry ids",
|
136
|
+
"description": "Set multiple entry ids comma separated or as array",
|
137
|
+
"type":"string"
|
138
|
+
},
|
139
|
+
"filter[unbilled]":{
|
140
|
+
"title" : "Unbilled",
|
141
|
+
"description": "Entries available for billing: marked as billable without a billing date(billed_at) set. False values will skip this filter. To find billed entries simply use filter[billed_at_to] e.g with todays date.",
|
142
|
+
"type":"boolean"
|
143
|
+
},
|
144
|
+
"filter[billable]":{
|
145
|
+
"title" : "Billable",
|
146
|
+
"description": "Billable or not billable entries. Set false(string) or 0(Integer) to get not billable entries. For billable entries use true or 1. Also see filter[unbilled] to find not yet billed entries.",
|
147
|
+
"type":"boolean"
|
148
|
+
},
|
149
|
+
"filter[date_from]":{
|
150
|
+
"title" : "From date",
|
151
|
+
"description": "Objects with a date eq/after the date. YYYY-MM-DD",
|
152
|
+
"format" : "date",
|
153
|
+
"type" : "string"
|
154
|
+
},
|
155
|
+
"filter[date_to]":{
|
156
|
+
"title" : "To date",
|
157
|
+
"description": "Objects with date eq/before the date. YYYY-MM-DD",
|
158
|
+
"format" : "date",
|
159
|
+
"type" : "string"
|
160
|
+
},
|
161
|
+
"filter[billed_at_from]":{
|
162
|
+
"title" : "From billing date",
|
163
|
+
"description": "Objects with a billing date eq/after the date. YYYY-MM-DD",
|
164
|
+
"format" : "date",
|
165
|
+
"type" : "string"
|
166
|
+
},
|
167
|
+
"filter[billed_at_to]":{
|
168
|
+
"title" : "To billing date",
|
169
|
+
"description": "Objects with billing date eq/before the date. YYYY-MM-DD. A set billing date means the entry has been billed, so simply use this filter e.g with date today to find all billed entries.",
|
170
|
+
"format" : "date",
|
171
|
+
"type" : "string"
|
172
|
+
},
|
173
|
+
"filter[created_at_from]":{
|
174
|
+
"title" : "From creation date",
|
175
|
+
"description": "Objects with a date eq/after the date. YYYY-MM-DD",
|
176
|
+
"format" : "date",
|
177
|
+
"type" : "string"
|
178
|
+
},
|
179
|
+
"filter[created_at_to]":{
|
180
|
+
"title" : "To creation date",
|
181
|
+
"description": "Objects with a creation until the date(<=). ISO 8601 format YYY-MM-DDThh:mm:ss+z or just a date YYY-MM-DD. If date is given the time is set to the end of the day(23:59:59) so all objects created on that day are included. A time should be already utc time.",
|
182
|
+
"format" : "date",
|
183
|
+
"type" : "string"
|
184
|
+
},
|
185
|
+
"sort_by":{
|
186
|
+
"title" : "Sort by",
|
187
|
+
"description": "Sort the results by the given field => number",
|
188
|
+
"enum":["name","number","date","quantity","price_single","created_at", "updated_at"],
|
189
|
+
"type": "string"
|
190
|
+
},
|
191
|
+
"sort":{
|
192
|
+
"title" : "Sort",
|
193
|
+
"enum":["ASC","DESC"],
|
194
|
+
"description": "Sort the results in ASC or DESC",
|
195
|
+
"type": "string"
|
196
|
+
}
|
197
|
+
}
|
198
|
+
},
|
199
|
+
{ "rel": "destroy",
|
200
|
+
"href": "account_entries/{id}",
|
201
|
+
"method": "DELETE"
|
202
|
+
},
|
203
|
+
{ "rel": "update",
|
204
|
+
"href": "account_entries/{id}",
|
205
|
+
"method": "PUT"
|
206
|
+
},
|
207
|
+
{ "rel": "create",
|
208
|
+
"href": "account_entries",
|
209
|
+
"method": "POST"
|
210
|
+
}
|
211
|
+
]
|
212
|
+
}
|